ビットコインを支えるブロックチェーンの技術について、ここであらためて、くわしく見ていきます。
ビットコインの一つひとつの取引は「トランザクション」と呼ばれ、すべてのトランザクションは「AさんからBさんへ◯BTC移動する」という形で記録されます。
AさんがBさんにビットコインを売る(=BさんがAさんから買う)場合も、AさんがBさんにビットコインを送る(=BさんがAさんから受け取る)場合も、AさんがBさんに何かの代金をビットコインで支払う(=BさんがAさんから受け取る)場合も、「AさんからBさんへ◯BTC移動する」という形で表現することができるからです。
未承認のトランザクションが積み上がっていく
ビットコインの取引は世界中で24時間、365日行われています。取引はすべてオープンになっているので、http://blockchain.info というサイトを見ると、最新のトランザクションがリアルタイムで更新されていくのがわかります。
しかし、ビットコインの取引はお互いに承認し合ってはじめて成立するので(『ビットコインはマネーロンダリングには使えない?』参照)、この段階では、すべての取引は「未承認」の状態です。そこで、ビットコインでは未承認のトランザクションをおよそ10分ごとにまとめて一つの「ブロック」とし、それを一括して承認する仕組みを採用しています。
新しく承認されたブロックは、すでに承認済みのブロックをひと続きにした一本の「チェーン(鎖)」の最後尾にガチャンとはめ込まれて追加されます。ここでようやく取引が成立するわけです。
逆にいうと、「AさんからBさんへ◯BTC移動する」という指示を出しても、そのトランザクションを含んだブロックが承認されない限り、取引は完了しないということです。ビットコインの送金指示から取引完了まで時間がかかるのは、承認待ちの列に並んでいるからなのです。
ハッシュ関数によって暗号化
個々のトランザクションは、ハッシュ関数という特殊な関数によって規則性のない一定の長さの文字列(「ハッシュ値」といいます)に置き換えられます。ハッシュ関数にかけると、どれだけ大きなサイズのデータでも、同じケタ数のまったく異なる文字列に置き換えることができるので、暗号技術でよく使われます。
たとえば、ここで仮に「AさんからBさんへ1BTC移動する」という日本語の文字列を「SHA256」というビットコインで利用されるハッシュ関数にかけると、
2E1A6323AD1223B3365E05DEF84D1AB22346C0BADC994AA1097D538CFDF048E6
という64ケタのハッシュ値が得られます。次に、0を一つ加えて「AさんからBさんへ10BTC移動する」という文字列を同じ「SHA256」にかけると、
0E5F09F9D3FA7C509D9CAFD775FA6C9CC23EBE30104D0FD4DEACD61E245468CA
という64ケタのハッシュ値が得られます。
このように、入力データをわずかでも変えるとまったく異なるハッシュ値が出てくるのが、ハッシュ関数の特徴です。そして、入力データからハッシュ値を生成するのは簡単ですが、ハッシュ値から元のデータを割り出すことはできません。つまり、不可逆的で、後から勝手に変更できないのです。それによって、ビットコインの取引が改ざんされることを防いでいるわけです。
手数料によって優先順位を上げる
個々のトランザクションには、わずかながら手数料が含まれています。たとえば、トランザクションのデータ量1000バイトごとに0.0001BTC(「1BTC=10万円」なら「10円」)かかるといった具合です。
小口の送金など、大半の取引では手数料は固定されていますが、送金額が大きかったりして、いち早く処理してもらいたい場合は、手数料を上乗せすることができます。
承認作業をしている「マイナー(採掘者)」にしてみれば、手数料が高いほうが取り分は増えるので、そうしたトランザクションを優先的にブロックに取り込むようにルールが整備されています。私たちのような取引所からすると、手数料を高めに設定すれば、自分のところの取引を早く承認してもらうことができることになります。
現在は、お店での決済というよりは、取引所を介した売買や送金が中心なので、手数料は安く抑えられていますが、今後、ビットコインの取引量が増えて、即時決済の必要性が高まると、手数料が上がっていくかもしれません。
45万個のブロックがつながる一本のチェーン(鎖)
cakesは定額読み放題のコンテンツ配信サイトです。簡単なお手続きで、サイト内のすべての記事を読むことができます。cakesには他にも以下のような記事があります。