Denryu上のイシュー解決方法とLightning Networkの仕組み

HashHub
HashHub
Published in
7 min readDec 20, 2018

Denryuのプロダクト設計などを担当している東です。

今週Denryu Systemをとりあえず日本でまずβ公開して、まだ色々粗い部分もあるのですがすでに100人以上の人に使っていただいてLightning Networkを体験してもらっています。また、バグ報告やフィードバックをすでに色々もらったりしており、イニシャルユーザーの方々ご協力ありがとうございます。(iOSユーザーからは、when iOS?と聞かれていますが…)

さて、こちらの記事では今のところDenryuで起きていたイシューについての解決方法や対策を説明しつつ、ユーザー目線でもLightning Networkがどういう風な仕組みになっているかあわせて一緒に解説します。

チャネルが一向に開かない問題

まず最初に多く発生してしまった問題で、SaruTobiをプレイしてサルを100m以上飛ばして、チャネル開設ボタンを押したのに一向にチャネルが解説されずに困った、という現象です。一応こちらはすでに一定の処置はしまして、今最新のSaruTobiウォレットをインストールしていただければ、問題なくチャネル開設が出来るはずです。

もしまだOpening…で詰まっている人は、SaruTobi内の”reset Link”ボタンを押せばアプリの再インストールなどなしで、再度チャネルオープンリクエストが出来ます。(なので、もし仮にダメだったら、少し時間をおいて再挑戦してください)

一応こちらの「チャネルの開設」について何をやっているか説明をすると、Lightning Networkは利用を始める前に一度「チャネル」の開設が必須になります。この「チャネル開設行為」はビットコインのオンチェーントランザクションの一種で、Denryuの場合は、Denryu Hubが各ウォレットユーザー向けに「チャネル開設」オンチェーントランザクションを作成し、チャネルを作りにいっています。

このような仕組みにすることで、ユーザー側は特にビットコインを保有してなくても、Lightning上の受金や送金が出来るようにしています。ただし、チャネル開設トランザクションはオンチェーントランザクションなので、承認されるのに1ブロック、およそ10分ほど最初は待つ必要があります。一度チャネルが開設出来れば、後はSaruTobi上でチップの受取りをしたり、LN上の他のユーザーに送金をしたりするのは即時かつ現状ほぼ無料で可能になります。これがLN上の送金の強みですね。

では、なぜチャネル開設トランザクションが上手く通るユーザーと通らないユーザーがいたのか?ですが、これはハブ側が持っている承認済みのUTXOの数の話などが関わるのですが、こちらについては細かい話なので機会があれば別記事か何かの形で説明します。一応今の時点ではこちらについても対応をしたので、チャネル開設はもう少し安定して実行できるようになっていると思います。

チップが受け取れない問題

DenryuとSaruTobiのリンク(チャネル開設)が完了して、ゲームをプレイしチップを受け取っていたユーザーが、あるタイミングからチップを受け取れない、という問題が発生していました。複数こちらも報告をもらっています。これに関しては実は根本的に直せることはないのですが、SaruTobi内でLNを使ってBananaを購入したり、もしくはSaruTobi外の別のLappやWalletに送金をすることで、チップの受取りが再び可能になります。なぜこんなことになっているのか理解するために、Lightning Networkの仕組みについて少し説明します。

ここで問題になっているのは、チャネルのキャパシティー(Channel capacity)です。

先ほどLNでは事前にチャネルを開設する必要があるという話をしましたが、同時に重要なファクターとして、「チャネルにいくらビットコインを預けておくか」というものがあります。LN上でチャネルを開いても、仮に預けたビットコイン量が0だったとしたら、チャネル上で送る「玉」が存在しないため、何も送ることはできません。

通常のユーザーからは少し見えづらくしていますが、Setting内のView channel detailsというところから、それぞれのチャネルのCapacity(最初にどれだけのビットコインをデポジットしたのか、というのは確認できます。

なので、上記の状態でSaruTobi上で理論的にチップとして受け取れるチップ合計額の最大値がこのユーザーにとっては20,000satoshiということになります。なので、追加でチップが受け取れなかった人というのは要はチャネル上のお金の玉切れです、ということになります。

じゃあ玉切れになったらもうこれ以上受け取れないのか、というと、実はこれが面白いところで、この自分が受け取ったビットコインの玉をゲーム内で消費したり、他の場所に移したりすることで、事実上チャネル内のキャパシティーを補充することが出来ます。こちらもかなり面白いかつ重要なコンセプトなのでまた別の機会にちゃんと説明しようと思います。

LN上で全額送金が出来ない問題

もう一つ、ユーザーによっては、受け取ったビットコインを全てゲーム内で消費したり、もしくはウォレット外に引き出そうとしたユーザーもいるかもしれません。例えば、合計10,000satoshiもらったので、10,000saotoshiを丸ごと使ってSaruTobiゲーム内のバナナを購入しようとしたとします。ただし、これをやるとウォレット上でエラーメッセージが出るはずです。

これはLNのユーザビリティー、UX上の課題の一つなのですが、それぞれのチャネルにはReserveなどと呼ばれる、保証金のようなものが必要になってきます。これはいざという時にチャネルをクローズ出来るようなバックアップのようなものなのですが、このReserveの存在のせいで10,000satoshi受け取っていたとしても、実際に送金可能な最大金額は例えば94,000 satoshi、というような形になってしまいます。なので資金を移動させたい人は、全額ではなく全額より少し低い金額を送ろうとすれば問題なく送金は可能なはずです。これがシンプルな説明なのですが、本当はこれに追加して複数のハブを経由、いわゆるHopをするとこちらの問題がさらに少し複雑化します。

上記のような問題は個人的にはウォレットのUIやハブとの連携部分などで工夫すればUIやフロントエンド、サービス側で大部分わかりづらい部分は吸収できると現状考えており、こちらも今ユーザーからのフィードバックなども参考に試行錯誤しているような状態です。

というわけで、まだまだβ版という感じで他にも細かい問題や、LNDレベルの問題ですぐに直すのは難しい部分などもありますが、現在安定させるために一つ一つ潰していっています。Lightningの場合は、実装部分の工夫や設計だけでなく、流動性の話などをどうカバーするか、などの経済モデル設計的な部分が実は非常に面白い分野でして、こちらについてもまたおいおい解説していこうと思います。

さて、課題や仕組みについてはこれでなんとなくわかったと思いますが、次の記事ではSaruTobiで手に入れたビットコインをではどのように使うべきか、どのようなサービス、Lappsが現状存在しているか、について話そうと思います。せっかくですので、SaruTobiをプレイしてゲットしたビットコインを原資にさらにLightning Networkで出来ることを一緒に体験していきましょう!

--

--

HashHub
HashHub

ブロックチェーンを次のステージへ The Blockchain Studio based in Tokyo https://www.hashhub.tokyo/