@pimlico/mock-paymaster 0.0.3 → 0.0.5
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 +28 -6
- package/_cjs/helpers/erc20-utils.js.map +1 -1
- package/_cjs/helpers/utils.js +1 -13
- package/_cjs/helpers/utils.js.map +1 -1
- package/_cjs/index.js +18 -21
- package/_cjs/index.js.map +1 -1
- package/_cjs/relay.js +10 -5
- package/_cjs/relay.js.map +1 -1
- package/_cjs/singletonPaymasters.js +11 -8
- package/_cjs/singletonPaymasters.js.map +1 -1
- package/_esm/helpers/erc20-utils.js +32 -7
- package/_esm/helpers/erc20-utils.js.map +1 -1
- package/_esm/helpers/utils.js +1 -12
- package/_esm/helpers/utils.js.map +1 -1
- package/_esm/index.js +19 -23
- package/_esm/index.js.map +1 -1
- package/_esm/relay.js +13 -8
- package/_esm/relay.js.map +1 -1
- package/_esm/singletonPaymasters.js +11 -8
- package/_esm/singletonPaymasters.js.map +1 -1
- package/_types/helpers/erc20-utils.d.ts +3 -2
- package/_types/helpers/erc20-utils.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 +3 -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/singletonPaymasters.d.ts +4 -4
- package/_types/singletonPaymasters.d.ts.map +1 -1
- package/helpers/erc20-utils.ts +47 -10
- package/helpers/utils.ts +0 -24
- package/index.ts +29 -25
- package/package.json +1 -1
- package/relay.ts +19 -9
- package/singletonPaymasters.ts +14 -12
package/_esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,eAAe,CAAA;AAChC,OAAO,OAAO,MAAM,SAAS,CAAA;AAC7B,OAAO,EAAE,cAAc,EAAE,MAAM,OAAO,CAAA;AACtC,OAAO,EAAE,IAAI,EAAE,kBAAkB,EAAE,MAAM,MAAM,CAAA;AAC/C,OAAO,EAAE,mBAAmB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,eAAe,CAAA;AAChC,OAAO,OAAO,MAAM,SAAS,CAAA;AAC7B,OAAO,EAAE,cAAc,EAAE,MAAM,OAAO,CAAA;AACtC,OAAO,EAAE,IAAI,EAAE,kBAAkB,EAAE,MAAM,MAAM,CAAA;AAC/C,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAA;AACnD,OAAO,EACH,gBAAgB,EAChB,YAAY,EACZ,cAAc,EACjB,MAAM,0BAA0B,CAAA;AACjC,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAC7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAC7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAA;AAE3D,MAAM,CAAC,MAAM,SAAS,GAAG,cAAc,CACnC,CAAC,EACG,QAAQ,EACR,OAAO,EACP,IAAI,EAAE,KAAK,EACX,IAAI,EAAE,KAAK,GAAG,WAAW,EACwC,EAAE,EAAE;IACrE,MAAM,GAAG,GAAG,OAAO,CAAC,EAAE,CAAC,CAAA;IAEvB,OAAO;QACH,SAAS,EAAE,EAAE;QACb,IAAI,EAAE,KAAK;QACX,IAAI,EAAE,KAAK;QACX,IAAI,EAAE,gBAAgB;QACtB,KAAK,EAAE,KAAK,EAAE,EAAE,IAAI,GAAG,KAAK,EAAE,EAAE,EAAE;YAC9B,MAAM,eAAe,GAAG,kBAAkB,CAAC;gBACvC,KAAK,EAAE,MAAM,QAAQ,CAAC,QAAQ,CAAC;gBAC/B,OAAO,EAAE,mBAAmB,CACxB,oEAAoE,CACvE;gBACD,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC;aAC5B,CAAC,CAAA;YAEF,MAAM,gBAAgB,CAAC;gBACnB,QAAQ;gBACR,eAAe,EAAE,eAAe,CAAC,OAAO,CAAC,OAAO;aACnD,CAAC,CAAA;YACF,MAAM,gBAAgB,CAAC,QAAQ,CAAC,CAAA;YAEhC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE;gBACf,MAAM,EAAE,GAAG;gBACX,OAAO,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,SAAS,CAAC;aACtC,CAAC,CAAA;YAEF,MAAM,UAAU,GAAG,gBAAgB,CAAC;gBAChC,OAAO;gBACP,QAAQ;gBACR,eAAe;aAClB,CAAC,CAAA;YACF,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,EAAE,UAAU,CAAC,CAAA;YAE7B,GAAG,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE;gBACvC,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAA;YACpD,CAAC,CAAC,CAAA;YAEF,MAAM,GAAG,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;QAC3C,CAAC;QACD,IAAI,EAAE,KAAK,IAAI,EAAE;YACb,GAAG,CAAC,KAAK,EAAE,CAAA;QACf,CAAC;KACJ,CAAA;AACL,CAAC,CACJ,CAAA;AAED,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,CAAA"}
|
package/_esm/relay.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import * as util from "node:util";
|
|
2
|
-
import { BaseError, getAddress, toHex } from "viem";
|
|
3
|
-
import { entryPoint06Address, entryPoint07Address, entryPoint08Address } from "viem/account-abstraction";
|
|
2
|
+
import { http, BaseError, getAddress, toHex } from "viem";
|
|
3
|
+
import { createBundlerClient, entryPoint06Address, entryPoint07Address, entryPoint08Address } from "viem/account-abstraction";
|
|
4
4
|
import { fromZodError } from "zod-validation-error";
|
|
5
5
|
import { getSingletonPaymaster06Address, getSingletonPaymaster07Address, getSingletonPaymaster08Address, sponsorshipIcon } from "./constants.js";
|
|
6
6
|
import { erc20Address } from "./helpers/erc20-utils.js";
|
|
7
7
|
import { InternalBundlerError, RpcError, ValidationErrors, jsonRpcSchema, pimlicoGetTokenQuotesSchema, pmGetPaymasterData, pmGetPaymasterStubDataParamsSchema, pmSponsorUserOperationParamsSchema } from "./helpers/schema.js";
|
|
8
|
-
import { isTokenSupported, maxBigInt } from "./helpers/utils.js";
|
|
8
|
+
import { getChain, getPublicClient, isTokenSupported, maxBigInt } from "./helpers/utils.js";
|
|
9
9
|
import { getDummyPaymasterData, getSignedPaymasterData } from "./singletonPaymasters.js";
|
|
10
10
|
const handlePmSponsor = async ({ entryPoint, userOperation, paymasterMode, bundler, paymaster, publicClient, paymasterSigner, estimateGas }) => {
|
|
11
11
|
const is06 = entryPoint === entryPoint06Address;
|
|
@@ -66,7 +66,7 @@ const validateEntryPoint = (entryPoint) => {
|
|
|
66
66
|
throw new RpcError("EntryPoint not supported", ValidationErrors.InvalidFields);
|
|
67
67
|
}
|
|
68
68
|
};
|
|
69
|
-
const handleMethod = async ({ parsedBody, paymasterSigner, publicClient,
|
|
69
|
+
const handleMethod = async ({ parsedBody, paymasterSigner, publicClient, bundlerClient }) => {
|
|
70
70
|
const [paymaster06, paymaster07, paymaster08] = [
|
|
71
71
|
getSingletonPaymaster06Address(paymasterSigner.account.address),
|
|
72
72
|
getSingletonPaymaster07Address(paymasterSigner.account.address),
|
|
@@ -88,7 +88,7 @@ const handleMethod = async ({ parsedBody, paymasterSigner, publicClient, bundler
|
|
|
88
88
|
entryPoint,
|
|
89
89
|
userOperation,
|
|
90
90
|
paymasterMode: { mode: "verifying" },
|
|
91
|
-
bundler,
|
|
91
|
+
bundler: bundlerClient,
|
|
92
92
|
paymaster: epToPaymaster[entryPoint],
|
|
93
93
|
publicClient,
|
|
94
94
|
paymasterSigner,
|
|
@@ -154,7 +154,7 @@ const handleMethod = async ({ parsedBody, paymasterSigner, publicClient, bundler
|
|
|
154
154
|
];
|
|
155
155
|
}
|
|
156
156
|
if (parsedBody.method === "pimlico_getUserOperationGasPrice") {
|
|
157
|
-
return await
|
|
157
|
+
return await bundlerClient.request({
|
|
158
158
|
// @ts-ignore
|
|
159
159
|
method: "pimlico_getUserOperationGasPrice",
|
|
160
160
|
// @ts-ignore
|
|
@@ -196,8 +196,13 @@ const handleMethod = async ({ parsedBody, paymasterSigner, publicClient, bundler
|
|
|
196
196
|
}
|
|
197
197
|
throw new RpcError(`Attempted to call an unknown method ${parsedBody.method}`, ValidationErrors.InvalidFields);
|
|
198
198
|
};
|
|
199
|
-
export const createRpcHandler = ({
|
|
199
|
+
export const createRpcHandler = ({ altoRpc, anvilRpc, paymasterSigner }) => {
|
|
200
200
|
return async (request, _reply) => {
|
|
201
|
+
const publicClient = await getPublicClient(anvilRpc);
|
|
202
|
+
const bundlerClient = createBundlerClient({
|
|
203
|
+
chain: await getChain(anvilRpc),
|
|
204
|
+
transport: http(altoRpc)
|
|
205
|
+
});
|
|
201
206
|
const body = request.body;
|
|
202
207
|
const parsedBody = jsonRpcSchema.safeParse(body);
|
|
203
208
|
if (!parsedBody.success) {
|
|
@@ -205,7 +210,7 @@ export const createRpcHandler = ({ bundler, publicClient, paymasterSigner }) =>
|
|
|
205
210
|
}
|
|
206
211
|
try {
|
|
207
212
|
const result = await handleMethod({
|
|
208
|
-
|
|
213
|
+
bundlerClient,
|
|
209
214
|
paymasterSigner,
|
|
210
215
|
parsedBody: parsedBody.data,
|
|
211
216
|
publicClient
|
package/_esm/relay.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"relay.js","sourceRoot":"","sources":["../relay.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,WAAW,CAAA;AAEjC,OAAO,
|
|
1
|
+
{"version":3,"file":"relay.js","sourceRoot":"","sources":["../relay.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,WAAW,CAAA;AAEjC,OAAO,EACH,IAAI,EAGJ,SAAS,EAMT,UAAU,EACV,KAAK,EACR,MAAM,MAAM,CAAA;AACb,OAAO,EAGH,mBAAmB,EACnB,mBAAmB,EACnB,mBAAmB,EACnB,mBAAmB,EACtB,MAAM,0BAA0B,CAAA;AACjC,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AACnD,OAAO,EACH,8BAA8B,EAC9B,8BAA8B,EAC9B,8BAA8B,EAC9B,eAAe,EAClB,MAAM,gBAAgB,CAAA;AACvB,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AACvD,OAAO,EACH,oBAAoB,EAEpB,QAAQ,EACR,gBAAgB,EAChB,aAAa,EACb,2BAA2B,EAC3B,kBAAkB,EAClB,kCAAkC,EAClC,kCAAkC,EACrC,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAEH,QAAQ,EACR,eAAe,EACf,gBAAgB,EAChB,SAAS,EACZ,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EACH,qBAAqB,EACrB,sBAAsB,EACzB,MAAM,0BAA0B,CAAA;AAEjC,MAAM,eAAe,GAAG,KAAK,EAAE,EAC3B,UAAU,EACV,aAAa,EACb,aAAa,EACb,OAAO,EACP,SAAS,EACT,YAAY,EACZ,eAAe,EACf,WAAW,EAUd,EAAE,EAAE;IACD,MAAM,IAAI,GAAG,UAAU,KAAK,mBAAmB,CAAA;IAE/C,IAAI,eAAe,GAAG;QAClB,GAAG,aAAa;QAChB,GAAG,qBAAqB,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,aAAa,EAAE,CAAC;KAC9C,CAAA;IAElB,0BAA0B;IAC1B,MAAM,YAAY,GAAG,aAAa,CAAC,YAAY,CAAA;IAC/C,MAAM,oBAAoB,GAAG,aAAa,CAAC,oBAAoB,CAAA;IAC/D,MAAM,kBAAkB,GAAG,aAAa,CAAC,kBAAkB,CAAA;IAE3D,IAAI,WAAW,EAAE,CAAC;QACd,IAAI,CAAC;YACD,MAAM,YAAY,GAAG,MAAM,OAAO,CAAC,wBAAwB,CAAC;gBACxD,GAAG,eAAe;gBAClB,iBAAiB,EAAE,UAAU;aAChC,CAAC,CAAA;YAEF,eAAe,GAAG;gBACd,GAAG,eAAe;gBAClB,GAAG,YAAY;aACD,CAAA;YAElB,eAAe,CAAC,YAAY,GAAG,SAAS,CACpC,YAAY,CAAC,YAAY,EACzB,YAAY,CACf,CAAA;YACD,eAAe,CAAC,kBAAkB,GAAG,SAAS,CAC1C,YAAY,CAAC,kBAAkB,EAC/B,kBAAkB,CACrB,CAAA;YACD,eAAe,CAAC,oBAAoB,GAAG,SAAS,CAC5C,YAAY,CAAC,oBAAoB,EACjC,oBAAoB,CACvB,CAAA;QACL,CAAC;QAAC,OAAO,CAAU,EAAE,CAAC;YAClB,IAAI,CAAC,CAAC,CAAC,YAAY,SAAS,CAAC;gBAAE,MAAM,IAAI,oBAAoB,EAAE,CAAA;YAC/D,MAAM,GAAG,GAAG,CAAC,CAAC,IAAI,EAAqB,CAAA;YACvC,MAAM,GAAG,CAAA;QACb,CAAC;IACL,CAAC;SAAM,IACH,aAAa,CAAC,kBAAkB,KAAK,EAAE;QACvC,aAAa,CAAC,oBAAoB,KAAK,EAAE;QACzC,aAAa,CAAC,YAAY,KAAK,EAAE,EACnC,CAAC;QACC,MAAM,IAAI,QAAQ,CACd,uFAAuF,EACvF,gBAAgB,CAAC,aAAa,CACjC,CAAA;IACL,CAAC;IAED,MAAM,MAAM,GAAG;QACX,kBAAkB,EAAE,KAAK,CAAC,eAAe,CAAC,kBAAkB,CAAC;QAC7D,YAAY,EAAE,KAAK,CAAC,eAAe,CAAC,YAAY,CAAC;QACjD,6BAA6B,EAAE,KAAK,CAChC,eAAe,CAAC,6BAA6B,IAAI,CAAC,CACrD;QACD,uBAAuB,EAAE,KAAK,CAC1B,eAAe,CAAC,uBAAuB,IAAI,CAAC,CAC/C;QACD,oBAAoB,EAAE,KAAK,CAAC,eAAe,CAAC,oBAAoB,IAAI,CAAC,CAAC;QACtE,GAAG,CAAC,MAAM,sBAAsB,CAAC;YAC7B,YAAY;YACZ,MAAM,EAAE,eAAe;YACvB,MAAM,EAAE,eAAe;YACvB,SAAS;YACT,aAAa;SAChB,CAAC,CAAC;KACN,CAAA;IAED,OAAO,MAAM,CAAA;AACjB,CAAC,CAAA;AAED,MAAM,kBAAkB,GAAG,CAAC,UAAmB,EAAE,EAAE;IAC/C,IACI,UAAU,KAAK,mBAAmB;QAClC,UAAU,KAAK,mBAAmB;QAClC,UAAU,KAAK,mBAAmB,EACpC,CAAC;QACC,MAAM,IAAI,QAAQ,CACd,0BAA0B,EAC1B,gBAAgB,CAAC,aAAa,CACjC,CAAA;IACL,CAAC;AACL,CAAC,CAAA;AAED,MAAM,YAAY,GAAG,KAAK,EAAE,EACxB,UAAU,EACV,eAAe,EACf,YAAY,EACZ,aAAa,EAMhB,EAAE,EAAE;IACD,MAAM,CAAC,WAAW,EAAE,WAAW,EAAE,WAAW,CAAC,GAAG;QAC5C,8BAA8B,CAAC,eAAe,CAAC,OAAO,CAAC,OAAO,CAAC;QAC/D,8BAA8B,CAAC,eAAe,CAAC,OAAO,CAAC,OAAO,CAAC;QAC/D,8BAA8B,CAAC,eAAe,CAAC,OAAO,CAAC,OAAO,CAAC;KAClE,CAAA;IAED,MAAM,aAAa,GAAyC;QACxD,CAAC,mBAAmB,CAAC,EAAE,WAAW;QAClC,CAAC,mBAAmB,CAAC,EAAE,WAAW;QAClC,CAAC,mBAAmB,CAAC,EAAE,WAAW;KACrC,CAAA;IAED,IAAI,UAAU,CAAC,MAAM,KAAK,yBAAyB,EAAE,CAAC;QAClD,MAAM,MAAM,GAAG,kCAAkC,CAAC,SAAS,CACvD,UAAU,CAAC,MAAM,CACpB,CAAA;QAED,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YAClB,MAAM,IAAI,QAAQ,CACd,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,EAClC,gBAAgB,CAAC,aAAa,CACjC,CAAA;QACL,CAAC;QAED,MAAM,CAAC,aAAa,EAAE,UAAU,CAAC,GAAG,MAAM,CAAC,IAAI,CAAA;QAC/C,kBAAkB,CAAC,UAAU,CAAC,CAAA;QAE9B,OAAO,MAAM,eAAe,CAAC;YACzB,UAAU;YACV,aAAa;YACb,aAAa,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE;YACpC,OAAO,EAAE,aAAa;YACtB,SAAS,EAAE,aAAa,CAAC,UAAU,CAAC;YACpC,YAAY;YACZ,eAAe;YACf,WAAW,EAAE,IAAI;SACpB,CAAC,CAAA;IACN,CAAC;IAED,IAAI,UAAU,CAAC,MAAM,KAAK,yBAAyB,EAAE,CAAC;QAClD,MAAM,MAAM,GAAG,kCAAkC,CAAC,SAAS,CACvD,UAAU,CAAC,MAAM,CACpB,CAAA;QAED,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YAClB,MAAM,IAAI,QAAQ,CACd,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,EAClC,gBAAgB,CAAC,aAAa,CACjC,CAAA;QACL,CAAC;QAED,MAAM,CAAC,EAAE,UAAU,EAAE,AAAD,EAAG,IAAI,CAAC,GAAG,MAAM,CAAC,IAAI,CAAA;QAC1C,kBAAkB,CAAC,UAAU,CAAC,CAAA;QAE9B,MAAM,aAAa,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAA;QAE5C,MAAM,WAAW,GAAG;YAChB,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,eAAe;SACxB,CAAA;QAED,MAAM,IAAI,GAAG,UAAU,KAAK,mBAAmB,CAAA;QAE/C,MAAM,iBAAiB,GAAG,IAAI;YAC1B,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC;gBACI,6BAA6B,EAAE,KAAK,CAAC,MAAO,CAAC;gBAC7C,uBAAuB,EAAE,KAAK,CAAC,OAAQ,CAAC;aAC3C,CAAA;QAEP,OAAO;YACH,GAAG,qBAAqB,CAAC;gBACrB,IAAI;gBACJ,SAAS,EAAE,aAAa,CAAC,UAAU,CAAC;gBACpC,aAAa;aAChB,CAAC;YACF,GAAG,iBAAiB;YACpB,OAAO,EAAE,WAAW;YACpB,OAAO,EAAE,KAAK;SACjB,CAAA;IACL,CAAC;IAED,IAAI,UAAU,CAAC,MAAM,KAAK,qBAAqB,EAAE,CAAC;QAC9C,MAAM,MAAM,GAAG,kBAAkB,CAAC,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC,CAAA;QAE9D,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YAClB,MAAM,IAAI,QAAQ,CACd,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,EAClC,gBAAgB,CAAC,aAAa,CACjC,CAAA;QACL,CAAC;QAED,MAAM,CAAC,aAAa,EAAE,UAAU,EAAE,AAAD,EAAG,IAAI,CAAC,GAAG,MAAM,CAAC,IAAI,CAAA;QACvD,kBAAkB,CAAC,UAAU,CAAC,CAAA;QAE9B,OAAO,MAAM,sBAAsB,CAAC;YAChC,MAAM,EAAE,eAAe;YACvB,MAAM,EAAE,aAA8B;YACtC,aAAa,EAAE,gBAAgB,CAAC,IAAI,CAAC;YACrC,SAAS,EAAE,aAAa,CAAC,UAAU,CAAC;YACpC,YAAY;SACf,CAAC,CAAA;IACN,CAAC;IAED,IAAI,UAAU,CAAC,MAAM,KAAK,gCAAgC,EAAE,CAAC;QACzD,OAAO;YACH;gBACI,mBAAmB,EAAE,mBAAmB;gBACxC,IAAI,EAAE;oBACF,IAAI,EAAE,mBAAmB;oBACzB,MAAM,EAAE,KAAK;oBACb,IAAI,EAAE,eAAe;oBACrB,WAAW,EAAE,iBAAiB;iBACjC;aACJ;SACJ,CAAA;IACL,CAAC;IAED,IAAI,UAAU,CAAC,MAAM,KAAK,kCAAkC,EAAE,CAAC;QAC3D,OAAO,MAAM,aAAa,CAAC,OAAO,CAAC;YAC/B,aAAa;YACb,MAAM,EAAE,kCAAkC;YAC1C,aAAa;YACb,MAAM,EAAE,EAAE;SACb,CAAC,CAAA;IACN,CAAC;IAED,IAAI,UAAU,CAAC,MAAM,KAAK,wBAAwB,EAAE,CAAC;QACjD,MAAM,MAAM,GAAG,2BAA2B,CAAC,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC,CAAA;QAEvE,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YAClB,MAAM,IAAI,QAAQ,CACd,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,EAClC,gBAAgB,CAAC,aAAa,CACjC,CAAA;QACL,CAAC;QAED,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,MAAM,CAAC,IAAI,CAAA;QACzC,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAA;QAE1B,MAAM,MAAM,GAAG;YACX,CAAC,UAAU,CAAC,4CAA4C,CAAC,CAAC,EAAE;gBACxD,uBAAuB,EAAE,0BAA0B;gBACnD,YAAY,EAAE,oBAAoB;gBAClC,WAAW,EAAE,KAAK;gBAClB,aAAa,EAAE,KAAK;gBACpB,SAAS,EAAE,UAAU;aACxB;YACD,CAAC,YAAY,CAAC,EAAE;gBACZ,uBAAuB,EAAE,yBAAyB;gBAClD,YAAY,EAAE,sBAAsB;gBACpC,WAAW,EAAE,KAAK;gBAClB,aAAa,EAAE,KAAK;gBACpB,SAAS,EAAE,QAAQ;aACtB;SACJ,CAAA;QAED,OAAO;YACH,MAAM,EAAE,MAAM;iBACT,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,iCAAiC;iBAC1D,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;gBACb,GAAG,MAAM,CAAC,KAAK,CAAC;gBAChB,SAAS,EAAE,aAAa,CAAC,UAAU,CAAC;gBACpC,KAAK;aACR,CAAC,CAAC;SACV,CAAA;IACL,CAAC;IAED,MAAM,IAAI,QAAQ,CACd,uCAAuC,UAAU,CAAC,MAAM,EAAE,EAC1D,gBAAgB,CAAC,aAAa,CACjC,CAAA;AACL,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,EAC7B,OAAO,EACP,QAAQ,EACR,eAAe,EAKlB,EAAE,EAAE;IACD,OAAO,KAAK,EAAE,OAAuB,EAAE,MAAoB,EAAE,EAAE;QAC3D,MAAM,YAAY,GAAG,MAAM,eAAe,CAAC,QAAQ,CAAC,CAAA;QACpD,MAAM,aAAa,GAAG,mBAAmB,CAAC;YACtC,KAAK,EAAE,MAAM,QAAQ,CAAC,QAAQ,CAAC;YAC/B,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC;SAC3B,CAAC,CAAA;QAEF,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAA;QACzB,MAAM,UAAU,GAAG,aAAa,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;QAChD,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;YACtB,MAAM,IAAI,QAAQ,CACd,YAAY,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,OAAO,EACtC,gBAAgB,CAAC,aAAa,CACjC,CAAA;QACL,CAAC;QAED,IAAI,CAAC;YACD,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC;gBAC9B,aAAa;gBACb,eAAe;gBACf,UAAU,EAAE,UAAU,CAAC,IAAI;gBAC3B,YAAY;aACf,CAAC,CAAA;YAEF,OAAO;gBACH,OAAO,EAAE,KAAK;gBACd,EAAE,EAAE,UAAU,CAAC,IAAI,CAAC,EAAE;gBACtB,MAAM;aACT,CAAA;QACL,CAAC;QAAC,OAAO,GAAY,EAAE,CAAC;YACpB,OAAO,CAAC,GAAG,CAAC,wBAAwB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;YAExD,MAAM,KAAK,GAAG;gBACV,8CAA8C;gBAC9C,OAAO,EAAG,GAAW,CAAC,OAAO;gBAC7B,8CAA8C;gBAC9C,IAAI,EAAG,GAAW,CAAC,IAAI;gBACvB,8CAA8C;gBAC9C,IAAI,EAAG,GAAW,CAAC,IAAI,IAAI,CAAC,KAAK;aACpC,CAAA;YAED,OAAO;gBACH,OAAO,EAAE,KAAK;gBACd,EAAE,EAAE,UAAU,CAAC,IAAI,CAAC,EAAE;gBACtB,KAAK;aACR,CAAA;QACL,CAAC;IACL,CAAC,CAAA;AACL,CAAC,CAAA;AAED,MAAM,gBAAgB,GAAG,CAAC,IAAS,EAAiB,EAAE;IAClD,IAAI,IAAI,KAAK,IAAI,IAAI,OAAO,IAAI,IAAI,EAAE,CAAC;QACnC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QAC5B,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAA;IAC/C,CAAC;IAED,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,CAAA;AAChC,CAAC,CAAA"}
|
|
@@ -2,6 +2,8 @@ import { concat, encodePacked, getContract, parseEther, toBytes } from "viem";
|
|
|
2
2
|
import { toPackedUserOperation } from "viem/account-abstraction";
|
|
3
3
|
import { constants, getSingletonPaymaster06Address, getSingletonPaymaster06InitCode, getSingletonPaymaster07Address, getSingletonPaymaster07InitCode, getSingletonPaymaster08Address, getSingletonPaymaster08InitCode } from "./constants.js";
|
|
4
4
|
import { singletonPaymaster06Abi, singletonPaymaster07Abi, singletonPaymaster08Abi } from "./helpers/abi.js";
|
|
5
|
+
import { getPaymasterUtilityWallet } from "./helpers/erc20-utils.js";
|
|
6
|
+
import { getPublicClient } from "./helpers/utils.js";
|
|
5
7
|
export const getDummyPaymasterData = ({ is06, paymaster, paymasterMode }) => {
|
|
6
8
|
let encodedDummyData;
|
|
7
9
|
const validUntil = 0;
|
|
@@ -154,8 +156,9 @@ export const getSignedPaymasterData = async ({ publicClient, signer, userOp, pay
|
|
|
154
156
|
paymasterData
|
|
155
157
|
};
|
|
156
158
|
};
|
|
157
|
-
export const deployPaymasters = async ({
|
|
158
|
-
const
|
|
159
|
+
export const deployPaymasters = async ({ anvilRpc, paymasterSigner }) => {
|
|
160
|
+
const walletClient = await getPaymasterUtilityWallet(anvilRpc);
|
|
161
|
+
const publicClient = await getPublicClient(anvilRpc);
|
|
159
162
|
let nonce = await publicClient.getTransactionCount({
|
|
160
163
|
address: walletClient.account.address
|
|
161
164
|
});
|
|
@@ -164,7 +167,7 @@ export const deployPaymasters = async ({ walletClient, publicClient }) => {
|
|
|
164
167
|
to: constants.deterministicDeployer,
|
|
165
168
|
data: concat([
|
|
166
169
|
constants.create2Salt,
|
|
167
|
-
getSingletonPaymaster06InitCode(
|
|
170
|
+
getSingletonPaymaster06InitCode(paymasterSigner)
|
|
168
171
|
]),
|
|
169
172
|
nonce: nonce++
|
|
170
173
|
});
|
|
@@ -173,7 +176,7 @@ export const deployPaymasters = async ({ walletClient, publicClient }) => {
|
|
|
173
176
|
to: constants.deterministicDeployer,
|
|
174
177
|
data: concat([
|
|
175
178
|
constants.create2Salt,
|
|
176
|
-
getSingletonPaymaster07InitCode(
|
|
179
|
+
getSingletonPaymaster07InitCode(paymasterSigner)
|
|
177
180
|
]),
|
|
178
181
|
nonce: nonce++
|
|
179
182
|
});
|
|
@@ -182,24 +185,24 @@ export const deployPaymasters = async ({ walletClient, publicClient }) => {
|
|
|
182
185
|
to: constants.deterministicDeployer,
|
|
183
186
|
data: concat([
|
|
184
187
|
constants.create2Salt,
|
|
185
|
-
getSingletonPaymaster08InitCode(
|
|
188
|
+
getSingletonPaymaster08InitCode(paymasterSigner)
|
|
186
189
|
]),
|
|
187
190
|
nonce: nonce++
|
|
188
191
|
});
|
|
189
192
|
// Initialize contract instances.
|
|
190
193
|
const [singletonPaymaster06, singletonPaymaster07, singletonPaymaster08] = [
|
|
191
194
|
getContract({
|
|
192
|
-
address: getSingletonPaymaster06Address(
|
|
195
|
+
address: getSingletonPaymaster06Address(paymasterSigner),
|
|
193
196
|
abi: singletonPaymaster06Abi,
|
|
194
197
|
client: walletClient
|
|
195
198
|
}),
|
|
196
199
|
getContract({
|
|
197
|
-
address: getSingletonPaymaster07Address(
|
|
200
|
+
address: getSingletonPaymaster07Address(paymasterSigner),
|
|
198
201
|
abi: singletonPaymaster07Abi,
|
|
199
202
|
client: walletClient
|
|
200
203
|
}),
|
|
201
204
|
getContract({
|
|
202
|
-
address: getSingletonPaymaster08Address(
|
|
205
|
+
address: getSingletonPaymaster08Address(paymasterSigner),
|
|
203
206
|
abi: singletonPaymaster08Abi,
|
|
204
207
|
client: walletClient
|
|
205
208
|
})
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"singletonPaymasters.js","sourceRoot":"","sources":["../singletonPaymasters.ts"],"names":[],"mappings":"AAAA,OAAO,EAQH,MAAM,EACN,YAAY,EACZ,WAAW,EACX,UAAU,EACV,OAAO,EACV,MAAM,MAAM,CAAA;AACb,OAAO,EAEH,qBAAqB,EACxB,MAAM,0BAA0B,CAAA;AACjC,OAAO,EACH,SAAS,EACT,8BAA8B,EAC9B,+BAA+B,EAC/B,8BAA8B,EAC9B,+BAA+B,EAC/B,8BAA8B,EAC9B,+BAA+B,EAClC,MAAM,gBAAgB,CAAA;AACvB,OAAO,EACH,uBAAuB,EACvB,uBAAuB,EACvB,uBAAuB,EAC1B,MAAM,kBAAkB,CAAA;
|
|
1
|
+
{"version":3,"file":"singletonPaymasters.js","sourceRoot":"","sources":["../singletonPaymasters.ts"],"names":[],"mappings":"AAAA,OAAO,EAQH,MAAM,EACN,YAAY,EACZ,WAAW,EACX,UAAU,EACV,OAAO,EACV,MAAM,MAAM,CAAA;AACb,OAAO,EAEH,qBAAqB,EACxB,MAAM,0BAA0B,CAAA;AACjC,OAAO,EACH,SAAS,EACT,8BAA8B,EAC9B,+BAA+B,EAC/B,8BAA8B,EAC9B,+BAA+B,EAC/B,8BAA8B,EAC9B,+BAA+B,EAClC,MAAM,gBAAgB,CAAA;AACvB,OAAO,EACH,uBAAuB,EACvB,uBAAuB,EACvB,uBAAuB,EAC1B,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAA;AACpE,OAAO,EAAsB,eAAe,EAAE,MAAM,oBAAoB,CAAA;AAExE,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,EAClC,IAAI,EACJ,SAAS,EACT,aAAa,EACqD,EAEtC,EAAE;IAC9B,IAAI,gBAAqB,CAAA;IAEzB,MAAM,UAAU,GAAG,CAAC,CAAA;IACpB,MAAM,UAAU,GAAG,CAAC,CAAA;IACpB,MAAM,2BAA2B,GAAG,EAAE,CAAA;IACtC,MAAM,IAAI,GAAG,aAAa,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IAEvD,MAAM,gBAAgB,GAAG,IAAI,CAAA;IAC7B,MAAM,oBAAoB,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IAErE,IAAI,aAAa,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;QACrC,gBAAgB,GAAG,YAAY,CAC3B;YACI,OAAO,EAAE,2BAA2B;YACpC,QAAQ,EAAE,aAAa;YACvB,QAAQ,EAAE,aAAa;YACvB,OAAO,CAAC,YAAY;SACvB,EACD;YACI,oBAAoB;YACpB,UAAU;YACV,UAAU;YACV,SAAS,CAAC,cAAc;SAC3B,CACJ,CAAA;IACL,CAAC;SAAM,CAAC;QACJ,gBAAgB,GAAG,YAAY,CAC3B;YACI,OAAO,EAAE,4CAA4C;YACrD,OAAO,EAAE,+IAA+I;YACxJ,QAAQ,EAAE,aAAa;YACvB,QAAQ,EAAE,aAAa;YACvB,SAAS,EAAE,gBAAgB;YAC3B,SAAS,EAAE,YAAY;YACvB,SAAS,EAAE,eAAe;YAC1B,SAAS,EAAE,8BAA8B;YACzC,SAAS,CAAC,WAAW;SACxB,EACD;YACI,oBAAoB;YACpB,CAAC;YACD,UAAU;YACV,UAAU;YACV,aAAa,CAAC,KAAK;YACnB,SAAS,CAAC,iBAAiB;YAC3B,SAAS,CAAC,YAAY;YACtB,2BAA2B;YAC3B,SAAS,CAAC,QAAQ;SACrB,CACJ,CAAA;QAED,gBAAgB,GAAG,YAAY,CAC3B,CAAC,OAAO,EAAE,OAAO,CAAC,EAClB,CAAC,gBAAgB,EAAE,SAAS,CAAC,cAAc,CAAC,CAC/C,CAAA;IACL,CAAC;IAED,IAAI,IAAI,EAAE,CAAC;QACP,OAAO;YACH,gBAAgB,EAAE,MAAM,CAAC,CAAC,SAAS,EAAE,gBAAgB,CAAC,CAAC;SAC1D,CAAA;IACL,CAAC;IAED,OAAO;QACH,SAAS;QACT,aAAa,EAAE,gBAAgB;KAClC,CAAA;AACL,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,sBAAsB,GAAG,KAAK,EAAE,EACzC,YAAY,EACZ,MAAM,EACN,MAAM,EACN,SAAS,EACT,aAAa,EAOhB,EAAE,EAAE;IACD,IAAI,aAAkB,CAAA;IAEtB,MAAM,UAAU,GAAG,CAAC,CAAA;IACpB,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,SAAS,CAAC,eAAe,CAAA;IAE5E,MAAM,IAAI,GAAG,aAAa,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IACvD,MAAM,gBAAgB,GAAG,IAAI,CAAA;IAC7B,MAAM,oBAAoB,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IAErE,IAAI,aAAa,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;QACrC,aAAa,GAAG,YAAY,CACxB;YACI,OAAO,EAAE,2BAA2B;YACpC,QAAQ,EAAE,aAAa;YACvB,QAAQ,CAAC,aAAa;SACzB,EACD,CAAC,oBAAoB,EAAE,UAAU,EAAE,UAAU,CAAC,CACjD,CAAA;IACL,CAAC;SAAM,CAAC;QACJ,MAAM,2BAA2B,GAAG,EAAE,CAAA;QAEtC,MAAM,kBAAkB,GAAG,KAAK,CAAA;QAChC,MAAM,gBAAgB,GAAG,KAAK,CAAA;QAC9B,MAAM,cAAc,GAAG,KAAK,CAAA;QAE5B,MAAM,iCAAiC,GACnC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YAC/B,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YACjC,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;QAEhC,aAAa,GAAG,YAAY,CACxB;YACI,OAAO,EAAE,4CAA4C;YACrD,OAAO,EAAE,+IAA+I;YACxJ,QAAQ,EAAE,aAAa;YACvB,QAAQ,EAAE,aAAa;YACvB,SAAS,EAAE,gBAAgB;YAC3B,SAAS,EAAE,YAAY;YACvB,SAAS,EAAE,eAAe;YAC1B,SAAS,EAAE,8BAA8B;YACzC,SAAS,CAAC,WAAW;SACxB,EACD;YACI,oBAAoB;YACpB,iCAAiC;YACjC,UAAU;YACV,UAAU;YACV,aAAa,CAAC,KAAK;YACnB,SAAS,CAAC,iBAAiB;YAC3B,SAAS,CAAC,YAAY;YACtB,2BAA2B;YAC3B,SAAS,CAAC,QAAQ;SACrB,CACJ,CAAA;IACL,CAAC;IAED,IAAI,UAAU,IAAI,MAAM,IAAI,kBAAkB,IAAI,MAAM,EAAE,CAAC;QACvD,MAAM,kBAAkB,GAAG,WAAW,CAAC;YACnC,OAAO,EAAE,SAAS;YAClB,GAAG,EAAE,uBAAuB;YAC5B,MAAM,EAAE,YAAY;SACvB,CAAC,CAAA;QAEF,MAAM,IAAI,GAAG,MAAM,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC;YAC/C,IAAI;YACJ;gBACI,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,IAAI;gBACjC,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,YAAY,EAAE,MAAM,CAAC,YAAY;gBACjC,oBAAoB,EAAE,MAAM,CAAC,oBAAoB;gBACjD,kBAAkB,EAAE,MAAM,CAAC,kBAAkB;gBAC7C,YAAY,EAAE,MAAM,CAAC,YAAY;gBACjC,oBAAoB,EAAE,MAAM,CAAC,oBAAoB;gBACjD,gBAAgB,EAAE,MAAM,CAAC,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;gBACpD,SAAS,EAAE,MAAM,CAAC,SAAS;aAC9B;SACJ,CAAC,CAAA;QAEF,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC;YACjC,OAAO,EAAE,EAAE,GAAG,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE;SAClC,CAAC,CAAA;QAEF,OAAO;YACH,gBAAgB,EAAE,MAAM,CAAC,CAAC,SAAS,EAAE,aAAa,EAAE,GAAG,CAAC,CAAC;SAC5D,CAAA;IACL,CAAC;IAED,uBAAuB;IACvB,MAAM,kBAAkB,GAAG,WAAW,CAAC;QACnC,OAAO,EAAE,SAAS;QAClB,GAAG,EAAE,uBAAuB;QAC5B,MAAM,EAAE,YAAY;KACvB,CAAC,CAAA;IAEF,MAAM,IAAI,GAAG,MAAM,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC;QAC/C,IAAI;QACJ,yEAAyE;QACzE,qBAAqB,CAAC;YAClB,GAAG,MAAM;YACT,SAAS;YACT,aAAa;SACC,CAAC;KACtB,CAAC,CAAA;IAEF,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC;QACjC,OAAO,EAAE,EAAE,GAAG,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE;KAClC,CAAC,CAAA;IAEF,aAAa,GAAG,YAAY,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC,CAAA;IAEtE,OAAO;QACH,SAAS;QACT,aAAa;KAChB,CAAA;AACL,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,EAAE,EACnC,QAAQ,EACR,eAAe,EAIlB,EAAE,EAAE;IACD,MAAM,YAAY,GAAG,MAAM,yBAAyB,CAAC,QAAQ,CAAC,CAAA;IAC9D,MAAM,YAAY,GAAG,MAAM,eAAe,CAAC,QAAQ,CAAC,CAAA;IAEpD,IAAI,KAAK,GAAG,MAAM,YAAY,CAAC,mBAAmB,CAAC;QAC/C,OAAO,EAAE,YAAY,CAAC,OAAO,CAAC,OAAO;KACxC,CAAC,CAAA;IAEF,iCAAiC;IACjC,MAAM,YAAY,CAAC,eAAe,CAAC;QAC/B,EAAE,EAAE,SAAS,CAAC,qBAAqB;QACnC,IAAI,EAAE,MAAM,CAAC;YACT,SAAS,CAAC,WAAW;YACrB,+BAA+B,CAAC,eAAe,CAAC;SACnD,CAAC;QACF,KAAK,EAAE,KAAK,EAAE;KACjB,CAAC,CAAA;IAEF,iCAAiC;IACjC,MAAM,YAAY,CAAC,eAAe,CAAC;QAC/B,EAAE,EAAE,SAAS,CAAC,qBAAqB;QACnC,IAAI,EAAE,MAAM,CAAC;YACT,SAAS,CAAC,WAAW;YACrB,+BAA+B,CAAC,eAAe,CAAC;SACnD,CAAC;QACF,KAAK,EAAE,KAAK,EAAE;KACjB,CAAC,CAAA;IAEF,iCAAiC;IACjC,MAAM,YAAY,CAAC,eAAe,CAAC;QAC/B,EAAE,EAAE,SAAS,CAAC,qBAAqB;QACnC,IAAI,EAAE,MAAM,CAAC;YACT,SAAS,CAAC,WAAW;YACrB,+BAA+B,CAAC,eAAe,CAAC;SACnD,CAAC;QACF,KAAK,EAAE,KAAK,EAAE;KACjB,CAAC,CAAA;IAEF,iCAAiC;IACjC,MAAM,CAAC,oBAAoB,EAAE,oBAAoB,EAAE,oBAAoB,CAAC,GAAG;QACvE,WAAW,CAAC;YACR,OAAO,EAAE,8BAA8B,CAAC,eAAe,CAAC;YACxD,GAAG,EAAE,uBAAuB;YAC5B,MAAM,EAAE,YAAY;SACvB,CAAC;QACF,WAAW,CAAC;YACR,OAAO,EAAE,8BAA8B,CAAC,eAAe,CAAC;YACxD,GAAG,EAAE,uBAAuB;YAC5B,MAAM,EAAE,YAAY;SACvB,CAAC;QACF,WAAW,CAAC;YACR,OAAO,EAAE,8BAA8B,CAAC,eAAe,CAAC;YACxD,GAAG,EAAE,uBAAuB;YAC5B,MAAM,EAAE,YAAY;SACvB,CAAC;KACL,CAAA;IAED,uBAAuB;IACvB,MAAM,oBAAoB,CAAC,KAAK,CAAC,OAAO,CAAC;QACrC,KAAK,EAAE,UAAU,CAAC,IAAI,CAAC;QACvB,KAAK,EAAE,KAAK,EAAE;KACjB,CAAC,CAAA;IAEF,MAAM,oBAAoB,CAAC,KAAK,CAAC,OAAO,CAAC;QACrC,KAAK,EAAE,UAAU,CAAC,IAAI,CAAC;QACvB,KAAK,EAAE,KAAK,EAAE;KACjB,CAAC,CAAA;IAEF,MAAM,oBAAoB,CAAC,KAAK,CAAC,OAAO,CAAC;QACrC,KAAK,EAAE,UAAU,CAAC,IAAI,CAAC;QACvB,KAAK,EAAE,KAAK,EAAE;KACjB,CAAC,CAAA;AACN,CAAC,CAAA"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import { type Account, type Address, type Chain, type
|
|
2
|
-
export declare const
|
|
1
|
+
import { type Account, type Address, type Chain, type Transport, type WalletClient } from "viem";
|
|
2
|
+
export declare const getPaymasterUtilityWallet: (anvilRpc: string) => Promise<WalletClient<Transport, Chain, Account>>;
|
|
3
|
+
export declare const deployErc20Token: (anvilRpc: string) => Promise<void>;
|
|
3
4
|
export declare const tokenBalanceOf: (holder: Address, anvilRpc: string) => Promise<bigint>;
|
|
4
5
|
export declare const sudoMintTokens: ({ amount, to, anvilRpc }: {
|
|
5
6
|
amount: bigint;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"erc20-utils.d.ts","sourceRoot":"","sources":["../../helpers/erc20-utils.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"erc20-utils.d.ts","sourceRoot":"","sources":["../../helpers/erc20-utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAEH,KAAK,OAAO,EACZ,KAAK,OAAO,EACZ,KAAK,KAAK,EACV,KAAK,SAAS,EACd,KAAK,YAAY,EAWpB,MAAM,MAAM,CAAA;AAYb,eAAO,MAAM,yBAAyB,GAClC,UAAU,MAAM,KACjB,OAAO,CAAC,YAAY,CAAC,SAAS,EAAE,KAAK,EAAE,OAAO,CAAC,CA+BjD,CAAA;AAED,eAAO,MAAM,gBAAgB,GAAU,UAAU,MAAM,kBAWtD,CAAA;AAED,eAAO,MAAM,cAAc,GAAU,QAAQ,OAAO,EAAE,UAAU,MAAM,oBAarE,CAAA;AAED,eAAO,MAAM,cAAc,GAAU,0BAIlC;IACC,MAAM,EAAE,MAAM,CAAA;IACd,EAAE,EAAE,OAAO,CAAA;IACX,QAAQ,EAAE,MAAM,CAAA;CACnB,kBAWA,CAAA;AAED,eAAO,MAAM,YAAY,eAIvB,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
|
@@ -1,6 +1,9 @@
|
|
|
1
|
+
import { erc20Address, sudoMintTokens } from "./helpers/erc20-utils.js";
|
|
1
2
|
export declare const paymaster: import("prool").DefineInstanceReturnType<{}, {
|
|
2
3
|
anvilRpc: string;
|
|
3
4
|
port: number;
|
|
4
5
|
altoRpc: string;
|
|
6
|
+
host?: string;
|
|
5
7
|
}>;
|
|
8
|
+
export { erc20Address, sudoMintTokens };
|
|
6
9
|
//# sourceMappingURL=index.d.ts.map
|
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":"AAKA,OAAO,EAEH,YAAY,EACZ,cAAc,EACjB,MAAM,0BAA0B,CAAA;AAKjC,eAAO,MAAM,SAAS;cAMH,MAAM;UAAQ,MAAM;aAAW,MAAM;WAAS,MAAM;EA8CtE,CAAA;AAED,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,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;AA2Ub,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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { type Account, type Address, type Chain, type Hex, type PublicClient, type Transport, type WalletClient } from "viem";
|
|
2
2
|
import { type UserOperation } from "viem/account-abstraction";
|
|
3
|
-
import type
|
|
3
|
+
import { type PaymasterMode } from "./helpers/utils.js";
|
|
4
4
|
export declare const getDummyPaymasterData: ({ is06, paymaster, paymasterMode }: {
|
|
5
5
|
is06: boolean;
|
|
6
6
|
paymaster: Address;
|
|
@@ -26,8 +26,8 @@ export declare const getSignedPaymasterData: ({ publicClient, signer, userOp, pa
|
|
|
26
26
|
paymasterData: `0x${string}`;
|
|
27
27
|
paymasterAndData?: undefined;
|
|
28
28
|
}>;
|
|
29
|
-
export declare const deployPaymasters: ({
|
|
30
|
-
|
|
31
|
-
|
|
29
|
+
export declare const deployPaymasters: ({ anvilRpc, paymasterSigner }: {
|
|
30
|
+
anvilRpc: string;
|
|
31
|
+
paymasterSigner: Address;
|
|
32
32
|
}) => Promise<void>;
|
|
33
33
|
//# 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,EAMpB,MAAM,MAAM,CAAA;AACb,OAAO,EACH,KAAK,aAAa,EAErB,MAAM,0BAA0B,CAAA;
|
|
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,EAMpB,MAAM,MAAM,CAAA;AACb,OAAO,EACH,KAAK,aAAa,EAErB,MAAM,0BAA0B,CAAA;AAgBjC,OAAO,EAAE,KAAK,aAAa,EAAmB,MAAM,oBAAoB,CAAA;AAExE,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;AAED,eAAO,MAAM,gBAAgB,GAAU,+BAGpC;IACC,QAAQ,EAAE,MAAM,CAAA;IAChB,eAAe,EAAE,OAAO,CAAA;CAC3B,kBAwEA,CAAA"}
|
package/helpers/erc20-utils.ts
CHANGED
|
@@ -1,19 +1,23 @@
|
|
|
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
22
|
const erc20Bytecode = concat([
|
|
19
23
|
"0x60a060405234801561001057600080fd5b50604051610ff0380380610ff083398101604081905261002f9161022c565b6040518060400160405280600981526020016805465737445524332360bc1b8152506040518060400160405280600381526020016205432360ec1b815250816003908161007c919061034d565b506004610089828261034d565b5050506100a63369d3c21bcecceda10000006100b160201b60201c565b60ff166080526104a3565b6001600160a01b0382166100e457600060405163ec442f0560e01b81526004016100db9190610430565b60405180910390fd5b6100f0600083836100f4565b5050565b6001600160a01b03831661011f5780600260008282546101149190610454565b9091555061017e9050565b6001600160a01b0383166000908152602081905260409020548181101561015f5783818360405163391434e360e21b81526004016100db9392919061046d565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b03821661019a576002805482900390556101b9565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516101fc9190610495565b60405180910390a3505050565b60ff8116811461021857600080fd5b50565b805161022681610209565b92915050565b60006020828403121561024157610241600080fd5b600061024d848461021b565b949350505050565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052602260045260246000fd5b60028104600182168061029557607f821691505b6020821081036102a7576102a761026b565b50919050565b60006102266102b98381565b90565b6102c5836102ad565b815460001960089490940293841b1916921b91909117905550565b60006102ed8184846102bc565b505050565b818110156100f0576103056000826102e0565b6001016102f2565b601f8211156102ed576000818152602090206020601f850104810160208510156103345750805b6103466020601f8601048301826102f2565b5050505050565b81516001600160401b0381111561036657610366610255565b6103708254610281565b61037b82828561030d565b6020601f8311600181146103af57600084156103975750858201515b600019600886021c1981166002860217865550610408565b600085815260208120601f198616915b828110156103df57888501518255602094850194600190920191016103bf565b868310156103fb5784890151600019601f89166008021c191682555b6001600288020188555050505b505050505050565b60006001600160a01b038216610226565b61042a81610410565b82525050565b602081016102268284610421565b634e487b7160e01b600052601160045260246000fd5b808201808211156102265761022661043e565b8061042a565b6060810161047b8286610421565b6104886020830185610467565b61024d6040830184610467565b602081016102268284610467565b608051610b326104be60003960006101650152610b326000f3fe608060405234801561001057600080fd5b50600436106100d45760003560e01c8063313ce56711610081578063a9059cbb1161005b578063a9059cbb146101cf578063dd62ed3e146101e2578063fb4dcefa1461022857600080fd5b8063313ce5671461016357806370a082311461019157806395d89b41146101c757600080fd5b806318160ddd116100b257806318160ddd1461012c57806323b872dd1461013d5780632d688ca81461015057600080fd5b806305ea5c22146100d957806306fdde03146100ee578063095ea7b31461010c575b600080fd5b6100ec6100e7366004610868565b61023b565b005b6100f661024b565b604051610103919061092c565b60405180910390f35b61011f61011a366004610944565b6102dd565b604051610103919061098b565b6002545b604051610103919061099f565b61011f61014b366004610868565b6102f7565b6100ec61015e366004610944565b61031b565b7f000000000000000000000000000000000000000000000000000000000000000060405161010391906109b6565b61013061019f3660046109c4565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100f6610329565b61011f6101dd366004610944565b610338565b6101306101f03660046109ed565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6100ec6102363660046109ed565b610346565b61024683838361037c565b505050565b60606003805461025a90610a4f565b80601f016020809104026020016040519081016040528092919081815260200182805461028690610a4f565b80156102d35780601f106102a8576101008083540402835291602001916102d3565b820191906000526020600020905b8154815290600101906020018083116102b657829003601f168201915b5050505050905090565b6000336102eb81858561037c565b60019150505b92915050565b600033610305858285610389565b610310858585610441565b506001949350505050565b61032582826104ec565b5050565b60606004805461025a90610a4f565b6000336102eb818585610441565b61032582826103778573ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b610441565b6102468383836001610548565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461043b578181101561042c578281836040517ffb8f41b200000000000000000000000000000000000000000000000000000000815260040161042393929190610a84565b60405180910390fd5b61043b84848484036000610548565b50505050565b73ffffffffffffffffffffffffffffffffffffffff83166104915760006040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081526004016104239190610aac565b73ffffffffffffffffffffffffffffffffffffffff82166104e15760006040517fec442f050000000000000000000000000000000000000000000000000000000081526004016104239190610aac565b61024683838361068e565b73ffffffffffffffffffffffffffffffffffffffff821661053c5760006040517fec442f050000000000000000000000000000000000000000000000000000000081526004016104239190610aac565b6103256000838361068e565b73ffffffffffffffffffffffffffffffffffffffff84166105985760006040517fe602df050000000000000000000000000000000000000000000000000000000081526004016104239190610aac565b73ffffffffffffffffffffffffffffffffffffffff83166105e85760006040517f94280d620000000000000000000000000000000000000000000000000000000081526004016104239190610aac565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152600160209081526040808320938716835292905220829055801561043b578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610680919061099f565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff83166106c65780600260008282546106bb9190610ae9565b909155506107589050565b73ffffffffffffffffffffffffffffffffffffffff83166000908152602081905260409020548181101561072c578381836040517fe450d38c00000000000000000000000000000000000000000000000000000000815260040161042393929190610a84565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff8216610781576002805482900390556107ad565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161080a919061099f565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff82166102f1565b61083e81610817565b811461084957600080fd5b50565b80356102f181610835565b8061083e565b80356102f181610857565b60008060006060848603121561088057610880600080fd5b600061088c868661084c565b935050602061089d8682870161084c565b92505060406108ae8682870161085d565b9150509250925092565b60005b838110156108d35781810151838201526020016108bb565b50506000910152565b60006108e6825190565b8084526020840193506108fd8185602086016108b8565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920192915050565b6020808252810161093d81846108dc565b9392505050565b6000806040838503121561095a5761095a600080fd5b6000610966858561084c565b92505060206109778582860161085d565b9150509250929050565b8015155b82525050565b602081016102f18284610981565b80610985565b602081016102f18284610999565b60ff8116610985565b602081016102f182846109ad565b6000602082840312156109d9576109d9600080fd5b60006109e5848461084c565b949350505050565b60008060408385031215610a0357610a03600080fd5b6000610a0f858561084c565b92505060206109778582860161084c565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600281046001821680610a6357607f821691505b602082108103610a7557610a75610a20565b50919050565b61098581610817565b60608101610a928286610a7b565b610a9f6020830185610999565b6109e56040830184610999565b602081016102f18284610a7b565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808201808211156102f1576102f1610aba56fea2646970667358221220d40f68e247510ec8b7876d327ac47b949de248d0626aaf2670151c5e84ee6b4a64736f6c634300081a0033",
|
|
@@ -23,11 +27,47 @@ const erc20Bytecode = concat([
|
|
|
23
27
|
const create2Salt =
|
|
24
28
|
"0x0000000000000000000000000000000000000000000000000000000000000000"
|
|
25
29
|
|
|
26
|
-
export const
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
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")
|
|
52
|
+
})
|
|
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
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
export const deployErc20Token = async (anvilRpc: string) => {
|
|
66
|
+
const publicClient = await getPublicClient(anvilRpc)
|
|
67
|
+
|
|
30
68
|
if ((await publicClient.getCode({ address: erc20Address })) === undefined) {
|
|
69
|
+
const walletClient = await getPaymasterUtilityWallet(anvilRpc)
|
|
70
|
+
|
|
31
71
|
await walletClient.sendTransaction({
|
|
32
72
|
to: "0x4e59b44847b379578588920ca78fbf26c0b4956c",
|
|
33
73
|
data: concat([create2Salt, erc20Bytecode])
|
|
@@ -59,10 +99,7 @@ export const sudoMintTokens = async ({
|
|
|
59
99
|
to: Address
|
|
60
100
|
anvilRpc: string
|
|
61
101
|
}) => {
|
|
62
|
-
const walletClient = await
|
|
63
|
-
addressIndex: 0,
|
|
64
|
-
anvilRpc
|
|
65
|
-
})
|
|
102
|
+
const walletClient = await getPaymasterUtilityWallet(anvilRpc)
|
|
66
103
|
|
|
67
104
|
await walletClient.sendTransaction({
|
|
68
105
|
to: erc20Address,
|
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,43 +1,45 @@
|
|
|
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
|
-
|
|
4
|
+
import { http, createWalletClient } from "viem"
|
|
5
|
+
import { privateKeyToAccount } from "viem/accounts"
|
|
6
|
+
import {
|
|
7
|
+
deployErc20Token,
|
|
8
|
+
erc20Address,
|
|
9
|
+
sudoMintTokens
|
|
10
|
+
} from "./helpers/erc20-utils.js"
|
|
11
|
+
import { getChain } from "./helpers/utils.js"
|
|
8
12
|
import { createRpcHandler } from "./relay.js"
|
|
9
13
|
import { deployPaymasters } from "./singletonPaymasters.js"
|
|
10
14
|
|
|
11
15
|
export const paymaster = defineInstance(
|
|
12
16
|
({
|
|
13
17
|
anvilRpc,
|
|
18
|
+
altoRpc,
|
|
14
19
|
port: _port,
|
|
15
|
-
|
|
16
|
-
}: { anvilRpc: string; port: number; altoRpc: string }) => {
|
|
20
|
+
host: _host = "localhost"
|
|
21
|
+
}: { anvilRpc: string; port: number; altoRpc: string; host?: string }) => {
|
|
17
22
|
const app = Fastify({})
|
|
18
23
|
|
|
19
24
|
return {
|
|
20
25
|
_internal: {},
|
|
21
|
-
host:
|
|
26
|
+
host: _host,
|
|
22
27
|
port: _port,
|
|
23
28
|
name: "mock-paymaster",
|
|
24
29
|
start: async ({ port = _port }) => {
|
|
25
|
-
const
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
transport: http(anvilRpc),
|
|
32
|
-
chain
|
|
33
|
-
})
|
|
34
|
-
const bundler = createBundlerClient({
|
|
35
|
-
chain,
|
|
36
|
-
transport: http(altoRpc)
|
|
30
|
+
const paymasterSigner = createWalletClient({
|
|
31
|
+
chain: await getChain(anvilRpc),
|
|
32
|
+
account: privateKeyToAccount(
|
|
33
|
+
"0xbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
|
|
34
|
+
),
|
|
35
|
+
transport: http(anvilRpc)
|
|
37
36
|
})
|
|
38
37
|
|
|
39
|
-
await deployPaymasters({
|
|
40
|
-
|
|
38
|
+
await deployPaymasters({
|
|
39
|
+
anvilRpc,
|
|
40
|
+
paymasterSigner: paymasterSigner.account.address
|
|
41
|
+
})
|
|
42
|
+
await deployErc20Token(anvilRpc)
|
|
41
43
|
|
|
42
44
|
app.register(cors, {
|
|
43
45
|
origin: "*",
|
|
@@ -45,9 +47,9 @@ export const paymaster = defineInstance(
|
|
|
45
47
|
})
|
|
46
48
|
|
|
47
49
|
const rpcHandler = createRpcHandler({
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
paymasterSigner
|
|
50
|
+
altoRpc,
|
|
51
|
+
anvilRpc,
|
|
52
|
+
paymasterSigner
|
|
51
53
|
})
|
|
52
54
|
app.post("/", {}, rpcHandler)
|
|
53
55
|
|
|
@@ -55,7 +57,7 @@ export const paymaster = defineInstance(
|
|
|
55
57
|
return reply.code(200).send({ message: "pong" })
|
|
56
58
|
})
|
|
57
59
|
|
|
58
|
-
await app.listen({ host:
|
|
60
|
+
await app.listen({ host: _host, port })
|
|
59
61
|
},
|
|
60
62
|
stop: async () => {
|
|
61
63
|
app.close()
|
|
@@ -63,3 +65,5 @@ export const paymaster = defineInstance(
|
|
|
63
65
|
}
|
|
64
66
|
}
|
|
65
67
|
)
|
|
68
|
+
|
|
69
|
+
export { erc20Address, sudoMintTokens }
|