ビットコイン

12.6 ビットコインの技術的基礎知識

ビットコインの具体的なファンダメンタル分析に入る前に、説明の前提となる技術的知識について整理しておきます。

ただ、これらはデイトレーダーとしての簡潔な理解で十分です。技術者を目指すわけではなくトレードに役立てることが目的だからです。疑問に思ったことを全て調べ尽くさないと気がすまない人がいますが、デイトレーダーとして必要な技術的理解は荒っぽいもので問題ありません。トレードを通じて興味を持ったものを自分で研究するのは素晴らしいことです。ただ、それをトレード研究だと勘違いしてはなりません。それらは映画や音楽と同じように、トレード研究外の時間でやればよいことです。専門外の人間がビットコインの技術的な話を理解しようとすると切りがありません。完璧主義といえば聞こえがいいですが、どの程度のレベルでこなせば良いのかの判断を見誤っているともいえます。デイトーレーダーは限定された時間の中で大量の情報を確率的優位性を伴ったパターンとして解析していくことが求められます。厳密な正確性を犠牲とする代わりに、日々遭遇するファンダメンタル要素を適切に解釈するために必要な技術的情報を短時間で修得できるよう述べていきます。

もちろん中には専門的な学識を修め、そこからなんからの売買手法を導き出せる方もおられると思います。このあたりは、個々人の個性・才能による部分です。これから述べる解説は、特に専門的なコンピューターサイエンスについての見識を持たない者がデイトレードを行う上で必要と考え且つ十分であった知識の範囲を示すものです。

マイニング

マイニング(採掘)とは、トランザクションをまとめ新たなブロックを作成する作業です。平たくいえば、世界中の取引記録をまとめ新たな台帳に記入する作業です。これにより、マイニングを行う者、すなわちマイナー(採掘者)は報酬としてのビットコインを得られます。以下、詳しく説明します。

ビットコインは、世界中でリアルタイムに送信され続けています。この送信は、当然に記録しておく必要があります。仮想通貨、つまり交換手段として使えるためには、間違いなく自分のお金です・本当に支払いました・確かに受け取りました、という証明ができなければならないからです。その送信記録、すなわちトランザクションを約10分ごとに記録してまとめたデータの塊、それがブロックです。ブロックの作成は、約10分毎に行われます。ブロックが完成したら、次の10分の取引は次のブロックに記録されます。こうしてブロックが連鎖していったものがブロックチェーンです。

では、その記録台帳であるブロックはどのように作成されるのでしょうか。ブロックを作成するためには、あるパズルを解かなければならないとイメージしてください。そのパズルとは「ある条件を満たすハッシュ値を導くようなブロックを作成しなさい」というものです。これだけでは意味不明なのでより展開して説明していきます。最初にイメージ図を掲載します。

マイニングの過程を分かりやすく説明した図

ハッシュ値とは、あるデータハッシュ関数に入れることで導き出される値です。分かりやすいよう例えで説明します。(2,2,2,3,3,5.11)という7つの素数を与えられたとします。このとき「( )内のすべての素数を掛け合わせる関数」を用いて、2×2×2×3×3×5×5×11=19800という数字が導かれたとします。この場合に、データにあたるのが(2,2,2,3,3,5.11)、ハッシュ関数に相当するのが「( )内のすべての素数を掛け合わせる関数」、ハッシュ値に相当するのが19800という数字です。

なぜ、この例えがわかりやすいかというと、ハッシュ関数の一方向関数としての性質を説明しやすいからです。一方向関数とは、ある方向に計算するのは容易だが、逆算するのは困難な関数です。つまりこの場合ですと、2×2×2×3×3×5×5×11の計算は簡単ですが、19800の素因数分解は困難です。前者は単に掛け算をするだけですが、後者は2、3、5、7、11と順に割っていき割り切れるかどうかを一つ一つ確認しなければならないからです。このようにデータからハッシュ値を求めることは簡単ですが、ハッシュ値からデータを逆算することは困難である性質があります。

話を戻すと、ブロックを作成する際には、全世界のトランザクションをデータとしてまとめ、その上で「ある条件を満たすハッシュ値を導くようなブロック」を作成することが求められます。マイナー(採掘者)とよばれる営利目的の企業群が運営するコンピューターが、このパズルを解く計算作業の競争をします。なぜ競争するかというと、一番早く解けたコンピューターはその目印としてタイムスタンプを押しブロックを完成させることで、報酬として新規発行されるビットコインを受け取ることができるからです。また、作成したブロックに書き込まれたトランザクションの手数料を収入として受けとることができます。

ナンス自由に書き込める領域と考えてください。ここに様々な値を代入しながら、条件を満たすハッシュ値となるように何度も計算を繰り返します。この計算の速さハッシュレートです。1GH/secondのように表し、この場合は一秒間に十億回のハッシュ計算が可能であることを示しています。つまり、一秒間に十億回にわたりナンスに異なる値を代入し続け、条件を満たすハッシュ値にならないかを試すことができるということです。

ハッシュレートが高くなれば、一秒間当たりにより多くの計算ができることになりますからブロックの作成にかかる時間が短くなります。しかし、ビットコインの構造として、約10秒に一つブロックを作成する仕様にしていますから、あまりに短くなると困ります。そこでハッシュレートが高くなりブロックの時間が短くなりすぎた場合に、難易度の調整を行います。つまり、ある条件を満たすハッシュ値を求めるというパズルの中身をより時間がかかる難しいものにするわけです。この難易度のことをディフィカルティといい、2週間毎に調整が行われます。

一番早く解けたコンピューターは、作成したブロックをP2Pネットワークを介して他のノード配信します。受け取ったノードは、そのブロックが正当なものであるかを自分自身で検証します。この検証はハッシュ関数の一方向性ゆえに即座にできます。ハッシュ関数の性質上、データからハッシュ値を求めるのは簡単だからです。条件を満たすハッシュ値が導ける正しいブロックだと認めた場合、そのブロックをブロックチェーンの先頭に加えていきます。結果として、どのノードもそれぞれ独自にブロックチェーンを構築していくにも関わらず、"ほとんど"全てのノードが同一のブロックチェーンを構築していくことになります。

ここで”ほとんど”と表記したことには意味があります。つまり一部のノードは別のブロックチェーンを構築することがあり得ます。その代表的なケースが、ほぼ同時に別々のコンピューターが正しいブロックを作成した場合です。この時なされる処理がフォーク(分岐)です。

なお、P2Pネットワークとは、どのコンピューターも対等な立場でデータを提供または受け取ることができるネットワークです。対義的存在は、クライアント・サーバーネットワークです。こちらは、データの提供側とアクセス側とが完全に分離した中央集権的なものです。また、ノードとは、P2Pを構成するコンピューターです。マイニングを行うものやウォレット機能をもつものなどがあります。

フォーク

別々のマイナーがほぼ同時にブロックを完成させた場合、二つの異なるブロックが作成されることになります。同じ時間に解いたのになぜ異なるブロックになるのかと思われるかもしれません。これは、ブロックを最初に完成させたマイナーは報酬のBTCを受け取ることができるところ、最初の発見者とされる自身への報酬のトランザクションもブロックの中に情報として含まれているからです。それぞれ異なるマイナーへの支払い情報が記載されますから、必ず異なるブロックとなります。そうすると、二つのブロックが各ノードに配信されます。この場合、どのように処理するのかが問題となります。

この点、最初に受け取ったブロックを一先ず有効なブロックとして扱います。といっても、後から受け取ったものも、将来有効になるかもしれないブロック(オーファンブロック)として扱います。マイニングを行うそれぞれのコンピューターは、次の10分のブロックをどちらに繋げても構いません。こうなることで、ブロックチェーンが分岐する現象が生じます。これをフォークといいます。

各ノードは、新しいブロックをどちらにチェーンしても構いませんが、最終的にはより長いブロックチェーンが正式なものとして採用され、不採用となった方は捨てられます。不採用となったチェーンを構成するブロックのマイナーには報酬は与えられませんから、どちらの分岐がより長いチェーンになるかを各マイナーは予想し、確率的優位がある方へと人気が集まっていきます。具体的にいえば、あるノードが、先に受け取ったブロックAを有効なブロックとし、後から受け取ったブロックBをオーファンブロックとしていても、ブロックBの分岐に人気が集まった結果より長いチェーンが形成されれば、ブロックAからのチェーンを打ち捨ててブロックBからのチェーンをメインチェーンに切り替えます。このメインチェーンの切り替えをリオルグ(reorg・再結合)といいます。こうして、最終的にどちらかのチェーンに収束することになります。

上の説明は偶然同じタイミングでブロックが形成された場合ですが、このフォークが意図的になされる場合があります。あるマイナーが意図的にフォークを導入し、より短いチェーン、つまりBTCによる報酬を貰えないにも関わらず、その短いチェーンの方をマイニングし続けるのです。こうなるとチェーンは一つに収斂されず分岐し続けることになります。これをハードフォークといいます。たとえば、ビットコインキャッシュ(BCH)は、ビットコイン(BTC)が2017年8月にハードフォークしたものです。

プルーフ・オブ・ワーク

図1でわかるように、ブロックチェーンの各ブロックには、その一つ前のブロックのハッシュ値が含まれています。これにより、ブロックチェーンは改竄が極めて困難となります。どういうことかというと、悪意を持った者が、自分の銀行口座に大量のBTCが送信されたという偽のトランザクションを作り出そうと、過去のあるブロックの改竄を試みそれに成功したとします。そうすると元の正しいブロックと改竄されたブロックとでフォークが生じます。しかし、改竄するとそのブロックのハッシュ値も変化します。とすると次のブロックに記載されている「一つ前のブロックのハッシュ値」の部分も書き換えねばならなくなります。改竄されたブロック自体は有効にすることができても、他により長いブロックチェーンが存在するため、メインチェーンとはなりません。メインチェーンとするためには、それ以後のブロックも全て計算しなおして最新のメインチェーンよりも長いブロックチェーンを作らなければならなくなります。ひたすらに頑張ってみたところで、改竄している間にもどんどん正当なメインチェーンは伸びてきます。このように、正当なブロックチェーンとして認められるためには膨大な計算量が求められるわけです。こういった仕事量による証明アルゴリズムをプルーフ・オブ・ワーク(Proof of Work、PoW)といいます。改竄は膨大な仕事量を求められる故に、悪意者にとっては割に合わない犯罪となりますし、そもそも実現が困難となり、正当なものであると皆に認めさせることができません。こうして、いつ誰が誰にいくら送金したかという情報の認識について、全員の参加者の合意形成が達成できます。

このように、特定の管理者がいないにも関わらず、信用できない者も混ざったコンピューター群が信用できる記録を分散して共有していく仕組みがブロックチェーンにより実現したわけです。このことをもって、「ブロックチェーンは、ビザンチン将軍問題を解決した」といわれることがあります。ビザンチン将軍問題とは、共同してある合意を形成しなければならない場面で、裏切り者が発生してもなお、合理的な合意を形成するにはどうすればよいかという問題です。これは、発表したコンピュータサイエンスの学者が、相互に通信するオブジェクトをビザンチン帝国の将軍になぞらえて表記したことから名づけられたもので、具体的な歴史的故事があるわけではありません。

ただ、割に合わないといっても、改竄されたブロックにチェーンしていくブロックを次々に作成し、正当なブロックチェーンよりも長くすることができれば、改竄されたブロックからのチェーンをメインチェーンにすること自体は可能です。正当なブロックチェーンよりも長くするにはどうすればいいかというと、計算総量の過半数以上のコンピューター群がマイニングを続ければよいわけです。つまり51%以上の計算力が攻撃側にあれば、ブロックチェーンは改竄できることになります。この問題は理論上は解決されておらず、51%攻撃と呼ばれます。とはいえ、全世界のノード数は大変大きく、実際の実行は極めて困難であることに変わりはありません。

-12 暗号資産のトレンド発生要因