Paymaster
The Paymaster class is a utility class that provides methods for interacting with Paymaster contracts on the zkSync network. It supports two types of Paymasters: ERC20Paymaster and SponsoredPaymaster.
To call the methods of the Paymaster class, we need to first get the paymaster object.
getPaymaster
async function getPaymaster(address: Address, walletClient: WalletClient, publicClient: PublicClient): Promise<Paymaster>Creates a new instance of the Paymaster class based on the provided Paymaster contract address.
address: Address: The address of the Paymaster contract.walletClient:WalletClientinstance for signing and sending transactions.publicClient:PublicClientpublic instance for getting public functionsReturns: A newPaymasterinstance.
Paymaster
The Paymaster class is a utility class that provides methods for interacting with Paymaster contracts on the zkSync network. It supports two types of Paymasters: ERC20Paymaster and SponsoredPaymaster.
Constructor
constructor(address: Address, walletClient: WalletClient, publicClient: PublicClient, paymasterType: PaymasterType, chainId: ChainId, token?: Address)address:Address- The address of the Paymaster contract.walletClient:WalletClientinstance for signing transactions.publicClient:PublicClientinstance for getting public functionspaymasterType:PaymasterType- type of Paymaster (ERC20Paymaster or SponsoredPaymaster).chainId:string- The ID of the chain the Paymaster contract is deployed on.token:Address(optional) - The address of the ERC20 token used by the ERC20Paymaster.
getPaymasterCustomData
getPaymasterCustomData(paymasterOptions?: PaymasterOptions): PaymasterParamsGenerates the PaymasterParams object that will be passed to the transaction that's using a paymaster.
paymasterOptions:PaymasterOptions(optional) - An object containing options for the Paymaster (e.g., innerInput, minimalAllowance).Returns: APaymasterParamsobject.
sendPaymasterTransaction
sync sendPaymasterTransaction(address: Address, abi: Abi | readonly unknown[], functionName: string, args: any[] = [], overrides?: PaymasterOverrides): Promise<Address>Populates and sends a transaction using the Paymaster.
address:Address- The address of the contract to call.abi:Abi | readonly unknown[]- The ABI of the contract to callfunctionName:string- The name of the function to callargs:any[](optional) - An array of arguments for the function call.overrides:PaymasterOverrides(optional) - An object containing overrides for the transaction (e.g., to, value, data, customData, gasLimit, maxFeePerGas, maxPriorityFeePerGas)Returns: A hash object.
getBalance
async getBalance(): Promise<bigint>Gets the balance of the Paymaster contract.
Returns: The balance of the Paymaster contract as abigintvalue.
estimateGas
async estimateGas(address: Address, abi: Abi | readonly unknown[], functionName: string, args?: any[], overrides?: PaymasterOverrides): Promise<bigint>Estimates the gas required for a transaction. Especially tailored for Paymaster paymaster needs.
address:Address- The address of the contract to call for which to estimate the gas.abi:Abi | readonly unknown[]- The ABI of the contract to call for which to estimate the gas.functionName:string- The name of the function to call for gas estimation.args:any[](optional) - An array of arguments for the function call.overrides:PaymasterOverrides(optional)- An object containing overrides for the transaction (e.g., to, value, data, customData, gasLimit, maxFeePerGas, maxPriorityFeePerGas)Returns: The estimated gas limit as abigintvalue.
getPaymasterContract
getPaymasterContract(): ERC20PaymasterContract | SponsoredPaymasterContractGets an instance of the ERC20Paymaster or SponsoredPaymaster contract, depending on the paymasterType.
Returns: An instance of the paymaster contract inERC20PaymasterContractorSponsoredPaymasterContracttype.
addExtension
async addExtension(address: Address): Promise<ContractTransactionResponse>Adds an extension to the Paymaster.
address:Address- The address of the extension contract to add.Returns: A hash of the extension.
getExtensions
async getExtensions(): Promise<string[]>Gets the list of restriction contract addresses added to the Paymaster.
Returns: An array of extension contract addresses.
removeExtension
async removeExtension(address: Address): Promise<ContractTransactionResponse>Removes an extension contract from the Paymaster.
address:Address- The address of the extension contract to remove.Returns: A hash of the transaction object.
Last updated