eth-infinitism/bundler

Missing revert data in call exception instead of expected FailedOp

Closed this issue · 3 comments

We are trying to run the bundler on our Spark test net (network id: 123) which is running on Nethermind RPC node and getting this error:

{ "reason": "missing revert data in call exception; Transaction reverted without a reason string", "code": "CALL_EXCEPTION", "data": "0x", "transaction": { "to": "0x5FF137D4b0FDCD49DcA30c7CF57E578a026d2789", "data": "0xee219423000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016000000000000000000000000000000000000000000000000000000000000001a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000186a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001c000000000000000000000000000000000000000000000000000000000000001e000000000000000000000000000000000000000000000000000000000000000140000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "accessList": null }, "error": { "reason": "processing response error", "code": "SERVER_ERROR", "body": "{\"jsonrpc\":\"2.0\",\"error\":{\"code\":-32015,\"message\":\"VM execution error.\",\"data\":\"Reverted 0x\"},\"id\":50}", "error": { "code": -32015, "data": "Reverted 0x" }, "requestBody": "{\"method\":\"eth_call\",\"params\":[{\"to\":\"0x5ff137d4b0fdcd49dca30c7cf57e578a026d2789\",\"data\":\"0xee219423000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016000000000000000000000000000000000000000000000000000000000000001a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000186a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001c000000000000000000000000000000000000000000000000000000000000001e000000000000000000000000000000000000000000000000000000000000000140000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000\"},\"latest\"],\"id\":50,\"jsonrpc\":\"2.0\"}", "requestMethod": "POST", "url": "https://rpc.fusespark.io/" } }

While running with a Geth local node as an example returns the following which is the expected result:

{ "reason": null, "code": "CALL_EXCEPTION", "method": "simulateValidation((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes))", "data": "0x220266b600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000001b4141313320696e6974436f6465206661696c6564206f72204f4f470000000000", "errorArgs": [ { "type": "BigNumber", "hex": "0x00" }, "AA13 initCode failed or OOG" ], "errorName": "FailedOp", "errorSignature": "FailedOp(uint256,string)", "address": "0x5FF137D4b0FDCD49DcA30c7CF57E578a026d2789", "args": [ { "sender": "0x0000000000000000000000000000000000000000", "callData": "0x", "initCode": "0x0000000000000000000000000000000000000000", "paymasterAndData": "0x", "nonce": 0, "preVerificationGas": 0, "verificationGasLimit": 100000, "callGasLimit": 0, "maxFeePerGas": 0, "maxPriorityFeePerGas": 0, "signature": "0x" } ], "transaction": { "data": "0xee219423000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016000000000000000000000000000000000000000000000000000000000000001a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000186a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001c000000000000000000000000000000000000000000000000000000000000001e000000000000000000000000000000000000000000000000000000000000000140000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "to": "0x5FF137D4b0FDCD49DcA30c7CF57E578a026d2789" } }

We believe that the issue is somehow related to our nodes, but not sure if it is due to something that is not supported at all by Nethermind nodes, or something that should be enabled.

Afaik, Nethermind nodes are not updated to the latest version if the EntryPoint (0.6)

@drortirosh not sure if I understand, we have deployed the latest Entrypoint contracts on our testnet. From our conversation with the NM team, I understood that they need to support decoding of the events of the Entrypoint contract as the bundler expects. Can you point to a specific update they need to apply on the node level?

The API methods (handleOps, simulateValidation, etc) have changed, since the structure UserOperation was changed.
The reference bundler performs a "sanity check" when it starts that the entryPoint contract at least support the expected API, and aborts on error if it doesn't.
The Nethermind bundler doesn't do such a check.