ビットコインのブロック時間

あなたが知っている:2つのビットコインブロック間の予想時間は平均\(10\)分です。 今、あなたは重要なビットコイン取引を行っており、それが次のブロックに表示されるかどうか、そしていつ表示されるかを熱心に待っています:

e50bfacc95975a4e7545d83d8954645f


前のブロックがいつ完了したかを確認していないため、実際には平均\( \frac{t}{2} = \frac{10}{2} = 5 \)分の待機時間が予想されます。 \(5\)長い分が経過した後、最後のブロックが実際にいつ完了したかを確認します:

e50bfacc95975a4e7545d83d8954645f

最後のブロックはすでに\(7\)分前に完了しています。 この情報がわかったので、予想時間は\(5\)分から合計\(10\)分に変わります。 つまり、約\(3\)分で、おそらくこれまでのところになります。 コマンドを何度も発行します。 そして待ってください。 さらに\(10\)分後、何かがおかしいと感じます。

しかし、あなたはそれを覚えています 待っているパラドックス:

バスが平均して\(t\)分ごとに運行している場合、バス停へのランダムな到着時間の待機時間は\(\frac{t}{2}\)分に対応しませんが、指数分布の場合距離\(t\)

ビットコインブロックの発生はポアソン過程であるため、指数分布します。 ポアソン過程はメモリレスであるため、次のブロックも平均\(10\)分で完了します。 それは常に当てはまります-私たちがどれだけ待っていたとしても。 無記憶性の質は、時間の後方と前方の両方に適用されます。

どうしてそれができるのでしょうか?

これを行うために、次の2つのステートメントを検討します:

  • A)2つのブロック間の実際の平均待機時間は\(10\)分であり、 \(20\)分ではありません。
  • B)ランダムな時点を選択した場合、前のブロック\(10\)分が過去で、次のブロック\(10\)分が未来であると予想されます。 したがって、ブロック間の待機時間は\(20\)分と予想できます。

両方のステートメントを確認します。

これを行うには、最初に関連データ、特にブロックが完了した時刻をTXTファイルに抽出します(ビットコインに基づいてローカルで実行されているフルノードで実行されます):

e50bfacc95975a4e7545d83d8954645f

これにより、次のテキストファイルが作成されます。このファイルをさらに処理して/time.txtに保存します。 次のRustプログラムは、 / Cargo.tomlファイルでこれに使用されます:

e50bfacc95975a4e7545d83d8954645f

ファイル/src/main.rsには、実際のテストロジックが含まれています:

e50bfacc95975a4e7545d83d8954645f

依存関係をインストールし、プログラムをビルドして起動します:

e50bfacc95975a4e7545d83d8954645f

実際、出力を分析すると、両方のステートメントが当てはまります。:

e50bfacc95975a4e7545d83d8954645f

これは、次のように直感的に説明することもできます。ブロック時間が大幅に変化すると、特定の待機時間が変化します。ランダムな時点でトランザクションを実行すると、次のような間隔で終了する可能性が高くなります。待機時間が10分より長いのは、これらの間隔も時間が長いためにタイムライン上でより多くのスペースを占めるためです。

バック