[ Steem report Vol.7 ] スケーリング問題を解決するSteemのDPOSについて
日々膨大なトランザクションが発生するSteemitのようなソーシャルメディアにおいて、スケーリング問題を解決するために導入されたDPOSと呼ばれるコンセンサスアルゴリズムについて解説していきたいと思います。
◆DPOSのはじまり
Steemの創業者でもあるダニエル・ラリマーによって開発されたBitSharesで初めて導入されたコンセンサスアルゴリズムです。
https://bitshares.org/technology/delegated-proof-of-stake-consensus/
◆DPOSとは
「Delegated-Proof-of-Stake」の略称で、投票により選出された委任者によってブロック生成が遂行されるコンセンサスアルゴリズムです。この「委任者」のことを「witness」と呼びます。
ビットコインやイーサリアムで採用されるPOWではブロック生成をマイナー全員で行うため時間がかかりますが、DPOSでは少数の限られた委任者によってブロック生成が行われるため、わずかな時間でブロックの生成が行われます。
要するに、
「マイニングを全員で行うと時間がかかるので、投票で選出した少数の信頼できる人に任せて早く行う」
という仕組みです。
委任者の選出に当たってはトークン保有者の投票により選出されるため、公平かつ民主的なコンセンサスアルゴリズムと言えます。
DPOSが導入されているプロジェクト ※()内はwitnessの数
Ark(51)
BitShares(101)
EOS(21)
Steem(21)
Lisk(101)
◆SteemのDPOSの特徴
- witnessは21名
- ブロック生成タイムは3秒
- ラウンドロビン方式で交互にブロックを生成
- ハードフォークを採用するかどうかを迅速に判断可能
・witnessは21名
witnessはSteem参加者による投票にって選出されます。投票方法は直接候補者に投票する「直接投票」と、投票権を委任して代理で選んでもらう「間接投票」の2つの方法があります。20名が投票により選出され、1名は控えのWitnessからステークの重みづけに応じて持ち回りで承認作業に参加する方式をとっています。
※witnessの選出方法は前回記事Vol.5を参照ください。
投票により選出された上位20名のwitness
1 @gtg
2 @jesta
3 @roelandp
4 @timcliff
5 @good-karma
6 @ausbitbank
7 @someguy123
8 @thecryptodrive
9 @aggroed
10 @clayop
11 @smooth.
12 @lukestokes.mhth
13 @blocktrades
14 @netuoso
15 @anyx
16 @followbtcnews
17 @curie
18 @pharesim
19 @xeldal
20 @pfunk
https://steemdb.com/witnesses
こちらが実際のブロック生成の結果になります。
https://steemdb.com/blocks
直近のブロック生成状況を見てみると、ラウンド毎に承認者がランダムに参加しているのと、上位20名のwitness以外に下記アカウントがブロック生成に参加されたのがわかりますね。
@yuriks2000
@drakos
@teamsteem
@liondani
@stoodkev
Steemでは、選出されるwitnessは21名と定められ、これは人数が多すぎることで下記の問題が発生し、少なすぎても中央集権化してしまうリスクがあることから、適切な人数として21名に定義しています。
-witnessへの報酬が増しブロック生成維持コストが高まる
witnessが多くなればその分支払いう報酬も増え結果としてブロック生成維持コストが高まります。あるいは、witnessへの総支払い額に上限を決めて運用した場合、witness一人ひとりに支払い報酬が少なくなり、witnessになりたいと思う候補者がいなくなってしまいます。
-候補者一人ひとりをしっかりと評価できない
候補者が多すぎるとしっかりと一人ひとりを評価することができず、悪意を持った候補者がいても判断することができなかくなってしまう。
・ブロック生成タイムは3秒
限られた人数で証人を行うため、ブロック生成を3秒にすることができ、トランザクションが大容量にならずとも次々とブロックが生成されてゆくため、大容量のブロックサイズでなくとも大量のトランザクション処理がおこなわれる。
※ブロックサイズ(MAX)
ビットコインー1MB
Steem−0.0655MB
※ブロック生成タイム
ビットコインー600秒(10分)
Steem−3秒
・ラウンドロビン方式
ブロック生成は63秒のラウンドごとに行います。21ブロックを21名それぞれが一人ずつランダムに承認作業を行い、21名の承認作業完了したら次のラウンドに進むという流れで行われます。
分かりやすく説明された図がこちら
※参照:DPOS Consensus Algorithm - The Missing White Paper
ここでは、A、B、Cという3名のwitnessがブロック生成に選出され、ラウンドごとに3名がランダムにブロック生成に関わっているのがわかります。
そして、ここでもうひとつ抑えておきたいポイントがDPOSにおけるメインチェーンの定義は「最も長いブロックチェーン」であるという点です。
もし、選ばれた3名のwitnessのうちの1人が悪意を持っていて不正なブロックチェーンをフォークさせたとしても、「最も長いブロックチェーン」がメインチェーンと定義しているので攻撃は成功しません。どういうことかというと、悪意のあるフォークしたブロックは9秒ごとに1ブロックしか生成しませんが、もとのチェーンのブロックは9秒ごとに2ブロックを生成するため、多くブロックが生成された方がメインチェーンであることが分かります。
・ハードフォークを採用するかどうかを迅速に判断可能
新たな機能追加や仕様変更を行う際、ビットコインなどPOWのコンセンサスアルゴリズムでは、ステークホルダーの承認を得て開始する必要があり、ハードフォークには時間がかかります。しかし、Steemで採用するDPOSでは、限られた承認者によってハードフォークを採用するかどうかを決めるため、意思決定が迅速に行われます。Steemではこれまでに18回ものハードフォークに成功し、インフレ率や報酬設計などの重要な決議が迅速に行われてきました。
◆DPOSの課題点
これまでDPOSのメリットを中心にご説明してきまいたが、当然、メリットもあればデメリットも存在ます。それでは、DPOSを採用することで生じるデメリットを見ていきたいと思います。
・ネットワークの集中化
DPOSは少数のwitnessで効率的にブロックを生成する半面、分散化されていないコンセンサスアルゴリズムであるとも言えます。
通常ブロックチェーンの世界では承認者であるマイナーの不正を監視する役割として、取引記録がすべて保存されるフルノードの設置が必要になりますが、Steemのような多くのトランザクションを記録する必要のあるソーシャルメディアの場合、フルノードに格納するデータ量が膨大になるため、ハイスペックなノードを立てることのできる一部のノードに集約される傾向にあります。今はまだ、データ容量がそこまでではないため主だって問題視されていませんが、運用を重ねていくと、いずれは膨大なデータ量を格納できる一部のフルノードだけに集約され、結果としてネットワークの集中化が生じる恐れがあります。
現状のnode 分布図がこちら
https://status.steemnodes.com/
・witness投票率の低下
公平で民主的なネットワークの維持は一定の投票率が維持されて初めて機能します。
これは実社会を見てもわかる通り、投票率が低く、さらにその投票者が結託して偏った投票が行われた場合、公平で民主的なネットワークは崩壊します。
現状、witnessの選出に当たっては、直接的なインセンティブは設けれていなく、自身に与えられた投票権を放棄しているケースが少なくありません。
◆DPOSに向き不向きがある
◇向いているもの
DPoSは高レベルなスケーラビリティが必要なアプリケーションにとっては合理的なコンセンサスアルゴリズムで、大量のコメントを処理し、スムーズなゲーム動作を実現させるには最適と言えます。
具体的には
- SNS
- ゲーム
などがあげられます。
◇不向きなもの
高セキュリティを必要とする価値保存を目的としたもには理想的なコンセンサスアルゴリズムではなく、検閲耐性が求められるユースケースの場合、分散性が担保されたコンセンサスアルゴリズムの選択が望ましいと言えます。
具体的には
- デジタルゴールド
- デジタル通貨
などがあげられます。
ここまでDPOSの特徴からから課題点まで見てきましたが、お気づきの通り実社会において、大部分のアプリケーションが分散性よりもスケーラビリティの方が必要なケースが多いです。
事実、異なるブロックチェーンでトランザクション処理数を比べてみると、上位2つ個がDPOSを採用しているブロックチェーンであることがわかります。
これはあくまでオンチェーン上でのトランザクション処理状況であり、レイヤーを分けて考える必要はありますが、現状多くのアプリケーションに求められているスケーラビリティの解決策としてDPOSは有効な方法と言え、日々多くのトランザクションを処理する必要のあるSteemitのようなソーシャルメディアの運用には最適なコンセンサスアルゴリズムといえるのではないでしょうか。
□ INDEX
[ Steem report Vol.1 ] STEEM / Steemit / Steem 意外と知らない3つの違いって?
[ Steem report Vol.2 ] 意外と知らない Steem Blockchain の仕組みについて
[ Steem report Vol.3 ] Steem の報酬設計とコミュニティに与える影響ついて
[ Steem report Vol.4 ] インフレ通貨としてのSteemの価格維持設計について
[ Steem report Vol.5 ] Steemの「投票」システムについて
[ Steem report Vol.6 ] Steem経済圏を活性化させる3つのトーキング設計と活用の仕組み
===============
その他ご質問事項がありましたらTwitterでDMください〜
https://twitter.com/moromaro6
===============
いつも勉強になります!
いつもありがとうございます!参考にしていただけると嬉しいです。
You got a 26.10% upvote from @ocdb courtesy of @moromaro!
私には難しいです。頑張って勉強せねば、と思います。
コメントありがとうございます!また次回の投稿もご覧いただけると嬉しいです。