如何在不使用 Truffle 的情况下将智能合约部署到 RSK?

How can I deploy a smart contract to RSK without using 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, 或您钱包中的等效方法。

是的,很高兴知道在这些情况下会发生什么。简短回答:你发送一个交易,to 字段为空,数据字段包含编译合约的字节码与构造函数的 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 中的代码示例(参见执行设置)

我会添加直接提供字节码部署命令的功能,过几天我会写一个post,描述更有条理