【ブロックチェーン技術】ビットコインとイーサリアムの基礎知識

【ブロックチェーン技術】ビットコインとイーサリアムの基礎知識
本記事のテーマ
2021年、再びブロックチェーンが注目を集めています。
2017年〜2018年のバブルと異なるのは、単なる通貨ではなく、DeFi(Decentralized Finance:分散型金融)というブロックチェーン技術を活用した分散型の金融サービスが注目を集めていることです。
ブロックチェーン技術を活用すると、自律分散型(非中央集権)アプリケーションを構築することができます。ブロックチェーン技術を用いたアプリケーションのことをDApps(Decentrailzed Applications)と呼びます。
ビットコインは、ブロックチェーン技術を用いて実現された初めてのDappsです。
本記事では、今後ますます注目されるであろうブロックチェーン技術の基礎知識についてまとめたいと思います。
ブロックチェーン技術の特徴
暗号化技術
暗号化技術自体はあらゆるところで使われています。
例えば、HTTPSは、HTTP通信において認証や暗号化を行うために開発された技術です。
ブロックチェーンでは、個々のデータを暗号化し、1つのブロックにまとめて封をします。
コンセンサスアルゴリズム
暗号化されたデータをブロックにするとき、全員に確認してからブロックの封をします。
全員に確認することを「合意形成」と呼び、合意形成の方法をコンセンサスアルゴリズムと呼びます。
ビットコインで言うと、マイニング(採掘)のことです。
ピア・トゥ・ピア(P2P)
現在のインターネットは、最低限知るべきWebアプリケーションの仕組みと全体像で紹介した通り、クライアント・サーバー方式で構築されています。
クライアント・サーバー方式は、サービスを提供するサーバーと、サービスを受けるクライアントが明確に役割を分けている方式です。
一方で、ブロックチェーンは、P2P方式です。P2P方式は、サービスを提供する側がサービスを受ける側にもなる方式です。
クライアント・サーバー方式のWebサービスでは、障害が発生しサービスが使えなくなることがありますが、P2P方式では、中央サーバを介さずにデータを送受信するため、どこかで不具合が起きてもネットワーク全体が止まることはありません。
DLT(Distributed Ledger Technology:分散型台帳)
DLTは台帳を共有して分散管理する仕組みです。
どこかでデータが改ざんされたとしても、共有された全部の台帳を書き換えない限り、改ざんは不可能です。
これがブロックチェーンが改ざん不可能と言われる所以です。
ブロックチェーンの可能性
2021年現在、インターネットが完全に普及し、カーシェアリング等、モノを所有することから共有することへ価値観が変わってきています。
ブロックチェーンは、デジタル化された資産等の所有権を、インターネットを通して送る事が可能です。
また、民泊サービス等のマッチングサービスは、現在は特定の企業が間に入って取引を成立していますが、ブロックチェーンを活用したサービスを構築することで、P2Pの取引が実現できる可能性があると言われています。
ビットコインについて
冒頭でも記載しましたが、ビットコインはブロックチェーンを活用した初めてのアプリケーション(DApps)です。
個人情報をインターネット上に公開しなくとも決済が可能で、また、取引時間に制限が無く、24時間365日決済可能です。
ビットコインは、2008年にサトシナカモトという人物が論文を発表しました。
ブロックチェーン技術の基はビットコインであるため、ここでは、まず、ビットコインの技術について解説します。
ビットコインの技術
ビットコインは、取引の際に、「秘密鍵」と「公開鍵」を使って、取引の注文を暗号化します。
この時生成されるのがビットコインアドレスです。
また、全てのブロックチェーン参加者をノードと呼びます。
取引が暗号化されてネットワーク上のノードに送信されることをブロードキャストと呼びます。
各ノードは中央集権的にどこか特定のハブを介してつながっているわけではなく、P2Pで接続されます。
全てのノードから有効性の確認を受けたビットコインアドレスは、トランザクションプールという場所に溜められ、ブロック詰めされます。
ブロック詰めするためのコンセンサスアルゴリズムが、PoW(プルーフ・オブ・ワーク)と呼ばれます。
マイナーが、トランザクションプールに溜まったビットコインアドレスをマイニングし、1ブロックに約4,200件のビットコインアドレスを格納します。
マイニングするためには、非常に複雑な計算が必要です。
一番早く計算したマイナーが、ブロードキャストを行い、全ノードが承認すると、ブロックが確定します。
一番早く計算してブロック詰めを終えたマイナーに、報酬と新規発行されたビットコインが支払われます。
こうして確定したブロックとビットコインアドレスが、DLT(分散型台帳技術)を使って台帳に記録されます。
生成されたブロックは、前後のブロックとの連続性を証明できるようになっており、ブロックが連鎖していく仕組みになっていることから、ブロックチェーンと呼ばれます。
ビットコインの取引、送金機能について(UTXO)
ビットコインの送金機能としてUTXO(Unspent Transaction Output)というデータ構造があります。
これは、自分宛てに送られたコイン(Transaction Output)の内、未使用(Unspent)のものが自分のコイン残高となるデータ構造です。
ブロックチェーン上の情報は誰でも閲覧できるので、送金されたビットコインが自分しか使えないようにする仕組みが必要となります。
そこで、ビットコインでは、公開鍵暗号の技術を応用して、この仕組みを実現しています。
公開鍵暗号方式とは
公開鍵暗号方式とは、暗号化に用いる鍵と復号化(元のデータに戻すこと)に用いる鍵が異なる暗号化方式です。
暗号化と復号化の2つの鍵ペアの一方を公開鍵として公開して、もう一方を秘密鍵として自分だけが保持することで、通信を暗号化したり、電子署名を行うことが可能になります。秘密鍵は自分以外に教えてはいけない、自分だけが保持している鍵です。公開鍵は、秘密鍵から生成された鍵で、第三者に公開する鍵です。
「秘密鍵」や「公開鍵」を使った暗号技術は、かなり前から存在し、ブロックチェーン以外でも使われています。
例えば、インターネットでは、SSL暗号化通信という、対になる2つの鍵「共通鍵暗号方式」「公開鍵暗号方式」の仕組みを用いて、インターネット上で送受信される個人情報や決済情報などの大切なデータが悪意ある第三者によるなりすまし・データの盗聴・改ざんから守られています。
公開鍵暗号方式では、公開鍵を使って暗号化したデータは、秘密鍵を使わなければ復号化できません。
この秘密鍵と公開鍵を使った公開鍵暗号方式を使えば、データを復号できるのは秘密鍵を持っている人だけなので、第三者に暗号化したデータを盗まれてしまったとしても復号される心配がありません。また、復号するために必要な情報を相手に送ることなく暗号通信をすることができるため、通信傍受による鍵の流出も防ぐことができます。
ビットコインでは、この公開鍵暗号方式が用いられています。
具体的には、ビットコインの利用権利を、公開鍵を用いてロックし、ロックされたコインは自分の秘密鍵でのみしか解除することができない仕組みになっています。
そのため、取引の際には、受信者の公開鍵と一対一で対応するアドレスに対して送金すると、そのコインは受信者の秘密鍵が無ければ利用できない状態となり、また、そのコインを他の人に送信するにも秘密鍵がなければ送信できないような仕組みになっています。
この時に、ロックが解除されていない未使用のコインのことがUTXOと呼ばれ、自分が所有しているビットコインはUTXOのコインということになります。
また、取引の際に、秘密鍵を用いてデータを暗号化し電子署名を行います。暗号化したデータは公開鍵を使って複合できますので、取引が確かに本人によって行われたということが保証されます。
ブロックの連鎖(連続性)について
ブロックチェーンでは、暗号学的ハッシュ関数を用いて、ある取引データが存在する前に別のデータが存在していたという前後関係を、論理的に否定できないような仕組みになっています。
暗号学的ハッシュ関数は、ある値を入力して出力された結果から、入力された値を推定することができないような関数です。
しかし、複数の参加者がいるブロックチェーン上で、全ての参加者が最新のブロックを参照するためには、暗号学的ハッシュ関数を用いてブロックの前後関係が証明できるだけでは足りません。
P2Pのネットワークで全てのノードに最新のブロックを共有することや、過去のブロックが改ざんされることを防止する必要があります。
この問題を解決するのが、Proof of Workのマイニングとナカモトコンセンサスという考え方です。
Proof of Work(プルーフ・オブ・ワーク)とは
ビットコインのProof of Work(プルーフ・オブ・ワーク)は、先程紹介した暗号学的ハッシュ関数で出力された結果がある値以下になる入力値(target)を見つける作業です。
暗号学的ハッシュ関数で出力された結果から入力された値を推定することは困難で、入力値を総当りで計算して見つけ出すしかありません。そのために膨大な計算が必要となります。
ビットコインでは、SHA-256と呼ばれる暗号学的ハッシュ関数を2回適用するDouble SHA-256が用いられています。この関数の出力は256ビットの値を返すため、出力のパターン数は10の78乗通りとなり、膨大な数です。
ビットコインでは、この作業を全てのノードで一斉に行う仕組みになっています。
マイニング(採掘)とは
ビットコインのマイニング(採掘)とは、上記のProof of Workで新しいブロックを見つけることです。マイニングするノードのことをマイナーと呼びます。
前述したように、Proof of Workには膨大な計算が必要となりますが、ビットコインでは、全てのマイナーが一斉にマイニングを行い、平均して10分に1回で新しいブロックが生成されるようにtargetの値が自動で調整される仕組みになっています。この間隔をブロック間隔と呼びます。
また、1つのブロックは上限1MBとされています。これは、1MBのデータがP2Pネットワークで世界中のマイナーに共有されるのにおおよそ10分と見て設定されています。
これによって、10分に1回生成されたブロックが世界中のノードに共有され、また新しいブロックが生成されるという仕組みになっています。
マイニングを行ったマイナーに対しては、取引の際の手数料と、新たに発行されたビットコインが報酬として支払われます。
新たにビットコインが発行される取引をコインベースと呼びます。
マイニング報酬、ビットコインの発行上限数と半減期について
ビットコインのリリース当初、マイニングを行ったマイナーに対しては、報酬として50BTCが支払われました。
しかし、ビットコインの発行枚数は上限が21,000,000枚と決まっています。また、マイニング報酬として新規発行されるビットコインは4年に一度半減する仕組みになっています。2020年に3回目の半減期を迎え、この記事を書いている時点では6.25BTCとなっています。10分に1回新たなブロックが生成されて、その度にビットコインが新規発行されます。そして、上限の21,000,000枚に達したところでビットコインの新規発行は終わりです。2140年頃に最後のビットコインが発行されると予想されています。
一般的に、多くの人が欲しいと思う(需要が上がれば)価値(価格)が高まり、ものが世の中に行き届けば(供給が上がれば)価値(価格)が下がります。
ビットコインがリリースされたばかりの頃は需要が供給を上回り、やがて世の中の人に行き届くと供給が需要を上回るだろうという前提で、供給量の増加に伴ってマイニング報酬が半分になるという仕組みにより、新規の発行ペースを調整し、価値(価格)の維持・安定化を目指した仕組みとされています。
ナカモトコンセンサスとは
マイニングによって、10分に1回新しいブロックが生成されて世界中のノードに共有されるのですが、まれに世界中に共有される前に次の新しいブロックが生成されてしまうことがあります。すると、内容が異なる複数のブロックが存在する状態になってしまいます。
そこで、ブロックチェーンでは、ブロックの連鎖がより長く続いた分岐を正しいものとみなす、ナカモトコンセンサスという合意が採用されています。
この時、正しくないと判断されたブロックのデータは消失する訳ではなく、その後のブロックに取り込まれます。ただし、矛盾したデータがあれば、先にブロックに取り込まれたデータが正しいとみなされます。
ビットコインのブロックサイズ問題について
ビットコインは、ブロックサイズが1MBに定められており、1ブロック生成が10分程度になるように調整されています。
つまり、10分で1MBしか処理できないのです。1秒あたりに換算すると6件〜7件程度の処理能力が限界と言われています。
この取引スピードは、従来の決済システムと比べるとかなり遅く、例えば、クレジットカードのシステムは、1秒間に4,000件以上処理できる能力があります。
2013年頃、ビットコインの取引量がまだ少なかった当時は、1ブロックごとに収められたデータサイズは100~200KB程度でしたが、2015年頃から一気にビットコインの取引量が増え、処理できる量である1MBを超え始めました。
ビットコインの取引量が増え、処理能力が限界を超えてしまった結果、送金処理に長い時間がかかったり、未処理トランザクションが増えたりする問題が生じています。
マイナーは送金手数料が高い取引から優先的に処理するため、取引が混雑しているときは、送金手数料の安い取引はなかなか処理されません。
そのため、なるべく早めに送金をするために、ビットコインの送金手数料を高くする必要があります。
このブロックサイズ問題を解決するために、①ビットコインのプログラムを変更してブロックサイズ上限を大きくする方法、②ブロックサイズ上限は変えずに1取引のデータ量を小さくする方法、③取引データをブロックチェーンの外で保管する方法があります。
①については、2017年8月にビットコインから分裂して誕生したビットコインキャッシュによって、ブロックサイズが8MBと8倍になりました。
②については、ビットコインキャッシュ分裂時と同時期にビットコインに実装されたSegwitという圧縮技術で、それまでブロックに含めていた署名を取り除き、別の領域に保存することで、取引ごとのデータ容量を少なくしています。
③については、ライトニングネットワークやサイドチェーンという技術が考案されていますが、セキュリティの問題等があり、なかなか実現していません。
イーサリアムについて
ブロックチェーンや、ブロックチェーンを初めて活用したDAppsであるビットコインは、上記のような技術で実現されています。
ビットコインが誕生してから10年以上が経過しましたが、近年では様々なブロックチェーンが登場し、一般投資家だけでなく、機関投資家などからも注目を集めるようになっています。
中でも、誰でも自由にブロックチェーンアプリケーションを実装できるプラットフォームとして2015年に登場したイーサリアムは、ブロックチェーン技術活用の大きな転換点となりました。DeFi(Decentralized Finance:分散型金融)等で注目を集めています。
ここでは、イーサリアムについて解説します。
イーサリアムについて
イーサリアムは、送金や決済を目的としたものではなく、サービス事業者という中央管理者を必要としないサービスを実現することを目的として、汎用的なブロックチェーン上でアプリケーションを実行するためのプラットフォームとして開発されました。
イーサリアムは世界中のコンピュータで構成され、それぞれのコンピュータが故障しても、1台でもコンピュータが動作していればブロックチェーンが停止しません。そのため、ブロックチェーン上で動作するアプリケーションは不具合さえ無ければ常に動き続けます。
イーサリアム2.0とProof of Stakeについて
イーサリアムにはビットコイン同様に、マイニングによって通貨が発行されるProof of Workが採用されていましたが、2020年12月のイーサリアム2.0へのアップデートで、今後段階的にProof of Stakeに移行する予定です。Proof of Stakeは、マイナーの通貨保有量や保有期間に応じてマイニングの難易度を調整するコンセンサスアルゴリズムです。
Proof of Workでは、計算量に応じて報酬を受け取る仕組みであるため、計算量を競う競争になり、ブロック生成に大量の電力を消費する問題があります。Proof of Stakeによると、イーサリアムの保有量に応じて抽選で選ばれたバリデーターと呼ばれる人々がトランザクションを承認することから、取引の検証作業に複雑な計算競争がなくなるため、ブロック生成のためのエネルギーが小さくなります。また、シャーディングと呼ばれる技術の実装により、トランザクションやデータ処理をシャードチェーンと呼ばれるブロックチェーンに分散させることで、取引承認時の負荷を軽減します。イーサリアム2.0によって、事実上無制限に近い処理能力が備わるとされています。
イーサリアムの通貨、Etherとは
イーサリアムは、ブロックチェーン上でアプリケーションを実行するためのプラットフォームとして開発されましたが、Etherと呼ばれる通貨が存在します。これは、通貨として利用することもできますが、プログラムを実行するためのコストとしても利用可能です。このコストのことをGasと呼びます。
イーサリアムは、ビットコインとは異なり、発行量に上限が無いことから無限に増え続けます。イーサリアムが価値を維持しているのは、発行スピートがコントロールされていることと、プログラムを実行するための燃料として使うことができるという利用価値があるためです。
トランザクション手数料のGasとは
イーサリアムでは、全ての処理がトランザクションとなっており、ネットワークに存在するノードにトランザクションの計算を行わせるための燃料としてGasが必要となります。
トランザクションの実行の際には、Gas PriceとGas Limitを設定します。Price×Limitが実際に支払い可能と設定するGasの上限です。トランザクションの際に使われなかったGasは返却されます。一方で、Gasが不足するとトランザクションは失敗するため、十分なGasを用意することが重要です。計算量や更新する情報量が多いと、消費されるGasも多くなります。
イーサリアムのアカウント構造について
イーサリアムは、ビットコインと異なり、通貨の決済だけでなく、様々なプログラムを実行することを目的に開発されています。そのため、プログラムを実行した結果として様々な情報を保持する必要があります。イーサリアム上のプログラムはコントラクトと呼ばれますが、コントラクトもアカウントという概念で管理されています。
アカウントには、外部アカウントとコントラクトアカウントの2種類があります。外部アカウントはイーサリアムを利用するユーザーのアカウントで、アドレスと紐づく残高情報を持ちます。一方で、コントラクトアカウントは、コントラクト情報を持つアカウントで、アドレスと紐づくコード情報と残高情報を持ち、外部アカウントから作成されます。
イーサリアムではブロックサイズに制限はありませんが、イーサリアムを利用するユーザー全員の残高情報をすべてブロックに入れるとブロックサイズが肥大化してしまいます。そこで、ステートツリー(state tree:状態木)という、キーと値のペアでアカウントを表すデータを保存しておき、各ブロックにはステートツリーへの参照だけ保存します。
イーサリアムとUTXOについて
前述したとおり、ビットコインはUTXOという概念で残高を計算します。
ビットコインで自分の残高を確認するには、今まで自分が受け取ったコインの内、ロックが解除されていない未使用のコインを集計する必要がありますが、ステートツリーのような状態を管理する構造が無いため、その都度計算する必要があります。
一方で、イーサリアムでは、ステートツリーからアカウント情報を確認することができるため、その都度計算する必要がありません。送金や着金の際に、ブロックの中にトランザクションを記録して、トランザクションからアカウント情報を生成することで残高を表現します。
イーサリアムのブロック生成速度について
前述したとおり、ビットコインでは、ブロックが生成されるのに10分程度必要でした。一方、イーサリアムのブロック承認の速度は約15秒で高速です。
しかし、ビットコインのブロック生成が10分程度に設定されている理由は、ブロックサイズが1MBで世界中のノードに共有されるのに10分程度時間が必要だろうという前提でした。ブロック生成の速度が高速になると、最新のブロックが世界中に共有される前に新たなブロックが生成され、複数のブロックが同時に生成される可能性が高くなるというデメリットがあります。マイナーがせっかくマイニングしても、承認される可能性が低くなってしまうとマイニングのモチベーションが下がり、ネットワークが維持されなくなるリスクがあります。そこで、イーサリアムでは、承認されなかったブロックをマイニングしたマイナーに対しても報酬を与える方法でこの問題を解決しています。
スマートコントラクトと、プログラム実行基盤(Ethereum Virtual Machine:EVM)について
スマートコントラクトとは、ブロックチェーン上で動作する自動で実行されるプログラムです。
(スマートコントラクトには広義の考え方と狭義の考え方がありますが、ここでは狭義の考え方を基にしています。)
スマートコントラクトによって、サービス事業者が中央で管理するのではなく、非中央集権的に取引情報がブロックに書き込まれ、誰でも参照可能な透明性のある取引が可能となります。また、仲介する第三者がいなくなることで、取引コストの削減が可能となります。
イーサリアムでは、プログラムを実行する基盤として、EVM(Ethereum Virtual Machine)を備えています。
例えば、スマートコントラクトのプログラムのコードを記述した後に、EVMで実行可能な状態でイーサリアムブロックチェーンに公開されます。
これによって、スマートコントラクトのプログラムがEVM上で実行され、ステートツリーやアカウント情報を変更します。
DeFi(Decentralized Finance:分散型金融)
DeFiは、2020年に大きく注目を集めました。代表的なのは、分散型取引所(Decentralized Exchanges:DEX)と、仮想通貨を貸し借りできるレンディング、米ドルなどの法定通貨と価値を連動させたステーブルコインです。
取引所やレンディングのサービスは以前からありましたが、特定の企業が管理・運営する体制を排した非中央集権型のサービスとして、DEXではUniswap(ユニスワップ)というサービスが急成長し、レンディングではCompound(コンパウンド)というサービスが人気となりました。
その他にも、ビットコインに裏付けられたERC-20トークンであるWrapped Bitcoin(WBTC)や、選挙など将来の出来事の結果に賭けるための取引、レンディングプラットフォームに暗号資産を提供して利回りを得るイールドファーミング、DeFiアプリケーションがユーザーに無料のトークンを提供する流動性マイニングなど、様々なサービスが成長しています。
なお、イーサリアムについては、関連する下記の記事も是非ご覧ください。
【徹底解説】イーサリアム(Ethereum)
また、DeFiの動向について、下記の記事をご覧ください。
【徹底解説】DeFiの動向とイーサリアムのガス代高騰問題を解決するその他のブロックチェーン
まとめ
今回は、ブロックチェーン技術の基礎知識と、代表的なビットコインとイーサリアムについてまとめました。
今後のブロックチェーン技術の変遷やDAppsの動向に注目したいです。
-
前の記事
株式会社ツクルバ設立からIPOまで 2020.03.07
-
次の記事
【徹底解説】イーサリアム(Ethereum) 2021.03.14