今回はブロックチェーンの構造的理解ではなく、
機能面でどんな特徴があるのか?
を理解していく。
基礎的な理解については前回記事を参考にしてほしい。
例えば、銀行などでは取引情報などを
独自の管理するコンピュータで保持している。
管理するコンピュータ(≒データベース)はそれ1つだけなので、
システム全体はそのコンピュータに依存しているといえる。
ということは、コンピュータがハッキングされたり停止した場合、
システム全体が止まって中身が消滅・流出してしまう。
これが中央集権型システムだ。(オンプレでもクラウドでも関係なし)
Youtubeの規約違反していないのに動画消された!
垢バン突然食らった!
みたいなのも中央集権型システムあるあるだ。
対してブロックチェーンの場合、
こういった特定のコンピュータに依存せず、中央集権的な管理者を持たない。
ユーザーはネットワーク上でノードを実行する。
※ノード
「結び目」「集合点」「節」といった意味。
コンピュータネットワークは、点(装置)とそれを結ぶ線(伝送路)で表すことができる。 このときの「点」を「ノード」といい、コンピュータやルータ、プリンタなどがノードになる。
これが可能な理由は、
「ブロックチェーン上すべてのトランザクション履歴がノードに含まれているから」
※一部のノードにおいては、報酬を受け取るためにブロックの作成にも参加する
このように、
ユーザーがそれぞれのデータを共有して
管理する方式は「分散型台帳」とも呼ばれ
ネットワークに送信されたトランザクションは、
基本すぐにすべてのノードに伝搬される。
(ブロック追加時も同じく)
この非中央集権ネットワーク上で、
分散型台帳を支える技術が下記の項目だ。
◯P2Pネットワーク
・暗号化(ここは専門性が強すぎるので非エンジニアにもわかるように別記事で落とし込む)
◯コンセンサスアルゴリズム
ブロックチェーンではノード同士が
P2P(peer to peer)ネットワークで接続されている。
(peerとは、同等とか対等という意味)
P2Pネットワークでは、
各ノードが同じ役割を持ち、ノード間で通信が行われる。
従来のようにサーバで処理してクライアントで利用する形式ではなく、
すべてのノードがクライアントとサーバ両方の役割を担う。
P2Pは、ブロックチェーンを構成する大事な要素の一つであり、
P2Pの特徴がそのままブロックチェーンの特徴に繋がる。
その特徴については以下のとおり。
P2Pネットワークでは各ノードが対等であり、相互に通信している。
そのため、ネットワークを構成するノードが
障害や攻撃を受けて停止したとしても、
それ以外のノードが無事であればネットワークは継続可能になる。
従来のクライアントサーバネットワークで
サーバが停止した場合はこうはいかないだろう。
また、スケーラビリティについてもP2Pネットワークは優れているようだ。
※スケーラビリティ
利用者や仕事の増大に適応できる能力・度合いのこと。
電気通信やソフトウェア工学において、システムまたはネットワークまたはアルゴリズムの、持つべき望ましい特性の1つで、一種の拡張性である。
従来のクライアントサーバ形式において、
特定のサーバに負荷が集中することはない。
ノードを追加すればするほどスケールアウト可能だ。
P2Pネットワークではすべてのノードが対等な立場で
ネットワークが構成されているので、
「負荷が集中するのでハイスペックなサーバを用意する」といったことはない。
スマートフォンでも
昔の低スペックマシンでも(クライアントがあるなら)、
ノードとして参加できるような仕組みになっている。
ブロックチェーンでは一定時間内の取引を
1つのブロックにすべて記録し、
暗号化して最後尾のブロックにつなげていく。
コンセンサスアルゴリズムとは、
この「ブロックをつなげるためのコンセンサス(合意)形成を行う方法」
を指すようだ。
コンセンサスアルゴリズムはいくつも種類があり、
ここでは代表的なものを2つ紹介する。
(多分Web3.0関連で調べていると必ずでてくる)
さきほどの解説で出てきたアルゴリズムのこと。
ビットコインやEthereumなど、
現在最も多くの暗号資産で使われている。
仕様に合致したブロックのハッシュ値を探し、
そのハッシュ値をつかってブロックを接続、
発見した人に報酬(暗号資産のブロックチェーンならその暗号資産)
を支払うという内容。
※ハッシュ関数
任意のデータから別の(多くの場合は短い固定長の)値を得るための操作、 または、その様な値を得るための関数。
Wikipediaより
このコンセンサスアルゴリズムだが、
近年はマイニングによる電力消費が問題化している。
マイニングで勝つには膨大な計算能力が必要で、
消費電力も大きく、地球にやさしくない方法なのだ。
今現在は、膨大なデータを持つ
巨大サーバー(GoogleやApple)にアクセスするだけでいいのが、
データを多数の人々に委ねる分、
マイニング(データを収束させる)の
行動量(トランザクション量)が多すぎるのは大きな問題だ。
それに対する現状考えうる対処法は、
インフラ整備を待つか、上手くAWSなどを活用して、
Web2.5で進めていくかのどちらかだろう。
(その他の解決策が既にあれば、ぜひご教授願います。)
PoWの代替手段として開発され、
最近の主流となってきている手法。
この手法は、任意のルールで
「ブロックをブロックチェーンにジョイントする役割」を
特定のノードに与える。
これはバリデータとよばれる特別なノードを指す。
※バリデータ(承認者)
ブロックチェーンに記録されるデータの内容が正しいか検証するノード
例えばEthereum 2.0の場合、
マイニングするノードはバリデータとなり、
ネットワークに参加するための保証金としてイーサを支払う。
このイーサには利子がつくので、それが報酬となる設計だ。
ルールにより選択されたバリデータ
(ランダムだったり暗号資産の保有量/期間など)
がブロックを承認し、ネットワークがブロックチェーンを更新する。
また、仕様によっては、
バリデータが承認したブロックに対して
他のバリデータがそれを検証し、
一定数以上の信任を得られたらブロックチェーンを更新する、
という仕様もあるようだ。
PoSの特徴としては下記の点が挙げられる。
◯処理速度が早い
PoWの場合、決済(ブロックが承認される)までの速度は
10分から20分程度必要になっているが、
PoSならば数秒で可能となっている。
◯消費電力が少ない
PoSは、PoWに比べマイニングによる消費電力が少ない。
PoWがマイニング能力によって正しいブロックを決定するのに対し、
PoSは「対象ブロックチェーンの通貨」の保有数により決定する。
◯暗号資産の流動性が高まらない
このアルゴリズムでは、
多くの暗号資産を長期間保有することが有利になるため、
暗号資産の流動性が高まりにくい特性がある。
コンセンサスアルゴリズムは紹介したもの以外にも、
PoH(プルーフ・オブ・ヒストリー)
PoA(プルーフ・オブ・オーソリティ)
PoI(プルーフ・オブ・インポータンス)
などなどいろいろな種類があり、新しいアルゴリズムも考案されている。
詳しくはこちらなどをご確認いただくと良い。
Ethereum
2015年にリリースされた、
分散型アプリケーション(DApps)やスマート・コントラクトを
構築するためのプラットフォーム。「Ethereum」という単語は仮想通貨そのもの指しているわけではない。
Ethereumプラットフォームで使用する仮想通貨ははEther(イーサ.単位はETH)。
Dapp
分散型アプリケーション(decentralized application)のこと。
trustlessプロトコルによる分散ネットワーク上で
多数のユーザーが利用する。
Gas(ガス)
Ethereumでの取引手数料。
取引のためにトランザクション実行をしたり
スマートコントラクトのプログラム実行で発生する手数料。
Geth
Ethereumのクライアント。
参考 : Gethをインストールする
Truffle
EthereumにおけるDapp開発用フレームワーク。
スマートコントラクトのコンパイルやテストなど
必要な機能を一通り持っている。
参考 : Truffle
Truffleと一緒に用いられるツールとして
Ganasche(ローカル開発用のノードを構築)や
drizzle(スマートコントラクトにアクセスするフロントエンドを構築)
などがある。
Solidity
スマートコントラクトを使うためのオブジェクト指向の高級言語。
JavascritとかPythonを参考に開発されている。
参考 : Solidity
Open Zeppelin
OSSのEthereum Solidityライブラリ。
ERC20やERC721のベースを提供してくれる。
参考 : Open Zeppelin
Solana
パブリックブロックチェーンの1つ。
最近日本でも取り扱いが開始された。参考:Solana
PoH(プルーフ・オブ・ヒストリー)という
コンセンサスアルゴリズムを採用しており、
処理速度が速く、コストも安い。
Token(トークン)
所有権を表す抽象概念。
世間一般的には「ブロックチェーン上で発行された独自コイン」を指す。
EthereumのEtherはトークンとは呼ばない。
Ethereum上で発行されるEther以外のものをトークンと呼ぶ。
ERC20トークン
ERC20はイーサリアムブロックチェーンのトークン規格。
これはイーサリアムブロックチェーンと互換性を持つ暗号資産を作るための規格で、
テザー(USDT)とかチェーンリンク(Chainlink)は
ERC-20規格で作られた「ERC-20トークン。
めそコインもこれ。