今更ながらビットコインにおける匿名性に関する技術について調べていてCoinjoin Transctionについて疑問を持った。
この記事でもCoinjoin Transactionについては「複数のトランザクションをまとめてしまってプライバシーを高めるんだぜ!」くらいしか書いておらず、ググってもCoinjoinについて言及している記事はなかなか出てこなかった。
もしかしたらほとんどの人が「複数のトランザクションをまとめるとプライバシーが守られる」という一文だけでその仕組みを理解できているから、言及された記事がないのかもしれないが、僕のように理解できない人も一定数いると思うので、Coinjoin Transactionの根本の考え方についてまとめていく。
まずBitcoinのプライバシー問題が、なぜ起こるのか。
Bitcoinにおいてブロックチェーンには「BitcoinアドレスAからBitcoinアドレスBにいくらのBitcoinが送金された」という履歴が永遠と記録されており、その記録は誰でも閲覧することができる。
通常、Bitcoinアドレスと現実世界の個人・組織は紐づけられてはいないため、この記録が閲覧されたところでプライバシー問題にはならない。
しかし、特に大きな額の取引を行う主体においては、過去の取引記録や利用するウォレット、取引所、IPアドレスなどのデータから、個人や組織が特定されてしまう可能性がある。
もちろん、特定されてしまうとその個人がどれだけのBitcoinをいつどこに送金したのかなどが筒抜けになってしまう。
また、万が一あるBitcoin残高がマネーロンダリングなどの犯罪に使われたコイン(トランザクションアウトプット)であると判明した場合は、そのコインの、ひいてはBitcoin全体のお金としての価値が大きく下がってしまう可能性もある。
このような理由からBitcoinのプライバシー問題は発生し、解決していかねばならないとされている。
この解決策の一つがCoinjoin Transactionである。
Coinjoin Transactionは「複数のトランザクションをまとめるとプライバシーが守られる」仕組みである。
今回はこの仕組みをすごくシンプルな例で説明する。
この画像を簡単なブロックチェーンのブロックの中身を表したものだとしよう。
たくさんのトランザクションが書き込まれているのがわかると思う。
この画像の中で「名前」で書かれているところは本当はBitcoinアドレスである。
この時、緑で塗られた二つのトランザクションをまとめてみる。
すると、上記の画像のようになる。
マイニング仙人もだいすけくんも共に1bitcoinのインプットのトランザクションを生成しているため、これらを合わせると、「マイニング仙人がゆうちゃんに送金したのか、だいすけくんがゆうちゃんに送金したのかが分からなくなる」。同様にどちらがなべさんに送金したのかも分からなくなるはずだ。
今度は、上記の画像の黄色に塗られた2つのトランザクションをまとめてみよう。
すると上記の画像のようになる。
この時、先ほどの緑トランザクションのCoinjoinと同じように「かずくんとだいすけくんのどちらがゆうちゃんに送金したのか」が分からなくなると思いきや、そうではないことがわかる。
何故なら、だいすけくんのインプット額1bitcoinではなべさんへのアウトプット額50bitcoinには足りないことが明白であるからだ。
このように、ここではだいすけくんとかずくんのインプット額に大きな差がありすぎるため、Coinjoinを行なっても匿名化ができていないことがわかる。
ここで見たようにCoinjoinには
- 同額のインプットを持つトランザクション同士しか結合しても意味がない
- 同時にそのトランザクションが存在しなくてはならない
という問題がある。
この問題への解決策としてまだまだ色々あったが、今回はこの辺で…
0コメント