From 47cbc13a3524ff5d537812a54f4e862e8b5df4a2 Mon Sep 17 00:00:00 2001 From: Pierre Hay Date: Mon, 13 Jan 2025 17:42:36 +0100 Subject: [PATCH] fix: make it work --- demo/constants.ts | 24 +++++++++---------- demo/index.ts | 42 ++++++++++++++++++++------------- demo/paymaster.ts | 1 - src/mocks/CrossL2Prover.sol | 1 + src/mocks/MockCrossL2Prover.sol | 2 +- src/paymasters/CABPaymaster.sol | 8 ++++--- test/CABPaymater.t.sol | 42 ++++++++++++++++----------------- 7 files changed, 65 insertions(+), 55 deletions(-) create mode 100644 src/mocks/CrossL2Prover.sol diff --git a/demo/constants.ts b/demo/constants.ts index db2cad0..1c7ba57 100644 --- a/demo/constants.ts +++ b/demo/constants.ts @@ -29,33 +29,33 @@ export type OpenfortContracts = { export const openfortContracts: Record = { base: { - paymaster: "0x3cB057Fd3BE519cB50788b8b282732edBF533DC6", - invoiceManager: "0x666eB01fBba3F3D5f7e5d8e72c6Ea57B6AF09798", - vaultManager: "0xEA7aa047c78c5583a2896e18E127A5C2E59C0887", + paymaster: "0x9B1D4356014e36d95b0b00251770d641ea02979f", + invoiceManager: "0xBC11EE7d2F3D74F5A6a5aDD3457908870BFcF37b", + vaultManager: "0x047F60FE3243d1C54740AD11109f95E9ba927c6D", vaults: { "0xfF3311cd15aB091B00421B23BcB60df02EFD8db7": - "0x21c14066F5D62Cbec3c42e2c718Ce82E72fCBF87", + "0x5502B2Da288Be13F48eE46E3261690Ed4a1e71f9", "0xa9a0179e045cF39C5F4d914583dc3648DfBDeeF1": - "0x742d0fc742B89267411c5AC24a5fdA3CA264eeC2", + "0x0230a6641Fb11e760f2f7A263F6Fe2a9b0476b44", }, }, optimism: { - paymaster: "0x48c2DE32E983cD077486c218a2f6A0119E1446cF", - invoiceManager: "0x2C4511a143e9C583B5Ae5c4206A4C9D3882F35Bf", - vaultManager: "0x1EEb54d847BC170a4F1e12312f9b5D74EeCF1018", + paymaster: "0x511985306FDDE63cda68F5675EC296AAd826b5b8", + invoiceManager: "0x9dDB3Af574307DFEfE9d69D09A0BBcF55b9e2D34", + vaultManager: "0xd454fbc6Df5D9d91Fa02e60fD46CDD2208d0b33b", vaults: { "0x2522F4Fc9aF2E1954a3D13f7a5B2683A00a4543A": - "0xeFb7144787FFFCEF306bC99cEBF42AB08d5609c8", + "0xaF45f62eB99AD2091440336ca714B21F06525978", "0xd926e338e047aF920F59390fF98A3114CCDcab4a": - "0x34BC35Ff16C1ab0e5123D5De58eC8d1353B09968", + "0x5b306B655B84Bc3201e6f9577d0CDcc7C2e9Ebfb", }, }, }; // TODO: refactor this to only refer to openfortContracts export const vaultA = { - base: "0x21c14066F5D62Cbec3c42e2c718Ce82E72fCBF87", - optimism: "0xeFb7144787FFFCEF306bC99cEBF42AB08d5609c8", + base: "0x5502B2Da288Be13F48eE46E3261690Ed4a1e71f9", + optimism: "0xaF45f62eB99AD2091440336ca714B21F06525978", }; export const tokenA = { diff --git a/demo/index.ts b/demo/index.ts index 21d155c..dfd096a 100644 --- a/demo/index.ts +++ b/demo/index.ts @@ -93,20 +93,20 @@ program const walletClient = walletClients[chain]; const publicClient = publicClients[chain]; - // Get the current nonce for the account - // const nonce = await publicClient.getTransactionCount({ - // address: walletClient.account?.address as Address, - // }); - // const approveHash = await walletClient.writeContract({ - // address: token, - // abi: parseAbi(["function approve(address, uint256)"]), - // functionName: "approve", - // args: [vaultManager, amount], - // chain: walletClient.chain, - // account: walletClient.account || null, - // nonce, - // }); - //console.log(`Approve transaction sent: ${approveHash}`); + const nonce = await publicClient.getTransactionCount({ + address: walletClient.account?.address as Address, + }); + + const approveHash = await walletClient.writeContract({ + address: token, + abi: parseAbi(["function approve(address, uint256)"]), + functionName: "approve", + args: [vaultManager, amount], + chain: walletClient.chain, + account: walletClient.account || null, + nonce, + }); + console.log(`Approve transaction sent: ${approveHash}`); const hash = await walletClient.writeContract({ address: vaultManager, @@ -117,6 +117,7 @@ program args: [recipient, token, vault, amount, false], chain: walletClient.chain, account: walletClient.account || null, + nonce: nonce + 1, }); console.log(`Deposit transaction sent: ${hash}`); }); @@ -167,6 +168,7 @@ program const accountAddress = await account.getAddress(); console.log(`Account Address: ${accountAddress}`); const paymaster = openfortContracts[chain].paymaster; + console.log(`Paymaster: ${paymaster}`); const unsignedUserOp = await bundlerClient.prepareUserOperation({ account: account, calls: [ @@ -193,6 +195,7 @@ program postVerificationGasLimit: 1000000n, preVerificationGas: 1000000n, callGasLimit: 1000000n, + paymasterPostOpGasLimit: 1000000n, /** Concatenation of {@link UserOperation`verificationGasLimit`} (16 bytes) and {@link UserOperation`callGasLimit`} (16 bytes) */ accountGasLimits: `0x${1000000n.toString(16)}${1000000n.toString(16)}` as Hex, @@ -313,6 +316,9 @@ program throw new Error(`Unsupported chain: ${chain}`); } const invoiceWithRepayTokens = await invoiceManager.readInvoice(invoiceId); + + console.log("invoiceWithRepayTokens"); + console.log(invoiceWithRepayTokens); const walletClient = walletClients[chain]; // we can hard code logIndex since it is the index of the log within the tx @@ -353,14 +359,16 @@ program if (!isValidChain(chain)) { throw new Error(`Unsupported chain: ${chain}`); } - const paymaster = openfortContracts[chain].paymaster; + const invoiceManager = openfortContracts[chain].invoiceManager; const publicClient = publicClients[chain]; const currentBlock = await getBlockNumber(chain); const logs = await publicClient.getLogs({ - address: paymaster, - event: parseAbi(["event InvoiceCreated(bytes32 indexed invoiceId)"])[0], + address: invoiceManager, + event: parseAbi([ + "event InvoiceCreated(bytes32 indexed invoiceId, address indexed account, address indexed paymaster)", + ])[0], fromBlock: currentBlock - 10000n, toBlock: currentBlock, }); diff --git a/demo/paymaster.ts b/demo/paymaster.ts index 33d4508..3aadded 100644 --- a/demo/paymaster.ts +++ b/demo/paymaster.ts @@ -4,7 +4,6 @@ import { GetPaymasterDataReturnType, GetPaymasterStubDataParameters, GetPaymasterStubDataReturnType, - UserOperation, PackedUserOperation, } from "viem/account-abstraction"; import { diff --git a/src/mocks/CrossL2Prover.sol b/src/mocks/CrossL2Prover.sol new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/src/mocks/CrossL2Prover.sol @@ -0,0 +1 @@ + diff --git a/src/mocks/MockCrossL2Prover.sol b/src/mocks/MockCrossL2Prover.sol index 4d45dc8..e4904d1 100644 --- a/src/mocks/MockCrossL2Prover.sol +++ b/src/mocks/MockCrossL2Prover.sol @@ -11,7 +11,7 @@ contract MockCrossL2Prover is ICrossL2Prover { returns (string memory chainId, address emittingContract, bytes[] memory topics, bytes memory unindexedData) { (chainId, emittingContract, topics, unindexedData) = abi.decode( - hex"00000000000000000000000000000000000000000000000000000000000000800000000000000000000000003cb057fd3be519cb50788b8b282732edbf533dc600000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000001a0000000000000000000000000000000000000000000000000000000000000000538343533320000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000020ab6994bba319b437692f1dbbe4d689382f25c4cfa9a291959e0af1ca5cd9e13f0000000000000000000000000000000000000000000000000000000000000020886f7a98cfb9c6f2b6a6b4be00a89b75c0a846bf1c9b265b17ba4f9452acbc640000000000000000000000000000000000000000000000000000000000000000", + hex"00000000000000000000000000000000000000000000000000000000000000800000000000000000000000003cb057fd3be519cb50788b8b282732edbf533dc600000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000001a00000000000000000000000000000000000000000000000000000000000000005383435333200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000205243d6c5479d93025de9e138a29c467868f762bb78591e96299fb3f437afcc04000000000000000000000000000000000000000000000000000000000000002028a285ad4af66f8b864972de6e0ea1095667e73ade7db3d93151c0c2660229050000000000000000000000000000000000000000000000000000000000000000", (string, address, bytes[], bytes) ); } diff --git a/src/paymasters/CABPaymaster.sol b/src/paymasters/CABPaymaster.sol index 806b4ae..eeb7c8b 100644 --- a/src/paymasters/CABPaymaster.sol +++ b/src/paymasters/CABPaymaster.sol @@ -14,6 +14,7 @@ import {IPaymasterVerifier} from "../interfaces/IPaymasterVerifier.sol"; import {ICrossL2Prover} from "@vibc-core-smart-contracts/contracts/interfaces/ICrossL2Prover.sol"; import {LibBytes} from "@solady/utils/LibBytes.sol"; + /** * @title CABPaymaster * @dev A paymaster used in chain abstracted balance to sponsor the gas fee and tokens cross-chain. @@ -61,8 +62,9 @@ contract CABPaymaster is IPaymasterVerifier, BasePaymaster { (uint256 logIndex, bytes memory proof) = abi.decode(_proof, (uint256, bytes)); (,, bytes[] memory topics,) = crossL2Prover.validateEvent(logIndex, proof); - return LibBytes.eq( - abi.encode(topics[0], topics[1]), abi.encode(IInvoiceManager.InvoiceCreated.selector, invoiceId) + return ( + LibBytes.eqs(topics[0], IInvoiceManager.InvoiceCreated.selector) && + LibBytes.eqs(topics[1], invoiceId) ); } @@ -106,7 +108,7 @@ contract CABPaymaster is IPaymasterVerifier, BasePaymaster { invoice.nonce, invoice.paymaster, invoice.sponsorChainId, - keccak256(abi.encode(invoice.repayTokenInfos)) // vault, amount, chain + keccak256(abi.encode(invoice.repayTokenInfos)) ) ); } diff --git a/test/CABPaymater.t.sol b/test/CABPaymater.t.sol index 4a5d3d2..ca1c973 100644 --- a/test/CABPaymater.t.sol +++ b/test/CABPaymater.t.sol @@ -246,25 +246,25 @@ contract CABPaymasterTest is Test { assertEq(computedInvoiceId, expectedInvoiceId, "Invoice ID computation mismatch"); } - // function testVerifyInvoice() public { - // bytes32 invoiceId = 0x886f7a98cfb9c6f2b6a6b4be00a89b75c0a846bf1c9b265b17ba4f9452acbc64; - // bytes memory proof = - // hex"00000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000001640d989b47d36256c8eede18985987a9ef59ec16dd048d2bae790d9be4b37fa6b8e00000000000000000000000000000000000000000000000000000000012c438e000000000000000000000000000000000000000000000000000000000000208000000000000000000000000000000000000000000000000000000000000020c00000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000009acb6000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000f6000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000e400000000000000000000000000000000000000000000000000000000000000ea00000000000000000000000000000000000000000000000000000000000000ee0000000000000000000000000000000000000000000000000000000000000000f00000000000000000000000000000000000000000000000000000000000001e000000000000000000000000000000000000000000000000000000000000002a00000000000000000000000000000000000000000000000000000000000000360000000000000000000000000000000000000000000000000000000000000042000000000000000000000000000000000000000000000000000000000000004e000000000000000000000000000000000000000000000000000000000000005a00000000000000000000000000000000000000000000000000000000000000660000000000000000000000000000000000000000000000000000000000000072000000000000000000000000000000000000000000000000000000000000007e000000000000000000000000000000000000000000000000000000000000008c000000000000000000000000000000000000000000000000000000000000009800000000000000000000000000000000000000000000000000000000000000a400000000000000000000000000000000000000000000000000000000000000b200000000000000000000000000000000000000000000000000000000000000be00000000000000000000000000000000000000000000000000000000000000cc0000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000270204e8b24d208e12943afa90bac3aab0fb591950efc79664d99aad187011d4d8b8ae03ba2d5c20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000270406e8b24d20e9caf6a4dd6892bb71fb43531df793cf16f2519260fac0ecaf9be16796f4d9c620000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000027060ae8b24d2030daef3fbf15a9e6723034d8b771197eebec09f957f5c17785bca4690409385420000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000027081ae8b24d2056b07448868213f555a6b174af2284f8793869ceeff974904436b9b5eff3cb6220000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000270a28e8b24d20fd78b81a9670e6310f6ed51d832916fd85adf38760af73f420ae96169d990d0f20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000270c44e8b24d20c55d51dfe139f5af2d5ef686c07fbb5bb946787714f51d36d65e52829638e4fe20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000280ec401e8b24d207d7f819dbcab08495eb867e1f47fbb7c6ec07f4005289942a74c0d694880c7aa200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000002810c403e8b24d20a190ba09650015f507b0f939d5c4abc1a99f9f778d7ab60f01503307a5e61a4e20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000712ca04e8b24d200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000212006e25764f54a66f10e09ae1bb6a93cd9d36795915d41aebf649c55545782ab1500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000002814ca0ae8b24d20caa54d2923fbeea7aa0805e9e5b904fb3f00bc229cd246b5b62afd05e3a3a223200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000028168c10e8b24d20f83ecd51829306e433359c65fcde867037d07a9a12e8664d1661765988ee854320000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000718fe2ee8b24d200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000212002b818877f29e4f46c7a64a7ac02d1562400673ee5ef09271dc3e30056e41bbb00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000281a9465e8b24d2057529676445aa1d3f54e424b57412982d773d9fe6e97217a5333dcd93f190cec2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000081c8cad01e8b24d200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000021208de3c5b46bbb8c0d364b7a6d64ac402991aad74d35725349008e18d020b4f1a90000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000820a28f03e8b24d20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002120bc5dea1a3863bf853c6f78bd91e92d416b53d63dcc3a5e9b001cec4e7c5bc1f8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000039636861696e2f38343533322f73746f72656452656365697074732f70726f6f665f6170692f72656365697074526f6f742f3139363738303934000000000000000000000000000000000000000000000000000000000000000000000000000020d989b47d36256c8eede18985987a9ef59ec16dd048d2bae790d9be4b37fa6b8e00000000000000000000000000000000000000000000000000000000000000050002e8b24d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000050000000000000000000000000000000000000000000000000000000000000005400000000000000000000000000000000000000000000000000000000000000580000000000000000000000000000000000000000000000000000000000000000500000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000160000000000000000000000000000000000000000000000000000000000000022000000000000000000000000000000000000000000000000000000000000002e000000000000000000000000000000000000000000000000000000000000003a000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000101000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020292cc35c96848c21c65a6bc632a4691c951cb3725e4ccccb595fd79d833f01ad000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000021019295bc5d601c43b416e419cc8c8fd7fa2635487133e612104cb6833bd5709359000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000002101a19a397ca7a6312793316f4743b8c19c56bcf3cd50aba80b13865a27e40b5034000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000002101163e8925fd6ff7a35a815eb433251fdffef29e09b1249e5d4f0176cb2c1b6fd5000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000001010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000206f0658ab82ea8c13e259f0b12b70fd4cde8d7de60fb95c2927a5cbf4e66d51380000000000000000000000000000000000000000000000000000000000000007706f6c79696263000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020009df1612c8df4422f8f2004ac7a1c14bdc38e016ec9e7118b9b03bc8476d34e0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000003200000000000000000000000000000000000000000000000000000000000000073f871a091634c2456a7d94c10a3bb39b533d47daf5e2ce340641ffc38152b3e68276bb6a0e662e95f085c6c019c89a44791508ecb08d09ae7576d67a57f922c1819bf8d7f808080808080a0ce58d857bac7a7a48c0027004318da0dab51282a433dca9fe9d3bbaffa0d0f4080808080808080800000000000000000000000000000000000000000000000000000000000000000000000000000000000000001f4f901f180a027a41e3e2cf012635b9f52ac964fc3ac418f44707e59713e955506442b5f2aeba00a0a5d077a3f210fd466e728ea4243ac5a9ae76e924230ddcc9b9c5b50438678a06677662dd531b242fa9b330568425282856fceef794a5f2ca65218e799f42d30a05bcd2db7e5ccd0c6635f341f9e22a233f29965cd306ebc93a021e60c616b76ffa0eda9cb9b8bdafda2cacd2b861d7f87408ffa1251e234d84ee61debe2530a711da0acadb233a9e9499ad3b91b93ca2b293f80acd75b82fc6050066a36933fbcb6ffa03a24417d10e7f03c25e385db84ae098201d000a30a3b3465f06fefaa409715bba03f83fda6b6aec77d7e74befd01f957af67b0a9db24df1c68a51202db78e4df6da0cd03d6e03c35351182c6af8e12ebb821ebe063009f10d0dada0644dfb89f7742a049db42aa0452803945c870dc049333769c53ddbd50f582d15e73eb2fe080c769a0bdcdec4f9960eebe76ebe045f7ce9ba71f513f7087d7ba1eb682a147aab6bd3aa0f62805d1294bf940aa7fa28e87472fb4b5633549c902b872f9d6db8340f245a3a02ddb4ed23bcd990fe5c0edd6ed991904d69b6c748187c1941167312961691e5aa0e41e83dd146f7bec0910da01226d299d87680185cd697f1822358d0c2e194d7ca0352491e5502bad59e90f0a11165b19d61ab2f5df18f86258100af9ffb80aea578000000000000000000000000000000000000000000000000000000000000000000000000000000000000006d5f906d220b906ce02f906ca01830cb02db9010000000000000010000000000000000000000000040000010000000000000000000008001000000000008000050000000000000000000000000000020000200000108000000000000000000008000000000041000000200040000000000000000001000000022800000000000800000800000000000000040000010010000000000000000000000000000000000000000000040000000000100400000000008000020000000000000000400000000000002000000000000000000002000004448000000002000000400001000080000000000000000000000000000000000020000010000004000000200000000002000000000080000000000000000000890000f905bff89b94ff3311cd15ab091b00421b23bcb60df02efd8db7f863a08c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925a00000000000000000000000003cb057fd3be519cb50788b8b282732edbf533dc6a0000000000000000000000000d6fe65f290d4ba8446b9efd3badad5a4bdfa98dea000000000000000000000000000000000000000000000000000000000000001f4f838940000000071727de22e5e9d8baf0edac6f37da032e1a0bb47ee3e183a558b1a2ff0874b079f3fc5478b7454eacf2bfc5af2ff5878f97280f89b94ff3311cd15ab091b00421b23bcb60df02efd8db7f863a0ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa00000000000000000000000003cb057fd3be519cb50788b8b282732edbf533dc6a0000000000000000000000000d6fe65f290d4ba8446b9efd3badad5a4bdfa98dea000000000000000000000000000000000000000000000000000000000000001f4f89b94ff3311cd15ab091b00421b23bcb60df02efd8db7f863a08c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925a0000000000000000000000000d6fe65f290d4ba8446b9efd3badad5a4bdfa98dea0000000000000000000000000d129bda7ce0888d7fd66ff46e7577c96984d678fa000000000000000000000000000000000000000000000000000000000000001f4f89b94ff3311cd15ab091b00421b23bcb60df02efd8db7f863a0ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa0000000000000000000000000d6fe65f290d4ba8446b9efd3badad5a4bdfa98dea0000000000000000000000000d129bda7ce0888d7fd66ff46e7577c96984d678fa000000000000000000000000000000000000000000000000000000000000001f4f89c94d129bda7ce0888d7fd66ff46e7577c96984d678ff884a0ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa00000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000d6fe65f290d4ba8446b9efd3badad5a4bdfa98dea0000000000000000000000000000000000000000000000000000000000000002680f85894d129bda7ce0888d7fd66ff46e7577c96984d678fe1a0f8e1a15aba9398e019f0b49df1a4fde98ee17ae345cb5f6b5e2c27f5033e8ce7a00000000000000000000000000000000000000000000000000000000000000026f89b94ff3311cd15ab091b00421b23bcb60df02efd8db7f863a08c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925a00000000000000000000000003cb057fd3be519cb50788b8b282732edbf533dc6a0000000000000000000000000d6fe65f290d4ba8446b9efd3badad5a4bdfa98dea00000000000000000000000000000000000000000000000000000000000000000f85a943cb057fd3be519cb50788b8b282732edbf533dc6f842a0ab6994bba319b437692f1dbbe4d689382f25c4cfa9a291959e0af1ca5cd9e13fa0886f7a98cfb9c6f2b6a6b4be00a89b75c0a846bf1c9b265b17ba4f9452acbc6480f9011d940000000071727de22e5e9d8baf0edac6f37da032f884a049628fd1471006c1482da88028e9ce4dbb080b815c9b0344d39e5a8e6ec1419fa072be8d36280e80a2c91b382858e0f39e9f47f8fc604cdc7f030da7de8637500aa0000000000000000000000000d6fe65f290d4ba8446b9efd3badad5a4bdfa98dea00000000000000000000000003cb057fd3be519cb50788b8b282732edbf533dc6b8800000000000000000000000000000000000000193fd7a5ad1000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000004f028b5b6e5a8000000000000000000000000000000000000000000000000000000000015358500000000000000000000000000000000000000000000000000000000000000000000000000000000000005383435333200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010300000000000000000000000000000000000000000000000000000000000000"; - // IInvoiceManager.RepayTokenInfo[] memory repayTokens = new IInvoiceManager.RepayTokenInfo[](1); - // repayTokens[0] = IInvoiceManager.RepayTokenInfo({ - // vault: IVault(0xeFb7144787FFFCEF306bC99cEBF42AB08d5609c8), - // amount: 500, - // chainId: 11155420 - // }); - // IInvoiceManager.InvoiceWithRepayTokens memory invoice = IInvoiceManager.InvoiceWithRepayTokens({ - // account: 0xd6fe65f290d4BA8446b9EfD3BadAD5A4Bdfa98De, - // nonce: 32007397118551674307018261266432, - // paymaster: 0x3cB057Fd3BE519cB50788b8b282732edBF533DC6, - // sponsorChainId: 84532, - // repayTokenInfos: repayTokens - // }); - - // console.logBytes(abi.encode(invoice)); - // assert(paymaster.verifyInvoice(invoiceId, invoice, proof)); - // } + function testVerifyInvoice() public { + bytes32 invoiceId = 0x28a285ad4af66f8b864972de6e0ea1095667e73ade7db3d93151c0c266022905; + bytes memory proof = + hex"00000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000240000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000001900eb81ebedb4fb2930ce270c47e6ef70555f7f145f2b37efe8d4ab330994dea205000000000000000000000000000000000000000000000000000000000138e5c0000000000000000000000000000000000000000000000000000000000000238000000000000000000000000000000000000000000000000000000000000023c000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000164ef800000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000122000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000001100000000000000000000000000000000000000000000000000000000000000116000000000000000000000000000000000000000000000000000000000000011a000000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000240000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000003c000000000000000000000000000000000000000000000000000000000000004800000000000000000000000000000000000000000000000000000000000000540000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000006c000000000000000000000000000000000000000000000000000000000000007800000000000000000000000000000000000000000000000000000000000000860000000000000000000000000000000000000000000000000000000000000092000000000000000000000000000000000000000000000000000000000000009e00000000000000000000000000000000000000000000000000000000000000aa00000000000000000000000000000000000000000000000000000000000000b600000000000000000000000000000000000000000000000000000000000000c400000000000000000000000000000000000000000000000000000000000000d000000000000000000000000000000000000000000000000000000000000000de00000000000000000000000000000000000000000000000000000000000000ea00000000000000000000000000000000000000000000000000000000000000f80000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000280204ecbbb201201c31955bee31c1c7c4cd83f4347798cb61b8e4e0118a1ce1c24e2f16ac16fc51200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000280408ecbbb20120a897fd0e0ee86368d06d08054f6a1c3799e6655a8f58b2d1e04d5c0f0ef04005200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000028060cecbbb20120098bbe219b9a37a377b25a35ec1053c7ccc70c466543c41f79e9a81ac17e0e0d200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000280814ecbbb201200a2a2220ab8137006bda586d0ef3f0112a1acaea86b70c98b3ffe964040d47ba200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000280a34ecbbb2012079c41d848ab7cd288e50ad4a3dbfb4090127724033e09d1c9ae7c7e13c65b66d200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000280c74ecbbb20120ef2ea5eb213a6bc4b676bbeb16c4272f5c9a45474c62ed889e50607c89e06014200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000290eb401ecbbb20120330ed5cd4a5aaa0246a6ee733171cad67f7f9dcf7bf426bdafedc73edbbed6ae200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000810c202ecbbb201200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000021202606c08a840e3786f7a788219b30a162ce590eafafdcdbf53323f40cbdf744f300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000002912c205ecbbb201207cc1e124860a990723e7a7a7650ec1fdafd4226aba33545844f7095236ca771f2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000002914c208ecbbb2012010393712af8d3938d5335b3ebdfeeb5f978eded0e28ae0b04cbf02c3a06e2c8f2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000002916c20eecbbb20120376b4458d8076fb173c8c955de2a1204dc639ee194e26d155ed78fa32d7142132000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000002918c21aecbbb20120a629b2eebabf9a76d067df9b2e2b71618db02e809398365eb19d16929133f8cf20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000081ab439ecbbb2012000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000212002b818877f29e4f46c7a64a7ac02d1562400673ee5ef09271dc3e30056e41bbb00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000291ca25decbbb20120ec5d35bf1f900de7fad5df1a4c11a6504ecdb7c312b654f7fa009b74326511bf20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000091e9aa501ecbbb2012000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000021208de3c5b46bbb8c0d364b7a6d64ac402991aad74d35725349008e18d020b4f1a900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000002a20a2b203ecbbb2012051a529346b893b23dd3332e75fd5c3843b9a43dbf5bae36cf33a244bd60d4b0a2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000922b08405ecbbb201200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002120074882b42491d46c3fc7c1f09996bac086a87124f3ddf25bf99961eddaaec8b60000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000924c09e09ecbbb201200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002120b6e2584a631247bbb0ae7baa4db9c76e5eddb377a9d1e352f1cedd5be2cd6485000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000039636861696e2f38343533322f73746f72656452656365697074732f70726f6f665f6170692f72656365697074526f6f742f3230353036303438000000000000000000000000000000000000000000000000000000000000000000000000000020eb81ebedb4fb2930ce270c47e6ef70555f7f145f2b37efe8d4ab330994dea20500000000000000000000000000000000000000000000000000000000000000060002ecbbb20100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000050000000000000000000000000000000000000000000000000000000000000005400000000000000000000000000000000000000000000000000000000000000580000000000000000000000000000000000000000000000000000000000000000500000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000160000000000000000000000000000000000000000000000000000000000000022000000000000000000000000000000000000000000000000000000000000002e000000000000000000000000000000000000000000000000000000000000003a0000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000001010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000204c86a00ddfe2387ae8a0f5360e9ec3bb467cb0b5a04c8f88bfa3c2a3edeb16c7000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000021013c8db5e5ac66124a1940c4dbb73a53b5ba5c28f6d066775d60662e12d183097e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000002101c3f1b20d3343919dec28f51c06bc0c485efb3fc4a090e1851635e8c55c15b2aa000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000002101bfc63a3f99095b8076510193b6165a19c1aff8e0c01003976a15a5e1889510170000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000010100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002043d1641a968012e8d8eaa3c123b2e1b359f68a609848731721435f982d4d165d0000000000000000000000000000000000000000000000000000000000000007706f6c79696263000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020a013cbed3e55d4663b2a98db2f990e2a5552dacc906671dcff886cc23b2713fa0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000003200000000000000000000000000000000000000000000000000000000000000073f871a099e0b708db6f890c2e296b5b397aaa872b668ca64894778d97fe9e43111519b8a0f864301ba4b48d1352df9fe1a7d8ed0d1b204626d632b1b4ceb7bd8ac5db7c65808080808080a042d5f8ba7b64da2d841d6094a8a4195ab3b555f7cdb3dccfbe20380307d801c380808080808080800000000000000000000000000000000000000000000000000000000000000000000000000000000000000001f4f901f180a008b7bae679a355c6a38feb106393b16c8a526e0363781a6ab368616a50340a48a0e61151f1be0da2689f137415191d6c64bfac4890a8a81d2e14463d5e36e152d8a05e0cb861865714d13efabdd880bf24f971a973733a86169f8d8d9b9d6280bb2ba00e37e3b46af539bcdd10c1e9b899a1d5b5366865a3656347c786eeaf3e8163b6a08f2c2cd7f608b326c019630a44f03ad62c6fa48702f27b61ad662caad97bb6c8a015aa2b41039003e13864234bb0ac87a4a057dc603712936f7305a463258f174aa0340451f82f52251dbde532bc0693c081800742178e127c42381d6f367d3bd0aea03b9b5546139aecd70a5f2b1ac72872c7e13b7b1e8b398b3e56acdf8407512ccfa042227939280b7218c8a87c2d053592547e5b1ef1de8ca5b67bda61033a2e7de5a06906af43c2866782014fa9c7b0a28dc961c47e57412910bdd1801d7152671907a0254c32a27abcc3a643b54f1959f64ff48f735b90903320d548533138b8adda36a01d79921fa9209576bdf6b1d9762db1ae2c46731f82a92b797e5c37b093cff1f2a0b7e1ee52d932b780f9116e4d23cda2c382fdac7cb871e7afc345c3389cc56607a0729f6df0d6ed8e16cb30450b91cd7103f00cc8448bb0a11109ad9fcbfaa78abda0b264e35352739e06d1e4b79b7b3aab5d20b3a2f0b2fb6c88c655687a20999ba2800000000000000000000000000000000000000000000000000000000000000000000000000000000000000717f9071420b9071002f9070c0183126a66b9010000000000000000000000000000000000000000000000000000000000000000000008000402000000008000050000200000000000000001001000820000200400000000000000000000800008000000000040080000000040000000000000000000000000022800400000000000000800000000000000000000000010000000000000000000000200000800000108000000040080000000100000000000000000220000000000000000400000000000002000000000000000000002000000048000000002000000580001000000000000000000000000000100000000000020000010000000000000200000000004000400000000000000000000000000810000f90601f89b94ff3311cd15ab091b00421b23bcb60df02efd8db7f863a08c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925a00000000000000000000000009b1d4356014e36d95b0b00251770d641ea02979fa0000000000000000000000000ddeba0dd6d8c81e46df16d82f561f3fd2f004ee3a000000000000000000000000000000000000000000000000000000000000001f4f838940000000071727de22e5e9d8baf0edac6f37da032e1a0bb47ee3e183a558b1a2ff0874b079f3fc5478b7454eacf2bfc5af2ff5878f97280f89b94ff3311cd15ab091b00421b23bcb60df02efd8db7f863a0ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa00000000000000000000000009b1d4356014e36d95b0b00251770d641ea02979fa0000000000000000000000000ddeba0dd6d8c81e46df16d82f561f3fd2f004ee3a000000000000000000000000000000000000000000000000000000000000001f4f89b94ff3311cd15ab091b00421b23bcb60df02efd8db7f863a08c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925a0000000000000000000000000ddeba0dd6d8c81e46df16d82f561f3fd2f004ee3a0000000000000000000000000d129bda7ce0888d7fd66ff46e7577c96984d678fa000000000000000000000000000000000000000000000000000000000000001f4f89b94ff3311cd15ab091b00421b23bcb60df02efd8db7f863a0ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa0000000000000000000000000ddeba0dd6d8c81e46df16d82f561f3fd2f004ee3a0000000000000000000000000d129bda7ce0888d7fd66ff46e7577c96984d678fa000000000000000000000000000000000000000000000000000000000000001f4f89c94d129bda7ce0888d7fd66ff46e7577c96984d678ff884a0ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa00000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000ddeba0dd6d8c81e46df16d82f561f3fd2f004ee3a0000000000000000000000000000000000000000000000000000000000000002b80f85894d129bda7ce0888d7fd66ff46e7577c96984d678fe1a0f8e1a15aba9398e019f0b49df1a4fde98ee17ae345cb5f6b5e2c27f5033e8ce7a0000000000000000000000000000000000000000000000000000000000000002bf89b94ff3311cd15ab091b00421b23bcb60df02efd8db7f863a08c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925a00000000000000000000000009b1d4356014e36d95b0b00251770d641ea02979fa0000000000000000000000000ddeba0dd6d8c81e46df16d82f561f3fd2f004ee3a00000000000000000000000000000000000000000000000000000000000000000f89c94bc11ee7d2f3d74f5a6a5add3457908870bfcf37bf884a05243d6c5479d93025de9e138a29c467868f762bb78591e96299fb3f437afcc04a028a285ad4af66f8b864972de6e0ea1095667e73ade7db3d93151c0c266022905a0000000000000000000000000ddeba0dd6d8c81e46df16d82f561f3fd2f004ee3a00000000000000000000000009b1d4356014e36d95b0b00251770d641ea02979f80f9011d940000000071727de22e5e9d8baf0edac6f37da032f884a049628fd1471006c1482da88028e9ce4dbb080b815c9b0344d39e5a8e6ec1419fa058fcda0e20a2e831bcd8ecdf1a09d44c4c33fc3191cdb6d33082111ed70b738ba0000000000000000000000000ddeba0dd6d8c81e46df16d82f561f3fd2f004ee3a00000000000000000000000009b1d4356014e36d95b0b00251770d641ea02979fb8800000000000000000000000000000000000000194602d7821000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000005a83e6ba4ebab000000000000000000000000000000000000000000000000000000000017df790000000000000000000000000000000000000000000000000000000000000000000000000000000005383435333200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010d00000000000000000000000000000000000000000000000000000000000000"; + IInvoiceManager.RepayTokenInfo[] memory repayTokens = new IInvoiceManager.RepayTokenInfo[](1); + repayTokens[0] = IInvoiceManager.RepayTokenInfo({ + vault: IVault(0xaF45f62eB99AD2091440336ca714B21F06525978), + amount: 500, + chainId: 11155420 + }); + IInvoiceManager.InvoiceWithRepayTokens memory invoice = IInvoiceManager.InvoiceWithRepayTokens({ + account: 0xddEbA0DD6D8c81e46Df16d82F561F3fd2f004Ee3, + nonce: 32037943185660244671492037541888, + paymaster: 0x9B1D4356014e36d95b0b00251770d641ea02979f, + sponsorChainId: 84532, + repayTokenInfos: repayTokens + }); + + console.logBytes(abi.encode(invoice)); + assert(paymaster.verifyInvoice(invoiceId, invoice, proof)); + } }