Isi sebuah blok: header, tinggi, ukuran, dan subsidi
Blok adalah header kecil yang tetap ditambah isi berupa transaksi. Pelajari enam kolom header, apa yang di-hash mining, dan arti tinggi serta ukuran blok.
Blok terdiri dari apa?
Blok punya dua bagian, yaitu header dan isi. Mining hanya meng-hash header.
- Isi memuat transaksi. Ukurannya bisa beberapa ratus byte atau beberapa megabyte, tergantung seberapa sibuk chain-nya.
- Header adalah ringkasan blok yang ukurannya tetap. Di kebanyakan chain, ukurannya tepat 80 byte.
- Mining meng-hash header dan tidak ada yang lain.
Poin terakhir itu adalah fakta paling berguna di artikel ini. Miner mencoba miliaran variasi per detik. Itu mustahil kalau setiap percobaan berarti meng-hash ulang blok yang penuh transaksi. Miner hanya meng-hash ulang 80 byte.
Apa saja enam kolom di header?
Header berisi enam kolom. Masing-masing ada alasannya, dan dua di antaranya melakukan sebagian besar pekerjaan.
- Versi.
- Hash blok sebelumnya.
- Merkle root, satu hash yang merangkum semua transaksi.
- Timestamp.
- Bit difficulty.
- Nonce, penghitung yang boleh diubah miner.
Hash blok sebelumnya membuatnya menjadi chain. Setiap header menyebut blok sebelumnya. Menulis ulang blok lama akan mengubah hash-nya. Itu merusak header berikutnya, lalu berikutnya lagi, sampai ke ujung chain. Satu kolom ini adalah seluruh dasar keamanan proof of work.
Merkle root merangkum semua transaksi di isi blok. Ubah satu transaksi sebanyak satu byte saja, dan merkle root berubah. Lalu header ikut berubah, dan semua hash yang sudah dicoba jadi tidak berguna. Inilah cara 80 byte bisa jujur mewakili blok sebesar apa pun.
Bit difficulty adalah target yang harus dilampaui hash dari bawah, dalam bentuk ringkas. Timestamp kira-kira menunjukkan kapan blok dibuat, dan boleh tidak persis. Nonce adalah kolom yang bebas diubah miner. Kebebasan itulah yang membuat pencarian bisa dilakukan.
Apa yang terjadi saat nonce habis?
Nonce adalah penghitung kecil. Miner modern menghabiskan semua nilainya hampir seketika. Itu bukan jalan buntu. Nonce hanya hal yang paling mudah diubah, bukan satu-satunya.
Saat nonce habis, miner mengubah hal lain yang masuk ke header.
- Timestamp bisa bergeser.
- Transaksi coinbase (transaksi pertama di blok, dijelaskan di bawah) bisa diubah sedikit. Itu mengubah merkle root, sehingga ada header yang benar-benar baru untuk dicari.
Di pool, inilah gunanya extra nonce. Pool memberi setiap miner titik awal yang berbeda. Jadi tidak ada dua miner yang mengerjakan angka yang sama.
Apa itu tinggi blok?
Tinggi blok adalah jumlah blok yang ada sebelum sebuah blok. Blok genesis, blok paling pertama, punya tinggi nol. Berikutnya satu, dan seterusnya. Angka inilah yang ada di samping setiap entri di halaman blok pool dan di explorer mana pun.
Tinggi sebenarnya tidak disimpan di header. Tinggi berasal dari posisi blok di dalam chain.
Di kebanyakan chain modern, tinggi juga ditulis di transaksi coinbase. Aturan itu ditambahkan belakangan, supaya dua blok di tinggi berbeda tidak pernah identik byte demi byte. Meski begitu, jawaban resmi untuk tinggi sebuah blok tetaplah posisinya.
Tinggi juga cara alami untuk menghitung konfirmasi. Transaksi yang terkubur enam blok berada di blok enam tingkat di bawah ujung chain. Setiap blok tambahan membuat penulisan ulangnya makin mahal.
Apa yang diukur oleh ukuran blok?
Ukuran blok pada dasarnya adalah ukuran isinya. Header hampir tidak berarti dibandingkan isinya. Batas ukuran blok menyangkut berapa banyak transaksi yang muat, bukan header.
Blok penuh dan blok kosong butuh kerja mining yang persis sama. Difficulty menentukan seberapa sulit blok ditemukan. Ukuran menentukan seberapa banyak isi blok. Keduanya tidak berhubungan, dan mencampuradukkannya menimbulkan banyak salah kaprah soal biaya transaksi.
Ukuran memang memengaruhi pasar biaya. Saat transaksi yang ingin masuk lebih banyak dari yang muat, yang menawarkan biaya lebih tinggi masuk lebih dulu. Total biaya di blok naik, dan itu langsung menambah bayaran blok tersebut.
Apa itu transaksi coinbase?
Transaksi pertama di setiap blok itu istimewa. Transaksi ini tidak punya pengirim. Ia menciptakan koin dari ketiadaan dan membayarkannya kepada pembuat blok.
Namanya transaksi coinbase. Ini tidak ada hubungannya dengan bursa yang bernama sama.
Transaksi ini membayar hadiah blok, yang terdiri dari dua bagian.
- Subsidi, yaitu koin yang baru diterbitkan. Jadwal emisi chain yang menentukannya, dan di kebanyakan koin jumlahnya menyusut seiring waktu.
- Biaya semua transaksi lain di blok. Pengguna menambahkannya agar transaksi mereka dimasukkan.
Di pool, coinbase membayar ke pool. Lalu pool membagi reward kepada semua yang mengirim share di ronde itu. Ini bukan jalan memutar. Beginilah pool membayar banyak orang dari reward yang datang sebagai satu pembayaran utuh.
Kenapa ini penting saat Anda mining?
Setelah bentuk blok jelas, tiga hal jadi terang. Ketiganya sering sekali muncul.
- Blok baru langsung membuat kerja Anda tidak berguna. Hash blok sebelumnya berubah, jadi header yang sedang Anda cari sudah tidak ada. Apa pun yang Anda kirim untuknya setelah itu adalah stale share, dan secepat apa pun tidak bisa memperbaikinya.
- Pool sering mengirim kerja baru. Setiap transaksi baru yang ingin dimasukkan pool mengubah merkle root. Kerja yang lebih baru membawa lebih banyak biaya, artinya reward lebih besar untuk usaha yang sama.
- Ukuran blok tidak pernah muncul di perkiraan pendapatan. Pendapatan Anda bergantung pada difficulty, subsidi dan biaya. Tidak bergantung pada jumlah byte di isi blok.
Halaman blok pool menunjukkan tinggi setiap blok, reward-nya dan kapan blok itu ditemukan. Baris itu adalah bagian yang berguna dari semua penjelasan di atas. Explorer menunjukkan sisanya, termasuk transaksi coinbase yang membayarnya.