Blockchain-quick-guide

提供:Dev Guides
移動先:案内検索

ブロックチェーン-はじめに

近年、ブロックチェーンには多くの話題があります。 多くの人が、これをこの10年間で最も破壊的なテクノロジーと説明しています。 特に、金融市場が最も影響を受ける可能性があります。

このテクノロジーは、ヘルスケア、医薬品、保険、スマートプロパティ、自動車、さらには政府などの多くの業種に適応しています。

ただし、これまでのところブロックチェーンの最も成功した実装はビットコインであり、これは偶然にもブロックチェーン技術の最初の実装でもあるピアツーピア電子現金システムです。 したがって、ブロックチェーン技術を理解するには、Bitcoin Systemがどのように設計および実装されているかを理解することが最善です。

この記事では、ブロックチェーンとは何か、そのアーキテクチャ、実装方法、さまざまな機能について学びます。 ブロックチェーンの複雑さを説明しながら、ビットコインの実装を紹介します。

ブロックチェーンのアーキテクチャはそれほど簡単ではなく、多くの人が良い記事、いくつかのビデオを含むチュートリアルを書いています。 これらは、初心者からプロフェッショナルまでの範囲の対象者です。 このチュートリアルでは、初心者とプロフェッショナルの両方を念頭に置いて、ブロックチェーンアーキテクチャの概念的な理解に焦点を当てます。 ブロックチェーンを掘り下げる前に、この新しいテクノロジーの必要性が明らかになった理由を知ることが重要ですか? この質問に対する答えは、 Double-Spending と呼ばれるものにあります。

ブロックチェーン-ダブル支出

画像に示されている状況を考慮してください-

ダブル支出

ここではっきりとわかるように、ボブは本と引き換えにリサに10ドルの請求書を提出しています。 リサがこの物理的な10ドルの請求書を受け取った後、ボブが他の取引にこのお金を再利用する方法はありません。物理的な通貨は現在リサが所有しているからです。

次に、お金がデジタル形式で支払われる状況を考えます。 これは画像に示されています-

有料デジタルフォーム

両替の形式はデジタル形式であるため、基本的にはボブのデバイスのどこかに保存されているバイナリの物理ファイルです。 ボブはこのファイル(デジタルマネー)をリサに渡した後、ファイルのコピーをアリスに渡すこともできます。 どちらも、デジタルコインを認証する手段がなくてもお金を受け取ったと考えているため、それぞれの商品をボブに配達します。 これは double-spending と呼ばれ、送信者が複数のベンダーからサービスまたは商品を取得するために複数の場所で同じお金を費やします。

この二重支出の問題を解決するために、すべてのトランザクションを監視する集中化された権限を使用します。 これは画像に示されています-

Centrailized Authority

一般的にはあなたの銀行である中央機関は、すべての取引を記録する台帳を維持します。 今、ボブは銀行にデジタルマネーを送らなければなりません。銀行は元帳に入金してボブの口座から引き落とします。 ボブは、送信したいデジタルマネーの支払いに十分な残高があることを確認した後、その元帳のアカウントに入金してリサに送金します。

今、ボブはお金を二重に使うことができないことが保証されています。 すべてのデジタルトランザクションがこのような中央の機関を通じてルーティングされる場合、二重支出の問題は解決されます。 これは、トランザクションで受け取る各コイン(デジタルマネー)の真正性を検証する上で、別の利点も提供します。 したがって、偽のお金(ボブがコピーを使用してアリスに支払う場合のような重複したお金)は簡単に検出され、流通から防止されます。

中央集権化された機関の導入は、二重支出の問題を解決しますが、別の主要な問題をもたらします-中央集権化された機関自体の作成と維持のコストです。

銀行は業務にお金を必要とするため、顧客のために行う通貨取引ごとに手数料の削減を開始します。 これは、特に複数のエージェント(銀行)が取引全体に関与する可能性がある海外送金では、非常に高価になることがあります。

上記の問題はすべて、ビットコインと呼ばれるデジタル通貨の導入によって解決されます。 デザインとアーキテクチャを掘り下げる前に、ビットコインが何であるかについて簡単な背景を説明します。

ビットコイン-簡単な歴史

ビットコインは、https://bitcoin.org/en/bitcoin-paper [ビットコイン:ピアツーピア電子キャッシュシステム]というタイトルの研究スタイルのホワイトペーパーを通じて、2008年に中本Sによってこの世界で紹介されました。

ビットコインは、二重支出の問題を解決しただけでなく、さらに多くの利点を提供しました。ここで言及する価値のある利点の1つは、トランザクションの匿名性です。 システムを作成し、このシステムでわずかなコインを取引したサトシは、全世界に完全に匿名です。

想像してみてください。ソーシャルメディアのこの世界では、各個人のプライバシーが危険にさらされているときに、世界はこれまで誰がサトシなのかを追跡できません。 実際、サトシが個人なのか、集団なのかはわかりません。 それをグーグルで解くと、中本motoが保持するビットコインは約194億ドルの価値があるという事実が明らかになりました-そのお金は現在ビットコインシステムで請求されていないままです。 それでは、ビットコインとは何ですか-見てみましょう!

ビットコインとは何ですか?

前に見たように、銀行は各取引を記録する元帳を維持しています。 この元帳は、銀行によって非公開で管理されています。 サトシは、この台帳を公開し、コミュニティが維持することを提案しました。

このような台帳を公開すると、いくつかの考慮事項が思い浮かぶでしょう。 この元帳は、誰もエントリを変更できないように、改ざんされないようにする必要があります。 元帳の各エントリは公開されているため、匿名性を維持する方法を理解する必要があります。明らかに、世界中の誰もが100万ドルを支払ったことを知りたくないでしょう。

また、世界の各取引を追跡する元帳は1つしかないため、元帳のサイズも大きな懸念事項になります。 これらの複雑さの解決策を提供するのは簡単なことではありません。ここでは、Bitcoinの基礎となるアーキテクチャを簡単な言葉で理解できるようにしようとしています。

この基礎となるアーキテクチャは*ブロックチェーン*であり、それがこのチュートリアルの目的です。 ブロックチェーンアーキテクチャを理解するには、ベースとなるいくつかの主要な機能を理解する必要があります。 それでは、PKI-Public Key Cryptographyを始めましょう。

ブロックチェーン-公開鍵暗号

公開キー暗号化または略してPKIは、非対称暗号化とも呼ばれます。 パブリックとプライベートの2組のキーを使用します。 キーは、長い2進数です。 公開鍵は世界中に配布されており、その名前が示すとおり、本当に公開されています。 秘密鍵は厳密に秘密に保持され、決して失われることはありません。

Bitcoinの場合、Bitcoinウォレットの秘密鍵を紛失した場合、ウォレットの内容全体が即座に盗難に対して脆弱になり、気付かないうちにすべてのお金(ウォレットの内容)が失われます誰がそれを盗んだかを追跡するためのシステムのメカニズム-それは、先ほど述べたシステムの匿名性です。

PKIは、暗号化/復号化メカニズムによる認証とメッセージプライバシーという2つの機能を備えています。 私は今、これらの機能の両方を説明します-

認証

2つのパーティがメッセージを交換するとき、送信者と受信者の間に信頼を確立することが重要です。 特に、受信者はメッセージのソースを信頼する必要があります。 ボブが彼女から商品を購入するためにリサにお金を送るという先のシナリオ(図1に示す)に進み、PKIがボブとリサの間でこの信頼をどのように構築するかを見てみましょう。 下の画像を見てください-

認証

そもそも、ボブがリサにお金を送りたい場合、彼はそれ自身の秘密/公開鍵を作成しなければなりません。 両方のキーは常にペアになっており、異なる個人または異なるインスタンスの秘密キーと公開キーを混在させることはできません。

現在、ボブはリサに10ドルを送っていると言います。 そこで彼は、ボブ(送信者)の公開鍵、リサ(受信者)の公開鍵、および金額($ 10)を含むメッセージ(平文メッセージ)を作成します。

「あなたからカボチャを買いたい」など、この送金の目的もメッセージに追加されています。 これで、メッセージ全体がボブの秘密鍵を使用して署名されました。 リサはこのメッセージを受信すると、PKIの署名検証アルゴリズムとボブの公開鍵を使用して、メッセージが実際にボブから発信されたことを確認します。 PKIの仕組みは、このチュートリアルの範囲外です。 興味のある読者は、https://en.wikipedia.org/wiki/Public_key_infrastructure [site]を参照して、PKIの詳細な議論をしてください。 これにより、メッセージ発信者の信頼性が確立されます。 次に、メッセージのプライバシーを見てみましょう。

メッセージのプライバシー

リサは支払いを受け取ったので、ボブが購入したい電子書籍へのリンクを送信したいと考えています。 したがって、リサはメッセージを作成し、画像に示すようにボブに送信します-

メッセージのプライバシー

リサは、「これはあなたが要求した私の電子書籍へのリンクです」などのメッセージを作成し、ボブの要求メッセージで受け取ったボブの公開鍵で署名し、2つの間で共有される秘密鍵を使用してメッセージを暗号化しますHTTPSハンドシェイク中。

リサは、ボブだけが保持している秘密鍵を使用してメッセージをデコードできるのはボブだけであることを確信しています。 また、コンテンツはボブとアリスのみが保持している秘密鍵で暗号化されているため、メッセージを傍受する誰かがそのコンテンツを回復することはできません。 これにより、リサは電子書籍へのアクセスがボブにのみ許可されることを保証します。

PKIによって暗示される認証とメッセージプライバシーの両方の機能を確認したので、「ビットコインとは」の章で述べたパブリックレジャーをビットコインがPKIを使用して保護する方法を見ていきましょう。

あなたの知識のために-最も人気のあるPKIアルゴリズムはhttps://en.wikipedia.org/wiki/RSA_(cryptosystem)[RSA]とhttps://en.wikipedia.org/wiki/Elliptic_Curve_Digital_Signature_Algorithm[ECDSA]であり、ビットコインは後者。

ブロックチェーン-ハッシュ化

PKIで最も重要な機能の1つは、ハッシュ関数です。 ハッシュ関数は、任意のサイズのデータ​​を固定サイズのデータ​​にマッピングします。 ビットコインは、サイズ256ビット(32バイト)のハッシュ(出力)を生成するSHA-256ハッシュ関数を使用します。 これは画像に示されています-

ハッシュ

ボブは、リサに注文するときに、上記のようなメッセージを作成します。 このメッセージは、32バイトのハッシュを生成するハッシュ関数によってハッシュされます。 このハッシュの美しさは、すべての実用的な目的で、ハッシュ(256ビット数)がメッセージのコンテンツに対して一意であると見なされることです。 メッセージが変更されると、ハッシュ値が変更されます。 ハッシュ値が与えられただけでなく、元のメッセージを再構築することは不可能です。

ハッシュの重要性を確認した後、ビットコインのマイニングという別の概念に移りましょう。

ビットコイン-マイニング

ボブがリサの購入リクエストを作成するとき、彼はそれをリサだけに送信しません。 むしろ、要求メッセージは、彼が接続しているネットワーク全体にブロードキャストされます。 ボブのネットワークは画像で描かれています。

マイニング

メッセージは、接続されているすべてのノード(マシン)に送信されます。 図のノードの一部は、マイナーとしてマークされています。 これらは、ビットコインメッセージをマイニングするためのソフトウェアを実行するマシンです。 次に、このマイニングの意味を説明します。

マイニングプロセス

ネットワーク全体が広く分散しているため、ネットワーク内のすべてのマイナーは、特定の期間に複数のベンダーから複数のメッセージを受信することが予想されます。 鉱夫は、これらのメッセージを1つのブロックにまとめています。 これは画像に示されています-

マイニングプロセス

メッセージのブロックが形成された後、マイナーは前述のハッシュ関数を使用してブロックにハッシュを作成します。 サードパーティがこのブロックのコンテンツを変更した場合、ご存じのとおり、そのハッシュは無効になります。 ちなみに、各メッセージにはタイムスタンプが付けられているため、誰もブロックのハッシュ値に影響を与えずに時系列を変更することはできません。 したがって、ブロック内のメッセージは改ざんから完全に保護されます。 ネットワーク内のすべてのトランザクションを保護するためにこの事実がどのように使用されるかについて、さらに説明します。

ブロックチェーン-ブロックの連鎖

さまざまな鉱夫によって作成されたブロックは、真に分散された公共台帳として知られるものを形成するために一緒に連鎖されます。

ブロックの連鎖

図8で前述したように、チェーンの各ブロックには複数のメッセージ(トランザクション)が含まれています。 チェーン内のブロックは、鉱夫からのものである可能性があります。 ブロックのチェーンを作成する際、前のブロックのハッシュが現在のブロックに追加されるというルールを守っています。

したがって、マイナーはブロックの作成中にチェーンの最後のブロックのハッシュを取得し、それを独自のメッセージセットと組み合わせて、新しく作成されたブロックのハッシュを作成します。 この新しく作成されたブロックは、チェーンの新しいエンドになります。したがって、鉱夫によってブロックが追加されるにつれて、チェーンは成長し続けます。

ブロックチェーン-作業証明

すべてのトランザクションにはタイムスタンプが付けられるため、ピアツーピアネットワーク上に分散タイムスタンプサーバーを実装する必要があります。 これには、いくつかの追加の実装が必要です。これが、次に説明するProof-of-Workです。 各ブロックに、次の図に示すように、 Nonce というアイテムをもう1つ追加します-

仕事の証明

Nonceは、ブロックのハッシュが特定の基準を満たすような数値です。 この基準は、生成されたハッシュの先頭の4桁がゼロになる必要があることです。

したがって、生成されたハッシュは000010101010xxxのようになります。 一般的に、マイナーは0のNonce値で開始し、生成されたハッシュが指定された基準を満たすまで増分を続けます。

ハッシュ生成はランダムに機能し、制御できないことに注意してください。つまり、ハッシュ関数に特定のハッシュを生成させることはできません。 したがって、4つの先行ゼロを持つ目的のハッシュが生成されるまで、数回の反復が必要になる場合があります。 ビットコインシステムでブロックを生成するための予想時間は10分です。 鉱夫がブロックを正常にマイニングすると、システム内でそれを解放し、チェーンの最後のブロックにします。

正当なブロックを生成するために競合する複数のマイナーがあることに注意してください。 ビットコインシステムは、特定のビットコインを与えることで、最初に成功した鉱夫を表彰します。 一般に、計算能力の高い鉱夫が早期の勝者になる可能性があります。 これは、巨大な処理能力を持っている人によるシステム全体への攻撃を引き起こす可能性があります。 このチュートリアルの最後に向かって、攻撃とそれらの軽減方法について説明します。

ブロックチェーン-ネットワークとマイニング

ここで、上記の手順をまとめます。これはネットワークで何が起こるかです-

  • ネットワーク上でアドバタイズした第三者からサービスを取得したい人は誰でも、最初にトランザクション(希望する受信者へのメッセージ)を作成します。
  • 一定の期間、多くの送信者(買い手)と受信者(売り手)がこのようなトランザクションを作成する可能性があります。
  • すべてのトランザクションは、ネットワーク上ですべてのノードにブロードキャストされます。 特定のトランザクションがネットワーク内のすべてのノードに到達する必要はないことに注意してください。
  • 各ノードは、新しいトランザクションをブロックに組み立てます。 各ブロックのトランザクションのセットは、他の人が作成したブロックのセットとは無関係であり、当然他の人とは異なることに注意してください。 これは重要ではありません。システムは、ネットワーク上でブロードキャストされるすべてのトランザクションが、妥当な時間をかけて何らかのブロックに含まれるようにします。 一般的に、送信者は、その努力のために一定量のビットコインをマイナーに提供することにより、ノードにインセンティブを与えます。 鉱夫は、より高いインセンティブを持つ人々にブロックに含めることを優先することを選ぶかもしれません。
  • ノードは、組み立てられたブロックの作業の証明を見つけることになりました。
  • ノードは、プルーフオブワークを見つけると、ネットワーク上で組み立てられたブロックをブロードキャストします。
  • 新しいブロックを受信したノードは、ブロック内のすべてのトランザクションが有効であり、まだ使用されていないことを確認した後にのみ、それを受け入れます。
  • ブロックが有効であると受け入れられた場合、独自の新しいブロックで動作しているノードは、トランザクションが複製されないように、ブロック内のトランザクションを再構築する必要があります。 ノードは、新しく作成されたブロックで作業の証拠を見つけることになりました。その間、受け入れられたブロックのハッシュを前のハッシュとして使用します。
  • 同様に、ブロックチェーンは永遠に成長し続けています。

さて、システム全体がどのように機能するかを見てきましたので、いくつかの副作用とそれらを解決する方法を説明しましょう。

ブロックチェーン-鉱夫へのインセンティブ

「ビットコイン-マイニング」の章で見たように、鉱夫はいつでも多くのトランザクションであふれている可能性があります。 ブロックの最大サイズはシステムで事前に定義されており、特定の数のトランザクションのみをブロックに含める必要があります。

ブロック内のトランザクションの数は、事前に定義されたブロックサイズと各ブロックの平均長によって決まります。 ここでの重要なヒントは、送信者がメッセージに多くの情報を含めてメッセージを短くしないようにして、マイナーが他の長いメッセージの前にそれを受け入れるように奨励することです。

通常、送信者は、特定の数のビットコインに関して取引手数料を追加して、鉱夫が自分のブロックに早期に含めるように奨励します。

ブロックチェーンを構築する際の他の結果は、その単なるサイズです。 ある期間にわたって、ブロックチェーン全体が大きくなりすぎて、ノードがディスクに保存できない場合があります。 これは、次に説明するマークルツリーを使用して解決されます。

ブロックチェーン-マークルツリー

ブロック内のすべてのトランザクションは、画像に示すようにマークルツリーでハッシュされるため、ノードのディスクスペースの問題は簡単に克服されます-

マークルツリー

ブロックヘッダーには、前のブロックのハッシュ、Nonce、およびマークルツリーの現在のブロック内のすべてのトランザクションの*ルートハッシュ*が含まれるようになりました。 この*ルートハッシュ*にはブロック内のすべてのトランザクションのハッシュが含まれているため、これらのトランザクションを整理してディスク領域を節約できます。 だから今、あなたのブロックチェーンは以下の画像のようになります-

ルートハッシュ

これにより、ディスクスペースを大幅に節約できます。 この戦略は、他の人から支払いを受け取ることに関心がある通常のクライアントが使用します。 ただし、マイナーは完全なブロックチェーンを保存する必要があります。 ここで問題が発生します。受信者が受け取ったコインを元の場所まで追跡する能力を持たずに支払いを検証する方法です。 これについて次に説明します。

ブロックチェーン-支払い確認

ベンダーとして、過去に行われた特定の支払いを確認したい場合を考えてみましょう。 マシンに保持しているブロックチェーンには、前の図に示すようにブロックヘッダーのみが含まれているため、ブロックチェーンのコピーには検索対象のトランザクションがありません。

目的のトランザクションにタイムスタンプが付けられているブロックが見つかるまで、ブロックチェーンのコピーを逆方向に検索できるようになりました。 ここで、選択したブロックのマークルツリーをリクエストすると、探しているトランザクションが得られます。 これは以下の図に示されています-

支払い確認

ここでは、Tx103を探していると仮定します。 Tx103の内容を表示できない場合もありますが、Tx103が属するブロックとチェーン内の後続のすべてのブロックでこれが受け入れられていることがわかります。 したがって、このトランザクションを安全に信頼し、ビジネスを進めることができます。

ブロックチェーン-競合の解決

これまで見てきたように、ビットコインネットワークには複数のマイナーが含まれています。 2人の異なるマイナーがProof-of-Workを同時に解決し、チェーン内の最後の既知のブロックにブロックを追加することは可能です。 これは以下の画像に示されています-

競合の解決

これで、ブロック3の後に2つのブランチができました。 両方のブランチが有効です。 そのため、次のマイニングブロックはどちらのブランチにも追加できます。 マイナーが新しくマイニングしたブロックをブロック104-Aに追加するとします。ブロック104-Aを含むブランチは、ブロック104-Bを含むブランチより長くなります。 これは以下の画像に示されています-

ビットコインアーキテクチャ

ビットコインアーキテクチャでは、最も長いブランチが常に優先され、短いブランチがパージされます。 したがって、ブロック104-Bをパージする必要があります。 このブロックを削除する前に、このブロック内のすべてのトランザクションがトランザクションプールに返され、それらがマイニングされて将来のブロックに追加されます。 これにより、競合が解決され、システムによって単一のブロックチェーンのみが維持されます。

ブロックチェーン-プライバシー

すべてのビットコイン取引を記録している元帳が完全に公開されると、プライバシーが危険にさらされます。 世界の誰もが誰が誰に支払ったかを知ることができるでしょうか? 従来の銀行システムは、記録を機密に保つことにより、この種のプライバシーを維持できます。

ビットコインシステムのプライバシーは、異なる戦略によって達成されます。 ビットコインの送信者は誰に支払うべきかを知る必要があると言ったことに注意してください。 そこで彼は、支払いを希望するベンダーの公開鍵を要求します。 この公開鍵は匿名にすることができます。

ある意味では、一部のサービスのベンダーとして、誰かが支払いをどこに送るか尋ねてきたとき、あなたは彼にあなたの公開鍵を送るだけです。 この公開鍵とあなたとの関連付けは、台帳のどこにも記録されません。 そうすれば、このトランザクションの外にいる人は、どれだけの金額が取引され、どの公開鍵にお金が支払われるのかしか知ることができません。

高度なプライバシーを実現するために、すべてのトランザクションについて、各トランザクションごとに新しい秘密/公開キーを生成して、サードパーティによってグループ化された複数のトランザクションをグループ化できないようにすることができます。 部外者にとって、これは単に、より小さな値の複数のトランザクションが行われ、それらが共通のソースにリンクされることは決してないことを意味します。

最後に、オンラインのインターネットベースのシステムは、悪用に対して脆弱です。 ここで、ビットコインシステムに対するいくつかの可能なタイプの攻撃と、それらの軽減方法について説明します。

ビットコイン-攻撃の軽減

ビットコインシステムでの3つの異なるタイプの可能性のある攻撃について説明します-

レースアタック

攻撃者は、おそらく2つの異なるマシンを使用して、同じコインを異なるベンダーにすばやく連続して送信できます。 仕入先がブロックの確認を待たずに商品を配送すると、採掘プロセス中に取引が拒否されたことがすぐにわかります。 この種の攻撃の解決策は、ベンダーが商品を発送する前に少なくとも1つのブロック確認を待つ必要があることです。

フィニーアタック

この場合、攻撃者は鉱夫です。 鉱夫は自分のトランザクションでブロックを採掘し、システムでそれを解放しません。 彼は2番目のトランザクションで同じコインを使用し、事前に採掘されたブロックを解放します。 明らかに、2番目のトランザクションは最終的に他のマイナーによって拒否されますが、これには時間がかかります。 このリスクを軽減するために、売り手は商品をリリースする前に少なくとも6つのブロック確認を待つ必要があります。

51%攻撃

この種の攻撃では、誰かが51%を所有しているという非現実的な仮定を思いつきます。ネットワークの計算能力の。 この種の攻撃の攻撃者は、プライベートブロックチェーンを採掘し、そこでコインを二重に使います。

彼はコンピューティング能力の大部分を所有しているため、ある時点でのプライベートブロックチェーンが「正直な」ネットワークのチェーンよりも長くなることが保証されています。 その後、システム内のプライベートブロックチェーンをリリースし、正直なブロックチェーンに以前に記録されたすべてのトランザクションを無効にします。

この種の攻撃は架空のものです。ネットワーク全体の計算能力の51%以上の計算能力を獲得するのは非常に費用がかかるためです。

ブロックチェーン-結論

この短いチュートリアルでは、ビットコインを事例として取り上げて、ブロックチェーンのいくつかの概念を紹介しました。 ビットコインは、ブロックチェーンの最初の成功した実装です。 今日、世界はいくつかの業界でブロックチェーン技術のアプリケーションを発見しており、中央集権的な機関の関与なしでの信頼が望まれています。 ブロックチェーンの世界へようこそ。

さらに読む-