RPC 연결 확인
두 Plasma 네트워크 모두에 대해 공개 RPC 엔드포인트가 제공됩니다:# 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"}'
{"jsonrpc":"2.0","id":1,"result":"0x11180f"}
공개 엔드포인트는 속도 제한이 있습니다. 프로덕션 용도나 빈번한 요청을 위해서는 파트너 RPC 제공자 사용을 고려하십시오.
개발 도구 구성
아래는 Hardhat 및 Truffle 예제입니다:Hardhat
두 Plasma 네트워크를 포함하도록hardhat.config.js 파일을 만들거나 수정합니다:
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 구성
Truffle을 사용하는 경우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
}
}
}
}
};
지갑 통합
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));
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));
설정 검증
개발 환경이 올바르게 설정되었는지 확인하기 위한 간단한 스크립트를 작성합니다: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));
문제 해결
| 문제 | 조치 |
|---|---|
| 연결 거부됨 | RPC 엔드포인트가 올바르고 접근 가능한지 확인 |
| 가스 추정 실패 | 지갑에 충분한 XPL이 있는지 확인 |
| Solidity 버전 오류 | Plasma가 지원하는 컴파일러 버전에 맞도록 구성 업데이트 |
| 트랜잭션 실패 | RPC URL과 올바른 체인 ID 확인 |