卒論から始まるBlockchain

卒論から始まるBlockchain

俺の屍を越えて行け

Macにローカル環境で動くTestnet版BTCPay serverを入れてみよう

まえおき

 みなさん Bitcoin 払いで買い物をしたことがありますか?自分は...ありません。せっかくなら使ってみたいと思いませんか?そんなあなたに今日ご紹介するのが

「BTCPay server」です!

github.com

これを使えば一連の Bitcoin 払いの流れを構築する事が可能です。ということで今日はローカル環境で Testnet 版 BTCPayserver を入れてみたいと思います。

やり方はこちらを見ながらやっていきます。

github.com

 

環境

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

オンラインストア、一般店舗の支払い用としても活用できます。

 

全体像

f:id:mochi-mochi-0397:20181113131453p:plain

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-doc/Architecture.md at master · btcpayserver/btcpayserver-doc · GitHub

 

事前準備① Bitcoin Coreを入れる

先ほど説明したように、Bitcoin Core を使います。まだないよという方は以下の記事を参考に入れてください。また今回は testnet に繋げるので、testnet に繋げた状態で起動してください。

mochi-mochi-blockchain.hatenablog.com 

coin-wave.com

 

NBXplorer

A minimalist UTXO tracker for HD Wallets.

GitHub - dgarage/NBXplorer: NBitcoin Explorer

らしいです。*よくわからなかったので説明を省きます。ごめんなさい。UTXOをトラックするwalletってなに!?

まあとにかく必要みたいなのでインストールしましょう。ただ、その前 .NET core SDK  というものが必要です。以下のリンクに飛び、Dawnload ボタンを押しましょう。ダウンロード後は開封して画面にしたがっていけばOKです。

dotnet.microsoft.com

 

.NET Core SDKはすでにあるよ&インストール終わったよという方は以下のコマンドを打ってインストール、ビルドをしましょう。インストール場所は無難に Users/ユーザー名 とかでいいのではないでしょうか。自分は Users/toshiki に入れました。

  • $ git clone https://github.com/dgarage/NBXplorer
  • $ cd NBXplorer
  • $ ./build.sh

f:id:mochi-mochi-0397:20181203235457p:plain

f:id:mochi-mochi-0397:20181203235538p:plain

 

ビルドに問題なく成功したら以下を入力して起動します。( Bitcoin Core の同期が終わっていないとエラーが出るかもしれません。その時は同期が終わるまで待ちましょう。)

 

$ ./run.sh -testnet --btcrpcuser=bitcoin.confで設定したrpcuser名 --btcrpcpassword=bitcoin.confで設定したrpcpassword名

f:id:mochi-mochi-0397:20181206120423p:plain

 

BTCPayserver

いよいよ本丸です。インストール、ビルドは以下のコマンドです。シンプル!インストール場所は先ほどと同じように Users/ユーザー名 にしておきます。

 

$ git clone https://github.com/btcpayserver/btcpayserver.git

$ cd btcpayserver

$ ./build.sh

 <git clone>

f:id:mochi-mochi-0397:20181203235335p:plain
 

<./build.sh>

f:id:mochi-mochi-0397:20181203235314p:plain

f:id:mochi-mochi-0397:20181203234433p:plain

無事ビルドが終わったら起動しましょう。

f:id:mochi-mochi-0397:20181204151433p:plain

起動画面中にある http://127.0.0.1:23001/server/maintenance を適当なブラウザで見てみましょう。すると以下の画面が現れます。

f:id:mochi-mochi-0397:20181206122044p:plain

これで無事ローカル環境で動くTestnet 版 BTCPay server を入れる事が出来ました。左上のBTCPAYのロゴ横に testent が出ていればOKです!めでたしめでたし。

 

途中遭遇したエラーたち

①testネットに繋げない問題

<状況>

BTCPayserver を起動下は良いものの以下の画面が左下にずーと出ます。

君のノードは同期中だよ、と言ってるわけですが NBXplorer headers height: 0 が永遠に続きます。

f:id:mochi-mochi-0397:20181204150933p:plain

<原因>

NBXplorer , BTCPayserver 共に testnet に繋げていなかった。

 

<解決策>

NBXplorer , BTCPayserver それぞれ起動する際に --testnet を追加

 

NBXplorer 起動コマンド

$ ./build.sh --testnet

f:id:mochi-mochi-0397:20181204123517p:plain

 

BTCPayServer 起動コマンド

$ ./build.sh --testnet

f:id:mochi-mochi-0397:20181204151433p:plain

 

<解決策考案までの流れ>

まず同期中の下に "The node in offline"と書いてあります。でも bitcoind は立ち上げっているし、同期も終わっています。つまり Bitcoin Core と NBXplorer との間に問題があるはず!ターミナルを覗いて起動の流れを見てみます。

f:id:mochi-mochi-0397:20181208002943p:plain

うん、mainnet に繋いでいるね。Bitcoin Core は testnetn に繋いでいて、NBXplorer はmainnet に繋いでいるため "The node in offline" となっているわけです。じゃあNBXplorere を testnet に繋いであげましょうという事で、github を見てみるが特に記載なし。なので help を見てみます。help は以下のコマンドでみれます。

$ ./build.sh --help

f:id:mochi-mochi-0397:20181208003212p:plain

--testnet と書いてありますね。これをつければいいのか?という事で試したら解決。

 

②いつまでも同期しない問題

<状況>

Your nodes are synching... のメッセージがずっと出る。

f:id:mochi-mochi-0397:20181204154242p:plain

<原因>

NBXplorer と接続できてない。

 

<解決策>

NBXplorer 起動時に bitcoin.conf 設定した rpcuser とrpcpassword を追加して起動する。

$ ./run.sh -testnet --btcrpcuser=bitcoin.confで設定したrpcuser名 --btcrpcpassword=bitcoin.confで設定したrpcpassword名

f:id:mochi-mochi-0397:20181204155138p:plain


<解決策考案までの流れ>

オフラインにはなっていない。ノードは立ち上がっている。じゃあ何と同期してない?Bitcoin Core と。ということは bitcoin.conf で設定した何かを立ち上げ時に追加してやればいいんじゃね?となると多分認証系だから rpcuser 名とrpcpassword が怪しい。みたいな流れだった気がする。詳しくは覚えていない 。

 

③謎のwarn問題

<状況>

途中謎の warn が出現します。whitlist 追加しろよだって

f:id:mochi-mochi-0397:20181204161516p:plain

<原因>

127.0.0.1がconf file に設定されていないので、怪しくない?となっている(たぶん)

 

<解決策>

bitcoin.conf の中に127.0.0.1を追加する。 

f:id:mochi-mochi-0397:20181208004336p:plain

 <解決策考案までの流れ>

エラーに書いてある通りだしそのまま従った。NBXplorer の conf ファイルと Bitcoin Core の conf ファイルのどっちだろうと思ったけど、とりあえず Bitcoin Core から変えてみるか思ったら当たった。

 

まとめ

ここまでは割とすんなり。。。ってわけでもなかったですね。(たぶんレベルの問題)

 普通に大変でした。困ったら help を見ようって感じです。

 

// 頭のメモリと処理性能を上げる方法を知りたいです。

 

参考資料

sipsorcery's blog

How to Setup BTC and Lightning Payment Gateway with BTCPayServer on Linux [Manual Install] - freedomnode.com