LISKのコンセンサスアルゴリズムであるDPoSに焦点をあてます。
Liskの公式WEBサイトを参考に記事にまとめました。
DPosとは
DPoSは、Delegated Proof of Stakeの略です。
委任PoSといった訳になるでしょうか。
かんたんに言うと、投票で選ばれた101人の代表者によって、取引が承認される仕組みです。
101人の選ばれ方
投票してもらいたい人は、Liskネットワークに、「デリゲータアカウント」と呼ばれるアカウントを登録します。
このアカウント登録をした人は、ほかのLSKホルダーから、投票(VOTE)を集めることができます。
投票者のLSKの保有量が多いほど、投票の重みが増します。
ネットワーク全体で最も投票率の高い、上位101のアカウントが、アクティブなデリゲータとなります。
上位101人以外の、他のデリゲータアカウントはスタンバイ状態です。
投票は流動的なので、アクティブなデリゲータと、スタンバイ状態のデリゲータは、よく入れ替わります。
新しいブロックの承認
アクティブな101人のデリゲータが、新しいブロックを承認します。
これはフォージング(鍛造)と呼ばれます。
一個のブロックをフォージング(鍛造)すると、デリゲータは、報酬として、新規発行されたLSKを一定枚数(現在は4LSK)貰えます。さらに、取引手数料(枚数は変動あり)も貰えます。
つまり、
フォージング(鍛造)の報酬
= 固定報酬(ブロック報酬:4LSK) + 変動報酬(取引手数料)
ということです。
1個のブロックのフォージング(鍛造)にかかる時間は現在「10秒」に設定されています。
101個のブロックのフォージング(鍛造)のプロセス(約17分かかる)は、フォージングラウンド(forginf rounds)と呼ばれます。
各フォージングラウンドにおいて、各デリゲータは、それぞれ1個のブロックをフォージング(鍛造)します。
ただし、フォージング(鍛造)の順番は、ランダムです。
つまり、あるブロックをフォージング(鍛造)するデリゲータが、101人の中からランダムに選ばれ、そのデリゲータがブロックをフォージング(鍛造)したら、その後、別のデリゲータがランダムに選ばれ、次のブロックをフォージング(鍛造)します。
ひとつのフォージングラウンドが終わると、全ての取引手数料は、101人のデリゲータの間で均等に分配されます。また、フォージング(鍛造)したブロックに対する報酬(現在は4LSK)が発行されます。
ちなみに…
障害など、何らかの事情で、デリゲータが取引を承認できないときは、ブロックはフォージング(鍛造)されません。
10秒後、ランダムに選ばれた別のデリゲータが、そのブロックをフォージング(鍛造)することになります。
その場合、100人で101個のブロックをフォージング(鍛造)することになり、2個のブロックをフォージング(鍛造)するデリゲータが1人出現することになります。
そのデリゲータは、ブロック2個分の鍛造報酬と取引手数料をもらえることになります。
なお、この場合、時間が余分に10秒かかるので、新しいブロックがネットワークに表示されるまでに合計で20秒かかることになります。
以上、Liskのコンセンサスアルゴリズムについての解説でした。
みなさんの参考になれば幸いです。