さて、前回では秘密鍵と公開鍵についてお伝えしました。「Bitcoinを理解する」シリーズ3回目は、トランザクションの情報についてお伝えします。前回の記事をまだご覧になっていない方は、ぜひ下記リンクからご覧ください。
トランザクションは、Bitcoinシステムの中でも「核」ともいえる要素です。マイニングやブロック形成など様々な特徴があるBitcoinですが、基本的にこのトランザクションなくして他の要素は成立しえません。
トランザクションとは何かというと、つまるところ、Bitcoinシステムに参加している人々のもつ情報価値の移転をエンコードした「データの構造」ともいえます。また、それらは常にオープンな状態であり、パブリックであるため、誰でも閲覧することが可能な取引の記録そのものです。では実際に、トランザクションがどのように発生し、検証し、記録の一部になりうるかを知っていきましょう。
1.トランザクションの流れ
トランザクションは基本的に生成から始まります。この段階でトランザクションには署名(プライベートキーの入力)がされます。署名をするとは、「Bitcoinアドレスの中にある資金の保有者がその資金を送りますよ」という意思を入力することです。ただし、大半のアドレスでは見えない形でこの行為が実行されています。
つまり、署名というものは、アドレスにある資金を利用する許可を発生させるということです。その次にビットコインネットワーク(いろんなトランザクション情報やブロックがある場所)へつながり、伝えられます。その後にそれぞれのノード(Bitcoinネットワークへの参加者)に検証され、(ほとんどの)ノードに行き渡ります。そして最終的にマイナーらにも検証され、ブロック(台帳の中)に記録されます。
基本的にブロックの中に組み込まれ、他のブロックとつながる、つまりブロックチェーンに記録されたとき、ほぼ改ざんは難しくなり、ネットワークに受け入れられます。そしてその情報(=通貨)はまた次の所有者にも「カネ」として利用されます。
2.生成
トランザクション自体は、小切手を例に考えるとイメージを浮かべやすいです。トランザクションは、「ビットコインを送信するよ」という意思を表すもので、実際に利用されるまではビットコインのシステムからは認識されないものです。また、小切手同様に、トランザクションをつくりあげる人=トランザクションへ署名している人である必要はありません。
どういうことかというと、口座への正規の署名している人ではなかったとしても、トランザクションを「作る」ことは可能ということです。
具体的に例を考えてみましょう。
口座へアクセスすることができる人間は、銀行の社長による署名がはいった小切手をつくることができます。つまり、言い換えれば、ビットコインアドレスにアクセスができる人が、Bitcoinのトランザクションを作ることができ、トランザクションを有効にする署名を用いることが可能ということです。
小切手は、資金がある口座に情報を参照する一方で、ビットコイントランザクションは、ビットコインアドレス(口座)ではなく、「その前に行われたトランザクションを」参照にします。そうすることで、トランザクションは有効と認められ、送金に必要な情報が含まれていることになります。
このトランザクションは、ビットコインネットワークに伝わり、マイナーによってブロックチェーンの一部となります。
3.ネットワークへ
ブロックチェーンに紐付けされるためにトランザクションはまず、ビットコインネットワークに届けられなければなりません。ビットコインのトランザクションは、300〜400バイトというデータを持ちます。(1)
何万件もあるビットコインノード(ビットコインネットワークを支える中継点や、端末(スマホやPCなどのマシン))のうちに、どこか一つの点(ノード)に到達しなければなりません。送信側はいくつか複数のビットコインノードに広がっていくので、ノード(端末)それ自体を「悪意がある端末」かどうかを随時チェックする必要はありません。
また、その送信者が「どんなの人なのか」ということにもこだわりません。端末(ノード)側でも、送信者がいったいどこの誰なのか、ということを気にする必要もありません。トランザクション自体には「署名」がされており、まったく重要な情報をもっているわけでもないため、広げる方法自体はなんでもかまいません。
これが可能なので、ビットコインのトランザクションは、Wifi、Bluetoothなどを利用して、送信することが可能ということです。つまり「ビットコインを送信するよ」という意思表明をしているという情報が、どれか一つのノードに伝わればよい、ということです。逆を言うと、いかなる方法を用いてでもノードに送信する意思がつたわれば、他の誰にも邪魔される心配をする必要がない、ということです。
(1)バイト(byte)・・・情報の容量・大きさを表す。バイトとは、情報量の単位で、8ビットと等しい情報量である。1ビットが2通りの値を取ることができるので、1バイトは2の8乗通り、つまり256通りの値を表現することができる。(引用:ITトレンド)
4.伝達
「ビットコインを送るよ」という意思表明をしている人が、他のネットワークにいる人(ノード)に伝わった場合、その確認をした人(ノード)は、それが「間違いのない確かなもの」だということが確認できると、その人(ノード)は別の人(ノード)にもこのトランザクション情報を共有します。
ここで同時に、成功したということが、ビットコイン送信者のもとに返事としてかえってきます。もしこのトランザクションが無効である場合、失敗・認められないという意思がネットワークから返されます。
一つのノードは複数のノードに接続しており、常にその状態が保たれています。そのためにノードそれぞれに「優れている」・「劣っている」という順位のようなものはありません。有効と認められた新しいトランザクションは、接続されたノードがトランザクションを送るまで、それぞれの近隣ノードは他のノードにも「トランザクションの情報」を伝えるため、ゆっくりと波打ち際に波がくるようなイメージでビットコインネットワーク内にトランザクションの情報が行き渡ります。
5.構造
トランザクション自体は、前に送金された情報(インプット)から、送り先(アウトプット)への価値の移転を記号化しています。つまりビットコインは情報というものが、通貨としての役割を果たしているというものです。
いかがでしたでしょうか。かなり専門用語が羅列していますが、時折()を入れて伝えてみましたが、ビットコインの専門用語とその仕組みは、新たな仕組みであるため、一つずつ丁寧に理解していくと全体理解に繋がります。今回はトランザクションについて詳しく述べていきましたが、次回もトランザクションのことについてお伝えしていきます。