ERC-4337, also known as Account Abstraction, introduces the innovative concept of Paymasters. These entities are specialized actors that hold a crucial role in transforming the conventional gas payment mechanism within Ethereum Virtual Machine (EVM) transactions. Paymasters act as intermediaries, empowered to cover gas fees on behalf of an account, subject to predefined conditions being met. This paradigm shift offers a significant advancement in the Ethereum ecosystem, fostering greater flexibility and efficiency in transaction processing.
Using npm
package manager
npm i @abstraxn/paymaster
OR
Using yarn
package manager
yarn add @abstraxn/paymaster
Usage
// This is how you create paymaster instance in your dapp's
import { IPaymaster, AbstraxnPaymaster } from "@abstraxn/paymaster";
const paymaster = new AbstraxnPaymaster({
paymasterUrl: "", // you can get this value from abstraxn dashboard.
});
paymasterUrl you can get this value from abstraxn dashboard.
Following are the methods that can be called on paymaster instance
export interface IHybridPaymaster<T> extends IPaymaster {
getPaymasterAndData(userOp: Partial<UserOperation>, paymasterServiceData?: T): Promise<PaymasterAndDataResponse>;
buildTokenApprovalTransaction(tokenPaymasterRequest: AbstraxnTokenPaymasterRequest, provider: Provider): Promise<Transaction>;
getPaymasterFeeQuotesOrData(userOp: Partial<UserOperation>, paymasterServiceData: FeeQuotesOrDataDto): Promise<FeeQuotesOrDataResponse>;
}
One can also build their own Paymaster API class and submit a PR or just provide instance of it in the account package / use standalone to generate paymasterAndData
It should follow below Interface.
export interface IPaymaster {
// Implementing class may add extra parameter (for example paymasterServiceData with it's own type) in below function signature
getPaymasterAndData(userOp: Partial<UserOperation>): Promise<PaymasterAndDataResponse>;
getDummyPaymasterAndData(userOp: Partial<UserOperation>): Promise<string>;
}