(O+P)ut

アウトプット



(O+P)ut

エンジニアのアウトプット

【仮想通貨/NFT】ブロックチェーンでトレーサビリティが確保できる理由

スポンサーリンク

はじめに

ブロックチェーンの応用例として、ブロックチェーンの追跡機能を利用するものがあります。

ブロックチェーンには、自動で取引履歴が残り改ざんできない、信頼性の高い情報のトレース(追跡)機能があります。

今回はブロックチェーン技術の持つトレース機能を説明するために、暗号通貨であるビットコインの所有をどのように判定しているのかについて解説しました。

そのビットコインの所有者は誰?

まずはブロックチェーンではない例として、Aさんが500円玉を使ってコンビニで買い物したとします。
その500円玉に着目すると、以下のように持ち主が動いていきます。

取引時刻 送り主 受け取り主 使用シーン
08:00 お客 Aさん 店員 Bさん コンビニで500円玉で支払い
08:12 店員Bさん お客 Cさん コンビニで500円玉のお釣り
08:49 お客さんCさん 店員Dさん カフェで500円玉で支払い

と言っても当たり前ですが誰も硬貨1枚ずつを管理しているわけではないのでAさんはその硬貨が1時間後にどこにあるのかを追跡することは不可能です。

一方でこの500円玉がビットコインとなれば話は別で追跡が可能です。
なぜ追跡が可能なのかというと、それはビットコインを送付する時の仕組みを見れば理解できます。

例えば、過去AさんがBさんに3BTC送りました。ある時、そのビットコインを使ってBさんがCさんに1BTC送りたいとします。

普通に考えれば、3BTCを持っているので1BTCだけをCさんに送って残りの2BTCをBさんは持っておきます。

しかし、ビットコインではそれはできずに3BTCを全て送る必要があります。
ただしもちろん全部送ると手元に何も残らないので以下のように2BTCを自分宛に送ります。
f:id:mtiit:20181222214302p:plain

300円を持っていた場合に100円の商品を買うのに300円払って200円お釣りをもらうイメージです。

なぜこんなことをするのかというと、そのトランザクションの正当性の確認に利用するから。
Bさんが発生させたトランザクションの正当性を確認するポイントは以下の2つです。

1. 過去にBさんは3BTCを送付されている
2. 送付されてからBさんはそれを送付していない

かなりシンプルな制約、Bさんの残高なんてどうでもよくて過去に同額のトランザクションを受け取っていることのみがポイントになります。

ブロックチェーンでは分散台帳型システムを採用し、参加者全体でその取引に不正がないかをチェックしあっています。そして過去の取引はブロックチェーンに参加する各参加者が皆共有しています。

例えば悪意のある誰かが不正な送金をしようとしても
「あなたは過去にその金額を送付されていないよね?」または「その金額は既に使ってるよね?」という観点で簡単に不正を見破ることが可能です。
これが受け取った同額を送付に利用させる仕組みの肝です。

この仕組みがおもしろいのは、Bさんが受け取った3BTCはAさんから来ましたが、Aさんが誰にもらったのかも突き止めることができます。ブロックのどこかに、誰かがAさんに3BTCを送っているトランザクションが存在するからです。

逆にBさんはCさんに支払った1BTCがどのように使われるかは、Cさんが送付する情報を見れば分かってしまいます。どんな形であれ、1BTCを送付するからです。

この仕組みを用いれば、例えば赤十字に送られたビットコインがどのように使用されるのかもきちんと追うことができるというわけです。
ちなみに、受け取ったトランザクションを合算して送付することも可能です。
f:id:mtiit:20181222224244p:plain

終わりに

ブロックチェーンでトレーサビリティが確保できる理由は、

  • 分散型台帳には過去のトランザクションがすべて保持される
  • 特定のトランザクションはインプットとアウトプットが同一という制約の元で検索できる

からです。

ご参考になれば幸いです。