当店のビットコイン/ライトニング対応を支える技術(主にBTC Pay)について

いつもご来店ありがとうございます!

GAME BAR – Hello, world! のマスター、ただひろです。

今回は、当店で対応しましたビットコイン/ライトニング(以下BTC/LN)での支払いについての、ほんの少しだけ専門性の高い記事(とは言えざっくり説明)となります。

興味を持たれた方には、ぜひとも導入して欲しいという気持ちを込めて投稿します。また、BTC/LNの普及も期待しております。

はじめに 

さて、当店では先日5/23より、当店でビットコイン/ライトニング(以下BTC/LN)での支払いに完全対応致しました。

※初回支払いは実験的に5/21に実際に実施されました。いずれにせよ、多分日本でトップクラスに早い導入だと思います。

また、対面支払いでの対応のみならず、当店の「スマホから注文できるシステム」から直接BTC/LN支払いが可能となる機能も追加いたしました。

今回は、このBTC/LNのシステム周りについて紹介いきたいと思います。

そもそもBTC Payとは

BTC Pay (https://btcpayserver.org/ja_JP/)

BTC Payは「自分のサーバーで動かせる自由なBTCの処理システム」です。誰でも自由に、無料で、プライベートな仮想資産の処理システムを作ることが出来ます。第三者による管理や手数料もありません。

一度インストールしてしまえば、ほぼワンボタンでBTC対応のウェブストアを作ったり、BTC対応のPoSアプリとして使えるので、非常に導入価値のあるアプリケーションとなっています。

もちろんインストールには、それなりにサーバーサイドの知識が必要になってしまうのですが、あまりLinuxに自信の無いマスターもなんとか実装できました。

Lightningについて

ここで重要になってくるのはLightning(ライトニング、以下LN)という技術です。

ビットコインでの取引は、現実問題として「取引が遅い」「手数料がかかる」という欠点がありました。これを解決する為に発明された技術の1つがLNです。

技術についての概要は下記のサイトが詳しく分かりやすかったので、興味がある方はご覧ください。

BTC Payを使えば、割とすぐに、このLNを使ったストアアプリを作成することが可能になります。

ひいては、当店で現実に取引する上で、安全かつ確実に、素早く行うことが可能になります。また、手数料もなくなる為、当店のように高額でない買い物に送信手数料を払う、といったバカバカしい事もなくなります。

それなら、当店でもがんばって実装してみることにしました。

当店での実際の仕様について

詳細は長くなってしまう為、割愛させて頂きますが(興味がある方はぜひとも直接お話しを聞きに来てください!)かなりざっくり表現すると、下記のような構成となっております。

(背景がオレンジ色の部分)当店のオーダーシステムは店内サーバー用ラズパイで処理していますが、ここにBTC Payサーバー(背景が緑色の部分)を追加しました。

BTC Payサーバーに使っているラズパイは、普段はトランザクションノードの同期だけを行っています。インボイス作成時には、ここにオーダーシステムのphpからPOSTしたデータをAPIを通じて送信しているだけです。(構築部分以外は本当に簡単です)。

BTC Payのサーバーを別に分けた理由として、初めての試みなのでオーダーシステムごと落ちるのを防ぐ為&トランザクションの同期が定期的に発生するので処理を分散する為という2点が挙げられます。

もしこのまま安定して動作することを確認した上で、ラズパイではないスペックの十分なPCを用意した場合、そのPC1つで十分対応できるかな、と考えています。

おわりに

以上、駆け足でしたが、以上が当店のシステムの、かなりザックリとした説明となります。

当店でのBTC/LNの対応を可能にしてくれたBTC Payとその他多数の(挙げきれない程の)関係者様に厚く御礼を申し上げ、感謝する次第です。

まだまだ素人なマスターですが、もし何か聞きたい事があればお気軽に、当店へお越し/リプライを飛ばしてください。以上よろしくお願いいたします!

 

余談ですが、BTC Payサービスが動いている環境があれば、それを誰かからレンタルしてショップを作ることも可能です(実際に既にいくつかサービスが存在しています)。が、”Don’t trust, verify!” という思想的な関係で、今回は完全に自前で用意しました。
同様の理由で当分はBTC/LNで運用していく予定です。他のアルトコインに対応する予定はございません!