ステーキングコイン概要
EOS、Dash等。デリゲートとは?
はじめに
Bitcoinが2009年に誕生して以来、世界中の技術者は様々な独自の暗号資産を開発してきました。それらは違った仕組みのコンセンサスアルゴリズムを持っていたり、開発のプラットフォームとして利用されたりと大きな多様性を持って成長してきました。
近年、EthereumのProof of Stake移行の発表などでステーキングに関する注目も高まり、発表されている多くの暗号資産がPoS等のコンセンサスアルゴリズムを利用したものになってきています。今回はステーキングコインと呼ばれるコインの中からいくつか紹介し、解説を加えていきます。
ステーキングが利用されるPoS
ステーキング: Staking とはコインの保有量に比例してブロックの生成、承認の権利を得る仕組み、またはそれを利用したコンセンサスアルゴリズムの総称です。そもそもStakeという言葉が賭け金などの意味を示すように、保有するコインをブロックチェーン上にステークする(賭けておく)事で次ブロックの生成権がランダムで付与される仕組みであり、保有量や保有日数によってこれらの確率が高くなり、報酬を得やすくなります。これらはBitcoinなどに利用されるPoWと比較される事が多く、計算量による証明に対して、資産量による証明であると言えます。
PoWに対して言及されていた問題、マイニングによる電力の過剰消費や、膨大なコスト、スケーラビリティなどを解決する糸口になる一方、PoSならではの問題点もあり、各暗号資産によって工夫がこなされています。以下では簡単にメリットとデメリットを確認していきます。
メリット
・スケーラビリティの向上。PoSではブロックの検証が計算によるものではなく、生成者はコインの保有量に依存するため、検証にかかる時間の削減が期待できます。これにより、トランザクション処理時間が削減され、スケーラビリティの向上につながります。
・電力の消費量削減。PoWと異なり、そもそもブロック生成にコンピュータ資源を大量に利用しないため、電力の無駄な利用を避けることができます。
・51%攻撃に強い。チェーン自体をコントロールするには全流通量の過半数以上を保有している必要があり、自身の攻撃に際し、膨大なコストがかかってしまう点。攻撃によって波及するであろう価値の下落など、攻撃者にとってメリットが少ない他、非常に難しいものとなっています。PoWの場合、マイナーなコインであればあるほど、参加するマイニングノードの量も少ないため、大きな計算資源を保有していれば51%以上の計算量を確保する可能性がないわけではありません。集約が困難であることは上記のメリットを生みます。
デメリット
・コインの流動性が失われる。コインの保有量に依存するということは、コインをできるだけ蓄えておく方がメリットが大きいということになります。これにより、コインの利用が減ってしまう可能性をはらんでいますが、そもそも暗号資産と呼ばれるようになった今、資産のように蓄えるようになったのは自然な流れかもしれません。
コインによってはこの問題に対策を講じているものもあり、Proof of Stake Volocityなどの古いコインの価値を下げるコンセンサスも存在します。
https://www.reddcoin.com/papers/PoSV_FAQ.pdf
・Nothing at Stake問題の発生。これはフォークが起こった際に長いチェーンを優先するというインセンティブが働かなくなることによる障害です。PoWではブロック生成に多額のコストがかかります。これにより、長いチェーンが優先されるブロックチェーンにおいて、間違ったチェーンのブロックを生成することはマシンコストの無駄であり、この問題は発生しにくいです。しかし、ブロック生成自体が低コストで行えるPoSにおいてはブロックの承認をすればするほど報酬が得られるため、極端に言えば、どのトランザクションを承認しようが、ブロック生成者には関係がありません。フォークをそのまま伸ばしてしまう可能性は十分にあり、大きな問題です。
一部からはNothing at Stakeは起こり得ないのではないか、等の指摘も出ていますが、リスクであることには変わりないでしょう。
http://bytemaster.github.io/article/2015/01/08/Nothing-at-Stake-Nothing-to-Fear/
ステーキングコインが形成するエコシステム
ステーキングコインが普及することにより、形成されるエコシステムはどのようなものでしょうか?
PoWによるエコシステムではPoW用のASICの開発により個人によるマイニングはほぼ不可能で、巨大マシンパワーを有する企業やマイニングプールによる寡占が起こっています。
下記写真 ハッシュレート予想 直近24時間https://www.blockchain.com/ja/pools?timespan=24hours
この構造が形成するエコシステムが非常に限定的なものに対し、PoSではステーキングによって年利報酬を得る者、ブロック生成により報酬を得る者、コインをデリゲートして一部報酬を得る者など、報酬を得る方法の多様化が起こっています。さらに、ステーキング関連サービスの登場や、デリゲートによるバリデータの民主化などが一部コインでは起こり、より複雑なエコシステムが構築されつつあると言っても良いでしょう。以下ではステーキングコインの活用例とともにEOSとDashについての仕組みを解説します。
ステーキングコイン活用例
ステーキングコインの時価総額は以下のリンクより確認することができます。https://public.flourish.studio/visualisation/456005/
現在、多くのステーキングコインが開発され、それぞれが独自のコンセンサスアルゴリズムをもち、発展を遂げています。代表的なものは上記の写真に挙げた様にDPoSを持つEOSや、SCPと呼ばれる、RippleのもつXRP Ledgerアルゴリズムをベースに作られたStellarなど、開発者がそれぞれの思想を持って開発が進んでいます。ここでは時価総額1位のEOSと4位のDashについての説明を加えていきます。
EOSとは
EOSはDelegated Proof of Stakeというコンセンサスアルゴリズムを採用しているスマートコントラクトプラットフォームです。Block.oneによって2017年6月にホワイトペーパーが発表され、1年間に渡りICOが実施され、40億ドルもの資金を調達したことでも話題となりました。その後メインネットがローンチされ、現在に至ります。現時点での最新のホワイトペーパーは下記です。
https://github.com/EOSIO/Documentation/blob/master/TechnicalWhitePaper.md
EOSの持つ特徴とは
特筆すべきはトランザクションの処理スピードです。2019年1月の時点でTSP(秒間トランザクション処理数)が6,234件に到達しました。
https://twitter.com/dapp_com/status/1086083629585813504?ref_src=twsrc%5Etfw%7Ctwcamp%5Etweetembed%7Ctwterm%5E1086083629585813504&ref_url=https%3A%2F%2Fcointyo.jp%2Farticle%2F10006010
メインの他のブロックチェーンと比較するとその差は歴然です。(参考https://coinpicks.org/bitcoin/)
- Bitcoin:7 / TPS
- Ethereum : 15 / TPS
- Litecoin:56 / TPS
- Ripple:1,500 / TPS
- BEAM:17 / TPS
- EOS : 6,234 / TPS
この処理速度はEOSが採用したBFT-DPoSというコンセンサスアルゴリズムによるものです。次章ではこのアルゴリズムについて触れます。
その他の特徴として、ユーザーの手数料が掛からない事や、デプロイ済みのコントラクトの改変などが挙げられます。これらについても次章以降でホワイトペーパーを読み解きながら解説をしていきます。
BFT-DPoSというコンセンサスアルゴリズムについて
BFT-DPoS : Byzantine Fault Tolerant - Delegated Proof of Stakeはビザンチン障害に耐性を持つ、委託可能なPoSです。
EOSは21ノードのblock producerが存在し、彼らがEOSのすべてのブロックを生成します。実質的に21のノードがEOSのブロックチェーンを管理しているので、分散性を犠牲にしているとの批判もありますが、この少数のノードで合意形成を取るため、非常に高いTPSを維持することが可能になります。
そして、この21のノードは常に一定ではなく、EOSのエコシステムに参加しているすべてのトークンホルダーからの投票によって選出されます。これがDelegateです。トークンホルダーはblock producerに選出されそうなノードに自身のトークンをステークします。これが投票となり、自身の選んだblock producerがブロック生成に成功すれば、報酬を受け取ることができます。逆に選ばれなければ報酬は発生しないので、EOSのエコシステムにとって害のない、良質なノードが選出されるインセンティブが発生します。
現在の投票状況はこちらで確認することができます。
https://eostoolkit.io/vote/producers
ブロック生成の流れ
ブロック生成は0.5秒ごとに、ある任意の時間において一つのblock producerがブロック生成の権利を得ます。6ブロック生成×21ノードで126のラウンドを一つの括りとし、block producer間で合意をした順番でブロック生成が行われます。ブロック承認は21ノードのうち15ノードがブロックに署名を施すことで不可逆性を認めます。その際、”同一タイムスタンプ、同一ブロック高に存在する複数ブロックに単一ノードが署名をしない限り”という制約を設けることでビザンチン障害に耐性を持たせています。
アカウントという概念
EOSにはアカウントという概念が存在します。BitcoinやEthereumでは自身のアドレスを保持していますが、その存在は、鍵によって守られたアドレスに対応するUTXOの所有権でしかありませんでした。
しかし、EOSでは自身のアカウントを自分が定めた12文字のユニークな名前をつけ、ブロックチェーンに書き込むことでアカウントを作成することができます。これはつまり、明示的にアカウントの作成が可能で、一つの鍵のペアが一つのアドレスの所有を意味するということではないということです。
EOSで作成したアカウントは様々な権限を持っており、その権限に公開鍵と秘密鍵のペアを作成することが出来ます。例えば、Owner, Active, Postingといった権限です。これにより、階層的なアカウント構造を定義することが出来ます。これは、自身のアカウントのActiveキーを紛失したとしても、Owner鍵があれば復旧が可能だということです。Bitcoinなどでは秘密鍵を紛失したら、そのアカウントにあるトークンは2度と動かせないものになります。
ユーザー手数料に関して
ユーザーはトランザクションに手数料を払う必要はありません。これはEOSの設計志向によるものです。通常、ブロック承認者に報酬として手数料は支払われますが、EOSの場合はDApps開発者とアカウントの開設料でそれが支払われています。それぞれの場合を見る前に、EOSの計算資源について整理しましょう。
計算資源について
スマートコントラクトを動かすためにはコンピュータの計算資源を利用する必要があり、利用にはお金がかかります。(Ethereumであればガスです。) そしてEOSにおける計算資源は以下の3つがあります。
・Bandwidth and Log Storage (Disk)
・Computation and Computational Backlog (CPU)
・State Storage (RAM)
上記二つは自身のコインをステークする事で増やすことが可能です。それぞれが過去3日間にトランザクションで利用したネットワーク容量とCPU時間を示しており、制限を超えるとトランザクションが新たに発行できなくなります。即ち、多くのトランザクションを発行するためには大量のトークンをステークする必要があるという事です。
これは、手数料が無料である、という点に起因します。例えば悪意を持ったユーザーが手数料フリーをいいことに、膨大な数のトランザクションを制限なしで発行した場合、チェーンへのかなりの負荷と混乱を招きます。手数料という足枷がない分、ステーク料に応じたトランザクション量を定める事で制限をかけているのです。
また、これらの計算資源は他人からのデリゲートによっても得ることが出来ます。他人のアカウントにステークすることで受け取った他者はより多くの計算資源を得ます。
RAMはアカウント自身のデータ容量を示しています。スマートコントラクトを公開する場合にはアカウントにその情報を保存する必要があります。当然コントラクトの量が多ければ、RAM容量を多く必要とします。
手数料に話を戻しましょう。
DApps開発者側
ユーザーはDAppsを扱う時にはこれらの資源を負担しません。開発者側がある程度のトークンをステークして初めて、計算資源を利用することが出来、DAppsが運用可能になります。そしてこれらの手数料がblock producerの報酬になります。
ユーザーフィーが無料という設計は現存のサービス設計と非常に似ています。巷の多くのアプリケーションは無料で利用することが可能です。これはDappsを提供する会社にとって、新規ユーザー獲得の面から見て好都合です。
アカウント開設
アカウントは存在するだけで少量のコンピュータ資源を利用するため、開設には資源が必要になります。他のコンピュータからデリゲートを受けるか、EOS上のRAMトークンを購入する事で開設が可能です。アカウント開設に必要となる手数料もまた、block producerの報酬になります。
ステーキング、デリゲートについて
いよいよ話をまとめましょう。EOSにおいて根幹となってくるステーキングとデリゲートですが、どのような文脈で利用されるのでしょうか。
コンセンサスアルゴリズムに基づく場合
21名のblock producerを選出する際に投票権として自分のトークンをステークします。ステークした量に応じて投票権を得て、選択したblock producerがブロック生成報酬をもらうと、自身もステーク報酬を得ることが出来ます。自身の報酬を得る手段を他人に委託する。これがDPoSという文脈でのステーキングとデリゲートだと考えます。
計算資源に基づく場合
自身のアカウントにトークンをステークすると計算資源を得ることが出来ます。これはスマートコントラクトを実行する際に必要になります。ステークした分だけ、多くのトランザクションを発行することが可能です。また、自分のトークンを他人のアカウントにステーク、つまりデリゲートする事で計算資源を付与する事ができます。これが計算資源での文脈によるステーキングとデリゲートだと考えます。
Dashとは
Dashはビットコインから2014年にフォークしたコインで、Xcoinという名前でローンチ後、2015年に現在のDashという名前になりました。
X11というハッシュアルゴリズムを採用し、世界初のDAO(自律分散組織)として知られています。Dashはコンセンサスをマイニングにより形成していますが、ステーキングの要素も持ち合わせています。
現時点でのホワイトペーパーは以下になります。
https://github.com/dashpay/dash/wiki/Whitepaper
Dashの特徴とは
bitcoinとは大きく異なる点は、マスターノードの存在です。フルノードであるマスターノードは報酬を受け取れる他、ガバナンスやブロックへの署名など様々な役割を持ったノードです。
また、プライベートセンドという機能を保有しており、匿名性とペイメントを重要視したコインであるのが特徴です。以下では、それぞれの機能について解説していきます。
マスターノードについて
マスターノードは、フルノードとしてブロックチェーンネットワークの伝搬速度や状態に大きく影響するノードです。bitcoinではフルノードの数が徐々に減ってきており、40秒後でさえ、約5%のノードがブロックを受け取る事ができなくなっています。これを例えるならば、全ての情報を司る市役所の存在が減ってくると、過疎化した村で発生する事柄への対応が遅れてしまうという事です。フルノードの存在は、ブロックチェーンにつながる全てのノードの潤滑材となり得ます。
https://tik-old.ee.ethz.ch/file//49318d3f56c1d525aabf7fda78b23fc0/P2P2013_041.pdf
そこでDashでは、Dashマスターノードネットワークと呼ばれる第2層を定義し報酬を設ける事で、稼働のインセンティブを上げ、高い可用性と持続可能性を生むことを目的にしています。
マスターノードがbitcoinのフルノードと異なる点は以下の2点です。
・参加するための担保が必要になる点
・ネットワークに一定のサービスを提供すること
担保について
マスターノードとなるには、1000Dash以上のトークンの保持が必要になります。必ずしもマスターノード自身に存在する義務はありませんが、ネットワークに対して透明性を持った状態で1000Dashを保有、証明をする必要があります。ユーザーはこれらのトークンを移動または使用する事が可能ですが、その場合、マスターノードとしての機能を失います。
一定のサービスについて
マスターノードはネットワークの潤滑油となる他、いくつかの役割を持っています。インスタントセンドやプライベートセンドといったペイメントの認証もそのひとつです。また、マイナーによって生成されたブロックに署名を施す事で、ブロックの正当性を高める役割も担っています。
Dashのマイニング
DashのコンセンサスアルゴリズムはPoWです。X11と呼ばれる11種類のハッシュ関数を組み合わせたアルゴリズムで、SHA-256 と RIPEMD-160だけを利用するbitcoinに比べ、堅牢性を高めています。
ASICによるマイニングの対策としても期待されていましたが、現時点でX11用のASICが開発されており、マイナーの寡占化が進む可能性もあります。
Dashの報酬体系
フルノードの減少の主な理由が、非常に多くの労力とコストを必要とするからです。そしてフルノードの減少はネットワークの可用性の喪失につながります。そこで、Dashではマスターノードを運営する者に対するインセンティブ設計を施しました。
現時点での報酬体系は、マイナーによって生成されるブロック報酬のうち45%がマイナーに、45%がマスターノードに残りの10%がDAOの運営資金となっています。
Dashにおけるマイナーとマスターノードの関係
マイナーは通常通り、PoWとして、トランザクションの処理やブロック生成など、送受金に関わる第1層を動かしています。これに対してマスターノードはネットワークを監視する第2層として機能します。
例えば、マイナーが不適切なブロックを生成した際に承認しない権限を保有しています。
プライベートセンドとは
送受金の記録を複数のマスターノードにてミキシングするペイメントの仕組みです。従来のwebサービス等でのミキシングとは異なり、マスターノード上で行われるため、トラストレスにミキシングが可能になります。
まず、プライベートセンドを行う場合には、マスターノードへリクエストを行います。次に送金するDashを複数の単位に分解します。その際にトランザクション入力にて0.001、0.01、0.1、1、10 Dashのように分割されます。リクエストを受けたマスターノードは複数人からのリクエストを受理し次第、金額単位でのミキシングを行います。他の送信者の送受金情報が混ざったトランザクションは、ミキシングを行う回数に従って指数関数的に解読が難しくなります。ユーザーはミキシングの回数を2〜16の間で選ぶ事ができ、ミキシングの間により多くのユーザーの情報が混ざっていきます。
全てトランザクションの情報はブロックチェーン上に記載されていますが、額面と送信元送信先の情報からは、誰が誰に、どのくらいのお金を送ったかという情報が保護されています。特定可能な情報はマスターノードには送られないため、ユーザーの特定はできません。
インスタントセンドとは
bitcoinなどの通常のトランザクションの承認には制約があります。例えば、ブロックが6つ続くと不可逆性が大きく担保されますが、その担保に時間がかかります。
インスタントセンドでは第2層のマスターノードを利用して、トランザクションに高速で不可逆性を持たせる事が可能になります。インスタントセンドを利用する場合、トランザクションをマスターノードに提出します。そこで有効なトランザクションかを検証し、有効な場合はトランザクションをロックします。これで不可逆性を認めて、トランザクションの認証に必要な時間を大きく短縮する事ができます。
ステーキングに関して
Dashはステーキングコインに分類されていますが、PoSを利用したコンセンサスアルゴリズムではありません。マスターノードの運営に際し、1000Dashを保有する(ある意味でのステーク)に対して、報酬を受け取れるという事実がステーキングコインと呼ばれる所以だと考えています。
終わりに
今回はステーキングコインに着目しました。暗号通貨が暗号資産と呼ばれるようになり、ステーキングのような考え方も大きく広がりを見せつつあります。その中でいくつかのコインを詳細に見ていきました。EthereumもPoSに移行すると宣言していますが、今後の動きにも着目していきましょう。