Как скомпилировать и развернуть смарт-контракт без запуска полного узла?

Я новичок в солидности и программировании смарт-контрактов. Я уже успешно создал и развернул смарт-контракты, но всегда использую Mist.

Теперь я не могу этого сделать, потому что не могу завершить обновление ноды с полной цепочкой блоков, и теперь я чувствую, что это никогда не закончится. Поэтому ищу альтернативы.

Итак, мой вопрос, вероятно, очень простой, но есть ли способ развернуть контракт без запуска полного узла?

Ответы (4)

  1. Установите https://metamask.io/ и
  2. Перейдите на https://remix.ethereum.org/
  3. Нажмите на настройки -> выберите свой компилятор (например, 0.4.19+commit.c4cbbb05). Обратите внимание, что оптимизация не отмечена.
  4. Войдите в metmask и выберите свою сеть (я бы посоветовал сначала протестировать с помощью тестовой сети ropsten и использовать кнопку покупки, чтобы получить ETH из бесплатного крана)
  5. Вернитесь на вкладку компиляции
  6. Удалить содержимое примера договора
  7. Вставьте в свой контракт (он должен автоматически скомпилироваться)
  8. Нажмите на вкладку запуска
  9. Нажмите на кнопку развертывания
  10. Откроется Metamask, выберите цену на газ и нажмите « Отправить » , чтобы подписать транзакцию .
  11. Снова откройте метмаску, нажмите на хэш транзакции , который должен перенаправить вас на что-то вроде https ://ropsten.etherscan.io/tx/0xabc123 ....
  12. Однажды опубликовано . Нажмите на адрес контракта, который должен иметь вид https: //ropsten.etherscan.io/address/0x987cba ...
  13. Перейдите на вкладку « Код контракта » на etherscan, нажмите « Проверить и опубликовать ».
  14. Установите имя контракта на точное имя , как в ремиксе, компилятор на ту же версию, что и в ремиксе, и установите для оптимизации значение «Нет», если вы не нажали его на ремиксе на шаге 3.

Теперь у вас должен быть опубликован контракт с исходным кодом на etherscan.

Звучит здорово, только еще один вопрос: я обычно использую свой развернутый контракт в Mist для запуска дополнительных функций, таких как установка значения в переменную в этом контракте. Как я могу сделать это с помощью вашего метода?
Когда вы нажмете создать , и он будет добыт, вы увидите интерфейс к контракту, он невелик, но работает. Вы должны вводить как своего рода json-подобное значение, т.е. заключать в кавычки большие числа, хеши и строки. @MoisésBriseñoEstrello

Я регулярно использую truffle и infura.io для программного и воспроизводимого развертывания контрактов.

Infura предоставляет общедоступную услугу web3, вы должны зарегистрироваться в их службе, которую они предоставляют, и ACCESS_TOKENвам нужно использовать, например https://mainnet.infura.io/ACCESS_TOKEN.

Это не полноценная гет-нода, некоторые вещи еще не поддерживаются .

Я следую этому руководству, чтобы настроить truffle для использования конечной точки infura, предоставленной с помощью Infura (или пользовательского поставщика) .

Другая возможность — арендовать узел в QuickNode или подобном сервисе.

Я чувствую, что это лучший ответ сейчас. Infura звучит как решение, но что, если я не хочу использовать трюфель? Есть ли более простой способ просто вставить мой уже написанный код в более простой инструмент?
Я думаю, что это лучший ответ сейчас. Потому что я включил много библиотек, которые я не могу просто перенести в Remix.

Предположительно, вы не сможете сделать это без полной синхронизации узла.

Для многих людей довольно распространенной проблемой является то, что Mist не может полностью загрузить основную сеть. Возможно, вы можете попробовать синхронизироваться с geth из командной строки , а затем развернуть контракт с помощью node.js, как в этом примере .

Я всегда синхронизирую его с geth, но до завершения всегда 12 000 блоков. Новые блоки Эфириума появляются быстрее, чем моя синхронизация geth. Вы знаете, как его оптимизировать?
Вы имеете в виду, есть ли у вас локальный синхронизированный узел? так как вы можете сделать это с общедоступным синхронизированным узлом...
Вы можете просто выполнить развертывание на существующем работающем общедоступном узле... нет необходимости в инфуре

Вы можете составить контракт и создать и подписать транзакцию для развертывания. Вроде здесь сделано . После этого вы можете отправить эту транзакцию в обозреватель блоков, например Ethernode:Pushtx.