首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >0x气体估计有多精确?

0x气体估计有多精确?
EN

Ethereum用户
提问于 2021-09-01 11:01:43
回答 1查看 276关注 0票数 0

我试图通过‘swap /v1/ estimatedGas’方法从0x获得交换的气体估计值,但是字段gasD1在大多数情况下都是错误的。

有什么办法能更好地计算它吗?

例如:

请求:https://api.0x.org/swap/v1/quote?sellToken=0x6B3595068778DD592e39A122f4f5a5cF09C90fE2&buyToken=0xb9871cB10738eADA636432E86FC0Cb920Dc3De24&sellAmount=1000000000000000000

响应:

代码语言:javascript
复制
{
    "chainId": 1,
    "price": "3.356694278670382019",
    "guaranteedPrice": "3.323127335883678198",
    "to": "0xdef1c0ded9bec7f1a1670819833240f027b25eff",
    "data": "0xd9627aa400000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000de0b6b3a76400000000000000000000000000000000000000000000000000002e1e1eb48ebca1f6000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030000000000000000000000006b3595068778dd592e39a122f4f5a5cf09c90fe2000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2000000000000000000000000b9871cb10738eada636432e86fc0cb920dc3de24869584cd000000000000000000000000100000000000000000000000000000000000001100000000000000000000000000000000000000000000005ed51c644c612f5b7e",
    "value": "0",
    "gas": "171000",
    "estimatedGas": "171000",
    "gasPrice": "76000000000",
    "protocolFee": "0",
    "minimumProtocolFee": "0",
    "buyTokenAddress": "0xb9871cb10738eada636432e86fc0cb920dc3de24",
    "sellTokenAddress": "0x6b3595068778dd592e39a122f4f5a5cf09c90fe2",
    "buyAmount": "3356694278670382019",
    "sellAmount": "1000000000000000000",
    "sources": [
        ...
        {
            "name": "Uniswap_V2",
            "proportion": "1"
        },
        ...
    ],
    "orders": [
        {
            "makerToken": "0xb9871cb10738eada636432e86fc0cb920dc3de24",
            "takerToken": "0x6b3595068778dd592e39a122f4f5a5cf09c90fe2",
            "makerAmount": "3356694278670382019",
            "takerAmount": "1000000000000000000",
            "fillData": {
                "tokenAddressPath": [
                    "0x6b3595068778dd592e39a122f4f5a5cf09c90fe2",
                    "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2",
                    "0xb9871cb10738eada636432e86fc0cb920dc3de24"
                ],
                "router": "0xf164fc0ec4e93095b804a4795bbe1e041497b92a"
            },
            "source": "Uniswap_V2",
            "sourcePathId": "0xe30e17bcf3f2833e73f760a19a94f03dd79ca1f583c2893c5eb69673bad00ec9",
            "type": 0
        }
    ],
    "allowanceTarget": "0xdef1c0ded9bec7f1a1670819833240f027b25eff",
    "sellTokenToEthRate": "277.53194847477435333",
    "buyTokenToEthRate": "940.66817609680155706"
}

但是交易失败了,Out of Gas例外,即使有25万的天然气。(链接:https://etherscan.io/tx/0xe95a629944aba94ba4e32be41467506cbb9b9cca34de38426d8bd5c8d8a9e311)

如果为API调用提供了skipValidation=truetakerAddress=,也会发生同样的问题。

有什么办法能得到更准确的结果吗?

EN

回答 1

Ethereum用户

回答已采纳

发布于 2021-09-01 12:09:11

不同的代币在转让时会花费不同的金额,即在互换期间。0xAPI并不知道存在的每个令牌的气体成本。

在以下情况下,0xAPI将为您执行更准确的气体估计:

  1. 提供takerAddressskipValidation=false (默认)
  2. 接受者必须有资金和津贴。

没有上述这些,我们就无法给出准确的气体估计,因为事务需要在估计过程中成功。当我们没有上述条件时,我们提供了一个大致的气体成本。

另外,您可以通过使用从0xAPI响应提供的数据对Ethereum节点执行一个eth_estimateGas来测量气体。

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

https://ethereum.stackexchange.com/questions/108171

复制
相关文章

相似问题

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