@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/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
# @pimlico/mock-paymaster
|
|
2
2
|
|
|
3
|
+
## 0.0.5
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- a13670ca63d8be655c8ffe35c5cadf325d8ddc2f: Export erc20Address and sudoMintTokens
|
|
8
|
+
|
|
9
|
+
## 0.0.4
|
|
10
|
+
|
|
11
|
+
### Patch Changes
|
|
12
|
+
|
|
13
|
+
- e1cf6a5a70d2084d6222f646e90033cd4a6830c4: Added host input param
|
|
14
|
+
|
|
3
15
|
## 0.0.3
|
|
4
16
|
|
|
5
17
|
### Patch Changes
|
|
@@ -1,15 +1,40 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.erc20Address = exports.sudoMintTokens = exports.tokenBalanceOf = exports.deployErc20Token = void 0;
|
|
3
|
+
exports.erc20Address = exports.sudoMintTokens = exports.tokenBalanceOf = exports.deployErc20Token = exports.getPaymasterUtilityWallet = void 0;
|
|
4
4
|
const viem_1 = require("viem");
|
|
5
|
+
const accounts_1 = require("viem/accounts");
|
|
5
6
|
const utils_js_1 = require("./utils.js");
|
|
6
7
|
const erc20Bytecode = (0, viem_1.concat)([
|
|
7
8
|
"0x60a060405234801561001057600080fd5b50604051610ff0380380610ff083398101604081905261002f9161022c565b6040518060400160405280600981526020016805465737445524332360bc1b8152506040518060400160405280600381526020016205432360ec1b815250816003908161007c919061034d565b506004610089828261034d565b5050506100a63369d3c21bcecceda10000006100b160201b60201c565b60ff166080526104a3565b6001600160a01b0382166100e457600060405163ec442f0560e01b81526004016100db9190610430565b60405180910390fd5b6100f0600083836100f4565b5050565b6001600160a01b03831661011f5780600260008282546101149190610454565b9091555061017e9050565b6001600160a01b0383166000908152602081905260409020548181101561015f5783818360405163391434e360e21b81526004016100db9392919061046d565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b03821661019a576002805482900390556101b9565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516101fc9190610495565b60405180910390a3505050565b60ff8116811461021857600080fd5b50565b805161022681610209565b92915050565b60006020828403121561024157610241600080fd5b600061024d848461021b565b949350505050565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052602260045260246000fd5b60028104600182168061029557607f821691505b6020821081036102a7576102a761026b565b50919050565b60006102266102b98381565b90565b6102c5836102ad565b815460001960089490940293841b1916921b91909117905550565b60006102ed8184846102bc565b505050565b818110156100f0576103056000826102e0565b6001016102f2565b601f8211156102ed576000818152602090206020601f850104810160208510156103345750805b6103466020601f8601048301826102f2565b5050505050565b81516001600160401b0381111561036657610366610255565b6103708254610281565b61037b82828561030d565b6020601f8311600181146103af57600084156103975750858201515b600019600886021c1981166002860217865550610408565b600085815260208120601f198616915b828110156103df57888501518255602094850194600190920191016103bf565b868310156103fb5784890151600019601f89166008021c191682555b6001600288020188555050505b505050505050565b60006001600160a01b038216610226565b61042a81610410565b82525050565b602081016102268284610421565b634e487b7160e01b600052601160045260246000fd5b808201808211156102265761022661043e565b8061042a565b6060810161047b8286610421565b6104886020830185610467565b61024d6040830184610467565b602081016102268284610467565b608051610b326104be60003960006101650152610b326000f3fe608060405234801561001057600080fd5b50600436106100d45760003560e01c8063313ce56711610081578063a9059cbb1161005b578063a9059cbb146101cf578063dd62ed3e146101e2578063fb4dcefa1461022857600080fd5b8063313ce5671461016357806370a082311461019157806395d89b41146101c757600080fd5b806318160ddd116100b257806318160ddd1461012c57806323b872dd1461013d5780632d688ca81461015057600080fd5b806305ea5c22146100d957806306fdde03146100ee578063095ea7b31461010c575b600080fd5b6100ec6100e7366004610868565b61023b565b005b6100f661024b565b604051610103919061092c565b60405180910390f35b61011f61011a366004610944565b6102dd565b604051610103919061098b565b6002545b604051610103919061099f565b61011f61014b366004610868565b6102f7565b6100ec61015e366004610944565b61031b565b7f000000000000000000000000000000000000000000000000000000000000000060405161010391906109b6565b61013061019f3660046109c4565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100f6610329565b61011f6101dd366004610944565b610338565b6101306101f03660046109ed565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6100ec6102363660046109ed565b610346565b61024683838361037c565b505050565b60606003805461025a90610a4f565b80601f016020809104026020016040519081016040528092919081815260200182805461028690610a4f565b80156102d35780601f106102a8576101008083540402835291602001916102d3565b820191906000526020600020905b8154815290600101906020018083116102b657829003601f168201915b5050505050905090565b6000336102eb81858561037c565b60019150505b92915050565b600033610305858285610389565b610310858585610441565b506001949350505050565b61032582826104ec565b5050565b60606004805461025a90610a4f565b6000336102eb818585610441565b61032582826103778573ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b610441565b6102468383836001610548565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461043b578181101561042c578281836040517ffb8f41b200000000000000000000000000000000000000000000000000000000815260040161042393929190610a84565b60405180910390fd5b61043b84848484036000610548565b50505050565b73ffffffffffffffffffffffffffffffffffffffff83166104915760006040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081526004016104239190610aac565b73ffffffffffffffffffffffffffffffffffffffff82166104e15760006040517fec442f050000000000000000000000000000000000000000000000000000000081526004016104239190610aac565b61024683838361068e565b73ffffffffffffffffffffffffffffffffffffffff821661053c5760006040517fec442f050000000000000000000000000000000000000000000000000000000081526004016104239190610aac565b6103256000838361068e565b73ffffffffffffffffffffffffffffffffffffffff84166105985760006040517fe602df050000000000000000000000000000000000000000000000000000000081526004016104239190610aac565b73ffffffffffffffffffffffffffffffffffffffff83166105e85760006040517f94280d620000000000000000000000000000000000000000000000000000000081526004016104239190610aac565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152600160209081526040808320938716835292905220829055801561043b578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610680919061099f565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff83166106c65780600260008282546106bb9190610ae9565b909155506107589050565b73ffffffffffffffffffffffffffffffffffffffff83166000908152602081905260409020548181101561072c578381836040517fe450d38c00000000000000000000000000000000000000000000000000000000815260040161042393929190610a84565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff8216610781576002805482900390556107ad565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161080a919061099f565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff82166102f1565b61083e81610817565b811461084957600080fd5b50565b80356102f181610835565b8061083e565b80356102f181610857565b60008060006060848603121561088057610880600080fd5b600061088c868661084c565b935050602061089d8682870161084c565b92505060406108ae8682870161085d565b9150509250925092565b60005b838110156108d35781810151838201526020016108bb565b50506000910152565b60006108e6825190565b8084526020840193506108fd8185602086016108b8565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920192915050565b6020808252810161093d81846108dc565b9392505050565b6000806040838503121561095a5761095a600080fd5b6000610966858561084c565b92505060206109778582860161085d565b9150509250929050565b8015155b82525050565b602081016102f18284610981565b80610985565b602081016102f18284610999565b60ff8116610985565b602081016102f182846109ad565b6000602082840312156109d9576109d9600080fd5b60006109e5848461084c565b949350505050565b60008060408385031215610a0357610a03600080fd5b6000610a0f858561084c565b92505060206109778582860161084c565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600281046001821680610a6357607f821691505b602082108103610a7557610a75610a20565b50919050565b61098581610817565b60608101610a928286610a7b565b610a9f6020830185610999565b6109e56040830184610999565b602081016102f18284610a7b565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808201808211156102f1576102f1610aba56fea2646970667358221220d40f68e247510ec8b7876d327ac47b949de248d0626aaf2670151c5e84ee6b4a64736f6c634300081a0033",
|
|
8
9
|
(0, viem_1.pad)((0, viem_1.toHex)(18n))
|
|
9
10
|
]);
|
|
10
11
|
const create2Salt = "0x0000000000000000000000000000000000000000000000000000000000000000";
|
|
11
|
-
const
|
|
12
|
+
const getPaymasterUtilityWallet = async (anvilRpc) => {
|
|
13
|
+
const account = (0, accounts_1.privateKeyToAccount)("0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa");
|
|
14
|
+
const publicClient = await (0, utils_js_1.getPublicClient)(anvilRpc);
|
|
15
|
+
const balance = await publicClient.getBalance({ address: account.address });
|
|
16
|
+
if (balance === 0n) {
|
|
17
|
+
const testClient = (0, viem_1.createTestClient)({
|
|
18
|
+
mode: "anvil",
|
|
19
|
+
transport: (0, viem_1.http)(anvilRpc)
|
|
20
|
+
});
|
|
21
|
+
await testClient.setBalance({
|
|
22
|
+
address: account.address,
|
|
23
|
+
value: (0, viem_1.parseEther)("1000")
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
const walletClient = (0, viem_1.createWalletClient)({
|
|
27
|
+
chain: await (0, utils_js_1.getChain)(anvilRpc),
|
|
28
|
+
account,
|
|
29
|
+
transport: (0, viem_1.http)(anvilRpc)
|
|
30
|
+
});
|
|
31
|
+
return walletClient;
|
|
32
|
+
};
|
|
33
|
+
exports.getPaymasterUtilityWallet = getPaymasterUtilityWallet;
|
|
34
|
+
const deployErc20Token = async (anvilRpc) => {
|
|
35
|
+
const publicClient = await (0, utils_js_1.getPublicClient)(anvilRpc);
|
|
12
36
|
if ((await publicClient.getCode({ address: exports.erc20Address })) === undefined) {
|
|
37
|
+
const walletClient = await (0, exports.getPaymasterUtilityWallet)(anvilRpc);
|
|
13
38
|
await walletClient.sendTransaction({
|
|
14
39
|
to: "0x4e59b44847b379578588920ca78fbf26c0b4956c",
|
|
15
40
|
data: (0, viem_1.concat)([create2Salt, erc20Bytecode])
|
|
@@ -31,10 +56,7 @@ const tokenBalanceOf = async (holder, anvilRpc) => {
|
|
|
31
56
|
};
|
|
32
57
|
exports.tokenBalanceOf = tokenBalanceOf;
|
|
33
58
|
const sudoMintTokens = async ({ amount, to, anvilRpc }) => {
|
|
34
|
-
const walletClient = await (0,
|
|
35
|
-
addressIndex: 0,
|
|
36
|
-
anvilRpc
|
|
37
|
-
});
|
|
59
|
+
const walletClient = await (0, exports.getPaymasterUtilityWallet)(anvilRpc);
|
|
38
60
|
await walletClient.sendTransaction({
|
|
39
61
|
to: exports.erc20Address,
|
|
40
62
|
value: 0n,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"erc20-utils.js","sourceRoot":"","sources":["../../helpers/erc20-utils.ts"],"names":[],"mappings":";;;AAAA,+
|
|
1
|
+
{"version":3,"file":"erc20-utils.js","sourceRoot":"","sources":["../../helpers/erc20-utils.ts"],"names":[],"mappings":"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"}
|
package/_cjs/helpers/utils.js
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.isTokenSupported = exports.
|
|
3
|
+
exports.isTokenSupported = exports.getPublicClient = exports.getChain = exports.maxBigInt = void 0;
|
|
4
4
|
const viem_1 = require("viem");
|
|
5
|
-
const accounts_1 = require("viem/accounts");
|
|
6
5
|
const erc20_utils_js_1 = require("./erc20-utils.js");
|
|
7
6
|
const schema_js_1 = require("./schema.js");
|
|
8
7
|
const maxBigInt = (a, b) => {
|
|
@@ -40,17 +39,6 @@ const getPublicClient = async (anvilRpc) => {
|
|
|
40
39
|
});
|
|
41
40
|
};
|
|
42
41
|
exports.getPublicClient = getPublicClient;
|
|
43
|
-
const getAnvilWalletClient = async ({ addressIndex, anvilRpc }) => {
|
|
44
|
-
const chain = await (0, exports.getChain)(anvilRpc);
|
|
45
|
-
return (0, viem_1.createWalletClient)({
|
|
46
|
-
account: (0, accounts_1.mnemonicToAccount)("test test test test test test test test test test test junk", {
|
|
47
|
-
addressIndex
|
|
48
|
-
}),
|
|
49
|
-
chain,
|
|
50
|
-
transport: (0, viem_1.http)(anvilRpc)
|
|
51
|
-
});
|
|
52
|
-
};
|
|
53
|
-
exports.getAnvilWalletClient = getAnvilWalletClient;
|
|
54
42
|
const isTokenSupported = async (token) => {
|
|
55
43
|
if (token !== erc20_utils_js_1.erc20Address) {
|
|
56
44
|
throw new schema_js_1.RpcError("Token is not supported", schema_js_1.ValidationErrors.InvalidFields);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../helpers/utils.ts"],"names":[],"mappings":";;;AAAA,+
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../helpers/utils.ts"],"names":[],"mappings":";;;AAAA,+BAQa;AACb,qDAA+C;AAC/C,2CAAwD;AAGjD,MAAM,SAAS,GAAG,CAAC,CAAS,EAAE,CAAS,EAAE,EAAE;IAC9C,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;AACxB,CAAC,CAAA;AAFY,QAAA,SAAS,aAErB;AAEM,MAAM,QAAQ,GAAG,KAAK,EAAE,MAAc,EAAkB,EAAE;IAC7D,MAAM,UAAU,GAAG,IAAA,yBAAkB,EAAC;QAClC,SAAS,EAAE,IAAA,WAAI,EAAC,MAAM,CAAC;KAC1B,CAAC,CAAA;IAEF,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC,UAAU,EAAE,CAAA;IAE7C,OAAO,IAAA,kBAAW,EAAC;QACf,EAAE,EAAE,OAAO;QACX,IAAI,EAAE,SAAS,OAAO,EAAE;QACxB,cAAc,EAAE;YACZ,IAAI,EAAE,KAAK;YACX,MAAM,EAAE,KAAK;YACb,QAAQ,EAAE,EAAE;SACf;QACD,OAAO,EAAE;YACL,OAAO,EAAE;gBACL,IAAI,EAAE,CAAC,MAAM,CAAC;aACjB;SACJ;KACJ,CAAC,CAAA;AACN,CAAC,CAAA;AArBY,QAAA,QAAQ,YAqBpB;AAEM,MAAM,eAAe,GAAG,KAAK,EAChC,QAAgB,EACuB,EAAE;IACzC,MAAM,SAAS,GAAG,IAAA,WAAI,EAAC,QAAQ,EAAE,EAOhC,CAAC,CAAA;IAEF,MAAM,KAAK,GAAG,MAAM,IAAA,gBAAQ,EAAC,QAAQ,CAAC,CAAA;IAEtC,OAAO,IAAA,yBAAkB,EAAC;QACtB,KAAK;QACL,SAAS,EAAE,SAAS;QACpB,eAAe,EAAE,GAAG;KACvB,CAAC,CAAA;AACN,CAAC,CAAA;AAnBY,QAAA,eAAe,mBAmB3B;AAEM,MAAM,gBAAgB,GAAG,KAAK,EAAE,KAAc,EAAE,EAAE;IACrD,IAAI,KAAK,KAAK,6BAAY,EAAE,CAAC;QACzB,MAAM,IAAI,oBAAQ,CACd,wBAAwB,EACxB,4BAAgB,CAAC,aAAa,CACjC,CAAA;IACL,CAAC;AACL,CAAC,CAAA;AAPY,QAAA,gBAAgB,oBAO5B"}
|
package/_cjs/index.js
CHANGED
|
@@ -1,52 +1,49 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.paymaster = void 0;
|
|
3
|
+
exports.sudoMintTokens = exports.erc20Address = exports.paymaster = void 0;
|
|
4
4
|
const cors_1 = require("@fastify/cors");
|
|
5
5
|
const fastify_1 = require("fastify");
|
|
6
6
|
const prool_1 = require("prool");
|
|
7
7
|
const viem_1 = require("viem");
|
|
8
|
-
const
|
|
8
|
+
const accounts_1 = require("viem/accounts");
|
|
9
9
|
const erc20_utils_js_1 = require("./helpers/erc20-utils.js");
|
|
10
|
+
Object.defineProperty(exports, "erc20Address", { enumerable: true, get: function () { return erc20_utils_js_1.erc20Address; } });
|
|
11
|
+
Object.defineProperty(exports, "sudoMintTokens", { enumerable: true, get: function () { return erc20_utils_js_1.sudoMintTokens; } });
|
|
10
12
|
const utils_js_1 = require("./helpers/utils.js");
|
|
11
13
|
const relay_js_1 = require("./relay.js");
|
|
12
14
|
const singletonPaymasters_js_1 = require("./singletonPaymasters.js");
|
|
13
|
-
exports.paymaster = (0, prool_1.defineInstance)(({ anvilRpc, port: _port,
|
|
15
|
+
exports.paymaster = (0, prool_1.defineInstance)(({ anvilRpc, altoRpc, port: _port, host: _host = "localhost" }) => {
|
|
14
16
|
const app = (0, fastify_1.default)({});
|
|
15
17
|
return {
|
|
16
18
|
_internal: {},
|
|
17
|
-
host:
|
|
19
|
+
host: _host,
|
|
18
20
|
port: _port,
|
|
19
21
|
name: "mock-paymaster",
|
|
20
22
|
start: async ({ port = _port }) => {
|
|
21
|
-
const
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
});
|
|
26
|
-
const publicClient = (0, viem_1.createPublicClient)({
|
|
27
|
-
transport: (0, viem_1.http)(anvilRpc),
|
|
28
|
-
chain
|
|
23
|
+
const paymasterSigner = (0, viem_1.createWalletClient)({
|
|
24
|
+
chain: await (0, utils_js_1.getChain)(anvilRpc),
|
|
25
|
+
account: (0, accounts_1.privateKeyToAccount)("0xbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"),
|
|
26
|
+
transport: (0, viem_1.http)(anvilRpc)
|
|
29
27
|
});
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
28
|
+
await (0, singletonPaymasters_js_1.deployPaymasters)({
|
|
29
|
+
anvilRpc,
|
|
30
|
+
paymasterSigner: paymasterSigner.account.address
|
|
33
31
|
});
|
|
34
|
-
await (0,
|
|
35
|
-
await (0, erc20_utils_js_1.deployErc20Token)(walletClient, publicClient);
|
|
32
|
+
await (0, erc20_utils_js_1.deployErc20Token)(anvilRpc);
|
|
36
33
|
app.register(cors_1.default, {
|
|
37
34
|
origin: "*",
|
|
38
35
|
methods: ["POST", "GET", "OPTIONS"]
|
|
39
36
|
});
|
|
40
37
|
const rpcHandler = (0, relay_js_1.createRpcHandler)({
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
paymasterSigner
|
|
38
|
+
altoRpc,
|
|
39
|
+
anvilRpc,
|
|
40
|
+
paymasterSigner
|
|
44
41
|
});
|
|
45
42
|
app.post("/", {}, rpcHandler);
|
|
46
43
|
app.get("/ping", async (_request, reply) => {
|
|
47
44
|
return reply.code(200).send({ message: "pong" });
|
|
48
45
|
});
|
|
49
|
-
await app.listen({ host:
|
|
46
|
+
await app.listen({ host: _host, port });
|
|
50
47
|
},
|
|
51
48
|
stop: async () => {
|
|
52
49
|
app.close();
|
package/_cjs/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":";;;AAAA,wCAAgC;AAChC,qCAA6B;AAC7B,iCAAsC;AACtC,+BAA+C;AAC/C,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":";;;AAAA,wCAAgC;AAChC,qCAA6B;AAC7B,iCAAsC;AACtC,+BAA+C;AAC/C,4CAAmD;AACnD,6DAIiC;AA2DxB,6FA7DL,6BAAY,OA6DK;AAAE,+FA5DnB,+BAAc,OA4DmB;AA1DrC,iDAA6C;AAC7C,yCAA6C;AAC7C,qEAA2D;AAE9C,QAAA,SAAS,GAAG,IAAA,sBAAc,EACnC,CAAC,EACG,QAAQ,EACR,OAAO,EACP,IAAI,EAAE,KAAK,EACX,IAAI,EAAE,KAAK,GAAG,WAAW,EACwC,EAAE,EAAE;IACrE,MAAM,GAAG,GAAG,IAAA,iBAAO,EAAC,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,IAAA,yBAAkB,EAAC;gBACvC,KAAK,EAAE,MAAM,IAAA,mBAAQ,EAAC,QAAQ,CAAC;gBAC/B,OAAO,EAAE,IAAA,8BAAmB,EACxB,oEAAoE,CACvE;gBACD,SAAS,EAAE,IAAA,WAAI,EAAC,QAAQ,CAAC;aAC5B,CAAC,CAAA;YAEF,MAAM,IAAA,yCAAgB,EAAC;gBACnB,QAAQ;gBACR,eAAe,EAAE,eAAe,CAAC,OAAO,CAAC,OAAO;aACnD,CAAC,CAAA;YACF,MAAM,IAAA,iCAAgB,EAAC,QAAQ,CAAC,CAAA;YAEhC,GAAG,CAAC,QAAQ,CAAC,cAAI,EAAE;gBACf,MAAM,EAAE,GAAG;gBACX,OAAO,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,SAAS,CAAC;aACtC,CAAC,CAAA;YAEF,MAAM,UAAU,GAAG,IAAA,2BAAgB,EAAC;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"}
|
package/_cjs/relay.js
CHANGED
|
@@ -68,7 +68,7 @@ const validateEntryPoint = (entryPoint) => {
|
|
|
68
68
|
throw new schema_js_1.RpcError("EntryPoint not supported", schema_js_1.ValidationErrors.InvalidFields);
|
|
69
69
|
}
|
|
70
70
|
};
|
|
71
|
-
const handleMethod = async ({ parsedBody, paymasterSigner, publicClient,
|
|
71
|
+
const handleMethod = async ({ parsedBody, paymasterSigner, publicClient, bundlerClient }) => {
|
|
72
72
|
const [paymaster06, paymaster07, paymaster08] = [
|
|
73
73
|
(0, constants_js_1.getSingletonPaymaster06Address)(paymasterSigner.account.address),
|
|
74
74
|
(0, constants_js_1.getSingletonPaymaster07Address)(paymasterSigner.account.address),
|
|
@@ -90,7 +90,7 @@ const handleMethod = async ({ parsedBody, paymasterSigner, publicClient, bundler
|
|
|
90
90
|
entryPoint,
|
|
91
91
|
userOperation,
|
|
92
92
|
paymasterMode: { mode: "verifying" },
|
|
93
|
-
bundler,
|
|
93
|
+
bundler: bundlerClient,
|
|
94
94
|
paymaster: epToPaymaster[entryPoint],
|
|
95
95
|
publicClient,
|
|
96
96
|
paymasterSigner,
|
|
@@ -156,7 +156,7 @@ const handleMethod = async ({ parsedBody, paymasterSigner, publicClient, bundler
|
|
|
156
156
|
];
|
|
157
157
|
}
|
|
158
158
|
if (parsedBody.method === "pimlico_getUserOperationGasPrice") {
|
|
159
|
-
return await
|
|
159
|
+
return await bundlerClient.request({
|
|
160
160
|
method: "pimlico_getUserOperationGasPrice",
|
|
161
161
|
params: []
|
|
162
162
|
});
|
|
@@ -196,8 +196,13 @@ const handleMethod = async ({ parsedBody, paymasterSigner, publicClient, bundler
|
|
|
196
196
|
}
|
|
197
197
|
throw new schema_js_1.RpcError(`Attempted to call an unknown method ${parsedBody.method}`, schema_js_1.ValidationErrors.InvalidFields);
|
|
198
198
|
};
|
|
199
|
-
const createRpcHandler = ({
|
|
199
|
+
const createRpcHandler = ({ altoRpc, anvilRpc, paymasterSigner }) => {
|
|
200
200
|
return async (request, _reply) => {
|
|
201
|
+
const publicClient = await (0, utils_js_1.getPublicClient)(anvilRpc);
|
|
202
|
+
const bundlerClient = (0, account_abstraction_1.createBundlerClient)({
|
|
203
|
+
chain: await (0, utils_js_1.getChain)(anvilRpc),
|
|
204
|
+
transport: (0, viem_1.http)(altoRpc)
|
|
205
|
+
});
|
|
201
206
|
const body = request.body;
|
|
202
207
|
const parsedBody = schema_js_1.jsonRpcSchema.safeParse(body);
|
|
203
208
|
if (!parsedBody.success) {
|
|
@@ -205,7 +210,7 @@ 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/_cjs/relay.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"relay.js","sourceRoot":"","sources":["../relay.ts"],"names":[],"mappings":";;;AAAA,kCAAiC;AAEjC,+
|
|
1
|
+
{"version":3,"file":"relay.js","sourceRoot":"","sources":["../relay.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,6 +5,8 @@ const viem_1 = require("viem");
|
|
|
5
5
|
const account_abstraction_1 = require("viem/account-abstraction");
|
|
6
6
|
const constants_js_1 = require("./constants.js");
|
|
7
7
|
const abi_js_1 = require("./helpers/abi.js");
|
|
8
|
+
const erc20_utils_js_1 = require("./helpers/erc20-utils.js");
|
|
9
|
+
const utils_js_1 = require("./helpers/utils.js");
|
|
8
10
|
const getDummyPaymasterData = ({ is06, paymaster, paymasterMode }) => {
|
|
9
11
|
let encodedDummyData;
|
|
10
12
|
const validUntil = 0;
|
|
@@ -157,8 +159,9 @@ const getSignedPaymasterData = async ({ publicClient, signer, userOp, paymaster,
|
|
|
157
159
|
};
|
|
158
160
|
};
|
|
159
161
|
exports.getSignedPaymasterData = getSignedPaymasterData;
|
|
160
|
-
const deployPaymasters = async ({
|
|
161
|
-
const
|
|
162
|
+
const deployPaymasters = async ({ anvilRpc, paymasterSigner }) => {
|
|
163
|
+
const walletClient = await (0, erc20_utils_js_1.getPaymasterUtilityWallet)(anvilRpc);
|
|
164
|
+
const publicClient = await (0, utils_js_1.getPublicClient)(anvilRpc);
|
|
162
165
|
let nonce = await publicClient.getTransactionCount({
|
|
163
166
|
address: walletClient.account.address
|
|
164
167
|
});
|
|
@@ -166,7 +169,7 @@ const deployPaymasters = async ({ walletClient, publicClient }) => {
|
|
|
166
169
|
to: constants_js_1.constants.deterministicDeployer,
|
|
167
170
|
data: (0, viem_1.concat)([
|
|
168
171
|
constants_js_1.constants.create2Salt,
|
|
169
|
-
(0, constants_js_1.getSingletonPaymaster06InitCode)(
|
|
172
|
+
(0, constants_js_1.getSingletonPaymaster06InitCode)(paymasterSigner)
|
|
170
173
|
]),
|
|
171
174
|
nonce: nonce++
|
|
172
175
|
});
|
|
@@ -174,7 +177,7 @@ const deployPaymasters = async ({ walletClient, publicClient }) => {
|
|
|
174
177
|
to: constants_js_1.constants.deterministicDeployer,
|
|
175
178
|
data: (0, viem_1.concat)([
|
|
176
179
|
constants_js_1.constants.create2Salt,
|
|
177
|
-
(0, constants_js_1.getSingletonPaymaster07InitCode)(
|
|
180
|
+
(0, constants_js_1.getSingletonPaymaster07InitCode)(paymasterSigner)
|
|
178
181
|
]),
|
|
179
182
|
nonce: nonce++
|
|
180
183
|
});
|
|
@@ -182,23 +185,23 @@ const deployPaymasters = async ({ walletClient, publicClient }) => {
|
|
|
182
185
|
to: constants_js_1.constants.deterministicDeployer,
|
|
183
186
|
data: (0, viem_1.concat)([
|
|
184
187
|
constants_js_1.constants.create2Salt,
|
|
185
|
-
(0, constants_js_1.getSingletonPaymaster08InitCode)(
|
|
188
|
+
(0, constants_js_1.getSingletonPaymaster08InitCode)(paymasterSigner)
|
|
186
189
|
]),
|
|
187
190
|
nonce: nonce++
|
|
188
191
|
});
|
|
189
192
|
const [singletonPaymaster06, singletonPaymaster07, singletonPaymaster08] = [
|
|
190
193
|
(0, viem_1.getContract)({
|
|
191
|
-
address: (0, constants_js_1.getSingletonPaymaster06Address)(
|
|
194
|
+
address: (0, constants_js_1.getSingletonPaymaster06Address)(paymasterSigner),
|
|
192
195
|
abi: abi_js_1.singletonPaymaster06Abi,
|
|
193
196
|
client: walletClient
|
|
194
197
|
}),
|
|
195
198
|
(0, viem_1.getContract)({
|
|
196
|
-
address: (0, constants_js_1.getSingletonPaymaster07Address)(
|
|
199
|
+
address: (0, constants_js_1.getSingletonPaymaster07Address)(paymasterSigner),
|
|
197
200
|
abi: abi_js_1.singletonPaymaster07Abi,
|
|
198
201
|
client: walletClient
|
|
199
202
|
}),
|
|
200
203
|
(0, viem_1.getContract)({
|
|
201
|
-
address: (0, constants_js_1.getSingletonPaymaster08Address)(
|
|
204
|
+
address: (0, constants_js_1.getSingletonPaymaster08Address)(paymasterSigner),
|
|
202
205
|
abi: abi_js_1.singletonPaymaster08Abi,
|
|
203
206
|
client: walletClient
|
|
204
207
|
})
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"singletonPaymasters.js","sourceRoot":"","sources":["../singletonPaymasters.ts"],"names":[],"mappings":";;;AAAA,+BAaa;AACb,kEAGiC;AACjC,iDAQuB;AACvB,6CAIyB;
|
|
1
|
+
{"version":3,"file":"singletonPaymasters.js","sourceRoot":"","sources":["../singletonPaymasters.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,12 +1,40 @@
|
|
|
1
|
-
import { concat, encodeFunctionData, getCreate2Address, hexToBigInt, pad, parseAbi, toHex } from "viem";
|
|
2
|
-
import {
|
|
1
|
+
import { http, concat, createTestClient, createWalletClient, encodeFunctionData, getCreate2Address, hexToBigInt, pad, parseAbi, parseEther, toHex } from "viem";
|
|
2
|
+
import { privateKeyToAccount } from "viem/accounts";
|
|
3
|
+
import { getChain, getPublicClient } from "./utils.js";
|
|
3
4
|
const erc20Bytecode = concat([
|
|
4
5
|
"0x60a060405234801561001057600080fd5b50604051610ff0380380610ff083398101604081905261002f9161022c565b6040518060400160405280600981526020016805465737445524332360bc1b8152506040518060400160405280600381526020016205432360ec1b815250816003908161007c919061034d565b506004610089828261034d565b5050506100a63369d3c21bcecceda10000006100b160201b60201c565b60ff166080526104a3565b6001600160a01b0382166100e457600060405163ec442f0560e01b81526004016100db9190610430565b60405180910390fd5b6100f0600083836100f4565b5050565b6001600160a01b03831661011f5780600260008282546101149190610454565b9091555061017e9050565b6001600160a01b0383166000908152602081905260409020548181101561015f5783818360405163391434e360e21b81526004016100db9392919061046d565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b03821661019a576002805482900390556101b9565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516101fc9190610495565b60405180910390a3505050565b60ff8116811461021857600080fd5b50565b805161022681610209565b92915050565b60006020828403121561024157610241600080fd5b600061024d848461021b565b949350505050565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052602260045260246000fd5b60028104600182168061029557607f821691505b6020821081036102a7576102a761026b565b50919050565b60006102266102b98381565b90565b6102c5836102ad565b815460001960089490940293841b1916921b91909117905550565b60006102ed8184846102bc565b505050565b818110156100f0576103056000826102e0565b6001016102f2565b601f8211156102ed576000818152602090206020601f850104810160208510156103345750805b6103466020601f8601048301826102f2565b5050505050565b81516001600160401b0381111561036657610366610255565b6103708254610281565b61037b82828561030d565b6020601f8311600181146103af57600084156103975750858201515b600019600886021c1981166002860217865550610408565b600085815260208120601f198616915b828110156103df57888501518255602094850194600190920191016103bf565b868310156103fb5784890151600019601f89166008021c191682555b6001600288020188555050505b505050505050565b60006001600160a01b038216610226565b61042a81610410565b82525050565b602081016102268284610421565b634e487b7160e01b600052601160045260246000fd5b808201808211156102265761022661043e565b8061042a565b6060810161047b8286610421565b6104886020830185610467565b61024d6040830184610467565b602081016102268284610467565b608051610b326104be60003960006101650152610b326000f3fe608060405234801561001057600080fd5b50600436106100d45760003560e01c8063313ce56711610081578063a9059cbb1161005b578063a9059cbb146101cf578063dd62ed3e146101e2578063fb4dcefa1461022857600080fd5b8063313ce5671461016357806370a082311461019157806395d89b41146101c757600080fd5b806318160ddd116100b257806318160ddd1461012c57806323b872dd1461013d5780632d688ca81461015057600080fd5b806305ea5c22146100d957806306fdde03146100ee578063095ea7b31461010c575b600080fd5b6100ec6100e7366004610868565b61023b565b005b6100f661024b565b604051610103919061092c565b60405180910390f35b61011f61011a366004610944565b6102dd565b604051610103919061098b565b6002545b604051610103919061099f565b61011f61014b366004610868565b6102f7565b6100ec61015e366004610944565b61031b565b7f000000000000000000000000000000000000000000000000000000000000000060405161010391906109b6565b61013061019f3660046109c4565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100f6610329565b61011f6101dd366004610944565b610338565b6101306101f03660046109ed565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6100ec6102363660046109ed565b610346565b61024683838361037c565b505050565b60606003805461025a90610a4f565b80601f016020809104026020016040519081016040528092919081815260200182805461028690610a4f565b80156102d35780601f106102a8576101008083540402835291602001916102d3565b820191906000526020600020905b8154815290600101906020018083116102b657829003601f168201915b5050505050905090565b6000336102eb81858561037c565b60019150505b92915050565b600033610305858285610389565b610310858585610441565b506001949350505050565b61032582826104ec565b5050565b60606004805461025a90610a4f565b6000336102eb818585610441565b61032582826103778573ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b610441565b6102468383836001610548565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461043b578181101561042c578281836040517ffb8f41b200000000000000000000000000000000000000000000000000000000815260040161042393929190610a84565b60405180910390fd5b61043b84848484036000610548565b50505050565b73ffffffffffffffffffffffffffffffffffffffff83166104915760006040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081526004016104239190610aac565b73ffffffffffffffffffffffffffffffffffffffff82166104e15760006040517fec442f050000000000000000000000000000000000000000000000000000000081526004016104239190610aac565b61024683838361068e565b73ffffffffffffffffffffffffffffffffffffffff821661053c5760006040517fec442f050000000000000000000000000000000000000000000000000000000081526004016104239190610aac565b6103256000838361068e565b73ffffffffffffffffffffffffffffffffffffffff84166105985760006040517fe602df050000000000000000000000000000000000000000000000000000000081526004016104239190610aac565b73ffffffffffffffffffffffffffffffffffffffff83166105e85760006040517f94280d620000000000000000000000000000000000000000000000000000000081526004016104239190610aac565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152600160209081526040808320938716835292905220829055801561043b578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610680919061099f565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff83166106c65780600260008282546106bb9190610ae9565b909155506107589050565b73ffffffffffffffffffffffffffffffffffffffff83166000908152602081905260409020548181101561072c578381836040517fe450d38c00000000000000000000000000000000000000000000000000000000815260040161042393929190610a84565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff8216610781576002805482900390556107ad565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161080a919061099f565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff82166102f1565b61083e81610817565b811461084957600080fd5b50565b80356102f181610835565b8061083e565b80356102f181610857565b60008060006060848603121561088057610880600080fd5b600061088c868661084c565b935050602061089d8682870161084c565b92505060406108ae8682870161085d565b9150509250925092565b60005b838110156108d35781810151838201526020016108bb565b50506000910152565b60006108e6825190565b8084526020840193506108fd8185602086016108b8565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920192915050565b6020808252810161093d81846108dc565b9392505050565b6000806040838503121561095a5761095a600080fd5b6000610966858561084c565b92505060206109778582860161085d565b9150509250929050565b8015155b82525050565b602081016102f18284610981565b80610985565b602081016102f18284610999565b60ff8116610985565b602081016102f182846109ad565b6000602082840312156109d9576109d9600080fd5b60006109e5848461084c565b949350505050565b60008060408385031215610a0357610a03600080fd5b6000610a0f858561084c565b92505060206109778582860161084c565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600281046001821680610a6357607f821691505b602082108103610a7557610a75610a20565b50919050565b61098581610817565b60608101610a928286610a7b565b610a9f6020830185610999565b6109e56040830184610999565b602081016102f18284610a7b565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808201808211156102f1576102f1610aba56fea2646970667358221220d40f68e247510ec8b7876d327ac47b949de248d0626aaf2670151c5e84ee6b4a64736f6c634300081a0033",
|
|
5
6
|
pad(toHex(18n)) // constructor args (token_decimals)
|
|
6
7
|
]);
|
|
7
8
|
const create2Salt = "0x0000000000000000000000000000000000000000000000000000000000000000";
|
|
8
|
-
export const
|
|
9
|
+
export const getPaymasterUtilityWallet = async (anvilRpc) => {
|
|
10
|
+
const account = privateKeyToAccount("0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa");
|
|
11
|
+
// Check if account has balance
|
|
12
|
+
const publicClient = await getPublicClient(anvilRpc);
|
|
13
|
+
const balance = await publicClient.getBalance({ address: account.address });
|
|
14
|
+
// If no balance, set it to 1000 ETH
|
|
15
|
+
if (balance === 0n) {
|
|
16
|
+
// Create test client for setting balance
|
|
17
|
+
const testClient = createTestClient({
|
|
18
|
+
mode: "anvil",
|
|
19
|
+
transport: http(anvilRpc)
|
|
20
|
+
});
|
|
21
|
+
await testClient.setBalance({
|
|
22
|
+
address: account.address,
|
|
23
|
+
value: parseEther("1000")
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
// Create and return wallet client
|
|
27
|
+
const walletClient = createWalletClient({
|
|
28
|
+
chain: await getChain(anvilRpc),
|
|
29
|
+
account,
|
|
30
|
+
transport: http(anvilRpc)
|
|
31
|
+
});
|
|
32
|
+
return walletClient;
|
|
33
|
+
};
|
|
34
|
+
export const deployErc20Token = async (anvilRpc) => {
|
|
35
|
+
const publicClient = await getPublicClient(anvilRpc);
|
|
9
36
|
if ((await publicClient.getCode({ address: erc20Address })) === undefined) {
|
|
37
|
+
const walletClient = await getPaymasterUtilityWallet(anvilRpc);
|
|
10
38
|
await walletClient.sendTransaction({
|
|
11
39
|
to: "0x4e59b44847b379578588920ca78fbf26c0b4956c",
|
|
12
40
|
data: concat([create2Salt, erc20Bytecode])
|
|
@@ -26,10 +54,7 @@ export const tokenBalanceOf = async (holder, anvilRpc) => {
|
|
|
26
54
|
return hexToBigInt(balance.data ?? "0x");
|
|
27
55
|
};
|
|
28
56
|
export const sudoMintTokens = async ({ amount, to, anvilRpc }) => {
|
|
29
|
-
const walletClient = await
|
|
30
|
-
addressIndex: 0,
|
|
31
|
-
anvilRpc
|
|
32
|
-
});
|
|
57
|
+
const walletClient = await getPaymasterUtilityWallet(anvilRpc);
|
|
33
58
|
await walletClient.sendTransaction({
|
|
34
59
|
to: erc20Address,
|
|
35
60
|
value: 0n,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"erc20-utils.js","sourceRoot":"","sources":["../../helpers/erc20-utils.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"erc20-utils.js","sourceRoot":"","sources":["../../helpers/erc20-utils.ts"],"names":[],"mappings":"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"}
|
package/_esm/helpers/utils.js
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import { http, createPublicClient,
|
|
2
|
-
import { mnemonicToAccount } from "viem/accounts";
|
|
1
|
+
import { http, createPublicClient, defineChain } from "viem";
|
|
3
2
|
import { erc20Address } from "./erc20-utils.js";
|
|
4
3
|
import { RpcError, ValidationErrors } from "./schema.js";
|
|
5
4
|
/// Returns the bigger of two BigInts.
|
|
@@ -42,16 +41,6 @@ export const getPublicClient = async (anvilRpc) => {
|
|
|
42
41
|
pollingInterval: 100
|
|
43
42
|
});
|
|
44
43
|
};
|
|
45
|
-
export const getAnvilWalletClient = async ({ addressIndex, anvilRpc }) => {
|
|
46
|
-
const chain = await getChain(anvilRpc);
|
|
47
|
-
return createWalletClient({
|
|
48
|
-
account: mnemonicToAccount("test test test test test test test test test test test junk", {
|
|
49
|
-
addressIndex
|
|
50
|
-
}),
|
|
51
|
-
chain,
|
|
52
|
-
transport: http(anvilRpc)
|
|
53
|
-
});
|
|
54
|
-
};
|
|
55
44
|
export const isTokenSupported = async (token) => {
|
|
56
45
|
if (token !== erc20Address) {
|
|
57
46
|
throw new RpcError("Token is not supported", ValidationErrors.InvalidFields);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../helpers/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,IAAI,
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../helpers/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,IAAI,EAKJ,kBAAkB,EAClB,WAAW,EACd,MAAM,MAAM,CAAA;AACb,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAC/C,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAExD,sCAAsC;AACtC,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,CAAS,EAAE,CAAS,EAAE,EAAE;IAC9C,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;AACxB,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,QAAQ,GAAG,KAAK,EAAE,MAAc,EAAkB,EAAE;IAC7D,MAAM,UAAU,GAAG,kBAAkB,CAAC;QAClC,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC;KAC1B,CAAC,CAAA;IAEF,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC,UAAU,EAAE,CAAA;IAE7C,OAAO,WAAW,CAAC;QACf,EAAE,EAAE,OAAO;QACX,IAAI,EAAE,SAAS,OAAO,EAAE;QACxB,cAAc,EAAE;YACZ,IAAI,EAAE,KAAK;YACX,MAAM,EAAE,KAAK;YACb,QAAQ,EAAE,EAAE;SACf;QACD,OAAO,EAAE;YACL,OAAO,EAAE;gBACL,IAAI,EAAE,CAAC,MAAM,CAAC;aACjB;SACJ;KACJ,CAAC,CAAA;AACN,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,eAAe,GAAG,KAAK,EAChC,QAAgB,EACuB,EAAE;IACzC,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,EAAE;IAC7B,mCAAmC;IACnC,+CAA+C;IAC/C,IAAI;IACJ,wCAAwC;IACxC,4DAA4D;IAC5D,GAAG;KACN,CAAC,CAAA;IAEF,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,QAAQ,CAAC,CAAA;IAEtC,OAAO,kBAAkB,CAAC;QACtB,KAAK;QACL,SAAS,EAAE,SAAS;QACpB,eAAe,EAAE,GAAG;KACvB,CAAC,CAAA;AACN,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,EAAE,KAAc,EAAE,EAAE;IACrD,IAAI,KAAK,KAAK,YAAY,EAAE,CAAC;QACzB,MAAM,IAAI,QAAQ,CACd,wBAAwB,EACxB,gBAAgB,CAAC,aAAa,CACjC,CAAA;IACL,CAAC;AACL,CAAC,CAAA"}
|
package/_esm/index.js
CHANGED
|
@@ -1,53 +1,49 @@
|
|
|
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 { deployErc20Token } from "./helpers/erc20-utils.js";
|
|
7
|
-
import {
|
|
4
|
+
import { http, createWalletClient } from "viem";
|
|
5
|
+
import { privateKeyToAccount } from "viem/accounts";
|
|
6
|
+
import { deployErc20Token, erc20Address, sudoMintTokens } from "./helpers/erc20-utils.js";
|
|
7
|
+
import { getChain } from "./helpers/utils.js";
|
|
8
8
|
import { createRpcHandler } from "./relay.js";
|
|
9
9
|
import { deployPaymasters } from "./singletonPaymasters.js";
|
|
10
|
-
export const paymaster = defineInstance(({ anvilRpc, port: _port,
|
|
10
|
+
export const paymaster = defineInstance(({ anvilRpc, altoRpc, port: _port, host: _host = "localhost" }) => {
|
|
11
11
|
const app = Fastify({});
|
|
12
12
|
return {
|
|
13
13
|
_internal: {},
|
|
14
|
-
host:
|
|
14
|
+
host: _host,
|
|
15
15
|
port: _port,
|
|
16
16
|
name: "mock-paymaster",
|
|
17
17
|
start: async ({ port = _port }) => {
|
|
18
|
-
const
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
});
|
|
23
|
-
const publicClient = createPublicClient({
|
|
24
|
-
transport: http(anvilRpc),
|
|
25
|
-
chain
|
|
18
|
+
const paymasterSigner = createWalletClient({
|
|
19
|
+
chain: await getChain(anvilRpc),
|
|
20
|
+
account: privateKeyToAccount("0xbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"),
|
|
21
|
+
transport: http(anvilRpc)
|
|
26
22
|
});
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
23
|
+
await deployPaymasters({
|
|
24
|
+
anvilRpc,
|
|
25
|
+
paymasterSigner: paymasterSigner.account.address
|
|
30
26
|
});
|
|
31
|
-
await
|
|
32
|
-
await deployErc20Token(walletClient, publicClient);
|
|
27
|
+
await deployErc20Token(anvilRpc);
|
|
33
28
|
app.register(cors, {
|
|
34
29
|
origin: "*",
|
|
35
30
|
methods: ["POST", "GET", "OPTIONS"]
|
|
36
31
|
});
|
|
37
32
|
const rpcHandler = createRpcHandler({
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
paymasterSigner
|
|
33
|
+
altoRpc,
|
|
34
|
+
anvilRpc,
|
|
35
|
+
paymasterSigner
|
|
41
36
|
});
|
|
42
37
|
app.post("/", {}, rpcHandler);
|
|
43
38
|
app.get("/ping", async (_request, reply) => {
|
|
44
39
|
return reply.code(200).send({ message: "pong" });
|
|
45
40
|
});
|
|
46
|
-
await app.listen({ host:
|
|
41
|
+
await app.listen({ host: _host, port });
|
|
47
42
|
},
|
|
48
43
|
stop: async () => {
|
|
49
44
|
app.close();
|
|
50
45
|
}
|
|
51
46
|
};
|
|
52
47
|
});
|
|
48
|
+
export { erc20Address, sudoMintTokens };
|
|
53
49
|
//# sourceMappingURL=index.js.map
|