how-bitcoin-work

【図解】ビットコインの仕組みをわかりやすく解説(5) マイニング(Proof of Work)

前回は、二重支払い問題と取引の改ざん問題について解説しました。 【図解】ビットコインの仕組みをわかりやすく解説(4) 二重支払いと取引の改ざん 第一回から読みたい方はこちらからどうぞ。 【図解】ビットコインの仕組みをわかりやすく解説 (1)ビットコインの何がすごい? 今回はついに最終回です。ビットコインの取引の承認の仕組みであるブロックチェーンとProof of Work(マイニング)について、わかりやすく説明していきます。 ブロックチェーンとは「取引のかたまりをつなげる」こと まずは、ブロックチェーンのイメージをつけていきましょう。 ブロックチェーンとは、その名の通り取引の入った箱(ブロック)をつないだものです。 ブロックチェーン ブロック:複数の取引が入った箱 チェーン:ブロックをつなげたもの 上の図のように、 単語カードの束をリングでつなげていくイメージです。それぞれの単語カードが取引で、リングをつなげていくようなイメージです。 さて、イメージがついたところで、ブロックの中身をもう少し詳しく見ていきましょう。 ブロックの中には、以下のものが入っています。 ブロックの中身 前のブロックのハッシュ値 複数の取引データ(厳密にはブロック内の全取引から作られるハッシュ値) ナンス(ブロックのハッシュ値を調整するためのデータ) ブロックは、**前のブロックとのつながり(チェーン)を示すために、前のブロックのハッシュ値を持っています。**ブロックのハッシュ値は、これらの前のブロックのハッシュ値、ブロック内の全取引、ナンスから計算されます。 Proof of Work(マイニング) Proof of Workとは直訳で仕事の証明です。具体的には、このブロック内の取引を承認するためのお仕事(ブロックを作成するための手順)です。 ビットコインでは、「ブロックのハッシュ値がある値より小さければ、正式なブロックとして認める(取引を承認する)」というルールを設けています。 ハッシュ値は、データがわずかでも変わると全く別の値になりますので、ナンスを違う値に変えると別の値になります。 取引を承認するためには、ひたすらナンスの値を変えて、このルールを満たすハッシュ値が見つかるなるまでハッシュ値を計算しつづける必要があります。狙ったハッシュ値を作ることはできませんので、これには大変な回数の計算が必要になります。 イメージとしては、ナンスをカレーの隠し味に例えると、美味しい隠し味が見つかるまで、いろいろな隠し味を試して味見をするという感じです。 ルールを満たすハッシュ値が作れるいいナンスが見つかると、そのブロックが承認されます。さらに、最初にナンスを見つけた人はビットコインがもらえます。 大変な計算をこなしたことへのご褒美ですね。このようなインセンティブ設計がうまく働いているため、取引に関わる二者以外に、自らすすんで承認してくれる第三者がいるのです。 このブロックを承認するための 一連の計算は、金(ゴールド)を得るために鉱山を採掘するのに似ているので**マイニング(mining)や採掘と呼ばれています。また、マイニングをする人はマイナー(miner)**と呼ばれています。 このProof of Workによってブロックがつながっていくことで、「いつ取引されたか」、つまり取引の順序が確定します。 改ざんを防ぐ仕組み これまで説明した仕組みを使って、ビットコインのシステムがどのように二重支払いや改ざんを防いでいるのか見ていきましょう。 改ざんの検知 取引を改ざんした場合、ブロックのハッシュを計算するための一部のデータが変わります。そうすると、ブロックのハッシュ値は全く違う値に変わります。 つまり、取引が改ざんされている場合「ブロックのハッシュ値はある値より小さいハッシュ値でなければならない」という ルールを満たさない値に変わっている可能性がきわめて高い ということです。 この改ざん検知のための計算は、1回のハッシュ値計算のみで済むため、ビットコインの参加者は誰でも簡単に改ざんを検知できます。 改ざんを防ぐ仕組み さらに、ビットコインにおいては、「一番長いチェーンを正しいものとする」というルールがあります。 過去の取引を改ざんしたい場合、他のマイナーがどんどん正しいチェーンのブロックを承認し続けているなかで、それ以上のスピードでマイニングを続け、一番長いチェーンを作成しなければなりません。 これを実現するためには、ビットコインのマイニング全参加者の半分以上の計算量が必要になります(この手法は51%攻撃と呼ばれています)。 ビットコインでは、全世界でマイニングに大量の電力が使われていますので、現実的には不可能に近いでしょう。 このように、マイニングの計算パワーが十分大きい状況において、一度確定した取引は改ざんがきわめて難しい仕組みになっています。 二重支払いをしようとする場合も、ブロック内にすでに確定した取引がある状況で、その取引を削除する必要がありますので、 改ざんと同様です。 まとめ これまで全5回に渡ってビットコインとブロックチェーンの仕組みを説明していきました。 ビットコインの仕組み お金の表し方 取引の表し方 取引の承認 ビットコインの仕組みを知っていれば、他の 暗号資産(仮想通貨)もビットコインの影響は多かれ少なかれ受けていますので、理解しやすいと思います。 もし、ビットコインをはじめとした暗号資産(仮想通貨)を購入される場合は、私は、その暗号資産の仕組みを調べてから買ったほうが無難だと思います。 例えば、**改ざんを防ぐ仕組みが脆弱だと、あなたの暗号資産が盗まれてしまうかもしれません。**信用できる第三者がいないということは、裏を返せばすべて自己責任の世界であり、クレジットカードのように盗まれた場合の補償はありません。 もし、ビットコインを買ってみたいという方は、その際にこのシリーズを見返していただければ幸いです。 あとがき ビットコインの仕組みを理解するためには、専門用語や暗号方式など、それなりの前提知識が必要であり、一般向けの入門書やWebではここまで説明していないものが多いです。 ...

2019-07-25 · 1 分 · mild.investor
how-bitcoin-work

【図解】ビットコインの仕組みをわかりやすく解説(3) 取引の表し方

前回は、ビットコインにおいてお金は取引の履歴で表されることを説明しました。 【図解】ビットコインの仕組みをわかりやすく解説 (2)お金の表し方 今回は、その取引をビットコインではどう表しているかについて説明します。 少しコンピュータの要素が強くなってきますが、電子署名、ハッシュといった専門用語についても、非エンジニアに向けてやさしく解説していきます。 第一回から読みたい方はこちらからどうぞ。 【図解】ビットコインの仕組みをわかりやすく解説 (1)ビットコインの何がすごい? 取引の表し方 取引は主に以下の情報です。 誰から 誰に いくら送った ビットコインにおいてもこれらの情報のカタマリとして表現しています。さらに、ビットコインにおける取引には2つのポイントがあります。 取引のポイント 送金する人は、送金する分以上のお金を持っている状態からでないと送金できない 送金する権利は、送金する人にある これは、現実世界の銀行振込でも同じですね。銀行振込でAさんからBさんに100円を送る場合は、Aさんの100円以上入っている銀行口座から、Aさんの通帳と銀行印で本人であることを証明します。 これをコンピュータ上で表すための仕組みを説明してきます。以下の図の例では、Aさんが100円持っている状態からBさんへ100円送る取引を示しています。 Aさんが100円持っていることを示すために、100円持っている状態の取引から、Bさん宛の取引を作成します。 そして、**Aさんが本人であることを証明するために、電子署名という仕組みを使っています。**取引の情報(Bさん宛のアドレス、金額)をハッシュ値という値に変換し、それに対してAさんしか知らない鍵(通帳と銀行印に相当)を使って署名をします。 これで、AさんからBさんへいくら送ったかという取引の情報を示せます。 さて、ハッシュや電子署名といった専門用語がでてきたので、これらについて説明していきます。 ハッシュとは ハッシュとは、あるデータを一定長の小さなデータに変換することです。 ハッシュには以下の特徴があります。 ハッシュの特徴 ハッシュ値から元のデータには戻せない 改ざんが困難。 元のデータを少しでも変えるとハッシュ値は全く別物になる 元のデータを小さなデータに変換し、その値が元のデータを一意に示すという性質が便利なことから、いろいろな場面で使われており、電子署名にもこのハッシュが使われています。 ハッシュについては、ここだけでなく、取引の承認の仕組みでも使われていますので、記憶にとどめておいてください。 送金者を証明する仕組み「電子署名」 電子署名とは、あるデータについて、それを作成したのが作成者本人であることを示すための仕組みです。 電子署名には公開鍵暗号方式という暗号の仕組みが使われています。公開鍵暗号方式とは、秘密鍵(人に公開しない鍵)と、公開鍵(人に公開する鍵)のペアの鍵を使って暗号化する仕組みです。 電子署名では、上の図のように、署名者の秘密鍵にて署名(暗号化)したハッシュ値は、署名者の公開鍵にて復号化 する (元のデータに戻す)という形で使います。 これによって誰でも、署名者(Aさん)の公開鍵で復号化したハッシュ値と、取引データから計算したハッシュ値とを突き合わせることで、取引が改ざんされていないことが確認できます。 公開鍵は、ビットコインにおいては宛先を示すアドレスとしても使用しています。先の取引を示す図での「Bさん宛」を示す情報は、実はBさんの公開鍵です。 公開鍵からは秘密鍵が推測できないようになっており、公開しても秘密鍵が漏れることなく安全です。ただし、秘密鍵が漏れると、送金の権利が漏れるということなりますので、その人のすべてのビットコインが盗まれるということになります。 取引の履歴=電子署名のチェーン 取引の構造としては、以下の図のようになります。 ビットコインにおいて、 お金(取引の履歴)は、電子署名のつながり(チェーン)として表現している というわけです。 次回:取引の承認の仕組み 次回からはいよいよビットコインの肝となる取引の承認の仕組みについて説明していきます。 https://amzn.to/2JJmjrX 【図解】ビットコインの仕組みをわかりやすく解説(4) 二重支払いと取引の改ざん

2019-07-21 · 1 分 · mild.investor
how-bitcoin-work

【図解】ビットコインの仕組みをわかりやすく解説 (2)お金の表し方

前回は、ビットコインの何がすごいのか、ブロックチェーンの特徴は何かというお話をしました。 【図解】ビットコインの仕組みをわかりやすく解説 (1)ビットコインの何がすごい? 今回からは仕組みのお話です。まずはじめに、ビットコインの仕組みの要素と、ビットコインでのお金の表し方について説明します。 ビットコインの仕組みの3要素 今回からビットコインの仕組みとして、以下の3つの要素を説明していきます。 ビットコインの仕組みの要素 お金の表し方 取引の表し方 取引の承認 ブロックチェーンは、このうちの「取引の承認」のために使われる技術です。 ブロックチェーンにを理解するためには、その前にまずコンピュータ上でお金がどのように表現されているかについて理解しておく必要があります。 お金の表し方 さて、ビットコインではお金をどうやって表しているのでしょうか。 結論から言うと、**ビットコインではお金を「取引の履歴(台帳)」として表現しています。**誰がいくら持っているというお金そのもののデータは持っていません。 なぜこれでお金を表現できるのでしょうか。 取引とは簡単に言うと 「誰から」 「誰に」 「いくら送ったか」 という記録です。 例として、いくつかの取引を並べてみましょう。 上の図では、Xさん、Aさん、Bさん、Cさんがそれぞれ誰にいくら送ったという記録が並んでいます。 これをBさんが関わった取引のみ抽出してみましょう。 上の図のように、Bさんの銀行通帳のような形になります。BさんはAさんから100円もらい、Cさんへ30円送っています。 これを集計すると、Bさんは70円持っていることがわかりますね。これは他の人についても同様に計算できます。 つまり、 取引の履歴のみで、それぞれの人がいくら持っているかがわかる というわけです。誰がいくら持っているかというデータを直接持つ必要はないのです。 次回:取引の表し方 ビットコインでは、このように取引の履歴(台帳)で、お金を表現しています。 次回は、この「お金」を表すために必要な「取引」の表し方について説明していきます。 【図解】ビットコインの仕組みをわかりやすく解説(3) 取引の表し方 https://amzn.to/32D7xub

2019-07-20 · 1 分 · mild.investor