Member-only story

Vitalikが提案した99%攻撃耐性アルゴリズムのBCへの導入について解説する(概略編)

Leona Hioki (日置 玲於奈 )
7 min readFeb 10, 2019

--

テカムセ

ネイティブ・アメリカンのアパッチ族のことわざに「話しすぎる人間は他人の想像力を侮辱している」というものがあります。逆に先進的な発明において話が少なすぎるために想像力が断絶することもありえそうかなと思い、Vitalikが提案し、分散技術界隈で一瞬で話題になり、その後断絶したトピックについて説明します。

2018年の8月にVitalikはそもそもビザンチン将軍問題が提案された1982年の論文に、その解法として出された99%攻撃耐性アルゴリズムをPoSに導入することについて提起しました。

これはEthreumのスケーリングに最も苦しんでいた時期に、on-chainでのshardingが各々のshardでの分散性不足を解消すること、そしてoffchain、つまりPlasmaの子チェーンのバリデータの不正を失くすこと、この2つに期待ができるため、スケーリングの文脈でも頻繁に言及されました。

さて、99%攻撃耐性アルゴリズムとは一体なんでしょう?まず普通のBFTアルゴリズムについて単純なモデルを考えます。これは非常に単純化されたモデルですので、実際のpBFTのような実装よりずいぶん劣った例になりますが、簡単のため目をつむって下さい。

ブロック提案者(通常リーダーと呼ばれる)がまず、ブロックを作ります。これに対してバリデーターの例えば2/3の承認が必要である設定がよく使われるものです。

1/3以上が承認しなければ、このブロックはチェーンにつながりませんし、1/3のノードが悪意があれば次のように攻撃を行い二重支払いを可能とします。

まず、ブロック提案者が悪で、1/3の悪承認者G1と結託し、Aというブロック提案を承認します。そしてブロック提案者は1/3の他グループG2にそれを流し、Aを承認してもらい、2/3でAを可決します。次に、ブロック提案者とG1はBというブロックを残りの1/3 G3に承認させ、自分たちもBを承認して、Bを2/3で可決し、状態をヒックリ返します。

--

--

No responses yet