Lompat ke konten

Node RPC

Node RPC memberi dompet dan aplikasi antarmuka permintaan-respons untuk membaca data blockchain dan menyiarkan transaksi. Pelajari apa yang dapat dan tidak dapat diatasi dengan mengganti endpoint serta cara mengurangi risiko ketersediaan, privasi, dan keamanan.

Diperbarui

Hanya untuk tujuan edukasi; bukan nasihat investasi. Endpoint RPC yang salah atau berbahaya dapat mengungkap aktivitas, mengembalikan data menyesatkan, atau mengganggu pengiriman transaksi, dan transaksi aset digital dapat menimbulkan kerugian yang tidak dapat dipulihkan.

Jawaban langsung

Node RPC adalah node blockchain, atau layanan di depan satu maupun beberapa node, yang menerima permintaan remote procedure call dari dompet, penjelajah blok, dan aplikasi. Pada jaringan yang kompatibel dengan Ethereum, antarmuka yang umum adalah JSON-RPC. Perangkat lunak dapat membaca data node, menyimulasikan panggilan, memperkirakan gas, dan mengirim byte transaksi yang telah ditandatangani untuk disiarkan tanpa mengoperasikan node sendiri.

URL yang dikonfigurasi dalam dompet adalah endpoint RPC, bukan blockchain itu sendiri. Mengganti endpoint dapat melewati gangguan penyedia, node yang tertinggal, pembatasan laju, metode yang tidak didukung, atau masalah koneksi. Tindakan itu tidak dapat mengubah aturan kontrak, memulihkan transaksi yang dikembalikan, membatalkan transfer yang telah dikonfirmasi, atau memperbaiki penghentian seluruh jaringan. Endpoint baru harus melayani jaringan dan ID chain yang dimaksud.

Cara kerja

Klien mengirim permintaan melalui transport yang didukung, seperti HTTP atau WebSocket. Permintaan JSON-RPC menyebutkan metode, memberikan parameter, dan menyertakan pengenal yang diulang dalam respons. Node menjalankan metode berdasarkan tampilan lokalnya atas chain lalu mengembalikan hasil atau galat. Koneksi WebSocket juga dapat mendukung langganan jika klien dan endpoint menyediakannya.

Metode baca memiliki arti dan kebutuhan data yang berbeda. Misalnya, eth_blockNumber melaporkan blok terbaru yang diketahui node, sedangkan eth_getBalance membaca saldo alamat pada tag atau nomor blok tertentu. Hasil antar-node yang sehat dapat berbeda sementara karena kepala chain, pool transaksi tertunda, mode pemangkasan, atau ekstensi yang didukung berbeda. Penyedia terkelola juga dapat menerapkan autentikasi, kuota, batas ukuran permintaan, atau pembatasan metode yang bukan aturan konsensus blockchain.

Dalam transaksi dompet biasa, dompet menyusun dan menandatangani transaksi secara lokal, lalu mengirim byte yang telah ditandatangani dengan eth_sendRawTransaction. Node RPC memeriksa permintaan dan mencoba menyebarkan transaksi ke peer. Hash transaksi yang dikembalikan berarti node menerima byte untuk dikirim; hal itu tidak membuktikan transaksi akan dimasukkan, berhasil, atau mencapai finalitas. Penyertaan dan status harus diperiksa secara independen pada chain yang benar.

Karena itu, endpoint merupakan ketergantungan kepercayaan dan ketersediaan. Endpoint dapat mengamati alamat yang diminta, informasi IP, waktu, dan transaksi yang dikirim; dapat menghilangkan atau menunda data; serta dapat menyajikan tampilan yang lama atau tidak lengkap. Tanda tangan kriptografis mencegah endpoint diam-diam mengubah transaksi yang ditandatangani dengan benar, tetapi tidak menjamin kebenaran respons baca atau melindungi metadata yang tidak ditandatangani dan privasi.

Contoh

Dompet dapat meminta nomor blok kepada klien eksekusi Ethereum dengan permintaan ini:

{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}

Respons yang valid dapat terlihat seperti ini:

{"jsonrpc":"2.0","id":1,"result":"0x12ab34"}

Hasil heksadesimal adalah nomor blok terbaru yang diketahui endpoint tersebut. Jika penyedia biasa mengalami timeout tetapi endpoint tepercaya kedua mengembalikan blok lebih baru dan ID chain yang diharapkan, penggantian dapat memulihkan pembacaan saldo dan pengiriman transaksi. Jika keduanya menampilkan tanda terima transaksi yang sama-sama dikembalikan, mengganti RPC tidak mengubah hasil on-chain itu.

Risiko dan pengendalian

  • Jaringan yang salah: endpoint yang disalin dapat melayani chain atau fork lain. Sebelum menandatangani, verifikasi ID chain, nama jaringan, aset native, dan blok terbaru melalui sumber independen.
  • Pembacaan palsu atau usang: endpoint yang rusak atau berbahaya dapat mengembalikan saldo lama, menghilangkan log, atau melaporkan simulasi secara keliru. Bandingkan pembacaan penting melalui penyedia lain atau node sendiri dan tetapkan blok eksplisit jika reproduksibilitas penting.
  • Kebocoran privasi: kueri alamat dan transaksi dapat menghubungkan aktivitas dompet dengan metadata jaringan. Hindari mengirim alamat yang tidak perlu, tinjau kebijakan retensi, dan pertimbangkan endpoint swakelola tepercaya jika manfaat privasi sepadan dengan biaya operasional.
  • Sensor atau keterlambatan transaksi: endpoint dapat menolak atau menunda penyiaran. Simpan hash transaksi yang ditandatangani, periksa penjelajah atau node independen, dan gunakan jalur tepercaya kedua jika transaksi tidak ada. Jangan menandatangani pengganti sebelum memeriksa nonce dan dampak biayanya.
  • Kredensial terekspos: kunci API dalam kode publik dapat dicuri dan menghabiskan kuota. Batasi kunci berdasarkan origin atau layanan jika didukung, jauhkan kredensial istimewa dari klien, dan rotasi kunci yang bocor.
  • Paparan node berbahaya: menerbitkan antarmuka RPC administratif atau terlalu luas memperbesar permukaan serangan. Ikat RPC swakelola ke antarmuka lokal secara default, buka hanya namespace yang diperlukan, tambahkan autentikasi dan kontrol jaringan, serta jangan pernah mengekspos akun yang tidak terkunci.
  • Penipuan dompet: URL endpoint tidak memerlukan seed phrase atau kunci privat. Tolak layanan yang memintanya, periksa bidang transaksi dalam dompet, dan jangan pernah mengidentifikasi kontrak tujuan hanya berdasarkan respons RPC.

Kesalahpahaman umum

  • “RPC adalah blockchain.” RPC adalah antarmuka menuju tampilan blockchain yang dimiliki node.
  • “Hash transaksi berarti konfirmasi.” Biasanya hash hanya membuktikan endpoint menerima byte yang ditandatangani; eksekusi dan finalitas adalah tahap terpisah.
  • “Mengganti RPC mengubah biaya atau perilaku kontrak.” Perkiraan atau kualitas akses dapat berubah, tetapi eksekusi sebenarnya ditentukan oleh transaksi dan aturan protokol.
  • “Semua endpoint mengembalikan data identik.” Status sinkronisasi, pool tertunda, riwayat yang disimpan, ekstensi klien, dan kebijakan penyedia dapat berbeda.
  • “HTTPS membuat setiap respons tepercaya.” HTTPS melindungi koneksi ke server yang disebutkan, tetapi tidak membuktikan data blockchain server itu lengkap atau benar.

Topik terkait

Sumber

Navigasi

Cari di wiki...