@tradestack/paymaster 1.2.40 → 1.2.41
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.
|
@@ -3340,7 +3340,7 @@ export declare const getPublicClient: (chainConfig: EVMChainConfig) => {
|
|
|
3340
3340
|
authorizationList: import("viem").TransactionSerializableEIP7702["authorizationList"];
|
|
3341
3341
|
} ? "eip7702" : never) | (request["type"] extends string | undefined ? Extract<request["type"], string> : never)>) ? T_12 extends "eip7702" ? import("viem").TransactionRequestEIP7702 : never : never : never)>> & {
|
|
3342
3342
|
chainId?: number | undefined;
|
|
3343
|
-
}, (request["parameters"] extends readonly import("viem").PrepareTransactionRequestParameterType[] ? request["parameters"][number] : "chainId" | "type" | "nonce" | "
|
|
3343
|
+
}, (request["parameters"] extends readonly import("viem").PrepareTransactionRequestParameterType[] ? request["parameters"][number] : "chainId" | "type" | "nonce" | "blobVersionedHashes" | "gas" | "fees") extends infer T_13 ? T_13 extends (request["parameters"] extends readonly import("viem").PrepareTransactionRequestParameterType[] ? request["parameters"][number] : "chainId" | "type" | "nonce" | "blobVersionedHashes" | "gas" | "fees") ? T_13 extends "fees" ? "gasPrice" | "maxPriorityFeePerGas" | "maxFeePerGas" : T_13 : never : never> & (unknown extends request["kzg"] ? {} : Pick<request, "kzg">) & {
|
|
3344
3344
|
_capabilities?: {
|
|
3345
3345
|
[x: string]: any;
|
|
3346
3346
|
} | undefined;
|
|
@@ -3355,8 +3355,8 @@ export declare const getPublicClient: (chainConfig: EVMChainConfig) => {
|
|
|
3355
3355
|
verifyHash: (args: import("viem").VerifyHashActionParameters) => Promise<import("viem").VerifyHashActionReturnType>;
|
|
3356
3356
|
verifyMessage: (args: import("viem").VerifyMessageActionParameters) => Promise<import("viem").VerifyMessageActionReturnType>;
|
|
3357
3357
|
verifySiweMessage: (args: {
|
|
3358
|
-
blockNumber?: bigint | undefined | undefined;
|
|
3359
3358
|
blockTag?: import("viem").BlockTag | undefined;
|
|
3359
|
+
blockNumber?: bigint | undefined | undefined;
|
|
3360
3360
|
address?: `0x${string}` | undefined;
|
|
3361
3361
|
nonce?: string | undefined | undefined;
|
|
3362
3362
|
domain?: string | undefined | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"paymaster.service.d.ts","sourceRoot":"","sources":["../../../../src/backend/services/paymaster.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAiB,MAAM,kBAAkB,CAAC;AAQjE,eAAO,MAAM,iBAAiB,GAC5B,QAAQ,GAAG,EACX,cAAa,cAAwD,KACpE,OAAO,CAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"paymaster.service.d.ts","sourceRoot":"","sources":["../../../../src/backend/services/paymaster.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAiB,MAAM,kBAAkB,CAAC;AAQjE,eAAO,MAAM,iBAAiB,GAC5B,QAAQ,GAAG,EACX,cAAa,cAAwD,KACpE,OAAO,CAAC,MAAM,CA0EhB,CAAC"}
|
|
@@ -1,80 +1,54 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
2
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
6
|
exports.signUserOperation = void 0;
|
|
4
7
|
const ethers_1 = require("ethers");
|
|
5
8
|
const chains_1 = require("../config/chains");
|
|
9
|
+
const index_1 = __importDefault(require("../config/index"));
|
|
6
10
|
const contract_1 = require("../contract/contract");
|
|
7
11
|
const signUserOperation = async (userOp, chainConfig = chains_1.CHAIN_CONFIGS.sepolia) => {
|
|
8
|
-
|
|
9
|
-
const
|
|
10
|
-
const validAfter = now - 60; // 1 minute ago
|
|
11
|
-
const validUntil = now + 300; // 5 minutes from now (short expiry for testing)
|
|
12
|
-
console.log(`[${chainConfig.name}] NOW: ${now}, validAfter: ${validAfter}, validUntil: ${validUntil}`);
|
|
12
|
+
const validAfter = Math.floor(Date.now() / 1000);
|
|
13
|
+
const validUntil = validAfter + index_1.default.signatureExpirySeconds;
|
|
13
14
|
const paymasterContract = (0, contract_1.getPaymasterContract)(chainConfig);
|
|
14
15
|
const provider = (0, contract_1.getProvider)(chainConfig);
|
|
15
16
|
const connectedSigner = contract_1.signer.connect(provider);
|
|
16
|
-
|
|
17
|
-
const signerAddress = await connectedSigner.getAddress();
|
|
18
|
-
const expectedSigner = await paymasterContract.signerAddress();
|
|
19
|
-
console.log(`[${chainConfig.name}] Signer: ${signerAddress}, Expected: ${expectedSigner}`);
|
|
20
|
-
if (signerAddress.toLowerCase() !== expectedSigner.toLowerCase()) {
|
|
21
|
-
throw new Error(`Signer mismatch!`);
|
|
22
|
-
}
|
|
23
|
-
// Get deposit status
|
|
24
|
-
const deposit = await paymasterContract.getDeposit();
|
|
25
|
-
console.log(`[${chainConfig.name}] Paymaster deposit: ${ethers_1.ethers.formatEther(deposit)} MNT`);
|
|
26
|
-
// Handle initCode
|
|
27
|
-
const initCode = userOp.factory && userOp.factory !== "0x"
|
|
17
|
+
const initCode = userOp.factory
|
|
28
18
|
? ethers_1.ethers.concat([userOp.factory, userOp.factoryData || "0x"])
|
|
29
19
|
: "0x";
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
const verificationGasLimit = 250000n;
|
|
33
|
-
const callGasLimit = 50000n;
|
|
20
|
+
const verificationGasLimit = BigInt(userOp.verificationGasLimit || 0);
|
|
21
|
+
const callGasLimit = BigInt(userOp.callGasLimit || 0);
|
|
34
22
|
const accountGasLimits = ethers_1.ethers.zeroPadValue(ethers_1.ethers.toBeHex((verificationGasLimit << 128n) | callGasLimit), 32);
|
|
35
|
-
|
|
36
|
-
const
|
|
37
|
-
const maxFeePerGas = 1000000000n; // 1 gwei
|
|
23
|
+
const maxPriorityFeePerGas = BigInt(userOp.maxPriorityFeePerGas || 0);
|
|
24
|
+
const maxFeePerGas = BigInt(userOp.maxFeePerGas || 0);
|
|
38
25
|
const gasFees = ethers_1.ethers.zeroPadValue(ethers_1.ethers.toBeHex((maxPriorityFeePerGas << 128n) | maxFeePerGas), 32);
|
|
39
|
-
|
|
40
|
-
const
|
|
41
|
-
const paymasterPostOpGasLimit = 150000n;
|
|
26
|
+
const paymasterVerificationGasLimit = 200000n;
|
|
27
|
+
const paymasterPostOpGasLimit = 100000n;
|
|
42
28
|
const paymasterGasLimitsPacked = ethers_1.ethers.zeroPadValue(ethers_1.ethers.toBeHex((paymasterVerificationGasLimit << 128n) | paymasterPostOpGasLimit), 32);
|
|
43
|
-
// Encode timestamps
|
|
44
|
-
const timestampData = ethers_1.ethers.AbiCoder.defaultAbiCoder().encode(["uint48", "uint48"], [validUntil, validAfter]);
|
|
45
|
-
// Create paymasterAndData with empty signature for hash
|
|
46
|
-
const emptySignature = "0x" + "00".repeat(65);
|
|
47
29
|
const paymasterAndDataForHash = ethers_1.ethers.concat([
|
|
48
30
|
chainConfig.paymasterAddress,
|
|
49
31
|
paymasterGasLimitsPacked,
|
|
50
|
-
|
|
51
|
-
|
|
32
|
+
ethers_1.ethers.AbiCoder.defaultAbiCoder().encode(["uint48", "uint48"], [validUntil, validAfter]),
|
|
33
|
+
"0x" + "00".repeat(65),
|
|
52
34
|
]);
|
|
53
|
-
|
|
54
|
-
const packedUserOp = {
|
|
35
|
+
const hash = await paymasterContract.getHash({
|
|
55
36
|
sender: userOp.sender,
|
|
56
|
-
nonce:
|
|
57
|
-
initCode
|
|
37
|
+
nonce: userOp.nonce,
|
|
38
|
+
initCode,
|
|
58
39
|
callData: userOp.callData,
|
|
59
|
-
accountGasLimits
|
|
60
|
-
preVerificationGas:
|
|
61
|
-
gasFees
|
|
40
|
+
accountGasLimits,
|
|
41
|
+
preVerificationGas: userOp.preVerificationGas || 0,
|
|
42
|
+
gasFees,
|
|
62
43
|
paymasterAndData: paymasterAndDataForHash,
|
|
63
|
-
signature: "0x",
|
|
64
|
-
};
|
|
65
|
-
|
|
66
|
-
const hash = await paymasterContract.getHash(packedUserOp, validUntil, validAfter);
|
|
67
|
-
console.log(`[${chainConfig.name}] Hash: ${hash}`);
|
|
68
|
-
// Sign
|
|
44
|
+
signature: userOp.signature || "0x",
|
|
45
|
+
}, validUntil, validAfter);
|
|
46
|
+
console.log(`[${chainConfig.name}] Hash from contract getHash: ${hash}`);
|
|
69
47
|
const signature = await connectedSigner.signMessage(ethers_1.ethers.getBytes(hash));
|
|
70
|
-
console.log(`[${chainConfig.name}] Signature: ${signature.substring(0, 66)}...`);
|
|
71
|
-
// Build final paymasterData (NO address, just gas limits + timestamps + signature)
|
|
72
48
|
const paymasterData = ethers_1.ethers.concat([
|
|
73
|
-
|
|
74
|
-
timestampData,
|
|
49
|
+
ethers_1.ethers.AbiCoder.defaultAbiCoder().encode(["uint48", "uint48"], [validUntil, validAfter]),
|
|
75
50
|
signature,
|
|
76
51
|
]);
|
|
77
|
-
console.log(`[${chainConfig.name}] paymasterData length: ${paymasterData.length / 2} bytes`);
|
|
78
52
|
return paymasterData;
|
|
79
53
|
};
|
|
80
54
|
exports.signUserOperation = signUserOperation;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"paymaster.service.js","sourceRoot":"","sources":["../../../../src/backend/services/paymaster.service.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"paymaster.service.js","sourceRoot":"","sources":["../../../../src/backend/services/paymaster.service.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED