--- tags: Ethereum Protocol Fellowship --- # EPF Update 7 ## Summary I didn't get a very good progress this week. This week I mostly focus on the create clients to connect to the `EntryPoint` contract in the network. But I met problems while I was testing Georli testnet. ## Incompatible UserOperation struct I was spending a lot of time trying to connect to the [Georli EntryPoint contract](https://goerli.etherscan.io/address/0x602aB3881Ff3Fa8dA60a8F44Cf633e91bA1FdB69) but the client always return `code 32000 message execution reverted` error. I was able to locate the problem at first. I tried to start a new test node by [Anvil](https://github.com/foundry-rs/foundry/tree/master/anvil) and deploy all the entrypoint contract in the node and it worked fine. Then I start to look at the contracts in the explorer. And I found that the UserOperation struct is different between the latest codes and the codes in the previous deployed contracts in Goerli. Current version: ```solidity= struct UserOperation { address sender; uint256 nonce; bytes initCode; bytes callData; uint256 callGasLimit; uint256 verificationGasLimit; uint256 preVerificationGas; uint256 maxFeePerGas; uint256 maxPriorityFeePerGas; bytes paymasterAndData; bytes signature; } ``` Previous Verion: ```solidity= struct UserOperation { address sender; uint256 nonce; bytes initCode; bytes callData; uint256 callGas; uint256 verificationGas; uint256 preVerificationGas; uint256 maxFeePerGas; uint256 maxPriorityFeePerGas; address paymaster; bytes paymasterData; bytes signature; } ``` Except for the field name changes, there is one important change that `paymaster` and `paymasterData` fields are merged into the one single field `paymasterAndData`. This is mostly the incompatible changes. The situation above raise a new question that why this change is needed? I asked the question in the discord and get a answer from [this pr](https://github.com/eth-infinitism/account-abstraction/pull/108). I haven't reviewed the pr yet. Make it a task next week. ## Rust async-trait problem I came into a problem in rust async-trait. The problem is ``` expected trait `Future<Output = Result<(), EntrypointContractErr>>`, found trait `Future<Output = Result<(), EntrypointContractErr>> + Send ``` I haven't figured why and how to solve the problem. I would put more next week. ## Reading List 1. https://blog.rust-lang.org/inside-rust/2019/10/11/AsyncAwait-Not-Send-Error-Improvements.html 2. https://blog.rust-lang.org/2015/05/11/traits.html