Skip to content

TypeScript utilities built on viem for ERC-4337: Account Abstraction

License

Notifications You must be signed in to change notification settings

etherspot/permissionless.js

 
 

Repository files navigation

permissionless.js

Node Version

permissionless.js is a TypeScript library built on top of viem for deploying and managing ERC-4337 smart accounts, interacting with bundlers and paymasters, and leveraging custom signers.

Features

  • High-Level Smart Account Support: We support a high-level API for deploying and managing smart accounts, including some of the most popular implementations (Safe, Kernel, Biconomy, etc.)
  • Bundler Support: We support all bundler actions following ERC-4337.
  • Gas Sponsorship: We support paymaster actions to allow you to easily sponsor gas fees.
  • User Operation Utility Functions: We provide many low-level utility functions useful for dealing with User Operations.
  • Modular and Extensible: We allow you to easily create and plug in your own smart account systems, bundlers, paymasters, and signers.
  • Built on & for viem: permissionless.js is designed to be a thin wrapper around viem, maintaining the same style and overall feel viem provides.
  • and a lot more...

Documentation

Take a look at our documentation to learn more about permissionless.js.

Installation

Install viem as a peer dependency.

Then install permissionless.js:

npm install viem permissionless
bun install viem permissionless
yarn add viem permissionless

Quick Start

// Import the required modules.
import { createSmartAccountClient } from "permissionless";
import { createPaymasterClient } from "viem/account-abstraction";
import { sepolia } from "viem/chains";
import { http } from "viem";

const paymaster = createPaymasterClient({
  transport: http(`https://api.pimlico.io/v2/sepolia/rpc?apikey=${pimlicoApiKey}`)
})

const account = toSimpleSmartAccount<entryPointVersion>({
  client: getPublicClient(anvilRpc),
  owner: privateKeyToAccount(generatePrivateKey())
})

// Create the required clients.
const bundlerClient = createSmartAccountClient({
  account,
  paymaster: 
  chain: sepolia,
  bundlerTransport: http(
    `https://api.pimlico.io/v2/sepolia/rpc?apikey=${pimlicoApiKey}`,
  ), // Use any bundler url
});

// Consume bundler, paymaster, and smart account actions!
const userOperationReceipt = await bundlerClient.getUserOperationReceipt({
  hash: "0x5faea6a3af76292c2b23468bbea96ef63fb31360848be195748437f0a79106c8",
});

Contributors

For a full explanation of permissionless.js, please visit our docs page

Build permissionless.js locally with:

bun run build

License

Distributed under an MIT License. See LICENSE for more information.

Contact

Feel free to ask any questions in our Telegram group

About

TypeScript utilities built on viem for ERC-4337: Account Abstraction

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • TypeScript 100.0%