使用 编译 Solidity 文件后solc
,如何将输出字节码作为智能合约部署到 RSK?我已经知道如何使用 Truffle 来做到这一点,但是有哪些替代方案可用于此任务?
2 回答
RSK(大部分)与以太坊兼容。特别是对于开发工具,它具有 JSON-RPC 兼容性和 VM 兼容性。所以如果你是以太坊开发者,你可以使用你熟悉的工具/库。这里有几种方法,除了 Truffle:
- 使用 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
。
请注意,上述命令假设您在localhost
.
另请注意,就像任何其他修改区块链状态的交易一样,您也需要签署部署交易,以便生成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中的代码示例(请参阅执行设置)
我将添加直接提供字节码来部署命令的功能,几天后,我将写一篇有条理的描述的帖子