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

После компиляции файла Solidity с использованием solc, как я могу развернуть выходной байт-код в качестве смарт-контракта в RSK? Я уже знаю, как это сделать с помощью Truffle, но какие есть альтернативы для этой задачи?

2 ответа

RSK (в основном) совместим с Ethereum. В частности, для инструментов разработки он имеет совместимость с JSON-RPC плюс совместимость с виртуальными машинами. Итак, если вы разработчик Ethereum, вы можете использовать знакомые инструменты / библиотеки. Вот несколько способов, помимо трюфеля:

Если вы хотите сделать это вручную, вы можете сделать это с помощью терминала, отправив транзакцию с помощью curl через JSON-RPC вот так:

      curl \
  -X POST \
  -H "Content-Type:application/json" \
  --data '{"jsonrpc":"2.0","method":"eth_sendTransaction","params":[{"from":"FROM_ADDRESS","to":"0x00","gasPrice":"0x3938700","gas":"0x67C28", "data":"SIGNED_CONTRACT_DEPLOYMENT_BYTECODE"}],"id":1}' \
  http://localhost:4444
  • Использовать eth_estimateGas RPC для получения значения gas.
  • Использовать eth_gasPrice RPC для получения значения gasPrice.

Обратите внимание, что приведенная выше команда предполагает, что у вас есть RSKj, работающий на localhost.

Также обратите внимание, что, как и любая другая транзакция, которая изменяет состояние цепочки блоков, вам также необходимо будет подписать транзакцию развертывания, чтобы произвести SIGNED_CONTRACT_DEPLOYMENT_BYTECODE. Вы можете использовать eth_sign RPC для этого или аналогичный метод в вашем кошельке.

Да, хорошо знать, что происходит в таких ситуациях. Краткий ответ: вы отправляете транзакцию, поле to пустое, поле данных содержит байт-код скомпилированного контракта, СОВМЕСТИМЫЙ с аргументами в кодировке ABI для конструктора, если таковые имеются

Обычно я пишу свои собственные утилиты (на NodeJS, чтобы быть кроссплатформенным) для взаимодействия с узлом Ethereum / RSK. Вы можете изучить код реализации client.deploy в моем личном проекте https://github.com/ajlopez/rskapi

Кроме того, вы можете проверить реализацию моих инструментов командной строки (на основе указанной выше библиотеки) https://github.com/ajlopez/rskclitools#deploy-a-contract

Пример кода в https://github.com/ajlopez/EthFaucet/tree/master/commands (см. Выполнить настройку)

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

Другие вопросы по тегам