Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion backend/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "arka",
"version": "4.2.0",
"version": "4.2.1",
"description": "ARKA - (Albanian for Cashier's case) is the first open source Paymaster as a service software",
"type": "module",
"directories": {
Expand Down
26 changes: 14 additions & 12 deletions backend/src/paymaster/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -164,8 +164,8 @@ export class Paymaster {
userOp.paymaster = paymasterAddress;
userOp.paymasterVerificationGasLimit = toHex(this.EP7_PVGL);
userOp.paymasterPostOpGasLimit = paymasterPostOpGasLimit;
const accountGasLimits = this.packUint(userOp.verificationGasLimit, userOp.callGasLimit)
const gasFees = this.packUint(userOp.maxPriorityFeePerGas, userOp.maxFeePerGas);
const accountGasLimits = this.packUint(BigInt(userOp.verificationGasLimit), BigInt(userOp.callGasLimit))
const gasFees = this.packUint(BigInt(userOp.maxPriorityFeePerGas), BigInt(userOp.maxFeePerGas));
const packedUserOp = {
sender: userOp.sender,
nonce: userOp.nonce,
Expand Down Expand Up @@ -243,8 +243,8 @@ export class Paymaster {
userOp.paymaster = paymasterAddress;
userOp.paymasterVerificationGasLimit = toHex(this.EP8_PVGL);
userOp.paymasterPostOpGasLimit = paymasterPostOpGasLimit;
const accountGasLimits = this.packUint(userOp.verificationGasLimit, userOp.callGasLimit)
const gasFees = this.packUint(userOp.maxPriorityFeePerGas, userOp.maxFeePerGas);
const accountGasLimits = this.packUint(BigInt(userOp.verificationGasLimit), BigInt(userOp.callGasLimit))
const gasFees = this.packUint(BigInt(userOp.maxPriorityFeePerGas), BigInt(userOp.maxFeePerGas));
const packedUserOp = {
sender: userOp.sender,
nonce: userOp.nonce,
Expand Down Expand Up @@ -925,10 +925,12 @@ export class Paymaster {
if (userOp.factory && userOp.factoryData) userOp.initCode = concat([userOp.factory as Hex, userOp.factoryData ?? '0x'])
if (!userOp.signature) userOp.signature = '0x';
userOp.paymaster = paymasterAddress;
userOp.paymasterVerificationGasLimit = toHex(BigInt(this.MTP_PVGL)); // Paymaster specific gas limit
userOp.paymasterPostOpGasLimit = toHex(BigInt(this.MTP_PPGL)); // Paymaster specific gas limit for token transfer
let accountGasLimits = this.packUint(userOp.verificationGasLimit, userOp.callGasLimit)
const gasFees = this.packUint(userOp.maxPriorityFeePerGas, userOp.maxFeePerGas);
const paymasterVerificationGasLimit = BigInt(this.MTP_PVGL);
const paymasterPostOpGasLimit = BigInt(this.MTP_PPGL);
userOp.paymasterVerificationGasLimit = toHex(paymasterVerificationGasLimit); // Paymaster specific gas limit
userOp.paymasterPostOpGasLimit = toHex(paymasterPostOpGasLimit); // Paymaster specific gas limit for token transfer
let accountGasLimits = this.packUint(BigInt(userOp.verificationGasLimit), BigInt(userOp.callGasLimit))
const gasFees = this.packUint(BigInt(userOp.maxPriorityFeePerGas), BigInt(userOp.maxFeePerGas));
let packedUserOp = {
sender: userOp.sender,
nonce: userOp.nonce,
Expand All @@ -937,19 +939,19 @@ export class Paymaster {
accountGasLimits: accountGasLimits,
preVerificationGas: userOp.preVerificationGas,
gasFees: gasFees,
paymasterAndData: this.packPaymasterData(paymasterAddress, userOp.paymasterVerificationGasLimit, userOp.paymasterPostOpGasLimit, "0x"),
paymasterAndData: this.packPaymasterData(paymasterAddress, paymasterVerificationGasLimit, paymasterPostOpGasLimit, "0x"),
signature: userOp.signature
}
userOp.paymaster = paymasterAddress;
let paymasterData = await this.getPaymasterAndDataForMultiTokenPaymasterV07(packedUserOp, validUntil, validAfter, feeToken, ethPrice, paymasterContract, signer);
userOp.paymasterData = paymasterData
userOp.paymasterAndData = this.packPaymasterData(paymasterAddress, userOp.paymasterVerificationGasLimit, userOp.paymasterPostOpGasLimit, paymasterData);
userOp.paymasterAndData = this.packPaymasterData(paymasterAddress, paymasterVerificationGasLimit, paymasterPostOpGasLimit, paymasterData);
const response = await this.getEstimateUserOperationGas(publicClient, userOp, entryPoint);
if (BigInt(userOp.verificationGasLimit) < 45000n) userOp.verificationGasLimit = toHex(45000n); // This is to counter the unaccounted cost(45000)
userOp.verificationGasLimit = (response as any).verificationGasLimit;
userOp.preVerificationGas = (response as any).preVerificationGas;
userOp.callGasLimit = (response as any).callGasLimit;
accountGasLimits = this.packUint(userOp.verificationGasLimit, userOp.callGasLimit);
accountGasLimits = this.packUint(BigInt(userOp.verificationGasLimit), BigInt(userOp.callGasLimit));
packedUserOp = {
sender: userOp.sender,
nonce: userOp.nonce,
Expand All @@ -958,7 +960,7 @@ export class Paymaster {
accountGasLimits: accountGasLimits,
preVerificationGas: userOp.preVerificationGas,
gasFees: gasFees,
paymasterAndData: this.packPaymasterData(paymasterAddress, userOp.paymasterVerificationGasLimit, userOp.paymasterPostOpGasLimit, paymasterData),
paymasterAndData: this.packPaymasterData(paymasterAddress, paymasterVerificationGasLimit, paymasterPostOpGasLimit, paymasterData),
signature: userOp.signature
}
paymasterData = await this.getPaymasterAndDataForMultiTokenPaymasterV07(packedUserOp, validUntil, validAfter, feeToken, ethPrice, paymasterContract, signer);
Expand Down
2 changes: 1 addition & 1 deletion backend/src/routes/paymaster-routes.ts
Original file line number Diff line number Diff line change
Expand Up @@ -393,7 +393,7 @@ const paymasterRoutes: FastifyPluginAsync<PaymasterRoutesOpts> = async (server,
break;
}
case 'commonerc20': {
if (epVersion !== EPVersions.EPV_06 && epVersion !== EPVersions.EPV_07)
if (epVersion !== EPVersions.EPV_06 && epVersion !== EPVersions.EPV_07 && epVersion !== EPVersions.EPV_08)
throw new Error(ErrorMessage.MTP_EP_SUPPORT)
const multiTokenRec = await server.multiTokenPaymasterRepository.findOneByChainIdEPVersionAndTokenAddress(chainId, gasToken, epVersion)
if (multiTokenRec) {
Expand Down