Como usar Account Abstraction

O que é Account Abstraction?

Account Abstraction é uma tecnologia blockchain que permite aos usuários usar contratos inteligentes como suas contas, tornando-os totalmente programáveis.

Ela visa tornar as contas de usuários mais flexíveis e funcionais, aprimorando assim a experiência do usuário.

O que isso significa para os desenvolvedores da Chiliz Chain?

Implementando AA, os desenvolvedores podem melhorar a experiência do usuário de seu projeto: interações mais simples com a Chiliz Chain significam um aplicativo mais amigável ao usuário.

Como fazer isso usando o Biconomy?

Biconomy fornece um SDK completo de Account Abstraction, que fornece acesso a Smart Accounts: https://docs.biconomy.io/account

De acordo com o próprio Biconomy, existem 4 maneiras de aproveitar sua pilha de AA na Chiliz Chain:

  • Transações sem gás

  • Transações em lote

  • Carteiras de contratos inteligentes (incluindo login social)

  • Módulos incluindo chaves de sessão, validador multichain, recuperação de conta e muito mais!

Biconomy tem uma página de início rápido útil: https://docs.biconomy.io/quickstart

O código de exemplo usa a rede Polygon Mumbai, e você pode adaptá-lo para Chiliz, assim:

import {
  Hex,
  createWalletClient,
  encodeFunctionData,
  http,
  parseAbi,
  zeroAddress,
} from "viem";
import { privateKeyToAccount } from "viem/accounts";
import { ChainId } from '@biconomy/core-types'
import { createSmartAccountClient } from "@biconomy/account";

const bundlerUrl =
  "https://bundler.biconomy.io/api/v2/80001/nJPK7B3ru.dd7f7861-190d-41bd-af80-6877f74b8f44"; // Found at https://dashboard.biconomy.io

export const createAccountAndMintNft = async () => {
  // ----- 1. Generate EOA from private key
  const account = privateKeyToAccount("0x" + "PRIVATE_KEY");
  const client = createWalletClient({
    account,
    chainId: ChainId.CHILIZ_TESTNET, // or ChainId.CHILIZ_MAINNET,
    transport: http(),
  });
  const eoa = client.account.address;
  console.log(`EOA address: ${eoa}`);

  // ------ 2. Create biconomy smart account instance
  const smartAccount = await createSmartAccountClient({
    signer: client,
    bundlerUrl,
  });
  const saAddress = await smartAccount.getAccountAddress();
  console.log("SA Address", saAddress);
};
createAccountAndMintNft();

Lembre-se dos IDs da Chiliz Chain:

  • CHILIZ_MAINNET = 88888

  • CHILIZ_TESTNET = 88882

Além disso, ao trabalhar com o Biconomy, note que a Chiliz tem seu próprio endereço de entrypoint, tanto para mainnet quanto para testnet: 0x00000061FEfce24A79343c27127435286BB7A4E1

Isso é importante ao usar o Biconomy Bundler ou Paymaster.

// CC2 has its own entrypoint address
const CHILIZ_BUNDLER_ENTRYPOINT_ADDRESS='0x00000061FEfce24A79343c27127435286BB7A4E1'

const bundler = new Bundler({
    bundlerUrl: `https://bundler.biconomy.io/api/v2/${ChainId.CHILIZ_TESTNET}/nJPK7B3ru.dd7f7861-190d-41bd-af80-6877f74b8f44`,
    chainId: ChainId.CHILIZ_TESTNET,
    entryPointAddress: CHILIZ_BUNDLER_ENTRYPOINT_ADDRESS,
})

Last updated