Socket
Socket
Sign inDemoInstall

safe-aa

Package Overview
Dependencies
376
Maintainers
1
Versions
68
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    safe-aa

safe-aa: Empower ERC-4337 smart accounts with seamless APIs for enhanced decentralized finance experiences.


Version published
Weekly downloads
3
decreased by-76.92%
Maintainers
1
Created
Weekly downloads
 

Readme

Source

Abstraxn - Account

Facilitating the integration and deployment of Smart Accounts, as well as constructing and dispatching user operations, stands as a pivotal feature within any toolkit designed for ERC4337. This package seamlessly incorporates the fundamental attributes associated with ERC-4337, streamlining the development process for your Dapp's account and transaction rails while incorporating additional usability features.

The account package accomplishes this by offering a comprehensive set of methods, empowering developers to effortlessly generate UserOperations. Augmented by the sophisticated, developer-friendly, and scalable abstraction layer provided by Abstraxn, it ensures the efficient and reliable transmission of these operations across multiple EVM chains.

What is a Smart Account Wallet?

In ERC-4337, a smart account is a dedicated smart contract managing assets and generating userOps, pseudo-transaction objects executed on the EVM, replacing traditional Externally Owned Accounts.

Installation and Usage

The easiest way to use Abstraxn - Account is to install it from npm:

npm install @abstraxn/account

Install the required packages for initializing the Smart Account

npm install ethers@5.7 @abstraxn/account @abstraxn/bundler @abstraxn/common @abstraxn/core-types @abstraxn/modules

Example Usage

Create a Smart account wallet:

import { Signer, ethers } from "ethers";
import { AbstraxnSmartAccount } from "@abstraxn/account";
import {
  DEFAULT_ECDSA_OWNERSHIP_MODULE,
  DEFAULT_ENTRYPOINT_ADDRESS,
  ECDSAOwnershipValidationModule,
} from "@abstraxn/modules";
import { Bundler, IBundler } from "@abstraxn/bundler";
import { ChainId } from "@abstraxn/core-types";

// Create a new Web3Provider using the 'ethereum' object
const provider = new ethers.providers.Web3Provider(ethereum);

// create instance of bundlers
const bundler: IBundler = new Bundler({
  bundlerUrl: "",
  chainId: ChainId.POLYGON_MUMBAI, // you can use multiple chains available in chainId object
  entryPointAddress: DEFAULT_ENTRYPOINT_ADDRESS,
});

// instance of ownership module
const ownerShipModule = await ECDSAOwnershipValidationModule.create({
  signer: provider.getSigner() as Signer, // ethers signer object
  moduleAddress: DEFAULT_ECDSA_OWNERSHIP_MODULE,
});

// Note that bundler is optional. You can choose to create new instances of this later and make account API use
const abstraxnSmartAccount = await AbstraxnSmartAccount.create({
    chainId: ChainId.POLYGON_MUMBAI, // you can use multiple chains available in chainId object
    activeValidationModule: ownerShipModule,
    defaultValidationModule: ownerShipModule,
    bundler: bundler, // instance of bundler
});

// you can get your smart account wallet address by getAccountAddress()
const address = await abstraxnSmartAccount.getAccountAddress();

//Contract instance
const contract = new ethers.Contract(
  contractAddress,
  Contract_ABI, // contract abi
  provider
);

//contract function 
const mint = await contract.populateTransaction.mint(
  //walletAddress,
  //amount
);

//transaction
const tx1 = {
  to: contractAddress,
  data: mint.data,
};

// you can create your userOp by buildUserOp()
const userOp = await abstraxnSmartAccount.buildUserOp([tx1, ...], {
    overrides: {
        ...
      }
});

// you can send your userOp to bundler by sendUserOp()
const userOpResponse = await abstraxnSmartAccount.sendUserOp(userOp);

//wait for response
const { receipt } = await userOpResponse.wait(1);

//your transaction receipt
console.log(receipt)

Main Functions

  • create() - Used for setting the SDK API key on the frontend.

  • getAccountAddress() - Deploys a multisig wallet for the user.

  • buildUserOp() - Creates signatures for approvers for all transactions.

  • sendUserOp() - Executes functions using the multisig wallet.

  • ... and so on

License

This package is MIT licensed. (c) Antier Solutions 2024.

Authors

  • @sandeep_sj
  • @jaskaran449
  • @antiersolutions

Keywords

FAQs

Last updated on 22 Jan 2024

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc