LNで質問箱サービスを作る方法
11月11日に終了する「モナバコ」というサービスがあります。ツイッターでよく見かける「Peing 質問箱」のようなものですが、質問をする人がモナコインで支払う金額を提示し、回答者は回答することでその金額のモナコインを手に入れるというサービスです。サービス終了の理由は来年から日本で施行されるカストディ規制によるもので、一般ウケしそうな内容のサービスだけに残念です。そこで、ライトニングネットワークを利用して、カストディ規制にも対応した「資産を預からない」モナバコの作り方を考えてみました。
必要知識:LNトランザクションの流れ
LN上のトランザクションは基本的に受け取る側がインボイスを発行するところから始まります。
インボイスには
・preimage-hashという受け手が持つ秘密データpreimageのハッシュ
・金額、宛先、説明などのデータ
が含まれています。
支払う側がインボイスの通りに支払いを実行すると、受け手はそれを確認し、preimageを支払者に送ります。支払者はハッシュ値を使って、本物のpreimageか確認します。
(※今回の話に関係ない部分は省いています。もう少し詳しい説明はここを見てください。)
LNを活用した質問箱サービスの流れ
さて、上記のLNの特性を利用してモナバコのようなサービスの流れを考えてみましょう。ノンカストディで実現するにあたって、特にpreimageが鍵を握ります。・質問者が(質問、金額)をサービスに提示
→受け取ったサービスは、これを回答者に提示します。
・回答者が(回答、インボイス)をサービスに送信
→サービスは支払いが確認できるまで回答を保管する一方で、インボイスをコピーし、質問者に送信します。
・質問者はインボイスを使って回答者に支払い
→質問者と回答者の金銭のやり取りは直接ライトニングネットワーク上で行ってもらいます。
・質問者は支払いの結果として受け取ったpreimageをサービスに提示
→ここで、サービス側は受け取ったpreimageと保管しておいたインボイスのpreimage-hashを比較することによって、質問者と回答者の間で支払いが行われたことを確認します。
確認がとれたら、質問者に回答を送信、または回答を公開します。これによって、支払い自体は外部化しつつ、支払いがあったことを確認することができ、エスクローのようなものが務まります。
特徴、問題点
今回紹介した仕組みを利用する何よりのメリットは、とても手軽にサービスを開発できるところです。特にユーザーの資産を預からないという点で、セキュリティ面や規制対応などに関して有利になります。
他にも、サービス提供者がノードを立てることすら不要なので、一般的なウェブ開発経験のあるエンジニアさえいれば作ることができます。懸念点として考えられるインボイスの共有は、少しだけプライバシー面での不利益(取引した時間やノードのIDを公表することになる)がありますが、LN上で流れている情報ではあるのでセキュリティ上の脅威とは言えません。
preimageに関しては、回答者と支払い後の質問者以外にも、LNの経路上の他のノードが保管している可能性があるので、それらのノードの所有者がアクセスしてくるかもしれないことを念頭に置く必要はありそうです。
また、金銭をも預かる通常のエスクローサービスと違い、金銭が支払われる前にサービスに納品(質問の回答)がされています。金銭が支払われなかった場合、質問者は回答を知ることはできませんが、回答者はタダ働きをしたような状態になってしまいます。したがって、価値の大きいものを扱うのには向いていないかもしれません。(もしくは公共性のあるものにして、誰でも支払うことができるようにするとか)
おわりに
質問箱サービスはノードを持たずして作れるLN関連サービスの一例にすぎません。(ちなみに、余裕があれば実装したいと思っています。)
実際にノードを動かして支払いを受けたりする以外にも、支払いはユーザー同士に委ねるちょっとしたサービス開発ができることによって、これから今までにない面白いサービスが生まれてくるかもしれません。ぜひ、思いついたら作ってみたり、アイデアを共有してください。
関連記事
最新記事
読者になる
ビットコイン研究所の新着記事をお届けします。
ディスカッション