Bitcoin Lightning networkを試してみる 〜 2者間でやり取り

Bitcoin(ビットコイン)

Bitcoinのトランザクション遅延や送金手数料が高い問題を解決するために、Lightning networkという仕組みがありますが、Bitcoinで試してみたのでメモとして残しておきます。

全て bitcoinのtestnet上で行いました。

ライブラリは以下

手順は大石さんのサイト記事を参考に試しました。

Sponsored Link


Lightning-network 2者間送金

おおまかな流れ

1. 送金側から受信側に接続
2. 送金側から受信側にfundchannel
3. 受信側でinvoice作成
4. 送金側でsendpay
5. 送金側でclose
6. 受信側でwithdraw

受信側

lightning-cli getinfo | jq .
{
  "id": "31570a87da84d55e7490a26ae9490473e1463644c92f5cce75ce5379c6ec60d8c9",
  "port": 42480,
  "address": [],
  "version": "v0.5.2-2016-11-21-1670-gb915562",
  "blockheight": 1260421,
  "network": "testnet"
}

送金側

# lightning-cli listfunds | jq .
{
  "outputs": [
    {
      "txid": "51b78168d94ec307e2855697209275d477e05d8647caf29cb9e38fb6a4661145",
      "output": 0,
      "value": 50000000
    }
  ]
}

connect を送金側から受信側に行う

# lightning-cli connect 31570a87da84d55e7490a26ae9490473e1463644c92f5cce75ce5379c6ec60d8c9 10.67.248.0 42480
{ "id" : "31570a87da84d55e7490a26ae9490473e1463644c92f5cce75ce5379c6ec60d8c9" }

fundchannel を送金側から受信側に行う

# lightning-cli fundchannel 31570a87da84d55e7490a26ae9490473e1463644c92f5cce75ce5379c6ec60d8c9 1000000
{ "tx" : "020000000001016fd1827a0e548e9cd49327ffd0c4e67b9b9300eee4c00affae9dd9dff662956800000000171600143e2853ff2c6b09c8bd1312b2ec9cd3b7004df9baffffffff0240420f00000000002200208bf813c82cb74d2da12823d607054c2be149d44054937f564db2c758ace057b48eadeb020000000016001456bc03babae32e5d81d91c0b9d759f0f31fa826a02483045022100a6b8eab0fda494593c246ec048291958242e76a30a477034966ee5c9f42a22ec02201e8c6750560ed1ea260ca7b3ae81d5e627016a245378e1bc451cc37911cf9c08012102c47208afd988525a458b33b0849bb66fff1ef1074318868d56a669a5356e34f300000000", "txid" : "e16a67f2bd3d27171f92dafb762981307f5f03945fd1cce76f83a9707710e08d" }

# lightning-cli listpeers | jq .
{
  "peers": [
    {
      "id": "31570a87da84d55e7490a26ae9490473e1463644c92f5cce75ce5379c6ec60d8c9",
      "connected": true,
      "netaddr": [
        "10.67.248.0:42480"
      ],
      "channels": [
        {
          "state": "CHANNELD_AWAITING_LOCKIN",
          "owner": "lightning_channeld",
          "funding_txid": "e16a67f2bd3d27171f92dafb762981307f5f03945fd1cce76f83a9707710e08d",
          "msatoshi_to_us": 1000000000,
          "msatoshi_total": 1000000000,
          "dust_limit_satoshis": 546,
          "max_htlc_value_in_flight_msat": 18446744073709552000,
          "channel_reserve_satoshis": 0,
          "htlc_minimum_msat": 0,
          "to_self_delay": 6,
          "max_accepted_htlcs": 483
        }
      ]
    }
  ]
}

受信側

# lightning-cli invoice 200000000 tx-00001 test
{ "payment_hash" : "48f497fc5d2df8ed2ca33653fe648895c6ac7ad0104a979be438036044028192", "expiry_time" : 1516867198, "expires_at" : 1516867198, "bolt11" : "lntb2m1pdxnqrwpp5fr6f0lza9huw6t9rxeflueygjhr2c7kszp9f0xly8qpkq3qzsxfqdq8w3jhxaqcqpxgjr4q4498rx7wzqfyf6uku4mesf2zz3jphnsm83vct49fyvytwm5v899gvlh6jd7dudynuur244sx4x64wrt8qhxep9hxwmn0vewm7sq9zap64" }

# lightning-cli listinvoices | jq .
{
  "invoices": [
    {
      "label": "tx-00001",
      "payment_hash": "48f497fc5d2df8ed2ca33653fe648895c6ac7ad0104a979be438036044028192",
      "msatoshi": 200000000,
      "status": "unpaid",
      "expiry_time": 1516867198,
      "expires_at": 1516867198
    }
  ]
}

送金側

# lightning-cli sendpay '[ { "id" : "31570a87da84d55e7490a26ae9490473e1463644c92f5cce75ce5379c6ec60d8c9", "msatoshi" : 200000000, "delay" : 5, "channel" : "1260424:62:0" } ]' 48f497fc5d2df8ed2ca33653fe648895c6ac7ad0104a979be438036044028192
{ "preimage" : "9fa6fd8f2548b6037f6397e7a1ccf64a1df3e0ed37533f156c1aa7b965d8b5b0" }

受信側

# lightning-cli listinvoices | jq .
{
  "invoices": [
    {
      "label": "tx-00001",
      "payment_hash": "48f497fc5d2df8ed2ca33653fe648895c6ac7ad0104a979be438036044028192",
      "msatoshi": 200000000,
      "status": "paid",
      "pay_index": 1,
      "msatoshi_received": 200000000,
      "paid_timestamp": 1516864152,
      "paid_at": 1516864152,
      "expiry_time": 1516867198,
      "expires_at": 1516867198
    }
  ]
}

送金側

# bitcoin-cli -testnet -datadir=/block/bitcoin getmempoolinfo
{
  "size": 90,
  "bytes": 23231,
  "usage": 110768,
  "maxmempool": 300000000,
  "mempoolminfee": 0.00000000
}

close.

# lightning-cli close 31570a87da84d55e7490a26ae9490473e1463644c92f5cce75ce5379c6ec60d8c9
{  }

# lightning-cli listpeers | jq .
{
  "peers": [
    {
      "id": "31570a87da84d55e7490a26ae9490473e1463644c92f5cce75ce5379c6ec60d8c9",
      "connected": false,
      "channels": [
        {
          "state": "CLOSINGD_COMPLETE",
          "short_channel_id": "1260424:62:0",
          "funding_txid": "e16a67f2bd3d27171f92dafb762981307f5f03945fd1cce76f83a9707710e08d",
          "msatoshi_to_us": 800000000,
          "msatoshi_total": 1000000000,
          "dust_limit_satoshis": 546,
          "max_htlc_value_in_flight_msat": 18446744073709552000,
          "channel_reserve_satoshis": 0,
          "htlc_minimum_msat": 0,
          "to_self_delay": 6,
          "max_accepted_htlcs": 483
        }
      ]
    }
  ]
}

受信側

ステータスがCLOSINGD_COMPLETEからONCHAIND_MUTUALに変わる

# lightning-cli listpeers | jq .
{
  "peers": [
    {
      "id": "026b7e501ce3d3c3941be5845b9aab13071d570653bd40b73e4fe2c094bf6f93f8",
      "connected": false,
      "channels": [
        {
          "state": "ONCHAIND_MUTUAL",
          "owner": "lightning_onchaind",
          "short_channel_id": "1260424:62:0",
          "funding_txid": "e16a67f2bd3d27171f92dafb762981307f5f03945fd1cce76f83a9707710e08d",
          "msatoshi_to_us": 200000000,
          "msatoshi_total": 1000000000,
          "dust_limit_satoshis": 546,
          "max_htlc_value_in_flight_msat": 18446744073709552000,
          "channel_reserve_satoshis": 0,
          "htlc_minimum_msat": 0,
          "to_self_delay": 6,
          "max_accepted_htlcs": 483
        }
      ]
    }
  ]
}

ファンドが入っている事を確認

# lightning-cli listfunds | jq .
{
  "outputs": [
    {
      "txid": "b4abacf967976e3f976df1864de3cd0dbbbd97f9b9727bc76b06ceefb5dd27fb",
      "output": 0,
      "value": 200000
    }
  ]
}

Bitcoinの残高確認

# bitcoin-cli -testnet -datadir=/block/bitcoin  getaddressesbyaccount ""
[
  "mqTTZ4YwDuMob5mycUf3wyHiVeoYvu4gFA"
]
# bitcoin-cli -testnet -datadir=/block/bitcoin getbalance
0.00000000

withdrawをしてBitcoinのアドレスに残高を移動する

# lightning-cli withdraw mqTTZ4YwDuMob5mycUf3wyHiVeoYvu4gFA 10
{ "tx" : "02000000000101fb27ddb5efce066bc77b72b9f997bdbb0dcde34d86f16d973f6e9767f9acabb40000000000ffffffff020a000000000000001976a9146d080499d8d1a65c25c297a9e5a877a9d18ea61c88aca50c0300000000001600145d4b66830dc741f65a542484bb35cea0c0268e40024730440220342cb49fdca2cef68dbaecd57632fc43047b55be2240b969e531a3a3f7e2b4d702205fc285aabd5f055a0f8e95f30225038ca0b6768537181d7d15042cfd2ff3c87c012102a2a9bf68e49ff882ad17c56392e1912c4c6e74c8737fa7b7b96bbb496da4a71700000000", "txid" : "088ed7e93e8f1a1e935998175fb2f43f1a6c366d479b13f65629fc8421104b2a" }

そして、Bitcoinの残高に反映されていることを確認

# bitcoin-cli -testnet -datadir=/block/bitcoin getbalance
0.00000010
Sponsored Link
コメントはまだありません

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA


仮想通貨全般
TendermintをDocker使って起動してみる

以前、勉強会に行ってきた際にTendermintの事を聞いて ブロックチェーンプロトコルが実装できる …

仮想通貨全般
Bitcoinのdifficultyを決めるnBitsを理解する

マイニングする際の理解を深めようと思い、マイニング難易度(difficulty)を決めるnBitsに …

仮想通貨全般
EOS Night Meetupにいってきた

今回は、以前からEOSに興味があったので EOS Night Meetupにいってきました。 暗号通 …