PPcoin:Proof-of-Stakeを採用するP2P暗号通貨

Sunny King, Scott Nadal

(sunnyking9999@gmail.com, scott.nadal@gmail.com)

平成24年8月19日

概要

Nakamoto Satoshi氏のBitcoinに由来するP2P暗号通貨である。proof-of-stakeがproof-of-workの代わりにネットワークセキュリティの大部分を保障する。このハイブリッド型コインでは、proof-of-workが初期のコイン生成において大きな役割を果たすが、長期的にはあまり重要でなくなる。よって、ネットワークのセキュリティレベルは長期的に見ればエネルギー消費に依存しておらず、エネルギー効率とコスト競争力の高いP2P暗号通貨となっている。Proof-of-stakeはコイン年数(Coin Age)に基づいており、限られた範囲でハッシュ計算が行われること以外は、Bitcoinと同様に、ハッシュ計算を通じて各ノードにより生成される。過去のブロックチェーンや取引の決定は集権的(非分散的)にブロードキャストされるチェックポイントによってさらに保護されている。

序論

Bitcoinの開発以来(2008年 Nakamoto氏による)、proof-of-workはP2P暗号通貨の主要デザインであった。Proof-of-workの概念はコイン生成及びNakamoto氏がデザインしたセキュリティモデルの根幹をなしていた。

2011年10月、我々はコイン年数(Coin Age)の概念を用いることで、Bitcoinのproof-of-workシステムの代わりとなる、proof-of-stakeとして知られるシステムを構築できることを見出した。我々はその後、P2P暗号通貨とそのコイン生成システムのセキュリティモデルの構築に使われるproof-of-stakeのデザインを最適化した。このとき、proof-of-workは初期のコイン生成を容易にする役割を主に果たし、徐々にその重要性を失っていく。このデザインは、将来のP2P暗号通貨がエネルギー消費量によらない可能性を示すものである。我々はこのプロジェクトをPPCoinと名付けた。

コイン年数(Coin Age)

コイン年数の概念は、少なくとも2010年にはNakamoto氏によって知られており、その例として、セキュリティモデルにおいてはあまり大きな役割を果たしていないものの、Bitcoinにおける取引の優先順位を決めるのに利用されてきた。コイン年数は、通貨量に保有期間を掛けたものと定義される。分かりやすい例を挙げると、もしBobがAliceから10コインを受取り、90日保有していたとしよう。その時、ボブは累積900コイン・日のコイン年数を貯めたと言える。

また、BobがAliceから受け取ったコインのうち、10コインを使用した時、Bobがこの10コインで貯めたコイン年数は消費される(または、破棄される)。

コイン年数の計算を簡単にするために、我々は各取引にタイムスタンプ欄を導入した。ブロックのタイムスタンプや取引のタイムスタンプに関連するプロトコルは、コイン年数の計算を保護するために拡充されているのである。

Proof-of-Stake

Proof-of-workはNakamoto氏の大発見に大きな役割を果たしているが、proof-of-workの性質が原因で、その暗号通貨はエネルギー消費に依存しており、そのため、そのようなネットワーク運用には大きなコストがかかることになる。これは、インフレーションと取引手数料が組み合わさってユーザーの負担となることを意味する。Bitcoinネットワークにおけるコイン生成速度が小さくなると、十分なセキュリティレベルを維持するため、いずれは取引手数料を引き上げることになることと思われる。分散型暗号通貨を維持するためにはエネルギーを消費し続けなければならないのか、という疑問が自然と湧いてくるだろう。このため、P2P暗号通貨のセキュリティは、必ずしもエネルギー消費に依存する必要がないと証明することが、理論的にも、技術的にも重要なのである。

Proof-of-stakeと呼ばれる概念は、2011年にはBitcoinコミュニティの中ですでに議論されていた。大まかに言えば、proof-of-stakeとは通貨の所有権の証拠の一形式である。取引によって消費されるコイン年数はproof-of-stakeの形式と考えることができる。我々は、2011年10月、proof-of-stake及びコイン年数の概念を独自に考え出し、それによって、Bitcoinのコイン生成およびセキュリティモデルを慎重に再デザインすることにより、proof-of-stakeがproof-of-workが果たす機能のほとんどを備えることを発見した。主な理由は、proof-of-workと同様、proof-of-stakeが容易に生成できないためである。当然、これは通貨システムの重要な必要条件の一つ、つまり偽造対策となる。

Proof-of-Stakeにおけるブロック生成

我々のハイブリッド型デザインにおいて、ブロックは二つの異なる形に分けられる。つまりproof-of-workブロックとproof-of-stakeブロックである。

図:Proof-of-stake(Coinstake)トランザクションの構造

新しいproof-of-stakeブロックは、coinstake(Bitcoinにおけるcoinbaseにちなんで名付けた)と呼ばれる特殊なトランザクション形態となっている。Coinstakeにおいて、ブロックの所有者は、所有者自身のコイン年数を消費することによってトランザクションを行う。この時、所有者は、ネットワーク上のブロック生成の権利を得て、proof-of-stakeを生成する。Coinstakeの最初の入力データはkernelと呼ばれ、特定のハッシュ計算のターゲットと適合させる必要がある。このため、proof-of-stakeブロックは、proof-of-workブロックと同様、確率論的過程を経ることになる。しかし重要な違いは、proof-of-workが無限の探索範囲でハッシュ計算が実行されるのに対し、proof-of-stakeは、限られた探索範囲(より詳細にいえば、1未使用の財布出力データ(wallet-outpt)あたり、1秒あたりに、1ハッシュ[1hash/s・wallet-output])で実行されることである。よって大きなエネルギー消費を伴わないことになる。

Stakeのkernelが適合していなければならないハッシュターゲットは、kernelにおいて消費される単位コイン年数(1コイン・日)あたりのターゲットである(Bitcoinにおける、全ノードに適用される固定値であるproof-of-workのターゲットとは対照的である)。よって、kernelにおいて、より多くのコイン年数が消費されるほど、より簡単にハッシュターゲットのプロトコルに適合することになる。例えば、Bobには、100コイン・年の財布出力データ(wallet-output)があり、それは2日後にkernelを生成するとする。この時、Aliceは200コイン・年貯めていれば、kernelは1日後に生成されることになる。

我々のデザインにおいては、ネットワーク生成速度の急激な変化を避けるため、Bitcoinの固定された2週間の調整期間とは異なり、proof-of-workのハッシュターゲットも、proof-of-stakeのハッシュターゲットも、継続的に調整され続ける。

Proof-of-stakeに基づくコイン生成

Bitcoinにおけるproof-of-workのコイン生成に加え、proof-of-stakeブロックのコイン生成プロセスを新たに導入する。Proof-of-stakeブロックは、coinstakeトランザクションにおいて消費されたコイン年数に基づきコインを生成する。将来の低インフレーション率達成のために、1コイン・年の消費ごとに、1%のコイン生成速度を設定する。

我々は、初期のコイン生成を容易にするためにproof-of-workをコイン生成システムに導入しているが、完全なproof-of-stakeシステム下においては、株式市場における新規株式公開(IPO)と同様のプロセスにより、初期のブロック生成がなされるものと思われる。

メインチェーンのプロトコル

どのブロックチェーンがメインチェーン(最も長いブロックチェーン)となるかを決定するプロトコルは、コイン年数の消費によって切り替えられる。ブロック中の各トランザクションにおいて、コイン年数の消費量がブロックのスコア、点数に結びついている。つまり、最も多くのコイン年数を消費したブロックチェーンが、メインチェーンとして選ばれるのである。

これはBitcoinのメインチェーンのプロトコルにおけるproof-of-workの利用法と異なっている。Bitcoinにおいては、ブロックチェーンの仕事量がメインチェーンを決めるのである。

このデザインは、ネットワークの採掘能力の少なくとも51%は信頼できるノードが制御していなければならないという、Bitcoinの51%攻撃のリスクを軽減している。まず、圧倒的なコイン保有量を実現するコストは、圧倒的な採掘能力を獲得するよりも高く、それゆえ、攻撃にかかるコストも高い。また、攻撃者のコイン年数は攻撃の間消費されるので、攻撃者は、トランザクションがメインチェーンに継続して組み込まれるのを阻害することがより困難になるのである。

チェックポイント:取引記録の保護

メインチェーンの決定にコイン年数の消費量を用いる欠点は、過去のブロックチェーン全体に対する攻撃が容易になるということである。Bitcoinは、過去の取引記録に対する攻撃には比較的強いものの、2010年、Nakamoto氏は、ブロックチェーンの記録をより強固なものにするため、チェックポイントを導入した。チェックポイントは、それより過去のブロックチェーンに対する変更を防ぐことになる。

もう一つの不安は、二重使用問題のリスクが高いことである。攻撃者は、一定量のコイン年数を蓄積すればブロックチェーンの再構成ができるのである。このようなシステム下で実用化するために、我々は、集権的にブロードキャストされる新たな形のチェックポイントを導入することにした。1日に数回というような、より短い間隔でブロックチェーンを固定化し、取引を確固たるものにする。この新たなタイプのチェックポイントは、Bitcoinの警告システム(alert system)に近い。

Laurie(2011年)は、Bitcoinは、チェックポイントが分散化されていないという分散合意問題を解決していないと主張した。我々は、分散化されているチェックポイントのプロトコルをデザインしようとしたが、ネットワーク分割攻撃に対する耐性が低いことに気が付いた。チェックポイントをブロードキャストする仕組みは非分散型の形ではあるが、解決方法が見つかるまでは、許容することにした。

集権的にチェックポイントをブロードキャストする理由には、他にも技術的な問題がある。DoS攻撃を防ぐために、proof-of-stakeブロックが各ノードのローカルデータベース(ブロックツリー)に組み込まれる前に、coinstakeのkernelは認証されなければならない。Bitcoinのノードのデータモデル(特にトランザクションインデックス)により、coinstakeのkernelの接続の認証をすべてのノードが確実にできるように、ブロックツリーにブロックを組み込む前に、チェックポイント生成の期限が必要となる。このような実用化への考察のために、我々はノードのデータモデルを改変するのではなく、集権的なチェックポイント生成を採用することにした。我々の解決法は、コイン年数の消費量に、コイン年数が0として計算される、例えば1ヶ月のような、最小値を設定することであった。これにより、集権的なチェックポイント生成によって、1ヶ月以上前のトランザクションにすべてのノードが合意することが確実になる。つまり、coinstakeのkernelの接続の認証には最小のコイン年数が必要となる、1か月以上前の出力データを使用しなければならないということになる。

ブロック署名(Block Signatures)と重複ステークプロトコル(Duplicate Stake Protocol)

各ブロックは、攻撃者によって同じブロックがコピー、使用されるのを防ぐために、所有者によって署名されなければならない。

重複ステークプロトコルは、攻撃者が単一のproof-of-stakeを使用し、DoS攻撃により多数のブロックを生成するのを防ぐためにデザインされている。各ノードは全てのcoinstakeトランザクションの[kernel、タイムスタンプ]のペアを集める。もしも、以前に受け取ったブロックと重複するペアを含むブロックがあれば、そのブロックは、後に続くブロックが孤立ブロック(orphan block)として受け取られるまで、無視される。

エネルギー効率的

Proof-of-workのコイン生成速度が0に近づくほど、proof-of-workブロックの生成量は少なくなる。この長期的な視点においては、やる気を失った採掘者がproof-of-workブロックの採掘を止め、ネットワークにおけるエネルギー消費は著しく低下すると思われる。Bitcoinのネットワークには、エネルギー消費を維持するために取引量/手数料を高いレベルに引き上げなければならないというリスクが存在する。我々の構想においては、エネルギー消費量が0に近づいても、proof-of-stakeによってネットワークが保護される。proof-of-workにおけるエネルギー消費が0に近づいた時、暗号通貨は長期的にエネルギー効率的であると言える。

他の考察

我々は、proof-of-workの採掘速度が、ブロックの高さ(時間)ではなく、difficulty(採掘難易度)によって決定されるように変更した。採掘難易度が上昇したとき、proof-of-workのコイン生成速度は低下する。Bitcoinの階段関数とは異なり、比較的スムーズな曲線が選ばれている。これは、人工的に市場にショックが与えられるのを防ぐためである。より詳細に言えば、difficultyが16xになるごとにコイン生成量が半減するよう連続曲線が選ばれているのである。

ムーアの法則を考慮すると、インフレ的な挙動という点で、長期的にはproof-of-wokの採掘曲線はBitcoinのそれと大きく変わらない。何人かの主流経済学者がイデオロギー的な理由でBitcoinに対して行っている批判もあるが、我々は、マーケットは高いインフレ率ではなく低いインフレ率を好むという伝統的な考えに従うのが賢いと考えている。

Babaioffら(2011)は、取引手数料の効果について研究し、取引手数料は、採掘者たちの間で協力が行われない動機になっていると論じた。我々のシステムにおいては、この攻撃は深刻なものであるので、取引手数料をブロックの所有者に与えないことにした。代わりに、我々は取引手数料を破棄することにした。これにより、他の採掘者のブロックを認めないという動機がなくなる。これは、proof-of-stakeのインフレ強制力に対するデフレ強制力としても機能している。

また、我々は、ブロック膨張攻撃(block bloating attack)に対処するため、取引手数料をプロトコルレベルで実装することにした。

研究の間、我々はproof-of-work、proof-of-stakeに代わる三番目の可能性を発見した。これをproof-of-excellenceと名付けた。このシステム下では、トーナメントが定期的に開催され、トーナメントの参加者のパフォーマンスに基づいてコインが採掘される。これは現実のトーナメントの賞金をまねたものである。いずれこのゲームにおいても、人工知能が有利になったとき、同様にエネルギー消費に依存するようになると思われるが、そのような状況下でさえも合理的な形でエネルギー消費が行われる点で、我々はこの構想を興味深いと考えている。

結論

我々のデザインがマーケットに検証されれば、エネルギー消費への依存がなくなるため、proof-of-stakeのデザインはproof-of-workに対抗するP2P暗号通貨の形式になり得ると思われる。これによって、同等のセキュリティレベルを確保した上で、低いインフレ率/低い取引手数料を達成できるのである。

謝辞

様々なネットワーク/フォーク関連の研究やテストにご協力いただいたRichard Smith氏に深く感謝致します。

本プロジェクトを行うきっかけとなった、素晴らしい先駆的な研究を行ったSatoshi Nakamoto氏やBitcoin開発者たちに感謝致します。

参考文献

Babaioff M. et al. (2011): On Bitcoin and red balloons.

Laurie B. (2011): Decentralised currencies are probably impossible (but let’s at least make them efficient). (http://www.links.org/files/decentralised-currencies.pdf)

Nakamoto S. (2008): Bitcoin: A peer-to-peer electronic cash system.

(http://www.bitcoin.org/bitcoin.pdf)

最終更新日: 2015年12月12日

コメント欄

ゲスト(匿名)としての投稿の場合は、任意のメールアドレス(非公開、123@456.com等ランダムな文字列でも可)の入力も可能です。SNS等を利用してログインした場合には、自分の投稿を編集することができます。

現在、情報提供のコメントや間違いのご指摘コメントに対して独自トークンをお送りする実験企画を実施中です。企画に参加したい場合は、コメントの最後に送付を希望するCounterpartyなどのアドレスを書いてください。(プライバシー保護のため送付後にコメント内のアドレスは削除させていただきます。)