本稿について
本稿では、DFINITY White Paper:Consensus Systemのうち第5章「PROBABILISTIC SLOT PROTOCOL AND NOTARIZATION」のうち、5.2「Block Proposals」と5.3「Block Notarization」の日本語訳を掲載します。
本章は数学的な表記が多く、やや表記に慣れていないと読み解くのが難しくなっています。しかし、単に文中に注を入れていくと冗長になるため、節が終わるごとに数学的表記を噛み砕いて平易な文章(緑字)に直した注記をまとめて入れるようにします。
原文はこちらになります。
スポンサードサーチ
5 確率的スロットプロトコルと公証(続き)
5.2 ブロック提案
各ラウンドでレプリカはそれぞれブロックを提案することができる。ブロック提案を行うために、ラウンドr + 1でレプリカは自らの視点でlen C = rであるような最大の重みを持つ有効な6チェーンCを選択する(図6を参照)。次にレプリカはユーザから受け取った新しいトランザクションを全て考慮する。新規提案ブロックBrはhead Cを参照し、選択したトランザクションで構成される。レプリカは公証コミティに公証を求めてBrをブロードキャストする。
(脚注6)
ブロックの検証については定義5.5以降で説明する。チェーンが有効であるには、そのすべてのブロックが有効であることが必要十分条件となる。
(筆者注)
- 図6の見方は、ラウンドrからr - 1 → r - 2 → r - 3と矢印に従ってブロックを辿っていけばよい。
- ラウンドrにてw(0)が作ったブロックを矢印に従って辿ると、r - 1ではw(2)が、r - 2ではw(0)が、r - 3ではw(0)がブロックを作っている。従って、r - 3 ~ rまでの全てのブロックの重みの合計(=チェーンの重み)はw(0)+w(0)+w(2)+w(0)=1+1+1/4+1=3.25となる。これをC1とする。
- 同様にしてラウンドrにてw(1)が作ったブロックを矢印で辿った場合、チェーンの重みを計算するとw(0)+w(1)+w(0)+w(1)=1+1/2+1+1/2=3となる。これをC2とする。
- チェーンの重みはC1 > C2であるから、C1のチェーンが選択される。
5.3 ブロックの公証
公証の目標は、各ラウンドの後ではなく最中に公開されたブロックだけからチェーンが作成されるよう強制することである。換言すれば、公証は攻撃者が隠れて競合するチェーンを作っておき後で公開できてしまう事態を防ぐ。遅れて公開されるブロックはもう公証されることはないので、ブロック提案の「タイムリーな公開」が強制されるのである。従って、公証は公開の証明であると同時にタイムスタンプであるともみなせる。
プロトコルはその時点でのラウンドについて、複数のチェーンヘッドの提案のうち少なくとも1つの公証を保証する。プロトコルはちょうど1つのチェーンヘッドを公証しようとするが、確実にそうなるわけではないということである。従って、公証はコンセンサスの意味を持たないし、コンセンサスを必要ともしない。
公証プロトコルに参加する場合、レプリカは少なくとも1つの有効なチェーンの拡張に関与するのであって、どのチェーンが勝利するかには関与しない(これは第6章「ファイナライゼーション」で扱うテーマである)。
定義5.5
ブロックBの公証は、母集団Uから抽出される部分集合の過半数がメッセージBに対して行う集約的な署名である。ブロックに少なくとも1つの署名がされているとき「署名済みである(signed)」といい、ブロックに公証がされているとき「公証済みである(notarized)」という。「公証済みである」ブロックは、ブロックとそのブロックに対して行われた公証が結合している。
アルゴリズム1に示すように、各ラウンドrにおけるレプリカはそれぞれ一定の時間枠の中で全レプリカ(自らも含む)から有効なブロック提案を全て収集する。この一定の時間枠をBlockTime(ブロックタイム)という。提案ブロックBは、ラウンドrでrd B = rであって以下の(1)~(3)を満たすような有効ブロックB'がある間は有効とみなされる。
(1) prv B = H(B′) かつ rd B′ = rd B − 1である。
(2) nt BはB'の公証である。
(3) dat Bが有効である。7
BlockTime終了後、レプリカはその時点のラウンドで受け取ったブロックのうち最高の優先度を持つ全てのブロックに署名を行い、ブロックに対する署名メッセージをネットワーク全体にブロードキャストする。ブロック生成者が不明瞭である場合に限り、1つ以上のブロックが最高の優先度を持ちうる。この場合、ブロック生成者が不明瞭な全ブロック提案に署名がされる。次ラウンドの誠実なブロック生成者はそれぞれ、複数のブロックのうちの1つだけをとってその上にブロックを作るので問題にはならない。
レプリカはBlockTime終了後にさらなるブロック提案を受け取る場合、最高の優先度を持つ全てのブロック提案への署名を継続して行う。その時点のラウンドで公証が観測されると、レプリカは次のラウンドへ進む。
(脚注7)
dat Bを検証要件とするかは任意であり、コンセンサスプロトコルに必須というわけではない。ブロックチェーンのアプリケーションに依存して、例えば、dat Bが有効なトランザクションとdat B'からの有効なステート遷移を表している場合にのみdat Bを有効とするように設定可能である。個々のコンセンサスプロトコルからdat Bは任意のデータである。
(筆者注)
- 提案ブロックBは、ラウンドrでrd B = rであって以下の(1)~(3)を満たすような有効ブロックB'がある間は有効とみなされる。
- ラウンドrでrd B = r
⇒ 現在ラウンドrであり、ブロックBのラウンド数もrである(Bがそのラウンド以外で作られたものではない、としても同じ意味)- prv B = H(B′) かつ rd B′ = rd B − 1
⇒ ブロックBの参照しているハッシュがブロックB'のものであって、B'のラウンド数はBのラウンド数の一つ前である(ブロックBの前ブロックがB-1である、としても同じ意味)- nt BはB'の公証である
⇒ prv B = H(B′) かつ rd B′ = rd B − 1 の意味と合わせて、ブロックB'が公証済みであり、正しいチェーン上のブロックであることを意味する。- dat Bが有効である
⇒ ブロックBのデータペイロード(トランザクションとステート)が有効である、ということ。
⇒ 上記脚注7も関連するので参照されたい。
(DFINITYホワイトペーパー日本語訳6 ←← 前)|(次 →→ DFINITYホワイトペーパー日本語訳8)
免責
邦訳には誤りがある場合がございます。予めご承知おき下さい。
確実な情報を知るためには冒頭に示した原文をご参照くださいますようお願いいたします。