在 send() 调用内的“options”对象中不包括“gas”或“gasPrice”属性
Posted
技术标签:
【中文标题】在 send() 调用内的“options”对象中不包括“gas”或“gasPrice”属性【英文标题】:Not including 'gas' or 'gasPrice' attributes in the 'options' object inside of a send() call 【发布时间】:2021-09-14 20:25:42 【问题描述】:这是一个 web3 问题:有谁知道当您未指定 gas
或 gasPrice
时,智能合约方法的 send()
函数调用默认是什么?它会自动分配足够的gas并计算当前的平均gasPrice吗?这些属性是否总是可选的,或者在某些情况下必须包含其中任何一个?
【问题讨论】:
【参考方案1】:从documentation 来看,gas
和gas
似乎总是可选的。
不幸的是,文档没有说明在未提供时默认设置的内容,但在代码中出现了快速峰值(希望这是正确的代码路径),它似乎在内部调用 getGasPrice
以获取 gas 价格和然后默认 gasPrice
为那个。
// Send the actual transaction
if (isSendTx && _.isObject(payload.params[0]) && typeof payload.params[0].gasPrice === 'undefined')
var getGasPrice = (new Method(
name: 'getGasPrice',
call: 'eth_gasPrice',
params: 0
)).createFunction(method.requestManager);
getGasPrice(function (err, gasPrice)
if (gasPrice)
payload.params[0].gasPrice = gasPrice;
if (isSendTx)
setTimeout(() =>
defer.eventEmitter.emit('sending', payload);
, 0);
sendRequest(payload, method);
);
GitHub Source
【讨论】:
以上是关于在 send() 调用内的“options”对象中不包括“gas”或“gasPrice”属性的主要内容,如果未能解决你的问题,请参考以下文章