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.
Plasma is fully EVM compatible, allowing you to use standard Ethereum tooling while benefiting from features optimized for stablecoin-native applications. To learn more about Plasma’s architecture details, see the Architecture Overview section.
Verify RPC Connectivity
Public RPC endpoints are available for both Plasma networks:
# 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"}'
Mainnet responses will look similar to:
{"jsonrpc":"2.0","id":1,"result":"0x11180f"}
Public endpoints are rate-limited. For production use or high-frequency requests, consider using a partner RPC provider.
Below are examples for Hardhat and Truffle:
Hardhat
Create or modify your hardhat.config.js file to include both Plasma networks:
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
}
}
}
};
Truffle Configuration
If you’re using Truffle, update your 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
}
}
}
}
};
Wallet Integration
Web3.js Integration
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));
Ethers.js Integration
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));
Validate Setup
Create a simple script to verify your development environment is correctly set up:
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));
Troubleshooting
| Issue | Action |
|---|
| Connection refused | Confirm RPC endpoint is correct and accessible |
| Gas estimation failed | Ensure wallet has sufficient XPL |
| Solidity version error | Update config to match compiler version supported by Plasma |
| Transaction fails | Verify RPC URL and correct chain ID |