本稿について
本稿では、The ZILLIQA Technical Whitepaper Version0.1の「V. Network Layer」の「A Network Sharding」の日本語訳を掲載します。プログラム的な構造体や変数を主に意図して記載されている語(プログラムの自体で記述されている語)に関しては日本語ではなく英語のまま記載します。
原文はこちらになります。
スポンサードサーチ
5. ネットワークレイヤ
ZILLIQAはトランザクション処理速度のスケーリングのために設計された。その主なアイデアがシャーディングで、マイニングネットワークをそれぞれが並列にトランザクションを処理できるいくつかの小さなシャードに分割するというものである。このセクションではネットワーク(network)とトランザクションシャーディング(transaction sharding)のアイデアを説明する。
A. ネットワークシャーディング
ネットワークシャーディング(network sharding)、つまりマイニングネットワークのいくつかの小さなシャードへの分割は2ステップで行われる。まず、ディレクトリサービスコミティ(DSコミティ)という専用のノードの集団を選び、次にネットワークをシャードしてノードをシャードに割り当てる。以下にこれらのプロセスを詳細に示す。
1)ディレクトリサービスコミティ(DSコミティ)
ネットワークのシャーディングを進めるために、始めにDS(directory service)ノードというノードのグループを選出する。DSノードはDSコミティ(DS committee)を形成する。DSノードの選出はPoW1というプルーフオブワーク問題に基づくものである。PoW1のアルゴリズムをアルゴリズム1に示す。
他のノードよりもPoW1の有効なnonceを正しく生成したノードは新しいDS-Blockのheaderを提案する。DS-Blockにはheader部分とsignature部分があることを思い出してほしい。あるノードがPoW1を一度行うと、DS-Blockのheader一つだけを生成する。それからheaderはDSコミティのノードに多重送信される。次にDSコミティは提案されたDS-Blockのheaderに対してコンセンサスを実行し、署名部分を構築する。2ƒのDSノードがDS-Blockのヘッダに署名すると、DSブロックチェーン(DS blockchain)にコミットされる。
正常にブートフェーズが終わった後は、どんな時でもDSノードの構成はサイズn0に関して予め定められた期間で規定される。正しくDS-Blockをマイニングした最新のn0ノードがDSコミティを構成する。
連続する2つのDS-Blockのマイニングの平均時間をDS-epochという。DS-epochの値は2つ競合ブロックが存在する可能性を最小化するようにセットされる。DS-epochの開始時に新しいDSノードがDSコミティに入り、そのDSコミティの最古のメンバーが出ていく。これにより全てのDS-epochの間、DSコミティのサイズはn0で固定される。最も新参のDSコミティのメンバはリーダー(the leader)となって当該エポックの間コンセンサスプロトコルを先導する(コンセンサスプロトコルについてはセクション6を参照)。これはさらに、DSコミティメンバの厳密な順序を誘導する。
もしDSコミティのサイズが十分に大きければ(例えば800以上)そのDSコミティのn0個のメンバーのうちビザンチンなメンバーは高確率で最大でも1/3に留まるということを証明できる。
2)衝突の解決
ZILLIQAのコンセンサスプロトコル(セクション6で示す)はDSブロックチェーンのフォークを許可していない。複数のノードがほぼ同時にプルーフオブワーク問題を解いた場合、フォークが起こる可能性がある。この衝突を解決するために、各DSノードは受信したヘッダからnonceフィールドを読み取って昇順でソートする。i番目のDSノードの最大のnonceをnimaxと仮定する。
次に、DSコミティのリーダーは自分のheader(リーダーが確認した最も大きなnonceに対応するもの)を提案し、そのDS-Blockのheaderに合意するためにコンセンサスプロトコルを実行する。i番目のDSノードは対応するnonceがnimaxより大きいか等しい場合に限り提案されたヘッダに合意して受け入れる。コンセンサスが形成されると、DS-Blockのsignature部分が作られて合意の得られた勝者がリーダーになる。
3)シャードの生成
DSコミティが選出されると、ネットワークのシャーディングを開始できる。ノードが基盤コンセンサスプロトコルに参加するためには、ノードはプルーフオブワーク(PoW2)を実行しなければならない。シャーディングプロトコルはDS-epochの開始時に毎回繰り返される。PoW2のアルゴリズムをアルゴリズム2に示す。
PoW2に関して計算した有効なnonce(とmixhash)はDSコミティに多重送信される。DSノードは、コンセンサスを実行するn0個のノードを持つl個のコンセンサスコミティ(consensus committee)またはシャード(shard)に分割するのにちょうど足りるだけのプルーフオブワークの解を集団で受け入れる。DSコミティのリーダーが十分な数のPoW2の解を受信すると、リーダーはコンセンサスプロトコルを実行して一連の有効なPoW2の解に合意する。コンセンサスプロトコルの終わりに、リーダーはDSノードが署名したEC-Schnorrマルチシグを生成する。先に進むためには2/3よりも多くのDSノードが一連のPoW2の解に合意しなければならない。
シャーディングでは決定論的関数を利用してノードをシャードに割り当てる。nonceの値は昇順でソートされて最初のn0個のノードが1番目のシャードに割り当てられ、次のn0個のノードは2番目のノードに割り当てられ...というように続いていく。シャード内で最大のnonceを提案したマイナーのアイデンティティはそのシャードのリーダーに知らされる。これはさらに、シャードのメンバの厳密な順序を誘導する。
もしn0が十分に大きければ(例えば800以上)各シャードでビザンチンなメンバーは高確率で最大でも1/3に留まるということも証明できる。
(ZILLIQAホワイトペーパー日本語訳4 ←← 前)|(次 →→ ZILLIQAホワイトペーパー日本語訳6)
免責
邦訳には誤りがある場合がございます。予めご承知おき下さい。
確実な情報を知るためには冒頭に示した原文をご参照くださいますようお願いいたします。