Waktu blok Bitcoin

Anda tahu: Waktu yang diharapkan antara dua blok Bitcoin rata-rata \(10\) menit. Sekarang Anda melakukan transaksi Bitcoin yang penting dan menunggu dengan penuh semangat untuk melihat apakah dan kapan transaksi itu muncul di blok berikutnya:

e50bfacc95975a4e7545d83d8954645f


Karena Anda belum memeriksa kapan blok sebelumnya selesai, Anda sebenarnya mengharapkan rata-rata \( \frac{t}{2} = \frac{10}{2} = 5 \) menit waktu tunggu. Setelah \(5\) menit yang lama berlalu, periksa kapan blok terakhir benar-benar selesai:

e50bfacc95975a4e7545d83d8954645f

Blok terakhir sudah selesai \(7\) menit yang lalu. Sekarang setelah Anda mengetahui informasi ini, waktu yang diharapkan berubah dari \(5\) menit menjadi total \(10\) menit. Itu berarti: Dalam sekitar \(3\) menit mungkin akan sejauh ini. Anda mengeluarkan perintah berulang-ulang. Dan tunggu. Setelah \(10\) menit lagi Anda merasa ada sesuatu yang salah.

Tapi kemudian kamu ingat itu Menunggu paradoks:

Jika bus berjalan rata-rata setiap \(t\) menit, waktu tunggu untuk waktu kedatangan acak di halte bus tidak sesuai dengan \(\frac{t}{2}\) menit, tetapi dalam kasus terdistribusi secara eksponensial jarak \(t\) .

Terjadinya blok Bitcoin adalah proses Poisson dan karena itu terdistribusi secara eksponensial. Karena proses Poisson tidak memiliki memori, blok berikutnya juga diselesaikan dalam rata-rata \(10\) menit. Itu selalu berlaku - tidak peduli berapa lama kita menunggu. Kualitas tanpa ingatan berlaku baik mundur maupun maju dalam waktu.

Bagaimana itu bisa terjadi?

Untuk melakukan ini, kami mempertimbangkan dua pernyataan berikut::

  • A) Waktu tunggu rata-rata sebenarnya antara dua blok adalah \(10\) menit, bukan \(20\) menit.
  • B) Jika titik waktu acak dipilih, kami mengharapkan blok sebelumnya \(10\) menit di masa lalu dan blok berikutnya \(10\) menit di masa depan. Jadi kita dapat mengharapkan waktu tunggu \(20\) menit antara blok.

Kami memeriksa kedua pernyataan.

Untuk melakukan ini, pertama-tama kami mengekstrak data yang relevan, khususnya waktu penyelesaian blok, ke dalam file TXT (akan dilakukan dengan node penuh yang berjalan secara lokal berdasarkan bitcoind ):

e50bfacc95975a4e7545d83d8954645f

Ini memberi kita file teks berikut, yang sekarang kita proses lebih lanjut dan simpan di /time.txt . Program Rust berikut digunakan untuk ini dengan file /Cargo.toml:

e50bfacc95975a4e7545d83d8954645f

File /src/main.rs berisi logika pengujian yang sebenarnya:

e50bfacc95975a4e7545d83d8954645f

Kami menginstal dependensi, membangun program dan memulainya:

e50bfacc95975a4e7545d83d8954645f

Memang, kedua pernyataan itu benar ketika kita menganalisis output:

e50bfacc95975a4e7545d83d8954645f

Ini juga dapat dijelaskan secara intuitif sebagai berikut: Jika waktu blok bervariasi secara signifikan, waktu tunggu spesifik bervariasi - jika kita melakukan transaksi pada titik waktu yang acak, kemungkinannya lebih tinggi bahwa kita akan berakhir dalam interval di mana waktu tunggu lebih lama dari 10 menit karena interval ini juga memakan lebih banyak ruang pada timeline karena waktu yang lebih lama.

Kembali