@pimlico/mock-paymaster 0.0.2 → 0.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (58) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/_cjs/constants.js +61 -0
  3. package/_cjs/constants.js.map +1 -0
  4. package/_cjs/helpers/abi.js +728 -727
  5. package/_cjs/helpers/abi.js.map +1 -1
  6. package/_cjs/helpers/erc20-utils.js +15 -14
  7. package/_cjs/helpers/erc20-utils.js.map +1 -1
  8. package/_cjs/helpers/schema.js +39 -6
  9. package/_cjs/helpers/schema.js.map +1 -1
  10. package/_cjs/helpers/utils.js +29 -7
  11. package/_cjs/helpers/utils.js.map +1 -1
  12. package/_cjs/index.js +13 -12
  13. package/_cjs/index.js.map +1 -1
  14. package/_cjs/relay.js +92 -100
  15. package/_cjs/relay.js.map +1 -1
  16. package/_cjs/singletonPaymasters.js +161 -207
  17. package/_cjs/singletonPaymasters.js.map +1 -1
  18. package/_esm/constants.js +55 -0
  19. package/_esm/constants.js.map +1 -0
  20. package/_esm/helpers/abi.js +727 -726
  21. package/_esm/helpers/abi.js.map +1 -1
  22. package/_esm/helpers/erc20-utils.js +14 -13
  23. package/_esm/helpers/erc20-utils.js.map +1 -1
  24. package/_esm/helpers/schema.js +39 -6
  25. package/_esm/helpers/schema.js.map +1 -1
  26. package/_esm/helpers/utils.js +29 -8
  27. package/_esm/helpers/utils.js.map +1 -1
  28. package/_esm/index.js +15 -14
  29. package/_esm/index.js.map +1 -1
  30. package/_esm/relay.js +98 -103
  31. package/_esm/relay.js.map +1 -1
  32. package/_esm/singletonPaymasters.js +171 -213
  33. package/_esm/singletonPaymasters.js.map +1 -1
  34. package/_types/constants.d.ts +18 -0
  35. package/_types/constants.d.ts.map +1 -0
  36. package/_types/helpers/abi.d.ts +917 -435
  37. package/_types/helpers/abi.d.ts.map +1 -1
  38. package/_types/helpers/erc20-utils.d.ts +1 -1
  39. package/_types/helpers/erc20-utils.d.ts.map +1 -1
  40. package/_types/helpers/schema.d.ts +1716 -68
  41. package/_types/helpers/schema.d.ts.map +1 -1
  42. package/_types/helpers/utils.d.ts +3 -2
  43. package/_types/helpers/utils.d.ts.map +1 -1
  44. package/_types/index.d.ts +1 -0
  45. package/_types/index.d.ts.map +1 -1
  46. package/_types/relay.d.ts +38 -27
  47. package/_types/relay.d.ts.map +1 -1
  48. package/_types/singletonPaymasters.d.ts +25 -93259
  49. package/_types/singletonPaymasters.d.ts.map +1 -1
  50. package/constants.ts +84 -0
  51. package/helpers/abi.ts +728 -726
  52. package/helpers/erc20-utils.ts +16 -15
  53. package/helpers/schema.ts +41 -6
  54. package/helpers/utils.ts +38 -13
  55. package/index.ts +16 -28
  56. package/package.json +4 -4
  57. package/relay.ts +164 -192
  58. package/singletonPaymasters.ts +218 -280
@@ -1,49 +1,53 @@
1
- import { http, concat, createPublicClient, encodePacked, getContract, getContractAddress, getCreate2Address, pad, parseEther, slice, toBytes } from "viem";
1
+ import { concat, encodePacked, getContract, parseEther, toBytes } from "viem";
2
2
  import { toPackedUserOperation } from "viem/account-abstraction";
3
- import { foundry } from "viem/chains";
4
- import { SINGLETON_PAYMASTER_V06_ABI, SINGLETON_PAYMASTER_V07_ABI } from "./helpers/abi.js";
5
- import { getPublicClient } from "./helpers/utils.js";
6
- const DETERMINISTIC_DEPLOYER = "0x4e59b44847b379578588920ca78fbf26c0b4956c";
7
- const EXCHANGE_RATE = 30000000n;
8
- const POST_OP_GAS_OVERHEAD = 100000n;
9
- export const getDummyPaymasterData = (isV6, paymaster, paymasterMode) => {
3
+ import { constants, getSingletonPaymaster06Address, getSingletonPaymaster06InitCode, getSingletonPaymaster07Address, getSingletonPaymaster07InitCode, getSingletonPaymaster08Address, getSingletonPaymaster08InitCode } from "./constants.js";
4
+ import { singletonPaymaster06Abi, singletonPaymaster07Abi, singletonPaymaster08Abi } from "./helpers/abi.js";
5
+ export const getDummyPaymasterData = ({ is06, paymaster, paymasterMode }) => {
10
6
  let encodedDummyData;
11
7
  const validUntil = 0;
12
8
  const validAfter = 0;
9
+ const paymasterValidationGasLimit = 1n;
13
10
  const mode = paymasterMode.mode === "verifying" ? 0 : 1;
11
+ const allowAllBundlers = true;
12
+ const modeAndAllowBundlers = (mode << 1) | (allowAllBundlers ? 1 : 0);
14
13
  if (paymasterMode.mode === "verifying") {
15
14
  encodedDummyData = encodePacked([
16
- "uint8", // mode
15
+ "uint8", // mode and allowAllBundler
17
16
  "uint48", // validUntil
18
17
  "uint48", // validAfter
19
18
  "bytes" // signature
20
19
  ], [
21
- mode,
20
+ modeAndAllowBundlers,
22
21
  validUntil,
23
22
  validAfter,
24
- "0xcd91f19f0f19ce862d7bec7b7d9b95457145afc6f639c28fd0360f488937bfa41e6eedcd3a46054fd95fcd0e3ef6b0bc0a615c4d975eef55c8a3517257904d5b1c"
23
+ constants.dummySignature
25
24
  ]);
26
25
  }
27
26
  else {
28
27
  encodedDummyData = encodePacked([
29
- "uint8", // mode
28
+ "uint8", // combined byte (mode and allowAllBundlers)
29
+ "uint8", // constantFeePresent and recipientPresent and preFundPresent (1 byte) - 0000{preFundPresent bit}{recipientPresent bit}{constantFeePresent bit}
30
30
  "uint48", // validUntil
31
31
  "uint48", // validAfter
32
- "address", // token
33
- "uint128", // postOpGasOverhead
32
+ "address", // token address
33
+ "uint128", // postOpGas
34
34
  "uint256", // exchangeRate
35
- "bytes" // signature
35
+ "uint128", // paymasterValidationGasLimit
36
+ "address" // treasury
36
37
  ], [
37
- mode,
38
+ modeAndAllowBundlers,
39
+ 0,
38
40
  validUntil,
39
41
  validAfter,
40
42
  paymasterMode.token,
41
- POST_OP_GAS_OVERHEAD,
42
- EXCHANGE_RATE,
43
- "0xcd91f19f0f19ce862d7bec7b7d9b95457145afc6f639c28fd0360f488937bfa41e6eedcd3a46054fd95fcd0e3ef6b0bc0a615c4d975eef55c8a3517257904d5b1c"
43
+ constants.postOpGasOverhead,
44
+ constants.exchangeRate,
45
+ paymasterValidationGasLimit,
46
+ constants.treasury
44
47
  ]);
48
+ encodedDummyData = encodePacked(["bytes", "bytes"], [encodedDummyData, constants.dummySignature]);
45
49
  }
46
- if (isV6) {
50
+ if (is06) {
47
51
  return {
48
52
  paymasterAndData: concat([paymaster, encodedDummyData])
49
53
  };
@@ -53,211 +57,165 @@ export const getDummyPaymasterData = (isV6, paymaster, paymasterMode) => {
53
57
  paymasterData: encodedDummyData
54
58
  };
55
59
  };
56
- // Creates the call that deploys the SingletonPaymaster v0.7
57
- const SINGLETON_PAYMASTER_V07_CALL = (owner) => concat([
58
- "0x0000000000000000000000000000000000000000000000000000000000000000",
59
- "0x610160604052600060a052600160c052605060e052600c6101005260346101205260146101405234801561003257600080fd5b50604051612634380380612634833981016040819052610051916101aa565b828282808383806001600160a01b03811661008657604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b61008f81610128565b50506001600160a01b031660805260005b81518110156100fa5760018060008484815181106100c0576100c061029d565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790556001016100a0565b5050600280546001600160a01b0319166001600160a01b039390931692909217909155506102b39350505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80516001600160a01b038116811461018f57600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b6000806000606084860312156101bf57600080fd5b6101c884610178565b92506101d660208501610178565b60408501519092506001600160401b038111156101f257600080fd5b8401601f8101861361020357600080fd5b80516001600160401b0381111561021c5761021c610194565b604051600582901b90603f8201601f191681016001600160401b038111828210171561024a5761024a610194565b60405291825260208184018101929081018984111561026857600080fd5b6020850194505b8385101561028e5761028085610178565b81526020948501940161026f565b50809450505050509250925092565b634e487b7160e01b600052603260045260246000fd5b60805160a05160c05160e0516101005161012051610140516122b36103816000396000505060008181610c020152610dc7015260008181610665015261140801526000818161069901526115a4015260008181610c2e01528181610d0401528181610fb201526112a601526000818161063401528181610c5f01528181610cc50152818161110401526111e7015260008181610327015281816104370152818161058c01528181610700015281816107cd01528181610856015281816109090152610b6201526122b36000f3fe6080604052600436106101445760003560e01c80637c627b21116100c0578063c399ec8811610074578063eb12d61e11610059578063eb12d61e1461039b578063f0f44260146103bb578063f2fde38b146103db57600080fd5b8063c399ec881461037e578063d0e30db01461039357600080fd5b8063b0d691fe116100a5578063b0d691fe14610315578063bb9fe6bf14610349578063c23a5cea1461035e57600080fd5b80637c627b21146102ca5780638da5cb5b146102ea57600080fd5b80635525dcfb1161011757806363b241aa116100fc57806363b241aa14610255578063715018a614610275578063736c0d5b1461028a57600080fd5b80635525dcfb146101d557806361d027b31461020357600080fd5b80630396cb60146101495780630e316ab71461015e578063205c28781461017e57806352b7512c1461019e575b600080fd5b61015c610157366004611ba1565b6103fb565b005b34801561016a57600080fd5b5061015c610179366004611c00565b6104ad565b34801561018a57600080fd5b5061015c610199366004611c1d565b610538565b3480156101aa57600080fd5b506101be6101b9366004611c62565b6105d0565b6040516101cc929190611cb0565b60405180910390f35b3480156101e157600080fd5b506101f56101f0366004611d23565b6105f3565b6040519081526020016101cc565b34801561020f57600080fd5b506002546102309073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101cc565b34801561026157600080fd5b506101f5610270366004611d55565b610630565b34801561028157600080fd5b5061015c6106c6565b34801561029657600080fd5b506102ba6102a5366004611c00565b60016020526000908152604090205460ff1681565b60405190151581526020016101cc565b3480156102d657600080fd5b5061015c6102e5366004611dab565b6106da565b3480156102f657600080fd5b5060005473ffffffffffffffffffffffffffffffffffffffff16610230565b34801561032157600080fd5b506102307f000000000000000000000000000000000000000000000000000000000000000081565b34801561035557600080fd5b5061015c6106f6565b34801561036a57600080fd5b5061015c610379366004611c00565b610780565b34801561038a57600080fd5b506101f5610825565b61015c6108db565b3480156103a757600080fd5b5061015c6103b6366004611c00565b610963565b3480156103c757600080fd5b5061015c6103d6366004611c00565b6109eb565b3480156103e757600080fd5b5061015c6103f6366004611c00565b610a8e565b610403610af7565b6040517f0396cb6000000000000000000000000000000000000000000000000000000000815263ffffffff821660048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690630396cb609034906024016000604051808303818588803b15801561049157600080fd5b505af11580156104a5573d6000803e3d6000fd5b505050505050565b6104b5610af7565b73ffffffffffffffffffffffffffffffffffffffff811660008181526001602090815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905590519182527f3525e22824a8a7df2c9a6029941c824cf95b6447f1e13d5128fd3826d35afe8b91015b60405180910390a150565b610540610af7565b6040517f205c287800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8381166004830152602482018390527f0000000000000000000000000000000000000000000000000000000000000000169063205c287890604401600060405180830381600087803b15801561049157600080fd5b606060006105dc610b4a565b6105e7858585610be9565b91509150935093915050565b6000670de0b6b3a7640000826106098587611e77565b6106139088611e8e565b61061d9190611e77565b6106279190611ea1565b95945050505050565b60007f000000000000000000000000000000000000000000000000000000000000000060ff168360ff16036106935761068c827f000000000000000000000000000000000000000000000000000000000000000060ff16610d50565b90506106c0565b61068c827f000000000000000000000000000000000000000000000000000000000000000060ff16610d50565b92915050565b6106ce610af7565b6106d86000610ecd565b565b6106e2610b4a565b6106ef8585858585610f42565b5050505050565b6106fe610af7565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663bb9fe6bf6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561076657600080fd5b505af115801561077a573d6000803e3d6000fd5b50505050565b610788610af7565b6040517fc23a5cea00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063c23a5cea90602401600060405180830381600087803b15801561081157600080fd5b505af11580156106ef573d6000803e3d6000fd5b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa1580156108b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108d69190611edc565b905090565b6040517fb760faf90000000000000000000000000000000000000000000000000000000081523060048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063b760faf99034906024016000604051808303818588803b15801561081157600080fd5b61096b610af7565b73ffffffffffffffffffffffffffffffffffffffff811660008181526001602081815260409283902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690921790915590519182527f47d1c22a25bb3a5d4e481b9b1e6944c2eade3181a0a20b495ed61d35b5323f24910161052d565b6109f3610af7565b6002546040805173ffffffffffffffffffffffffffffffffffffffff928316815291831660208301527f4ab5be82436d353e61ca18726e984e561f5c1cc7c6d38b29d2553c790434705a910160405180910390a1600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b610a96610af7565b73ffffffffffffffffffffffffffffffffffffffff8116610aeb576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b610af481610ecd565b50565b60005473ffffffffffffffffffffffffffffffffffffffff1633146106d8576040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152602401610ae2565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146106d8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f53656e646572206e6f7420456e747279506f696e7400000000000000000000006044820152606401610ae2565b60606000803681610c26610c0060e08a018a611ef5565b7f000000000000000000000000000000000000000000000000000000000000000061103e565b9250925092507f000000000000000000000000000000000000000000000000000000000000000060ff168360ff1614158015610c8857507f000000000000000000000000000000000000000000000000000000000000000060ff168360ff1614155b15610cbf576040517f654a4f2900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606060007f000000000000000000000000000000000000000000000000000000000000000060ff168560ff1603610d0257610cfc8a85858c6110de565b90925090505b7f000000000000000000000000000000000000000000000000000000000000000060ff168560ff1603610d4157610d3b8a85858c61128b565b90925090505b90999098509650505050505050565b60008083356020850135608086013560a087013560c0880135610d7660408a018a611ef5565b604051610d84929190611f61565b604051908190039020610d9a60608b018b611ef5565b604051610da8929190611f61565b604051908190039020610dbe60e08c018c611ef5565b600090610deb8d7f0000000000000000000000000000000000000000000000000000000000000000611e8e565b92610df893929190611f71565b604051610e06929190611f61565b6040805191829003822073ffffffffffffffffffffffffffffffffffffffff90991660208301528101969096526060860194909452608085019290925260a084015260c083015260e082015261010081019190915261012001604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181528282528051602091820120908301819052469183019190915230606083015291506080016040516020818303038152906040528051906020012091505092915050565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000806000806000610f54898961134d565b5050945094509450945094506000610f8088846fffffffffffffffffffffffffffffffff1689876105f3565b600254909150610faa908690889073ffffffffffffffffffffffffffffffffffffffff16846113a2565b6040805160ff7f000000000000000000000000000000000000000000000000000000000000000016815273ffffffffffffffffffffffffffffffffffffffff8781166020830152918101839052606081018690529087169083907f7a270f29ae17e8e2304ff1245deb50c3b6206bca82928d904f3e284d35c5ffd29060800160405180910390a35050505050505050505050565b6000368161104d846001611e8e565b851015611086576040517fcc32193e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000868587611096826001611e8e565b926110a393929190611f71565b6110ac91611f9b565b60f81c905036600088886110c1896001611e8e565b6110cc928290611f71565b939a9099509297509195505050505050565b606060008060003660006110f289896113ff565b9350935093509350600061115c6111297f00000000000000000000000000000000000000000000000000000000000000008d610630565b7f19457468657265756d205369676e6564204d6573736167653a0a3332000000006000908152601c91909152603c902090565b905060006111a08285858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061150a92505050565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604081205491925060ff909116906111db82158989611534565b90508d356040805160ff7f0000000000000000000000000000000000000000000000000000000000000000168152600060208201819052918101829052606081019190915273ffffffffffffffffffffffffffffffffffffffff91909116908c907f7a270f29ae17e8e2304ff1245deb50c3b6206bca82928d904f3e284d35c5ffd29060800160405180910390a36040805160208101909152600081529e909d509b505050505050505050505050565b606060008061129a868661156c565b905060006112cb6111297f00000000000000000000000000000000000000000000000000000000000000008a610630565b905060006112dd828460a0015161150a565b73ffffffffffffffffffffffffffffffffffffffff8116600090815260016020908152604082205486519187015193945060ff169261131e91841591611534565b9050600061133b8c8760600151886080015189604001518d61181e565b9c919b50909950505050505050505050565b600080808080808080611362898b018b612021565b9050806000015181602001518260400151836060015184608001518560a001518660c0015197509750975097509750975097505092959891949750929550565b60405181606052826040528360601b602c526f23b872dd000000000000000000000000600c52602060006064601c6000895af13d1560016000511417166113f157637939f4246000526004601cfd5b600060605260405250505050565b600080368160ff7f000000000000000000000000000000000000000000000000000000000000000016851015611461576040517ff96ce32900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000611470600682888a611f71565b611479916120e3565b60d01c9050600061148e600c6006898b611f71565b611497916120e3565b60d01c90503660006114ac89600c818d611f71565b9092509050604081148015906114c3575060418114155b156114fa576040517ff95eeeac00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9299919850965090945092505050565b60008060008061151a8686611952565b92509250925061152a828261199f565b5090949350505050565b600060d08265ffffffffffff16901b60a08465ffffffffffff16901b8561155c57600061155f565b60015b60ff161717949350505050565b6040805160c0810182526000808252602082018190529181018290526060808201839052608082019290925260a081019190915260ff7f0000000000000000000000000000000000000000000000000000000000000000168210156115fd576040517ff96ce32900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061160c6006828587611f71565b611615916120e3565b60d01c9050600061162a600c60068688611f71565b611633916120e3565b60d01c905060006116486020600c8789611f71565b61165191612148565b60601c9050600061166660306020888a611f71565b61166f916121ad565b60801c9050600061168460506030898b611f71565b61168d91612212565b905036600061169f896050818d611f71565b909250905073ffffffffffffffffffffffffffffffffffffffff85166116f1576040517f33c1dac900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8260000361172b576040517f5b33c69600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040811480159061173d575060418114155b15611774576040517ff95eeeac00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006040518060c001604052808965ffffffffffff1681526020018865ffffffffffff168152602001866fffffffffffffffffffffffffffffffff1681526020018773ffffffffffffffffffffffffffffffffffffffff16815260200185815260200184848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050509152509b9a5050505050505050505050565b6040805160e081019091526060908061183a6020890189611c00565b73ffffffffffffffffffffffffffffffffffffffff1681526020018673ffffffffffffffffffffffffffffffffffffffff168152602001858152602001846fffffffffffffffffffffffffffffffff1681526020018381526020016000815260200160008152506040516020016119389190600060e08201905073ffffffffffffffffffffffffffffffffffffffff835116825273ffffffffffffffffffffffffffffffffffffffff6020840151166020830152604083015160408301526fffffffffffffffffffffffffffffffff60608401511660608301526080830151608083015260a083015160a083015260c083015160c083015292915050565b604051602081830303815290604052905095945050505050565b6000806000835160410361198c5760208401516040850151606086015160001a61197e88828585611aa7565b955095509550505050611998565b50508151600091506002905b9250925092565b60008260038111156119b3576119b361224e565b036119bc575050565b60018260038111156119d0576119d061224e565b03611a07576040517ff645eedf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002826003811115611a1b57611a1b61224e565b03611a55576040517ffce698f700000000000000000000000000000000000000000000000000000000815260048101829052602401610ae2565b6003826003811115611a6957611a6961224e565b03611aa3576040517fd78bce0c00000000000000000000000000000000000000000000000000000000815260048101829052602401610ae2565b5050565b600080807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0841115611ae25750600091506003905082611b97565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015611b36573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff8116611b8d57506000925060019150829050611b97565b9250600091508190505b9450945094915050565b600060208284031215611bb357600080fd5b813563ffffffff81168114611bc757600080fd5b9392505050565b73ffffffffffffffffffffffffffffffffffffffff81168114610af457600080fd5b8035611bfb81611bce565b919050565b600060208284031215611c1257600080fd5b8135611bc781611bce565b60008060408385031215611c3057600080fd5b8235611c3b81611bce565b946020939093013593505050565b60006101208284031215611c5c57600080fd5b50919050565b600080600060608486031215611c7757600080fd5b833567ffffffffffffffff811115611c8e57600080fd5b611c9a86828701611c49565b9660208601359650604090950135949350505050565b604081526000835180604084015260005b81811015611cde5760208187018101516060868401015201611cc1565b5060006060828501015260607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168401019150508260208301529392505050565b60008060008060808587031215611d3957600080fd5b5050823594602084013594506040840135936060013592509050565b60008060408385031215611d6857600080fd5b823560ff81168114611d7957600080fd5b9150602083013567ffffffffffffffff811115611d9557600080fd5b611da185828601611c49565b9150509250929050565b600080600080600060808688031215611dc357600080fd5b853560038110611dd257600080fd5b9450602086013567ffffffffffffffff811115611dee57600080fd5b8601601f81018813611dff57600080fd5b803567ffffffffffffffff811115611e1657600080fd5b886020828401011115611e2857600080fd5b959860209190910197509495604081013595606090910135945092505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820281158282048414176106c0576106c0611e48565b808201808211156106c0576106c0611e48565b600082611ed7577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b600060208284031215611eee57600080fd5b5051919050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611f2a57600080fd5b83018035915067ffffffffffffffff821115611f4557600080fd5b602001915036819003821315611f5a57600080fd5b9250929050565b8183823760009101908152919050565b60008085851115611f8157600080fd5b83861115611f8e57600080fd5b5050820193919092039150565b80357fff000000000000000000000000000000000000000000000000000000000000008116906001841015611ffa577fff00000000000000000000000000000000000000000000000000000000000000808560010360031b1b82161691505b5092915050565b80356fffffffffffffffffffffffffffffffff81168114611bfb57600080fd5b600060e082840312801561203457600080fd5b6000905060405160e0810181811067ffffffffffffffff82111715612080577f4e487b710000000000000000000000000000000000000000000000000000000083526041600452602483fd5b60405261208c84611bf0565b815261209a60208501611bf0565b6020820152604084810135908201526120b560608501612001565b60608201526080848101359082015260a0808501359082015260c09384013593810193909352509092915050565b80357fffffffffffff00000000000000000000000000000000000000000000000000008116906006841015611ffa577fffffffffffff0000000000000000000000000000000000000000000000000000808560060360031b1b82161691505092915050565b80357fffffffffffffffffffffffffffffffffffffffff0000000000000000000000008116906014841015611ffa577fffffffffffffffffffffffffffffffffffffffff000000000000000000000000808560140360031b1b82161691505092915050565b80357fffffffffffffffffffffffffffffffff000000000000000000000000000000008116906010841015611ffa577fffffffffffffffffffffffffffffffff00000000000000000000000000000000808560100360031b1b82161691505092915050565b803560208310156106c0577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602084900360031b1b1692915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fdfea2646970667358221220d4b47765504d1aee07971ecb33f299cd13465059fbfeb55e32bdeb75ec9e629264736f6c634300081a00330000000000000000000000000000000071727de22e5e9d8baf0edac6f37da032",
60
- pad(owner),
61
- "0x00000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000001", // couldn't get encodeAbiParameters with type address[] to work
62
- pad(owner)
63
- ]);
64
- // Creates the call that deploys the SingletonPaymaster v0.6
65
- const SINGLETON_PAYMASTER_V06_CALL = (owner) => concat([
66
- "0x0000000000000000000000000000000000000000000000000000000000000000",
67
- "0x610140604052600060a052600160c052605060e052600c6101005260146101205234801561002c57600080fd5b5060405161270838038061270883398101604081905261004b916101a4565b828282808383806001600160a01b03811661008057604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b61008981610122565b50506001600160a01b031660805260005b81518110156100f45760018060008484815181106100ba576100ba610297565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905560010161009a565b5050600280546001600160a01b0319166001600160a01b039390931692909217909155506102ad9350505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80516001600160a01b038116811461018957600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b6000806000606084860312156101b957600080fd5b6101c284610172565b92506101d060208501610172565b60408501519092506001600160401b038111156101ec57600080fd5b8401601f810186136101fd57600080fd5b80516001600160401b038111156102165761021661018e565b604051600582901b90603f8201601f191681016001600160401b03811182821017156102445761024461018e565b60405291825260208184018101929081018984111561026257600080fd5b6020850194505b838510156102885761027a85610172565b815260209485019401610269565b50809450505050509250925092565b634e487b7160e01b600052603260045260246000fd5b60805160a05160c05160e051610100516101205161239561037360003960008181610e980152610fc70152600081816108da01526114f501526000818161090e0152611691015260008181610d7801528181610ff3015281816110c901526114450152600081816108a9015281816110240152818161108a0152818161129b01526113870152600081816102d501528181610433015281816105880152818161064101528181610708015281816107980152818161084b0152610bd201526123956000f3fe6080604052600436106101445760003560e01c8063b0d691fe116100c0578063dd16f84711610074578063f0f4426011610059578063f0f4426014610389578063f2fde38b146103a9578063f465c77e146103c957600080fd5b8063dd16f84714610349578063eb12d61e1461036957600080fd5b8063c23a5cea116100a5578063c23a5cea1461030c578063c399ec881461032c578063d0e30db01461034157600080fd5b8063b0d691fe146102c3578063bb9fe6bf146102f757600080fd5b806361d027b311610117578063736c0d5b116100fc578063736c0d5b146102385780638da5cb5b14610278578063a9a23409146102a357600080fd5b806361d027b3146101d1578063715018a61461022357600080fd5b80630396cb60146101495780630e316ab71461015e578063205c28781461017e5780635525dcfb1461019e575b600080fd5b61015c610157366004611c95565b6103f7565b005b34801561016a57600080fd5b5061015c610179366004611ced565b6104a9565b34801561018a57600080fd5b5061015c610199366004611d0a565b610534565b3480156101aa57600080fd5b506101be6101b9366004611d36565b6105cc565b6040519081526020015b60405180910390f35b3480156101dd57600080fd5b506002546101fe9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101c8565b34801561022f57600080fd5b5061015c610609565b34801561024457600080fd5b50610268610253366004611ced565b60016020526000908152604090205460ff1681565b60405190151581526020016101c8565b34801561028457600080fd5b5060005473ffffffffffffffffffffffffffffffffffffffff166101fe565b3480156102af57600080fd5b5061015c6102be366004611d68565b61061d565b3480156102cf57600080fd5b506101fe7f000000000000000000000000000000000000000000000000000000000000000081565b34801561030357600080fd5b5061015c610637565b34801561031857600080fd5b5061015c610327366004611ced565b6106bb565b34801561033857600080fd5b506101be610767565b61015c61081d565b34801561035557600080fd5b506101be610364366004611e13565b6108a5565b34801561037557600080fd5b5061015c610384366004611ced565b61093b565b34801561039557600080fd5b5061015c6103a4366004611ced565b6109c3565b3480156103b557600080fd5b5061015c6103c4366004611ced565b610a66565b3480156103d557600080fd5b506103e96103e4366004611e69565b610acf565b6040516101c8929190611eb7565b6103ff610af2565b6040517f0396cb6000000000000000000000000000000000000000000000000000000000815263ffffffff821660048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690630396cb609034906024016000604051808303818588803b15801561048d57600080fd5b505af11580156104a1573d6000803e3d6000fd5b505050505050565b6104b1610af2565b73ffffffffffffffffffffffffffffffffffffffff811660008181526001602090815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905590519182527f3525e22824a8a7df2c9a6029941c824cf95b6447f1e13d5128fd3826d35afe8b91015b60405180910390a150565b61053c610af2565b6040517f205c287800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8381166004830152602482018390527f0000000000000000000000000000000000000000000000000000000000000000169063205c287890604401600060405180830381600087803b15801561048d57600080fd5b6000670de0b6b3a7640000826105e28587611f59565b6105ec9088611f70565b6105f69190611f59565b6106009190611f83565b95945050505050565b610611610af2565b61061b6000610b45565b565b610625610bba565b61063184848484610c59565b50505050565b61063f610af2565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663bb9fe6bf6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156106a757600080fd5b505af1158015610631573d6000803e3d6000fd5b6106c3610af2565b6040517fc23a5cea00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063c23a5cea90602401600060405180830381600087803b15801561074c57600080fd5b505af1158015610760573d6000803e3d6000fd5b5050505050565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa1580156107f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108189190611fbe565b905090565b6040517fb760faf90000000000000000000000000000000000000000000000000000000081523060048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063b760faf99034906024016000604051808303818588803b15801561074c57600080fd5b60007f000000000000000000000000000000000000000000000000000000000000000060ff168360ff160361090857610901827f000000000000000000000000000000000000000000000000000000000000000060ff16610e08565b9050610935565b610901827f000000000000000000000000000000000000000000000000000000000000000060ff16610e08565b92915050565b610943610af2565b73ffffffffffffffffffffffffffffffffffffffff811660008181526001602081815260409283902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690921790915590519182527f47d1c22a25bb3a5d4e481b9b1e6944c2eade3181a0a20b495ed61d35b5323f249101610529565b6109cb610af2565b6002546040805173ffffffffffffffffffffffffffffffffffffffff928316815291831660208301527f4ab5be82436d353e61ca18726e984e561f5c1cc7c6d38b29d2553c790434705a910160405180910390a1600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b610a6e610af2565b73ffffffffffffffffffffffffffffffffffffffff8116610ac3576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b610acc81610b45565b50565b60606000610adb610bba565b610ae6858585610fad565b91509150935093915050565b60005473ffffffffffffffffffffffffffffffffffffffff16331461061b576040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152602401610aba565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461061b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f53656e646572206e6f7420456e747279506f696e7400000000000000000000006044820152606401610aba565b6000806000806000806000610c6e8a8a611115565b96509650965096509650965096506000818303610c8c575081610ca2565b610c9f83610c9a4885611f70565b61116a565b90505b6000610cc28a876fffffffffffffffffffffffffffffffff16848a6105cc565b905060028d6002811115610cd857610cd8611fd7565b14610df957600254600090610d07908a908c9073ffffffffffffffffffffffffffffffffffffffff1685611182565b905080610d70576040517f1db0f4fb00000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5452414e534645525f46524f4d5f4641494c45440000000000000000000000006044820152606401610aba565b6040805160ff7f000000000000000000000000000000000000000000000000000000000000000016815273ffffffffffffffffffffffffffffffffffffffff8b81166020830152918101849052606081018a9052908b169087907f7a270f29ae17e8e2304ff1245deb50c3b6206bca82928d904f3e284d35c5ffd29060800160405180910390a3505b50505050505050505050505050565b600080610e186020850185611ced565b6020850135608086013560a087013560c088013560e08901356101008a0135610e4460608c018c612006565b604051610e52929190612072565b60405180910390208b8060400190610e6a9190612006565b604051610e78929190612072565b604051908190039020610e8f6101208e018e612006565b600090610ebc8f7f0000000000000000000000000000000000000000000000000000000000000000611f70565b92610ec993929190612082565b604051610ed7929190612072565b6040805191829003822073ffffffffffffffffffffffffffffffffffffffff909b1660208301528101989098526060880196909652608087019490945260a086019290925260c085015260e084015261010083015261012082015261014081019190915261016001604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181528282528051602091820120908301819052469183019190915230606083015291506080016040516020818303038152906040528051906020012091505092915050565b60606000803681610feb610fc56101208a018a612006565b7f00000000000000000000000000000000000000000000000000000000000000006111d5565b9250925092507f000000000000000000000000000000000000000000000000000000000000000060ff168360ff161415801561104d57507f000000000000000000000000000000000000000000000000000000000000000060ff168360ff1614155b15611084576040517f654a4f2900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606060007f000000000000000000000000000000000000000000000000000000000000000060ff168560ff16036110c7576110c18a85858c611275565b90925090505b7f000000000000000000000000000000000000000000000000000000000000000060ff168560ff1603611106576111008a85858c61142a565b90925090505b90999098509650505050505050565b60008080808080808061112a898b018b6120cc565b9050806000015181602001518260400151836060015184608001518560a001518660c0015197509750975097509750975097505092959891949750929550565b6000818310611179578161117b565b825b9392505050565b600060405182606052836040528460601b602c526f23b872dd000000000000000000000000600c52602060006064601c60008a5af13d156001600051141716915060006060528060405250949350505050565b600036816111e4846001611f70565b85101561121d576040517fcc32193e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600086858761122d826001611f70565b9261123a93929190612082565b6112439161218e565b60f81c90503660008888611258896001611f70565b611263928290612082565b939a9099509297509195505050505050565b6060600080600036600061128989896114ec565b935093509350935060006112f36112c07f00000000000000000000000000000000000000000000000000000000000000008d6108a5565b7f19457468657265756d205369676e6564204d6573736167653a0a3332000000006000908152601c91909152603c902090565b905060006113378285858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506115f792505050565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604081205491925060ff9091169061137282158989611621565b905061138160208f018f611ced565b604080517f000000000000000000000000000000000000000000000000000000000000000060ff1681526000602082018190528183018190526060820152905173ffffffffffffffffffffffffffffffffffffffff92909216918d917f7a270f29ae17e8e2304ff1245deb50c3b6206bca82928d904f3e284d35c5ffd2919081900360800190a36040805160208101909152600081529e909d509b505050505050505050505050565b60606000806114398686611659565b9050600061146a6112c07f00000000000000000000000000000000000000000000000000000000000000008a6108a5565b9050600061147c828460a001516115f7565b73ffffffffffffffffffffffffffffffffffffffff8116600090815260016020908152604082205486519187015193945060ff16926114bd91841591611621565b905060006114da8c8760600151886080015189604001518d61190b565b9c919b50909950505050505050505050565b600080368160ff7f00000000000000000000000000000000000000000000000000000000000000001685101561154e576040517ff96ce32900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061155d600682888a612082565b611566916121f4565b60d01c9050600061157b600c6006898b612082565b611584916121f4565b60d01c905036600061159989600c818d612082565b9092509050604081148015906115b0575060418114155b156115e7576040517ff95eeeac00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9299919850965090945092505050565b6000806000806116078686611a46565b9250925092506116178282611a93565b5090949350505050565b600060d08265ffffffffffff16901b60a08465ffffffffffff16901b8561164957600061164c565b60015b60ff161717949350505050565b6040805160c0810182526000808252602082018190529181018290526060808201839052608082019290925260a081019190915260ff7f0000000000000000000000000000000000000000000000000000000000000000168210156116ea576040517ff96ce32900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006116f96006828587612082565b611702916121f4565b60d01c90506000611717600c60068688612082565b611720916121f4565b60d01c905060006117356020600c8789612082565b61173e91612259565b60601c9050600061175360306020888a612082565b61175c916122be565b60801c9050600061177160506030898b612082565b61177a91612323565b905036600061178c896050818d612082565b909250905073ffffffffffffffffffffffffffffffffffffffff85166117de576040517f33c1dac900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82600003611818576040517f5b33c69600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040811480159061182a575060418114155b15611861576040517ff95eeeac00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006040518060c001604052808965ffffffffffff1681526020018865ffffffffffff168152602001866fffffffffffffffffffffffffffffffff1681526020018773ffffffffffffffffffffffffffffffffffffffff16815260200185815260200184848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050509152509b9a5050505050505050505050565b6040805160e08101909152606090806119276020890189611ced565b73ffffffffffffffffffffffffffffffffffffffff1681526020018673ffffffffffffffffffffffffffffffffffffffff168152602001858152602001846fffffffffffffffffffffffffffffffff1681526020018381526020018760e001358152602001876101000135815250604051602001611a2c9190600060e08201905073ffffffffffffffffffffffffffffffffffffffff835116825273ffffffffffffffffffffffffffffffffffffffff6020840151166020830152604083015160408301526fffffffffffffffffffffffffffffffff60608401511660608301526080830151608083015260a083015160a083015260c083015160c083015292915050565b604051602081830303815290604052905095945050505050565b60008060008351604103611a805760208401516040850151606086015160001a611a7288828585611b9b565b955095509550505050611a8c565b50508151600091506002905b9250925092565b6000826003811115611aa757611aa7611fd7565b03611ab0575050565b6001826003811115611ac457611ac4611fd7565b03611afb576040517ff645eedf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002826003811115611b0f57611b0f611fd7565b03611b49576040517ffce698f700000000000000000000000000000000000000000000000000000000815260048101829052602401610aba565b6003826003811115611b5d57611b5d611fd7565b03611b97576040517fd78bce0c00000000000000000000000000000000000000000000000000000000815260048101829052602401610aba565b5050565b600080807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0841115611bd65750600091506003905082611c8b565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015611c2a573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff8116611c8157506000925060019150829050611c8b565b9250600091508190505b9450945094915050565b600060208284031215611ca757600080fd5b813563ffffffff8116811461117b57600080fd5b73ffffffffffffffffffffffffffffffffffffffff81168114610acc57600080fd5b8035611ce881611cbb565b919050565b600060208284031215611cff57600080fd5b813561117b81611cbb565b60008060408385031215611d1d57600080fd5b8235611d2881611cbb565b946020939093013593505050565b60008060008060808587031215611d4c57600080fd5b5050823594602084013594506040840135936060013592509050565b60008060008060608587031215611d7e57600080fd5b843560038110611d8d57600080fd5b9350602085013567ffffffffffffffff811115611da957600080fd5b8501601f81018713611dba57600080fd5b803567ffffffffffffffff811115611dd157600080fd5b876020828401011115611de357600080fd5b949760209190910196509394604001359392505050565b60006101608284031215611e0d57600080fd5b50919050565b60008060408385031215611e2657600080fd5b823560ff81168114611e3757600080fd5b9150602083013567ffffffffffffffff811115611e5357600080fd5b611e5f85828601611dfa565b9150509250929050565b600080600060608486031215611e7e57600080fd5b833567ffffffffffffffff811115611e9557600080fd5b611ea186828701611dfa565b9660208601359650604090950135949350505050565b604081526000835180604084015260005b81811015611ee55760208187018101516060868401015201611ec8565b5060006060828501015260607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168401019150508260208301529392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808202811582820484141761093557610935611f2a565b8082018082111561093557610935611f2a565b600082611fb9577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b600060208284031215611fd057600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261203b57600080fd5b83018035915067ffffffffffffffff82111561205657600080fd5b60200191503681900382131561206b57600080fd5b9250929050565b8183823760009101908152919050565b6000808585111561209257600080fd5b8386111561209f57600080fd5b5050820193919092039150565b80356fffffffffffffffffffffffffffffffff81168114611ce857600080fd5b600060e08284031280156120df57600080fd5b6000905060405160e0810181811067ffffffffffffffff8211171561212b577f4e487b710000000000000000000000000000000000000000000000000000000083526041600452602483fd5b60405261213784611cdd565b815261214560208501611cdd565b602082015260408481013590820152612160606085016120ac565b60608201526080848101359082015260a0808501359082015260c09384013593810193909352509092915050565b80357fff0000000000000000000000000000000000000000000000000000000000000081169060018410156121ed577fff00000000000000000000000000000000000000000000000000000000000000808560010360031b1b82161691505b5092915050565b80357fffffffffffff000000000000000000000000000000000000000000000000000081169060068410156121ed577fffffffffffff0000000000000000000000000000000000000000000000000000808560060360031b1b82161691505092915050565b80357fffffffffffffffffffffffffffffffffffffffff00000000000000000000000081169060148410156121ed577fffffffffffffffffffffffffffffffffffffffff000000000000000000000000808560140360031b1b82161691505092915050565b80357fffffffffffffffffffffffffffffffff0000000000000000000000000000000081169060108410156121ed577fffffffffffffffffffffffffffffffff00000000000000000000000000000000808560100360031b1b82161691505092915050565b80356020831015610935577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602084900360031b1b169291505056fea2646970667358221220b198dacaa988aafcb9441005f2a899880d533689da493c4dc98e301d7822f21a64736f6c634300081a00330000000000000000000000005ff137d4b0fdcd49dca30c7cf57e578a026d2789",
68
- pad(owner),
69
- "0x00000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000001", // couldn't get encodeAbiParameters with type address[] to work
70
- pad(owner)
71
- ]);
72
- const SINGLETON_PAYMASTER_V06_ADDRESS = (owner) => getCreate2Address({
73
- from: DETERMINISTIC_DEPLOYER,
74
- salt: slice(SINGLETON_PAYMASTER_V06_CALL(owner), 0, 32),
75
- bytecode: slice(SINGLETON_PAYMASTER_V06_CALL(owner), 32)
76
- });
77
- const SINGLETON_PAYMASTER_V07_ADDRESS = (owner) => getCreate2Address({
78
- from: DETERMINISTIC_DEPLOYER,
79
- salt: slice(SINGLETON_PAYMASTER_V07_CALL(owner), 0, 32),
80
- bytecode: slice(SINGLETON_PAYMASTER_V07_CALL(owner), 32)
81
- });
82
- export class SingletonPaymasterV07 {
83
- constructor(walletClient, anvilRpc) {
84
- Object.defineProperty(this, "anvilRpc", {
85
- enumerable: true,
86
- configurable: true,
87
- writable: true,
88
- value: void 0
89
- });
90
- Object.defineProperty(this, "walletClient", {
91
- enumerable: true,
92
- configurable: true,
93
- writable: true,
94
- value: void 0
95
- });
96
- Object.defineProperty(this, "singletonPaymaster", {
97
- enumerable: true,
98
- configurable: true,
99
- writable: true,
100
- value: void 0
101
- });
102
- this.walletClient = walletClient;
103
- this.singletonPaymaster = getContract({
104
- address: SINGLETON_PAYMASTER_V07_ADDRESS(walletClient.account.address),
105
- abi: SINGLETON_PAYMASTER_V07_ABI,
106
- client: {
107
- wallet: walletClient,
108
- public: getPublicClient(anvilRpc)
109
- }
110
- });
111
- this.anvilRpc = anvilRpc;
112
- }
113
- getDummyPaymasterData(paymasterMode) {
114
- return getDummyPaymasterData(false, this.singletonPaymaster.address, paymasterMode);
60
+ export const getSignedPaymasterData = async ({ publicClient, signer, userOp, paymaster, paymasterMode }) => {
61
+ let paymasterData;
62
+ const validAfter = 0;
63
+ const validUntil = Math.floor(Date.now() / 1000) + constants.validForSeconds;
64
+ const mode = paymasterMode.mode === "verifying" ? 0 : 1;
65
+ const allowAllBundlers = true;
66
+ const modeAndAllowBundlers = (mode << 1) | (allowAllBundlers ? 1 : 0);
67
+ if (paymasterMode.mode === "verifying") {
68
+ paymasterData = encodePacked([
69
+ "uint8", // mode and allowAllBundler
70
+ "uint48", // validUntil
71
+ "uint48" // validAfter
72
+ ], [modeAndAllowBundlers, validUntil, validAfter]);
115
73
  }
116
- async encodePaymasterData(op, paymasterMode) {
117
- const validAfter = 0;
118
- const validUntil = Math.floor(Date.now() / 1000) + 60_000;
119
- const mode = paymasterMode.mode === "verifying" ? 0 : 1;
120
- op.paymaster = this.singletonPaymaster.address;
121
- op.paymasterData = encodePacked(["uint8", "uint48", "uint48"], [mode, validUntil, validAfter]);
122
- // if ERC-20 mode, add extra ERC-20 fields
123
- if (paymasterMode.mode === "erc20") {
124
- op.paymasterData = encodePacked(["bytes", "address", "uint128", "uint256"], [
125
- op.paymasterData,
126
- paymasterMode.token,
127
- POST_OP_GAS_OVERHEAD,
128
- EXCHANGE_RATE
129
- ]);
130
- }
131
- const hash = await this.singletonPaymaster.read.getHash([
132
- mode,
133
- toPackedUserOperation(op)
74
+ else {
75
+ const paymasterValidationGasLimit = 1n;
76
+ const constantFeePresent = false;
77
+ const recipientPresent = false;
78
+ const preFundPresent = false;
79
+ const constantFeeAndRecipientAndPreFund = ((preFundPresent ? 1 : 0) << 2) |
80
+ ((recipientPresent ? 1 : 0) << 1) |
81
+ (constantFeePresent ? 1 : 0);
82
+ paymasterData = encodePacked([
83
+ "uint8", // combined byte (mode and allowAllBundlers)
84
+ "uint8", // constantFeePresent and recipientPresent and preFundPresent (1 byte) - 0000{preFundPresent bit}{recipientPresent bit}{constantFeePresent bit}
85
+ "uint48", // validUntil
86
+ "uint48", // validAfter
87
+ "address", // token address
88
+ "uint128", // postOpGas
89
+ "uint256", // exchangeRate
90
+ "uint128", // paymasterValidationGasLimit
91
+ "address" // treasury
92
+ ], [
93
+ modeAndAllowBundlers,
94
+ constantFeeAndRecipientAndPreFund,
95
+ validUntil,
96
+ validAfter,
97
+ paymasterMode.token,
98
+ constants.postOpGasOverhead,
99
+ constants.exchangeRate,
100
+ paymasterValidationGasLimit,
101
+ constants.treasury
134
102
  ]);
135
- const sig = await this.walletClient.signMessage({
136
- message: { raw: toBytes(hash) }
137
- });
138
- return {
139
- paymaster: this.singletonPaymaster.address,
140
- paymasterData: encodePacked(["bytes", "bytes"], [op.paymasterData, sig])
141
- };
142
103
  }
143
- async setup() {
144
- const data = SINGLETON_PAYMASTER_V07_CALL(this.walletClient.account.address);
145
- const publicClient = createPublicClient({
146
- transport: http(this.anvilRpc),
147
- chain: foundry
148
- });
149
- await this.walletClient
150
- .sendTransaction({
151
- to: DETERMINISTIC_DEPLOYER,
152
- data
153
- })
154
- .then((hash) => publicClient.waitForTransactionReceipt({ hash }));
155
- const address = getContractAddress({
156
- opcode: "CREATE2",
157
- from: DETERMINISTIC_DEPLOYER,
158
- salt: slice(data, 0, 32),
159
- bytecode: slice(data, 32)
160
- });
104
+ if ("initCode" in userOp && "paymasterAndData" in userOp) {
161
105
  const singletonPaymaster = getContract({
162
- address,
163
- abi: SINGLETON_PAYMASTER_V07_ABI,
164
- client: this.walletClient
165
- });
166
- await singletonPaymaster.write.deposit({
167
- value: parseEther("50")
168
- });
169
- return singletonPaymaster;
170
- }
171
- }
172
- export class SingletonPaymasterV06 {
173
- constructor(walletClient, anvilRpc) {
174
- Object.defineProperty(this, "walletClient", {
175
- enumerable: true,
176
- configurable: true,
177
- writable: true,
178
- value: void 0
179
- });
180
- Object.defineProperty(this, "singletonPaymaster", {
181
- enumerable: true,
182
- configurable: true,
183
- writable: true,
184
- value: void 0
106
+ address: paymaster,
107
+ abi: singletonPaymaster06Abi,
108
+ client: publicClient
185
109
  });
186
- Object.defineProperty(this, "anvilRpc", {
187
- enumerable: true,
188
- configurable: true,
189
- writable: true,
190
- value: void 0
191
- });
192
- this.walletClient = walletClient;
193
- this.singletonPaymaster = getContract({
194
- address: SINGLETON_PAYMASTER_V06_ADDRESS(walletClient.account.address),
195
- abi: SINGLETON_PAYMASTER_V06_ABI,
196
- client: {
197
- wallet: this.walletClient,
198
- public: getPublicClient(anvilRpc)
199
- }
200
- });
201
- this.anvilRpc = anvilRpc;
202
- }
203
- getDummyPaymasterData(paymasterMode) {
204
- return getDummyPaymasterData(true, this.singletonPaymaster.address, paymasterMode);
205
- }
206
- async encodePaymasterData(op, paymasterMode) {
207
- const validAfter = 0;
208
- const validUntil = Math.floor(Date.now() / 1000) + 60_000;
209
- const mode = paymasterMode.mode === "verifying" ? 0 : 1;
210
- op.paymasterAndData = encodePacked(["address", "uint8", "uint48", "uint48"], [this.singletonPaymaster.address, mode, validUntil, validAfter]);
211
- if (paymasterMode.mode === "erc20") {
212
- op.paymasterAndData = encodePacked(["bytes", "address", "uint128", "uint256"], [
213
- op.paymasterAndData,
214
- paymasterMode.token,
215
- POST_OP_GAS_OVERHEAD,
216
- EXCHANGE_RATE
217
- ]);
218
- }
219
- const hash = await this.singletonPaymaster.read.getHash([
110
+ const hash = await singletonPaymaster.read.getHash([
220
111
  mode,
221
112
  {
222
- ...op,
223
- initCode: op.initCode || "0x",
224
- paymasterAndData: op.paymasterAndData || "0x"
113
+ sender: userOp.sender,
114
+ nonce: userOp.nonce,
115
+ initCode: userOp.initCode || "0x",
116
+ callData: userOp.callData,
117
+ callGasLimit: userOp.callGasLimit,
118
+ verificationGasLimit: userOp.verificationGasLimit,
119
+ preVerificationGas: userOp.preVerificationGas,
120
+ maxFeePerGas: userOp.maxFeePerGas,
121
+ maxPriorityFeePerGas: userOp.maxPriorityFeePerGas,
122
+ paymasterAndData: concat([paymaster, paymasterData]),
123
+ signature: userOp.signature
225
124
  }
226
125
  ]);
227
- const sig = await this.walletClient.signMessage({
228
- message: { raw: hash }
126
+ const sig = await signer.signMessage({
127
+ message: { raw: toBytes(hash) }
229
128
  });
230
129
  return {
231
- paymasterAndData: encodePacked(["bytes", "bytes"], [op.paymasterAndData, sig])
130
+ paymasterAndData: concat([paymaster, paymasterData, sig])
232
131
  };
233
132
  }
234
- async setup() {
235
- const data = SINGLETON_PAYMASTER_V06_CALL(this.walletClient.account.address);
236
- const publicClient = createPublicClient({
237
- transport: http(this.anvilRpc),
238
- chain: foundry
239
- });
240
- await this.walletClient
241
- .sendTransaction({
242
- to: DETERMINISTIC_DEPLOYER,
243
- data
133
+ // userOperation is v07
134
+ const singletonPaymaster = getContract({
135
+ address: paymaster,
136
+ abi: singletonPaymaster07Abi,
137
+ client: publicClient
138
+ });
139
+ const hash = await singletonPaymaster.read.getHash([
140
+ mode,
141
+ // paymaster signs over paymasterData so we add paymaster + paymasterData
142
+ toPackedUserOperation({
143
+ ...userOp,
144
+ paymaster,
145
+ paymasterData
244
146
  })
245
- .then((hash) => publicClient.waitForTransactionReceipt({ hash }));
246
- const address = getContractAddress({
247
- opcode: "CREATE2",
248
- from: DETERMINISTIC_DEPLOYER,
249
- salt: slice(data, 0, 32),
250
- bytecode: slice(data, 32)
251
- });
252
- const singletonPaymaster = getContract({
253
- address,
254
- abi: SINGLETON_PAYMASTER_V06_ABI,
255
- client: this.walletClient
256
- });
257
- await singletonPaymaster.write.deposit({
258
- value: parseEther("50")
259
- });
260
- return singletonPaymaster;
261
- }
262
- }
147
+ ]);
148
+ const sig = await signer.signMessage({
149
+ message: { raw: toBytes(hash) }
150
+ });
151
+ paymasterData = encodePacked(["bytes", "bytes"], [paymasterData, sig]);
152
+ return {
153
+ paymaster,
154
+ paymasterData
155
+ };
156
+ };
157
+ export const deployPaymasters = async ({ walletClient, publicClient }) => {
158
+ const owner = walletClient.account.address;
159
+ let nonce = await publicClient.getTransactionCount({
160
+ address: walletClient.account.address
161
+ });
162
+ // Deploy singleton paymaster 06.
163
+ await walletClient.sendTransaction({
164
+ to: constants.deterministicDeployer,
165
+ data: concat([
166
+ constants.create2Salt,
167
+ getSingletonPaymaster06InitCode(walletClient.account.address)
168
+ ]),
169
+ nonce: nonce++
170
+ });
171
+ // Deploy singleton paymaster 07.
172
+ await walletClient.sendTransaction({
173
+ to: constants.deterministicDeployer,
174
+ data: concat([
175
+ constants.create2Salt,
176
+ getSingletonPaymaster07InitCode(walletClient.account.address)
177
+ ]),
178
+ nonce: nonce++
179
+ });
180
+ // Deploy singleton paymaster 08.
181
+ await walletClient.sendTransaction({
182
+ to: constants.deterministicDeployer,
183
+ data: concat([
184
+ constants.create2Salt,
185
+ getSingletonPaymaster08InitCode(walletClient.account.address)
186
+ ]),
187
+ nonce: nonce++
188
+ });
189
+ // Initialize contract instances.
190
+ const [singletonPaymaster06, singletonPaymaster07, singletonPaymaster08] = [
191
+ getContract({
192
+ address: getSingletonPaymaster06Address(owner),
193
+ abi: singletonPaymaster06Abi,
194
+ client: walletClient
195
+ }),
196
+ getContract({
197
+ address: getSingletonPaymaster07Address(owner),
198
+ abi: singletonPaymaster07Abi,
199
+ client: walletClient
200
+ }),
201
+ getContract({
202
+ address: getSingletonPaymaster08Address(owner),
203
+ abi: singletonPaymaster08Abi,
204
+ client: walletClient
205
+ })
206
+ ];
207
+ // Fund the paymasters.
208
+ await singletonPaymaster06.write.deposit({
209
+ value: parseEther("50"),
210
+ nonce: nonce++
211
+ });
212
+ await singletonPaymaster07.write.deposit({
213
+ value: parseEther("50"),
214
+ nonce: nonce++
215
+ });
216
+ await singletonPaymaster08.write.deposit({
217
+ value: parseEther("50"),
218
+ nonce: nonce++
219
+ });
220
+ };
263
221
  //# sourceMappingURL=singletonPaymasters.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"singletonPaymasters.js","sourceRoot":"","sources":["../singletonPaymasters.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"singletonPaymasters.js","sourceRoot":"","sources":["../singletonPaymasters.ts"],"names":[],"mappings":"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"}