переданный параметр (uint256[]), в этом же цикле вызывает CREATE2 с байткодом от этого контракта:
constructor(address erc20TokenAddress) public
{
if (erc20TokenAddress != address(0))
{
ERC20 token = ERC20(erc20TokenAddress);
token.safeTransfer(tx.origin, token.balanceOf(address(this)));
}
selfdestruct(tx.origin);
}
Перед вызовом функции моего смарт-контракта, я вызываю estimateGas, и использую просчитанный газ в качестве gas limit. Чаще всего это работает и выполнение завершается успешно, но в редких случаях происходит out of gas. Вопросы:
1. estimateGas возвращает на 50% газа больше чем действительно необходимо для выполнения смарта в большинстве случаев. Почему так?
2. почему иногда все же происходит out of gas? что именно может влиять на потребляемый газ после отправки транзы?
3. как можно иначе рассчитывать газ? может статьи какие есть?
я вангую, что это связано с циклом for
почему? туда передается массив uint256, он ходит так: for (uint i = 0; i<arrayLength; i++)
Обсуждают сегодня