我需要知道如何为我在 RSK 网络上的交易设置合适的汽油价格。我熟悉以太坊的 eth_gasPrice
方法:
$ curl https://public-node.testnet.rsk.co -X POST -H "Content-Type: application/json" --data '{"jsonrpc":"2.0","method":"eth_gasPrice","params":[],"id":1}'
{"jsonrpc":"2.0","id":1,"result":"0x3938700"}
以上是否也推荐用于 RSK?
答案 0 :(得分:5)
您有多种方法可以计算 gas 价格。
从最终用户的角度来看,您可以从以下位置获取汽油价格:
gasPrice
值从开发人员的角度来看,您需要知道 RSK 有 minimumGasPrice
限制,这意味着如果您将 gasPrice
设置为低于该最小值,您的交易会被拒绝。
如何获得gasPrice
:
使用 JSON-RPC 方法 eth_gasPrice
。这为您提供了网络中当前的平均汽油价格。最好指定额外 5% 的 Gas 价格作为缓冲,以高于平均 Gas 价格。
您上面的示例代码是正确的:
$ curl https://public-node.testnet.rsk.co -X POST -H "Content-Type: application/json" --data '{"jsonrpc":"2.0","method":"eth_gasPrice","params":[],"id":1}'
{"jsonrpc":"2.0","id":1,"result":"0x3938700"}
...但是,请执行以下操作以使用缓冲区计算数量:
$ node -e "console.log(0x3938700 / 20 * 21);"
63000000
eth_gasPrice
返回 6000 万,但我们在提交交易时使用了 6300 万。
对于那些熟悉以太坊开发的人来说,这是与您在那里使用的相同方法。
如何获得minimumGasPrice
:
使用 JSON-RPC 方法 eth_getBlockByNumber
,以最佳区块编号作为参数,并从响应中获取 minimumGasPrice
。作为最低 gas 价格 may change 1% between blocks, see RSKIP-09,建议额外指定 10% 的 gas 价格作为缓冲,以确保有效 gasPrice
的 10 个区块窗口。这迎合了悲观的情况。
执行上述操作的示例代码:
curl https://public-node.testnet.rsk.co -X POST -H "Content-Type: application/json" --data '{"jsonrpc":"2.0","method":"eth_getBlockByNumber","params":["latest",false],"id":1}'
{
"jsonrpc" : "2.0",
"result" : {
"cumulativeDifficulty" : "0x2b7cd0b2",
"size" : "0xbcc",
"uncles" : [],
"gasUsed" : "0x546fe",
"hash" : "0x68abc09397ec6ae77acf52c195638dd9f93e5756eb1856c81e8e30cbbeef6b39",
"difficulty" : "0x2b7cd0b2",
"miner" : "0x1fab9a0e24ffc209b01faa5a61ad4366982d0b7f",
"bitcoinMergedMiningMerkleProof" : "0x8bfb89a6e8a8fa0fee018e9dd0d86c0aea40806d3e8fe45e9454a250b763d978c812164690d7af62b31743db9944cc5ac6038d210ef6d1e4fb08c712f9a318c0538845ed4d3f3b61879aba5e79c58bc754213a9872f54c2da44051b3c0e04d4be382b6f1303386afc08c991a85aae39fa3263cbcbd9d4a05d8a2d0797204902de56af20198ad4a3b2c553e0c2500da50a536fd10233204c5a9837802f6816f740a146e58ebae0d7be3ca3a79f7d2a942e5ade058baa53e252162fefc136f33434e84753446aad913ea4baafd6bcaa145d37b9b3b85fec42d7bf47d5efef8e000",
"paidFees" : "0x1395b92f0000",
"stateRoot" : "0xb7fc903f8f60a3e0d0d80ea58348e9637e3a9a4c8f9de6e089326c9bfbb698ed",
"transactions" : [ "<< redacted for brevity >>" ],
"totalDifficulty" : "0x2eff7f12ec2c2655d",
"bitcoinMergedMiningHeader" : "0x00000020901806378d89a22c6aaa772bab42ec41dfdb4dce77d361181600000000000000a0782738fa6b7ef70644de0aca393597462d9fb97d59c92680eba5e5a2b66af14c6efe5f5c75161904657655",
"receiptsRoot" : "0xc930346e224a837fc426b900c07d3f744f4c82ac789d05624dbbe4e008dc2f22",
"hashForMergedMining" : "0xb58502263dd8363d0c88287eb3436c731ff5763e5ed4d4919306b028001738f9",
"transactionsRoot" : "0x9cc25cf985416ef18fa171f59b9d03f6921bad3c93f956dc0d472f9429b81167",
"gasLimit" : "0x67c280",
"bitcoinMergedMiningCoinbaseTransaction" : "0x00000000000000801d9be7d007fe4505303282a8fdd52df91d1292256a776a2181521c4513ee6c246088ac0000000000000000266a24aa21a9edee78f53b94245e73c99fb98a96b539836fa82b85a20de1c0d7984f0eabd198f600000000000000002a6a52534b424c4f434b3ab58502263dd8363d0c88287eb3436c731ff5763e5ed4d4919306b028001738f900000000",
"logsBloom" : "0x00000000000000000000001000000008000000000040000000000000000000000000400000050000000400000000000400000000010000000000000000000000000000000080000000000004000000000000000000000080000000004000000000000000800000000000001000000000000000000000000002000008080000000000000000000000000001000208000000000000040000000000000420080000000000020008100000000000020010000080000000000082001000000000000000000001040000000000000000080000000030000001000880200004100200000000000020000000002000000000100000000000000000010200000000000000",
"minimumGasPrice" : "0x387ee40",
"timestamp" : "0x5ffe6e40",
"number" : "0x1738f9",
"parentHash" : "0x1276aa271525f757166acf767cd6100a25d0cba18f6caf925299276f3d439404",
"sha3Uncles" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
"extraData" : "0xd1018f504150595255532d62643739313837"
},
"id" : 1
}
对此的响应非常大(见上文),但是,它确实包含我们需要的信息:"minimumGasPrice" : "0x387ee40",
。包含缓冲区的最后一步:
$ node -e "console.log(0x387ee40 / 10 * 11);"
65164000
eth_getBlockByNumber.minimumgasPrice
返回大约 5900 万,但我们在提交交易时使用大约 6500 万。
对于那些熟悉以太坊开发的人来说,这种方法是不同的,并且只能在 RSK 上使用。