ビットコインは、最初の仮想通貨であり、匿名で投稿されたサトシナカモト論文に発して最初は面白半分で実験的に作られました。後発の暗号通貨もビットコインの技術をベースに作られているものも多いため、まずはビットコインの仕組みを理解することが、他の仮想通貨の仕組みを理解する上でも、ヒントになることが多いはずです。
仮想通貨とは「信頼できる第三者機関を介さずデジタルな通貨を流通させる仕組み」のことであると説明しました。ではビットコインではどのようにこの目的を実現しているのでしょうか?
ビットコインはP2Pネットワークで取引の全てを分散台帳と保持し、取引の整合性はネットワークのノードに承認してもらうことによって担保する方法をとっています。また、二重支払い問題の解決策として全ての取引履歴を誰でも参照できるようにする事と、その履歴を承認ごとにつなげていく仕様をブロックチェーンとしています。
ビットコインの実態はデジタル署名をつなげた台帳
ビットコインの元となるサトシナカモト論文ではコインを次のように定義している
本システムでは、コインを、デジタル署名をつなげたチェーンの形で表現する。コイ
ンを支払う側は、前回までのコインの取引内容をハッシュ化した値と、受取人の公開鍵
をハッシュ化した値とを合わせて、電子的に署名する。それをコインの最後に付け加え、
受取人に送信する。受取人は電子署名を検証することにより、そのコインを誰が所有し
ていたかという履歴を辿れる。
取引をチェーンのようにつなげていった台帳(取引履歴)がコインの実態であると言っています。ビットコインは実態のあるコインとして存在するのではなく、あなたの財布の取引履歴の残高に過ぎないという考え方です。貨幣通貨ではそれを物理的に貨幣紙幣で表現していますが、仮想通貨では表面上はただの数字です。ただし、その数字はネットワークのノードたちによって保証されてた数字で、仮に数字を改ざんしたとしてもそれを送金するときに取引検証にかけられて不正が発覚するので使えないのです。
台帳はp2Pネットワークは全てのノードで共有されている
P2Pネットワークとはpeer to peer間で直接やりとりを行う通信方式のことを言います。それに対し、従来のwebサーバーなどはクライアント・サーバー通信にあたります。つまりpeer to peerでは仲介の存在なしにやり取りができるというこです。Bitcoinでは特定の権力を持たないサービスを提供するために、このp2Pネットワークを採用することで分散台帳を実現しています。
Bitcoinでは、P2Pネットワークに任意・匿名のサーバーが参加して、台帳を運用しています。任意のサーバーが参加することで成り立っており、特定の中央サーバーなしで運用される仕組みとなっています。参加するサーバーはノードと呼ばれ、その役割は一言でいば、台帳の管理ですが、具体的には
取引の検証、拡散、マイニングと呼ばれるブロックチェーンの作成、拡散、同期となり、仮想通貨が分散台帳を運用するその仕組みそのものです。下図は一つのノードの役割を図示したもので、一つのノードの役割をみればだいたいブロックチェーンとは何かがわかります。さらに分散台帳は英語ではpublic ledgerで直訳すると公開台帳という、いつでも誰でも閲覧することができるようになっおり、実際にblockexplorer などで取引履歴を確認することができます。従来のメガバンクに行って取引履歴を目せて欲しいと言っても無理でしょうからこの点は非常に面白いですね。
最小単位は取引で、取引はチェーンになっている
取引とは残高が増減する行為で、つまり送金です。
社長Pさんから従業員Aさんに1BTCの送金をする場合、取引内容は送信元が社長Pで送信先が従業員Aさんで送信額が1BTCとなります。この取引が台帳を構成する最小単位で、この取引が連なって一枚の大きな共有された分散台帳を構築しているます。
まずは取引(Transaction)のデータ構造を見ていきましょう。
このように送信元、送信先、送信額に加え前取引への参照、送信者の公開鍵とデジタル署名で構成されています。前取引への参照は前取引全体のデータをHASH値にしたものです。取引は常に前取引を参照しているので、先端の取引から一番最初の取引まで遡ることができます。公開鍵とデジタル署名は次の取引が行われた時の検証に使われます。取引はユーザーによって作成されまずどこかのノードに通信されます。そしてノードはその取引の検証を行い、正当であれば別のノードに拡散します。それを受け取ったノードは同様の検証と拡散を行うことで瞬時にp2Pネットワーク全体にその取引が拡散され、それぞのノードの手元に正当な取引が存在することになります。
ブロックチェーンは取引をまとめたものでチェーン状になっている
ここまででBitcoinでは分散台帳を構築するためにP2Pネットワークで全体で取引データを検証・蓄積していることがわかりました。しかしこれだけではデジタルな通貨を流通させる仕組みを実現するに当たって解決しなければならない問題があります。それは二重譲渡問題です。あるノードは一つ前の取引A->取引Bは検証によって正当だとします、同時に別のノードは取引A->取引Cを検証して正当だとします。それぞれのノードは正しい役割をしていますが、取引Bと取引Cは同じ前取引を参照してしまっています。貨幣の世界で言い換えれば総額1000円所持しているAさんが先にBさんに700円払ったとします。この時Aさんの残金は300円ですね。この後、AさんがCさんに500円払ったとします。この時点で、後者のAさん->Bさんへの支払いは不正である事、現実的には不可能であることがわかります。この二重譲渡を解決するには中央集権型であれば、取引をひとまとめに管理するサーバーを一つ置いて、全ての取引を時系列に管理することで、その不整合はチェックすることできます。仮想通貨の場合の解決方法は、通貨が生まれてからの取引の全てを共通の台帳として、全てのノードで同じものを持ちましょう、というのが解決の発想です。ただし、仮想通貨の場合は分散台帳なので全てのノードが完全に同じ全取引履歴を同期することはネットワークのレイテンシの観点からも難しいですし、世界中で刻々と発生する取引トランズアクションを常に全てのノードで同期することも難しいです、そこでその都度、取引を分散台帳に追加するのではなくブロックという複数の取引をまとめた集合を一つの単位として、段階的に正式に分散台帳に追加していこう、というのがブロックチェーンの基本的なアプローチです。段階的にというのはBitcoinでは平均して約10分間ごとにブロックが生成されるように難易度調整されるように設計されています。またブロックサイズにも制限があるので極端に大きなサイズはできないようになっています。ノードはブロックにまだ取り込まれていない取引をまとめてブロックを作成し、ネットワークに承認を試み、承認成功すればマイニング報酬を受け、他のノードが先に承認成功すればそのブロックをブロックチェーンに同期することで取り込み、続いて、また新たにブロックの生成を再開する、これを繰り返していることになります。
ちなみに実際のブロックに含まれる取引数はブロックごとに前後するようですがblockchain.infoで確認できます。またブロックチェーンや取引はblockexplorer.comで確認できます。まさに公開台帳ということでが実感できると思います。
マイニングとはブロックの承認してチェーンに追加する作業
マイニングとは前述したようにノードがブロックをいち早く生成し承認してブロックチェーンに追加するとです。見事ブロックが承認されたノードには報酬としてBitcoinが支払われます。と言うよりは自分自身でブロックを生成する際に一定の報酬を自分自身に送金する取引を含めることになっています。報酬は4年後とに半減期を迎え、Bitcoinが誕生した時は50BTCが報酬とされおり以降、半減期ごとに25BTC, 12.5BTC, 6.25BTC, 3.125 BTCと半減していくことになります。最終的にはBitcoinの報酬はゼロになり、その場合はノードはマイニングによる手数料を動機とすることになるでしょう。このように報酬や手数料があることで任意のノードがネットワークに参加する動機づけが成り立っており、一定のノードが参加することでネットワークが常に稼働し、Bitcoinの分散台帳を運用しているのです。
ビットコインの実用性は低い
遅い・電力の無駄・手数料が高い
ビットコインではこのブロックの承認作業が約10分ごとに行われており、ブロックあたりの取引数はおよそ2200です。そうすると1秒あたりの取引処理能力は約3.3取引で3.3TPS(Transactions per second)となります。これはクレジットカードの取引処理の2000TPSと比べるとその性能は歴然でBTCが普及した時に送金時間が遅くて使えない、と言うようなことが発生してしますのです。これはスケーラビリティの問題でもあってbitcoinの分散台帳の仕組みでは従来の分散型システムのようにノードを増やせば性能が上がるというものではなく、あくまでノードは同じ計算処理をしているだけなので全体の処理能力が上がるわけではないのです。むしろノードが増えれば増えるほどノード間通信が多くなるということとマイニングの承認確率が下がるということが考えられます。
次に電力の消費量の問題です。ニュースで報じられたようにこのマイニングのための電力消費量が半端ではなく、アイスランドなどは一国の一般家庭が一年で消費する電力量を上回る電力をマイニングで消費しているなどのニュースがあるように深刻化しています。このまま行くと深刻な国際問題となり、POWを使った仮想通貨は、その通貨がもたらす利便性以上のコストを払う意義はどこになるのかと考えざるを得ません。
最後は手数料です。もともとBitcoinは送金手数料がただ同然に安いというのが売りだったのですが、Bitcoin自体の価値上昇に伴い高騰したときには平均送金手数料が55ドルほどにもなっていました。送金手数料は送金者で設定できるのですが、手数料を高めに設定するほど速く送金されるという特徴があります。これはマイニングするノードが取引プールの中から手数料の高い取引を優先してブロック作成をするためです。このため取引がまだ確定していない取引の中で高めの手数料を設定しておけば次のブロック作成に組み込まれるの可能性が高いので結果的に送金時間が短くなるといったことです。2018年2月の時点では平均送金手数料は3ドルほどに落ち着いてきています。手数料の増減が激しいことと少額の送金では手数料が割高という点がユーザーの観点からすると使いにくいと言わざるをえません。
このように、Bitcoinでは特に取引が混み合っている時には処理が遅くなり、さらに価値が高騰すればするほど手数料も高くなるということでユーザーにとっては使いにく側面もあるようです。さらにマイニングの電力消費が非常に高いという点は”デジタルな通貨を流通させる仕組み”としてはマイナスポイントで、これが持続可能な仕組みになるには改善が必要でしょう。
ここであげた問題点に関しては対応策も取られているので、それについてはまた別で取り上げたいと思います。
まとめ
Bitcoinでは「信頼できる第三者機関を介さずデジタルな通貨を流通させる仕組み」をP2Pネットワーク上に参加するノードがPOW形式でマイニングと呼ばれるノード間で承認された取引データを一つの大きな台帳に書き込む作業の繰り返す技術であるブロックチェーンを使い、運用されています。最初の仮想通貨だけあって基本的な技術要素であるP2Pネットワーク・ブロックチェーン・POW・暗号技術で構成されており、2018年年初時点でも、もっとも流通している仮想通貨である一方、課題も明確になっているコインでした。
参考・参照リンク
本家:https://bitcoin.org/ja/how-it-works
本家:https://bitcoin.org/en/developer-guide#block-chain-overview
ブロックサイズ https://en.bitcoin.it/wiki/Block_size_limit_controversy
ブロックチェーンの処理能力:https://knowledge.sakura.ad.jp/7332/