ビットコインの「ブロックチェーン技術」を超わかりやすく説明してみる

ビットコインのブロックチェーン技術とは何か?

ブロックチェーンは仮想通貨の中心となる技術で別名分散台帳技術とも呼ばれることもあります。ビットコインに代表される仮想通貨の大半は、取引記録の保存するにあたって、このブロックチェーン技術を使用しています。

ビットコインが有名になった事によってこのブロックチェーン技術も有名になったわけですが、ブロックチェーン技術はビットコインの取引記録の管理だけではなく、様々な電子データの保管においても応用できるとして注目されています。

ビットコインにおけるブロックチェーン技術はその名の通り、取引データをブロックに格納して、そのブロックを複数に鎖のように繋げています。

ビットコインにおいて最初に作られたブロックを「ジェネシスブロック」と呼ばれており、ここにナカモトサトシのウォレットアドレスに100万BTCが保管されています。このジェネシスブロックにある100万BTCを移動させることができた人間がビットコインの発明者であるナカモトサトシな訳ですが、2019年現在動かせた人間はいません。

ビットコインは作成したブロックを前のブロックに連結させることによって長いブロックを形成しており、ビットコインのブロックは2009年からずっと10分ごとに1つずつ作成されています。

トランザクション

「トランザクション」とは、ビットコインのブロックに格納されている取引記録のことを指します。トランザクションには、「Aさん→Bさん1BTC送った」という形の情報が記録されています。

ビットコインの取引記録は全て世界中に公開されており、ブロックチェーンエクスプローラーから確認することができます。

↓は実際のビットコインのブロックチェーンエクスプローラーに公開されているビットコインのトランザクションです。(https://www.blockchain.com/ja/btc/tx/b9291ad532b771259e26106714c6cb5d9ee4ad00202afa79417f7c80bb7ac985

このビットコインの取引は「3JqgGBpof4nwkn2cAPL4bZuothzGeNmNi6」さんから「3KsWme1CsdurEqLKMrbyuWXUQiYyaPEctv」さんに0.002BTCを送ったという取引です。0.002BTCを支払うのに0.005BTCを出してお釣りとして0.003BTCがウォレットに返されているのが確認できます。

ビットコインのトランザクション(取引記録)には全てトランザクションアドレスが付けられているので、このブロックチェーンエクスプローラーから確認することができます。

そして、このトランザクション(取引記録)が1つのブロックに沢山格納されており、そのブロックがチェーンのように繋がっていることでビットコインのコインの取引記録の正当性=価値が保証されており、ビットコインのやり取りは全てブロック内のトランザクションに保管されているので、現行の紙幣と違い取引記録を全て追跡できるようになっています。

ちなみにこの通貨のやり取りを一部見えないようにした仮想通貨が「匿名通貨」と呼ばれるものです。有名な匿名通貨にはDASHやMonero・Verge・Tokenpayなんかがあります。昔は日本でも入手できましたが現在は金融庁の規制により日本で取り扱っている取引所は存在しません。

スポンサーリンク

二重支払いとマイニング

このようにしてビットコインの膨大な取引記録(トランザクション)は、全てブロックに格納されており、そのブロックがチェーンのように繋がっていることで、ネットワークを構成しています。

ではそのビットコインの取引記録を正当なものであると誰が保証している=つまり誰が取引記録を管理しているのかという話ですが、ビットコインの場合はマイナーと呼ばれる人たちがビットコインの取引記録を相互に確認し合いながら管理しています。

例えば現在よく使われているクレジットカードなんかは、その取引をクレジットカード会社が自分のサーバーにあるデータベースで取引集中管理している訳ですが、ビットコイン場合は任意にサーバーを立てて、新しいブロックを探したり、他のマイナーが見つけたブロックを正しいものとして承認することで取引が保証されています。

またビットコインの取引台帳は各マイナーがサーバーで管理しているので、1つの台帳を改ざんしたところで、他サーバーにある台帳と照らし合わせてもとに戻すので、ビットコインのネットワークが危険にさらされることはありません。このビットコインの取引ネットワークを維持する仕組みを「PoW(Proof of Works)」と言います。

そして、この既存の取引記録を管理すると共に新しいブロックを探す作業を「マイニング」と言います。一般的なマイニングだとツルハシかなんかをもって鉱山を掘るみたいなことをイメージしがちですが、ビットコインにおけるマイニングというのはPC計算問題を解かせるようなものです。

ビットコインの場合は新しいブロックを一番早く発見した人間にブロックに格納されているビットコイン(現在だと12.5BTC)と手数料として支払われたビットコインが与えられます。

ビットコインの発行枚数は2100万枚ですが、この2100万枚のビットコインが全てマイニングされた場合でも皆がビットコインを送る際に支払う手数料がマイニング報酬として割り当てられるので、マイニング報酬が枯渇することはありません。

ブロックチェーンにおける取引の承認作業はマイナーが行う訳ですが、マイナーを承認制にしたり大量にコインを持っていると新しいコインをマイニングしやすくなるなど、コインごとにマイニングのルールの違いがあります。

そして、ビットコインの取引記録は改ざんされないのか?という話ですが、厳密にいうと改ざんすることは可能です。

まず前提として上述したようにビットコインの取引記録を保存しているブロックは各々が前後のブロックと鎖のように繋がっているため、途中のブロックの中身(取引記録)を改ざんする場合は、後ろのブロックも全て改ざんしないといけなくてはならず、これには膨大な計算量が必要になるため理論上途中のブロックの改ざんは不可能です。

しかし唯一改ざんすることができる可能性がある箇所は出来立てほやほやのブロックです。できて間もないブロックは前にチェーンが少ないので、改ざんに必要な計算量が少なくて済むからです。

こういったお金の取引記録のデータベースに対する攻撃手段として有名なのが「2重支払い(ダブルスペンディング)」という方法です。

これはデータベースにハッキングしてある通貨を使ったと記録しているを使っていないと改ざんすることで、何度でも同じ通貨を使って支払うという攻撃方法でクレジットカードや電子マネーや国際送金に対しても行われているものです。

ビットコインに関しても、直近数ブロックに関しては理論上これが可能で、大量の計算量があれば、ブロックを巻き戻すことで取引記録をなかったことにできます。このブロックの巻き戻しを「reorg/リプレイアタック」と言います。

まあビットコインの場合はマイナーが多いので頑張れば、直近1ブロックくらいは巻き戻すことができますが、マイナーが否認すればそのブロックに格納された取引記録(トランザクション)は無効と見なされるので、基本的にreorg(リプレイアタック)攻撃は成立しません。

取引所なんかでコインを受け取る際横に「1/6」みたいな数字が表示されていることがありますが、これは「取引を確定したとみなす」までに必要な認証数です。/6の場合は、6認証が必要という意味で、取引がマイナーによって保障されてから6ブロック経てば、99%そのブロックが巻き戻される(そのブロックに格納されているビットコインの取引が無効になる)ことはないだろうと判断されて、ウォレットや取引所に送ったコインが残高に反映されます。

過去にビットコインへのネットワーク攻撃で発生したブロックの巻き戻し(reorg)は直近4ブロックだったので、それ以上の認証数にしているウォレット・取引所が一般的です。

ちなみにビットコインの膨大な取引記録を一から全て自分の思う通りに改ざんするとなると、量子コンピューターレベルの処理速度が必要になりますし、もし量子コンピューターが出てきても量子暗号もあるので、ビットコインの取引記録を完全に改ざんすることは事実上不可能です。これがビットコイン・そしてブロックチェーンの不改ざん性にあると呼ばれる所以です。

ですがこれはビットコインに取引の確認に大勢のマイナーが参加しているから成立しているのであり、コインの取引を検証しているマイナーが少ないコインでは一人が大量のPCの計算量を持っていた場合、取引を大きく改ざんすることができます。

その例として有名なのが、2018年に起こったモナコインに対するネットワーク攻撃です。モナコインは取引の検証に使われる計算量(ハッシュパワー)が低かったため、大量の計算量(ハッシュ)を持つ悪意のある人間によって直近の数十ブロックの取引が改ざんされてしまいました。

なので、PoWのマイニングアルゴリズムを採用しているコインは恐らく一種類しか残らないだろうというのが最近の見方です。ですが、PoSなんかを採用していた場合は関係ないので、ネットワークを自体を維持することは可能でしょう。(使われて価格が上がるとは限りませんが・・・)

終わり

以上がビットコインに使われているブロックチェーン技術の仕組みの簡単な説明です。ビットコインに使われているブロックチェーン技術は以下のような技術を組み合わせたものであり、決して突然降って沸いてきたものではありません。

次はここでサラっと流した細かい仕組み、ハッシュ関数・電子署名・楕円曲線暗号・P2P通信・分散ハッシュテーブル・ブルームフィルタ・コンパイラ性的解析・・・etcについて解説していきたいと思います。

ちなみに、ビットコインを始めとするブロックチェーンはまだ日本語の資料も少なく、独学で勉強するには英語の参考書なんかを読む必要がありますが、現状日本だと「FLOC(フロック)ブロックチェーン大学校」というところがブロックチェーン技術の学習コースを用意しているので、ブロックチェーン技術を勉強してエンジニアになりたいという人にはオススメです。


プログラミングの独学はとても難しい


プログラミングは小学校の義務教育にも導入され始めており、これから社会人として生きていく上でプログラミングはもはや出来て当たり前、出来なれば論外というエクセルレベルの必須スキルになりつつあります。そしてそういう話を聞いて参考書なりを購入して独学でプログラミング勉強しようと思っている人も少なくないでしょう。しかしプログラミングを独学で勉強し始めようと思うものの



・「分からない箇所で詰まって挫折してしまった」

・「勉強する時間が足りない」

・「ネットの記事だと情報が断片的でよくわからない」

・「コードのエラーの原因が分からない」



という壁にぶち当たって、プログラミングの勉強を止めてしまう方が少なくありません。独学でプログラミングを勉強してる時間のほとんどはつまづいている時間です。実際僕も最初のころ独学でプログラミングを勉強していた頃はエラーの原因が分からず丸1日を不意にしてしまった・・・そんな苦い経験がありました。それで僕は一度はプログラミングの学習を諦めてしまいましたが、就活で現実を知る中で



「プログラミングを勉強して、いずれフリーランスとして自由な生き方がしたい」

「エンジニアとして若いうちから高収入を得たい」



という強い気持ちから一念発起して「侍エンジニアのwebサービスコース」に申し込み、プロのエンジニアの方に対面でマンツーマンでPythonによるWebサービス作り方とWeb技術の基本を教えてもらい、ようやくプログラミングが理解でき、今ではエンジニアとしてそこそこの暮らしができるようになりました。





侍エンジニアでは、とりあえずプログラミングやインターネットの基本を知っておきたい人から、HTML・cssなどでWebサイトやWebアプリを作ってみたい人やPythonを勉強してデータサイエンティストやAIエンジニアになりたい人まで幅広いニーズに応えた様々なコースが用意されています。



IT業界と言ってもエンジニアの仕事はプログラミング言語次第でサーバーから機械学習・ディープラーニングまで多種多様ですし、侍エンジニアの無料レッスン(カウンセリング)を受けてみて、自分のやりたいITの仕事は何なのか?を見つけるのがエンジニアへの第一歩になります。ちなみに今侍エンジニアの無料レッスンを受けると1000円分のAmazonギフト券がもらえるので、試しに受けてみるだけもお得です。


自分は半端に独学やオンラインスクールで勉強して金と時間を無駄にするくらいなら、リアルのプログラミングスクールに通ってしっかりプログラミングを勉強した方がいいと思います。ちなみに今、侍エンジニアに申し込むと、25歳以下の学生の方であれば、受講料が20%OFFになるので超お得です。


そして、プログラミングは大勢で授業を受けたり漫然とオンライン学習をするよりも自分が分からない箇所をピンポイントでプロの講師に直接質問して、ちゃんと納得するというスタイルの方がお金は確かに少し掛かりますが、独学で学ぶよりも絶対にモノになります。


シェアする

  • このエントリーをはてなブックマークに追加

フォローする

   侍エンジニア塾       
侍エンジニアの無料体験レッスンを予約する -->