> ## Documentation Index
> Fetch the complete documentation index at: https://docs.plasma.org/llms.txt
> Use this file to discover all available pages before exploring further.

# Configurer un environnement de développement

> Configurez vos outils et connectez-vous à Plasma pour le développement de smart contracts.

Plasma est entièrement compatible EVM, ce qui vous permet d'utiliser les outils Ethereum standards tout en bénéficiant de fonctionnalités optimisées pour les applications natives de stablecoins. Pour en savoir plus sur les détails de l'architecture de Plasma, consultez la section [Vue d'ensemble de l'architecture](../../plasma-chain/architecture/system-overview.mdx).

## Vérifier la connectivité RPC

Des endpoints RPC publics sont disponibles pour les deux réseaux Plasma :

```shell theme={null}
# Mainnet (recommandé)
curl --location https://rpc.plasma.to --header 'Content-Type: application/json' --data '{"method":"eth_blockNumber","params":[],"id":1,"jsonrpc":"2.0"}'

# Testnet (optionnel)
curl --location https://testnet-rpc.plasma.to --header 'Content-Type: application/json' --data '{"method":"eth_blockNumber","params":[],"id":1,"jsonrpc":"2.0"}'
```

Les réponses du mainnet ressembleront à :

```output theme={null}
{"jsonrpc":"2.0","id":1,"result":"0x11180f"}
```

<Tip>
  Les endpoints publics ont des limites de débit. Pour une utilisation en production ou des requêtes à haute fréquence, envisagez d'utiliser un [fournisseur RPC partenaire](../../plasma-chain/tools/rpc-providers).
</Tip>

## Configuration des outils de développement

Ci-dessous des exemples pour [Hardhat](#hardhat) et [Truffle](#truffle-configuration) :

### Hardhat

Créez ou modifiez votre fichier `hardhat.config.js` pour inclure les deux réseaux Plasma :

```javascript theme={null}
require("dotenv").config();

module.exports = {
  networks: {
    plasmaMainnet: {
      url: process.env.MAINNET_RPC_ENDPOINT || "https://rpc.plasma.to",
      chainId: 9745,
      accounts: process.env.PRIVATE_KEY ? [process.env.PRIVATE_KEY] : []
    },
    // Optional: enable the testnet for staging.
    plasmaTestnet: {
      url: process.env.TESTNET_RPC_ENDPOINT || "https://testnet-rpc.plasma.to",
      chainId: 9746,
      accounts: process.env.PRIVATE_KEY ? [process.env.PRIVATE_KEY] : []
    }
  },
  solidity: {
    version: "0.8.28",
    settings: {
      optimizer: {
        enabled: true,
        runs: 200
      }
    }
  }
};
```

### Configuration de Truffle

Si vous utilisez Truffle, mettez à jour votre `truffle-config.js` :

```javascript theme={null}
const HDWalletProvider = require('@truffle/hdwallet-provider');

module.exports = {
  networks: {
    plasmaMainnet: {
      provider: () => new HDWalletProvider(
        "<YOUR_MNEMONIC_HERE>",
        process.env.MAINNET_RPC_ENDPOINT || "https://rpc.plasma.to",
      ),
      network_id: 9745,
      gas: 5500000,
    },
    plasmaTestnet: {
      provider: () => new HDWalletProvider(
        "<YOUR_MNEMONIC_HERE>",
        process.env.TESTNET_RPC_ENDPOINT || "https://testnet-rpc.plasma.to",
      ),
      network_id: 9746,
      gas: 5500000,
    }
  },
  compilers: {
    solc: {
      version: "0.8.28",
      settings: {
        optimizer: {
          enabled: true,
          runs: 200
        }
      }
    }
  }
};
```

## Intégration de wallet

### Intégration Web3.js

```javascript theme={null}
const Web3 = require('web3');
const web3 = new Web3(process.env.MAINNET_RPC_ENDPOINT || 'https://rpc.plasma.to');

// Check connection
web3.eth.getBlockNumber()
  .then(blockNumber => console.log('Connected to Plasma node. Current block:', blockNumber))
  .catch(error => console.error('Connection error:', error));
```

### Intégration Ethers.js

```javascript theme={null}
const { ethers } = require('ethers');
const provider = new ethers.JsonRpcProvider('https://testnet-rpc.plasma.to');

// Check connection
provider.getBlockNumber()
  .then(blockNumber => console.log('Connected to Plasma node. Current block:', blockNumber))
  .catch(error => console.error('Connection error:', error));
```

## Valider la configuration

Créez un script simple pour vérifier que votre environnement de développement est correctement configuré :

```javascript theme={null}
const { ethers } = require('ethers');
require('dotenv').config();

async function testSetup() {
  // Connect to the Plasma node.
  const provider = new ethers.JsonRpcProvider('https://testnet-rpc.plasma.to');
  
  // Get network information.
  const network = await provider.getNetwork();
  console.log('Connected to network:', network);
  
  // Get current block number.
  const blockNumber = await provider.getBlockNumber();
  console.log('Current block number:', blockNumber);
  
  // Optionally, print address and balance if PRIVATE_KEY is set.
  if (process.env.PRIVATE_KEY) {
    const wallet = new ethers.Wallet(process.env.PRIVATE_KEY, provider);
    const balance = await provider.getBalance(wallet.address);
    console.log('Account address:', wallet.address);
    console.log('Balance:', ethers.formatEther(balance), 'XPL');
  } else {
    console.log('Set PRIVATE_KEY to also print address and balance.');
  }
}

testSetup()
  .then(() => console.log('Setup test completed successfully'))
  .catch(error => console.error('Setup test failed:', error));
```

## Dépannage

| Problème                       | Action                                                                                                  |
| :----------------------------- | :------------------------------------------------------------------------------------------------------ |
| **Connexion refusée**          | Vérifiez que l'endpoint RPC est correct et accessible                                                   |
| **Échec d'estimation de gas**  | Assurez-vous que le wallet a suffisamment de XPL                                                        |
| **Erreur de version Solidity** | Mettez à jour la configuration pour correspondre à la version du compilateur prise en charge par Plasma |
| **Échec de transaction**       | Vérifiez l'URL RPC et le chain ID correct                                                               |
