ホワイトペーパー

ZILLIQAテクニカルホワイトペーパー日本語訳3

更新日:

本稿について

本稿では、The ZILLIQA Technical Whitepaper Version0.1の「III. Cryptographic Layer」の日本語訳を掲載します。

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

スポンサードサーチ

3. 暗号理論レイヤ

暗号理論レイヤ(the cryptographic layer)はZILLIQAで使用する暗号プリミティブを定義する。いくつかのブロックチェーンプラットフォームと同様に、ZILLIQAは電子署名を行うのに楕円曲線暗号に、プルーフオブワークを行うのにメモリハードな(筆者注:効率的に計算を行おうとすれば大量のメモリが必要となるような)ハッシュ関数に依拠する。

本ホワイトペーパー全体を通して、SHA3[6]というハッシュ関数を使って設計を説明する。SHA3はもともとKeccak[7]に基づいている。Keccakは特にEthereumの別のブロックチェーンプラットフォームで広く利用されている。近い将来、他のプラットフォームとのより良い相互運用ができるようにするためにKeccakに切り替えるかもしれない。

A. シュノア署名

ZILLIQAはEC-Schnorr(シュノア署名アルゴリズムベース楕円曲線, Elliptic Curve Based Schnorr Signature Algorithm)[8]を基盤の署名アルゴリズムとして利用する。secp256k1曲線[9]を使用するスキームのインスタンスを生成する。同一の曲線は現在BitcoinやEthereumで利用されているが、その用途はECDSAと呼ばれる別の署名アルゴリズムである。ECDSAではなくEC-Schnorrを選択することでいくつかの利点が得られる。それらについて以下で述べる。

1)ノンマリアビリティ

非公式的に言語化したノンマリアビリティ(non-malleability)という特徴は、秘密鍵を用いてあるメッセージに対して生成された署名セットがあるとしたとき、攻撃者が同じメッセージにとって対となる公開鍵に対して有効な新しい署名を生成することが困難であるべきだということを意味する。マリアビリティのあるECDSAと違って、EC-Schnorrはマリアビリティがないことが証明[10]されている。

2)マルチシグ

マルチシグは複数の署名者が所与のメッセージについての署名を1つの署名に集約し、全オーソライズパーティの鍵を集約した公開鍵に対して認証できるようにするものである。EC-Schnorrはネーティブにマルチシグスキームである一方で、ECDSAはマルチシグを生成できるが柔軟性に欠ける方法で行うことになる。

ZILLIQAはメッセージに対して複数の署名が必要になった場合、マルチシグベースのEC-Schnorrを利用して署名サイズを削減する。より小さな署名サイズは、複数のパーティが署名によってデータに合意しなくてはならないZILLIQAのコンセンサスにおいては特に重要である。

3)速度

EC-SchnorrはECDSAよりも高速である。というのもECDSAは大きな数を法とする逆数を計算する必要があるからである。

正確なEC-Schnorrの鍵生成と署名、検証のプロシージャはAppendix Aに示す。同AppendixでEC-Schnorrがマルチシグスキームとしてどのように用いられるかも示す。

B. プルーフオブワーク

ZILLIQAはシビルアタックを防ぎ、ノードのアイデンティティを生成するためだけにプルーフオブワークを用いる。これは、分散型コンセンサスを形成するためにプルーフオブワークを利用する多くの既存のブロックチェーン(特にBitcoin[1]やEthereum[12])と対照的である。ZILLIQAは、Ethereum1.0で使われているPoWアルゴリズムのEthash[13]を利用する。

Ethashは、GPUでマイニングするのは容易であるがASICのような専用コンピューティングハードウェアでマイニングするのは困難であるように設計されたメモリハードな(memory-hard)ハッシュ関数である。これを達成するためにEthashのコンピュテーションは相当のメモリ(ギガバイト)とI/O帯域幅を要するので、専用のコンピューティングハードウェア上で関数を並列に呼び出すことはできない。

大まかに説明すると、Ethashはインプットとしてデータ(例えばブロックヘッダ)と64bitのnonceを取って256ビットのダイジェストを生成する。アルゴリズムは4つのサブルーチンからなり、それぞれ所与の順番で実行される。

1)シード生成

シードはSHA3-256ダイジェストで、エポックと呼ばれる30000ブロックが経過するごとに更新される。最初のエポックでは、シートは32バイトの0の羅列のSHA3-256ハッシュである。以降全てのエポックに関して、シードは常に直前のシードのSHA3-256ハッシュである。

2)キャッシュ生成

シードは、SHA3-512を使って擬似乱数のキャッシュを生成するのに利用される。キャッシュのサイズはエポックに伴って線形的に増加する。キャッシュの初期サイズは16MBである。

3)データセット生成

キャッシュはデータセットの生成に利用する。ここで、データセットの各「アイテム」はキャッシュ中の少数のアイテムにのみ依存する。データセットは各エポックで一度更新されるのでマイナーが頻繁に変更を行う必要はない。データセットのサイズもエポックに伴って線形的に増加する。データセットの初期サイズは1GBである。

4)マイニングと検証

マイニングはデータセットのランダムな小片をつかみ取ってまとめてハッシュ化することに関係する。検証はキャッシュを使ってハッシュの計算に必要なデータセットの特定の欠片を再生成する。

ZILLIQAホワイトペーパー日本語訳2 ←← 前)|(次 →→ ZILLIQAホワイトペーパー日本語訳4

免責

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

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

-ホワイトペーパー
-, , , , , , , ,

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

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