Skip to content
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

4337 Gas metering: Pimlico VerifyingPaymaster results, refactorings, groundwork for ERC20Paymaster #401

Merged
merged 20 commits into from
Jun 4, 2024

Conversation

remedcu
Copy link
Member

@remedcu remedcu commented Apr 26, 2024

This PR updates the Pimlico benchmarking code to use the new v0.7 entrypoint and the new paymaster from Pimlico. Partially fixes #294 (Partially because there are blockers related to the ERC20 Paymaster; I will describe them below)

Current Blockers For ERC20 Paymaster

  • They use the official Circle's USDC deployments on testnets with no liquidity, and the faucet drips 10 USDC daily. One user op costs around 7.
  • There are some problems with gas pricing. Currently, it wants roughly 7 USDC for a user operation on Base Sepolia (approximately 2x higher than the native token fee) and 537 USDC on Sepolia.

The Pimlico team have been informed regarding the same at the time of writing this issue. Slack Link.

Changes completed/in-progress

  • Using base-sepolia as well (sepolia sometimes has a high gas cost)
  • Using new signing struct with the latest 4337 Safe Module
  • Update of dependencies used in the Pimlico benchmark
  • Code refactors and type improvements
  • NPM scripts now explicitly contain the paymaster they should use
  • Addition of VERBOSE environment variable that outputs handy logging data to the console, which is very useful for debugging. Example

@remedcu remedcu self-assigned this Apr 26, 2024
@remedcu remedcu changed the title Pimlico based changes for gas metering Pimlico based changes for examples/4337-gas-metering Apr 26, 2024
@coveralls
Copy link

Pull Request Test Coverage Report for Build 9098338109

Details

  • 0 of 0 changed or added relevant lines in 0 files are covered.
  • No unchanged relevant lines lost coverage.
  • Overall coverage remained the same at 100.0%

Totals Coverage Status
Change from base Build 9062559032: 0.0%
Covered Lines: 39
Relevant Lines: 39

💛 - Coveralls

@coveralls
Copy link

coveralls commented May 15, 2024

Pull Request Test Coverage Report for Build 9268898453

Details

  • 0 of 0 changed or added relevant lines in 0 files are covered.
  • No unchanged relevant lines lost coverage.
  • Overall coverage remained the same at 100.0%

Totals Coverage Status
Change from base Build 9250859802: 0.0%
Covered Lines: 39
Relevant Lines: 39

💛 - Coveralls

@mmv08 mmv08 force-pushed the 4337-gas-metering-pimlico branch from 405e82f to 91fda80 Compare May 17, 2024 12:41
@mmv08 mmv08 force-pushed the 4337-gas-metering-pimlico branch from a4dfec9 to 0f3c8af Compare May 21, 2024 10:21
@mmv08 mmv08 force-pushed the 4337-gas-metering-pimlico branch 2 times, most recently from 9c49db7 to 0edbbfe Compare May 22, 2024 10:10
@mmv08 mmv08 force-pushed the 4337-gas-metering-pimlico branch from 0edbbfe to 47eb42b Compare May 22, 2024 11:33
@mmv08 mmv08 force-pushed the 4337-gas-metering-pimlico branch from d1d1835 to 11d6e08 Compare May 22, 2024 12:20
@mmv08 mmv08 force-pushed the 4337-gas-metering-pimlico branch 2 times, most recently from 70dff12 to 582d503 Compare May 28, 2024 11:59
@mmv08 mmv08 force-pushed the 4337-gas-metering-pimlico branch from 582d503 to 721ca19 Compare May 28, 2024 12:01
@mmv08 mmv08 force-pushed the 4337-gas-metering-pimlico branch from df49f75 to 13048d3 Compare May 28, 2024 13:40
@mmv08 mmv08 force-pushed the 4337-gas-metering-pimlico branch from 13048d3 to 2adf240 Compare May 28, 2024 13:43
@mmv08 mmv08 changed the title Pimlico based changes for examples/4337-gas-metering 4337 Gas metering: Pimlico VerifyingPaymaster results, refactorings, groundwork for ERC20Paymaster May 28, 2024
@mmv08 mmv08 force-pushed the 4337-gas-metering-pimlico branch 3 times, most recently from 724ec2f to 8df23d5 Compare May 28, 2024 14:00
Comment on lines 13 to 20
| | **With 4337?** | **Account Creation** | **Account Creation + Native Transfer** | **Native Transfer** | **Account Creation + ERC20 Transfer** | **ERC20 Transfer** | **Account Creation + ERC721 Minting** | **ERC721 Minting** |
| ---------------------------------------------------------------- | -------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **[Without Paymaster](../../modules/4337/test/gas/Gas.spec.ts)** | Yes | 415213 | 447632 | 182081 | 426139 | 160575 | 467926 | 202374 |
| **Gelato (4337 Compatible - 1Balance)** | No | 302679 ([TX](https://sepolia.basescan.org/tx/0x1b2f743dff63dfc6e01e18623cb8d692d4a1cf206008358fac3eaf8fd5957c91)) ([Gas](https://dashboard.tenderly.co/tx/base-sepolia/0x1b2f743dff63dfc6e01e18623cb8d692d4a1cf206008358fac3eaf8fd5957c91/gas-usage)) | 313228 ([TX](https://sepolia.basescan.org/tx/0xddbd655b8a11cf043c535c2d6dbe14aa82925d444a0d4bb5378670993ad1862c)) ([Gas](https://dashboard.tenderly.co/tx/base-sepolia/0xddbd655b8a11cf043c535c2d6dbe14aa82925d444a0d4bb5378670993ad1862c/gas-usage)) | 83930 ([TX](https://sepolia.basescan.org/tx/0x162b8817fe9cbbccb905c4b51cc25cbf2625afa1e5341087a4e79b9bb6834fc6)) ([Gas](https://dashboard.tenderly.co/tx/base-sepolia/0x162b8817fe9cbbccb905c4b51cc25cbf2625afa1e5341087a4e79b9bb6834fc6/gas-usage)) | 315961 ([TX](https://sepolia.basescan.org/tx/0x1043acb58c89667d26360f23532d6eee4ab927b20ba37035fb3ffb8cc71c224b)) ([Gas](https://dashboard.tenderly.co/tx/base-sepolia/0x1043acb58c89667d26360f23532d6eee4ab927b20ba37035fb3ffb8cc71c224b/gas-usage)) | 86852 ([TX](https://sepolia.basescan.org/tx/0x6c6ccadea5e54aa47b36c603132b315f1cf15e75e96c0376a7c76ae48f69a006)) ([Gas](https://dashboard.tenderly.co/tx/base-sepolia/0x6c6ccadea5e54aa47b36c603132b315f1cf15e75e96c0376a7c76ae48f69a006/gas-usage)) | 345284 ([TX](https://sepolia.basescan.org/tx/0xd49b482ff37f07f12fc1688a2af33b4451d63409fe547f9cf2e660422866da3e)) ([Gas](https://dashboard.tenderly.co/tx/base-sepolia/0xd49b482ff37f07f12fc1688a2af33b4451d63409fe547f9cf2e660422866da3e/gas-usage)) | 116159 ([TX](https://sepolia.basescan.org/tx/0x5814be99c937b6e7386f3526fe9f11fc1bf7a21180daf66ee2e44cc1e4d0da3d)) ([Gas](https://dashboard.tenderly.co/tx/base-sepolia/0x5814be99c937b6e7386f3526fe9f11fc1bf7a21180daf66ee2e44cc1e4d0da3d/gas-usage)) |
| **Pimlico (USDC Paymaster)** | Yes | 506573 ([TX](https://mumbai.polygonscan.com/tx/0x3c6284e4df1686d699d2bc4cca04a25ecc76d68a73665ca53d466e6bd6bedf28)) ([Gas](https://dashboard.tenderly.co/tx/mumbai/0x3c6284e4df1686d699d2bc4cca04a25ecc76d68a73665ca53d466e6bd6bedf28/gas-usage)) | 511055 ([TX](https://mumbai.polygonscan.com/tx/0x8bc4e42b076d22e0fc3418eba40c65caab6e3a10c1fbb10cbeee4a7fbfa8b4b3)) ([Gas](https://dashboard.tenderly.co/tx/mumbai/0x8bc4e42b076d22e0fc3418eba40c65caab6e3a10c1fbb10cbeee4a7fbfa8b4b3/gas-usage)) | 199262 ([TX](https://mumbai.polygonscan.com/tx/0x46cdfc14649087609f69411fc41f5feb4dc23a6ea9255928b932841858e5f186)) ([Gas](https://dashboard.tenderly.co/tx/mumbai/0x46cdfc14649087609f69411fc41f5feb4dc23a6ea9255928b932841858e5f186/gas-usage)) | 514156 ([TX](https://mumbai.polygonscan.com/tx/0xa5cf461800341c2e9934608ff55aeda26d1a3e7da4f5bc9f3cce3fd185409623)) ([Gas](https://dashboard.tenderly.co/tx/mumbai/0xa5cf461800341c2e9934608ff55aeda26d1a3e7da4f5bc9f3cce3fd185409623/gas-usage)) | 202387 ([TX](https://mumbai.polygonscan.com/tx/0xdc21ae13dc92eb48851fa62f57c74f3a0085acf81343d9aaaa14fcc3c6911f91)) ([Gas](https://dashboard.tenderly.co/tx/mumbai/0xdc21ae13dc92eb48851fa62f57c74f3a0085acf81343d9aaaa14fcc3c6911f91/gas-usage)) | 543411 ([TX](https://mumbai.polygonscan.com/tx/0xcd6c137474be4f002822498e032ad9b78b0505bd4db495ee65fc602ec1a7f006)) ([Gas](https://dashboard.tenderly.co/tx/mumbai/0xcd6c137474be4f002822498e032ad9b78b0505bd4db495ee65fc602ec1a7f006/gas-usage)) | 231619 ([TX](https://mumbai.polygonscan.com/tx/0x31732175d3f3b35c9c2a38e841bcd485085edf79e7f3c532ec7997c4993c0192)) ([Gas](https://dashboard.tenderly.co/tx/mumbai/0x31732175d3f3b35c9c2a38e841bcd485085edf79e7f3c532ec7997c4993c0192/gas-usage)) |
| **Pimlico (MATIC - Gas Policy)** | Yes | 448172 ([TX](https://mumbai.polygonscan.com/tx/0xd51d026ecfa6dbafa8aac8a138badc6e3b397683117878e360bae9051a3b733a)) ([Gas](https://dashboard.tenderly.co/tx/mumbai/0xd51d026ecfa6dbafa8aac8a138badc6e3b397683117878e360bae9051a3b733a/gas-usage)) | 455615 ([TX](https://mumbai.polygonscan.com/tx/0xdd966b95b6625be33ae37f6c5bb1ad33798afbbd899089acad1180005d0637c4)) ([Gas](https://dashboard.tenderly.co/tx/mumbai/0xdd966b95b6625be33ae37f6c5bb1ad33798afbbd899089acad1180005d0637c4/gas-usage)) | 123064 ([TX](https://mumbai.polygonscan.com/tx/0xca2e41e24c6206011fe0d932f27a2786c7d9486c93f63d96c131c5007e2b275e)) ([Gas](https://dashboard.tenderly.co/tx/mumbai/0xca2e41e24c6206011fe0d932f27a2786c7d9486c93f63d96c131c5007e2b275e/gas-usage)) | 459014 ([TX](https://mumbai.polygonscan.com/tx/0xbd4c79d876ae928bbc721501029b01dbc5fc94d91d6299f548f19289f7c1c271)) ([Gas](https://dashboard.tenderly.co/tx/mumbai/0xbd4c79d876ae928bbc721501029b01dbc5fc94d91d6299f548f19289f7c1c271/gas-usage)) | 126461 ([TX](https://mumbai.polygonscan.com/tx/0xd2b130bc2f26cfe43041f7102601425674e2cd22a6b74672b907b28e70686496)) ([Gas](https://dashboard.tenderly.co/tx/mumbai/0xd2b130bc2f26cfe43041f7102601425674e2cd22a6b74672b907b28e70686496/gas-usage)) | 488186 ([TX](https://mumbai.polygonscan.com/tx/0x454a3a5a39432f7b01a70fcddfef948d20c70d2d719aea30d402d693447fa535)) ([Gas](https://dashboard.tenderly.co/tx/mumbai/0x454a3a5a39432f7b01a70fcddfef948d20c70d2d719aea30d402d693447fa535/gas-usage)) | 155645 ([TX](https://mumbai.polygonscan.com/tx/0xa148a4938de9883b2fbcd512e3c7161e78ca695843b6e535fdb5054b88872652)) ([Gas](https://dashboard.tenderly.co/tx/mumbai/0xa148a4938de9883b2fbcd512e3c7161e78ca695843b6e535fdb5054b88872652/gas-usage)) |
| **Alchemy (ETH from Safe)** | Yes | 417074 ([TX](https://sepolia.etherscan.io/tx/0x03c507f5dc14c6b6af04c5ad722f0650d86925837d9889e4972cb087e34d7b88)) ([Gas](https://dashboard.tenderly.co/tx/sepolia/0x03c507f5dc14c6b6af04c5ad722f0650d86925837d9889e4972cb087e34d7b88/gas-usage)) | 424505 ([TX](https://sepolia.etherscan.io/tx/0x0263331d8d4568c08d4a700385c08062ee0342fe6f65b2c7eb1a194ddec23ec2)) ([Gas](https://dashboard.tenderly.co/tx/sepolia/0x0263331d8d4568c08d4a700385c08062ee0342fe6f65b2c7eb1a194ddec23ec2/gas-usage)) | 107057 ([TX](https://sepolia.etherscan.io/tx/0xf4e38d9f3535dcb9519ca3527734a5ea611a0d1bafb632051736537853eb502b)) ([Gas](https://dashboard.tenderly.co/tx/sepolia/0xf4e38d9f3535dcb9519ca3527734a5ea611a0d1bafb632051736537853eb502b/gas-usage)) | 427599 ([TX](https://sepolia.etherscan.io/tx/0x794b02531f14b6c432c0dcf08d1cb76a8693dd75b35c5dde0d4547754d208143)) ([Gas](https://dashboard.tenderly.co/tx/sepolia/0x794b02531f14b6c432c0dcf08d1cb76a8693dd75b35c5dde0d4547754d208143/gas-usage)) | 110174 ([TX](https://sepolia.etherscan.io/tx/0xb56985ee07b1e7931aedc387698620d890c99992c4c688b8b3a150f355089e5d)) ([Gas](https://dashboard.tenderly.co/tx/sepolia/0xb56985ee07b1e7931aedc387698620d890c99992c4c688b8b3a150f355089e5d/gas-usage)) | 456870 ([TX](https://sepolia.etherscan.io/tx/0x2d2a0c8215821f0aa9cf8f88175aa8256cdca1a2928f2aa667916e5127f5dcb6)) ([Gas](https://dashboard.tenderly.co/tx/sepolia/0x2d2a0c8215821f0aa9cf8f88175aa8256cdca1a2928f2aa667916e5127f5dcb6/gas-usage)) | 139420 ([TX](https://sepolia.etherscan.io/tx/0x178d2c16a261dcb49e810bf39ce35cf96cbab8c7d3235709c7164ba6193c716e)) ([Gas](https://dashboard.tenderly.co/tx/sepolia/0x178d2c16a261dcb49e810bf39ce35cf96cbab8c7d3235709c7164ba6193c716e/gas-usage)) |
| **Alchemy (ETH - Gas Policy)** | Yes | 411372 ([TX](https://sepolia.etherscan.io/tx/0xcbb2c3c49b9d72d9ecf692308d69a8ad797ab5b1c6603f4fad989f966d692af1)) ([Gas](https://dashboard.tenderly.co/tx/sepolia/0xcbb2c3c49b9d72d9ecf692308d69a8ad797ab5b1c6603f4fad989f966d692af1/gas-usage)) | 418779 ([TX](https://sepolia.etherscan.io/tx/0x49fbedf833cfecf9db7de56c61d4227292723115520600dbc3711da5e6a85672)) ([Gas](https://dashboard.tenderly.co/tx/sepolia/0x49fbedf833cfecf9db7de56c61d4227292723115520600dbc3711da5e6a85672/gas-usage)) | 130202 ([TX](https://sepolia.etherscan.io/tx/0x35f1e5b04d988e4614a17609190b3e21b0a9892f78da9f400248cfb3b5afde9a)) ([Gas](https://dashboard.tenderly.co/tx/sepolia/0x35f1e5b04d988e4614a17609190b3e21b0a9892f78da9f400248cfb3b5afde9a/gas-usage)) | 421926 ([TX](https://sepolia.etherscan.io/tx/0x7dda913ae986d49c4322f414102ae374441a40adb4b33727e568ba140904d52a)) ([Gas](https://dashboard.tenderly.co/tx/sepolia/0x7dda913ae986d49c4322f414102ae374441a40adb4b33727e568ba140904d52a/gas-usage)) | 133394 ([TX](https://sepolia.etherscan.io/tx/0xe34902ebd5377cac04c47d142f6ca2de558df63a7e0c6541f704df651b7cfcb1)) ([Gas](https://dashboard.tenderly.co/tx/sepolia/0xe34902ebd5377cac04c47d142f6ca2de558df63a7e0c6541f704df651b7cfcb1/gas-usage)) | 451200 ([TX](https://sepolia.etherscan.io/tx/0xb1253508bc4ca5ce41222b15b0e7bf03b2273bcb09d93e1d6d6a5ea39b43ee84)) ([Gas](https://dashboard.tenderly.co/tx/sepolia/0xb1253508bc4ca5ce41222b15b0e7bf03b2273bcb09d93e1d6d6a5ea39b43ee84/gas-usage)) | 162654 ([TX](https://sepolia.etherscan.io/tx/0xd13fb70626a26aaa02e0389cd9347c1c0d8d8ed9ee794a61c5d3eea4b36e239a)) ([Gas](https://dashboard.tenderly.co/tx/sepolia/0xd13fb70626a26aaa02e0389cd9347c1c0d8d8ed9ee794a61c5d3eea4b36e239a/gas-usage)) |
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Open question:
What do you think about removing this summary table? Reasons for doing so:

  1. We duplicate the data in 3 places: summary table, individual table and logs in the individual benchmarks folders. It feels like an overhead
  2. The table format makes it a nightmare to work with.
  3. The cognitive overhead of comparing individual results is not crazy due to the low amount of entries.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Alternatively, I'd remove the individual tables since the summary tables already contain a link to the detailed gas usage breakdown.

(Although I prefer the format of individual tables to this one)

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We went for both summary and individual table because the original requirement needed detailed information in each type (summary) and each part of the transaction (individual).

Though, we could remove the logs 👍🏾

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fair enough, I'll remove them and update the summary table once I return next week. Or if you have capacity, I'd appreciate your help 👍

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ideally, we would be able to do this programmatically instead of requiring multiple updates. Not in scope for this sprint, but some potential tech debt.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not sure if tenderly supports that, I have asked them in the channel.

Copy link
Collaborator

@nlordell nlordell May 31, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You should be able to do this without Tenderly. The entrypoint supports delegatecall simulations that could be used.

Copy link
Member

@mmv08 mmv08 Jun 3, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

New question related to the summary table @remedcu @nlordell:

The table uses the bundler’s ethereum transaction gas instead of the user operation gas used. Would it make sense to use the latter? Reason: To compare this number across the available bundlers, we’d require all bundlers to include only a single user op in a transaction, which can’t be guaranteed. Also, if the bundler decides to execute arbitrary logic (which affects the number, but we’re only paying for the user op) this would affect the comparison

Another example that highlights that transaction gas limit might not be what you're paying to the bundler:

ERC721 Minting User Op with Pimlico Verifying Paymaster:
Gas Used (Account or Paymaster): 170150
Gas Used (Transaction): 152766
The first number is the user operation, the second is the actual ethereum transaction

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

With ERC20 Paymaster, using the user operation gas we paid for the user op makes sense. But with the gas policy one, using the former might be better as we are not paying the gas for that (at least directly in some cases, where the policy is sponsored by say a protocol or company) to make the sponsors aware if extra arbitrary logic is being executed with the transaction and which bundler's gas policy might be the right approach.

@@ -126,7 +133,7 @@ export const mintERC20Token = async (

export const transferERC20Token = async (
erc20TokenAddress: Address,
publicClient: PublicClient,
publicClient: PublicClient<HttpTransport, typeof baseSepolia | typeof sepolia>,
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I ran into some type issues after dependency updates and had to make this more specific

export const getERC20Balance = async (erc20TokenAddress: Address, publicClient: PublicClient, owner: Address): Promise<bigint> => {
export const getERC20Balance = async (
erc20TokenAddress: Address,
publicClient: PublicClient<HttpTransport, typeof baseSepolia | typeof sepolia>,
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I ran into some type issues after dependency updates and had to make this more specific

export const getERC20Decimals = async (erc20TokenAddress: Address, publicClient: PublicClient): Promise<bigint> => {
export const getERC20Decimals = async (
erc20TokenAddress: Address,
publicClient: PublicClient<HttpTransport, typeof baseSepolia | typeof sepolia>,
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I ran into some type issues after dependency updates and had to make this more specific

@@ -9,7 +19,7 @@ const alchemyRPCURL = process.env.ALCHEMY_RPC_URL
const gelatoRPCURL = process.env.GELATO_RPC_URL

export const transferETH = async (
publicClient: PublicClient,
publicClient: PublicClient<HttpTransport, typeof baseSepolia | typeof sepolia | typeof goerli>,
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I ran into some type issues after dependency updates and had to make this more specific

@@ -47,7 +49,7 @@ export const getGelatoCallData = async ({
}: {
safe: Address
owner: PrivateKeyAccount
publicClient: PublicClient
publicClient: PublicClient<Transport<'http'>, typeof sepolia | typeof baseSepolia>
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I ran into some type issues after dependency updates and had to make this more specific

@@ -165,45 +167,46 @@ const getInitializerCode = async ({
})
}

const multiSendCallData = encodeMultiSend(setupTxs)
const recipient = setupTxs.length > 1 ? multiSendAddress : safeModuleSetupAddress
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Previously, it'd execute the module setup through a multisend, even if there was one transaction. I added a condition that it only does so if we need more than one setup transaction.

})
console.log('\nInit Code Created.')

// Get Safe Address Counterfactually.
const senderAddress = await getAccountAddress({
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Potential improvement: both getAccountInitCode and getAccountAddress compute the initializer, which is error-prone. If you mistakenly pass different data to one of them, they won't match.

@mmv08 mmv08 force-pushed the 4337-gas-metering-pimlico branch from 8df23d5 to 1d7119d Compare May 28, 2024 14:04
@mmv08 mmv08 force-pushed the 4337-gas-metering-pimlico branch from 1d7119d to ab423c9 Compare May 28, 2024 14:08
@mmv08 mmv08 marked this pull request as ready for review May 28, 2024 14:08
@mmv08 mmv08 requested a review from a team as a code owner May 28, 2024 14:08
@mmv08 mmv08 requested review from nlordell, akshay-ap and mmv08 and removed request for a team May 28, 2024 14:08
@@ -46,6 +45,9 @@ GELATO_ERC721_TOKEN_CONTRACT = "0xf13eca34092D27cbF91cD377eFB261704C687a05"
# Safe Values
SAFE_VERSION = "1.4.1"

# Verbose Logging
VERBOSE = "True" # Set to "True" for verbose logging.
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
VERBOSE = "True" # Set to "True" for verbose logging.
VERBOSE = "true" # Set to "True" for verbose logging.

@mmv08 mmv08 force-pushed the 4337-gas-metering-pimlico branch from df233e0 to 5a3f39d Compare June 3, 2024 14:00
@@ -10,14 +10,14 @@ NOTE: If you run a paymaster analysis twice or more without changing the salt fo

## Gas Usage Results

| | **With 4337?** | **Account Creation** | **Account Creation + Native Transfer** | **Native Transfer** | **Account Creation + ERC20 Transfer** | **ERC20 Transfer** | **Account Creation + ERC721 Minting** | **ERC721 Minting** |
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should we have a column specifying the Entrypoint version instead of in the name?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think the name is better because it is reusable for detailed runs and provides information about the entrypoint used. If we add a column and remove it from the name, then we'll have an open question about where to add it in the detailed breakdown

@@ -33,17 +33,17 @@ NOTE: If you run a paymaster analysis twice or more without changing the salt fo
| Account Creation + ERC721 Minting | 543411 | 511739 | 321204 | 307459 | 15069 | 101268 | 46150 | 43373 |
| ERC721 Minting | 231619 | 206939 | NA | NA | 20558 | 103281 | 48150 | 45373 |

### Pimlico (MATIC - Gas Policy)
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should we specify this is based on EntryPoint v0.7?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I copied all the names to match 1:1

@mmv08 mmv08 force-pushed the 4337-gas-metering-pimlico branch from 00798bd to f92f382 Compare June 4, 2024 09:54
@mmv08 mmv08 merged commit 53e28a5 into main Jun 4, 2024
6 checks passed
@mmv08 mmv08 deleted the 4337-gas-metering-pimlico branch June 4, 2024 11:40
@github-actions github-actions bot locked and limited conversation to collaborators Jun 4, 2024
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Update 4337-gas-metering/pimlico ERC20 Paymaster to use v0.7 EntryPoint
4 participants