Как я могу развернуть смарт-контракт в RSK без использования Truffle?
После компиляции файла Solidity с использованием
solc
, как я могу развернуть выходной байт-код в качестве смарт-контракта в RSK? Я уже знаю, как это сделать с помощью Truffle, но какие есть альтернативы для этой задачи?
2 ответа
RSK (в основном) совместим с Ethereum. В частности, для инструментов разработки он имеет совместимость с JSON-RPC плюс совместимость с виртуальными машинами. Итак, если вы разработчик Ethereum, вы можете использовать знакомые инструменты / библиотеки. Вот несколько способов, помимо трюфеля:
- используя консоль Geth и Remix , или
- используя Metamask / Nifty и Remix , или
- с помощью инструментов контрактов MyCrypto или развертыванияMyEtherWallet (если у вас есть байт-код контракта).
Если вы хотите сделать это вручную, вы можете сделать это с помощью терминала, отправив транзакцию с помощью
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 (см. Выполнить настройку)
Я добавлю функцию, чтобы напрямую предоставить байт-код для команды развертывания, и через несколько дней я напишу сообщение с немного более организованным описанием.