パート1では、ビットコインは分散通貨であり、政府や金融機関によって生成または所有されていないこと、およびハッシュとは何かを学びました。次に、ビットコイン採掘者がハッシュを使用して文字通りお金を稼ぐ方法と、暗号化によってビットコインが完全に(そして不可逆的に)譲渡可能であるにも関わらず、コピーに対して信頼性が高く、ユニークで、不浸透性になる方法を学びます。

ビットコインは、米ドルと同様に価値が変動します。人々は、価値が変動しても通貨を信頼します。これは、政府や他の中央組織によって「固定」され決定されるのではなく、他の通貨と比較して需要と供給に依存する通貨の価値を意味します。

米ドルが金に支えられていたとき、人々は金を貴金属と交換できるので、お金を信頼していました。現在、人々は主に米国政府の信頼性のためにドルを信頼しています。彼らはまた、何かがおかしくなった場合に備えて、銀行が銀行を支援することを信頼しています。

ビットコインは非常に信頼できるように設計されていますが、金や政府のためではありません。代わりに、数学、具体的には、ハッシュと公開キー暗号化という2つのテクノロジーの巧妙な使用に依存しています。

ハッシュとビットコインのブロックチェーン

ビットコインのブロックチェーンは、すべてのビットコイン取引の公的元帳です。これは一連のブロックであり、各ブロックにはビットコイントランザクションのグループが含まれています。ブロックチェーンを一連のパッケージとして視覚化できます。各パッケージには、約10分間に発生したトランザクションが含まれています。

または、最下部のトランザクションのブロックと最上部の最新のブロックを使用して、パッケージを互いの上に積み重ねて視覚化することもできます。スタック内の任意のブロックを改ざんし、その上のすべてのブロックをタンブルダウンして、改ざんを検出しやすくします。

各ブロックには一意のハッシュがあります。これは、文字列のゴブルダイク文字列として(16進数で)表現される非常に大きな数の文字列の形式の「指紋」です。たとえば、ブロックのハッシュは「00000000003e95b0ac78cb961d0」になります。

議論をシンプルかつ概念的にするために、ハッシュの代わりに数字ではなく絵文字を使用しましょう。最初のブロックのハッシュを(サッカーボール)、2番目のブロックのハッシュを(イカ)、3番目のブロックのハッシュを(傘)で表します。ブロックチェーンは、絵文字ハッシュで表される場合、次のようになります。

友人のエリザベスがビットコインで5ドル送ってくれたので、それをあなたに渡したいとしましょう。私がそうするとき、トランザクションはチェーンに追加された新しいブロックに他の多くのものの中に含まれます。チェーン内の各ブロックは、その前に来たブロックのハッシュが含まれているため、シーケンスのどこに属しているかを知っています。つまり、3番目のブロックにはトランザクションのグループが含まれるだけでなく、前のブロックのハッシュ()も含まれます。

ビットコインシステムがブロック3(ハッシュhashを作成)をハッシュしただけだと想像してください。 5ドルを支払うと、ビットコインは次のブロックにトランザクションを含めます。最終的に4として表すこの新しいブロックには、まだハッシュがありません。今のところ疑問符です。

ここが本当に面白いところです。 「マイナー」と呼ばれる強力なコンピューターは、複雑な数学の問題を解決することにより、ブロックチェーンに4を追加するために競います。新しいブロックを正常にハッシュ化した最初のマイナーが勝者であり、その所有者は報酬として12.5の新しいビットコインを受け取ります。 (授与されるビットコインの数は今後減少します)。

これが新しいお金の「採掘」方法です。成功したハッシュが発見されると、それは他のすべての採掘者に即座に配布され、採掘者はそれを検証してブロックチェーンのコピーに追加します。次に、ブロック内の次のチェーンの正しいハッシュを見つけるための競争が始まります。

ハッシュは簡単です。平均的なラップトップは、1秒で数千のハッシュを見つけることができます。

しかし、ビットコインネットワークでは、ハッシュだけでなく、競合するマイナーを見つけるのに平均10分かかります。ビットコインシステムは、ハッシュを他のすべての可能なハッシュと比較して非常に小さな数にすることを要求することにより、受け入れ可能なハッシュを見つけることを非常に面倒にします。ハッシュには、驚くほど多数の値を使用できます。地球がその宇宙に比べて非常に小さいという同じ意味で、数兆にすぎない数はすべての可能性の範囲と比較して小さい。

したがって、マイナーは、あり得ないほど小さいハッシュ値を見つけることを望んでおり、唯一の方法は何度も繰り返すことです。各試行は異なる必要があり、マイナーはハッシュ方法を変えることはできませんが、ハッシュする対象をわずかに変えることができます。

彼らはこれを「ノンス」と呼ばれるものの助けを借りて行います。これは、パート1で子犬の目の上に追加した1ピクセルの黒ノミのようなものです。

Jonathan Krizによる「Puppy」は、CC BY 2.0の下でライセンスされています。

ピクセルを1つ追加するだけで、子犬の写真のハッシュが完全に異なることを思い出してください。デジタルコンテンツをハッシュする前に少しでも変更すると、まったく異なる予測不可能な結果が生じるためです。

ナンスはワイルドな推測であり、結果のハッシュが勝者になることを期待して、試行錯誤でビットコインブロックに追加される数字です。マイナーは、新しいブロック内のすべてのトランザクションと前のブロックのハッシュを取得し、ナンスを追加して、結果をハッシュします。各マイナーは、ナンスに対して多数の異なる番号を試行し、ブロックに組み込まれると、ブロックを適切に小さな数にハッシュさせる番号に着陸することを期待しています。実際、成功した鉱夫は、ノンスに何百万もの異なる値を使用していると推測する場合があります。

最近では、採掘者の1人が勝者のハッシュを生成するノンスを見つけるまでに、通常、数千回の試行が必要です。鉱山労働者は非常に強力なコンピューターの農場で走っているので、10分ごとに勝者がいます。そして、鉱山労働者はたくさんいます。 (平均勝ち時間が10分未満の場合、ビットコインシステムは許容可能なハッシュのサイズを小さくすることで問題を自動的に難しくします。)

ゴールドは、貴重な数字、つまり非常に希少な品質(サイズが小さい)であるため、勝利するハッシュがその価値を得るのと同様に、貴金属であることからその価値を引き出します。マイナーは、暗闇の中で刺します-暗闇の中での刺し傷の4つの小片-ビットコインシステムによって課せられる厳しい要件を満たすハッシュを生成する番号(「ノンス」)に最初にヒットすることを望みます。たとえば、ハッシュが0000000003e95b0acc32ac089222よりも小さいことが要件になります。成功するマイニング戦略は、多くの推測を行うのに十分なコンピューター能力を持つことです。

ビットコインネットワークは特定のサイズ以下のハッシュを要求しますが、絵文字の比phorを続けるために、より友好的な制約を設定することを想像してください。たとえば、ネットワークの制約はハッシュが動物である必要があるとしましょう。最初の試行では、鉱夫のハッシュは次のようになります。

これらの値のうち1つだけが制約を満たします。桜も梨も動物ではありませんが、クジラは要件を満たします。

2番目のマイナーは正しいハッシュを見つけたので、報酬を収集します。この報酬は真新しいビットコインで構成されているため、このプロセスは「マイニング」と呼ばれています。まるで鉱夫が新しいビットコインを発見したかのように、まるで金であるかのようです。

採掘が速すぎると、システムにビットコインがあふれ、インフレを引き起こします。これを防ぐために、ビットコインソフトウェアは調整可能な制約付きで記述されています。ハッシュが簡単に見つかる場合、ネットワークはより厳しい制約を選択できます。

絵文字ブロックチェーンでブロックのマイニングが速すぎると想像してください。これを改善するには、制約を調整する必要があります。「次のブロックでは、ハッシュは動物であり、足のある動物でなければなりません。」

マイナーはハッシュ関数を実行し、これを見つけます:

これらのハッシュはいずれも足のある動物ではありません。それで、鉱夫たちは再び試みます:

この時点で、3番目のマイナーは正しいハッシュを見つけました。クマは足のある動物です!このマイナーは、ブロック内のデータとともにハッシュをネットワークにブロードキャストできます。ハッシュ関数は迅速に実行できるため、他のマイナーはこのブロックでハッシュ関数を実行し、このハッシュが制約を満たすことを確認できます。その後、全員がブロックをチェーンに導入します(つまり、互いにほぼ同期していることを意味します)。次のブロックのトランザクションの収集を開始します。

これで、ブロックチェーンのハッシュは次のようになり、$ 5を送信したトランザクションがcalledというブロックに含まれます。

公開鍵暗号

ハッシュは、ビットコインが依存する数学的概念の1つにすぎません。公開キー暗号化は別の方法です。

暗号学を勉強する人は、お互いの説明に登場人物として「アリス」と「ボブ」をよく使用します。それらを使用して、公開鍵暗号の背後にある基本的な考え方を説明しましょう。

アリスがボブにいくつかの秘密文書を入れたブリーフケースを送りたいと想像してください。 (暗号化では、これはアリスがいつもやっているように見えることです。)アリスとボブが一致するキーを持っている場合、それは簡単です:彼女はブリーフケースに南京錠を置き、彼女のキーでそれをロックし、それを送るボブに。

ボブはそれを受け取ると、アリスのキーと同じなので、自分のキーで南京錠を解除し、秘密のドキュメントにアクセスできます。このプロセスは対称暗号化です。

しかし、通常、互いに秘密を送信する人は、キーを安全に転送するのが容易ではないため、一致するキーを持っていません。アリスがボブにキーを送信するためのプライベートで安全なサービスを持っている場合、彼女はそれを使用してドキュメントを転送することもできます!

したがって、アリスとボブには、単一のロックに一致するキーがありません。代わりに、それぞれが独自のキーとロックを持っているため、キーを転送する必要はありません。

仕組みは次のとおりです。

アリスは南京錠と鍵でブリーフケースをロックし、ボブに送ります。ボブはそれを受け取ると、アリスの南京錠のロックを解除できません。代わりに、彼は自分の南京錠を追加できます…

…そしてそれをアリスに送り返す:

次に、アリスはキーを使用して南京錠をブリーフケースから外します。

ブリーフケースには、南京錠が1つだけあります:ボブ。アリスはブリーフケースをボブに送り返します。

また、ボブは南京錠を解除して、ドキュメントにアクセスするだけです。

これで、アリスとボブは1つのキーを密かに共有する方法を見つける必要がなくなりました。必要なのは自分の鍵と南京錠だけです。

しかし、反対側の人があなたがそうだと思う人ではない場合はどうでしょうか?何らかの異常な事故が発生し、ボブが…牛に置き換えられた場合はどうなりますか?

これが次に起こることです:

  1. アリスは南京錠付きのブリーフケースを送り出します。彼女はそれをボブに送信していると考えていますが、実際には牛に送信しています。
  2. 驚くほど器用な牛は、南京錠をブリーフケースに追加し、アリスに送り返します。
  3. アリスは、ボブの南京錠(もちろん実際には牛のもの)でケースが戻ってきたようだと喜んで、南京錠のロックを解除して送り返します。
  4. 牛は南京錠のロックを解除してブリーフケースを開きます。
  5. 牛は秘密文書を食べます。ムー!

誰も彼らの秘密が牛や他の意図しない受信者に消費されることを望んでいないので、私たちは秘密データを保護するためにもう一歩を踏み出します:ボブはアリスが彼の南京錠がどのように見えるかを正確に知っているので、彼女が彼女のブリーフケースを取り戻すときロックを追加すると、彼女がそれが彼のものであることを確認できます。

実際、ボブは南京錠のコピーを作成し、どこでも公開しています。誰もがボブの南京錠がどのように見えるかを知っているかどうかは関係ありません。なぜなら彼は彼の鍵でロックを解除できる唯一の人だからです。同時に、これによりアリスはボブのロックを識別できます。彼女は自分のロックを解除する前に、2番目の南京錠が本当にボブのものであることを確認できます。

物理的なキーとロックを扱う場合、南京錠を複製して配布することは困難です。しかし、デジタルレコードを扱うときは、数字であるデジタルキーとロックを使用します。

南京錠は公開されている番号です。キーは非公開の番号です。 「秘密鍵」と適切に呼ばれる秘密番号は、公開番号を「ロック解除」するために使用できます。この公開番号は、紛らわしいかもしれませんが、「公開鍵」と呼ばれます。

これは公開鍵暗号です。

秘密鍵は対応する公開鍵のロックを解除できるため、人々は秘密鍵を慎重に保護します。 (暗号化では、このロック解除プロセスは署名と呼ばれることもあります。)他の人が特定のロックによってロックされたものを知ることができるように、人々は公開鍵を広く公開します。

Bitcoinシステムでは、公開鍵暗号を使用して所有権を証明します。それがどのように機能するかについて話すために、最初にいくつかの用語を決定する必要があります。ビットコインには、秘密鍵、公開鍵、およびアドレスがあります:

アリスやボブや秘密文書とは異なり、ビットコインシステムのキーは何も暗号化しようとはしていません。ロックを解除しようとしている不透明なブリーフケースはありません。代わりに、キーは所有権を証明するために使用されます。

ビットコインの世界では、アリスはボブに秘密のブリーフケースを送っていません。代わりに、南京錠とビットコインが入ったガラスの箱があります。

ビットコインをボブに送信するには、アリスは次の2つのことを行う必要があります。

  1. アリスはボブの南京錠を箱に追加する必要があります。彼の「南京錠」は実際には公開番号であるため、これは簡単です。そうすれば、ボブは南京錠のロックを解除して所有権を証明できます。
  2. アリスは、ビットコインに関連付けられている最初の南京錠が彼女の南京錠であることを証明しなければなりません。彼女は、自分の南京錠を自分のキー(他の人と共有しない長い番号)でロックを解除することでこれを行います。

次に、ボブがこれらのビットコインを他の誰かに送信することに決めた場合(カルロスと呼びましょう)、同じことを行います。カルロスの南京錠を追加してから、自分の秘密鍵で取引に署名します。

この場合、南京錠とは正確には何ですか?大まかに言って、それは公開鍵です。しかし、ビットコインプロトコルには、公開キー暗号化のバリエーションがもう1つあります。ボブの公開キー自体を含める代わりに、アリスはボブのビットコインアドレスを含めることができます。ビットコインのアドレスは公開鍵から取得されるため、アリスがボブの南京錠の特定の表現をボックスに入れているようです。また、1つの公開キーから事実上無限の数のアドレスを生成できるため、ボブが毎回異なるアドレスを使用したい場合は可能です。

送った5ドルに戻りましょう。私はそれをあなたの秘密鍵から生成した公開鍵から生成したあなたのビットコインアドレスに送りました。したがって、ビットコインのアドレスは、秘密鍵に数学的にリンクされています。アドレスに関連付けられた秘密鍵を所有している場合、その同じアドレスでビットコインを所有しています!

5ドルを送金するには、新しいトランザクションを作成し、受信者に属するアドレスを含めて、秘密鍵で署名する必要があります。これは、受信者の南京錠をブリーフケースに入れてから、南京錠のロックを解除するのと同じです。

アドレスを使用することには興味深い副作用もあります。つまり、ビットコインはほとんど匿名です。

アドレスは仮名であるため、仮名です。ビットコインはあなたの名前にリンクされていません。必要なのはあなたの秘密鍵だけです。

したがって、秘密鍵を持っている限り、ビットコインを持っています。それで何ができますか?

次に、ビットコインとブロックチェーンを使用してお金以上のものを作る方法と、これらのテクノロジーが新しい金融ツールをどのように支えているかを学びます。