【基礎】口座残高の表現に関して
今回は、ブロックチェーンにおける各々の口座における残高の表現方法についての理解に必要である基礎的な情報を簡単にまとめていきたいと思います。
アカウントの表現方法は大きく以下の2つに分類されます。
・アカウントベース方式
・コイン識別方式
アカウントベース方式
アカウントベース方式は、仕組みとしては非常に単純な考え方で残高を表現する方法です。銀行口座ではこちらの仕組みが採用されています。
例えば、A(残高100)がB(残高100)に50送金するとします。
このとき、Aの残高は、100−50=50となり、一方でBの残高は100+50=150となります。
アカウントベース方式の場合、Aの元々の残高100が50に書き換えられ、更にBの元々の残高100は150に書き換えられます。
コイン識別方式
コイン識別方式は、イメージとしてはより現金での支払いに近い考え方です。
同様に、上記の例の状況を考てみます。
更に、通貨の単位を円とし、AとBは100円玉を1枚ずつ所有しているとします。
AはBに50円送金したいので、まず100円を差し出します。
100円のうちの送金するべき50円はBに送金され、残った50円はお釣りとしてAに再び送金されます。
分解された2つの50円の所有者は1枚はAからBに変わり、もう1つの所有者はそのままです。
まとめ
アカウントベース方式では、取引を行う二者間での残高の更新は同時に行われなければなりません。
何故なら、片方の同期が終了しない間に次の取引が行われた場合、正しい取引結果が反映されない可能性が生じるからです。
そしてこれは、並列処理に適していないということを意味します。
コイン識別方式では、同期に差が生じた場合でも送金の時差は両者の口座残高の結果に影響を及ぼしません。
これはこの方式のメリットであり、各ノード間での同期に時間が生じやすい分散型システムにおいて並列処理を行いやすいということを意味します。
この考え方に、公開鍵暗号技術を用いてブロックチェーンに応用した表現方法がUTXOです。