-
Notifications
You must be signed in to change notification settings - Fork 1.3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Lotus FEVM API Incompatibility with normal Ethereum mainnet behavior, causing issues with integration partners #12441
Lotus FEVM API Incompatibility with normal Ethereum mainnet behavior, causing issues with integration partners #12441
Comments
I've been trying to revive fevm-contract-tests for more regular runs against the latest lotus master and I've been running into this problem there too. I have 8 failures on the uniswap test suite, and all but 1 are variations of this bug.
So I guess we've introduced some more strict checking at some point in the pipeline here. |
hah, this call is working now on calibnet {"jsonrpc":"2.0","result":"0x925da8","id":588633187} the actor has funds, or has an actorid now, or ... something? if we modify the {"jsonrpc":"2.0","error":{"code":1,"message":"failed to estimate gas: ApplyWithGasOnState failed: call raw get actor: resolution lookup failed (t410fweca2phbggzsatssfheavdk24jy3f3yixfykv3a): resolve address t410fweca2phbggzsatssfheavdk24jy3f3yixfykv3a: actor not found"},"id":588633187} does geth / infura / whoever, still process it without the valid I'm assuming that we inserted an actor check in there at some point that shouldn't be there, but I'm honestly not sure what the 'correct' behaviour is. @Schwartz10 ? |
Hey @rvagg so I tried the calls and only the calls [Example: [// LookupIDAddress gets the ID address of this actor's lotus/chain/state/statetree.go Lines 343 to 361 in dafc56c
A quick patch would be: checking for calls that don't require gas [ I only came across 2 so it's feasible ] and remove the Do let me know your thoughts about this |
@akaladarshi has been looking into this one too, latest thread on Slack. @akaladarshi would you mind dropping in a summary of your findings so far? I thought your findings from go-ethereum were the most interesting bit—it basically shortcuts some of the internal checks and if we were to follow a similar path it would mean sending that into the fvm to have it avoid some of its checks. But I think we need to work out what all of those checks are first. We really should build a solid, failing itest for this first that we can work on fixing. There are possibly more than one situation that we need to account for. |
Checklist
Lotus component
Lotus Version
Repro Steps
Curl request to
eth_estimateGas
that fails with actor not found:returns:
This is an incompatibility with the same call on infura ethereum mainnet, which returns:
Describe the Bug
Integration partners call
eth_estimateGas
to estimate the gas of a given transaction. In some circumstances, a web app may estimate the gas of a transaction even if the account has no balance to pay for the transaction fee. Ethereum mainnet seems to ignore thefrom
address' balance when callingeth_estimateGas
. Subsequently, when the same user tries to submit the transaction with the samefrom
address, the call fails with insufficient funds (or maybe in our case, actor not found).In some cases, integrators have to patch filecoin specific functionality into their otherwise chain agnostic frontend
Tooling
Configuration Options
The text was updated successfully, but these errors were encountered: