エンジニアから学ぶ「ビットコインのブロックチェーンの概要」

谷口耕平

ビットコインのブロックチェーンの概要について、比較的簡単に、例えば大学1年生くらいの人にもイメージ持ってもらえるように説明します。

ビットコインとは?

さて、日本では法律でビットコインは「仮想通貨」と定義されています。海外では「crypto currency」と呼ばれていて、直訳すると暗号通貨という言葉になります。

ビットコインは簡単に言うとデジタルで記録された通貨のようなものです。

ビットコインという言葉はみなさんの聞いたことがあると思いますが、もともと出てきたのはかなり古く2008年(動画中は2009年としているが2008年の誤り)にサトシ・ナカモトと名乗る人物によって論文で提案されたのが始まりです。

サトシ・ナカモトと聞くと日本人っぽい名前なので日本人なのかなと親近感を抱くかもしれませんが、実際この人物が何者かは現在分かっていません。

このサトシ・ナカモトが書いた論文は <https://bitcoin.org/bitcoin.pdf> で読むことができますのでぜひお読みいただければと思います。また日本語への翻訳もいろいろな方がされています。

さきほどビットコインはデジタル通貨のようなものと言いましたが、今(2018/11)は1ビットコインあたり約72万円(2019年6月3日現在、約94万円)で取引されています。

もう少し踏み込んだ説明をすると「ビットコインとはピュアP2Pネットワークによって実現された金融機関を通さない直接取引可能なデジタル通貨」であると言えます。直接取引ができるという部分がビットコインの特徴的なポイントになってきます。

その部分を詳しく説明していきます。

デジタル通貨とオンライン取引

まずデジタル通貨というのは紙幣や硬貨などを持たない電子的なデータとして取引される通貨のことを指します。データというと、メールを送るような感覚でビットコインも送れるのかなと思ってしまうかもしれませんが、そこまで単純な仕組みではないです。

一方、現代の一般的なオンライン取引であるクレジットカード決済や銀行振込などは、取引する双方が直接送るわけではなくて、間に一定の信用機関を置いた形で取引するということがほとんどです。

例えば一般的なオンライン取引でアリスからボブに1000円送金する場合、アリスはあらかじめ金融機関に1000円を預け、金融機関から1000円借りるという形で、ボブに送金するという仕組みになっています。

銀行振込とクレジットカード決済では多少イメージが異なりますが、基本はこのような形です。そして銀行振込でもクレジットカード決済でもそれぞれ手数料がかかります。

さらにその取引が海外送金の場合は手数料が増え、さらに時間もかかります。

もちろんこれらの一般的な取引では、その手数料がかかるその代わりに、間に信用機関が入っているので不正利用などの問題が発生したときにはその取引を取り消してもらうなどの対応をしてもらえる仕組みです。

ビットコインでの取引

これに対してビットコインで実現された直接の取引では、信用機関を介在せずに送金ができるようになっています。

たとえばアリスからボブに1ビットコイン送る場合、間に入る機関は何もなく、直接ボブに送金できる仕組みになっています。その取引の流れとしては、まず「アリスがボブに1ビットコイン送る」という取引情報がP2Pネットワークにブロードキャスト(一斉送信)されます。

P2Pネットワークとは、複数台のコンピュータが上下関係のないフラットな状態でつながっているネットワークのことであり、そのネットワークには誰でも参加することができます。

つまり、誰かが管理しているではなく、世界中のそのネットワークに参加している任意の人々によって管理されているネットワークということです。

そのネットワークの中で「マイニング」と呼ばれる計算競争を経て取引履歴を作り、それをネットワーク全体で共有しています。この話もあとで詳しく説明します。

ビットコインは手数料が無いわけではなく、マイナーへの手数料として手数料を払う必要があります。この手数料はネットワークの混み具合に影響を受けるので、日々変動します。最近は安定していて、平均で50円くらいの手数料で取引ができるようです。しかし、ネットワークが混雑しているときにはこの何倍もの手数料を払わないと取引が成立しないということも起こります。

また、送金にかかる時間はだいたい10分から1時間程度になります。10分というのはマイニングによって取引の情報がネットワークに取り込まれるまでにかかる時間です。ただし、ビットコインの場合はネットワークに取り込まれれば取引が確定するというものではなく、取り込まれてから時間が経つごとに取引の安全性が高まっていきます。

したがって、より高額の取引の場合はできるだけ長い時間待ってから確定扱いにするということもあります。そういう意味で、取引確定までにかかる時間は最短で10分、そこからは取引の重要性に応じて時間が異なりますが、1時間待てばある程度安全性が確保できるということになります。

ビットコイン取引がクレジットカード決済と比べて大きく異なるのは、不正利用などが発覚しても信用機関を介さないので取り戻すことはできないという点です。たとえば間違えてビットコインを送ってしまったり盗まれたりしても、そのコインを取り戻すことはできません。この点は「1回送ってしまったものは誰も書き換えることができない」というビットコインの利点と表裏一体であるため、切り離すことはできません。

では、実際にビットコインを送金する仕組みを詳しく説明していきます。

ビットコイン取引の流れ

先ほどと同様に「アリスがボブに1ビットコイン送る」とします。流れとしては取引情報をネットワークで共有していくことで取引が成立していきます。したがって、まずは取引情報を作る必要があります。この取引情報のことをトランザクション(Tx)と呼びます。

この場合、アリスがボブにビットコインを送るので、アリスがトランザクションを生成します。生成したトランザクションを、P2Pネットワークに参加しているアリスのノード(簡潔に説明するとパソコンのようなもの)を経由して、ビットコインのP2Pネットワークに流していきます。

P2Pネットワーク自体は世界中に張り巡らされており、ビットコインで10031ノード、イーサリアムで13153ノード(2018年11月現在)が参加しています。このトランザクションがアリスのノードを起点として全てのノードに行き渡ります。

これによってネットワーク内にトランザクションが共有されます。しかし、この状態ではまだ取引は完了していません。「ブロックチェーン」はその名の通り、ネットワーク上には取引情報の入ったブロックがチェーン上につながったものであり、取引完了のためにはトランザクションがブロックの中に取り込まれる必要があります。

そしてこのトランザクションをブロックに入れて確認する作業をマイニングと呼びます。

マイナー(マイニングをするノード)が、「アリスからボブへのトランザクション」を含むたくさんのトランザクションを集めて1つのブロックを生成します。このブロックの中身はシンプルにいうといろいろなメタデータとトランザクションのリストという構造になっています。ちなみにマイナーは自分でトランザクションを集めるので、どのトランザクションをブロックに入れるか選ぶことが可能となります。

マイナーがブロックを作ったとしてもそこで取引完了ではなく、ここからマイニングを行うことになります。世界中にたくさんのマイナーがいてそれぞれがブロックを作るのですが、ブロックチェーンというのは世界でたった一つのチェーンの連なりですので、このチェーンの先頭に追加できるのは、一つのブロック生成ラウンドにおいてたった1名です。

そこで「誰がブロックを追加するのか」を決めるためにマイニングと呼ばれる競争を行います。

このマイニングに勝利した人がブロックをP2Pネットワークに流し、世界中のノードがそのブロックを正しいブロックとして共有することで、全員が一つの正しい履歴を持つという仕組みになっています。

なぜマイニングが必要か?

マイニングについてもう少し詳しく説明していきます。

端的に説明すると、マイニングでチェーンにブロックを追加するというのは、ブロックヘッダーに対して一つのパラメータの値を変えながらハッシュ計算を繰り返し、狙ったハッシュ値を見つけることです。

ハッシュというのは何らかの入力に対して決まった値を返すような計算処理になります。この関数は入力が同じであれば常に同じアウトプットを返すという性質を持っています。したがってブロックヘッダーをもとに入力を変えながら何度も計算していくと毎回違った値が返ってくるので、それが決まった値になるまでひたすら計算をし続けます。

世界中のマイナーが一斉に計算をし、一番にその狙ったハッシュ値を見つけた人がマイニングの勝者となってブロックの生成をすることができます。さらに勝者は報酬として、新たに採掘されたコインと、トランザクションの手数料の合計を得ることができます。

このマイニングの難易度は10分程度で解ける難易度にプログラムによって調整されているため、ブロックの生成はだいたい10分に1回の間隔で行われます。

では、なぜこんな面倒な作業をしなければならないのでしょうか?

オンラインでやり取りするデジタル通貨の問題点として、二重支払い問題があります。すでに誰かに送ったコインをもう一度他の誰かに送ることです。

もしこの二重支払いができてしまったら、本当はお金が無いはずなのに何回も使えることになってしまい、そのシステムは信用できないということになってしまいます。したがってこの問題を解決できないとデジタル通貨は通貨としてきちんと機能しません。

ビットコインではこれを防ぐために、ビットコインの全ての利用者がこれまでの全ての取引の正しい履歴を持ち、それを使って誰かが使ったコインが本当に使えるコインなのかを検証できるようにしています。この正しい履歴というのが先ほどのブロックチェーンのことになります。

そして、履歴が改ざんできてしまうとそのコインが正当であるかを検証できなくなってしまうため、履歴は強い改ざん耐性を持つ必要があります。そこで改ざんを防ぐためにマイニングによってブロックの生成に計算コスト(面倒な作業)をかけることで履歴の書き換えを難しくしているのです。

先頭ブロックが作られたとして、そのブロックの内容を書き換えるためには、誰よりも早くハッシュ値を見つけなくてはならないので、マイニングを成功させるには世界中のマイナーの計算力を超える計算力をそのマイナーが持っている必要があります。

1ブロックには世界中のマイナーが10分間かけて計算するような計算力が込められているため、先頭だけではなく2個前、3個前のブロックから履歴を書き換えようとするとブロックごとに掛け合わせたような膨大な計算力が必要になります。

つまり、マイニングという作業を組み込むことによって簡単に履歴を書き換えることができないという構造を作り出しているのです。

マイニングには計算コストをかける必要があるので、コンピュータ代や電気代など、現実的にお金がかかります。しかし、先ほども説明した通りマイニングには報酬があるので、それがマイナーにマイニングを行わせるインセンティブになるのです。

マイニングは現代の採金業

マイニングは文字通り現代の採金業と例えられることがあります。もともとビットコインは金と似た性質を持つとよく言われますが、それはビットコインの総量が金と同じように有限であり、それによって希少価値が生まれているという面が大きく関係しています。またビットコインも金もマイニングによって市場に供給されていくという性質があります。

ビットコインの新規発行量(新たに採掘されるコインの量)には半減期があり、21万ブロック(だいたい4年)ごとに半減して最終的にはゼロになる予定です。現在の新規発行量は1ブロックあたり12.5ビットコインです。

この新規発行量がゼロになることによって、最終的な供給量が固定されます。新規発行量がゼロになるとマイナーの報酬は手数料だけになります。

以上、ビットコインのブロックチェーンの概要を説明しました。こちらの内容の動画は以下に掲載されておりますので合わせて確認にただければ幸いです。

→【動画で学ぶブロックチェーン】BitcoinのBlockchainの概要 – 谷口耕平氏

今後もこの連載ではブロックチェーン、仮想通貨(暗号資産)についての様々な仕組みを解説していきます。

谷口耕平

※本記事はGBECに掲載された「【動画で学ぶブロックチェーン】BitcoinのBlockchainの概要 – 谷口耕平氏」をテキスト版として再編集したものです。

◯GBECについて

GBECは「Go Blockchain Engineering Community」を略したもので、プロトコルレイヤーを含むコアな技術に関心を持ちながら、ブロックチェーンから社会的価値のあるプロダクトを生み出すことを両軸で考えることを目的にした開発者コミュニティです。

Chaintopeが取り組んできたブロックチェーン技術解説動画にHashHubとFressetsが共同で運営するエンジニアブログを加え、プロトコルレイヤーを含む先端技術に関するコンテンツを拡充していきます。また、オンラインコミュニティでの知見共有や開発イベント、ハッカソンの開催等を行い、東京だけに留まらないコミュニティ運営を行っていきます。

→GBECサイト

(テキスト版編集:設楽悠介/小俣淳平)

この記事の著者・インタビューイ

谷口耕平

株式会社chaintope ブロックチェーンエンジニア
2010年ハウインターナショナル入社後、高等教育機関向けのWebサービス開発に従事。一部サービスのデザインから開発・運用までをリード。同時に故高橋剛、当社COO村上照明らと共にエンジニア学生育成プログラム「九州アプリチャレンジ・キャラバン」を立ち上げる。 2018年より地方創生ICO支援やブロックチェーンを用いた社会関係資本に関するコンセプト研究開発の立ち上げに携わる。その中で Blockchain 技術の研究開発の重要性を感じ、2018年7月のChaintopeへの移籍後からBitcoin Coreをベースにしたブロックチェーンプロトコルレイヤーの研究開発に従事。

株式会社chaintope ブロックチェーンエンジニア
2010年ハウインターナショナル入社後、高等教育機関向けのWebサービス開発に従事。一部サービスのデザインから開発・運用までをリード。同時に故高橋剛、当社COO村上照明らと共にエンジニア学生育成プログラム「九州アプリチャレンジ・キャラバン」を立ち上げる。 2018年より地方創生ICO支援やブロックチェーンを用いた社会関係資本に関するコンセプト研究開発の立ち上げに携わる。その中で Blockchain 技術の研究開発の重要性を感じ、2018年7月のChaintopeへの移籍後からBitcoin Coreをベースにしたブロックチェーンプロトコルレイヤーの研究開発に従事。