Lompat ke konten

Akar status

Akar status adalah komitmen ringkas Ethereum atas status global setelah sebuah blok. Pelajari cara menghitungnya, apa yang dibuktikan bukti akun dan penyimpanan, serta batas jaminannya.

Diperbarui

Hanya untuk tujuan edukasi; bukan merupakan nasihat investasi atau rekomendasi investasi. Investasi dapat mengakibatkan kerugian.

Jawaban langsung

Akar status adalah komitmen kriptografis 32 byte dalam header blok Ethereum atas status global setelah blok diproses. Status global memetakan alamat ke akun. Setiap akun mengikat nonce, saldo, akar penyimpanan, dan hash kode; akar penyimpanan setiap kontrak selanjutnya mengikat slot penyimpanan akun tersebut.

Akar ini adalah ringkasan, bukan snapshot yang dapat diunduh. Node dapat membandingkan hasil yang dihitung secara mandiri, dan pemeriksa dapat memeriksa bukti akun atau penyimpanan terhadap blok tepercaya. Akar saja tidak dapat membangun ulang status, membuktikan ketersediaan data, menetapkan finalitas blok, atau menunjukkan bahwa kontrak aman secara ekonomi.

“Akar status” bersifat khusus protokol. Ethereum saat ini mengikat status lapisan eksekusi dengan trie Merkle-Patricia yang dimodifikasi. Jaringan lain mungkin memakai model status, enkode, fungsi hash, atau struktur data terautentikasi berbeda; istilah yang sama tidak membuat akar atau buktinya dapat dipertukarkan.

Cara kerja

Klien eksekusi memulai dari status blok induk, memvalidasi dan menjalankan blok baru menurut aturan protokol yang aktif, lalu menerapkan perubahan akun dan penyimpanan. Secara skematis:

S_n = Υ(S_(n-1), B_n)

Di sini S_(n-1) adalah status induk, B_n adalah seluruh pemrosesan yang ditetapkan protokol untuk blok baru, dan S_n adalah status hasil. Klien mengenkode status itu secara deterministik dalam trie status dan menghitung hash akarnya. Header blok yang valid harus memuat hasil sama; jika berbeda, blok tidak valid bagi klien tersebut.

Dalam trie status Ethereum, jalur akun diturunkan dari alamat, sedangkan akun terenkode memuat nonce, saldo, akar penyimpanan, dan hash kode. Kode kontrak dirujuk melalui hash-nya dan setiap kontrak memiliki trie penyimpanan terpisah. Karena struktur bertingkat ini, perubahan satu slot dapat mengubah akar penyimpanan kontrak, lalu akun terenkode, dan akhirnya akar status global.

Akar status berbeda dari akar transaksi dan akar tanda terima dalam header yang sama. Akar transaksi mengikat data transaksi berurutan; akar tanda terima mengikat tanda terima eksekusi. Ketiganya tidak saling menggantikan.

EIP-1186 mendefinisikan eth_getProof, yang dapat mengembalikan bukti akun dan bukti penyimpanan yang diminta untuk blok tertentu. Pemeriksa tetap memerlukan hash blok atau akar status terautentikasi, aturan trie dan enkode yang benar, serta kebijakan konfirmasi atau finalitas yang sesuai.

Contoh

Misalkan satu transaksi mengirim ETH dari Alice ke Bob. Eksekusi yang benar dapat mengubah nonce dan saldo Alice, saldo Bob, serta saldo penerima biaya. Jika transaksi memanggil kontrak, slot dan akar penyimpanan kontrak juga dapat berubah. Pembaruan ini menghasilkan akar status global baru meski sebagian besar akun tidak tersentuh.

Dua klien jujur yang berawal dari status induk sama dan memproses blok valid yang sama dengan aturan sama seharusnya menghitung akar yang sama. Jika satu klien mengkreditkan jumlah yang salah atau memakai enkode trie yang salah, akarnya akan berbeda dari header dan ia harus menolak blok, bukan diam-diam menerima status lokalnya.

Untuk memeriksa saldo Bob tanpa mengunduh seluruh status global, pemeriksa dapat memperoleh header blok dan bukti akun. Menghitung ulang jalur bukti menunjukkan apakah akun terenkode konsisten dengan akar status header itu. Hal ini tidak membuktikan header tersebut kanonis atau final; kesimpulan itu berasal dari pemeriksaan rantai dan finalitas.

Risiko

  • Akar tidak tepercaya: Bukti valid terhadap akar pilihan penyerang atau akar lama membuktikan titik acuan yang salah. Ikat akar pada hash blok, ID rantai, dan nomor blok yang telah diverifikasi.
  • Reorganisasi dan finalitas: Bukti dapat benar untuk blok yang kemudian keluar dari rantai kanonis. Sesuaikan kedalaman konfirmasi atau finalitas dengan toleransi kerugian aplikasi.
  • Kesalahan enkode: Hash alamat, RLP, jalur nibble, node tertanam, dan kunci penyimpanan harus tepat mengikuti protokol. Pustaka bukti Merkle biner umum tidak cukup.
  • Data hilang: Akar mengikat status tetapi tidak menyediakan node trie, status historis, atau layanan pembuat bukti. Node yang dipangkas mungkin tidak dapat melayani bukti lama.
  • Jaminan berlebihan: Kesamaan akar mendeteksi eksekusi tidak konsisten; bukan audit kontrak, autentikasi oracle, pengamanan endpoint RPC, jaminan nilai aset, atau pencegahan transaksi dari kunci yang dibobol.

Kesalahpahaman umum

  • Akar status menyimpan semua saldo akun. Ia adalah komitmen berukuran tetap atas trie terenkode; data trie dasarnya harus diperoleh terpisah.
  • Akar sama membuktikan basis data kedua node identik. Keduanya mengikat status global logis yang sama menurut protokol, tetapi klien dapat menyimpan, mengindeks, memangkas, atau menemboloknya secara berbeda.
  • Akar berbeda menunjukkan transaksi yang salah. Ia hanya menunjukkan perbedaan pada status akhir, bukan tempat penyimpangan dimulai; eksekusi harus ditelusuri untuk diagnosis.
  • Bukti akun valid membuktikan finalitas dan keamanan. Ia hanya membuktikan konsistensi dengan satu akar. Pemilihan rantai, finalitas, kebaruan data, perilaku kontrak, dan risiko ekonomi tetap terpisah.

Topik terkait

Sumber

Navigasi

Cari di wiki...