Читать книгу 暗号通貨投資のバイブル - Alan T. Norman - Страница 6
第 4章 ブロックチェ–ン
Оглавлениеブロックチェ–ン技術の背後にある技術的な詳細に入る前に、ブロックチェ–ンが解決する問題を理解することが重要です。ブロックチェ–ンが必要な理由と、ブロックチェ–ンにできて、現在のテクノロジ–ではできないことは何でしょうか?
ビットコインやブロックチェ–ン技術を最初に採用した人たちは、トランザクション、信頼、社会制度に関する私たちの考え方の根本的な欠陥と考えられる点について指摘しました。ブロックチェ–ンの最も初期のバ–ジョンは、2007年に米国で発生した金融危機とほぼ時を同じくして発生しましたが、それは多くの人々が、一般の人の利益を保護するはずである社会制度に対する信頼を失っていた時期でもありました。もちろん、人々は危機発生後金融システムに幻滅したのですが、金融市場を規制する政府や、潜在的な危機を調査すべき報道機関への信頼も失ったのです。
大半の人は、社会制度には欠陥があり、完全な解決策などないと言うことに同意されるでしょう。ですが、それらは信頼の問題を解決し、何百年もの間取り組みを行ってきました。実際、私たちは恐らく、人類の歴史の中で、最も平和で居心地の良い時代に生きていると言えるでしょう。現在の制度に代わるものには、明らかな利点と強みが必要になります。
ブロックチェ–ンの背後にあるアイディアは、不完全な人間によって運用されている制度を、より良い仕事をすることができ、個人に力を与えることができるテクノロジ–に置き換える、ということです。銀行や政府を仲介者として必要とせずに、見知らぬ人がお互いを信頼する方法を生み出すことができれば、社会最大の障害に対応することができるのです。しかしそのためには、見知らぬ人同士でコンセンサスを形成するための強力なシステムが必要です。ブロックチェ–ンの作成者たちはその力を「非中央集権型」の中に見ているのです。
基本的に、ブロックチェ–ンのアプリケ–ション(およびその他暗号技術)はすべて、非中央集権の概念を基本としています。ブロックチェ–ンは、決定を下し、関係を統治する堅固で遅い中央当局の代わりに、規制力を個人に戻すことを目指しています。主要機関を信頼する代わりに、ブロックチェ–ンはコンセンサスを通じて信頼を築くのです。
ブロックチェ–ンの仕組み
簡単に言えば、ブロックチェ–ンは暗号と公開台帳の組み合わせを使用して、プライバシ–を維持しながら当事者間の信頼を確立しています。これがどのように機能するかというメカニズムを理解するのは少し難しいのですが、ブロックチェ–ン・テクノロジ–の背後にある特質を完全に理解するには、技術的な詳細に没入する必要があります。
ブロックチェ–ンにはもっと多くの機能を含めることができるのですが、基本となるのは以下に挙げるテクノロジ–名の中にあります。
ブロック:特定の期間のトランザクションのリストのことです。過去数分内にネットワ–ク上で処理されたすべての情報が含まれています。ネットワ–クは一度に1つのブロックのみを作成します。
チェ–ン:各ブロックは、暗号化アルゴリズムを使用する前にブロックにリンクされます。これらのアルゴリズムをコンピュ–タが計算するのは難しく、世界最速のコンピュ–タでも解決するには数分かかることがよくあります。いったん解決されると、暗号チェ–ンがブロックを所定の位置にロックし、変更できにくくします。これについては、すぐに詳しく説明します。
チェ–ンは時間の経過とともに長くなっていきます。新たなブロックが作成されると、ネットワ–ク上のコンピュ–タが連携して、ブロック内のトランザクションを検証し、チェ–ン内のそのブロックの場所を保護します。
ブロックチェ–ンの最も基本的な部分は台帳です。ここにネットワ–ク上のアカウントに関する情報が保存されます。ブロックチェ–ン内の台帳は、銀行や他の機関の元帳に代わるものです。暗号通貨の場合、この台帳は通常、口座番号、トランザクション、残高で構成されています。トランザクションをブロックチェ–ンに送信すると、通貨がどこから来てどこへ行くのかに関する情報が台帳に追加されます。
ブロックチェ–ン台帳は、ネットワ–ク全体に分散されています。ネットワ–ク上のすべてのノ–ドは、台帳の独自のコピ–を保持しており、誰かが新しいトランザクションを送信したときにそれを更新します。この「共有台帳」こそ、ブロックチェ–ンが銀行や他の機関に取って代わろうとする方法なのです。銀行に元帳の正式なコピ–を1つ保持させる代わりに、誰もが独自の台帳のコピ–を保持し、合意に基づいて取引を確認します。
各ブロックチェ–ン・テクノロジ–には独自の台帳があり、いろんな台帳がそれぞれ異なった動作をしています(後で説明します)。しかし、最初のブロックチェ–ン台帳であるビットコイン台帳では、トランザクションをリストするのに必要な情報は、以下の3つです。
1. インプット(入金):ジョンがデビッドにビットコインを送信したい場合、まずネットワ–クにそのビットコインをどこで入手したのか伝えなければなりません。昨日サラからそのビットコインを受け取ったのだとしたら、台帳の最初のところにそう書き込みます。
2. 取引量:ジョンがデビッドに送りたい数量です。
3. アウトプット(出金):これはDavidのビットコインアドレスであり、ビットコインを入金する場所です。
ここで理解するのが難しい概念が出てきます。ビットコインといわれるものはないのです。もちろん、物理的なビットコインはありません。そんなことは既にご存知かもしれません。しかし、ハ–ドドライブのどこかにビットコインがあるわけでもありません。ある物体やデジタルファイルやコ–ドの一部を指して、「これがビットコインです」と言うことはできないのです。そうではなく、ビットコインのネットワ–ク全体が一連のトランザクションレコ–ドに過ぎません。ビットコインの履歴におけるすべてのトランザクションは、ビットコイン・ブロックチェ–ンの分散型台帳にあるのです。20ビットコインがあることを証明したい場合、それを行う唯一の方法は、それらの20ビットコインを受け取ったトランザクションを指し示すことです。
ほとんどすべてのブロックチェ–ンには、この特徴があります。トランザクション履歴が通貨なのです。2つの間に違いはありません。一部の新しい暗号通貨は、トランザクションにおいてより匿名性とプライバシ–を高めるため、台帳の記述方法を変更しています。特定のIDマスキング技術を使用し、機能的な分散型台帳を維持しながら、トランザクションの送信者と受信者を隠しているのです。
ブロックの生成
台帳はブロックの中核ですが、新しく作成されたブロックに入るのはそれだけではありません。すべてのブロックに必要なヘッダ–とフッタ–があります。さらに、ブロックに含まれるトランザクションは、それらを圧縮、エンコ–ド、標準化するプロセスにかけられます。検証機能が新しいブロックを作成するとき、元の台帳とは完全に異なって見えます。ただし、元となる台帳はまだ存在しており、将来、新しいトランザクションが前のブロックに関する情報を必要とするときにアクセスすることができます。
トランザクションの追加
ブロックを構築する最初のステップは、現在のすべてのトランザクションを収集してブロックの台帳に追加することです。ユ–ザ–が新しいトランザクションを作成すると、そのトランザクションがネットワ–ク全体にブロ–ドキャストされます。次に検証者のコンピュ–タが有効性を確認するためにトランザクションをレビュ–します。
ブロックチェ–ンの通貨は一連のトランザクションにすぎないため、トランザクションを確認する最初のステップは、送信者が元々お金を受け取ったと言っている場所を調べることです。次に、検証者はブロックチェ–ンの履歴を確認し、送信者がお金を受け取ったブロックとトランザクションを見つけます。その入力トランザクションがブロックチェ–ンで確認された場合、トランザクションは有効となり、受信者のアドレスを確認する必要があります。入力トランザクションが確認できなければ、現在のトランザクションは無効となり、台帳に含められません。
そのブロックの全トランザクションが確認されたら、台帳を作成します。トランザクションが次々とリストされる簡単な例を示してみましょう。
[Input][Amount][Output address], [Input][Amount][Output address], [Input][Amount][Output address], [Input][Amount][Output address], [Input][Amount][Output address]…
*Input:インプット(入力=送付元)
Amount:取引量
Output address:アウトプット(出力=送付先)アドレス
次に、検証者は、ハッシュと呼ばれる暗号化技術を各トランザクションに適用します。「文字列を受け取り、別の文字列を生成すること」がハッシュの最も基本的な定義です。したがって、インプット、取引量、アウトプットアドレスをハッシュ・アルゴリズムに渡すと、トランザクションは次のようにそのトランザクション固有の文字列に変換されます。
aba128d3931e54ce63a69d8c2c1c705ea9f39ca950df13655d92db662515eacf
(これはビットコイン・ブロックチェ–ンからの実際のトランザクション・ハッシュです。)
したがって、ハッシュはデ–タが改ざんされていないことを確認しながらデ–タを標準化するために使用されます。誰かがブロックチェ–ンのトランザクションを変更しようとした場合、そのトランザクションを再ハッシュする必要があり、そうすると見た目が完全に変わります。改ざんされているのが明らかになるのです。
ブロックチェ–ンの改ざんをさらに困難にし、トランザクション台帳を格納するために必要なメモリを削減するため、大抵のブロックチェ–ンは複数回ハッシュを行います。つまり、トランザクションのハッシュを取得し、それを別のトランザクションのハッシュと結合し、それを新しい小さなハッシュに再ハッシュします。このようにトランザクションを繋げることは、「マ–クルツリ–(木)」と呼ばれ、全トランザクションのル–トハッシュはブロックヘッダに含まれます。マ–クルツリ–がなぜ必要なのかを理解することは、もっと詳しい本で書かれる内容なのですが、基本的なレベルでは、マ–クルツリ–は、長期的により少ないメモリ使用量でブロック内の全トランザクションが正しいことを検証できるようにします。
タイムスタンプとブロックID
ブロックの最後の要素は、タイムスタンプとブロックId情報です。これにより、後で前のブロックを簡単に検索することができます。この先のトランザクションも、現在のトランザクション(「コインベ–ス」ともいう)を含むブロックとして、このブロックIDを指すことができます。
ブロック同士を繋げる
ブロックを作成する最後のステップは、ブロックをチェ–ン内の前のブロックに繋げることです。この方法はいくつかありますが、事実上すべての方法で、前のブロックのコンテンツを新しいブロックの一部にするため何らかの方法でハッシュを行う必要があります。
ハッシュは、大小にかかわらずインプットを受け取り、それを文字列に変換することに注意してください。インプットを少しでも変更すると、アウトプット全体が変更されます。新しいブロックに前のブロックの内容を含めるには、前のブロック全体のハッシュを取得して、次のブロックの先頭に追加します。そうすることで、古いブロックを新しいブロックに効果的に繋げたことになります。古いブロックで何かが変更された場合、たとえ微細な変更でも、ブロック全体のハッシュが変更されるためです。
次に、ブロックが完了すると、それを変更することは非常に難しくなります。古いブロックを編集すると、そのブロック全体を再ハッシュしなければなりません。ブロック1のすべてを再ハッシュしたら、オ–プンなブロック2をクラックして、ブロック1の古いハッシュを削除し、ブロック1の新しいハッシュを挿入して、ブロック2のすべてを再ハッシュする必要があります。ただし、新しいブロックは常に作成されているため、古いトランザクションを変更するには、トランザクションが発生した後にすべてのブロックを編集する必要があります。時間が経過するほど、ネットワ–クをハッキングしてトランザクションを正常に変更することが難しくなります。これが、ハッシュがブロックチェ–ン・セキュリティの中心にある理由です。暗号化により、トランザクション台帳を変更することが困難になります。台帳を公開すると同時に安全にすることができるということです。
しかし、ハッシュすること自体はそんなに難しくはありません。数秒あれば大抵のコンピュ–タでブロックチェ–ンを再ハッシュすることができます。そのため、ハッシュセキュリティが機能することを保証するため、新しいブロックの作成に難易度を導入する必要があります。理想的には、攻撃者の速度を落とし、ネットワ–クの正直なメンバ–が勝つ可能性を高めるものでなければなりません。ビットコイン・ブロックチェ–ン(および他の大半の最新ブロックチェ–ン)においては、強化された難易度は「プル–フ・オブ・ワ–ク(PoW)」と呼ばれます。
ここではプル–フ・オブ・ワ–クの説明はしませんが、基本的な説明は第3章で取り上げています。また、このテクノロジ–の背後にある詳細については、 『Blockchain Technology Explained』で説明しています。