トークンエコノミーとITコンサルタント

旧帝大大学院卒業後、SIerからコンサルに転身した筆者が、トークンエコノミー、暗号通貨、構成技術やプロトコルについて学ぶブログになりました。最新の暗号通貨レポートの翻訳、ソースコードの解説、技術動向、週次レポート、など。特に、データ活用ビジネスの分界点・テクノロジー、資産価値を運用するテクノロジーも含めて書いていきます。

Tendermintの仕組み解説

最近cosmosがアツいとのことだったので、仕組みとなるtendermintについてまとめてみる。

暗号通貨系の解説ブログは個人的な解釈や、勝手な解釈で誤って伝わっていそうなブログがたくさんありそうだったので
限りなく原文white paperに沿った解釈のもとに説明したい。

1.Tendermintが果たす役割

Tendermintは、ビサンチン将軍問題を解決するPoS(Proof of Stake)のコンセンサスアルゴリズムとしての提案と、
その仕組みを標準化したソフトウェアとしての2つの言い方をされているが、cosmosとの関連で言えば、後者である。

ABCI(Application BlockChain Interface)を実装し、複数のプログラミング言語に対応したモジュールを提供しているため、
アプリケーションを柔軟に構築することができる。


Tendermintを正しく理解するため、ブロックチェーンの仕組みをおさらいしたい。

ブロックチェーンの構成要素は、大きく分けると3つの構成要素で構成されている。

Networking: Responsible for the propagation of transactions.
トランザクションブロックチェーンネットワークに伝搬させる

Consensus: Enables validator nodes to agree on the next set of transactions to process (i.e. add blocks of transactions to the blockchain).
→各ノードから送信されてくるトランザクションデータを検証する

Application: Responsible for updating the state given a set of transactions, i.e. processing transactions
トランザクションで扱うデータ(食品データ、広告配信データ、送金データなど)をもとにしたアプリケーション

f:id:hacchan320:20180520180359j:plain

Tendermintはこのうち、「Networking」、「Consensus」の役割を担い、開発者はApplicationの開発に専念ができる。

車を自前で作ることに例えるなら、エンジンとかブレーキ制御など必要不可欠かつ、車でもつ共通な機能をTendermintが
担い、あとは荷台を積んでトラックにするか、ハンドル変えてスポーツカーにするかは使う側で作れる、という代物である。


なお、Tendermintは単なる標準プロトコルではなく、以下の特徴を強調している。

High Performance:
Tendermint Core can have a block time on the order of 1 second and can handle thousands of transactions per second.

1秒間に数千のトランザクションを処理できる。
参考までに2018年5月時点でビットコインは6〜7Tps、イーサリアムはその倍程度である。

Instant finality: A property of the Tendermint consensus algorithm is instant finality, meaning that forks are never created, as long as less than a third of the validators are malicious (byzantine). Users can be sure their transactions are finalized as soon as a block is created.
即時ファイナリティ性を持つ。
つまり、新しいトランザクションは限りなく100%確定され、その反映は即時である。
※厳密には、PoSでも確定性100%は理論上ありえず、何かしらのリスクがある、とEthereum創始者のvitalik氏は発言している。

トランザクション改ざんが行われないよう、合意形成のアルゴリズムはいくつか提示されているが
以下の手順で新しいトランザクションがチェーンに承認される。

①新しいトランザクションを生成しロックしたあと、ネットワーク上でノードから2/3以上の投票を得る
②①を満たす場合、2/3以上のノードでコミットが承認を得る

①、②を満たさない場合は次の承認タイミングでまた①からやり直しを行う。
つまり、攻撃者がネットワーク上に1/3以上存在しない限りは即時確定性を保つことができる。
(ビサンチン将軍問題耐性)

かなり大雑把な理解としては、ノードの2/3以上で作成タイミングを確認・待機した上で、同様に2/3以上のノードで即時承認をで行う。といったところ。



Security: Tendermint consensus is not only fault tolerant, it’s optimally Byzantine fault-tolerant, with accountability. If the blockchain forks, there is a way to determine liability.

チェーンがフォークしても追随性を持つ。



また、既存のEthereumネットワークと接続するアプリケーションも作成することができ、既存のフレームワークであるTruffeなどの
連携も柔軟に行える(らしい。本当かな。Truffeがコンセンサスレイヤーまで担っているのに、うまいことできるものなんかな。)





以上が、Tendermintの特徴である。



要はブロックチェーンアルゴリズムを用いたアプリケーションを構築するのであれば、コンセンサス形成となる部分の実装はいらず、
合意形成後のアプリケーションの実装を行えるので、本来やりたいことである分散型でのトークンコンセンサスの基盤は提供できる、といったところ。

ではcosmosとはなにかといえば、Tendermintが実装されているトークンをつなぐためのネットワークを提供する基盤、といったところである。
つまり、もっと乱暴な言い方をすれば「Tendermint間のプロトコルを標準化したPoSアルゴリズムブロックチェーンアプリケーションプラットフォーム」とも言えるかもしれない。

長くなってしまったので、詳細は次回に回すことにする。

bitFlyer ビットコインを始めるなら安心・安全な取引所で