【基礎】口座残高の表現に関して2

A
TeamGeekHash
Published in
3 min readJan 16, 2019

前回の記事に引き続き、口座残高の表現はどのように行われているのかということについて簡単にまとめます。

前回の記事ではブロックチェーンに焦点を絞らずにかなり一般化してまとめたので、今回はブロックチェーンではどう適用されるのかというところにフォーカスを当てて書きます。

前回の記事の最後に「UTXO」という単語が登場しました。これが主にビットコインでの残高表現方法における重要なキーワードになってきます。

UTXOとは、Unspent Transaction(=Tx) Outputの略称で、「自分が所有しているが、未使用の状態にあるトランザクション」です。

例えば、コイン識別方式におけるお釣り(=送金後の自分への送金)や、送金して、相手のアドレスでロックされているコイン(後述)のことです。このUTXOの和の合計を計上すれば、自分の残高が表現されるという寸法です。

ちなみに、ビットコインのマイニング報酬の一部は、トランザクションでのお釣りから差し引かれた一部がマイナーに送金されることによって成り立っています。(送金手数料)

公開鍵暗号の応用

ブロックチェーンには、公開鍵暗号技術が用いられています。ブロックチェーン状の取引データは万人にオープンなので、取引のセキュリティを強化し、持ち主以外は使用不可能にする仕組みが必要だからです。

では、前回の例を用いて、公開鍵暗号技術がどのように応用されているのかを簡単に説明したいと思います。

前回の例は、例えば、A(UTXO=残高100円玉一枚)がB(UTXO=残高100円玉一枚)に50円送金するという状況でした。Aはまず、100円玉を差し出し、Bに50円を送金します。お釣りの50円のうち5円(例)がマイナーに報酬として送金され、45円がAの手元に戻ってきます。この45円がUTXOでした。

公開鍵とは、全ての人が使用可能な鍵です。誰でも鍵をかけることができます。また、公開鍵をもとにアドレスが生成されています。

秘密鍵とは、自分以外は使用不可能な鍵です。自分しか鍵を開けることはできません。

AがBに50円送金する際、AはBの公開鍵を使ってアドレスに送金すると、AからBに送られた50円はロックされます(BのUTXOとなる)。(お釣りの45円は、Aのアドレスへ送金されます。つまり、Aは自身の公開鍵を使ってAのアドレスにて45円をロックします。)

Bは、UTXOの合計(残高)が100円玉と50円玉で合計150円になります。ここで、例えばBが「C」に50円の送金を行う際は、鍵がかけられている50円を自身の秘密鍵を用いてロックを解除する必要があります。このプロセスが、通信をセキュアに行うだけでなく、本人証明の役割も果たします。

まとめ

UTXO方式での残高表現のメリットとしては、並列処理に長けているために分散型での通信と相性がいいことです。一方、デメリットとしては送金の度にUTXOが増えてしまい、過去のブロックからアカウントが所有しているUTXOをかき集めて計算する処理が煩雑化していってしまうということが挙げられます。

--

--