# Comment utiliser l'abstraction de compte

## Qu'est-ce que l'Abstraction de Compte ?&#x20;

L'Abstraction de Compte (Account Abstraction, ou AA) est une technologie blockchain qui permet aux utilisateurs d'utiliser des contrats intelligents comme leurs comptes, les rendant entièrement programmables.&#x20;

Elle vise à rendre les comptes utilisateurs plus flexibles et fonctionnels, améliorant ainsi l'expérience utilisateur.&#x20;

## Qu'est-ce que cela signifie pour les développeurs de Chiliz Chain ?

En implémentant l'AA, les développeurs pourraient améliorer l'expérience utilisateur de leur projet : des interactions plus simples avec Chiliz Chain signifient une application plus conviviale.&#x20;

## Comment le faire en utilisant Biconomy ?&#x20;

Biconomy propose un SDK complet pour l'Abstraction de Compte, qui permet d'accéder aux Comptes Intelligents : <https://docs.biconomy.io/account>&#x20;

Selon Biconomy, il existe 4 façons d'exploiter leur pile AA sur Chiliz Chain :&#x20;

* Transactions sans gas&#x20;
* Transactions groupées&#x20;
* Portefeuilles de contrats intelligents (y compris la connexion sociale)&#x20;
* Modules incluant des clés de session, validateur multichaîne, récupération de compte, et bien plus encore !&#x20;

Biconomy a une page de démarrage rapide intéressante : <https://docs.biconomy.io/quickstart>&#x20;

L'exemple de code utilise le réseau Polygon Mumbai, et vous pouvez l'adapter à Chiliz, comme ceci :&#x20;

```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();
```

N'oubliez pas les IDs de la Chiliz Chain :&#x20;

`CHILIZ_MAINNET` = 88888&#x20;

`CHILIZ_TESTNET` = 88882&#x20;

De plus, lorsque vous travaillez avec Biconomy, notez que Chiliz a [sa propre adresse d'entrée](https://docs.biconomy.io/contracts#entry-points), pour le mainnet et le testnet : [0x00000061FEfce24A79343c27127435286BB7A4E1 ](https://scan.chiliz.com/address/0x00000061FEfce24A79343c27127435286BB7A4E1/contracts#address-tabs)

Ceci est important lors de l'utilisation du [Bundler](https://docs.biconomy.io/bundler) ou du [Paymaster](https://docs.biconomy.io/paymaster) de Biconomy :&#x20;

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