Passer au contenu principal
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.

Vérifier la connectivité RPC

Des endpoints RPC publics sont disponibles pour les deux réseaux Plasma :
# 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 à :
{"jsonrpc":"2.0","id":1,"result":"0x11180f"}
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.

Configuration des outils de développement

Ci-dessous des exemples pour Hardhat et Truffle :

Hardhat

Créez ou modifiez votre fichier hardhat.config.js pour inclure les deux réseaux Plasma :
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 :
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

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

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é :
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èmeAction
Connexion refuséeVérifiez que l’endpoint RPC est correct et accessible
Échec d’estimation de gasAssurez-vous que le wallet a suffisamment de XPL
Erreur de version SolidityMettez à jour la configuration pour correspondre à la version du compilateur prise en charge par Plasma
Échec de transactionVérifiez l’URL RPC et le chain ID correct