つい最近、一部ビットコイナーがツイッターでgun.funというサイトについてつぶやいていたのを見かけました。いかにも銃器が趣味の人たち向けのサイトかなというドメインで、ビットコイナーも銃が好きな人が多いので勝手に納得していましたが、アクセスしてみると実はビットコインウォレットでびっくりしました。(笑)

GUNとはGo Up Numberの略だそうで、そんな頭の悪いネーミングにもぐっとくるものを感じてしまいます。年末なので肩の力を抜いて、今日はDLCに特化したビットコインウォレットのgun.funを紹介します。

https://gun.fun

コマンドラインウォレット

一般ユーザー向けのビットコインウォレットは基本的に視覚的に操作しやすいGUIが提供されています。ほとんどの人はコマンドラインでソフトウェアを操作することができないので当然ですね。

ところが今日紹介するGun.funは多少マニア向けだからか、あるいはGUIを開発する手間を省きたかったからか、シンプルなコマンドラインウォレットとして提供されています。

もう1歩深入りすると、GUNはBitcoin Dev Kit (BDK)というモバイルウォレット向けライブラリを使って開発されていて、GUIの含まれていないBDKを使ってあえてCLIのみ提供すれば開発する部分をDLC関連のロジックだけに絞れることが決め手になったのでしょう。

BDKの開発者は現在Spiral (旧Square Crypto)に在籍していてLightning Dev Kit (LDK)の開発に携わっています。

簡単にDLCで賭け事をセットアップ

DLCで一番面倒なのは相手を見つけることで、二番目に面倒なのは取引を作成するために両者でPSBT (作りかけのビットコイントランザクション)をやりとりすることです。GUNはこの2点に重点的に取り組んでいます。

まず、DLCに参加してくれる相手を募る「プロポーザル」を生成することができます。生成するには使用するオラクルと対象のイベント、そして賭ける結果と賭けたい金額の情報を入力します。また、生成されるプロポーザルには入金用のPSBTとその後のDLCのPSBTが含まれているため、公の場に出すとオンチェーンの資金と紐づくというプライバシー面での欠点があることには注意が必要です。

生成ができたらプロポーザルのバイナリーデータを文字列にエンコードして、興味がありそうな人たちに渡します。ツイートするもよし、チャットで送るもよし、ブログに載せるもよし。

ちなみにGUNはツイッターでのやり取りを想定してbase2048という狂気のエンコーディングを使用しており、これは1ツイートに最大385バイト(1バイト=8ビット)のデータを含めることができます。手の込んだ顔文字ばりに文字をフル活用しているBase2048は元々ツイッター向けのエンコーディングとして生まれていたことも、今回調べていて初めて知りました。一応普通のJSONとして出力することもできるようです。

プロポーザルを見た他の人はそのプロポーザルを受け入れるオファーを返すか、あるいは交渉などを目的にメッセージを返すことができます。いずれかのレスポンスを公開しても、他者にはどちらなのかさえわからないように暗号化されます。もしオファーであれば、その中には賭けに応じる側の入金UTXOが追加されるなどして完成されたPSBTが含まれることになります。

このレスポンスもまた、文字列にエンコードして賭けを提案した人に渡します。

もしレスポンスがオファーだった場合、あとは入金トランザクションを配信することでDLCが開始されます。参加した賭けについて結果が出たか確認したり、結果が出た賭け事を決済することもコマンドラインから簡単にできるようになっています。

GUNの弱点

上記の特徴からもわかるように、GUNはツイッターでの使用を主に想定したソーシャルなDLCウォレットで、プライバシー面での配慮はほぼありません。Torにも対応していませんし、バックエンドもEsploraというオープンソースのブロックエクスプローラーを自分で立てるかmempool.spaceを使うかという二択で、多くの人は後者を選ぶと考えられます。(BDKに依存する制約でBitcoinノードにつなぐことはできない)

また、オファーを出す側はオファーを出した時点で署名済みのトランザクションを渡しています。なので、賭けの結果が出る前、あるいは賭けに影響する時間に達する前にまだそのトランザクションが配信されていない場合、すなわち賭けの提案者が賭けにコミットせずにいる場合は自衛のために入金UTXOを使った別のトランザクションを配信する必要が出てきます。さもなくば不利な結果が出た後や形勢が不利になった後に配信されてしまうリスクがあります。操作自体はcancelコマンドで一発なのですが、これも忘れず手動で行う必要があるのはユーザーのミスを誘いそうです。

あくまでα版とのことですので、使用するなら自己責任でお願いします。

まとめ

・Go Up Number (gun.fun)はCLIのみ提供のDLC専用ビットコインウォレットで、ツイッターでワイワイ賭け事をやるのにはけっこう便利そう

・ただし、この使い方をする場合はプライバシーが全くない

・自力でEsploraのインスタンスを用意できなければmempool.spaceなどのサービスにも色々知られてしまう

・自衛のためのオファーのキャンセルトランザクションの発行も簡単な操作だが忘れず行う必要がある

個人的には試す前にもう少し待ちたいなと思いましたが、現在それほど広く使われていない印象のBitcoin Dev Kit、Lightning Dev Kitへの関心も強まったので、来年はぜひこのあたりも見てみたいと思いました。

皆さん、良いお年を。