2.1.2 • Published 1 year ago

@thangnn91/paymaster-helper v2.1.2

Weekly downloads
-
License
ISC
Repository
github
Last release
1 year ago

Paymaster Helper

A paymaster is a smart contract that can pay for transactions for its users, executing any logic to decide whether it should forward a transaction. For example, developers can allow users to run transactions for free or pay in your application's ERC-20 token instead. The library helps developers easily interact with paymaster contracts

🛠 Prerequisites

📥 Installation & Setup

Using npm package manager

npm i @holdstation/paymaster-helper

Using yarn

yarn add @holdstation/paymaster-helper

📝 Examples

Types

export interface BaseProps {
  network: "testnet" | "mainnet";
  paymasterAddress?: string; //custom paymaster address
  populateTransaction: ethers.PopulatedTransaction;
  innerInput?: string; //custom inner input for paymaster
  minimumGasLimit?: number;
  defaultGasLimit?: number; //default gas limit in case gas estimate for paymaster fails, if no param is passed, default is 1_500_000
  bufferPercentage?: number;
}

export interface ExecuteProps extends BaseProps {
  signer?: string | Wallet | Signer; //private key / wallet / signer
  paymentToken?: EthereumAddress; //start with '0x'
}

export interface AAExecuteProps extends ExecuteProps {
  aaAddress: EthereumAddress; //start with '0x'
}

export type BuilderOutput = {
  populatedTx: ethers.PopulatedTransaction;
  gasLimit: BigNumber;
  gasPrice: BigNumber;
};

Using by wallet/private key

import { Partner } from "@holdstation/paymaster-helper"

const contract = new Contract(CONTRACT_ADDRESS, CONTRACT_ABI, provider)
const populateContract = await contract.populateTransaction[method](...params, {
      from: ACCOUNT,
});


const projectName = "YOUR_PROJECT_NAME"; eg: SYNSWAP, XY_FINANCE, ORBITER ...
const partnerCode = ethers.utils.formatBytes32String(projectName);

//execute using private key
const privateKey = '0x...........'

await Partner.paymasterExecute({
  network: "testnet",
  signer: privateKey,
  paymentToken: PAYMENT_TOKEN, //could be usdc/usdt address ...
  populateTransaction: populateContract,
  innerInput: partnerCode,
})

//execute using wallet
const privateKey = '0x...........'
const provider = new Provider('chain_rpc');
const wallet = new Wallet(privateKey, provider);
await Partner.paymasterExecute({
  network: "testnet",
  signer: wallet,
  paymentToken: PAYMENT_TOKEN, //could be usdc/usdt address ...
  populateTransaction: populateContract,
  innerInput: partnerCode,
})

Using by Web3Provider Signer

const provider = new ethers.providers.Web3Provider(window.ethereum);
const signer: Signer = new Web3Provider(window.ethereum).getSigner();
await Partner.paymasterExecute({
  //If no signer is specified, we will obtain it from the extension.
  signer: walletConnectSigner,
  network: "testnet",
  paymentToken: PAYMENT_TOKEN,
  populateTransaction: populateContract,
  innerInput: partnerCode,
})

Using by client extension (eg: Metamask)

//No signer is specified here, because we will obtain it from the extension.
//Please make sure you have installed the browser extension
await Partner.paymasterExecute({
  network: "testnet",
  paymentToken: PAYMENT_TOKEN,
  populateTransaction: populateContract,
  innerInput: partnerCode,
})
2.1.2

1 year ago

2.1.0

1 year ago

0.0.11

1 year ago

2.0.19

1 year ago

2.0.28

1 year ago

2.0.29

1 year ago

2.0.26

1 year ago

2.0.27

1 year ago

2.0.24

1 year ago

2.0.25

1 year ago

2.0.22

1 year ago

2.0.23

1 year ago

2.0.20

1 year ago

2.0.21

1 year ago

0.0.9

1 year ago

2.0.30

1 year ago

0.0.5

1 year ago

0.0.4

1 year ago

0.0.6

1 year ago

0.0.3

1 year ago

0.0.2

1 year ago

0.0.1

1 year ago