Proof of Activityについて
コンセンサスアルゴリズムの比較メモの続きです。
Proof of Activity
元論文 … https://eprint.iacr.org/2014/452.pdf
マイニング報酬がなくなり、マイナーのインセンティブが手数料にだけになった後に用いるコンセンサスアルゴリズムの提案
- PoW … コインの新規発行にコスト(ハッシュパワー = 電力 = 外部の資本)を支払わなければならないので、開始時の公平性を担保できる。
- PoS … マイナーがコインを保持する必要があるので、51%攻撃が自身を傷つけることになり、系全体がよりセキュアになる。
という両者の利点を取るため、折衷案を用いる。
Casperで作ろうとしているような純粋なPoSに比べるとビットコインのブロックチェーン上で行うのに適している感じ。(shardingを導入する必要がない点など)
PoWの一番の問題は、ハードウェアはスケールメリットがあるのでどんどん集積していってしまうこと(CPUメーカーが実質IntelとAMDしかないのと同様の理由)
さらに、ビットコイン特有の問題として、手数料がマイナーの主なインセンティブになっていくにつれて「トランザクションが混雑していない状態では、ユーザーは手数料を払う必要がないので、そもそもマイニングをする動機がない」 という状態になり、したがってハッシュパワーが下がり、ネットワーク全体のセキュリティが低下する。 という状態が発生する。
したがって、ハードフォークして「一定額以上の手数料を持ったトランザクションのみを有効とする」というプロトコルに変更しなくてはならない。 なぜソフトフォークでは駄目かというと、トランザクションを受理すること自体の限界費用は無視できるほど小さいため、マイナーはどんなに少額の手数料でもブロックに含めようとしてしまい、マイナー間で コモンズの悲劇が発生するため。
また、さらに大きな問題として、マイナーが手数料の大きいトランザクションをブロードキャストせず、自分のところにのみとどめておく可能性が高い。
これは以前にも述べた「P2Pノードを立てるモチベーションがない」問題とあいまって、手数料を高くしてもなかなか承認されない状況を引き起こす(ついでにいうと、それがさらなる手数料の増加をもたらすかもしれない)。
PoAでは、PoSやPoIと同様、ASICを持たなくてもフルノードを立てるメリットが有る。これにより、ついでにネットワークの過疎化による分断が起きる可能性も低くなる。
フルノードを増やす試みの解決策としてはP2Poolというものもある。これは、ビットコインと同様のブロックチェーンで、ただしdifficultyだけが低いチェーン(sharechainと呼ばれる)をマイニングし、実際にビットコインのブロックチェーンでの当たりが出た場合は山分けをするというもの。 個人でマイニングしてもそこそこの利益が得られるので「make mining fun again」ということらしい。
P2Pネットワークの過疎化を防ぐという意味では多少のメリットがあるが、それでもマイニングにはある程度の準備が必要なので、誰もが行うわけではない。
手順
- マイナーはdifficultyを満たすハッシュ値を作成してブロックをブロードキャストする。ただし、トランザクションを含まない空ブロックである。
- そのブロックヘッダのハッシュを擬似乱数として扱い、一定の何らかの方法で$N$人のStake Holderを決定する。ここでは「何らかの方法」を以下の2つとする。
- 全ノードがこのブロックの正当性を検証し、自分が$N-1$人のStake holderの内の一人であれば署名してブロードキャストする。(帯域を圧迫しそう…と思ったが空ブロックだからOK)
- 自分がN人目のStake holderだった場合、好きなだけ3トランザクションを詰め込み、$N-1$個の署名と自分の署名をくっつけてブロードキャストする。
- 他のノードが検証して承認し、ブロックチェーンの先端につける。
- ブロック中のトランザクション手数料は、マイナーと$N$人の間で分けられる。
特徴
投票を行う必要が無いので、他のPoSとくらべてネットワークとブロックチェーンサイズを抑えられる(ネットワークはともかく、なぜブロックチェーンサイズを抑えられるのかよくわからない…)
$N$の数が多いほどマイナーに対してstake holderが優位になるが、帯域の使用量も増える。
「積極的に参加しているStake holder(=P2Pノード)の数が多い場合は、$N$を増やす」という形にすることもできなくはないが、プロトコルの複雑さと、セキュアであることを保証するために考慮しなくはならないことが増える。 論文の著者は$N=3$で固定することを提案している。
報酬だけでなく、罰則も与えることができる。つまり$N$に選ばれた場合、署名を提出するか、罰金を支払わなくてはならない。という形にもできる。 これは常にノードが稼働していなくては罰金を取られていくということを意味するので、Casperで検討しているように、承認者をbonded validatorに限定しない限り、一箇所にStakeが集まるというリスクが有る。
(PoSやPoIのように)Stake holderは委任することができる。 NEMの重要度委任トランザクションとの相違点は委任先が委任されたStake(=satoshi)を使用する権利がある点にある。ただし使用量は制限されており、かつ支払いに当たっては一定期間待つ必要があり、委任元の秘密鍵保持者はその間に取り消すことができる。
(NEMのように支払い権利を一切渡さなければ良いのでは?誰か教えてください … )
一見して「fungibilityが手に入らない」というデメリットが有る。