簡単まとめ

Bitcoin-NG論文を見てみる3

更新日:

本稿について

様々なブロックチェーンにインスピレーションを与えているプロトコルBitcoin-NG(Bitcoin Next Generation)の論文を見ていきます。本稿では「3. Bitcoin and its Blockchain Protocol」の日本語訳を掲載します。

原文はこちらになります。

スポンサードサーチ

今回のまとめ

  • Bitcoinのプロトコルについて
    • レプリケートステートマシンがユーザの残高を維持する。ステート遷移が資金移動(トランザクション)であると言える。マイナーがレプリケートステートマシンを管理する。
    • 資金移動はアドレスからアドレスへ、過去のトランザクションのアウトプットを使用して行う。アウトプットが別のトランザクションのインプットであれば使用済みであり、そうでなければ未使用である。未使用アウトプットの合計がその人がその時点で所持するBitcoinの数である。マイナーは未使用のアウトプットをソースに使うトランザクションのみを許容することで二重支払いを防ぐ。
    • 有効なブロックは「前ブロックのハッシュに関係する暗号パズルの解」と「現在のブロック内のトランザクションのマークルルートハッシュ」と「コインベーストランザクション」を含む。暗号パズルはブロックヘッダのダブルハッシュがある一定値以下でなくてはならず、パズルのディフィカルティはこの値により上下可能である。マイニングの間隔が平均して10分であるようにディフィカルティは調整される。
  • Bitcoinのマイニングについて
    • ブロック報酬はブロック生成の対価でありBitcoinで支払われる。報酬の内訳は、トランザクションを取り込んでもらったユーザから手数料と新規発行のBitcoinである。
  • Bitcoinのフォークについて
    • 複数のマイナーが同じ先行ブロックの後にブロックを生成すれば分岐が発生し、木構造になる。
    • 最もマイニングパワーが注ぎ込まれたと考えられるチェーンが正であると規定されている。
    • 通例オーファンブロック、オーファンブランチなどと言われてるメインチェーン外のブロックやブランチはプルーニングされたものという。

※以下、今回まとめた範囲の論文和訳になりますので詳細をご覧になりたい方は読み進めてください。

3. Bitcionと、Bitcoinのブロックチェーンプロトコル

Bitcoinは分散型で非中央集権型の暗号通貨[7, 8, 9, 43]で、暗黙的にナカモトコンセンサスを定義し、実装した。Bitcoinはユーザ間でBitcoin通貨のトランザクションをシリアライズするのにブロックチェーンプロトコルを使う。レプリケートステートマシンが異なるユーザの残高を維持し、その遷移がユーザ間で資金移動をするトランザクションである。このステートマシンはマイナーと呼ばれるシステムノードにより管理されている。

各ユーザは「アドレス(addresses)」を使い、自身のアドレスから他者のアドレスへのトランザクションを作ってノードに送信することでBitcoinを送る。より明確には、前のトランザクションのアウトプットから特定のアドレスへの移動がトランザクションである。アウトプットは別のトランザクションのインプットであれば「使用済み(be spent)」である。あるクライアントに対する未使用アウトプットの合計がxであるとき、時点tでそのクライアントはBitcoinをx持っている。トランザクションは暗号技術で保護されており、Bitcoinアドレスの正当な所有者だけがそのアドレスから資金移動できることを保証する。マイナーはそのソースが未使用である場合に限りトランザクションを受け入れ、このようにすることでユーザの二重支払いを防ぐ。マイナーはトランザクションを「ブロックチェーン(blockchain)」というグローバルなアペンドオンリーのログにコミットする。

ブロックチェーンはブロック単位でトランザクションを記録する。各ブロックにはユニークなIDと前ブロックのIDが含まれる。一番最初のブロック、いわゆる「ジェネシスブロック(the genesis block)」はプロトコルの一部として定義される。有効なブロックは(1)前ブロックのハッシュに関係する暗号パズルの解と(2)現在のブロック内のトランザクションのハッシュ(具体的にはマークルルート)で、必ず有効なもの(3)暗号パズルを解いたマイナーの功績に報酬を認める「コインベース(coinbase)」という特別なトランザクションを含む。このプロセスをBitcoinの「マイニング(mining)」という。また、少々用語的に乱暴ではあるが、私たちはブロックの生成を「ブロックマイニング(block mining)」と呼ぶことにする。具体的な暗号パズルはブロックヘッダを2回ハッシュ化したもので、この結果がある設定値よりも小さくなければならない。「問題の難易度(ディフィカルティ, problem difficulty)」はこの値により設定され、ブロック生成が平均して10分の速度で行われるように動的に調整される。

マイニング

マイナーがブロックを生成すると、生成に費やした努力の対価はBitcoinで支払われる。この報酬にはトランザクションを取り込んでもらったユーザが支払うトランザクションごとの手数料とそれまで存在していなかったBitcoinが含まれる。

フォーク

どんなマイナーも有効なブロックをオーバレイネットワーク上で他全てのマイナーに公開することでそのブロックをチェーンに追加してよい。複数のマイナーが同一の先行ブロックでブロックを生成すれば、そのチェーンはいくつかのブランチ(branches, 枝)にフォーク(fork, 分岐)し、木を形成する。他のマイナーはその後に続いてこのブランチのどれかに新しい有効なブロックを追加するかもしれない。あるマイナーが既存ブロックの後に新しいブロックを追加しようとしている場合、これを既存ブロックに対するマイニングという。このブロックがブランチのリーフであれば、そのマイナーはブランチをマイニングしているという。

フォークを解決するためにプロトコルはマイナーがどのチェーンをマイニングするべきかを規定している。その基準は選ばれるチェーンは最も重いチェーン(the heaviest chain)、すなわち、生成に最も多くのマイニングパワーを要した(と予測される)チェーンである。全てのマイナーは自らの知る最も重いチェーンにランダムタイブレークでブロックを追加する。最長のチェーンを無作為に選ぶというのはEyalとSirer[25]が提唱したものである点を付け加えておく。クライアントが伝え聞いた最初のブランチを簡単に選んでしまうと、一般的な場合、もっと脆弱になってしまう。ノードが分かる最も重いチェーンはそのノードが知るRSM(レプリケートステートマシン)インプットの順序であり、それゆえにRSMのステートを表す。フォークの発生は好ましいものではない。というのもグローバルに合意のとれたRSMステートがないことを示すからだ。

メインチェーン外のブランチやブロックはプルーニングされた(筆者注:剪定された)ものと呼ばれる(インフォーマルな議論では一般的ではあるが、オーファン(筆者注:オーファンブロックなど)とは呼ばない。ブロックツリーに親を持つからである)。プルーニングされたブロック内のトランザクションは無視される。そのトランザクションと矛盾するトランザクション(同一のアウトプットを使用しているもの)がメインチェーンにない限りは、後でいつでも無視されたトランザクションをメインチェーンに設置できる。

平均のマイニング間隔が10分であるのに対して、Bitcoinオーバレイネットワーク上でのブロックの伝搬は数秒である。従って、偶発的な分岐は平均で60ブロックごとに1度発生する[18]。

さて、次章ではBitcoin-NGについて説明しよう。

Bitcoin-NG論文を見てみる2 ←← 前)|(次 →→ Bitcoin-NG論文を見てみる4

免責

邦訳には誤りがある場合がございます。予めご承知おき下さい。

確実な情報を知るためには冒頭に示した原文をご参照くださいますようお願いいたします。

-簡単まとめ
-, , ,

Copyright© 暗号通貨界隈のメモ書きなど。 , 2019 All Rights Reserved Powered by STINGER.

%d人のブロガーが「いいね」をつけました。