Litを使いLightningNetworkをテストする【仮想通貨】
始めに
仮想通貨に関して勉強しなければならないと思うので勉強開始しています
まず目標としてはMonacoinに LightningNetworkをくっつけようと思います
仮想通貨に関してなんとなく知識がある人向けといった内容です
大雑把にLightningNetworkを説明すると
仮想通貨のチェーン上で取引を行うと
- 取引の確定が一瞬である
- 手数料がほとんどかからないので少額取引きをたくさん行える
- 仮想通貨のチェーン外(オフチェーン)なので、DBが大きくならない
などなど、各種メリットがある
LightningNetworkライブラリ
LightningNetwork(以下LN)の実装は色々ある
有名なものに LND、Lit、Lightningd、eclair、plasma、akiko pay 等があるらしい
この中でどれが人気なのかわからないが、今回は Litでテストしてみる
Litの特徴としては SPV(simplified payment verification)ノードという事
仮想通貨クライアントではフルノードをダウンロードする必要があるものと、不要なものとあるが
この不要なものがSPVノードである
LNにおいてSPVノードというものが何であるかは、今後調べるとして Litの特徴である
またGo言語で書かれていて 比較的評価の高いライブラリである
インストール
私は Windows10で WSL上のbashで作業を行いましたが、だいたいの環境で実行できると思います
Go
Goをインストール。色んなページあるのでそれを見て下さい(投げやり
特殊な事はありません
Lit
GitHubページはここ
https://github.com/mit-dci/lit
ソースをダウンロードし go buildしていきます
若干Readmeの記載で上手くいかなかったのでその部分を補う
ソースは go getで取ってこれる。もちろん git cloneして持ってきても良い
ソースのlitディレクトリに入り go buildを行い litをコンパイル
このlitがLNの本体になる
go build した時に、ライブラリが不足している場合は、それらを全部 go get hogehoge すればよい
次に クライアントをビルドする。今回はコマンドラインインタフェースを使う
cmd/lit-af に入り go buildを行い CUIをビルドする
$ go get github.com/mit-dci/lit
$ cd $GOPATH/src/github.com/mit-dci/lit
$ cd cmd/lit-af
$ go build
これで litとlit-afが作成できた
Litを起動
AliceとBobが LightningNetworkを使ってマイクロペイメントを行います
ターミナルを4つ使用します
Aliceのlitサーバと lit-afクライアント
Bobのlitサーバと lit-afクライアント
Aliceの起動
今回はBitcoinのtestnetを使います
Aliceはデフォルト設定で起動させます
ユーザデータは ~/.lit 以下になります
$ cd lit
$ ./lit --tn3
PassPhaseを設定&入力
$ cd cmd/lit-af
$ ./lit-af
Bobの起動
Bobはポート番号とユーザディレクトリを指定します
~/.lit2 に保存します
$ cd lit
$ ./lit -rpcport 9751 -dir $HOME/.lit2 --tn3
PassPhaseを設定&入力
$ cd cmd/lit-af
$ ./lit-af -p 9751 --dir $HOME/.lit2
lit-afの使い方
lit-afのコマンドラインが出ているが、そこで
lit-af# help
とすると、コマンドヘルプが出る
この中で今回使うものは
ls: 状態表示
lis: 接続を受け付ける
con: 接続する
say: ピアにメッセージを送る
sweep: トランザクションを整理(まだよくわかってない)
fund: ピアに対して LNチャンネルを作成する&コインをLNにあずける
push: ピアに対してコインを送る(LN)
send: 他のアドレスに対してコインを送る(オンチェイン)
状態表示
lsコマンドで状態表示される
Peers :接続しているピア一覧
Channels: 接続しているLNチャンネル
cap bal h state data pkh 等色々情報あるが、詳細はよくわからない
おそらく capがチャンネル内の合計コイン数(satoshi)、balが自分のsatoshi
Txos: トランザクション一覧
Listening Ports: 自分が待ち受けしているポート
Addresses: コインのアドレス。 最初のがLNでつかうSegwitアドレス。かっこ内が通常アドレス
Type: コインタイプと思われる
Sync Height: わからない
FeeRate: 気にしない
Utxo: よくわからない。持っているコインの総計? 通常アドレス
WitConf: よくわからない。Segwitアドレスのコイン?
Channel: チャンネル内のコイン
ピア接続
まずAliceがコネクションを待ち受ける
lit-af# lis
entered command: lis
listening on ln1av2h4yr5hyvvumy2u5cxkk8cygxn2ya9m5ljjd@:2448
今回のLNアドレスは ln1av2h4yr5hyvvumy2u5cxkk8cygxn2ya9m5ljjd@:2448 である
Bobはそのアドレスに接続する
lit-af# con ln1av2h4yr5hyvvumy2u5cxkk8cygxn2ya9m5ljjd@:2448
entered command: con ln1av2h4yr5hyvvumy2u5cxkk8cygxn2ya9m5ljjd@:2448
connected to peer ln1av2h4yr5hyvvumy2u5cxkk8cygxn2ya9m5ljjd@:2448
これで Peer1番にお互い接続された。
メッセージ送ってみよう
lit-af# say 1 Hello Bob
Bob側に Hello Bobが表示されたとおもう(なぜか 1単語だと送れない)
LNを開く
今のままだとコインを持っていない。LNを開くには 100万satoshi必要なので
Bitcoin faucet testnet3 等で検索し、Aliceにコインを振り込もう
振り込みアドレスは カッコ内の方を使う。
また 使い終わったら faucetサイトにsendコマンドで戻してあげると喜ばれる
必要額を送ったら、1時間ほど待てば入っているはず(testnetはブロック生成が遅い・・)
入金終了後にAliceのアドレスから Segwitアドレスにsendし、LNで使えるようにする
Segwitアドレスは Addressのかっこの前のアドレスである
LNのチャンネルを開くには最低 1Msatoshi必要なのでそれ以上入れる事
lit-af# send aliceのSegwitアドレス 1000000
これも ブロック生成されるまで1時間ほどかかる・・
LN用のコインが手に入ったのでLNを開くことができる!
チャンネルを開くには fundコマンドを使う
Readmeでは引数が間違えているので注意。
lit-af# fund 1 1 1000000 0
entered command: fund 1 1 1000000 0
これで 1000000satoshiを入れたチャンネルが出来た
コインを送ってみる
LNで送るには pushコマンドだ
lit-af# push 1 500
entered command: push 1 500
Pushed 500 at state 0
このように少額の送金を無料で即座に無料で行う事ができる
1satoshiから送る事が出来るよ!
Author And Source
この問題について(Litを使いLightningNetworkをテストする【仮想通貨】), 我々は、より多くの情報をここで見つけました https://qiita.com/YukiMiyatake/items/6fe7368570effda22732著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .