go-ethereum icon indicating copy to clipboard operation
go-ethereum copied to clipboard

Gas Estimation using Geth v1.9.10 code fails

Open gakonst opened this issue 4 years ago • 1 comments

Describe the bug

Gas estimation using geth's v.1.9.10 DoEstimateGas function does not seem to work appropriately. The E2E test fails at:

integration_tests_1     |  |   1) Queue Origin Sequencer Transactions
integration_tests_1     |  |        "before all" hook for "should sequencer batch append":
integration_tests_1     |  |      Error: transaction failed (transactionHash="0xf51191136996944dd041354cf65bf542bd3a1d91d17ffbba5d2a3a3c1257adf0", transaction={"hash":"0xf51191136996944dd041354cf65bf542bd3a1d91d17ffbba5d2a3a3c1257adf0","blockHash":"0xc40ec4212a42c2137bb51a1c539b76d54628abe6cd182900ccbaffce88c098c3","blockNumber":6,"transactionIndex":0,"confirmations":1,"from":"0x190f67608d1d777731C1d59e8A29E046FcDe8E1b","gasPrice":{"type":"BigNumber","hex":"0x00"},"gasLimit":{"type":"BigNumber","hex":"0x1a604d"},"to":null,"value":{"type":"BigNumber","hex":"0x00"},"nonce":0,"data":"0x60806040523480156200001c5760008062000019620002f6565b50505b50604051620014a7380380620014a7833981810160405260808110156200004d576000806200004a620002f6565b50505b810190808051906020019092919080516040519392919084640100000000821115620000835760008062000080620002f6565b50505b83820191506020820185811115620000a557600080620000a2620002f6565b50505b8251866001820283011164010000000082111715620000ce57600080620000cb620002f6565b50505b8083526020830192505050908051906020019080838360005b8381101562000104578082015181840152602081019050620000e7565b50505050905090810190601f168015620001325780820380516001836020036101000a031916815260200191505b5060405260200180519060200190929190805160405193929190846401000000008211156200016b5760008062000168620002f6565b50505b838201915060208201858111156200018d576000806200018a620002f6565b50505b8251866001820283011164010000000082111715620001b657600080620001b3620002f6565b50505b8083526020830192505050908051906020019080838360005b83811015620001ec578082015181840152602081019050620001cf565b50505050905090810190601f1680156200021a5780820380516001836020036101000a031916815260200191505b50604052505050836000805a6200023062000366565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819062000276620003c5565b505050836005819062000288620003c5565b5050508260029080519060200190620002a39291906200042c565b5081600360006101000a81620002b8620004dd565b8160ff021916908360ff16021790620002d0620003c5565b5050508060049080519060200190620002eb9291906200042c565b505050505062000575565b632a2a7adb598160e01b8152600481016020815285602082015260005b868110156200033357808601518160408401015260208101905062000313565b506020828760640184336000905af158600e01573d6000803e3d6000fd5b3d6001141558600a015760016000f35b505050565b6373509064598160e01b8152602081600483336000905af158600e01573d6000803e3d6000fd5b3d6001141558600a015760016000f35b8051935060005b6040811015620003c057600081830152602081019050620003a4565b505050565b6322bd64c0598160e01b8152836004820152846024820152600081604483336000905af158600e01573d6000803e3d6000fd5b3d6001141558600a015760016000f35b60005b604081101562000427576000818301526020810190506200040b565b505050565b828062000438620004dd565b600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200048357805160ff191683800117856200047b620003c5565b5050620004ca565b8280016001018562000494620003c5565b50508215620004ca579182015b82811115620004c957825182620004b7620003c5565b505091602001919060010190620004a1565b5b509050620004d9919062000542565b5090565b6303daa959598160e01b8152836004820152602081602483336000905af158600e01573d6000803e3d6000fd5b3d6001141558600a015760016000f35b8051935060005b60408110156200053d5760008183015260208101905062000521565b505050565b6200057291905b808211156200056e5760008160009062000562620003c5565b50505060010162000549565b5090565b90565b610f2280620005856000396000f3fe608060405234801561001957600080610016610d8f565b50505b50600436106100b25760003560e01c8063313ce5671161007a578063313ce567146102c05780635c658165146102e457806370a082311461036557806395d89b41146103c6578063a9059cbb14610449578063dd62ed3e146104b8576100b2565b806306fdde03146100c0578063095ea7b31461014357806318160ddd146101b257806323b872dd146101d057806327e235e31461025f575b6000806100bd610d8f565b50505b6100c8610539565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101085780820151818401526020810190506100ed565b50505050905090810190601f1680156101355780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610198600480360360408110156101625760008061015f610d8f565b50505b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506105f3565b604051808215151515815260200191505060405180910390f35b6101ba6106fe565b6040518082815260200191505060405180910390f35b610245600480360360608110156101ef576000806101ec610d8f565b50505b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061070b565b604051808215151515815260200191505060405180910390f35b6102aa6004803603602081101561027e5760008061027b610d8f565b50505b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506109f7565b6040518082815260200191505060405180910390f35b6102c8610a16565b604051808260ff1660ff16815260200191505060405180910390f35b61034f6004803603604081101561030357600080610300610d8f565b50505b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610a30565b6040518082815260200191505060405180910390f35b6103b06004803603602081101561038457600080610381610d8f565b50505b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610a5c565b6040518082815260200191505060405180910390f35b6103ce610aab565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561040e5780820151818401526020810190506103f3565b50505050905090810190601f16801561043b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61049e6004803603604081101561046857600080610465610d8f565b50505b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610b65565b604051808215151515815260200191505060405180910390f35b610523600480360360408110156104d7576000806104d4610d8f565b50505b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610d01565b6040518082815260200191505060405180910390f35b600280610544610dfd565b600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828061057f610dfd565b600181600116156101000203166002900480156105eb5780601f106105b95761010080836105ab610dfd565b0402835291602001916105eb565b820191906000526020600020905b816105d0610dfd565b815290600101906020018083116105c757829003601f168201915b505050505081565b600081600160005a610603610e60565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190610684610ebd565b5050508273ffffffffffffffffffffffffffffffffffffffff165a6106a7610e60565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b6005610708610dfd565b81565b600080600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060005a610758610e60565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002061079a610dfd565b9050826000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206107e3610dfd565b101580156107f15750828110155b61080357600080610800610d8f565b50505b826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828261084e610dfd565b01925050819061085c610ebd565b505050826000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082826108aa610dfd565b0392505081906108b8610ebd565b5050507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8110156109865782600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060005a61092e610e60565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282610974610dfd565b039250508190610982610ebd565b5050505b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a360019150509392505050565b6000602052806000526040600020600091509050610a13610dfd565b81565b6003600090610a23610dfd565b906101000a900460ff1681565b600160205281600052604060002060205280600052604060002060009150915050610a59610dfd565b81565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020610aa4610dfd565b9050919050565b600480610ab6610dfd565b600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280610af1610dfd565b60018160011615610100020316600290048015610b5d5780601f10610b2b576101008083610b1d610dfd565b040283529160200191610b5d565b820191906000526020600020905b81610b42610dfd565b81529060010190602001808311610b3957829003601f168201915b505050505081565b6000816000805a610b74610e60565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020610bb6610dfd565b1015610bca57600080610bc7610d8f565b50505b816000805a610bd7610e60565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282610c1d610dfd565b039250508190610c2b610ebd565b505050816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282610c79610dfd565b019250508190610c87610ebd565b5050508273ffffffffffffffffffffffffffffffffffffffff165a610caa610e60565b73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020610d87610dfd565b905092915050565b632a2a7adb598160e01b8152600481016020815285602082015260005b86811015610dca578086015181604084010152602081019050610dac565b506020828760640184336000905af158600e01573d6000803e3d6000fd5b3d6001141558600a015760016000f35b505050565b6303daa959598160e01b8152836004820152602081602483336000905af158600e01573d6000803e3d6000fd5b3d6001141558600a015760016000f35b8051935060005b6040811015610e5b57600081830152602081019050610e41565b505050565b6373509064598160e01b8152602081600483336000905af158600e01573d6000803e3d6000fd5b3d6001141558600a015760016000f35b8051935060005b6040811015610eb857600081830152602081019050610e9e565b505050565b6322bd64c0598160e01b8152836004820152846024820152600081604483336000905af158600e01573d6000803e3d6000fd5b3d6001141558600a015760016000f35b60005b6040811015610f1d57600081830152602081019050610f03565b5050505600000000000000000000000000000000000000000000000000000000000003e80000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000003466f6f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003464f4f0000000000000000000000000000000000000000000000000000000000","r":"0x55f5034fe440a72ef6e12c5f6569eef8eced03c416ebce52933612c174b0230b","s":"0x74f4e216bf67d49eb715b42e57bb68170c2b6458bc8979a9b521067380f595a5","v":876,"creates":"0x291CfBa4Da1630d8a64eAc0A2051d0C43a359420","chainId":420}, receipt={"to":null,"from":"0x190f67608d1d777731C1d59e8A29E046FcDe8E1b","contractAddress":"0x291CfBa4Da1630d8a64eAc0A2051d0C43a359420","transactionIndex":0,"gasUsed":{"type":"BigNumber","hex":"0x16e4b9"},"logsBloom":"0x00000000000000000000000000000000000000000000000000040000000000000000000000000000000000100000000000000000000000000000000000000000400000000000000000000008000000000000000010000000000000000000000400000000000000000000000000008000000000000000000000000010020000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","blockHash":"0xc40ec4212a42c2137bb51a1c539b76d54628abe6cd182900ccbaffce88c098c3","transactionHash":"0xf51191136996944dd041354cf65bf542bd3a1d91d17ffbba5d2a3a3c1257adf0","logs":[{"transactionIndex":0,"blockNumber":6,"transactionHash":"0xf51191136996944dd041354cf65bf542bd3a1d91d17ffbba5d2a3a3c1257adf0","address":"0x4200000000000000000000000000000000000006","topics":["0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef","0x000000000000000000000000190f67608d1d777731c1d59e8a29e046fcde8e1b","0x0000000000000000000000004200000000000000000000000000000000000005"],"data":"0x0000000000000000000000000000000000000000000000000000000000000000","logIndex":0,"blockHash":"0xc40ec4212a42c2137bb51a1c539b76d54628abe6cd182900ccbaffce88c098c3"}],"blockNumber":6,"confirmations":1,"cumulativeGasUsed":{"type":"BigNumber","hex":"0x16e4b9"},"status":0,"byzantium":true}, code=CALL_EXCEPTION, packages/tx-ingestion/version=providers/5.0.14)

This happens during the EncodeSimulatedMessage codepath which gets called here during gas estimation. Fixing it may also require changes in the contracts repo, in the simulateMessage function.

To Reproduce

This is repro'd in https://github.com/ethereum-optimism/go-ethereum/pull/276

  1. git checkout fix/gas-estimation
  2. run the integration tests

Expected behavior

Gas estimation should work and tests should pass

gakonst avatar Mar 22 '21 18:03 gakonst

We tried fixing this in https://github.com/ethereum-optimism/go-ethereum/pull/292 by adding some additional gas in the binary search during gas estimation, but it seemed to cause issues in the optimism-tutorials, so we ended up reverting it in https://github.com/ethereum-optimism/go-ethereum/pull/294


Original find from @platocrat:

This OVM test is failing

  • Context:
    • I’m running a set of EVM and OVM integration tests using the optimism-integration repo.
    • For both EVM and OVM tests, I instantiate a pair of sender/receiver wallets using either local RPC URL (whether using Ethereum or OE) from the integrations repo and the private key of the local deployer’s account address.
      • EVM tests pass as expected:
        • Uses the RPC URL of the local Ethereum network to instantiate wallets
        • Specified wallet has an ether balance for tests
      • OVM tests: All but 1 of the tests pass:
        • Uses the RPC URL of the local OE network to instantiate wallets
        • Specified wallet appears to have ether balance for all but 1 test.
        • Test that fails is a simple transfer call
          • Error is: Error: cannot estimate gas; transaction may fail or may require manual gas limit
        • Some tests that pass _are also _simple transfer calls.

Repro:

git clone Waffe-ERC20-Example [email protected]:ethereum-optimism/Waffle-ERC20-Example.git
cd Waffle-ERC20-Example
git checkout refactor/use-integration-tests
yarn
yarn all

gakonst avatar Apr 02 '21 07:04 gakonst