セキュリティとアーキテクチャ
ZooBC の安全性は、費やされたエネルギーではなく、署名とハッシュに基づいています。すべてのブロック、トランザクション、レシート、シードの証明は署名されており、すべてのノードが受け入れるものすべてを確認するため、どのノードも他のノードの言葉を鵜呑みにする必要はありません。その中核の周りに、アーキテクチャはいくつかの確固とした制限を加えています。確定した履歴は書き換えられないこと、新しいノードが自力で本物のチェーンを見つけられること、そして署名は 1 つのチェーンでしか有効でないことです。
ZooBC が想定する攻撃者
設計が想定しているのは、任意の数のノードとアカウントを動かし、すべてのメッセージを見ることができ、どんな論理上の欠陥も突き、資金も豊富だが、署名を偽造することも、ハッシュの衝突を見つけることも、すべてのトークンを買い占めることもできない攻撃者です。その目的は、盗むこと、検閲すること、履歴を書き換えること、チェーンを混乱させることでしょう。Proof of Participation が防ぐもの では、各攻撃とそれへの答えを順に取り上げています。
すべてのノードに 2 つのチェーン
すべてのノードは 2 つのチェーンを保持しています。メインチェーンは 15 秒ごとにブロックを作ってトランザクションを運び、そのブロックは抽選で選ばれた登録済みノードが作ります(Proof of Participation を参照)。スパインチェーンは mainnet では 1 日に 1 ブロックを作り、トランザクションは運びません。各ブロックは、メインチェーンのチェックポイント、加わったり離れたりしたノード鍵の記録、最新の状態スナップショットのマニフェストであり、席の 3 分の 2 によって共同署名されています。
防御の層
| 層 | 保証すること | 記事 |
|---|---|---|
| すべてのノードによる検証 | ブロックが数えられるのは、抽選された生成者が署名し、シードの証明、トランザクション、レシートが確認を通った場合だけ | Proof of Participation |
| 平等でペースの決まった席 | 力を素早く買うことはできない。席ごとに等しい確率 1 つ、サイクルごとに加入 1 つ | Proof of Participation が防ぐもの |
| 制限されたロールバック | どのノードも 720 ブロック(3 時間)を超えてロールバックしない | ファイナリティとロールバック |
| スパインのチェックポイント | どのノードも、席の 3 分の 2 が共同署名したチェックポイントより下で再編成しない | スパインチェーン |
| 確認付きのファストシンク | 新しいノードはスパインが指定する状態を読み込み、すべてのハッシュを確認し、ピアをサンプリングする | スナップショットとファストシンク |
| リリースピン | 新しいインストールは、そのリリースと矛盾するスパインの履歴を拒否する | リリースピン |
| チェーン束縛署名 | あるチェーン用に署名されたトランザクションは、他のすべてのチェーンで拒否される | チェーン束縛署名 |
| 3 分の 2 の決定 | チェックポイント、ブリッジの送金、オラクルの事実、リリースの拒否には席の 3 分の 2 が必要 | 3 分の 2 ルール |
| 予測不能なシード | 次の生成者を選ぶランダム性を、どの生成者も選べない | ブロックシード(VRF) |
| 二重署名の報告 | 1 つの親の上に 2 つのブロックに署名した生成者は、証明されて代償を課される | 二重署名(equivocation) |
これらの層は重なり合っています。たとえば 1 年前からの履歴の書き換えは、ロールバック制限、チェックポイントの下限、スパインの共同署名、リリースピンという複数の層のそれぞれで、単独でも失敗します。
過半数にできること、できないこと
席の過半数を握る攻撃者でさえ、できるのはトランザクションを遅らせたり検閲したりすることと、3 時間の制限内で最近のブロックを置き換えることだけです。署名を偽造すること、他人のコインを使うこと、コインベースのスケジュールを超えて発行すること、スパインのチェックポイントより下に戻ることはできません。すべてのノードがすべてのブロックを自分で確認するからです。
ZooBC の安全性が頼らないもの
- 秘密性。 ピア間の通信は平文の gRPC です。保護は署名と検証から得られます。
- エネルギーやハードウェア。 解くべきパズルはなく、どのマシンも有利になりません。
- 信頼される第三者。 ブロックに副署する財団も、スナップショットを保証するウェブサイトもなく、最も重いチェーンを知るには誠実なピアが 1 つあれば十分です。
関連項目
このトピックの記事
- 3 分の 2 ルール
ZooBC のどの決定に登録済みの席の 3 分の 2 が必要か(スパインブロック、ブリッジの送金、オラクルの事実、リリースの拒否、ルールのアップグレード)、一時停止中の席がどう数えられるか、そして投票の要らないものを説明します。 - Proof of Participation が防ぐもの
ZooBC が耐えるように設計された攻撃者と、Proof of Participation が各攻撃にどう答えるかを説明します。買われた力、シビルの席、過半数、シードの操作、ロングレンジの書き換え、エクリプスです。 - スナップショットとファストシンク
新しい ZooBC ノードが、すべてのブロックをリプレイせずに現在に追いつく仕組みを説明します。スパインが指定する毎月の状態スナップショットを、チャンクごとに、そしてピアと照らして確認します。 - スパインチェーン
すべての ZooBC ノードが保持するゆっくりとした第 2 のチェーンです。1 日に 1 ブロックで、席の 3 分の 2 が共同署名し、メインチェーンのチェックポイント、ノード鍵の変更、スナップショットのマニフェストを保持します。 - チェーン束縛署名
ある ZooBC チェーン用に署名されたトランザクションを別のチェーンで再利用できない理由を説明します。すべての署名は、ZooBC チェーンが持つ唯一の身元であるジェネシスハッシュを対象にしています。 - ファイナリティとロールバック
ZooBC のノードがより重いブランチに従うためにどこまでロールバックするか(720 ブロック、3 時間)、スパインのチェックポイントより下に決して戻らない理由、そして取り残されたノードがどう自身を再構築するかを説明します。 - リリースピン
ZooBC のリリースが同梱できるピンについて説明します。スパインブロックを高さとハッシュで指定する 1 行の公開情報で、ノードは起動時にそれを確認し、偽造されたスパインの履歴の上で動くことを防ぎます。