@pimlico/mock-paymaster 0.0.4 → 0.0.6
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.
- package/CHANGELOG.md +12 -0
- package/_cjs/helpers/erc20-utils.js +26 -15
- package/_cjs/helpers/erc20-utils.js.map +1 -1
- package/_cjs/helpers/schema.js +7 -7
- package/_cjs/helpers/schema.js.map +1 -1
- package/_cjs/helpers/utils.js +1 -13
- package/_cjs/helpers/utils.js.map +1 -1
- package/_cjs/index.js +16 -20
- package/_cjs/index.js.map +1 -1
- package/_cjs/relay.js +24 -11
- package/_cjs/relay.js.map +1 -1
- package/_cjs/setup.js +118 -0
- package/_cjs/setup.js.map +1 -0
- package/_cjs/singletonPaymasters.js +1 -61
- package/_cjs/singletonPaymasters.js.map +1 -1
- package/_esm/helpers/erc20-utils.js +28 -13
- package/_esm/helpers/erc20-utils.js.map +1 -1
- package/_esm/helpers/schema.js +7 -7
- package/_esm/helpers/schema.js.map +1 -1
- package/_esm/helpers/utils.js +1 -12
- package/_esm/helpers/utils.js.map +1 -1
- package/_esm/index.js +15 -21
- package/_esm/index.js.map +1 -1
- package/_esm/relay.js +33 -16
- package/_esm/relay.js.map +1 -1
- package/_esm/setup.js +120 -0
- package/_esm/setup.js.map +1 -0
- package/_esm/singletonPaymasters.js +3 -67
- package/_esm/singletonPaymasters.js.map +1 -1
- package/_types/helpers/erc20-utils.d.ts +4 -2
- package/_types/helpers/erc20-utils.d.ts.map +1 -1
- package/_types/helpers/schema.d.ts +569 -569
- package/_types/helpers/schema.d.ts.map +1 -1
- package/_types/helpers/utils.d.ts +1 -5
- package/_types/helpers/utils.d.ts.map +1 -1
- package/_types/index.d.ts +1 -0
- package/_types/index.d.ts.map +1 -1
- package/_types/relay.d.ts +4 -5
- package/_types/relay.d.ts.map +1 -1
- package/_types/setup.d.ts +11 -0
- package/_types/setup.d.ts.map +1 -0
- package/_types/singletonPaymasters.d.ts +0 -4
- package/_types/singletonPaymasters.d.ts.map +1 -1
- package/helpers/erc20-utils.ts +40 -16
- package/helpers/schema.ts +7 -7
- package/helpers/utils.ts +0 -24
- package/index.ts +19 -22
- package/package.json +2 -2
- package/relay.ts +44 -22
- package/setup.ts +163 -0
- package/singletonPaymasters.ts +2 -91
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../helpers/schema.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,KAAK,KAAK,IAAI,QAAQ,EAAE,MAAM,KAAK,CAAA;AAE/C,oBAAY,gBAAgB;IACxB,aAAa,SAAS;IACtB,mBAAmB,SAAS;IAC5B,qBAAqB,SAAS;CACjC;AAED,qBAAa,oBAAqB,SAAQ,KAAK;gBAC/B,GAAG,CAAC,EAAE,MAAM;CAO3B;AAED,qBAAa,QAAS,SAAQ,KAAK;IAI3B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM;IACtB,QAAQ,CAAC,IAAI,EAAE,OAAO;gBAFtB,GAAG,EAAE,MAAM,EACF,IAAI,CAAC,EAAE,MAAM,YAAA,EACb,IAAI,GAAE,OAAmB;CAIzC;AAKD,eAAO,MAAM,aAAa,kDAGc,CAAA;AAExC,eAAO,MAAM,eAAe,
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../helpers/schema.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,KAAK,KAAK,IAAI,QAAQ,EAAE,MAAM,KAAK,CAAA;AAE/C,oBAAY,gBAAgB;IACxB,aAAa,SAAS;IACtB,mBAAmB,SAAS;IAC5B,qBAAqB,SAAS;CACjC;AAED,qBAAa,oBAAqB,SAAQ,KAAK;gBAC/B,GAAG,CAAC,EAAE,MAAM;CAO3B;AAED,qBAAa,QAAS,SAAQ,KAAK;IAI3B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM;IACtB,QAAQ,CAAC,IAAI,EAAE,OAAO;gBAFtB,GAAG,EAAE,MAAM,EACF,IAAI,CAAC,EAAE,MAAM,YAAA,EACb,IAAI,GAAE,OAAmB;CAIzC;AAKD,eAAO,MAAM,aAAa,kDAGc,CAAA;AAExC,eAAO,MAAM,eAAe,qLAiBN,CAAA;AAEtB,eAAO,MAAM,aAAa,kDAGuB,CAAA;AAuBjD,QAAA,MAAM,8BAA8B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA0B9B,CAAA;AAEN,QAAA,MAAM,8BAA8B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAyC9B,CAAA;AAEN,eAAO,MAAM,mBAAmB;;;;;;;;;;;;EAMnB,CAAA;AAEb,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;EAOb,CAAA;AAEb,eAAO,MAAM,kCAAkC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8DAG7C,CAAA;AA8FF,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qCAYzB,CAAA;AAEN,eAAO,MAAM,kCAAkC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qCAYzC,CAAA;AAEN,eAAO,MAAM,2BAA2B;;;;;;iPAMtC,CAAA;AAEF,MAAM,MAAM,eAAe,GAAG,QAAQ,CAAC,OAAO,8BAA8B,CAAC,CAAA;AAC7E,MAAM,MAAM,eAAe,GAAG,QAAQ,CAAC,OAAO,8BAA8B,CAAC,CAAA;AAC7E,MAAM,MAAM,aAAa,GAAG,QAAQ,CAAC,OAAO,aAAa,CAAC,CAAA"}
|
|
@@ -1,11 +1,7 @@
|
|
|
1
|
-
import { type
|
|
1
|
+
import { type Address, type Chain, type PublicClient, type Transport } from "viem";
|
|
2
2
|
export declare const maxBigInt: (a: bigint, b: bigint) => bigint;
|
|
3
3
|
export declare const getChain: (rpcUrl: string) => Promise<Chain>;
|
|
4
4
|
export declare const getPublicClient: (anvilRpc: string) => Promise<PublicClient<Transport, Chain>>;
|
|
5
|
-
export declare const getAnvilWalletClient: ({ addressIndex, anvilRpc }: {
|
|
6
|
-
addressIndex: number;
|
|
7
|
-
anvilRpc: string;
|
|
8
|
-
}) => Promise<WalletClient<Transport, Chain, Account>>;
|
|
9
5
|
export declare const isTokenSupported: (token: Address) => Promise<void>;
|
|
10
6
|
export type PaymasterMode = {
|
|
11
7
|
mode: "verifying";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../helpers/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAEH,KAAK,OAAO,EACZ,KAAK,
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../helpers/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAEH,KAAK,OAAO,EACZ,KAAK,KAAK,EACV,KAAK,YAAY,EACjB,KAAK,SAAS,EAGjB,MAAM,MAAM,CAAA;AAKb,eAAO,MAAM,SAAS,GAAI,GAAG,MAAM,EAAE,GAAG,MAAM,WAE7C,CAAA;AAED,eAAO,MAAM,QAAQ,GAAU,QAAQ,MAAM,KAAG,OAAO,CAAC,KAAK,CAqB5D,CAAA;AAED,eAAO,MAAM,eAAe,GACxB,UAAU,MAAM,KACjB,OAAO,CAAC,YAAY,CAAC,SAAS,EAAE,KAAK,CAAC,CAiBxC,CAAA;AAED,eAAO,MAAM,gBAAgB,GAAU,OAAO,OAAO,kBAOpD,CAAA;AAED,MAAM,MAAM,aAAa,GACnB;IACI,IAAI,EAAE,WAAW,CAAA;CACpB,GACD;IACI,IAAI,EAAE,OAAO,CAAA;IACb,KAAK,EAAE,OAAO,CAAA;CACjB,CAAA"}
|
package/_types/index.d.ts
CHANGED
package/_types/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AASA,eAAO,MAAM,SAAS;cAMH,MAAM;UAAQ,MAAM;aAAW,MAAM;WAAS,MAAM;EA6CtE,CAAA;AAED,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAA"}
|
package/_types/relay.d.ts
CHANGED
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
import type { FastifyReply, FastifyRequest } from "fastify";
|
|
2
|
-
import { type Account, type Address, type Chain, type
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
publicClient: PublicClient;
|
|
2
|
+
import { type Account, type Address, type Chain, type Transport, type WalletClient } from "viem";
|
|
3
|
+
export declare const createRpcHandler: ({ altoRpc, anvilRpc, paymasterSigner }: {
|
|
4
|
+
altoRpc: string;
|
|
5
|
+
anvilRpc: string;
|
|
7
6
|
paymasterSigner: WalletClient<Transport, Chain, Account>;
|
|
8
7
|
}) => (request: FastifyRequest, _reply: FastifyReply) => Promise<{
|
|
9
8
|
jsonrpc: string;
|
package/_types/relay.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"relay.d.ts","sourceRoot":"","sources":["../relay.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAC3D,OAAO,
|
|
1
|
+
{"version":3,"file":"relay.d.ts","sourceRoot":"","sources":["../relay.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAC3D,OAAO,EAEH,KAAK,OAAO,EACZ,KAAK,OAAO,EAEZ,KAAK,KAAK,EAGV,KAAK,SAAS,EACd,KAAK,YAAY,EAGpB,MAAM,MAAM,CAAA;AAuVb,eAAO,MAAM,gBAAgB,GAAI,wCAI9B;IACC,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,MAAM,CAAA;IAChB,eAAe,EAAE,YAAY,CAAC,SAAS,EAAE,KAAK,EAAE,OAAO,CAAC,CAAA;CAC3D,MACiB,SAAS,cAAc,EAAE,QAAQ,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAgD9D,CAAA"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { type Address } from "viem";
|
|
2
|
+
export declare const deployPaymasters: ({ anvilRpc, paymasterSigner }: {
|
|
3
|
+
anvilRpc: string;
|
|
4
|
+
paymasterSigner: Address;
|
|
5
|
+
}) => Promise<void>;
|
|
6
|
+
export declare const deployErc20Token: (anvilRpc: string) => Promise<void>;
|
|
7
|
+
export declare const setup: ({ anvilRpc, paymasterSigner }: {
|
|
8
|
+
anvilRpc: string;
|
|
9
|
+
paymasterSigner: Address;
|
|
10
|
+
}) => Promise<void>;
|
|
11
|
+
//# sourceMappingURL=setup.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../setup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,OAAO,EAAmC,MAAM,MAAM,CAAA;AAuBpE,eAAO,MAAM,gBAAgB,GAAU,+BAGpC;IACC,QAAQ,EAAE,MAAM,CAAA;IAChB,eAAe,EAAE,OAAO,CAAA;CAC3B,kBA0GA,CAAA;AAED,eAAO,MAAM,gBAAgB,GAAU,UAAU,MAAM,kBAWtD,CAAA;AAED,eAAO,MAAM,KAAK,GAAU,+BAGzB;IACC,QAAQ,EAAE,MAAM,CAAA;IAChB,eAAe,EAAE,OAAO,CAAA;CAC3B,kBAMA,CAAA"}
|
|
@@ -26,8 +26,4 @@ export declare const getSignedPaymasterData: ({ publicClient, signer, userOp, pa
|
|
|
26
26
|
paymasterData: `0x${string}`;
|
|
27
27
|
paymasterAndData?: undefined;
|
|
28
28
|
}>;
|
|
29
|
-
export declare const deployPaymasters: ({ walletClient, publicClient }: {
|
|
30
|
-
walletClient: WalletClient<Transport, Chain, Account>;
|
|
31
|
-
publicClient: PublicClient<Transport, Chain>;
|
|
32
|
-
}) => Promise<void>;
|
|
33
29
|
//# sourceMappingURL=singletonPaymasters.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"singletonPaymasters.d.ts","sourceRoot":"","sources":["../singletonPaymasters.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,KAAK,OAAO,EACZ,KAAK,OAAO,EACZ,KAAK,KAAK,EACV,KAAK,GAAG,EACR,KAAK,YAAY,EACjB,KAAK,SAAS,EACd,KAAK,YAAY,
|
|
1
|
+
{"version":3,"file":"singletonPaymasters.d.ts","sourceRoot":"","sources":["../singletonPaymasters.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,KAAK,OAAO,EACZ,KAAK,OAAO,EACZ,KAAK,KAAK,EACV,KAAK,GAAG,EACR,KAAK,YAAY,EACjB,KAAK,SAAS,EACd,KAAK,YAAY,EAKpB,MAAM,MAAM,CAAA;AACb,OAAO,EACH,KAAK,aAAa,EAErB,MAAM,0BAA0B,CAAA;AAMjC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAEvD,eAAO,MAAM,qBAAqB,GAAI,oCAInC;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,SAAS,EAAE,OAAO,CAAC;IAAC,aAAa,EAAE,aAAa,CAAA;CAAE,KAChE;IAAE,SAAS,EAAE,OAAO,CAAC;IAAC,aAAa,EAAE,GAAG,CAAA;CAAE,GAC1C;IAAE,gBAAgB,EAAE,GAAG,CAAA;CAoE5B,CAAA;AAED,eAAO,MAAM,sBAAsB,GAAU,4DAM1C;IACC,YAAY,EAAE,YAAY,CAAA;IAC1B,MAAM,EAAE,YAAY,CAAC,SAAS,EAAE,KAAK,EAAE,OAAO,CAAC,CAAA;IAC/C,MAAM,EAAE,aAAa,CAAA;IACrB,SAAS,EAAE,OAAO,CAAA;IAClB,aAAa,EAAE,aAAa,CAAA;CAC/B;;;;;;;;EAqHA,CAAA"}
|
package/helpers/erc20-utils.ts
CHANGED
|
@@ -1,38 +1,65 @@
|
|
|
1
1
|
import {
|
|
2
|
+
http,
|
|
2
3
|
type Account,
|
|
3
4
|
type Address,
|
|
4
5
|
type Chain,
|
|
5
|
-
type PublicClient,
|
|
6
6
|
type Transport,
|
|
7
7
|
type WalletClient,
|
|
8
8
|
concat,
|
|
9
|
+
createTestClient,
|
|
10
|
+
createWalletClient,
|
|
9
11
|
encodeFunctionData,
|
|
10
12
|
getCreate2Address,
|
|
11
13
|
hexToBigInt,
|
|
12
14
|
pad,
|
|
13
15
|
parseAbi,
|
|
16
|
+
parseEther,
|
|
14
17
|
toHex
|
|
15
18
|
} from "viem"
|
|
16
|
-
import {
|
|
19
|
+
import { privateKeyToAccount } from "viem/accounts"
|
|
20
|
+
import { getChain, getPublicClient } from "./utils.js"
|
|
17
21
|
|
|
18
|
-
const erc20Bytecode = concat([
|
|
22
|
+
export const erc20Bytecode = concat([
|
|
19
23
|
"0x60a060405234801561001057600080fd5b50604051610ff0380380610ff083398101604081905261002f9161022c565b6040518060400160405280600981526020016805465737445524332360bc1b8152506040518060400160405280600381526020016205432360ec1b815250816003908161007c919061034d565b506004610089828261034d565b5050506100a63369d3c21bcecceda10000006100b160201b60201c565b60ff166080526104a3565b6001600160a01b0382166100e457600060405163ec442f0560e01b81526004016100db9190610430565b60405180910390fd5b6100f0600083836100f4565b5050565b6001600160a01b03831661011f5780600260008282546101149190610454565b9091555061017e9050565b6001600160a01b0383166000908152602081905260409020548181101561015f5783818360405163391434e360e21b81526004016100db9392919061046d565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b03821661019a576002805482900390556101b9565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516101fc9190610495565b60405180910390a3505050565b60ff8116811461021857600080fd5b50565b805161022681610209565b92915050565b60006020828403121561024157610241600080fd5b600061024d848461021b565b949350505050565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052602260045260246000fd5b60028104600182168061029557607f821691505b6020821081036102a7576102a761026b565b50919050565b60006102266102b98381565b90565b6102c5836102ad565b815460001960089490940293841b1916921b91909117905550565b60006102ed8184846102bc565b505050565b818110156100f0576103056000826102e0565b6001016102f2565b601f8211156102ed576000818152602090206020601f850104810160208510156103345750805b6103466020601f8601048301826102f2565b5050505050565b81516001600160401b0381111561036657610366610255565b6103708254610281565b61037b82828561030d565b6020601f8311600181146103af57600084156103975750858201515b600019600886021c1981166002860217865550610408565b600085815260208120601f198616915b828110156103df57888501518255602094850194600190920191016103bf565b868310156103fb5784890151600019601f89166008021c191682555b6001600288020188555050505b505050505050565b60006001600160a01b038216610226565b61042a81610410565b82525050565b602081016102268284610421565b634e487b7160e01b600052601160045260246000fd5b808201808211156102265761022661043e565b8061042a565b6060810161047b8286610421565b6104886020830185610467565b61024d6040830184610467565b602081016102268284610467565b608051610b326104be60003960006101650152610b326000f3fe608060405234801561001057600080fd5b50600436106100d45760003560e01c8063313ce56711610081578063a9059cbb1161005b578063a9059cbb146101cf578063dd62ed3e146101e2578063fb4dcefa1461022857600080fd5b8063313ce5671461016357806370a082311461019157806395d89b41146101c757600080fd5b806318160ddd116100b257806318160ddd1461012c57806323b872dd1461013d5780632d688ca81461015057600080fd5b806305ea5c22146100d957806306fdde03146100ee578063095ea7b31461010c575b600080fd5b6100ec6100e7366004610868565b61023b565b005b6100f661024b565b604051610103919061092c565b60405180910390f35b61011f61011a366004610944565b6102dd565b604051610103919061098b565b6002545b604051610103919061099f565b61011f61014b366004610868565b6102f7565b6100ec61015e366004610944565b61031b565b7f000000000000000000000000000000000000000000000000000000000000000060405161010391906109b6565b61013061019f3660046109c4565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100f6610329565b61011f6101dd366004610944565b610338565b6101306101f03660046109ed565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6100ec6102363660046109ed565b610346565b61024683838361037c565b505050565b60606003805461025a90610a4f565b80601f016020809104026020016040519081016040528092919081815260200182805461028690610a4f565b80156102d35780601f106102a8576101008083540402835291602001916102d3565b820191906000526020600020905b8154815290600101906020018083116102b657829003601f168201915b5050505050905090565b6000336102eb81858561037c565b60019150505b92915050565b600033610305858285610389565b610310858585610441565b506001949350505050565b61032582826104ec565b5050565b60606004805461025a90610a4f565b6000336102eb818585610441565b61032582826103778573ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b610441565b6102468383836001610548565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461043b578181101561042c578281836040517ffb8f41b200000000000000000000000000000000000000000000000000000000815260040161042393929190610a84565b60405180910390fd5b61043b84848484036000610548565b50505050565b73ffffffffffffffffffffffffffffffffffffffff83166104915760006040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081526004016104239190610aac565b73ffffffffffffffffffffffffffffffffffffffff82166104e15760006040517fec442f050000000000000000000000000000000000000000000000000000000081526004016104239190610aac565b61024683838361068e565b73ffffffffffffffffffffffffffffffffffffffff821661053c5760006040517fec442f050000000000000000000000000000000000000000000000000000000081526004016104239190610aac565b6103256000838361068e565b73ffffffffffffffffffffffffffffffffffffffff84166105985760006040517fe602df050000000000000000000000000000000000000000000000000000000081526004016104239190610aac565b73ffffffffffffffffffffffffffffffffffffffff83166105e85760006040517f94280d620000000000000000000000000000000000000000000000000000000081526004016104239190610aac565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152600160209081526040808320938716835292905220829055801561043b578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610680919061099f565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff83166106c65780600260008282546106bb9190610ae9565b909155506107589050565b73ffffffffffffffffffffffffffffffffffffffff83166000908152602081905260409020548181101561072c578381836040517fe450d38c00000000000000000000000000000000000000000000000000000000815260040161042393929190610a84565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff8216610781576002805482900390556107ad565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161080a919061099f565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff82166102f1565b61083e81610817565b811461084957600080fd5b50565b80356102f181610835565b8061083e565b80356102f181610857565b60008060006060848603121561088057610880600080fd5b600061088c868661084c565b935050602061089d8682870161084c565b92505060406108ae8682870161085d565b9150509250925092565b60005b838110156108d35781810151838201526020016108bb565b50506000910152565b60006108e6825190565b8084526020840193506108fd8185602086016108b8565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920192915050565b6020808252810161093d81846108dc565b9392505050565b6000806040838503121561095a5761095a600080fd5b6000610966858561084c565b92505060206109778582860161085d565b9150509250929050565b8015155b82525050565b602081016102f18284610981565b80610985565b602081016102f18284610999565b60ff8116610985565b602081016102f182846109ad565b6000602082840312156109d9576109d9600080fd5b60006109e5848461084c565b949350505050565b60008060408385031215610a0357610a03600080fd5b6000610a0f858561084c565b92505060206109778582860161084c565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600281046001821680610a6357607f821691505b602082108103610a7557610a75610a20565b50919050565b61098581610817565b60608101610a928286610a7b565b610a9f6020830185610999565b6109e56040830184610999565b602081016102f18284610a7b565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808201808211156102f1576102f1610aba56fea2646970667358221220d40f68e247510ec8b7876d327ac47b949de248d0626aaf2670151c5e84ee6b4a64736f6c634300081a0033",
|
|
20
24
|
pad(toHex(18n)) // constructor args (token_decimals)
|
|
21
25
|
])
|
|
22
26
|
|
|
23
|
-
const create2Salt =
|
|
27
|
+
export const create2Salt =
|
|
24
28
|
"0x0000000000000000000000000000000000000000000000000000000000000000"
|
|
25
29
|
|
|
26
|
-
export const
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
30
|
+
export const getPaymasterUtilityWallet = async (
|
|
31
|
+
anvilRpc: string
|
|
32
|
+
): Promise<WalletClient<Transport, Chain, Account>> => {
|
|
33
|
+
const account = privateKeyToAccount(
|
|
34
|
+
"0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
|
|
35
|
+
)
|
|
36
|
+
|
|
37
|
+
// Check if account has balance
|
|
38
|
+
const publicClient = await getPublicClient(anvilRpc)
|
|
39
|
+
const balance = await publicClient.getBalance({ address: account.address })
|
|
40
|
+
|
|
41
|
+
// If no balance, set it to 1000 ETH
|
|
42
|
+
if (balance === 0n) {
|
|
43
|
+
// Create test client for setting balance
|
|
44
|
+
const testClient = createTestClient({
|
|
45
|
+
mode: "anvil",
|
|
46
|
+
transport: http(anvilRpc)
|
|
47
|
+
})
|
|
48
|
+
|
|
49
|
+
await testClient.setBalance({
|
|
50
|
+
address: account.address,
|
|
51
|
+
value: parseEther("1000")
|
|
34
52
|
})
|
|
35
53
|
}
|
|
54
|
+
|
|
55
|
+
// Create and return wallet client
|
|
56
|
+
const walletClient = createWalletClient({
|
|
57
|
+
chain: await getChain(anvilRpc),
|
|
58
|
+
account,
|
|
59
|
+
transport: http(anvilRpc)
|
|
60
|
+
})
|
|
61
|
+
|
|
62
|
+
return walletClient
|
|
36
63
|
}
|
|
37
64
|
|
|
38
65
|
export const tokenBalanceOf = async (holder: Address, anvilRpc: string) => {
|
|
@@ -59,10 +86,7 @@ export const sudoMintTokens = async ({
|
|
|
59
86
|
to: Address
|
|
60
87
|
anvilRpc: string
|
|
61
88
|
}) => {
|
|
62
|
-
const walletClient = await
|
|
63
|
-
addressIndex: 0,
|
|
64
|
-
anvilRpc
|
|
65
|
-
})
|
|
89
|
+
const walletClient = await getPaymasterUtilityWallet(anvilRpc)
|
|
66
90
|
|
|
67
91
|
await walletClient.sendTransaction({
|
|
68
92
|
to: erc20Address,
|
package/helpers/schema.ts
CHANGED
|
@@ -53,7 +53,7 @@ export const hexNumberSchema = z
|
|
|
53
53
|
})
|
|
54
54
|
}
|
|
55
55
|
})
|
|
56
|
-
.transform(
|
|
56
|
+
.transform(BigInt)
|
|
57
57
|
|
|
58
58
|
export const hexDataSchema = z
|
|
59
59
|
.string()
|
|
@@ -63,21 +63,21 @@ export const hexDataSchema = z
|
|
|
63
63
|
const signedAuthorizationSchema = z.union([
|
|
64
64
|
z.object({
|
|
65
65
|
contractAddress: addressSchema,
|
|
66
|
-
chainId: hexNumberSchema.transform(
|
|
67
|
-
nonce: hexNumberSchema.transform(
|
|
66
|
+
chainId: hexNumberSchema.transform(Number),
|
|
67
|
+
nonce: hexNumberSchema.transform(Number),
|
|
68
68
|
r: hexDataSchema.transform((val) => val as Hex),
|
|
69
69
|
s: hexDataSchema.transform((val) => val as Hex),
|
|
70
70
|
v: hexNumberSchema.optional(),
|
|
71
|
-
yParity: hexNumberSchema.transform(
|
|
71
|
+
yParity: hexNumberSchema.transform(Number)
|
|
72
72
|
}),
|
|
73
73
|
z.object({
|
|
74
74
|
address: addressSchema,
|
|
75
|
-
chainId: hexNumberSchema.transform(
|
|
76
|
-
nonce: hexNumberSchema.transform(
|
|
75
|
+
chainId: hexNumberSchema.transform(Number),
|
|
76
|
+
nonce: hexNumberSchema.transform(Number),
|
|
77
77
|
r: hexDataSchema.transform((val) => val as Hex),
|
|
78
78
|
s: hexDataSchema.transform((val) => val as Hex),
|
|
79
79
|
v: hexNumberSchema.optional(),
|
|
80
|
-
yParity: hexNumberSchema.transform(
|
|
80
|
+
yParity: hexNumberSchema.transform(Number)
|
|
81
81
|
})
|
|
82
82
|
])
|
|
83
83
|
|
package/helpers/utils.ts
CHANGED
|
@@ -1,16 +1,12 @@
|
|
|
1
1
|
import {
|
|
2
2
|
http,
|
|
3
|
-
type Account,
|
|
4
3
|
type Address,
|
|
5
4
|
type Chain,
|
|
6
5
|
type PublicClient,
|
|
7
6
|
type Transport,
|
|
8
|
-
type WalletClient,
|
|
9
7
|
createPublicClient,
|
|
10
|
-
createWalletClient,
|
|
11
8
|
defineChain
|
|
12
9
|
} from "viem"
|
|
13
|
-
import { mnemonicToAccount } from "viem/accounts"
|
|
14
10
|
import { erc20Address } from "./erc20-utils.js"
|
|
15
11
|
import { RpcError, ValidationErrors } from "./schema.js"
|
|
16
12
|
|
|
@@ -63,26 +59,6 @@ export const getPublicClient = async (
|
|
|
63
59
|
})
|
|
64
60
|
}
|
|
65
61
|
|
|
66
|
-
export const getAnvilWalletClient = async ({
|
|
67
|
-
addressIndex,
|
|
68
|
-
anvilRpc
|
|
69
|
-
}: { addressIndex: number; anvilRpc: string }): Promise<
|
|
70
|
-
WalletClient<Transport, Chain, Account>
|
|
71
|
-
> => {
|
|
72
|
-
const chain = await getChain(anvilRpc)
|
|
73
|
-
|
|
74
|
-
return createWalletClient({
|
|
75
|
-
account: mnemonicToAccount(
|
|
76
|
-
"test test test test test test test test test test test junk",
|
|
77
|
-
{
|
|
78
|
-
addressIndex
|
|
79
|
-
}
|
|
80
|
-
),
|
|
81
|
-
chain,
|
|
82
|
-
transport: http(anvilRpc)
|
|
83
|
-
})
|
|
84
|
-
}
|
|
85
|
-
|
|
86
62
|
export const isTokenSupported = async (token: Address) => {
|
|
87
63
|
if (token !== erc20Address) {
|
|
88
64
|
throw new RpcError(
|
package/index.ts
CHANGED
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
import cors from "@fastify/cors"
|
|
2
2
|
import Fastify from "fastify"
|
|
3
3
|
import { defineInstance } from "prool"
|
|
4
|
-
import { http,
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import { getAnvilWalletClient, getChain } from "./helpers/utils.js"
|
|
4
|
+
import { http, createWalletClient } from "viem"
|
|
5
|
+
import { privateKeyToAccount } from "viem/accounts"
|
|
6
|
+
import { getChain } from "./helpers/utils.js"
|
|
8
7
|
import { createRpcHandler } from "./relay.js"
|
|
9
|
-
import {
|
|
8
|
+
import { setup } from "./setup.js"
|
|
10
9
|
|
|
11
10
|
export const paymaster = defineInstance(
|
|
12
11
|
({
|
|
@@ -23,22 +22,18 @@ export const paymaster = defineInstance(
|
|
|
23
22
|
port: _port,
|
|
24
23
|
name: "mock-paymaster",
|
|
25
24
|
start: async ({ port = _port }) => {
|
|
26
|
-
const
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
transport: http(anvilRpc),
|
|
33
|
-
chain
|
|
34
|
-
})
|
|
35
|
-
const bundler = createBundlerClient({
|
|
36
|
-
chain,
|
|
37
|
-
transport: http(altoRpc)
|
|
25
|
+
const paymasterSigner = createWalletClient({
|
|
26
|
+
chain: await getChain(anvilRpc),
|
|
27
|
+
account: privateKeyToAccount(
|
|
28
|
+
"0xbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
|
|
29
|
+
),
|
|
30
|
+
transport: http(anvilRpc)
|
|
38
31
|
})
|
|
39
32
|
|
|
40
|
-
await
|
|
41
|
-
|
|
33
|
+
await setup({
|
|
34
|
+
anvilRpc,
|
|
35
|
+
paymasterSigner: paymasterSigner.account.address
|
|
36
|
+
})
|
|
42
37
|
|
|
43
38
|
app.register(cors, {
|
|
44
39
|
origin: "*",
|
|
@@ -46,9 +41,9 @@ export const paymaster = defineInstance(
|
|
|
46
41
|
})
|
|
47
42
|
|
|
48
43
|
const rpcHandler = createRpcHandler({
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
paymasterSigner
|
|
44
|
+
altoRpc,
|
|
45
|
+
anvilRpc,
|
|
46
|
+
paymasterSigner
|
|
52
47
|
})
|
|
53
48
|
app.post("/", {}, rpcHandler)
|
|
54
49
|
|
|
@@ -64,3 +59,5 @@ export const paymaster = defineInstance(
|
|
|
64
59
|
}
|
|
65
60
|
}
|
|
66
61
|
)
|
|
62
|
+
|
|
63
|
+
export { erc20Address, sudoMintTokens } from "./helpers/erc20-utils.js"
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pimlico/mock-paymaster",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.6",
|
|
4
4
|
"author": "Pimlico",
|
|
5
5
|
"homepage": "https://docs.pimlico.io/permissionless",
|
|
6
6
|
"repository": "github:pimlicolabs/permissionless.js",
|
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
},
|
|
29
29
|
"peerDependencies": {
|
|
30
30
|
"viem": "^2.28.1",
|
|
31
|
-
"prool": "^0.0.
|
|
31
|
+
"prool": "^0.0.25"
|
|
32
32
|
},
|
|
33
33
|
"dependencies": {
|
|
34
34
|
"@fastify/cors": "^8.5.0",
|
package/relay.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import * as util from "node:util"
|
|
2
2
|
import type { FastifyReply, FastifyRequest } from "fastify"
|
|
3
3
|
import {
|
|
4
|
+
http,
|
|
4
5
|
type Account,
|
|
5
6
|
type Address,
|
|
6
7
|
BaseError,
|
|
@@ -15,6 +16,7 @@ import {
|
|
|
15
16
|
import {
|
|
16
17
|
type BundlerClient,
|
|
17
18
|
type UserOperation,
|
|
19
|
+
createBundlerClient,
|
|
18
20
|
entryPoint06Address,
|
|
19
21
|
entryPoint07Address,
|
|
20
22
|
entryPoint08Address
|
|
@@ -40,6 +42,8 @@ import {
|
|
|
40
42
|
} from "./helpers/schema.js"
|
|
41
43
|
import {
|
|
42
44
|
type PaymasterMode,
|
|
45
|
+
getChain,
|
|
46
|
+
getPublicClient,
|
|
43
47
|
isTokenSupported,
|
|
44
48
|
maxBigInt
|
|
45
49
|
} from "./helpers/utils.js"
|
|
@@ -158,9 +162,9 @@ const handleMethod = async ({
|
|
|
158
162
|
parsedBody,
|
|
159
163
|
paymasterSigner,
|
|
160
164
|
publicClient,
|
|
161
|
-
|
|
165
|
+
bundlerClient
|
|
162
166
|
}: {
|
|
163
|
-
|
|
167
|
+
bundlerClient: BundlerClient
|
|
164
168
|
paymasterSigner: WalletClient<Transport, Chain, Account>
|
|
165
169
|
publicClient: PublicClient
|
|
166
170
|
parsedBody: JsonRpcSchema
|
|
@@ -171,7 +175,7 @@ const handleMethod = async ({
|
|
|
171
175
|
getSingletonPaymaster08Address(paymasterSigner.account.address)
|
|
172
176
|
]
|
|
173
177
|
|
|
174
|
-
const epToPaymaster: Record
|
|
178
|
+
const epToPaymaster: Record<Address, Address> = {
|
|
175
179
|
[entryPoint06Address]: paymaster06,
|
|
176
180
|
[entryPoint07Address]: paymaster07,
|
|
177
181
|
[entryPoint08Address]: paymaster08
|
|
@@ -196,7 +200,7 @@ const handleMethod = async ({
|
|
|
196
200
|
entryPoint,
|
|
197
201
|
userOperation,
|
|
198
202
|
paymasterMode: { mode: "verifying" },
|
|
199
|
-
bundler,
|
|
203
|
+
bundler: bundlerClient,
|
|
200
204
|
paymaster: epToPaymaster[entryPoint],
|
|
201
205
|
publicClient,
|
|
202
206
|
paymasterSigner,
|
|
@@ -283,15 +287,6 @@ const handleMethod = async ({
|
|
|
283
287
|
]
|
|
284
288
|
}
|
|
285
289
|
|
|
286
|
-
if (parsedBody.method === "pimlico_getUserOperationGasPrice") {
|
|
287
|
-
return await bundler.request({
|
|
288
|
-
// @ts-ignore
|
|
289
|
-
method: "pimlico_getUserOperationGasPrice",
|
|
290
|
-
// @ts-ignore
|
|
291
|
-
params: []
|
|
292
|
-
})
|
|
293
|
-
}
|
|
294
|
-
|
|
295
290
|
if (parsedBody.method === "pimlico_getTokenQuotes") {
|
|
296
291
|
const params = pimlicoGetTokenQuotesSchema.safeParse(parsedBody.params)
|
|
297
292
|
|
|
@@ -333,22 +328,49 @@ const handleMethod = async ({
|
|
|
333
328
|
}
|
|
334
329
|
}
|
|
335
330
|
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
331
|
+
// If boosted userOp, forward to bundler's boost_sendUserOperation method.
|
|
332
|
+
if (parsedBody.method === "eth_sendUserOperation") {
|
|
333
|
+
const userOp = parsedBody.params[0] as any
|
|
334
|
+
|
|
335
|
+
const isBoosted =
|
|
336
|
+
userOp.maxFeePerGas === "0x0" &&
|
|
337
|
+
userOp.maxPriorityFeePerGas === "0x0"
|
|
338
|
+
|
|
339
|
+
if (isBoosted) {
|
|
340
|
+
return await bundlerClient.request({
|
|
341
|
+
// @ts-ignore
|
|
342
|
+
method: "boost_sendUserOperation",
|
|
343
|
+
// @ts-ignore
|
|
344
|
+
params: parsedBody.params
|
|
345
|
+
})
|
|
346
|
+
}
|
|
347
|
+
}
|
|
348
|
+
|
|
349
|
+
// Forward all other requests to the bundler
|
|
350
|
+
return await bundlerClient.request({
|
|
351
|
+
// @ts-ignore
|
|
352
|
+
method: parsedBody.method,
|
|
353
|
+
// @ts-ignore
|
|
354
|
+
params: parsedBody.params ?? []
|
|
355
|
+
})
|
|
340
356
|
}
|
|
341
357
|
|
|
342
358
|
export const createRpcHandler = ({
|
|
343
|
-
|
|
344
|
-
|
|
359
|
+
altoRpc,
|
|
360
|
+
anvilRpc,
|
|
345
361
|
paymasterSigner
|
|
346
362
|
}: {
|
|
347
|
-
|
|
348
|
-
|
|
363
|
+
altoRpc: string
|
|
364
|
+
anvilRpc: string
|
|
349
365
|
paymasterSigner: WalletClient<Transport, Chain, Account>
|
|
350
366
|
}) => {
|
|
351
367
|
return async (request: FastifyRequest, _reply: FastifyReply) => {
|
|
368
|
+
const publicClient = await getPublicClient(anvilRpc)
|
|
369
|
+
const bundlerClient = createBundlerClient({
|
|
370
|
+
chain: await getChain(anvilRpc),
|
|
371
|
+
transport: http(altoRpc)
|
|
372
|
+
})
|
|
373
|
+
|
|
352
374
|
const body = request.body
|
|
353
375
|
const parsedBody = jsonRpcSchema.safeParse(body)
|
|
354
376
|
if (!parsedBody.success) {
|
|
@@ -360,7 +382,7 @@ export const createRpcHandler = ({
|
|
|
360
382
|
|
|
361
383
|
try {
|
|
362
384
|
const result = await handleMethod({
|
|
363
|
-
|
|
385
|
+
bundlerClient,
|
|
364
386
|
paymasterSigner,
|
|
365
387
|
parsedBody: parsedBody.data,
|
|
366
388
|
publicClient
|