ビットコインの二重支払の防ぎ方や、PoW、取引手数料について
ビットコインを発明し、未だその正体が分かっていないサトシ・ナカモト。そんなサトシが残した約2年間の文章を、小宮自由氏の解説と共に紹介する連載「サトシ・ナカモトが残した言葉〜ビットコインの歴史をたどる旅」の第13回。
まずサトシのメールの前に、本連載の元になっている書籍『ビットコイン バイブル:サトシナカモトとは何者か?』の著者フィル・シャンパーニュ氏の解説も掲載する。
フィル・シャンパーニュ氏の解説
ここでは、サトシはいくつかの説明を行い、ビットコインの全供給量の発掘の終了後には採掘者(つまり、ノード)の報酬として取引手数料を支払うことを述べている*1。
【訳注】
*1 現在は取引手数料とマイニング報酬の2つが採掘者の報酬である。全供給量の発掘の終了後には、マイニング報酬がなくなり、取引手数料のみが報酬となる。
サトシ・ナカモト 2008年11月17日 火曜日 09時04分47秒
それでは2008年11月17日 09時04分47秒のサトシのメールをみていこう。
========================
Re:ビットコイン ピア・ツー・ピア 電子キャッシュ 論文
サトシ・ナカモト 2008年11月17日 月曜日 09時04分47秒 -0800
(注:斜体部分は、サトシ以外の者の質問を指す)
実装に関連するこれらの質問を全てクリアにする参考資料となるように、ソースコードをできるだけ早い時期にリリースできるよう作業を急ぎます。
Ray Dillinger (Bear) は書きました:
コインを使うとき、買い手と売り手が(秘匿の)取引記録にデジタル署名します。
署名するのは買い手だけで、秘匿されません。
二重支払があると、取引記録が秘匿を解除され、詐欺者の身元情報が暴露されます。
身元情報は使いませんし、償還請求にも頼りません。全ては予防されています*2。
この実行はかなり標準的なカット・アンド・チューズ・アルゴリズム*3が行い、買い手は秘密の共有によりチャレンジに応じます。
チャレンジも秘密の共有もありません。基本的な取引はセクション2*4の図にある通りです。(買い手の)署名は直前の取引の公開鍵を満たし、(売り手の)新たな公開鍵は次回の取引時に満たさなければなりません。
受信するチェーンには、拡張作業中のものと同じ長さのチェーンも含まれていて、そこには、作業中のチェーンと共有されない最後の数リンク*5が連結されています。
これは無視されます。
その通りです。長さが同じなら、最も早く受信した方を保存することで均衡が破れます。
二重支払が含まれていると、二重支払を証明する「取引」を作成し、自分のプールAに追加し、ブロードキャストし、作業を続けます。
「二重支払の証明」を報告する必要はありません。同じチェーンに双方の送金(spends)が含まれれば、そのブロックは無効になり、拒絶されます。
ブロックが十分なプルーフ・オブ・ワークを持たない場合も同じことです。そのブロックは無効になり、拒絶されます。その報告を伝達する必要はありません。他のノードが見ていて、中継する前に拒絶します。
二つのチェーンが競合するとき、つまり、それぞれに同一の取引の異なるバージョンが含まれ、片方がある二者間の送金、もう片方が別の二者間の送金を表すとき、どちらの取引が有効かは、プルーフ・オブ・ワークのチェーン全体で解決します。
私たちは二重支払を監視して警告を鳴らしたり詐欺者を捕まえたりはしません。どちらの取引が有効かを判定するだけです。取引の受取人は判定が下りるまで数ブロック分待つ必要があります*6。その間に詐欺者は欲しいだけ二重支払を実行できますが、その結末は、数ブロック後にはその一つが有効になり、別のものが無効になります。一つの取引が主流のチェーンに編入された時点で、その後の二重支払取引は全て即座に拒絶されます。
以前の取引がチェーンに入っていなくても、ノード全員のプールに入っていれば、最初の取引は全ノードに届いているため、二番目の取引は拒否されます。
新たなチェーンが承認されれば、ノードでは現在作業中のリンクの追加を諦め、全ての取引をプールLからプールAに戻し(作業開始後に受信・作成した取引を含めて)、新たなチェーンのリンクに組み込まれた取引の記録をプールAから削除し、その新たなチェーンの拡張作業をスタートさせます。
その通りです。ノードでは新たな取引が届くたびに情報の更新もするので、Lにはいつの時点でもAの全てが含まれます。
新しいブロックLを含むチェーンに署名するCPU集約的なデジタル署名アルゴリズム。
これはハッシュキャッシュスタイルSHA-256のプルーフ・オブ・ワークです(ゼロの部分原像*7)。署名ではありません。
チェーンを構成するリンクの作成者が最速の三つか四つのノードに限られないよう保証するメカニズムはありますか? 取引記録のブロードキャストがその三つか四つのノードに届かないこともありえるので、もしそういうことが起きるなら、その限られたノードがチェーンを支配し続け、取引の追加が起きなくなります。
これをCPU集約的なデジタル署名とお考えなら、長い操作を最初に完了した最速の者が常に勝者になるような競争をお考えなのかもしれません。
プルーフ・オブ・ワークはハッシュキャッシュスタイルのSHA-256の衝突を発見する作業です。これは秒速数百万回のハッシュ計算を行うメモリーゼロのプロセスで、答えが見つかるチャンスは毎回、低いものです。三つか四つの最速ノードが支配するかどうかは、全CPUパワーに対する占有率にのみ比例します。解答が見つかる確率はCPUパワーに比例します。
取引手数料があるので、ノードには可能な範囲で全ての取引を受信し、編入しようとするインセンティブが働きます。最終的に全コインの産出量が既定の上限に達したら、ノードの報酬は取引手数料のみになります。
また、チェーンにリンクを追加するのに必要な作業は、そのチェーンへ前の週に追加されたリンクの数によって変わり(これも指数関数的に)、コイン生成速度(と通貨膨張速度)の厳重な制御につながります。
その通りです。
この拡張性のためには、コインの集積が必要です。誰かが10コインを辞退し、10の単位で新規コインを作成する「証明可能な」取引が必要です。
全ての取引がこれに該当します。セクション9「価値の結合および分割」*8を参照してください。
サトシ・ナカモト
暗号学メーリングリスト
========================
【訳注】
*2 二重取引はビットコインの仕組みにより事前に防止される、という意味だと思われる。過去の記事「ビットコインは、どうやって二重取引を防いでいる?」を参照。
*3 ケーキを分ける際に、一人がケーキを切ってもう一人が先にとることで公平性を確保する仕組み。ケーキ分割問題、公平分割問題とも呼ばれる。
*4 ビットコイン論文にある、「2. トランザクション」のこと。
*5 「ブロック」とほぼ同じ意味だと考えられる。以下も同様。
*6 具体的には、6ブロック分待てば(約60分)どのトランザクションが有効かはほぼ100%確定する。
*7 原文は”partial pre-image”。適切な訳が見つからなかったので、単語を直訳した。
*8 ビットコイン論文にある、「9. 価値の結合および分割」のこと。
解説
サトシが様々な意見に関して一問一答しています。いずれも、ビットコインの基礎知識と言えるものです。訳注に過去の記事やビットコイン論文のリンクを貼ったので、そちらも合わせて参考にしてください。
小宮自由
Header Image/iStock:kevron2001