Macにローカル環境で動くTestnet版BTCPay serverを入れてみよう
まえおき
みなさん Bitcoin 払いで買い物をしたことがありますか?自分は...ありません。せっかくなら使ってみたいと思いませんか?そんなあなたに今日ご紹介するのが
「BTCPay server」です!
これを使えば一連の Bitcoin 払いの流れを構築する事が可能です。ということで今日はローカル環境で Testnet 版 BTCPayserver を入れてみたいと思います。
やり方はこちらを見ながらやっていきます。
環境
PC:Mac
OS:Mojava 10.14.1
BTCPay serverとは
Bitcoin, altcoin, Lightning Network などに対応したペイメントプロセッサーになります。ペイメントプロセッサーとは決済代行サービスのことで、Visa や Mastercard などがそれに当たります。詳しくはこちらのブログが非常によくまとめられています。(BTCPayServer はモナコインのサービスをどう変える? (2 of 3)|cryptcoin_junkey|note)
BTCPayServer は、登録したユーザごとに、店舗を設定し、請求時点でのコインのレートを考慮した請求書を発行し、回収のための QR コードを表示する画面を表示し、回収が成功できたかどうかまでを管理します。
(BTCPayServer はモナコインのサービスをどう変える? (2 of 3)|cryptcoin_junkey|note)
また、github ではユースケースも紹介されています。(btcpayserver-doc/UseCase.md at master · btcpayserver/btcpayserver-doc · GitHub)
オンラインストア、一般店舗の支払い用としても活用できます。
全体像
btcpayserver-doc/Architecture.md at master · btcpayserver/btcpayserver-doc · GitHub
自分は最初勘違いしていたのですが、BTCPayserver はあくまで「ペイメントプロセッサー」です。なので BTCPay server だけで Bitcoin 払いの店ができるわけではありません。
大事なのでもう一度言います。
”BTCPay server だけで Bitcoin 払いの店ができるわけではありません。”
つまり Bitcoin Core をインストールし、フルノードを立てる必要があります( Bitcoinを使用する場合は Bitcoin Core 。有料ならそんなことしなくても出来る見たいです。)
実際に必要なものとして以下が書かれています。これらは最低限必要なものですので、サーバー、もしくはPCに入れて連結する必要があります。
The minimal setup involves:
- BTCPayServer
- NBXplorer (Lightweight block explorer, responsible for tracking payments)
- Bitcoin Core
- (Optional) PostgreSQL
btcpayserver-doc/Architecture.md at master · btcpayserver/btcpayserver-doc · GitHub
事前準備① Bitcoin Coreを入れる
先ほど説明したように、Bitcoin Core を使います。まだないよという方は以下の記事を参考に入れてください。また今回は testnet に繋げるので、testnet に繋げた状態で起動してください。
mochi-mochi-blockchain.hatenablog.com
NBXplorer
A minimalist UTXO tracker for HD Wallets.
らしいです。*よくわからなかったので説明を省きます。ごめんなさい。UTXOをトラックするwalletってなに!?
まあとにかく必要みたいなのでインストールしましょう。ただ、その前 .NET core SDK というものが必要です。以下のリンクに飛び、Dawnload ボタンを押しましょう。ダウンロード後は開封して画面にしたがっていけばOKです。
.NET Core SDKはすでにあるよ&インストール終わったよという方は以下のコマンドを打ってインストール、ビルドをしましょう。インストール場所は無難に Users/ユーザー名 とかでいいのではないでしょうか。自分は Users/toshiki に入れました。
$ git clone https://github.com/dgarage/NBXplorer
$ cd NBXplorer
$ ./build.sh
ビルドに問題なく成功したら以下を入力して起動します。( Bitcoin Core の同期が終わっていないとエラーが出るかもしれません。その時は同期が終わるまで待ちましょう。)
$ ./run.sh -testnet --btcrpcuser=bitcoin.confで設定したrpcuser名 --btcrpcpassword=bitcoin.confで設定したrpcpassword名
BTCPayserver
いよいよ本丸です。インストール、ビルドは以下のコマンドです。シンプル!インストール場所は先ほどと同じように Users/ユーザー名 にしておきます。
$ git clone https://github.com/btcpayserver/btcpayserver.git
$ cd btcpayserver
$ ./build.sh
<git clone>
<./build.sh>
無事ビルドが終わったら起動しましょう。
起動画面中にある http://127.0.0.1:23001/server/maintenance を適当なブラウザで見てみましょう。すると以下の画面が現れます。
これで無事ローカル環境で動くTestnet 版 BTCPay server を入れる事が出来ました。左上のBTCPAYのロゴ横に testent が出ていればOKです!めでたしめでたし。
途中遭遇したエラーたち
①testネットに繋げない問題
<状況>
BTCPayserver を起動下は良いものの以下の画面が左下にずーと出ます。
君のノードは同期中だよ、と言ってるわけですが NBXplorer headers height: 0 が永遠に続きます。
<原因>
NBXplorer , BTCPayserver 共に testnet に繋げていなかった。
<解決策>
NBXplorer , BTCPayserver それぞれ起動する際に --testnet
を追加
NBXplorer 起動コマンド
$ ./build.sh --testnet
BTCPayServer 起動コマンド
$ ./build.sh --testnet
<解決策考案までの流れ>
まず同期中の下に "The node in offline"と書いてあります。でも bitcoind は立ち上げっているし、同期も終わっています。つまり Bitcoin Core と NBXplorer との間に問題があるはず!ターミナルを覗いて起動の流れを見てみます。
うん、mainnet に繋いでいるね。Bitcoin Core は testnetn に繋いでいて、NBXplorer はmainnet に繋いでいるため "The node in offline" となっているわけです。じゃあNBXplorere を testnet に繋いであげましょうという事で、github を見てみるが特に記載なし。なので help を見てみます。help は以下のコマンドでみれます。
$ ./build.sh --help
--testnet と書いてありますね。これをつければいいのか?という事で試したら解決。
②いつまでも同期しない問題
<状況>
Your nodes are synching... のメッセージがずっと出る。
<原因>
NBXplorer と接続できてない。
<解決策>
NBXplorer 起動時に bitcoin.conf 設定した rpcuser とrpcpassword を追加して起動する。
$ ./run.sh -testnet --btcrpcuser=bitcoin.confで設定したrpcuser名 --btcrpcpassword=bitcoin.confで設定したrpcpassword名
<解決策考案までの流れ>
オフラインにはなっていない。ノードは立ち上がっている。じゃあ何と同期してない?Bitcoin Core と。ということは bitcoin.conf で設定した何かを立ち上げ時に追加してやればいいんじゃね?となると多分認証系だから rpcuser 名とrpcpassword が怪しい。みたいな流れだった気がする。詳しくは覚えていない 。
③謎のwarn問題
<状況>
途中謎の warn が出現します。whitlist 追加しろよだって
<原因>
127.0.0.1がconf file に設定されていないので、怪しくない?となっている(たぶん)
<解決策>
bitcoin.conf の中に127.0.0.1を追加する。
<解決策考案までの流れ>
エラーに書いてある通りだしそのまま従った。NBXplorer の conf ファイルと Bitcoin Core の conf ファイルのどっちだろうと思ったけど、とりあえず Bitcoin Core から変えてみるか思ったら当たった。
まとめ
ここまでは割とすんなり。。。ってわけでもなかったですね。(たぶんレベルの問題)
普通に大変でした。困ったら help を見ようって感じです。
// 頭のメモリと処理性能を上げる方法を知りたいです。
参考資料