← Semua pembelajaran / Blockchain Nol → RWA
Fase 3 · Integrasi Backend Java & PHP

RPC & node provider — Infura, Alchemy, QuickNode

Ini titik di mana Fase 1 dan 2 (yang sepenuhnya di dalam Remix/browser) berpindah ke dunia backend sungguhan. Java atau PHP-mu tidak pernah 'terhubung ke blockchain' secara ajaib — ia mengirim HTTP request JSON-RPC biasa ke satu node tertentu.

Sumber asli ethereum.org Resmi Rangkuman ~6 menit baca

Intisari

  • JSON-RPC adalah protokol komunikasi standar ke node Ethereum — payload JSON biasa lewat HTTP POST, persis seperti REST API yang sudah kamu kenal.
  • Kamu punya dua pilihan: jalankan node sendiri (kontrol penuh, biaya operasional dan storage besar) atau pakai node provider terkelola (Infura, Alchemy, QuickNode) — bayar per request, tanpa mengurus infrastruktur.
  • Untuk mayoritas aplikasi backend, node provider terkelola adalah pilihan default — sama seperti kamu tidak menjalankan cluster Elasticsearch sendiri kalau layanan terkelola sudah cukup.
  • API key node provider harus diperlakukan seperti kredensial database — tidak pernah di frontend, selalu lewat backend.
  • Selalu ada endpoint terpisah untuk mainnet (uang sungguhan) dan testnet (mis. Sepolia, uang percobaan gratis) — tertukar endpoint adalah kesalahan konfigurasi paling umum dan paling mahal.

Bentuk mentah satu panggilan JSON-RPC

curl -X POST https://eth-sepolia.g.alchemy.com/v2/API_KEY_KAMU \
  -H "Content-Type: application/json" \
  -d '{
    "jsonrpc": "2.0",
    "method": "eth_getBalance",
    "params": ["0x1f9840a85d5aF5bf1D1762F925BDADdC4201F984", "latest"],
    "id": 1
  }'
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": "0x1bc16d674ec80000"
}

Tidak ada keajaiban di sini — ini HTTP POST biasa, body JSON biasa, respons JSON biasa. Semua pustaka integrasi (web3j, web3.php, ethers.js) pada akhirnya cuma membungkus panggilan seperti ini dengan API yang lebih nyaman dipakai dari bahasa masing-masing.

Jalankan node sendiri vs pakai provider terkelola

Node sendiriProvider terkelola
SetupSinkronisasi penuh blockchain — bisa >1 TB storage, berhari-hariDaftar, dapat API key, langsung pakai
BiayaServer + storage + bandwidth berkelanjutanPer request / langganan bulanan
Uptime jadi tanggung jawabTimmu sendiriProvider (dengan SLA)
Kontrol penuh data & privasi queryYaTidak — provider bisa melihat pola query-mu
Cocok untukSkala sangat besar, kebutuhan compliance ketatMayoritas aplikasi — titik mulai yang wajar

Method JSON-RPC yang paling sering dipakai backend

MethodUntuk apa
eth_callMemanggil fungsi view/pure — baca data, gratis, instan (Fase 3 lanjutan)
eth_sendRawTransactionMengirim transaksi yang sudah ditandatangani — state-changing, berbayar gas
eth_getTransactionReceiptMemeriksa status transaksi (sukses/gagal) dan event log-nya setelah masuk block
eth_getLogsMengambil event log dalam rentang block tertentu — dasar dari indexing (materi terakhir fase ini)
eth_blockNumberBlock terbaru yang diketahui node — dipakai untuk cek kesehatan koneksi
eth_estimateGasSimulasi eksekusi untuk memperkirakan gas sebelum kirim transaksi sungguhan

API key bukan rahasia yang "agak" penting — perlakukan seperti password database. Kalau API key provider bocor ke frontend (dipanggil langsung dari JavaScript browser, misalnya), siapa pun bisa memakainya sampai kuota habis atau tagihanmu membengkak. Pola yang benar: frontend memanggil backend milikmu, backend yang menyimpan API key dan meneruskan panggilan ke node provider — persis pola proxy yang sudah kamu kenal untuk API key pihak ketiga lain.

Mainnet vs testnet: dua dunia, dua endpoint

MainnetTestnet (mis. Sepolia)
Native coinETH sungguhan, bernilai uangETH percobaan, gratis dari faucet
Konsekuensi bugKehilangan aset sungguhanTidak ada — reset kapan saja
Endpoint providereth-mainnet...eth-sepolia...
Kapan dipakaiProduksi, setelah audit (Fase 4)Seluruh development dan testing

Latihan: daftar akun gratis di satu node provider (Alchemy atau Infura), buat endpoint Sepolia, lalu jalankan perintah curl di atas dengan address wallet testnet-mu sendiri. Bandingkan hasil eth_getBalance-nya dengan saldo yang ditampilkan MetaMask untuk akun yang sama — keduanya harus identik, karena MetaMask pun sebenarnya melakukan panggilan JSON-RPC yang sama persis di baliknya.

Rangkuman ini sengaja dipangkas ke bagian yang dipakai di roadmap. Buka sumber aslinya saat kamu butuh detail lengkap atau referensi parameter.