eth-infinitism / bundler

GNU General Public License v3.0
331 stars 217 forks source link

Problems with run Bundler: FATAL: Invalid entryPoint contract at xxx. wrong version? #93

Closed shellteo closed 1 year ago

shellteo commented 1 year ago

Description

I am having trouble starting the bundler service after successfully deploying the EntryPoint contract. The error is "FATAL: Invalid entryPoint contract at xxx. wrong version?"

Environment

Steps to Reproduce

1. Deterministic-deployment-proxy deployment on Mantle testnet

1)Modify the JSON_RPC in scripts/test.sh as shown in the figure below

Execute ./scripts/test.sh and an error is reported as follows.

{"jsonrpc":"2.0","id":1,"error":{"code":-32000,"message":"gas price too high: 100000000000 wei, use at most tx.gasPrice = 1 wei"}}

Our mantle testnet transactions are all set to 1wei, so modify the gasPrice in scripts/compile.ts to 1wei, as shown in the figure below

Execute npm run build to generate the output/deployment.json file, then execute ./scripts/test.sh to deploy the contract to Mantle.

{
    "gasPrice": 1,
    "gasLimit": 100000,
    "signerAddress": "67318b895775b2aaa9e5330981b620af942b8c73",
    "transaction": "f8a08001830186a08080b853604580600e600039806000f350fe7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe03601600081602082378035828234f58015156039578182fd5b8082525050506014600cf31ba02222222222222222222222222222222222222222222222222222222222222222a02222222222222222222222222222222222222222222222222222222222222222",
    "address": "47416ea33cd1e6026e199d88ae2719f5be3d321d"
}

2. Deploy the EntryPoint contract to Mantle testnet

Add the mantleTestnet network and deterministicDeployment configuration to hardhat.config.ts in the account-abstraction project.

mantleTestnet: {
  accounts: {
    mnemonic: mnemonic,
  },
  chainId: 5001,
  url: 'https://rpc.testnet.mantle.xyz',
  allowUnlimitedContractSize: true
}
deterministicDeployment: {
    "5001": {
      factory: "0x47416ea33cd1e6026e199d88ae2719f5be3d321d",
      deployer: "0x67318b895775b2aaa9e5330981b620af942b8c73",
      funding: "100000",
      signedTx: "0xf8a08001830186a08080b853604580600e600039806000f350fe7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe03601600081602082378035828234f58015156039578182fd5b8082525050506014600cf31ba02222222222222222222222222222222222222222222222222222222222222222a02222222222222222222222222222222222222222222222222222222222222222",
    }
}

Execute yarn run deploy --network mantleTestnet command to deploy EntryPoint contract and SimpleAccountFactory contract, the results are as follows

yarn run v1.22.15
$ ./scripts/hh-wrapper deploy --network mantleTestnet
Nothing to compile
No need to generate any newer typings.
==entrypoint addr= 0x968223e76cD2117a677EB00dC8D299213EC6F155
==SimpleAccountFactory addr= 0x6cf2E0056Bbf79eBa22ad73d2949206911c8eAc9
✨  Done in 7.37s.

3. Run the bundler service

According to the content deployed in the third step, modify the network, EntryPoint and beneficiary in the packages/bundler/localconfig/bundler.config.json configuration in the bundler project

{
  "gasFactor": "1",
  "port": "3000",
  "network": "https://rpc.testnet.mantle.xyz",
  "entryPoint": "0x968223e76cD2117a677EB00dC8D299213EC6F155",
  "beneficiary": "0x83165f86c10898dD4a7f33bDe8e5C0e4cC90E424",
  "minBalance": "1",
  "mnemonic": "./localconfig/mnemonic.txt",
  "maxBundleGas": 5e6,
  "minStake": "1" ,
  "minUnstakeDelay": 0 ,
  "autoBundleInterval": 3,
  "autoBundleMempoolSize": 10
}

Execute the following command to start bundler

yarn run bundler --network https://rpc.testnet.mantle.xyz --mnemonic ./localconfig/mnemonic.txt --unsafe

and then report an error

Error: missing revert data in call exception; Transaction reverted without a reason string [ See: https://links.ethers.org/v5-errors-CALL_EXCEPTION ] (data="0x", transaction={"to":"0x968223e76cD2117a677EB00dC8D299213EC6F155","data":"0xee219423000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016000000000000000000000000000000000000000000000000000000000000001a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000186a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001c000000000000000000000000000000000000000000000000000000000000001e000000000000000000000000000000000000000000000000000000000000000140000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","accessList":null}, error={"reason":"processing response error","code":"SERVER_ERROR","body":"{\"jsonrpc\":\"2.0\",\"id\":65,\"error\":{\"code\":-32000,\"message\":\"execution reverted\"}}\n","error":{"code":-32000},"requestBody":"{\"method\":\"eth_call\",\"params\":[{\"to\":\"0x968223e76cd2117a677eb00dc8d299213ec6f155\",\"data\":\"0xee219423000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016000000000000000000000000000000000000000000000000000000000000001a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000186a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001c000000000000000000000000000000000000000000000000000000000000001e000000000000000000000000000000000000000000000000000000000000000140000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000\"},\"latest\"],\"id\":65,\"jsonrpc\":\"2.0\"}","requestMethod":"POST","url":"https://rpc.testnet.mantle.xyz"}, code=CALL_EXCEPTION, version=providers/5.7.2)
    at Logger.makeError (/Users/dl00028ml/workspace/eip4337-bundler/node_modules/@ethersproject/logger/src.ts/index.ts:269:28)
    at Logger.throwError (/Users/dl00028ml/workspace/eip4337-bundler/node_modules/@ethersproject/logger/src.ts/index.ts:281:20)
    at checkError (/Users/dl00028ml/workspace/eip4337-bundler/node_modules/@ethersproject/providers/src.ts/json-rpc-provider.ts:66:16)
    at JsonRpcProvider.<anonymous> (/Users/dl00028ml/workspace/eip4337-bundler/node_modules/@ethersproject/providers/src.ts/json-rpc-provider.ts:642:20)
    at step (/Users/dl00028ml/workspace/eip4337-bundler/node_modules/@ethersproject/providers/lib/json-rpc-provider.js:48:23)
    at Object.throw (/Users/dl00028ml/workspace/eip4337-bundler/node_modules/@ethersproject/providers/lib/json-rpc-provider.js:29:53)
    at rejected (/Users/dl00028ml/workspace/eip4337-bundler/node_modules/@ethersproject/providers/lib/json-rpc-provider.js:21:65)
    at processTicksAndRejections (node:internal/process/task_queues:96:5) {
  reason: 'missing revert data in call exception; Transaction reverted without a reason string',
  code: 'CALL_EXCEPTION',
  data: '0x',
  transaction: {
    to: '0x968223e76cD2117a677EB00dC8D299213EC6F155',
    data: '0xee219423000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016000000000000000000000000000000000000000000000000000000000000001a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000186a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001c000000000000000000000000000000000000000000000000000000000000001e000000000000000000000000000000000000000000000000000000000000000140000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000',
    accessList: null
  },
  error: Error: processing response error (body="{\"jsonrpc\":\"2.0\",\"id\":65,\"error\":{\"code\":-32000,\"message\":\"execution reverted\"}}\n", error={"code":-32000}, requestBody="{\"method\":\"eth_call\",\"params\":[{\"to\":\"0x968223e76cd2117a677eb00dc8d299213ec6f155\",\"data\":\"0xee219423000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016000000000000000000000000000000000000000000000000000000000000001a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000186a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001c000000000000000000000000000000000000000000000000000000000000001e000000000000000000000000000000000000000000000000000000000000000140000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000\"},\"latest\"],\"id\":65,\"jsonrpc\":\"2.0\"}", requestMethod="POST", url="https://rpc.testnet.mantle.xyz", code=SERVER_ERROR, version=web/5.7.1)
      at Logger.makeError (/Users/dl00028ml/workspace/eip4337-bundler/node_modules/@ethersproject/logger/src.ts/index.ts:269:28)
      at Logger.throwError (/Users/dl00028ml/workspace/eip4337-bundler/node_modules/@ethersproject/logger/src.ts/index.ts:281:20)
      at /Users/dl00028ml/workspace/eip4337-bundler/node_modules/@ethersproject/web/src.ts/index.ts:341:28
      at step (/Users/dl00028ml/workspace/eip4337-bundler/node_modules/@ethersproject/web/lib/index.js:33:23)
      at Object.next (/Users/dl00028ml/workspace/eip4337-bundler/node_modules/@ethersproject/web/lib/index.js:14:53)
      at fulfilled (/Users/dl00028ml/workspace/eip4337-bundler/node_modules/@ethersproject/web/lib/index.js:5:58)
      at processTicksAndRejections (node:internal/process/task_queues:96:5) {
    reason: 'processing response error',
    code: 'SERVER_ERROR',
    body: '{"jsonrpc":"2.0","id":65,"error":{"code":-32000,"message":"execution reverted"}}\n',
    error: Error: execution reverted
        at getResult (/Users/dl00028ml/workspace/eip4337-bundler/node_modules/@ethersproject/providers/src.ts/json-rpc-provider.ts:142:28)
        at processJsonFunc (/Users/dl00028ml/workspace/eip4337-bundler/node_modules/@ethersproject/web/src.ts/index.ts:383:22)
        at /Users/dl00028ml/workspace/eip4337-bundler/node_modules/@ethersproject/web/src.ts/index.ts:320:42
        at step (/Users/dl00028ml/workspace/eip4337-bundler/node_modules/@ethersproject/web/lib/index.js:33:23)
        at Object.next (/Users/dl00028ml/workspace/eip4337-bundler/node_modules/@ethersproject/web/lib/index.js:14:53)
        at fulfilled (/Users/dl00028ml/workspace/eip4337-bundler/node_modules/@ethersproject/web/lib/index.js:5:58)
        at processTicksAndRejections (node:internal/process/task_queues:96:5) {
      code: -32000,
      data: undefined
    },
    requestBody: '{"method":"eth_call","params":[{"to":"0x968223e76cd2117a677eb00dc8d299213ec6f155","data":"0xee219423000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016000000000000000000000000000000000000000000000000000000000000001a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000186a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001c000000000000000000000000000000000000000000000000000000000000001e000000000000000000000000000000000000000000000000000000000000000140000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"},"latest"],"id":65,"jsonrpc":"2.0"}',
    requestMethod: 'POST',
    url: 'https://rpc.testnet.mantle.xyz'
  }
}
FATAL: Invalid entryPoint contract at 0x968223e76cD2117a677EB00dC8D299213EC6F155. wrong version?
error Command failed with exit code 1.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
drortirosh commented 1 year ago

We're currently trying to use same-address on all networks. modifying the "deterministic deployer" is not a solution, since it by itself, modifies the resulting address. It would be nice to fix the scripts to support non-deterministic EntryPoint addresses, but then it is far more difficult to validate the same implementation is indeed deployed on all networks. Might be better to persuade the network operator to perform a "state-change" that would let the standard deterministic deployer by deployed on the network, and thus all deployments that depend on it will work seamlessly. on mantle, it might require just to allow running this single transaction at the cost of 100 gwei