Artikel ini dibuat oleh AI. Silakan verifikasi informasi penting secara mandiri.

Node RPC Solana: Pengaturan, Penyedia dan Praktik Terbaik

Crypto Wiki|Oct 8, 2026|★★★★★★4.5 (500 penilaian)
Ringkasan AI

Complete guide to Solana RPC nodes. Learn how they work, compare top providers like Helius and QuickNode, and fix rate limit errors for production dAp...

Node RPC Solana menyediakan antarmuka baca, pengiriman, dan langganan yang digunakan aplikasi untuk berkomunikasi dengan jaringan. Fitur penyedia, batas, penetapan harga, persyaratan perangkat keras, dan angka kinerja berubah seiring waktu, jadi keputusan produksi harus diverifikasi terhadap dokumentasi saat ini dan pengujian beban kerja.

Terakhir Diperbarui: Juli 2025

Endpoint publik Solana mungkin berguna untuk pengembangan tetapi bukan jaminan layanan produksi universal. Jika dApp mengembalikan kesalahan 429, macet pada kueri akun, atau memiliki masalah pengiriman di bawah beban, jalur RPC-nya adalah salah satu komponen yang perlu diselidiki bersama dengan konstruksi transaksi, biaya, kedaluwarsa, jaringan, dan kondisi kluster.

Panduan ini mencakup apa itu node RPC Solana, bagaimana perbedaannya dengan node validator, bagaimana permintaan mengalir melalui sistem, di mana mendapatkan URL endpoint publik, metode RPC mana yang paling penting, cara menghubungkan melalui @solana/web3.js, penyedia terkelola mana yang harus dievaluasi, apa yang sebenarnya dibutuhkan oleh hosting mandiri, dan cara memperbaiki kesalahan batas laju yang mungkin sudah Anda lihat.

TL;DR: Untuk pengembangan, gunakan endpoint publik Solana Foundation gratis. Untuk produksi, gunakan penyedia terkelola seperti Helius, QuickNode, Alchemy, atau Triton One. Hosting mandiri menawarkan lebih banyak kontrol operasional tetapi masih memerlukan perencanaan kapasitas, kebijakan akses, pemantauan, dan panduan perangkat keras saat ini.

Lompat ke:

  • Apa Itu Node RPC Solana?
  • Node RPC vs. Validator
  • Cara Kerja Node RPC Solana
  • Jenis Node RPC Solana
  • Mengapa Kualitas Node RPC Penting: Kripto, NFT, dan Kinerja dApp
  • Penyedia Node RPC Solana Terbaik
  • Menghubungkan Aplikasi Anda Menggunakan @solana/web3.js
  • Metode RPC Solana: Apa yang Dapat Anda Kueri
  • Cara Menjalankan Node RPC Solana Anda Sendiri
  • Kesalahan Umum RPC Solana dan Cara Memperbaikinya
  • Pertanyaan yang Sering Diajukan
  • Memilih Strategi RPC Solana yang Tepat

Apa Itu Node RPC Solana?

Node RPC Solana adalah server yang mengimplementasikan API JSON-RPC Solana, menerima permintaan dari aplikasi klien dan mengembalikan data status blockchain sebagai respons. dApps, dompet, penjelajah blok, dan skrip otomatis menggunakan node ini untuk membaca saldo akun, mengirimkan transaksi, dan berlangganan acara on-chain tanpa menyimpan salinan lokal dari buku besar.

Materi historis mengutip throughput teoritis Solana mendekati 65.000 TPS dan durasi slot target mendekati 400 milidetik. Keduanya bukan hasil langsung yang terjamin: definisi transaksi, slot yang dilewati, lalu lintas pemungutan suara, beban kerja, kondisi kluster, dan versi perangkat lunak semuanya memengaruhi kinerja yang diamati. Irama target dan volume status akun masih memberikan tuntutan besar pada infrastruktur RPC.

Remote Procedure Call (RPC) adalah pola komunikasi di mana program di satu mesin memanggil fungsi di mesin lain seolah-olah itu lokal, dengan kompleksitas jaringan diabstraksikan. dApp Anda dapat mengkueri status akun dan mengirimkan transaksi ke node jarak jauh daripada menyimpan salinan buku besar sendiri. Solana menggunakan JSON-RPC 2.0 sebagai protokol kawatnya: format ringan yang merutekan panggilan berdasarkan nama metode melalui HTTP atau WebSocket, bukan berdasarkan jalur URL berbasis sumber daya seperti API REST.

Solana Foundation mengoperasikan endpoint publik gratis di https://api.mainnet-beta.solana.com dan URL yang setara untuk devnet dan testnet. Endpoint ini memberlakukan batasan laju per alamat IP. Ketika aplikasi Anda melebihi batas tersebut, aplikasi akan menerima kesalahan HTTP 429 Too Many Requests, menyebabkan kegagalan intermiten dan penurunan pengalaman pengguna di bawah beban.


Node RPC vs. Validator: Memahami Perbedaannya

Node RPC menyajikan data blockchain kepada klien eksternal melalui API JSON-RPC. Node validator berpartisipasi dalam konsensus dan memilih validitas blok. Ini adalah dua jenis node utama di Solana, dan keduanya melayani tujuan yang berbeda.

AtributNode RPCValidator
Peran UtamaMenyajikan data blockchain ke klien eksternal melalui API JSON-RPCBerpartisipasi dalam konsensus Tower BFT; memilih validitas blok setiap slot
Partisipasi KonsensusTidak adaYa — memilih setiap slot
Staking / ImbalanTidak perlu staking; tidak ada imbalan blokMembutuhkan SOL yang di-stake; mendapatkan imbalan staking SOL
Kebutuhan RAMMinimal 256 GB (menyimpan status akun penuh untuk respons kueri)RAM lebih rendah; memprioritaskan jaringan latensi rendah untuk pemungutan suara
Cara DiaksesMelalui URL endpoint HTTP atau WebSocketDiidentifikasi oleh kunci publik akun voting

Node validator berpartisipasi dalam konsensus Tower BFT, mekanisme pemungutan suara berbasis Proof-of-Stake. Proof-of-History (PoH), mekanisme pengurutan kriptografis Solana (bukan protokol konsensusnya), menetapkan urutan sebelum suara diberikan. Tower BFT adalah lapisan konsensus; PoH menangani pencatatan waktu.

Gulf Stream, protokol penerusan transaksi Solana, mengirimkan transaksi langsung ke node pemimpin saat ini dan yang akan datang, melewati mempool yang digunakan oleh blockchain lain. Validator menangani proses penerusan ini. Node RPC tidak.

Menjalankan node RPC tidak memerlukan SOL yang di-stake. Beberapa operator menjalankan fungsionalitas validator dan RPC pada mesin fisik yang sama, tetapi peran tersebut tetap terpisah secara logis: satu memilih dalam konsensus, yang lain menyajikan kueri klien. Untuk persyaratan perangkat keras yang terlibat dalam hosting mandiri node RPC, permintaan RAM dan penyimpanan berjalan jauh lebih tinggi daripada untuk validator saja.


Cara Kerja Node RPC Solana: Arsitektur dan Alur Data

Node RPC Solana memelihara replika lokal dari buku besar dan status akun, menyajikan data tersebut kepada klien mana pun yang mengirimkan permintaan JSON-RPC yang valid.

Siklus Hidup Permintaan JSON-RPC

  1. Aplikasi klien (dApp, dompet, atau skrip) mengirimkan permintaan POST HTTP atau pesan WebSocket ke URL endpoint node RPC.
  2. Badan permintaan berisi payload JSON-RPC 2.0 dengan empat bidang: jsonrpc, id, method, params.
  3. Node RPC menerima permintaan dan merutekannya ke handler internal yang sesuai berdasarkan bidang method.
  4. Node mengkueri replika buku besar lokal atau penyimpanan status akunnya untuk data yang diminta.
  5. Node mengembalikan respons yang dikodekan JSON yang berisi data yang diminta atau objek kesalahan terstruktur.

Contoh getBalance yang konkret:

// Permintaan
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "getBalance",
  "params": ["KunciPublikAndaBase58DiSini", {"commitment": "confirmed"
}

// Respons
{
  "jsonrpc": "2.0",
  "result": {
    "context": {"slot": 285823400},
    "value": 5000000000
  },
  "id": 1
}
// Catatan: nilai dalam lamports. Bagi dengan 1.000.000.000 untuk mengonversi ke SOL.

Berbeda dengan API REST yang menggunakan URL berbasis sumber daya, JSON-RPC merutekan setiap panggilan melalui satu endpoint menggunakan bidang method. Pengembang dengan pengalaman Ethereum akan mengenali struktur permintaan. Solana berbeda dalam tiga cara utama: tidak ada mempool (transaksi langsung ke pemimpin saat ini), status berada di akun daripada penyimpanan kontrak EVM, dan slot 400ms kira-kira 30 kali lebih cepat daripada waktu blok 12 detik Ethereum.

Tingkat Komitmen: diproses, dikonfirmasi, final

Setiap panggilan RPC yang membaca status menerima parameter commitment:

  • processed: Slot terbaru yang dilihat oleh node. Tercepat, tetapi slot secara teoritis dapat digulir balik.
  • confirmed: Slot telah menerima mayoritas suara validator. Finalitas kuat untuk sebagian besar kasus penggunaan dApp.
  • finalized: Slot tersebut merupakan bagian permanen dari rantai. Gunakan untuk operasi berisiko tinggi.

Apa yang Disimpan oleh Node RPC Solana

Node menyimpan dua kategori data. Status akun saat ini tersimpan di RAM: cuplikan dari setiap akun aktif pada slot terakhir yang dikonfirmasi, diperlukan untuk respons kueri yang cepat. Data ledger historis tersimpan di NVMe SSD: semua catatan transaksi yang diorganisir berdasarkan slot. Solana mengakumulasi sekitar 100 hingga 200 GB data ledger per hari di mainnet-beta. Pertumbuhan penyimpanan tersebut, dikombinasikan dengan slot 400ms, menjelaskan mengapa node RPC memerlukan minimal 256 GB RAM dan beberapa terabyte penyimpanan cepat.

Untuk referensi lengkap Solana JSON-RPC API, lihat docs.solana.com/api.

HTTP vs. WebSocket: Memilih Transport yang Tepat

TransportModelPenggunaan UmumContoh Metode
HTTP / HTTPSRespons-permintaan (stateless, pull)Kueri satu kali, pengiriman transaksigetBalance, getAccountInfo, sendTransaction
WebSocket / WSSKoneksi persisten (stateful, push)Langganan event real-timeaccountSubscribe, logsSubscribe, signatureSubscribe

Jenis Node RPC Solana: Publik, Privat, dan Dihosting Sendiri

Node RPC Solana diakses melalui tiga cara: melalui endpoint publik gratis dari Solana Foundation, melalui penyedia privat terkelola, atau melalui node yang dihosting sendiri yang Anda operasikan secara langsung.

JenisOperatorBiayaBatas LajuTarget LayananPenggunaan Umum
Endpoint PublikSolana FoundationGratisYa (diberlakukan per IP)Tidak AdaPengembangan dan pengujian
Penyedia TerkelolaHelius, QuickNode, Alchemy, Triton OneTingkatan berbayar tersediaBatas lebih tinggi atau tidak ada pada paket berbayarYa (paket berbayar)dApps Produksi
Dihosting SendiriAndaBiaya perangkat keras + operasionalTidak Ada (Anda mengontrolnya)Anda mendefinisikannyaProtokol besar, bursa

Endpoint RPC Solana Publik (Gratis)

Solana Foundation mengoperasikan empat endpoint RPC publik, satu per cluster jaringan. Semuanya gratis tetapi memberlakukan batas laju per alamat IP. Node RPC Solana diakses dalam tiga cara: melalui endpoint publik gratis dari Solana Foundation, melalui penyedia privat terkelola, atau melalui node yang dihosting sendiri yang Anda operasikan secara langsung.

ClusterURL Endpoint HTTPURL Endpoint WebSocketKasus Penggunaan
mainnet-betahttps://api.mainnet-beta.solana.comwss://api.mainnet-beta.solana.comJaringan produksi (label "beta" bersifat historis; ini adalah mainnet live Solana)
devnethttps://api.devnet.solana.comwss://api.devnet.solana.comPengembangan dan pengujian; airdrop SOL gratis tersedia
testnethttps://api.testnet.solana.comwss://api.testnet.solana.comPengujian stres pra-produksi
localnethttp://localhost:8899ws://localhost:8900Pengembangan lokal; dihasilkan oleh solana-test-validator (bukan cluster publik resmi)

Endpoint publik memberlakukan batas laju sekitar 100 permintaan per 10 detik per alamat IP. Melebihi ambang batas ini akan mengembalikan HTTP 429 Too Many Requests. Endpoint ini berfungsi untuk pengembangan dan pengujian. Untuk penggunaan produksi, lihat perbandingan penyedia RPC Solana di bawah.

Untuk dokumentasi cluster lengkap, lihat docs.solana.com/clusters.

Penyedia RPC Privat dan Terkelola Node

Penyedia RPC terkelola dapat menawarkan endpoint khusus, batas yang diterbitkan lebih tinggi, dukungan WebSocket, target layanan, dan banyak wilayah; fitur yang tepat tergantung pada paket saat ini. Empat penyedia utama untuk Solana:

  • Helius: Penyedia asli Solana dengan API RPC yang ditingkatkan dan notifikasi webhook
  • QuickNode: Penyedia multi-rantai dengan distribusi geografis dan marketplace add-on
  • Alchemy: Penyedia multi-rantai dengan alat pengembang tingkat enterprise
  • Triton One: Spesialis asli Solana yang berfokus pada kinerja RPC mentah untuk beban kerja institusional

Perbandingan lengkap dengan harga, dukungan WebSocket, dan pembeda ada di bagian perbandingan penyedia.

Node RPC Solana Dihosting Sendiri

Menghosting sendiri memberi Anda kontrol penuh atas infrastruktur RPC Anda tanpa batas laju, tetapi biaya perangkat keras dimulai dari ribuan dolar dan pemeliharaan DevOps berkelanjutan tidak sepele. Persyaratan lengkap dan gambaran umum penyiapan ada di Cara Menjalankan RPC Solana Anda Sendiri Node.


Mengapa Kualitas RPC Node Penting: DeFi, NFT, dan Kinerja dApp

Kualitas node RPC Anda secara langsung menentukan apakah aplikasi Anda berfungsi dengan benar dalam kondisi produksi. Empat kasus penggunaan membuat ini konkret.

Bot Trading dan Arbitrase DeFi

Protokol OTK_21 di Solana memproses transaksi sensitif waktu di mana latensi menentukan hasil. Bot trading yang memanggil getLatestBlockhash dan sendTransaction melalui endpoint publik yang dibatasi lajunya berisiko mendapatkan blockhash yang kedaluwarsa atau transaksi yang hilang selama timeout 429. Pada linimasa slot 400ms Solana, perbedaan 50ms dalam waktu respons RPC dapat menentukan apakah transaksi masuk ke slot target atau sepenuhnya terlewat.

Jupiter (aggregator), Raydium (AMM/DEX), Drift (perpetuals), dan Marginfi (lending) semuanya bergantung pada akses RPC latensi rendah. Tidak seperti Ethereum DeFi, transaksi Solana melewati mempool sepenuhnya melalui Gulf Stream, langsung ke pemimpin saat ini. Tidak ada antrean pengurutan untuk dijadikan cadangan jika panggilan RPC Anda tiba terlambat.

Mint NFT dengan permintaan tinggi menghasilkan lonjakan ratusan panggilan sendTransaction bersamaan dari pembeli yang bersaing untuk mendapatkan pasokan terbatas. Endpoint publik yang dibatasi hingga ~10 permintaan per detik mengembalikan kesalahan 429 ke sebagian besar peserta selama penurunan puncak. Pasar NFT seperti Magic Eden dan Tensor menggunakan langganan WebSocket logsSubscribe untuk mendeteksi event mint secara real time, yang memerlukan penyedia yang menangani koneksi WebSocket yang stabil dalam skala besar.

Aplikasi dompet memanggil getBalance dan getTokenAccountBalance untuk setiap aset yang dimiliki pengguna, ditambah getAccountInfo untuk membaca metadata on-chain. A wallet yang melayani 10.000 pengguna aktif dapat mengeluarkan puluhan ribu kueri RPC per menit. Penyedia RPC privat dengan kapasitas QPS (queries per second) yang cukup menjaga kueri ini terselesaikan tanpa menurunkan pengalaman pengguna. QPS di sini mengacu pada throughput permintaan RPC, bukan throughput transaksi tingkat jaringan Solana.

Platform analitik dan pengindeks memanggil getBlock berulang kali untuk mereplikasi riwayat transaksi lengkap dari ledger Solana. Sinkronisasi historis penuh mengeluarkan ribuan permintaan getBlock secara berurutan. Node RPC yang dihosting sendiri atau paket tingkat enterprise khusus adalah satu-satunya opsi yang menopang volume ini secara andal. Bursa terpusat yang menjalankan node RPC Solana sendiri menggunakan pola throughput tinggi serupa untuk merekonsiliasi saldo pengguna dan mendeteksi deposit dalam skala besar.

Waktu slot 400ms Solana dibandingkan dengan waktu blok Ethereum sekitar 12 detik berarti dApp Solana mengkueri RPC sekitar 30 kali lebih sering per unit waktu untuk operasi yang setara, membuat kinerja node RPC secara tidak proporsional lebih kritis di sini daripada di sebagian besar jaringan lain. Jika Anda mencapai batas laju di bawah lalu lintas produksi, meningkatkan ke penyedia RPC privat adalah perbaikan yang paling langsung.


Membandingkan Penyedia RPC Solana Node

Untuk sebagian besar dApps produksi, pertanyaannya bukanlah apakah akan menggunakan penyedia RPC terkelola tetapi mana yang sesuai dengan beban kerja Anda. Tabel ini mencakup empat opsi utama dengan endpoint publik gratis Solana Foundation sebagai basis.

PenyediaNative SolanaTingkat GratisTingkat Berbayar (sekitar)Dedicated NodeWebSocketWilayahPembeda Utama
HeliusYaYa~$49-$499/blnYaWebSocketAS, UEAPI yang Ditingkatkan: webhook, parsing transaksi, API NFT
QuickNodeTidak (multi-rantai)Ya (uji coba)~$49-$399/blnYaWebSocketAS, UE, Asia +Pasar add-on; cakupan multi-rantai luas
AlchemyTidak (multi-rantai)Ya~$49-$399/blnYaWebSocketAS, UEPerangkat developer enterprise; webhook Notify
Triton OneYaTidakKustom/enterpriseYaWebSocketAS, UE, AsiaPerforma tingkat institusional; hubungi untuk harga
Yayasan Solana (publik)YaGratis (dibatasi tarif)T/ATidakWebSocket (dibatasi tarif)ASHanya untuk pengembangan dan pengujian

Informasi harga dalam tabel ini akurat pada saat publikasi. Paket, harga, dan fitur penyedia sering berubah. Verifikasi detail terkini langsung di situs web setiap penyedia sebelum membuat pilihan.

Terakhir Diperbarui: Juli 2025

Helius mengiklankan metode RPC yang berfokus pada Solana, webhook, dan fitur penguraian transaksi. Kapabilitas, kuota, harga, wilayah, dan ketentuan layanan harus diperiksa langsung di helius.dev dan diuji dengan beban kerja yang dimaksud.

QuickNode mengiklankan infrastruktur RPC multi-rantai, endpoint regional, dan add-on opsional. Verifikasi cakupan Solana terkini, kuota, harga, dan ketentuan layanan di quicknode.com, lalu benchmark metode dan wilayah yang diperlukan.

Alchemy mengiklankan infrastruktur developer multi-rantai yang mencakup dukungan Solana. Konfirmasikan cakupan metode terkini, perilaku WebSocket, batas, wilayah, dan harga di alchemy.com sebelum menganggapnya setara dengan penyedia lain.

Triton One mengiklankan infrastruktur Solana untuk beban kerja throughput yang lebih tinggi. Latensinya, ketersediaan, cakupan geografis, batas, dan ketentuan komersial memerlukan verifikasi langsung di triton.one dan pengujian spesifik beban kerja.

GenesysGo sebelumnya mengoperasikan layanan RPC Solana dengan merek Shadow. Verifikasi status terkini di genesysgo.com sebelum mengevaluasi.

Semua penyedia utama menawarkan tingkatan gratis atau paket uji coba yang cukup untuk pengembangan dan pengujian. Batas tarif menjadi perhatian produksi hanya ketika aplikasi Anda melayani pengguna nyata dalam skala besar.

Cara Mengevaluasi Penyedia RPC Solana

Penyedia yang tepat tergantung pada beban kerja Anda:

Situasi AndaTitik Awal Evaluasi
Developer solo atau tim kecil, anggaran terbatasTingkat gratis Helius atau uji coba gratis QuickNode; tingkatkan saat Anda mencapai batas tarif
dApp produksi hanya di SolanaHelius (native Solana, API yang ditingkatkan) atau Triton One (jika latensi p99 adalah perhatian utama)
Tim multi-rantai (Solana ditambah Ethereum atau lainnya)QuickNode atau Alchemy (keduanya mendukung banyak rantai di bawah satu akun)
Enterprise dengan persyaratan SLA yang ketatQuickNode (tingkat enterprise) atau Alchemy (reputasi enterprise)
Protokol DeFi frekuensi tinggi atau operasi MEVTriton One (fokus institusional) atau node RPC yang di-host sendiri
Kontrol maksimum, tanpa batas tarif, tim DevOps besarNode RPC yang di-host sendiri (lihat persyaratan perangkat keras dan gambaran umum pengaturan)

Klaim latensi penyedia tidak dapat dipertukarkan. p50 adalah waktu respons median, sementara p99 menangkap 1% permintaan terlambat dan dapat penting untuk operasi yang sensitif terhadap waktu. Hasil aktual bergantung pada campuran metode, beban, kedekatan geografis, caching, dan batas paket, jadi benchmark pola permintaan yang dimaksud sebelum memilih paket berbayar.


Menghubungkan Aplikasi Anda ke RPC Solana Node Menggunakan @solana/web3.js

Beralih dari endpoint publik Yayasan Solana ke penyedia pribadi memerlukan perubahan satu baris dalam aplikasi Anda: string URL yang diteruskan ke konstruktor Connection.

Catatan Versi: Contoh kode di bagian ini menggunakan @solana/web3.js v1.x, standar produksi saat ini. Solana Labs sedang mengembangkan v2.0 dengan API yang sangat berbeda. Jika Anda menggunakan v2.0, rujuk ke dokumentasi resmi v2.0 untuk metode yang setara.

Instal dan Hubungkan

Langkah 1: Instal paket

npm install @solana/web3.js

Langkah 2: Buat instance Connection dan kueri saldo

import { Connection, PublicKey, LAMPORTS_PER_SOL } from "@solana/web3.js";

// Ambil endpoint dari variabel lingkungan — jangan pernah menanamkan URL pribadi secara permanen
const RPC_ENDPOINT = process.env.RPC_URL ?? "https://api.devnet.solana.com";

const connection = new Connection(RPC_ENDPOINT, "confirmed");

async function getWalletBalance(address: string): Promise<void> {
  const publicKey = new PublicKey(address);

// getBalance mengembalikan lamports; bagi dengan LAMPORTS_PER_SOL (10^9) untuk mendapatkan SOL
  const balanceLamports = await connection.getBalance(publicKey);
  const balanceSOL = balanceLamports / LAMPORTS_PER_SOL; // Saldo dalam SOL

  console.log(`Saldo: ${balanceSOL} SOL`);
}

Langkah 3: Baca data akun

async function getAccountData(address: string): Promise<void> {
  const publicKey = new PublicKey(address);

// getAccountInfo mengembalikan null jika akun tidak ada
  const accountInfo = await connection.getAccountInfo(publicKey);

  if (!accountInfo) {
    console.log("Akun tidak ditemukan");
    return;
  }

  console.log("Program pemilik:", accountInfo.owner.toBase58());
  console.log("Panjang data (byte):", accountInfo.data.length);
  console.log("Lamports:", accountInfo.lamports);
}

Langkah 4: Kirim transaksi

import {
  Transaction,
  SystemProgram,
  Keypair,
  sendAndConfirmTransaction,
} from "@solana/web3.js";

async function transferSOL(
  sender: Keypair,
  recipientAddress: string,
  amountSOL: number
): Promise<string> {
  const recipient = new PublicKey(recipientAddress);
  const lamports = amountSOL * LAMPORTS_PER_SOL;

  const transaction = new Transaction().add(
    SystemProgram.transfer({
      fromPubkey: sender.publicKey,
      toPubkey: recipient,
      lamports,
    })
  );

  // sendAndConfirmTransaction menunggu "confirmed" commitment sebelum merespons
  const signature = await sendAndConfirmTransaction(connection, transaction, [sender]);
  return signature;
}

Langkah 5: Konfigurasi perpindahan endpoint berdasarkan lingkungan

Siapkan modul konfigurasi untuk menukar klaster melalui variabel lingkungan alih-alih mengubah kode aplikasi:

// config/rpc.ts
const RPC_ENDPOINTS: Record<string, string> = {
  "mainnet-beta": "https://api.mainnet-beta.solana.com",
  "devnet":       "https://api.devnet.solana.com",
  "private":      process.env.PRIVATE_RPC_URL ?? "",
};

const NETWORK = process.env.SOLANA_NETWORK ?? "devnet";
export const connection = new Connection(RPC_ENDPOINTS[NETWORK], "confirmed");

Catatan keamanan: Jangan pernah menanamkan URL endpoint RPC pribadi Anda secara permanen di JavaScript sisi klien. URL yang terekspos di browser akan membocorkan Kunci API Anda kepada siapa pun yang memeriksa lalu lintas jaringan. Lewatkan melalui proxy sisi server atau rute API backend.

Untuk referensi API @solana/web3.js lengkap, lihat solana-labs.github.io/solana-web3.js.

Koneksi RPC HTTP vs. WebSocket: Kapan Menggunakan Masing-masing

SkenarioGunakan HTTPGunakan WebSocket
Ambil saldo dompet sekaliYaTidak
Kirim transaksiYaTidak
Pantau akun untuk perubahan real-timeTidakYa
Alirkan log transaksi untuk programTidakYa
Lacak konfirmasi tanda tangan tertentuTidakYa

Koneksi WebSocket menggunakan wss:// alih-alih https://. Sebagian besar penyedia terkelola menyediakan kedua endpoint di bawah paket yang sama.

// Langganan WebSocket: pantau perubahan akun secara real-time
const publicKey = new PublicKey("YourAccountPublicKeyHere");

const connectionWithWS = new Connection(
  process.env.RPC_URL ?? "https://api.devnet.solana.com",
  {
    commitment: "confirmed",
    wsEndpoint: process.env.WSS_URL ?? "wss://api.devnet.solana.com",
  }
);

// onAccountChange mengembalikan ID langganan yang digunakan untuk pembersihan nanti
const subscriptionId = connectionWithWS.onAccountChange(
  publicKey,
  (accountInfo, context) => {
    console.log("Akun berubah pada slot:", context.slot);
    console.log("Saldo lamport baru:", accountInfo.lamports);
  },
  "confirmed"
);

// Hapus langganan saat tidak lagi diperlukan:
// connectionWithWS.removeAccountChangeListener(subscriptionId);

Menangani Batasan Tingkat dan Kesalahan 429

Kesalahan 429 Terlalu Banyak Permintaan dari endpoint publik Solana berarti aplikasi Anda telah melebihi batas tingkat per-IP. Tiga strategi mengatasi ini:

  1. Beralih ke penyedia privat terkelola. Helius, QuickNode, Alchemy, dan Triton One menawarkan paket yang disesuaikan untuk lalu lintas produksi. Lihat perbandingan penyedia RPC Solana privat.
  2. Implementasikan exponential backoff. Pada respons 429, coba lagi dengan penundaan yang berlipat ganda setiap upaya (lihat kode di bawah).
  3. Kelompokkan pembacaan akun dengan getMultipleAccounts. Mengambil 20 akun dalam satu panggilan menggunakan satu permintaan, bukan 20.
// Pembungkus exponential backoff untuk panggilan RPC apa pun
async function withRetry<T>(
  fn: () => Promise<T>,
  maxRetries: number = 5
): Promise<T> {
  let attempt = 0;
  while (attempt < maxRetries) {
    try {
      return await fn();
    } catch (error: any) {
      const is429 = error?.message?.includes("429");
      if (is429 && attempt < maxRetries - 1) {
        // Tunggu 500ms, lalu 1s, lalu 2s, lalu 4s, lalu 8s
        const waitMs = 500 * Math.pow(2, attempt);
        await new Promise((resolve) => setTimeout(resolve, waitMs));
        attempt++;
      } else {
        throw error;
      }
    }
  }
  throw new Error("Maksimal percobaan ulang terlampaui");
}

Metode RPC Solana: Apa yang Bisa Anda Kueri

API JSON-RPC Solana mengekspos lebih dari 80 metode. Tabel di bawah mencakup metode yang paling sering digunakan pengembang dApp.

Metode RPC HTTP

KategoriMetodeDeskripsiKasus Penggunaan Umum
Data AkungetAccountInfoMengembalikan semua data yang tersimpan di sebuah akunMembaca status akun yang dimiliki program
Data AkungetBalanceMengembalikan Saldo SOL untuk Kunci Publik (dalam lamports)Tampilan Saldo Dompet
Data AkungetTokenAccountBalanceMengembalikan Saldo token SPL untuk akun tokenSaldo dompet token
Data AkungetMultipleAccountsMengembalikan data untuk beberapa akun dalam satu panggilanPembacaan batch (mengurangi paparan batas tingkat)
TransaksisendTransactionMengirimkan transaksi yang ditandatangani ke jaringanOperasi tulis apa pun
TransaksisimulateTransactionMensimulasikan transaksi tanpa menyiarkannyaValidasi pra-penerbangan
TransaksigetTransactionMengembalikan detail transaksi yang dikonfirmasi berdasarkan tanda tanganPencarian riwayat transaksi
Blok / SlotgetSlotMengembalikan ketinggian slot saat iniPemantauan progres rantai
Blok / SlotgetLatestBlockhashMengembalikan blockhash terbaru dan slot valid terakhirDiperlukan sebelum mengirim transaksi apa pun
Blok / SlotgetBlockMengembalikan semua transaksi dalam slot tertentuAnalitik On-Chain dan pengindeksan

getRecentBlockhash sudah usang. Gunakan getLatestBlockhash sebagai gantinya. Penggantinya juga mengembalikan lastValidBlockHeight, yang memungkinkan penanganan Kedaluwarsa transaksi yang andal.

MetodeApa yang DilakukanKasus Penggunaan Umum
accountSubscribeMendorong pembaruan saat akun tertentu berubahPemantauan Saldo real-time
logsSubscribeMengalirkan log transaksi yang cocok dengan filterPemantauan acara DeFi, deteksi Mint NFT
signatureSubscribeMemberi tahu saat tanda tangan transaksi dikonfirmasiPelacakan konfirmasi transaksi

Langganan WebSocket cocok untuk dApp apa pun yang perlu bereaksi terhadap peristiwa On-Chain tanpa polling. accountSubscribe dipicu saat data akun tertentu berubah, berguna untuk melacak Saldo pengguna wallet atau akun status program Solana (setara dengan kontrak pintar di Ethereum). logsSubscribe mengalirkan log transaksi yang cocok dengan filter ID program, digunakan oleh protokol DeFi seperti Jupiter dan Raydium untuk mendeteksi peristiwa swap saat terjadi.

Anchor, kerangka kerja pengembangan program Solana yang paling banyak digunakan, menghasilkan klien TypeScript yang memanggil metode ini melalui @solana/web3.js di back-end. Konfigurasi RPC berlaku identik untuk dApp berbasis Anchor.

Untuk referensi metode lengkap termasuk parameter, tipe pengembalian, dan kode kesalahan, lihat Dokumentasi API RPC Solana.


Cara Menjalankan Node RPC Solana Anda Sendiri Node: Persyaratan dan Gambaran Umum Penyiapan

Menghosting node RPC Solana sendiri memberi Anda kendali penuh, tanpa batasan tingkat, dan privasi data maksimal. Investasi perangkat keras mencapai ribuan dolar, dan menjaga node tetap sehat membutuhkan kapasitas DevOps khusus. Protokol besar, bursa, dan tim dengan kemampuan infrastruktur yang ada adalah audiens untuk jalur ini.

KomponenMinimumDirekomendasikan untuk Produksi
CPU12-core, 3.5 GHz atau lebih tinggi24-core, kecepatan clock tinggi
RAM256 GB DDR4 ECC512 GB DDR4 ECC
Penyimpanan2 TB NVMe SSD2x 2 TB NVMe SSD (volume ledger dan akun terpisah)
Jaringan1 Gbps khusus, latensi rendah10 Gbps khusus
Sistem OperasiUbuntu 20.04 LTSUbuntu 22.04 LTS

Persyaratan perangkat keras berkembang seiring pertumbuhan jaringan. Verifikasi spesifikasi saat ini terhadap dokumentasi Solana resmi di docs.solana.com/running-validator) sebelum menyediakan perangkat keras.

Model berbasis akun Solana menyimpan semua status program dalam akun individual. Node RPC penuh harus menyimpan status akun saat ini untuk setiap akun aktif di RAM untuk respons kueri yang cepat, ditambah data ledger historis di NVMe SSD. Pertumbuhan penyimpanan 100 hingga 200 GB per hari di mainnet-beta berarti operator harus merencanakan rotasi ledger yang berkelanjutan.

Tujuh tahap diperlukan. Setiap langkah tertaut ke dokumentasi Solana resmi untuk detail konfigurasi lengkap.

  1. Sediakan perangkat keras yang memenuhi atau melampaui spesifikasi di atas.
  2. Instal sistem operasi dan konfigurasikan parameter kernel Linux: naikkan batas deskriptor file ulimit dan tune pengaturan jaringan sysctl untuk volume lalu lintas UDP Solana yang tinggi.
  3. Instal Solana CLI dan biner validator agave (sebelumnya solana-validator) dari saluran rilis resmi Solana Labs.
  4. Konfigurasikan node untuk mode RPC dengan meneruskan flag --no-voting untuk menonaktifkan partisipasi konsensus, dan atur --rpc-port 8899 (HTTP) dan --rpc-pubsub-port 8900 (WebSocket).
  5. Unduh snapshot dari repositori snapshot Solana Foundation untuk memulai sinkronisasi dari status terbaru daripada memutar ulang dari genesis.
  6. Mulai node dan pantau kemajuan sinkronisasi menggunakan solana catchup untuk melacak seberapa jauh node tertinggal dari ujung kluster.
  7. Konfigurasikan aturan firewall untuk mengekspos port 8899 dan 8900 hanya ke alamat IP yang diotorisasi. Jangan mengekspos port RPC Anda secara publik tanpa otentikasi.

Sinkronisasi snapshot memakan waktu 1 hingga 3 hari pada perangkat keras yang direkomendasikan. Sinkronisasi dari genesis memakan waktu lebih lama dan tidak disarankan.

Bare metal biasanya berharga $500 hingga $1.500 per bulan tergantung pada spesifikasi dan geografi pusat data. Padanan cloud berharga lebih mahal karena overhead virtualisasi pada beban kerja yang intensif penyimpanan. Pertumbuhan penyimpanan 100 hingga 200 GB per hari memaksa pilihan antara pra-alokasi volume besar atau mengotomatiskan pemangkasan ledger.

Untuk tim yang mengevaluasi keputusan build-vs-buy, bandingkan biaya penyedia terkelola di bagian perbandingan penyedia sebelum berkomitmen untuk pengadaan perangkat keras.


Kesalahan RPC Solana Umum dan Cara Memperbaikinya

429 Terlalu Banyak Permintaan

Aplikasi Anda telah melampaui batas frekuensi (rate limit) per-IP pada endpoint publik Solana. Untuk memperbaikinya:

  1. Beralih ke penyedia privat terkelola. Helius, QuickNode, Alchemy, dan Triton One menawarkan paket yang disesuaikan untuk trafik produksi. Lihat perbandingan penyedia RPC Solana privat.
  2. Terapkan exponential backoff. Pada respons 429, coba lagi dengan penundaan yang berlipat ganda di setiap percobaan. Contoh kode ada di bagian penanganan batas frekuensi.
  3. Batch pembacaan akun dengan getMultipleAccounts. Mengambil 20 akun dalam satu panggilan hanya menghabiskan satu permintaan, bukan 20.

Transaction Confirmation Timeouts

Transaksi yang dikirim melalui sendTransaction tidak masuk ke jaringan. Blockhash mungkin telah kedaluwarsa, atau jaringan mungkin sedang padat. Untuk memperbaikinya:

  1. Panggil getLatestBlockhash segera sebelum membangun transaksi. Jangan gunakan getRecentBlockhash (sudah tidak digunakan/deprecated).
  2. Periksa lastValidBlockHeight dari respons dan coba lagi sebelum ketinggian tersebut tercapai.
  3. Gunakan sendAndConfirmTransaction daripada sendTransaction mentah untuk pengulangan otomatis pada kegagalan sementara.

getProgramAccounts adalah salah satu panggilan RPC yang paling intensif sumber daya. Endpoint publik sering kali membatasi atau menolaknya sepenuhnya karena beban yang diberikannya pada infrastruktur bersama. Jika Anda melihat kesalahan 403 atau timeout khusus pada panggilan ini, tingkatkan ke penyedia RPC privat dengan dukungan eksplisit untuk kueri akun program yang besar.


Pertanyaan yang Sering Diajukan: Solana RPC Nodes

Apa itu node RPC Solana?

Node RPC Solana adalah server yang mengimplementasikan API JSON-RPC Solana, menerima permintaan dari aplikasi klien dan mengembalikan data status Blockchain. dApps, dompet, dan penjelajah blok menggunakannya untuk membaca saldo akun, mengambil riwayat transaksi, dan mengirimkan transaksi yang ditandatangani ke jaringan tanpa menjalankan salinan lokal dari buku besar (ledger).

Apa perbedaan antara node RPC Solana dan node validator?

Keduanya memiliki peran yang berbeda. Node RPC melayani data ke klien eksternal melalui API JSON-RPC, tidak berpartisipasi dalam konsensus, dan tidak menghasilkan imbalan Staking. Node validator memberikan suara pada validitas blok di setiap slot, memerlukan SOL yang di-stake, dan menghasilkan imbalan SOL untuk suara yang benar. Beberapa operator menjalankan keduanya pada perangkat keras yang sama, tetapi perannya tetap terpisah secara logis.

Ya. Endpoint publik Solana Foundation di api.mainnet-beta.solana.com, api.devnet.solana.com, dan api.testnet.solana.com gratis untuk digunakan. Mereka menerapkan batas frekuensi sekitar 100 permintaan per jendela 10 detik per alamat IP. Endpoint ini cukup untuk pengembangan dan pengujian tetapi tidak cocok untuk dApps produksi yang melayani pengguna nyata.

Tiga pendekatan bekerja bersama-sama: beralih ke penyedia RPC privat terkelola untuk trafik produksi; terapkan exponential backoff untuk mencoba kembali permintaan yang gagal dengan interval tunggu yang meningkat; dan lakukan batch pembacaan beberapa akun ke dalam satu panggilan getMultipleAccounts daripada mengeluarkan satu getAccountInfo per akun.

Minimal: CPU 12-core, RAM DDR4 256 GB, SSD NVMe 2 TB, dan koneksi jaringan khusus 1 Gbps. Direkomendasikan untuk produksi: CPU 24-core, RAM 512 GB, 2x SSD NVMe 2 TB, dan jaringan 10 Gbps. Verifikasi spesifikasi saat ini terhadap dokumentasi validator Solana, karena persyaratan meningkat seiring pertumbuhan jaringan.

Rencanakan waktu 1 hingga 3 hari menggunakan snapshot terbaru pada perangkat keras yang direkomendasikan. Sinkronisasi dari genesis memakan waktu jauh lebih lama. Solana Foundation menyediakan snapshot resmi untuk mempercepat prosesnya.

RPC HTTP menggunakan model permintaan-respons stateless. Aplikasi Anda mengirimkan satu permintaan dan menerima satu respons, yang berfungsi untuk kueri satu kali seperti getBalance atau sendTransaction. RPC WebSocket menggunakan koneksi persisten dengan model langganan. Aplikasi Anda berlangganan event On-Chain dan menerima notifikasi push ketika event tersebut terjadi. Gunakan WebSocket untuk fitur real-time apa pun di dApp Anda.

Helius dan QuickNode adalah dua Opsi yang sering didiskusikan, tetapi visibilitas komunitas bukanlah bukti kesesuaian atau kinerja. Helius cocok untuk tim yang membangun secara eksklusif di Solana yang membutuhkan API yang ditingkatkan secara asli Solana. QuickNode cocok untuk tim yang mendukung beberapa Blockchain di bawah satu akun. Triton One adalah Opsi untuk beban kerja institusional di mana latensi p99 adalah batasan utama. Pilihan yang tepat bergantung pada beban kerja Anda dan apakah fitur khusus Solana atau dukungan multi-chain lebih penting.


Panduan Solana Terkait

Jelajahi SOL di Bybit

Pembaca dapat meninjau informasi pasar SOL saat ini atau pasar Spot SOL/USDT. Tautan ini menyediakan informasi pasar dan akses; tautan tersebut tidak memvalidasi klaim teknis atau menyiratkan bahwa SOL cocok untuk setiap pembaca.

Tiga jalur tersedia, dan sebagian besar tim akan segera mengenali mana yang sesuai dengan tahap mereka saat ini.

SituasiJalur
Membangun atau menguji secara lokalGunakan endpoint publik gratis Solana Foundation di devnet atau testnet
dApp produksi yang melayani penggunaGunakan penyedia privat terkelola: Helius, QuickNode, Alchemy, atau Triton One berdasarkan beban kerja Anda
Protokol besar, bursa, atau tim dengan kapasitas DevOpsEvaluasi hosting mandiri: kontrol penuh, tidak ada batas frekuensi, biaya perangkat keras dan operasional yang signifikan

Keandalan RPC memengaruhi pembacaan aplikasi dan pengiriman transaksi, tetapi durasi slot target bukanlah jaminan konfirmasi dan latensi RPC hanyalah satu faktor dalam keberhasilan transaksi. Pilih tingkatan yang sesuai dengan skala Anda saat ini, dan rencanakan untuk meningkatkan sebelum batas frekuensi menjadi masalah yang dihadapi pengguna.

Langkah berikutnya:

  • Daftar untuk tingkat pengembangan gratis: helius.dev atau quicknode.com
  • Tinjau referensi metode JSON-RPC Solana lengkap: docs.solana.com/api
  • Tinjau spesifikasi perangkat keras sebelum melakukan pengadaan untuk hosting mandiri: Cara Menjalankan RPC Solana Anda Sendiri Node