LoginSignup
36
18

More than 3 years have passed since last update.

MonacoinでLightning Networkを使ってみた

Last updated at Posted at 2018-01-21

k.jpg

どうも。
今回は、日本発祥の暗号通貨、モナコインでLightning Network(以下LN)を使い、知り合いとマイクロペイメントチャネルを開いて、手数料ゼロで送金してみたいと思います。

LNってなに

LNとは、ブロックチェーン技術の一つです。
元々、マイクロペイメントチャネルというものを使い、2者間で送金手数料を無料にする仕組みがあります。
それをさらに複数人で稼働させ、メッシュネットワークのような送金チャネルを作り出し、多数の人間で、手数料を無料で送金し合える仕組みをLNと呼びます。手数料問題・遅延問題が話題になっているビットコインをスケールアウトする仕組みです。
詳しくはググって、どうぞ。

monacoind または monacoin-qt のインストール

LNを実行するために、まずはフルノードが必要となります。
自分は以下のようにしてappimageを落としました。

$ wget https://github.com/monacoinproject/monacoin/releases/download/monacoin-0.14.2/monacoin-0.14.2-x86_64-linux-gnu.tar.gz
$ tar xvf monacoin-0.14.2-x86_64-linux-gnu.tar.gz
$ cd monacoin-0.14.2/bin
$ ls
monacoin-cli  monacoin-qt  monacoin-tx  monacoind

他のOSやアーキテクチャのダウンロードリンクは公式ページにあります。
ここでフルノードを起動させます。monacoin-qt(GUI)を使用します。

monacoind/monacoin-qtの設定

まず、設定ファイルを作ります。

$ mkdir ~/.monacoin
~/.monacoin/monacoin.conf
server=1
rpcuser=myuser
rpcpassword=12345678
txindex=1
zmqpubrawblock=tcp://127.0.0.1:30000
zmqpubrawtx=tcp://127.0.0.1:30000

ユーザー名とパスワードは適宜好きなものに変更してください。

monacoind/monacoin-qtの起動

$ nohup ./monacoinqt &

起動したら、monacoin-qtの場合はデータディレクトリを聞かれるので、~/.monacoin/monacoin.conf(初期値)を設定してください。

これで、localhost:9402でJSON-RPCなAPIを使えるようになります。

eclairのダウンロード

LNを扱うためのツールですが、有志がeclairのMonacoin版を作ってくれているので、それを使います。

$ wget https://github.com/monapu/eclair/releases/download/v0.2-alpha4-mona2/eclair-node-javafx_2.11-0.2-SNAPSHOT-mona2-8ee486c-capsule-fat.jar

最新版は https://github.com/monapu/eclair/releases から取得できます。javafxと接尾語があるものがGUI版、無いものがCUIとのことです。今回はGUIを使います。

eclairの設定ファイル

$ mkdir ~/.eclair
~/.eclair/eclair.conf
eclair {
  bitcoind {
    rpcuser = "myuser"
    rpcpassword = "12345678"
    rpcport = 9402
    zmq = "tcp://127.0.0.1:30000"
  }
  server {
    port = 9735
  }
  api {
    binding-ip = "127.0.0.1"
    port = 8087
  }
  node-alias = "mynode1"
  node-color = "FF0040"
}

ユーザー名とパスワードはさきほど設定したものに変えてください。
また、node-aliasは、ネットワーク上での自分の名前として扱われるので、好きにハンドルネームなどをきめてください。

ポート開放/転送

パソコンのファイアウォールの設定から、9735/tcpを開放し、またルーターの設定で9735番をグローバルから自身のマシンにポート転送するようにしてください。

eclairを起動

$ java -jar ./eclair…(省略)capsule-fat.jar &

触ってみる

まず、monacoin-qtにいくらか(0.1Mona程度)送金しましょう。
次に、eclairの左上の、「Chennels」→「Open Channel ...」より、ペイメントチャネルをひらきたい相手の「Node URI」を入力します。

例えば私の場合は「037786877800ae5e640cc427b7a3d5dc232994d3a9ecd3480755b10c5ead937089@1.2.3.4:9735
」になります。
また、http://lnmona.ml/ を運営している方のNode URLは「03aafadba1c7608a52b8defcb880e52c76d06eb36b6cb740ef94649b2a5277701e@lnmona.ml:9735」になります。

このNode URIで相手に接続できます。

次に、Capacityに、ペイメントチャネルにデポジットしたいMonaを、Push Amountに最初に送金したいMonaを入力しましょう。自分の場合は両方1milliMona(0.001Mona)にしました。

Node URI の作り方。

eclairの左下にPubkey(英数字の羅列)があるのでそれをコピーします。
そのうしろに@、さらに自分のグローバルIPアドレス、そして:の後にポート番号を指定します。

たとえば、さっき載せた私のpubkeyは037786877800ae5e640cc427b7a3d5dc232994d3a9ecd3480755b10c5ead937089 です。

チャネルの中で送金してみる

実験中。

最後に

ライトニングネットワークを使えば、Opening transactionとclosing transactionの手数料だけで、あとは無制限に、自分とチャネルを開いていない人でも無料の送金ができます。
※ただ、中間に居る人は自身を介するときに手数料を設定できます。
たとえば、取引所間に一つライトニングネットワークができれば、一瞬で手数料なしで取引所間を移動できますし、投げ銭をするときも、その人とネットワークのどこかで繋がっていれば手数料は無料になります。
ぜひ使ってみてください!

ちなみに、以下は冒頭に貼った画像です。2018/01/21 午後18時ごろのモナコインのライトニングネットワークの様子を表示しています。

k.jpg

参考

https://qiita.com/Nxtima1/items/d68f75202fc4f633c9ec
https://github.com/monapu/eclair/blob/master/README.mona.md
https://askmona.org/4955

追記

12/25時点での最新のネットワーク(上から少し変化しました)

k.png

36
18
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
36
18