ほっしーの技術ネタ備忘録

技術ネタの備忘録です。基本的に私が忘れないためのものです。他の人の役にも立つといいなぁ。

bitcoin wiki 和訳 - Confirmation

最近は bitcoin について調べているので翻訳してみた。

翻訳元:https://en.bitcoin.it/wiki/Confirmation

承認

トランザクションビットコインネットワークにブロードキャストされた後、
そのトランザクションはネットワークに発行されたブロックに含まれます。
そうすると、トランザクションは1ブロックの深さで発掘されたと言えます。
後に続くそれぞれ発見されたブロックと共に、ブロックの深さの値は1つずつ増えます。
二重使用にたいしての安全性を担保するため、ブロックの深さの値が十分になるまで、
トランザクションが承認されたと見なしてはいけません。


承認されていないトランザクションは消費済みではないことに注意してください。

承認の回数

古典的なビットコインクライアントは、トランザクションが6ブロックの深さになるまで、
トランザクションを「n/unconfirmed」と表示します。
ビットコインを支払方法として受け入れる加盟店や取引所は、資金が承認されたと見なされるまでに
どれだけのブロックの深さが必要かという、独自の基準を設定できます。
二重使用による損失の可能性が名目上でしかない、もしくは非常に安価だったり、他に代えの利かない商品の場合、
人々はトランザクションが承認まで待たないで、トランザクションがネットワークに現れたらすぐに
取引を完了するという選択をするかもしれません。二重使用によるリスクを負うことになる
大多数の取引所や他の加盟店は、6以上のブロックの深さを要求します。


デフォルトとしてよく使われている6ブロックの数字には特に何もありません。
これは、攻撃者が 10% 以上のハッシュレートを寄せ集めることができることはまずなくて、
リスクが 0.1% 以下であれば許容できるという仮定に基づいて選ばれました。
どちらの値も任意のものですが、6ブロックというのは普通の攻撃者にはオーバーキルなもので、
同時に 10% 以上のハッシュレートを持つ攻撃者に対しては無力です。


新しく発掘されたコインは、100 ブロックの間使用できません。
全てのノードにトランザクションが伝搬するために、もう少しの間待つことをお勧めします。
一部の古いビットコインクライアントは生成されたコインは
120 ブロックの深さになるまで承認されたと表示されません。

どのくらいの承認なら十分か

0/unconfirmed なトランザクションは、それほど大きな労力をはらわずに、
Finney attack や race attack で取り消すことができますが、
一部のケース、特に、価値の低い商品やサービス、取り返しのつくものの場合、
それでも許容できることがあります。


確認が必要な取引の場合、ハッシュレートの割合と承認の数から
二重使用が成功する可能性を計算するためにウェブサイト
https://people.xiph.org/~greg/attack_success.html)が使えます。
昨今のビットコインマイニングの状況だと、6以上の承認が必要であることに
注意してください(60 の承認は、40% のハッシュパワーを持つ攻撃者にとって
1% 未満の攻撃成功の可能性がある)。
攻撃者の成功確率の公式については、ビットコインホワイトペーパー
https://bitcoin.org/bitcoin.pdf)のセクション11を確認してください。


一部のマイニング企業はいくつかのマイニングプールにわたってハッシュパワーを
隠している可能性があります。また、マイニング ASIC はハッシュパワーを向上させるため、
一時的にオーバークロックすることも可能です。
これは電力効率は悪いですが、短時間のハッシュレートをバーストするために使われるかもしれません。
最大限に安全を取るためには、ブロックの報酬に見合う価値の商品の不可逆な販売のために、
交換の完了の前に大量の承認(144ブロック=1日)を要求することを推奨します。


参照:Irreversible Transactions

承認時間

追加の承認とは毎回、新しいブロックが発見され、ブロックチェインの
末尾に追加されるということです。


マイナーは、提示されたブロックに対するプルーフオブワークを解くことで
ブロックを作成します。ブロックの間隔は平均して約10分ですが、
全てのブロックの間隔がちょうど10分というわけではありません。
これは、ランダムなイベントが各時間間隔で同じ確率で発生するという、
ポアソン過程という統計的過程に従っています。
マイニングを表現するもう1つの方法は、マイニングプロセスが無記憶性ということで、
毎秒、ブロックが同じ確率で発見されるとします。
ポアソン過程は良く知られていますが、あまり意味がないかもしれません。


図1


10分未満の時間で発見されるブロックがたくさんありますが、
とても長い時間の一部のブロックが、平均を10分に引き上げています。
そこで、ビットコインネットワークは不幸になる可能性があり、
ブロックは丸一時間発見されません。


図2


10分間隔でブロックが発見される確率は約 63% (=1-e^(-1)) です。
そのため、およそ 2/3 のブロックが 10 分以内に発見されます。
30 分以内にブロックが発見される確率は 95% です。60 分では 99.7% に上がります。