BitcoinやEthereumなど、現在の多くの通貨がPoW(Proof of Work)を採用しているのはご存知の通りだと思います。
(もし基本的なPoWの仕組みについて知りたい人は是非、誰も教えてくれないけれど、これを読めば分かるビットコインの仕組みと可能性 | TechCrunch Japanを読んでみてください。とても分かりやすく書かれていて、私も時々読み直しています)
PoS(Proof of Stake)は、PoWの欠点をある程度解決するための仕組みとして、Peercoinで最初に採用されました。
日本人にはXPコインでお馴染みでしょうし、Ethereumも将来的にPoSに移行すると言われています。
私もXPを持っているので、鋳造をしているのですが、
「何で鋳造でハズレる時があるの?そもそもハズレって何?」
「何でCPUパワーももGPUパワーもほとんど使わずに、コンピュータの電源を付けているだけで報酬(利子?)がもらえるの?」
「PoWでマイナーが担っているトランザクションの承認はPoSでは誰がやってるの?」
「新しいブロックの追加は誰がやるの?」
など、次々と疑問が出てきました。
少しでもPoWの仕組みを知っている人は、PoSにおいてこのような疑問を持つ人は多いのではないかと思います。
しかし、PoWの情報は日本語でもたくさんあるのに、PoSについては私が知りたいと思ったところまで説明してくれているところは見当たりませんでした。
なので、自分なりに調べたことをシェアすることにしました。
私自身、仮想通貨に興味を持ち始めたばかりで、お世辞にも仮想通貨について詳しいとは言えないので、解釈が間違っている部分があるかもしれません。
間違いを見つけたり、「もっとこのことについて書いたらいいんじゃない?」ということがあったら是非教えてください。
誰が報酬を得るのか?
PoWでは新しくブロックが生成されることを、「採掘された(Mined)」と言いますが、PoSでは、「鋳造された(forgedまたはminted)」と言います。
この「鋳造」に参加したい人はまず、保有しているコインを「預託」する必要があります。
この預託のことを、ステーク(Stake)と呼びます。
ステークされるコインがどこに置かれるかは通貨の仕組みによって違うようですが、例えば、ERC20トークンであるOmiseGOではスマートコントラクトに保管されます。
これが、「鋳造に参加したかったら取引所に置いておかず、専用のウォレットアプリをインストールして、そこに自分のコインを入れておかないとならない」と言われる理由です。
PoWでは採掘に参加している人たちをマイナー(Miner)と呼びますが、PoSで鋳造に参加するためにコインを預けたこれらの人達はバリデーター(Validator)と呼ばれます。(その理由は後ほど)
PoWにおいては、マイニング作業によって正しいノンス(Nonce)を導き出した者が、新しく発行されるコインと、トランザクションの送信者が支払った手数料の両方を得ます。
それでは、マイニングが無いPoSでは、どのように参加者(バリデーター)の中から、「誰に新しいブロックをチェーンに追加させる権利を与えて、報酬を与えるか」を決めるのでしょうか?
基本的には、より多くのコインを預けた人がより多くの「新しいブロックを追加し、報酬を得る」チャンスを得るようになっています。
単純な話、300コインをステークした人のほうが100コインをステークした人よりも3倍のチャンスがあるということです。
ただ、それだと「金持ちがより金持ちになる」という問題が出てきます。
この問題を解決する(或いは緩和する)ためにいくつかの方法が考案され、実際に使用されています。
ここでは最も人気の高い2つの手法を紹介します。
Randomized block selection
この手法では、最小のハッシュ値とステークしたコインの量の値を使用して次の鋳造者を選出します。
この手法はNxtとBlackCoinで採用されています。
Coin Age based selection
この手法では、”Coin age”によって鋳造者を決定します。
Coin ageは、「ステークを始めてからの日数×ステークしているコイン量」で表されます。
XPなどのアプリなどを使っている人は見てみて欲しいのですが、以下のように”CoinDay”の数値が大体”Balance”×”Age”になっているはずです。(完全にイコールにならないのは恐らく時間も計算に入っているからです)
参加者の中から鋳造者が選出されると、その鋳造者のCoin ageはゼロにリセットされ、また次に選出されるまで一定の日数を待たなければなりません。
何日間待たなければならないかは、通貨ごとに設定が異なっています。
また、「最高で何日間(例えば90日間)の間に必ず選出される」ということも通貨ごとに決められています。
Peercoinではこの手法に、さらにランダムな値を加味して鋳造者の選出をしています。
「ハズレ」ってどういうこと?
鋳造中にアプリ上で、↓こんな感じで”Mined”になっているのに、横に”?”マークが表示されていて、報酬が貰えずがっかりした思いをした人は多いと思います。
私もよくがっかりしている一人です(笑)
“?”マークにカーソルを合わせると、”Generated but not accepted”と出ます。
これは、「抽選にハズレた」と言う意味だと説明しているサイトもありますが、「鋳造中の抽選とかハズレってどういうこと?」と私は思っていました。
これは、上記のCoin ageによる計算の結果、複数のバリデーターが選出されてしまう場合に起こります。
これらの複数のバリデーターが同時にブロックを追加しようとした場合、どれか一つだけ採用するブロックを選び、選ばれたブロックの先に新たなブロックを繋いでいかなければなりません。
この、採用されるブロックを選ぶ仕組みがまだ私には理解できていないのですが、「一番難しいハッシュのものが選択される」ということです。
そして、選ばれなかったその他のブロックが”Orphan”(孤児)と呼ばれ、”Generated but not accepted”となるわけです。
それにしても「孤児」って、なんか悲しい呼び方ですね。
誰が新規に追加されたブロックを検証するのか?
鋳造者が追加した新しいブロックを検証する方法は通貨ごとに異なるようですが、基本的には、PoWのように過半数(51%)のバリデーターの検証が完了した時点でそのブロックが正式に採用されるようです。
安全性は?51%アタックの可能性は?
PoWにおいては、システムを支配するためには全体の51%のハッシュパワーが必要であり、その攻撃は「51%アタック」と呼ばれています。
PoSでは、ステークしたコインの量が投票権の大きさになるので、51%アタックを行うためには、全コイン量の51%を保持しなければなりません。
全コイン量の過半数を買うコストは、PoWにおいて51%のハッシュパワーを得るために必要な設備を整えるコストよりもさらに高く付くため、51%アタックの実現はPoWよりさらに難しいだろうと言われています。
ちなみに先に説明した通り、PoSは多くのコインを持っている者がより多くのコインを鋳造するチャンスを得、そしてより多くの報酬を貰えるという仕組みなので、「金持ちはより金持ちになる」と言われています。
なのでPoSを続けていくと、いずれは誰かが過半数のコインを持つ日が来るだろうと予想されます。
しかし、このページ”Cointelegraphの筆者の計算によると、誰かが過半数を持つまでには1000年以上かかるようなので、当面のところは心配する必要は無いでしょう。
そして、「もし過半数の通貨量を持つ者が現れたとしても、その通貨に対して攻撃をすることは自身の持つ通貨の価値を下げることに繋がるため、攻撃をするようなことはしないだろう」というのがPoSが安全と言われるもう一つの理由です。
ここが通貨を一切持っていなくてもマイニングに参加することができるPoWと違うところです。
また、不正なブロックをチェーンに追加しようとした者にはペナルティが適用されます。
ペナルティは二種類あり、一つは、”Hard slashing”と呼ばれ、その人がステークしている全てのコインを没収します。
もう一つは”Soft slashing”で、報酬のみが没収されます。
通貨によってどちらを採用しているかは異なります。
このようペナルティを課すことが可能なのは、「PoSに参加する者はコインを預けなければならない」という基本ルールがあるためです。
報酬はどう計算されているの?
PoWの報酬は「送金手数料+新規に発行されるコイン」ですが、PoSの報酬は送金手数料のみです。
既に何度か書きましたが、多くのコインをステークしている人はより多くの報酬を貰うことができます。
ちなみに、PoSの参加者が「採掘者」ではなく、「鋳造者」または「バリデーター」と呼ばれるのは、彼らが新しいコインの採掘を行わず、ブロックの追加と検証の作業のみを行うからです。
PoWでは、マイナーを大量に集めた巨大なマイニングプールがあればその管理者が51%アタックをすることができると言われています。
現在は多くのマイナーやマイニングプールがあるので難しいかもしれませんが、将来、全てのコインが採掘され、報酬が手数料のみとなった時、その通貨に対するマイナー達の興味が薄れ、多くのマイナーが他の通貨に移った場合、それほど大きくなくてもある程度のマイニングパワーを持つグループが過半数以上の力を持つ可能性があります。
報酬が手数料のみであるPoSでは、このような問題は発生しません。
PoSの利点と問題点
利点
- 高価な機械を必要としない
- PoWのように多量の電気を食わず経済的
- 多くのコインを長い期間持つほどリターンも多くなるため、その通貨に愛着を持つ者が多くなる
- 高速なトランザクション処理(送金が速い)
問題点
- 金持ちがさらに金持ちになる
- Nothing at Stake attack
“Nothing at Stake attack”についてはまだ私は理解しきれていません。
あるページの説明によると、「何もステークせずにPoSに参加し、ブロックをチェーンを壊すことができるかもしれない。彼らは何もステークしていないので新しいブロックを追加できる可能性は無いが、システムを壊しても失うものも無い」ということです。
そもそも、コインをステークすることがPoSの参加条件なのに、なぜステークがゼロでも参加できる可能性があるのかが分かりません。
ただ、これが起きる可能性は大きくはなく、心配する必要もないだろうということです。
以上が現時点で私が理解したPoSの仕組みです。
みなさんがPoSに対する知識を深めるのに少しでも役にたったら幸いです。
参考にしたサイト:
What is Proof of Stake? – Hacker Noon
The Inevitable Failure of Proof-of-Stake Blockchains a… | News | Cointelegraph
OMG Network Validation – OmiseGO Network
Proof of Work vs Proof of Stake – One Month
A (Short) Guide to Blockchain Consensus Protocols – CoinDesk
CryptoCurrency — “Proof of Work” Vs “Proof of Stake”
Radium Core/Staking – Wikibooks, open books for an open world