暗号通貨とそれらが織りなす経済圏について⑤

アトミックスワップ。

を書くと言っておきながら、実はこれ、すごい難しいことに気づきました。バカですねー。

アトミックスワップを語る前に、まずペイメントチャネルをしっかり理解してからじゃないと話せないなと気づきました。一回ではまず無理でした。

なので、ペイメントチャネルの話を先にしたいと思います。こちらも難しいのですが、少しでも整理しておきたいなと思います。

前回触れたように、ペイメントチャネルはオフチェーンだよ、ブロックチェーンの外で取引するんだよ、といってしまえばそれまでなのですが、このさらっと使いがちな「オフチェーン」という存在を、まずはしっかり正面からキャッチせねばなのですね。

色々調べていくと、オフチェーンって・・・ブロックチェーンの外って、じゃあそれって何チェーン?どこのチェーン?どの世界に存在するの?って一瞬ゲシュタルト崩壊みたいになるのですが、落ち着きましょう(私だけ?)。

とってもシンプルに言うと、全部の取引行為をブロードキャストするか、しないか、だと思っています。

オフチェーンを理解するには、オンチェーンから。オンチェーンは、すべてのトランザクションをブロック単位にまとめて、ブロックチェーン上にブロードキャストすることで、ノードの皆さんが手元の台帳に記録していく、通常のブロックチェーンの動きです。

一方、オフチェーンは、すべてのトランザクションをブロードキャストするのではなく、台帳には記録するのは、一部だけにしたら?という何とも合理的で賢いやり方なのです。支払いに限らず、オーダー情報のマッチングやクリアリング(精算)、セトルメント(決済)といった、様々な機能ごとにトランザクションがあり、それらの一部をオンチェーンで、こっちはオフチェーンでやろうといった、それぞれのアプリケーション毎の設計があります。

何でそんなことするかっていうと、コストと時間の問題です。トランザクションが発生するたびに、いちいちチェーンにえいっとブロードキャストして記録していたのでは、手数料もかかるし、10分に1回しか承認されないビットコインブロックチェーンであれば、時間もかかるやん、という至極まっとうな理由なのです。

で、ペイメントチャネルは、それを送金のチャネルという概念に置き換えて理解すれば良いのではと思います。最初に一回チャネルを開いて、送金を開始。そのオープニングトランザクションはブロックチェーンに記録します。そこからはプレーヤーの間で複数回の送金が発生するので、AliceとBobの間で好きなだけトランザクションを渡し合ってくれていいのですが、ネットワーク全体へのブロードキャストはせず、双方でのやり取りが終わって、最後に終わりましたーの合図でチャネルを閉じる時に最終結果を全体にブロードキャストして、クロージングトランザクションとして、台帳に記録するというものです(ここでは二者間のペイメントチャネルとして取り上げています)。

その時に、どうやって途中のトランザクションを台帳に記録せずに、取引を進めることができているのか?というのが、シークレットという鍵とロックタイムという時限爆弾を活用した、人間の欲望の裏をかいている、複雑なようでいてシンプルな仕組みなんですよね。

これは、次回もう・・・少し書きたいなと。

なかなかステーブルの話に辿りつけませんが、急がば回れ・・・の精神でやっております。

今夜もありがとうございました。

参考文献:ブロックチェーン・プログラミング 山崎重一郎・安土茂亨・田中俊太郎著