【发布时间】:2021-04-27 08:13:15
【问题描述】:
使用 solc 编译 Solidity 文件后,如何将输出字节码作为智能合约部署到 RSK?
我已经知道如何使用 Truffle 来执行此操作,但是有哪些替代方法可用于此任务?
【问题讨论】:
使用 solc 编译 Solidity 文件后,如何将输出字节码作为智能合约部署到 RSK?
我已经知道如何使用 Truffle 来执行此操作,但是有哪些替代方法可用于此任务?
【问题讨论】:
RSK(大部分)与以太坊兼容。 特别是对于开发工具, 它具有 JSON-RPC 兼容性和 VM 兼容性。 所以如果你是以太坊开发者, 您可以使用您熟悉的工具/库。 这里有几种方法,除了 Truffle:
如果您想手动执行此操作,
您可以使用终端执行此操作
使用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 的值。请注意,上述命令假定您在 localhost 上运行 RSKj。
还请注意,就像任何其他交易一样
它修改了区块链的状态,
您还需要签署部署交易,
为了产生SIGNED_CONTRACT_DEPLOYMENT_BYTECODE。
您可以为此使用eth_sign RPC,
或钱包中的等效方法。
【讨论】:
是的,很高兴知道在这些情况下会发生什么。简短回答:您发送交易,到字段为空,数据字段包含已编译合约的字节码与构造函数的 ABI 编码参数连接(如果有)
通常,我编写自己的实用程序(在 NodeJS 中,作为跨平台),以与 Ethereum/RSK 节点进行交互。可以在我的个人项目https://github.com/ajlopez/rskapi中探索client.deploy的实现代码
另外,你可以查看我的命令行工具的实现(基于上面的库)https://github.com/ajlopez/rskclitools#deploy-a-contract
https://github.com/ajlopez/EthFaucet/tree/master/commands 中的代码示例(请参阅执行设置)
我会添加直接提供字节码来部署命令的功能,过几天我会写一篇文章,有条理的描述
【讨论】:
client.deploy 听起来是个不错的选择!