- Some frequent eth_calls like
symbol() or totalSupply() can usually be run with very low gas (<65535)
- The current
gas value for every eth_call from a substreams is 50_000_000, which is 763x a reasonable value. This leads to issues like a symbol() call timing out after 5 minutes of running -- before hitting the 'out_of_gas' limit on some 'broken contracts'.
- The substreams developer should be able to set a decent gas limit when 'discovering unknown contracts' to prevent those edge cases. A higher gas limit is only necessary when doing more complex calls like discovering minted NFTs in a recursive data structure or calling a method that has many internal calls.
Adding an intrinsic just for this in substreams and in the substreams-rs library may be tricky because it will fail on older substreams servers, but it may be what we want, to prevent determinism issues.
symbol()ortotalSupply()can usually be run with very low gas (<65535)gasvalue for every eth_call from a substreams is 50_000_000, which is 763x a reasonable value. This leads to issues like asymbol()call timing out after 5 minutes of running -- before hitting the 'out_of_gas' limit on some 'broken contracts'.Adding an intrinsic just for this in substreams and in the substreams-rs library may be tricky because it will fail on older substreams servers, but it may be what we want, to prevent determinism issues.