Paymaster Utilities

Essential utilities for using paymasters on ZKsync Era

The paymaster utilities library contains essential utilities for using paymasters on ZKsync Era.

Contract interfaces

IPaymasterFlow

Constant ABI definition for the Paymaster Flow Interface.

getPaymasterParams

Returns a correctly-formed paymasterParams object for common paymaster flows.

Inputs

ParameterTypeDescription
paymasterAddressAddressThe non-zero paymaster address.
paymasterInputPaymasterInputThe input data to the paymaster.
export function getPaymasterParams(paymasterAddress: Address, paymasterInput: PaymasterInput): PaymasterParams;

Find out more about the PaymasterInput type.

Examples

Creating General paymaster parameters.

const paymasterAddress = "0x0a67078A35745947A37A552174aFe724D8180c25";
const paymasterParams = utils.getPaymasterParams(paymasterAddress, {
  type: "General",
  innerInput: new Uint8Array(),
});

Creating ApprovalBased paymaster parameters.

const result = utils.getPaymasterParams("0x0a67078A35745947A37A552174aFe724D8180c25", {
  type: "ApprovalBased",
  token: "0x65C899B5fb8Eb9ae4da51D67E1fc417c7CB7e964",
  minimalAllowance: BigInt(1),
  innerInput: new Uint8Array(),
});

Functions

Approval-based Paymaster

Returns encoded input for an approval-based paymaster.

Inputs

ParameterTypeDescription
paymasterAddressAddressThe non-zero paymaster address.
paymasterInputDataThe input data to the paymaster.
func encodeApprovalBased(_ tokenAddress: EthereumAddress, minimalAllowance: BigUInt, paymasterInput: Data) -> Data

General Paymaster

Returns encoded input for a general paymaster.

Inputs

ParameterTypeDescription
paymasterInputDataThe input data to the paymaster.
func encodeGeneral(_ paymasterInput: Data) -> Data

Made with ❤️ by the ZKsync Community