Я играл с вызовом паритета «eth_estimateGas», чтобы определить различные требования к газу для токенов. Как правило, используя этот код:
let transfer_data = contract.transfer.getData("<destinaton ETH address>", 1);
let gas_limit = await rpcCall("eth_estimateGas",[{
to: contractData.contractAddress,
from: "<source ETH address>",
data:transfer_data
}]);
Я получаю разные результаты в зависимости от адреса отправителя. Если этот адрес выполнил тысячи транзакций (например, биржа), количество используемого газа значительно выше, чем адрес, который выполнил только 10 транзакций. Ничего не изменилось, кроме адреса from.
Моя единственная теория заключается в том, что если одноразовый номер довольно высок, контракт или evm должны выполнить дополнительную проверку того, что он действительно имеет правильный баланс для завершения отправки.
Что мне не хватает?
РЕДАКТИРОВАТЬ: Вот пример данных. Жетон: FunFair
From address has high nonce Contract Address: 0x419d0d8bdd9af5e606ae2232ed285aff190e711b From Address: 0xfbb1b73c4f0bda4f67dca266ce6ef42f520fbb98 To Adress: 0x6d8401b8ed8755bb4d01a89072860c98c236dc78 https://etherscan.io/tx/0xc407d8320f44745f88244400c3750875e1858e0ee6a1106bafbde424c289a6ef Gas Used: 58999
From address has low nonce Contract Address: 0x419d0d8bdd9af5e606ae2232ed285aff190e711b From Address: 0x8c301c986e6d23117f17394722272fcd16d43efd To Adress: 0x3f5ce5fbfe3e9af3971dd833d26ba9b5c936f0be https://etherscan.io/tx/0x708fb93a22f4ddd3d410f7280fb3800c8ff96deed5d4fafa12244d0f74e48045 Gas Used: 29127
При подключении этих значений к вызову четности результаты оценки имеют примерно одинаковую дисперсию.
Мне лень подтверждать на 100%, но я почти уверен, что в приведенном вами примере ключевое отличие состоит в том, что более дешевая транзакция была для полного баланса токенов отправителя. Это означает, что они закончили с нулевым балансом. Установка значения в хранилище с ненулевого значения на нулевое значение дает вам возмещение газа, снижая стоимость транзакции. (Это стимулирует очистку хранилища.)
пользователь19510
from
вы сравниваете. Количество транзакций, ранее совершенных по счету, не имеет прямого влияния.каблук кликер