# 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:

```typescript
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.

```typescript
// 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,
})
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.chiliz.com/pt-br/desenvolver/avancado/como-usar-account-abstraction.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
