cfx_estimateGasAndCollatory 行为
cfx_estimateGasAndCollateral
接口是 Conflux 区块链中的一个关键组成部分,该接口允许用户可在发起交易前,估算交互所需交易费用和存储抵押费用 本文档旨在清晰地概述 cfx_estimateGasAndCollateral
接口的功能,特别强调其对各种参数配置的响应。
备注
以下描述的行为是由 conflux-rust 实现的,这是Conflux协议的官方Rust实现。
参数缺失或默认情况下的行为
接口的响应取决于输入中特定字段是否存在:
- 如果
from
字段缺失:接口将不会执行与余额
相关的检查。 (然而,因为from
字段缺失,执行可能会失败)。 - 如果
gas_price
缺失:则跳过与gas相关的交易费用检查和代付gas上限检查。 - 如果
nonce
缺失:接口自动填充当前正确的nonce。 相反,如果提供了nonce
,交易将使用指定的nonce进行,避免由于与nonce相关的错误而失败。 - 如果
value
缺失:默认设置为0。 - 如果
data
缺失:默认为空。 - 如果
to
缺失:接口默认为合约创建。
备注
通常,Conflux SDK(例如,js-conflux-sdk、java-conflux-sdk等)会自动调用 cfx_estimateGasAndCollateral
, 若要发起交易。 如果你没有直接调用 cfx_estimateGasAndCollateral
,上述参数的存在与否将取决于你使用的SDK的行为。
处理多余的参数
虽然 cfx_estimate
的主要功能是用于估算gas和存储抵押,但它也接受由用户输入这些参数。 本节概述了在这些情况下应用的逻辑:
指定gas
- 交易使用指定的
gas
执行。 这是除了gas
消耗超过1500万限制之外,唯一可能出现OutOfGas
错误的情况。 - 如果同时指定了
from
和gas_price
,在估算过程中将扣除交易费用。 否则,费用将在执行后重新检查。
指定存储限制
- 在交易执行估算期间,指定的
storage_limit
会被忽略。 估算后,将评估所指定的存储限制是否足够。
其他考量
存储代付:在存储被代付的情况下,不执行 storage_limit
检查,遵循Conflux的内在逻辑。