Overview

Our platform introduces a seamless integration between and accounts. This page outlines the technical steps and security measures for developers to efficiently manage AA accounts via our SDK.

Creating AA Accounts

Creating AA account is done under the hood using underlying AA-provider ZeroDev.

Each EOA links to a unique AA account, effectively acting as a 1-to-1 relation.

Key Features of SDK for Adoption of AA and Yield on Idle Assets

  • Transaction Conversion: Simplify the conversion of standard transactions into user operations (UserOps) for various actions including swaps, transfers, NFT activities etc.
  • Batch Operations: Aggregate and dispatch UserOps in batches for increased transaction efficiency.
  • Simulation: Use SDK to generate regular transactions, compatible with regular simulators’ APIs
  • Session Keys: Utilize session keys for secure, permission-based management of AA accounts, enabling automated yield on idle assets.

Day-to-Day Workflow

1

Linking EOA to AA

Automatically create an AA account for each user’s EOA, establishing a secure link for transaction management.

const aaClient = new savingsSDK.AAClient(eoa);
console.log(aaClient.getAAAddress());
// No smart contract deployed yet at this point, it is deployed with first
// transaction sent.
2

Sending a regular transaction from AA wallet

Use the SDK to transform transactions into UserOps.

// const transaction = generateSwap(...);
const userOp = savingsSDK.convertTransactionToUserOp(transaction);
const receipt = await savingsSDK.signAndSendUserOp(userOp);
3

Simulate assets movement

SDK provides the ability to simulate UserOps using regular simulation methods (RPCs, Alchemy simulation, Tenderly, etc).

// const swapTransaction = generateSwap(...);
const userOps = await savingsSDK.signUserOps();
const transactionForSimulation = savingsSDK.userOpsToTxn(userOps);
const erc20Transfers = new AlchemyClient(ALCHEMY_API_KEY).simulate(userOps);

Activating Yield with Session Keys

Assign session keys through the SDK to enable automated yield generation, with explicit permissions for transparent security.

const toBeSigned = savingsSDK.prepareSessionKey();
const signature = await signFromBehalfOfUser(await savingsSDK.prepareSessionKey);
savingsSDK.notifyOfSignature(signature);

Session keys are rigorously audited and can be revoked by wallets at any time, providing end-to-end control and security for users’ of AA accounts.

Summary

Our architecture prioritizes security, supported by thorough testing and validation to ensure a resilient and user-friendly integration process. Developers can leverage our SDK and infrastructure to offer a sophisticated yet straightforward wallet experience, emphasizing safety, efficiency, and yield generation.