チア入門:ビットコインとどう違う? (en,ja)
はじめに
こんにちは!前回に引き続きチアの紹介をしていきたいと思います。ビットコインやブロックチェーンくらいなら聞いたことはあるけど…ぐらいの初心者を対象としています。もしサッと読んで何もわからんって思った場合は「ビットコイン入門」とか「ブロックチェーン入門」とでも検索してみてください。幸い、これくらいのトピックスなら日本語でも解説資料はいっぱいあります。
チアはブロックチェーンを使った仮想通貨
チアの基本的な構造はビットコインと似ていて、過去のブロックのデータを元に新しいブロックを作り、繋げていくブロックチェーン型です。(最近はDAGとかありますが、その類ではなく、概ね普通のチェーン、一本鎖*です。DAGを知らない人はスルーでOK。)ビットコインと同様、ブロックチェーンの中身に関してチアのネットワークに参加している全てのノード(≒パソコン)が合意しないといけないので、ブロック生成にはルールがあり、ルールに沿ってブロックを作った証明が必要となります。また、ルールの内容(難易度)を調節することで、ノードが大量にブロックを作ってしまい、合意が取れなくなる事態を阻止します。
*実は三本鎖ですが、それはまた今度のお話で!
ビットコインとPoW
ざっくり説明
では、まずビットコインの証明を見てみましょう。Proof of Work (PoW、作業量証明)と呼ばれるビットコインやその他多くの仮想通貨の証明スタイルとは、いわば「宝くじの発行競争」です:
- まずパソコンに宝くじの番号を発行させます。正規の発行方法はビットコインのルールで決まっているハッシュ関数という物を使いますので、テキトーな方法では作れません(作ったところで他のノードに偽物と判定されます)。ハッシュ関数には入力データが必要ですが、これが前のブロックのデータだったり、新たに他のノードから流れてきた取引情報だったり、ブロック作成報酬を自分に送る取引情報だったりします。パソコンが頑張ってハッシュ関数の出力を計算し、それが宝くじの番号となります。
- 次に、宝くじが当たっているかを確認します。確認は簡単で、例えば100桁の数字が発行された場合、最初のN桁の数字がゼロだったら当たり、のようなルールです。違う番号は全部はずれです(1等2等とかはありません)。Nの値は全ネットワーク上で当たりが出すぎないように、最近作られたブロックの数から決まったルールで計算されます。(ブロックの数が足りなければ当たりやすく、多ければ当たりにくく自動調整されます。)
- 当たりが出ていたらハッシュ関数に入力したデータがそのまま新しいブロックになりますので、そのデータを自分から接続している他のノード全員にばら撒きます。もし自分が一番早く当たりを出していた場合、めでたく他のノードはあなたのブロックを受理、拡散して、あなたのブロック報酬の取引が承認されるわけです。(もちろんブロックに含まれている他人の取引情報もブロックに含まれることで承認されるため、ブロックチェーンが取引台帳として機能するわけです。)外れていた場合は入力データを変更して(たくさんの宝くじを試すために「好きにいじっていい、基本無視されるデータ領域」がブロック内に確保されているので、基本的にはそのデータをいじることになります)、1からやり直しです。
- これをネットワーク上の全ノードがものすごい勢いで繰り返し、ブロック報酬を勝ち取るために頑張っているわけです。参加者が増えればさらに当たりにくく、逆に減ればブロックの作成速度を落とさないために当たりやすくなります。(具体的な難易度調整方法や調整間隔も事前にルールとして決まっています。)
難点
さて、このやり方がそこそこ安全に「分散取引台帳」を実現する方法であることは検証済みであり、だからこそPoWブロックチェーンが大多数を占めるわけですが、難点が(今回説明する中では)2つあります:
電力消費
いや、マジで電力消費がヤバい。詳しくは以下で説明しますが、現状でも世界のビットコインノード達が採掘のために消費している電力は中規模国家と同等です。宝くじを発行するのになぜこんなに電力が必要なのでしょうか?
段階1:初期の頃、パソコン(CPU)で採掘
まず単一のパソコンで考えても、ビットコイン採掘にパソコンの全能力を注ぎ込むことが可能なんです。CPUというパソコンの中核の部品がハッシュ関数の計算をするわけですが、いくら高性能なパソコンになっても、頭打ちがありません。8コアなら同時に8つずつ宝くじを発行しますし、1 GHzのCPUより2 GHzのCPUの方が約2倍の速さで発行できます。つまり、手持ちのパソコンの暇な時間は全てビットコイン採掘に使用し、常に100%負荷にしておくのがある意味正解になります。皆さんのパソコンは通常時の負荷では電力消費を抑えるために色々機能が付いていますが、ビットコイン採掘を行っている限り、パソコンは常に最大出力、最大電力消費となります。結構電気代高くなります。そして重要なのは、ビットコイン採掘は他の全ノードとの競争であるということです。自分が全ノードの1%の宝くじを発行できれば、採掘報酬の1%を長期的に獲得できることになります。よって、より速い発行方法(計算方法)が開発されれば、電力消費なんてお構いなしに速い方法をみんな求めていきます。
段階2:GPU採掘が開発される
さらにGPUの話になります。「8コア」の件で示唆しましたが、ハッシュ関数の計算というのは並列処理が可能です。よくゲーミングPCに付いてるグラボ・グラフィックスボード・GPUという拡張カード(カードという割にはガッツリ冷却ファンとか色付きLCDとか付いてますが)がありますが、画面上に綺麗な絵を表示するために開発されたこのパーツはまさに並列処理のための機械です。(画面って沢山のピクセルからできているので、単純な話、例えばフルHD、1920×1080のディスプレイなら2073600個のピクセルの色を1秒に数十〜数百回計算する機械です。)この機能を利用してGPU採掘なるものが発展しました。おかげでGPUを持っている人はさらに猛スピードでハッシュ関数を計算し、GPUも100%負荷にしておくのが正解になりました。GPUも高性能な物は専用のパソコン用電源が必要なくらいなので、電気代はさらに高くなります。
段階3:専用回路が開発される
どんどん行きます、最後にFPGAとASICです。これらは通常のパソコンではなく、みなさんが使っているCPUが汎用型コンピュータならこれらは特化型コンピュータです。FPGAはある程度フレキシブルに設定できるものの、一度に設定できる計算回路が一つだけのものです。(設定されている回路は高速に計算できます。)また、ASICは設計段階から用途が一つのみの電気回路で、パソコンのCPUよりも単一の電子回路のチップのようなものです。当然、柔軟性が全く無い代わりに超高速、かつ(CPUやGPUに比べると)超省エネを実現します。(その代わり設計・製作費用が高いです。なんせ、お家のパソコンとはもはや別のデバイスですので。)
段階3.5:産業化
ここまで来るとビットコイン採掘専用の機械を開発しているレベルですので、一般家庭ではなかなか勝負できない領域となります。また、ASICを倉庫いっぱいに詰めて、業務用電源の契約をする採掘業者も出てきて、電気の単価、及びハッシュ計算能力あたりの電力消費もより抑えられ、一般家庭では勝負にならないどころか家庭用電源の価格と採算が合わなくなります。つまり、一般家庭ではビットコイン採掘はCPUでもGPUでも赤字となってしまい、最後は業者同士の勝負となります。そして、ビットコイン採掘が黒字であり続ける限り、業者はASICの大量生産、電力の大量消費を続け、採掘報酬を巡って争うのでした。尚、業務用電源には従来の火力発電が安いため採用される傾向にあり、お金の未来を切り拓く技術と謳われている割には地球温暖化にガッツリ貢献しています。(無論、これは再生可能エネルギーの発展である程度は緩和される話ではありますが、エネルギー源がなんであろうと単純に電力消費が増加の一途を辿るのは褒められたことではありません。)
中央集権化
最初は良かったけど、実は今ではそこまで分散化できていない。上記を読んだらわかると思いますが、ビットコイン採掘は専用の回路を大量生産すること、及び業務用電源で運用コストを抑えることで大規模開発が優遇される構造になっています。分散化の要は社会の最小単位である一般家庭がいつまでも参入できる構造にあり!なので、これでは採掘業者に権力(採掘能力)が集中してしまい、少々分散化には難ありと言わざるを得ません。
チアとPoST
ざっくり説明
じゃあチアではこの課題を解決できているのでしょうか?チアで使うのはProof of Space and Proof of Time (PoS + PoT, PoST, Proof of Space and Time, Proof of Spacetime, 空間証明+時間証明、正直呼び方は統一されてないです)というシステムです。チアに参入しようとする方にとって大事なのは空間証明の方ですので、まずそちらから説明します。(基本的に時間証明に最初から関わることは無いです。)
PoS (Proof of Spaceの方)
(Proof of Spaceの方、というのはPoSは通常Proof of Stakeの略称だからです。Proof of Stakeの説明は今回は割愛します。PoSpaceと書いたりもしますし、似たコンセプトの仮想通貨はProof of Capacityと名付けたりもしています。)
ビットコインがその場で宝くじを発行する競争であることに対して、Proof of Spaceはあらかじめ宝くじを大量に発行しておいて、発行した宝くじを再利用するシステムです。この場合も、発行方法にはルールが定められております:
- まず、一度に大量に発行する必要があります。発行が終わった宝くじはパソコン上の通常のファイルとして保存されますが、その大きさは最低でも100ギガくらいは無いと有効な宝くじとして認められません。
- その結果、発行にはめちゃくちゃ時間がかかります。速いPCとSSDで6時間くらいかかります。普通のPCとSSDで8〜12時間くらいかかります。HDDしか無かったりすると丸一日以上かかることもあります。時間がかかること、重要なので覚えておいてください。
- 一度発行したら、基本的に発行をやり直す必要はありません。(例外はまた今度!多くてもせいぜい5年に一回とかです。)
- 発行した結果、ただのファイル(
なんとかかんとか.plot
)が出来上がりますので、容量が足りなくなったら1個ずつ削除できます。「.plot」のネーミングについてはまた今度で!
さて、じゃあビットコインと比較してみましょう。
ビットコインの難点を克服
電力消費
言わずもがなです。チアの電力消費は最初の宝くじ発行手順でビットコインと同等、その後はパソコンの通常業務に支障を来さないバックグラウンドプロセス(使ってない時のDropbox、LINE、Evernote等のイメージ)と同等です。
難点
ハードディスク消費
相変わらず現実にある何かしらの物理的資源を消費することで成立しています。いや、ビットコインより電力消費は(最初の発行を含めても)最悪のシナリオで数百倍、通常なら数千倍低いという試算が出ている以上(そして「ハードディスクの空き容量」なんてむしろ存在自体が資源の無駄である以上)ビットコインよりはかなりエコである事は納得いただけると思いますが、それでも資源は資源、チアがビットコインのように超値上がり展開を迎えてしまうとハードディスク戦争が起きかねません。地球の資源を空き容量の生成に浪費するのは好ましくありません。あと勉強している方から「Proof of Stakeは資源消費がゼロやん」という反論が飛んでくること確定ですが、そちらへのお返事は入門レベルじゃないのでまた今度で!
尚、チアで一番儲かるのは「既に手元にあるハードディスクの残り容量を埋めるだけの人」です。なぜなら既にそのドライブ(ディスク)を他の用途に使っており、宝くじファイルで空いている容量を埋めておくだけなら何も損も悪影響も無いからです。投資額ゼロでチアが儲かるわけです。なので、長期的に見るとチアの価格は「新しくドライブを買っても儲からない値段」、あるいは「儲かるのにかかる時間が長すぎてドライブ購入のお金を他の投資に回した方が良い程度の値段」に落ち着くのが合理的なわけです。残念ながら仮想通貨は今めっちゃ過熱状態なので、そんな値段にすぐ落ち着くとも到底思えませんが、一応チア対他の人類に有益な用途で比較した場合、有益な用途に資源を使うことが経済的にナンセンスにならないようにチアの価値はそのうち落ち着く…はず、です。