Saltar al contenido principal
Plasma es totalmente compatible con EVM, lo que te permite usar el tooling estándar de Ethereum mientras te beneficias de funcionalidades optimizadas para aplicaciones nativas de stablecoins. Para conocer más sobre los detalles de arquitectura de Plasma, consulta la sección Resumen de arquitectura.

Verifica la conectividad RPC

Hay endpoints RPC públicos disponibles para ambas redes de Plasma:
# Mainnet (recommended)
curl --location https://rpc.plasma.to --header 'Content-Type: application/json' --data '{"method":"eth_blockNumber","params":[],"id":1,"jsonrpc":"2.0"}'

# Testnet (optional)
curl --location https://testnet-rpc.plasma.to --header 'Content-Type: application/json' --data '{"method":"eth_blockNumber","params":[],"id":1,"jsonrpc":"2.0"}'
Las respuestas de la mainnet se verán similares a:
{"jsonrpc":"2.0","id":1,"result":"0x11180f"}
Los endpoints públicos tienen límite de tasa. Para uso en producción o solicitudes de alta frecuencia, considera usar un proveedor RPC asociado.

Configuración de herramientas de desarrollo

A continuación se muestran ejemplos para Hardhat y Truffle:

Hardhat

Crea o modifica tu archivo hardhat.config.js para incluir ambas redes de 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
      }
    }
  }
};

Configuración de Truffle

Si usas Truffle, actualiza tu 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
        }
      }
    }
  }
};

Integración con wallets

Integración con 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));

Integración con 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));

Valida la configuración

Crea un script simple para verificar que tu entorno de desarrollo está correctamente configurado:
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));

Solución de problemas

ProblemaAcción
Conexión rechazadaConfirma que el endpoint RPC sea correcto y accesible
Falló la estimación de gasAsegúrate de que la wallet tenga suficiente XPL
Error de versión de SolidityActualiza la configuración para coincidir con la versión de compilador soportada por Plasma
La transacción fallaVerifica la URL del RPC y el chain ID correcto