首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何计算在RSK上交易使用的天然气价格?

如何计算在RSK上交易使用的天然气价格?
EN

Stack Overflow用户
提问于 2021-01-13 13:00:13
回答 1查看 1.3K关注 0票数 4

我需要知道如何为我在RSK网络上的交易设定一个合适的汽油价格。我熟悉来自Ethereum的eth_gasPrice方法:

代码语言:javascript
复制
$ 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?

EN

回答 1

Stack Overflow用户

发布于 2021-01-13 13:04:24

你有几种计算汽油价格的方法。

终端用户的角度来看,您可以从以下方面获得汽油价格:

  • RSK统计
  • Metamask/Nifty/MEW在准备事务时提出了gasPrice

developer的角度来看,您需要知道RSK有一个minimumGasPrice限制,这意味着如果您将gasPrice设置在该最小值以下,您的事务将被拒绝。

如何获取gasPrice

使用JSON方法eth_gasPrice。这就给出了网络中当前的平均汽油价格。这是一个好主意,指定一个额外的5%的天然气价格作为缓冲,以达到高于平均汽油价格。

上面的示例代码是正确的:

代码语言:javascript
复制
$ 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"}

..。但是,还可以使用缓冲区计算以下内容:

代码语言:javascript
复制
$ node -e "console.log(0x3938700 / 20 * 21);"
63000000

eth_gasPrice返回6,000万,但我们在提交事务时使用6,300万。对于熟悉Ethereum开发的人来说,这是与您在那里使用的相同的方法。

如何获取minimumGasPrice

使用以最佳块号为参数的JSON方法eth_getBlockByNumber,并从响应中获取minimumGasPrice。作为最低天然气价格可能在区块之间更改1%,请参见RSKIP-09。,建议增加10%的天然气价格作为缓冲,以确保10块窗口的有效gasPrice。这迎合了悲观的情况。

执行上述操作的示例代码:

代码语言:javascript
复制
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}'
代码语言:javascript
复制
{
   "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",。包含缓冲区的最后一步:

代码语言:javascript
复制
$ node -e "console.log(0x387ee40 / 10 * 11);"
65164000

eth_getBlockByNumber.minimumgasPrice返回约5,900万,但我们在提交事务时使用了大约6,500万。

对于那些熟悉Ethereum开发的人来说,这是不同的方法,并且只在RSK上可用。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65702487

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档