前提
ブロックチェーンネットワークは1箇所もしくは1つの団体で管理されているのではなく、複数のノード(コンピュータ)が参加することによって管理されている。
ネットワーク内で起こっていること
ネットワーク内である一定のトランザクションの量が溜まったら、それらを一塊(ブロック)としてその前に作成されたブロックと結びつけようとする。その際に複数のマイナー(マイニングをする人)によるマイニング(ある計算問題を解き、解を見つける作業)によってそのブロックが正しいものであることが証明される。
なぜコンセンサス・アルゴリズムが必要なのか?
通常マイナーたちは同じトランザクションの記録や計算処理を行っているため、マイナーごとの処理の結果は全く同じになるはず。しかし、実際には多少の計算ミスや、悪意のあるノードがトランザクション内容を都合の良いように書き換え、全員の答えが一致しない場合がある。
⇒ そのような最終的なトランザクションの処理の結果がマイナーごとに異なった場合に、どのマイナーの結果を正しいと処理をするかを決める必要があるから。
単語の意味
consensus = 「意見の一致、総意」の意味。
代表的なアルゴリズム
-
PoW (Proof of Work)
最も早く計算処理を行なったマイナーの答えを正しいものとする。よって、計算処理の速度が求められるため、必然的にマシンパワーを向上させる必要がある。51%攻撃を仕掛けられる可能性がある。
-
PoS (Proof of Stake)
コインを持っている割合(Stake)で、報酬獲得率を決める。マイニングではなく、フォージングと呼ばれている。PoWの欠点を突いた51%攻撃を再現する場合、発行数の51%を保有する必要があるため不正は困難。仮想通貨の保有数によってブロック生成者を決定するため、出来高を下げてしまうデメリットがある。
-
PoI (Proof of Importance)
保有量と取引回数、そして取引量に応じて報酬をもらうことができる。主にネムで採用されているコンセンサス・アルゴリズム。マイニングではなく、ハーベストと呼ばれている。取引回数も考慮に入れることによって、出来高が下がらない仕組みになっている。
-
PoC (Proof of Consensus)
権限を与えられた特定のノードがブロックの生成を行うことができる。ノードが不特定多数ではないので51%攻撃は発生しないが、非中央集権性が損なわれている。
アルゴリズム名 | 主な採用仮想通貨 | 特徴 |
---|---|---|
PoW | ビットコイン | 取引情報の計算を行う演算力に応じてブロック生成者を決定 |
PoS | イーサリアム | 仮想通貨の保有量に応じてブロック生成者を決定 |
PoI | ネム | 仮想通貨の保有量・取引数・取引量に応じてブロック生成者を決定 |
PoC | リップル | 信用の高い企業など特定のノードがブロック生成者となる |
PoWの具体的に行なっていること
マイニング
- 前のブロックのハッシュ値とトランザクション内容とチャレンジ値(最終的にnonceと言われる問題の解)をブロックにしてハッシュ値を生成する。
- ハッシュ値の先頭がディフィカルティ(この計算問題の難易度)で決められた数の分だけ0が出てくるまでチャレンジ値を変更していく。
- 期待されるハッシュ値が見つかった場合、その時のチャレンジ値がnonceとなりブロックが生成される。
トランザクション内容が改ざんをされてなく同じならば、どのマイナーが計算しても同じnonceが出てくるため、これを使って合意(コンセンサス)を取ることができる。
最後に
Verooは、Blockchain技術を活用した「想いの巡るグルメSNSアプリ」です。食に対する熱量、例えばラーメンがめちゃくちゃ好きで年間400杯食べているとか、変態的に具材にこだわった中華料理を作っているなどのような、今まで直接お金にはならなかった食に対する情熱や熱量、その裏側にある想いがトークンを使うことで巡る世界。自分のラーメンに費やす熱量がコミュニティに承認される。自分がほんとにいいと思って作った食べ物がコミュニティで広まる。Verooは単なるSNSアプリではなく、クリエイターたちの想いが紡がれるソーシャルグルメアプリです。