x0r2 (OP)
Newbie
Offline
Activity: 54
Merit: 0
|
|
October 16, 2017, 10:02:34 AM Last edit: October 16, 2017, 12:05:30 PM by x0r2 |
|
Всем привет, подскажите как правильно развернуть контракт в реальную сеть? Использую фреймворк truffle.
|
|
|
|
|
|
Be very wary of relying on JavaScript for security on crypto sites. The site can change the JavaScript at any time unless you take unusual precautions, and browsers are not generally known for their airtight security.
|
|
|
Advertised sites are not endorsed by the Bitcoin Forum. They may be unsafe, untrustworthy, or illegal in your jurisdiction.
|
|
|
x0r2 (OP)
Newbie
Offline
Activity: 54
Merit: 0
|
|
October 16, 2017, 12:08:51 PM |
|
Я использую фреймворк truffle, если использовать команду truffle migrate, то мне не понятно как развернуть контракт на реальную сеть. По ссылке выше можно развернуть контракт имея исходный код, truffle компилирует все в папку build, например один контракт внутри может разворачивать другой.
|
|
|
|
ShDenis
|
|
October 16, 2017, 12:45:38 PM |
|
Я использую фреймворк truffle, если использовать команду truffle migrate, то мне не понятно как развернуть контракт на реальную сеть. По ссылке выше можно развернуть контракт имея исходный код, truffle компилирует все в папку build, например один контракт внутри может разворачивать другой. по теории, вопрос к какой сети подключен truffle. Т.е. сперва нужно поднять локальную ноду с реальным блокчейном и потом указать её трюфелю для выгрузки. Либо, можно попробовать указать чужую с открытым RPC, если есть адрес и порт... Это что касается разворачивания а реальную сеть. А вот с контрактами, которые один другого разворачивает вопрос как-то непонятно задан.
|
|
|
|
x0r2 (OP)
Newbie
Offline
Activity: 54
Merit: 0
|
|
October 16, 2017, 01:00:25 PM |
|
Я использую фреймворк truffle, если использовать команду truffle migrate, то мне не понятно как развернуть контракт на реальную сеть. По ссылке выше можно развернуть контракт имея исходный код, truffle компилирует все в папку build, например один контракт внутри может разворачивать другой. по теории, вопрос к какой сети подключен truffle. Т.е. сперва нужно поднять локальную ноду с реальным блокчейном и потом указать её трюфелю для выгрузки. Либо, можно попробовать указать чужую с открытым RPC, если есть адрес и порт... Это что касается разворачивания а реальную сеть. А вот с контрактами, которые один другого разворачивает вопрос как-то непонятно задан. Правильно ли я понимаю, что мне нужно просто поднять ноду, сконфигурировать на неё truffle и как обычно запустить truffle migrate? Или я могу не поднимать ноду а отправить контракт на ноду infura? Я взял для примера 2 контракта, пример токена и пример краудсейла. Контракт краудсейла внутри себя разворачивает токен через new MyToken(). Если смотреть скрипты деплоя truffle то видно что он первым разворачивает стандартный контракт Migrations, затем краудсейл. Токена я в логах деплоя не увидел, но он видимо разворачивается из краудсейла.
|
|
|
|
ShDenis
|
|
October 16, 2017, 04:31:39 PM |
|
Правильно ли я понимаю, что мне нужно просто поднять ноду, сконфигурировать на неё truffle и как обычно запустить truffle migrate?
да Или я могу не поднимать ноду а отправить контракт на ноду infura?
не знаю что за infura, но наверное да, если на ней запущен RPC и у вас есть хост и порт и не будет проблем достучаться. Я взял для примера 2 контракта, пример токена и пример краудсейла. Контракт краудсейла внутри себя разворачивает токен через new MyToken(). Если смотреть скрипты деплоя truffle то видно что он первым разворачивает стандартный контракт Migrations, затем краудсейл. Токена я в логах деплоя не увидел, но он видимо разворачивается из краудсейла.
скрипты деплоя, это те что в папке migrations? в них первым деплоится migrations.sol (стандартный для трюфеля) и затем деплоятся все необходимые самописные контракты. Что вы там должны были увидеть в деплоях, зависит от того, что у вас было изначально (создано трюфелем покоманде truffle init). Необходимо лишнее убрать и оставить только то, что вам нужно. Если вы деплоите контракт, а он в свою очередь создаёт в конструкторе второй контракт, то второй контракт вам деплоить не нужно (по теории, сам сейчас проверять буду, но кажется что так), поскольку в этом случае в блокчейне вторых контрактов у вас должно оказаться два, один из которых нужный, созданный по new MyToken() со ссылкой внутри краудсейла, а второй ненужный, который ни к чему привязан не будет.
|
|
|
|
x0r2 (OP)
Newbie
Offline
Activity: 54
Merit: 0
|
|
October 16, 2017, 06:04:07 PM |
|
Спасибо за ответы, понемногу проясняется. скрипты деплоя, это те что в папке migrations?
Да в них первым деплоится migrations.sol (стандартный для трюфеля)
Можно его не деплоить вообще? Как мне узнать адрес токена который деплоился краудсейлом?
|
|
|
|
ShDenis
|
|
October 17, 2017, 08:21:11 AM |
|
migrations.sol не деплоить не пробовал, но вроде как читал что можно. Просто лишитесь части функционала по управлению версиями, вроде как (могу ошибаться). Внутри контракта-создателя обычно сохраняют адрес в параметр (переменную). Далее, если нужно, можно сделать переменную публичной или добавить getter (только для владельца). А ещё в логах можно попробовать поискать (опять таки, по логам сам не пробовал искать).
|
|
|
|
verudza
Newbie
Offline
Activity: 31
Merit: 0
|
|
October 17, 2017, 10:08:02 AM |
|
Разрабатываем смарт-контракты на заказ.
Опытная команда. Аудит безопасности. Консультации по техническому запуску ICO.
Связь: slava(точка)brall(собака)gmail(точка)com
|
|
|
|
x0r2 (OP)
Newbie
Offline
Activity: 54
Merit: 0
|
|
October 18, 2017, 09:20:22 AM |
|
Разрабатываем смарт-контракты на заказ.
Опытная команда. Аудит безопасности. Консультации по техническому запуску ICO.
Связь: slava(точка)brall(собака)gmail(точка)com
Судя по вашему статусу на форуме, очень сомнительно, что команда опытная Разработать и сами можем, вопрос был с разверткой через truffle.
|
|
|
|
x0r2 (OP)
Newbie
Offline
Activity: 54
Merit: 0
|
|
October 18, 2017, 09:31:23 AM |
|
Настроил truffle на сервер infura, но при разворачивании получаю ошибку: Error encountered, bailing. Network state unknown. Review successful transactions manually. insufficient funds for gas * price + value
Конфиг truffle: module.exports = { networks: { live: { provider: new HDWalletProvider('<mnemonic>', 'https://mainnet.infura.io/<infuraKey>'), network_id: 1 } } };
Разворачиваю командой: truffle migration --reset --network=live
Мнемоническая фраза проверена, на адресе есть баланс.
|
|
|
|
x0r2 (OP)
Newbie
Offline
Activity: 54
Merit: 0
|
|
October 18, 2017, 05:51:12 PM |
|
Пробовал поднять ноду на geth, но тоже потерпел фиаско. Конфиг truffle: module.exports = { networks: { live: { from: '0xADDR', host: 'localhost', port: 8545, network_id: '1' } } };
Ошибка: Error encountered, bailing. Network state unknown. Review successful transactions manually. Error: exceeds block gas limit
|
|
|
|
websalamander
Newbie
Offline
Activity: 88
Merit: 0
|
|
October 20, 2017, 10:28:04 AM |
|
Пробовал поднять ноду на geth, но тоже потерпел фиаско. Конфиг truffle: module.exports = { networks: { live: { from: '0xADDR', host: 'localhost', port: 8545, network_id: '1' } } };
Ошибка: Error encountered, bailing. Network state unknown. Review successful transactions manually. Error: exceeds block gas limit
Поставьте после network_id: '1' какой-либо лимит(4500000-5000000) gas: - может подхватит...
|
|
|
|
x0r2 (OP)
Newbie
Offline
Activity: 54
Merit: 0
|
|
October 21, 2017, 12:58:14 PM |
|
Поставьте после network_id: '1' какой-либо лимит(4500000-5000000) gas: - может подхватит...
module.exports = { networks: { live: { from: '0xADDR', host: 'localhost', port: 8545, network_id: 1, gas: 5000 } } };
С таким конфигом другая ошибка: Error: insufficient funds for gas * price + value
|
|
|
|
websalamander
Newbie
Offline
Activity: 88
Merit: 0
|
|
October 23, 2017, 05:59:04 AM |
|
Поставьте после network_id: '1' какой-либо лимит(4500000-5000000) gas: - может подхватит...
module.exports = { networks: { live: { from: '0xADDR', host: 'localhost', port: 8545, network_id: 1, gas: 5000 } } };
С таким конфигом другая ошибка: Error: insufficient funds for gas * price + value
Вы забыли порядки - вот и пишет, что "недостаточно средств" - почитайте What is Gas?
|
|
|
|
ShDenis
|
|
October 23, 2017, 07:09:49 AM |
|
Тоже поимел большую проблему с газом при разворачивании конрактов. Вот это вот: exceeds block gas limit может означать, что вы пытаетесь заливая контракты превысить газ, который нужен для всего блока транзакций. Т.е. код большой к заливке.
По-другому, есть стандартный размер блока (можно настраивать, но этого делать не стоит, поскольку будут нестыковки потом с реальной сетью) и он потребляет определённое количество газа (примерно 4 700 000) на своё заполнение. Я так понял, что (если всё компилируется нормально) выгружая контракт получается только одна транзакция с размером, превышающим по газу возможности блока. Однако, это всё мои догадки, поскольку на подобные вопросы в этой же ветке форума, мне детального разъяснения никто не дал.
п.с. Мне, в моём случае, например, сейчас придётся не то что бы оптимизировать контракты для уменьшения потребления, а скорее всего придётся отказываться от единоразовой выгрузки всех контрактов при создании основного контракта. Отказываться в пользу ручного создания доп. контрактов системы с их последующим подключением к системе. Т.е. разбивать код на части. Что есть не совсем удобно. Т.е. плохо.
|
|
|
|
x0r2 (OP)
Newbie
Offline
Activity: 54
Merit: 0
|
|
October 23, 2017, 03:23:19 PM |
|
Вы забыли порядки - вот и пишет, что "недостаточно средств" - почитайте What is Gas?Geth не давал менять больше 5000, пробовал различные значения. С Parity вроде завелось, транзакция прошла, но с газом так до конца и не разобрался.
|
|
|
|
|