Lompat ke konten utama
Change page

Blok

Pembaruan terakhir halaman: 23 Februari 2026

Blok adalah sekumpulan transaksi dengan sebuah hash dari blok sebelumnya di dalam rantai. Ini menghubungkan blok-blok bersama (dalam sebuah rantai) karena hash diturunkan secara kriptografi dari data blok. Hal ini mencegah penipuan, karena satu perubahan pada blok mana pun dalam sejarah akan membatalkan semua blok berikutnya karena semua hash selanjutnya akan berubah dan semua orang yang menjalankan blockchain akan menyadarinya.

Prasyarat

Blok adalah topik yang sangat ramah pemula. Namun untuk membantu Anda lebih memahami halaman ini, kami sarankan Anda membaca terlebih dahulu Akun, Transaksi, dan pengantar Ethereum kami.

Mengapa blok?

Untuk memastikan bahwa semua peserta di jaringan Ethereum mempertahankan status yang tersinkronisasi dan menyetujui riwayat transaksi yang tepat, kami mengelompokkan transaksi ke dalam blok. Ini berarti puluhan (atau ratusan) transaksi dikomit, disetujui, dan disinkronkan sekaligus.

Sebuah diagram yang menunjukkan transaksi dalam sebuah blok yang menyebabkan perubahan status Diagram diadaptasi dari Ethereum EVM illustrated (opens in a new tab)

Dengan memberi jarak pada komit, kami memberi semua peserta jaringan cukup waktu untuk mencapai konsensus: meskipun permintaan transaksi terjadi puluhan kali per detik, blok hanya dibuat dan dikomit di Ethereum setiap dua belas detik sekali.

Bagaimana blok bekerja

Untuk mempertahankan riwayat transaksi, blok diurutkan secara ketat (setiap blok baru yang dibuat berisi referensi ke blok induknya), dan transaksi di dalam blok juga diurutkan secara ketat. Kecuali dalam kasus yang jarang terjadi, pada waktu tertentu, semua peserta di jaringan sepakat tentang jumlah pasti dan riwayat blok, dan bekerja untuk mengelompokkan permintaan transaksi langsung saat ini ke dalam blok berikutnya.

Setelah sebuah blok disatukan oleh validator yang dipilih secara acak di jaringan, blok tersebut disebarkan ke seluruh jaringan; semua node menambahkan blok ini ke akhir blockchain mereka, dan validator baru dipilih untuk membuat blok berikutnya. Proses perakitan blok dan proses komitmen/konsensus yang tepat saat ini ditentukan oleh protokol "proof-of-stake" Ethereum.

Protokol proof-of-stake

Proof-of-stake berarti sebagai berikut:

  • Node validasi harus melakukan stake 32 ETH ke dalam kontrak deposit sebagai jaminan terhadap perilaku buruk. Ini membantu melindungi jaringan karena aktivitas tidak jujur yang dapat dibuktikan menyebabkan sebagian atau seluruh stake tersebut dihancurkan.
  • Di setiap slot (berjarak dua belas detik) seorang validator dipilih secara acak untuk menjadi pengusul blok. Mereka menggabungkan transaksi bersama-sama, mengeksekusinya, dan menentukan 'status' baru. Mereka membungkus informasi ini ke dalam sebuah blok dan meneruskannya ke validator lain.
  • Validator lain yang mendengar tentang blok baru mengeksekusi ulang transaksi untuk memastikan mereka setuju dengan perubahan yang diusulkan pada status global. Dengan asumsi blok tersebut valid, mereka menambahkannya ke basis data mereka sendiri.
  • Jika seorang validator mendengar tentang dua blok yang bertentangan untuk slot yang sama, mereka menggunakan algoritma pilihan fork mereka untuk memilih salah satu yang didukung oleh ETH yang di-stake paling banyak.

Lebih lanjut tentang proof-of-stake

Apa yang ada di dalam sebuah blok?

Ada banyak informasi yang terkandung di dalam sebuah blok. Pada tingkat tertinggi, sebuah blok berisi bidang-bidang berikut:

BidangDeskripsi
slotslot tempat blok tersebut berada
proposer_indexID dari validator yang mengusulkan blok
parent_roothash dari blok sebelumnya
state_roothash root dari objek status
bodysebuah objek yang berisi beberapa bidang, seperti yang didefinisikan di bawah

body blok berisi beberapa bidangnya sendiri:

BidangDeskripsi
randao_revealsebuah nilai yang digunakan untuk memilih pengusul blok berikutnya
eth1_datainformasi tentang kontrak deposit
graffitidata arbitrer yang digunakan untuk menandai blok
proposer_slashingsdaftar validator yang akan dipotong
attester_slashingsdaftar pengesah yang akan dipotong
attestationsdaftar pengesahan yang dibuat terhadap slot sebelumnya
depositsdaftar deposit baru ke kontrak deposit
voluntary_exitsdaftar validator yang keluar dari jaringan
sync_aggregatesubset validator yang digunakan untuk melayani klien ringan
execution_payloadtransaksi yang diteruskan dari klien eksekusi

Bidang attestations berisi daftar semua pengesahan di dalam blok. Pengesahan memiliki tipe datanya sendiri yang berisi beberapa bagian data. Setiap pengesahan berisi:

BidangDeskripsi
aggregation_bitsdaftar validator mana yang berpartisipasi dalam pengesahan ini
datasebuah wadah dengan beberapa subbidang
signaturetanda tangan agregat dari sekumpulan validator terhadap bagian data

Bidang data dalam attestation berisi hal-hal berikut:

BidangDeskripsi
slotslot yang berkaitan dengan pengesahan
indexindeks untuk validator yang mengesahkan
beacon_block_roothash root dari blok beacon chain yang dilihat sebagai kepala rantai
sourcepos pemeriksaan terakhir yang dibenarkan
targetblok batas epoch terbaru

Mengeksekusi transaksi dalam execution_payload memperbarui status global. Semua klien mengeksekusi ulang transaksi dalam execution_payload untuk memastikan status baru cocok dengan yang ada di bidang state_root blok baru. Ini adalah cara klien dapat mengetahui bahwa blok baru valid dan aman untuk ditambahkan ke blockchain mereka. execution payload itu sendiri adalah sebuah objek dengan beberapa bidang. Ada juga execution_payload_header yang berisi informasi ringkasan penting tentang data eksekusi. Struktur data ini diatur sebagai berikut:

execution_payload_header berisi bidang-bidang berikut:

BidangDeskripsi
parent_hashhash dari blok induk
fee_recipientalamat akun untuk membayar biaya transaksi
state_roothash root untuk status global setelah menerapkan perubahan di blok ini
receipts_roothash dari trie tanda terima transaksi
logs_bloomstruktur data yang berisi log peristiwa
prev_randaonilai yang digunakan dalam pemilihan validator acak
block_numbernomor dari blok saat ini
gas_limitbatas gas maksimum yang diizinkan di blok ini
gas_usedjumlah gas aktual yang digunakan di blok ini
timestampwaktu blok
extra_datadata tambahan arbitrer sebagai byte mentah
base_fee_per_gasnilai biaya dasar
block_hashHash dari blok eksekusi
transactions_roothash root dari transaksi dalam payload
withdrawal_roothash root dari penarikan dalam payload

execution_payload itu sendiri berisi hal-hal berikut (perhatikan bahwa ini identik dengan header kecuali bahwa alih-alih hash root dari transaksi, ini mencakup daftar aktual transaksi dan informasi penarikan):

BidangDeskripsi
parent_hashhash dari blok induk
fee_recipientalamat akun untuk membayar biaya transaksi
state_roothash root untuk status global setelah menerapkan perubahan di blok ini
receipts_roothash dari trie tanda terima transaksi
logs_bloomstruktur data yang berisi log peristiwa
prev_randaonilai yang digunakan dalam pemilihan validator acak
block_numbernomor dari blok saat ini
gas_limitbatas gas maksimum yang diizinkan di blok ini
gas_usedjumlah gas aktual yang digunakan di blok ini
timestampwaktu blok
extra_datadata tambahan arbitrer sebagai byte mentah
base_fee_per_gasnilai biaya dasar
block_hashHash dari blok eksekusi
transactionsdaftar transaksi yang akan dieksekusi
withdrawalsdaftar objek penarikan

Daftar withdrawals berisi objek withdrawal yang terstruktur dengan cara berikut:

BidangDeskripsi
addressalamat akun yang telah melakukan penarikan
amountjumlah penarikan
indexnilai indeks penarikan
validatorIndexnilai indeks validator

Waktu blok

Waktu blok mengacu pada waktu yang memisahkan blok. Di Ethereum, waktu dibagi menjadi unit dua belas detik yang disebut 'slot'. Di setiap slot, satu validator dipilih untuk mengusulkan blok. Dengan asumsi semua validator sedang online dan berfungsi penuh, akan ada sebuah blok di setiap slot, yang berarti waktu blok adalah 12 detik. Namun, terkadang validator mungkin sedang offline saat dipanggil untuk mengusulkan blok, yang berarti slot terkadang bisa kosong.

Implementasi ini berbeda dari sistem berbasis proof-of-work di mana waktu blok bersifat probabilistik dan disesuaikan oleh target kesulitan penambangan protokol. Rata-rata waktu blok (opens in a new tab) Ethereum adalah contoh sempurna dari hal ini di mana transisi dari proof-of-work ke proof-of-stake dapat disimpulkan dengan jelas berdasarkan konsistensi waktu blok 12 detik yang baru.

Ukuran blok

Catatan penting terakhir adalah bahwa blok itu sendiri dibatasi ukurannya. Setiap blok memiliki ukuran target 30 juta gas tetapi ukuran blok akan bertambah atau berkurang sesuai dengan permintaan jaringan, hingga batas blok 60 juta gas (2x ukuran blok target). Batas gas blok dapat disesuaikan ke atas atau ke bawah dengan faktor 1/1024 dari batas gas blok sebelumnya. Akibatnya, validator dapat mengubah batas gas blok melalui konsensus. Jumlah total gas yang dihabiskan oleh semua transaksi di dalam blok harus kurang dari batas gas blok. Ini penting karena memastikan bahwa blok tidak bisa menjadi besar secara sewenang-wenang. Jika blok bisa menjadi besar secara sewenang-wenang, maka full node yang kurang berkinerja secara bertahap akan berhenti mampu mengimbangi jaringan karena persyaratan ruang dan kecepatan. Semakin besar blok, semakin besar daya komputasi yang diperlukan untuk memprosesnya tepat waktu untuk slot berikutnya. Ini adalah kekuatan pemusatan, yang ditolak dengan membatasi ukuran blok.

Bacaan lebih lanjut

Tahu tentang sumber daya komunitas yang membantu Anda? Edit halaman ini dan tambahkan!

Apakah artikel ini membantu?