ブロックチェーン生成の一幕
「ブロックチェーン」と呼ばれる技術は、正しい取引記録の塊(ブロック)を延々とつなげていきます。この仕組みは、暗合資産(仮想通貨)の送金リクエストの検証や不正防止に必要な革新的技術です。
では、順を追ってブロックチェーンが生成される経緯を確認していきましょう。
送金するという意味
実際のお金とは違い、ビットコインなどの暗合資産(仮想通貨)は、ただのデータです。そこで、最初に「送金」の意味を確認しましょう。
送金するということは、あるウォレットから別のウォレットにビットコインを送ることです。実際には、送金データはブロックチェーンと呼ばれるデータのかたまりに保存されていますので、ウォレットにあるのは、そのウォレットを特定するデータのみです(公開鍵など)。
また、ビットコインはデータの集まりですから、実際にお金を送金するわけではありません。そこで、ビットコインにおける送金とは、”あるウォレットから別のウォレットに幾ら送るというデータを有効にする”ということです。
送金リクエストの流れ
ビットコインを自分のウォレットから他の人に送金する場合の手順は以下の通りです。
送金リクエストの流れ
送金内容の記述
自分のウォレットからAさんのビットコインアドレスに○○BTCを送る
電子署名
送金内容を秘密鍵を使って暗号化
リクエストをP2Pへ送信
公開鍵情報とともにP2P(外部のネットワーク)に送る
上記のような手順で送金リクエストをすると、リクエストを受け取ったパソコンなどのコンピュータ(ノードと呼ばれます)は、どのようにこの送金リクエストが正しいと確認するのでしょうか。また、二重払いを防ぐ方策はどうなっているでしょうか。
-
関連記事ビットコイン送金時に必要な3つの情報
公開鍵、秘密鍵、ビットコインアドレス 最初に「公開鍵」「秘密鍵」「ビットコインアドレス」の意味を確認しましょう。ビットコインを送金するために、とても重要な役割を持っています。次に、これらを使った送金の ...
続きを見る
暗合技術とは
送金リクエストを確実に実行する方法として、「ブロックチェーン」と呼ばれる暗合技術が使われています。ブロックとは、正しい取引の記録の集まりです。それがつながっているのでブロックチェーンです。
ちなみに、「正しい」とは、送金者が希望の送金先に間違いなく送ることができるかどうかという意味の正しいとは少し異なります。送金者が送金先のビットコインアドレスを間違えて入力すれば、意図した送金先でないところに送金されてしまいます。
ここでいう「正しい」とは、”ビットコインのシステムに照らし合わせて不整合がない”という意味です。例えば、残高が1BTCなのに5BTCを送金したいと要求していないということであり、送金先には指定されたビットコインアドレスが存在するということです。
ブロックに含まれる情報
ブロックには、以下の情報が格納されます。
ブロック情報
- 直近10分程度の間に世界中で出された送金リクエスト内容
- ひとつ前のブロックの計算結果(ハッシュと呼ばれます)
- ナンス(nonce)
ナンスは、このブロックを計算してハッシュを計算するために必要な文字列です。ナンスについては、「ビットコインの採掘(マイニング)」についてを記事にする時に詳しく触れる予定です。
ノードはブロックのデータを検証して、すべて正しい(二重払いなどの要求がない)と認定すれば、タイムスタンプを押して確定し、ブロックチェーンの最後にくっつけます。そして、そのデータはもう変更しません。この作業を10分ごとに繰り返します。
送金リクエストの不正防止
送金リクエストが正しいかどうか(第三者が不正に送金依頼をしたものではないか)を調べるには、送金者の公開鍵を使ってリクエスト内容を確認できることをチェックすればOKです。送金したいという人が作った公開鍵でなければ、暗号化されたリクエストを見ることができないからです。
また、リクエストの内容を見れば、例えば「1BTCをもっているのに10BTCを送金したい」といった間違ったリクエストをしていないか?という検証も可能になります。
この検証が可能なのは、ビットコインのサービスが始まった2009年以来の全ての取引記録が、ブロックチェーン内のデータで公開されているからです。送金リクエストと過去の履歴を照らし合わせれば、その送金が正しいか不正かの判定が可能です。
重複する正しいブロック情報
このようにして、P2Pネットワークに参加しているあるコンピュータ(ノード)が、このブロックを検証したところ、すべて正しいと分かったとします。
そこで、このブロックのデータは計算の誤りもなくOKですよ!と世界中に宣言したいです。しかし、同じように計算しているコンピュータは世界中にいくつもあります。
取引データは全世界で1種類だけですから、いろいろなコンピュータがそれぞれ正当性を主張しても、どれを採用してよいのか分かりません。全世界で正当な取引データは一つしかないからこそ、ビットコインのデータは信用できます。
放置されるブロックも
また、仮にどのコンピュータの検証も正しいとしても、それぞれのコンピュータが検証したブロックの内容が同一のものだとは限りません。
というのは、ブロックは直近10分間くらいの送金リクエストをまとめたものですが、それぞれのノードが自由にブロックを作ることができるからです。
このため、ある送金リクエストが出されて全世界に広まる途中でブロックが作られたり、(送金手数料がゼロに設定されたなどの理由により)送金リクエストがあるブロックには掲載されずに放置されたりする可能性があります。
不正なブロックも
その他、正当性を主張しているコンピュータの中には、ビットコインを盗もうと考えている不正なものが紛れ込んでいるかもしれません。悪意を持って不正な取引を承認させようとする行為は、51%攻撃とも呼ばれています。
こうして考えると、どのコンピュータの主張を正当なものとして採用すれば良いのかが分からなくなります。この問題を解決するのが「プルーフ・オブ・ワーク(proof of work)」と呼ばれる、ブロックチェーンの正当性を確認するための検証方法です。
そして、この作業そのものがビットコインの採掘(マイニング)です。
-
関連記事ビットコインの採掘(マイニング)とは
ブロックチェーンの正当性をチェック ナンス探しの競争原理 計算方法も答えも公開されている状態でのナンス探しですが、この正解を得るための特定の方程式などはありません。そこで、適当な文字列をナンスに入れて ...
続きを見る