@owlprotocol/contracts-account-abstraction
Version:
ERC4337 Account Abstraction support for deploying relevant smart contracts and interacting with UserOps.
66 lines (65 loc) • 2.54 kB
JavaScript
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __export = (target, all) => {
for (var name in all)
__defProp(target, name, { get: all[name], enumerable: true });
};
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames(from))
if (!__hasOwnProp.call(to, key) && key !== except)
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
}
return to;
};
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
var VerifyingPaymaster_exports = {};
__export(VerifyingPaymaster_exports, {
getVerifyingPaymasterHash: () => getVerifyingPaymasterHash
});
module.exports = __toCommonJS(VerifyingPaymaster_exports);
var import_viem = require("viem");
function getVerifyingPaymasterHash(params) {
const { chainId, userOperation } = params;
const abi = [
{ type: "address", name: "sender" },
{ type: "uint256", name: "nonce" },
{ type: "bytes32", name: "initCodeHash" },
{ type: "bytes32", name: "callDataHash" },
{ type: "bytes32", name: "accountGasLimits" },
{ type: "uint256", name: "paymasterAndData" },
{ type: "uint256", name: "preVerificationGas" },
{ type: "bytes32", name: "gasFees" },
{ type: "uint256", name: "chainId" },
{ type: "address", name: "paymaster" },
{ type: "uint48", name: "validUntil" },
{ type: "uint48", name: "validAfter" }
];
const [validUntil, validAfter] = (0, import_viem.decodeAbiParameters)(
[
{ name: "validUntil", type: "uint48" },
{ name: "validAfter", type: "uint48" }
],
(0, import_viem.sliceHex)(userOperation.paymasterAndData, 52)
);
return (0, import_viem.keccak256)(
(0, import_viem.encodeAbiParameters)(abi, [
userOperation.sender,
userOperation.nonce,
(0, import_viem.keccak256)(userOperation.initCode),
(0, import_viem.keccak256)(userOperation.callData),
userOperation.accountGasLimits,
(0, import_viem.sliceHex)(userOperation.paymasterAndData, 20, 52),
//paymaster gas
userOperation.preVerificationGas,
userOperation.gasFees,
chainId,
(0, import_viem.sliceHex)(userOperation.paymasterAndData, 0, 20),
// paymaster address
validUntil,
validAfter
])
);
}