c-lightningで送金する
1. c-lightningでchannelをopenする
c-lightningのREADME.mdにある手順を参考にする。
1. lightningの管理するアドレスを作成
code: lightningのアドレスを生成
$ lightning-cli newaddr
{
"address": "tb1q9g5dj7wu9ukegnj9x0n4kcz9rgl72lwv7v85ya"
}
2. lightningのアドレスにbtcを送る
code: send btc
$ bitcoin-cli -testnet sendtoaddress tb1q9g5dj7wu9ukegnj9x0n4kcz9rgl72lwv7v85ya 0.0001
a8f5f3c903e074534ae465ddf3d6a26e2466d668320efb610b768546b2901b16
この後はtestnetでこのtransactionがマイニングされるまで待つ。
3. lightningのaddressにbtcが届いたか確認する
code: lightningのaddressの残高確認
$ lightning-cli listfunds
{
"outputs": [
{
"txid": "a8f5f3c903e074534ae465ddf3d6a26e2466d668320efb610b768546b2901b16",
"output": 0,
"value": 10000,
"address": "tb1q9g5dj7wu9ukegnj9x0n4kcz9rgl72lwv7v85ya",
"status": "confirmed"
}
],
"channels": [
]
}
4. channelをopenするために他のlightning nodeのidとipが必要なので、確認する
code: lightning nodeの情報確認
$ lightning-cli getinfo
{
"id": "02433acd84a2fa147fe914fab6ecf46cad46f019f4614c9996d3e615a45a14fc42",
"alias": "ODDFIRE",
"color": "02433a",
"address": [
],
"binding": [
{
"type": "ipv6",
"address": "::",
"port": 9735
},
{
"type": "ipv4",
"address": "0.0.0.0",
"port": 9735
}
],
"version": "v0.6.2-2-g7d07ba8",
"blockheight": 1451598,
"network": "testnet",
"msatoshi_fees_collected": 0
}
これは別のlightning nodeで発行している点に注意
5. channel をopenする。channelをopenするためには他のpeerと接続した後にfundsをdepositする。
code: connect peer
$ lightning-cli connect 02433acd84a2fa147fe914fab6ecf46cad46f019f4614c9996d3e615a45a14fc42 54.238.143.22
{
"id": "02433acd84a2fa147fe914fab6ecf46cad46f019f4614c9996d3e615a45a14fc42"
}
code: deposit funds
lightning-cli fundchannel 02433acd84a2fa147fe914fab6ecf46cad46f019f4614c9996d3e615a45a14fc42 50000
{
"tx": "020000000001027df3fc39a42b2564b34e459a619eab7e003cc24b173adc2e23c4caf87eda20b90100000000ffffffffc034d74ed2f48353ac250cee1f4b27a036679b01217e871cb0170ad9830aeb0f0100000000ffffffff0271c200000000000016001401195c291fbd9e7367f6f09b61bf0d241ef8a93150c30000000000002200208156875d13d55e7932df91ebac65fe9da5f5fccb8fc32a6c6499a8ab4907e03d02473044022033cd7fc8920d075dfcc4ed11776b73837a8ee3837f2b80b133264197bc152027022008ce402ea3bcacfecfe793e974a1aef5d6bf3b6e8e8c064a731145019bcedfe60121030a209ce11551202f8d9e57732102c245f8cd4bec9828946f3619f1307a61ffe802483045022100b68679e82e8eae493835cf5c2e0a99d24853265d25d4139a524a45dadc3b164702206550a588941f0cda683a0d6999e5e70f556a7058ed0c6640da561a92966b3c270121030a209ce11551202f8d9e57732102c245f8cd4bec9828946f3619f1307a61ffe800000000",
"txid": "f1691d042858b215b2ce027c5d536dbe1650191f022e3371758c3f4a353ed499",
"channel_id": "99d43e354a3f8c7571332e021f195016be6d535d7c02ceb215b25828041d69f0"
}
fundchannelする時、1000satoshiだとうまくいかず、50000satoshiだとうまくいった。addressが持っているsatoshi全部使おうとすると、open channel feeが払えずに失敗するみたい。1000satoshiだと多分少額すぎたのかも?
2. lightningで送金をしてみる。
送金する時は、最初にinvoiceメッセージを発行して、そのメッセージを相手のpeerに伝えて、相手のpeerがそのinvoiceを使って支払いを行うという流れになる。
1. invoiceメッセージを発行する。これはopen channelを実行していない方のnodeで行う。open channelした時は、open channelを発行したnodeが全ての資金を持っているので、相手側は支払いを受けることしかできない。
code: create invoice message
$ lightning-cli invoice 100 "test1" "first test pay"
{
"payment_hash": "b724f44c8b240659c8cf4705f55718b882ab740e309dd547443ae026a3f618cd",
"expires_at": 1547021778,
"bolt11": "lntb1n1pwrt87zpp5kuj0gnytysr9njx0guzl24cchzp2kaqwxzwa236y8tszdglkrrxsdqhve5hyum5yp6x2um5ypcxz7gcqp2qgwx2ez8nr07dnjqw7lkzndetd6hygjlf7h4taff4fwn67qx8lhxwa8v9wnpwx3gd9jj3tvp44h5s74t3nj7wzjeey6ymcwz0cdevxqpesnfgd",
"warning_capacity": "No channels have sufficient incoming capacity"
}
2. bolt11: に書かれているメッセージを相手側でpayに渡すことで支払いを行う。
code: pay using bolt11 message
$ lightning-cli pay "lntb1n1pwrt87zpp5kuj0gnytysr9njx0guzl24cchzp2kaqwxzwa236y8tszdglkrrxsdqhve5hyum5yp6x2um5ypcxz7gcqp2qgwx2ez8nr07dnjqw7lkzndetd6hygjlf7h4taff4fwn67qx8lhxwa8v9wnpwx3gd9jj3tvp44h5s74t3nj7wzjeey6ymcwz0cdevxqpesnfgd"
{
"id": 1,
"payment_hash": "b724f44c8b240659c8cf4705f55718b882ab740e309dd547443ae026a3f618cd",
"destination": "02433acd84a2fa147fe914fab6ecf46cad46f019f4614c9996d3e615a45a14fc42",
"msatoshi": 100,
"msatoshi_sent": 100,
"created_at": 1547018188,
"status": "complete",
"payment_preimage": "4d86165f7fb9616b3e00888685e63cb78a7357bbba3563f89422987efca4b333",
"description": "first test pay",
"getroute_tries": 1,
"sendpay_tries": 1,
"route": [
{
"id": "02433acd84a2fa147fe914fab6ecf46cad46f019f4614c9996d3e615a45a14fc42",
"channel": "1451605:25:1",
"msatoshi": 100,
"delay": 10
}
],
"failures": [
]
}
3. lightningのchannelをcloseする
code: channel close
$ lightning-cli close 02433acd84a2fa147fe914fab6ecf46cad46f019f4614c9996d3e615a45a14fc42
{
"tx": "0200000001ebb049c55b6beb40527a6afd4ed02368a9ae2ad397b80c3cc5d9443eb285a0d70000000000ffffffff0159260000000000001600143d3333f52354df7cd127b0708111d5b5d969c9cf00000000",
"txid": "1631bb65756399689776bcac44835e232cd10b64fca0a21ea8a4befd80be0201",
"type": "mutual"
}
helpに書いてある通り、channel closeの引数には、peer ID, channel ID, short channel IDの3つのどれかを指定可能
4. lightningから資金を引き出す
起動時にmnemonicが表示されるのでそれをメモっておけばprivate key をimportできてよしなにできる。
それ以外にの方法としては、withdraw destination satoshi [feerate] で他のアドレスに資金を引き出す方法もある。
code: withdraw
$ lightning-cli withdraw tb1q0qvrgzv0em36kc2qu8kjleurhw8cqjge243lsp 97676
{
"tx": "020000000001052d413986986050d3bd6462d056148e4019358cdf5ac1de8b5f440bfc5f6b5ad50100000000ffffffff733777b6bce9f1a165e4b5fb5504767b61a6eace064eb8b4f001bd283f70964b0100000000ffffffff8fb0e4f26fdbe63b89ca0bc547cdbbdb67d0e1a92a56e370030729ea3358e1ba0000000000ffffffffd35931a3ac1f09b118d4dddd7bf08db0e1d47a735cc3dfc6866cd0114fda84ec0000000000ffffffffec9de065fce230facbe4b2303949973268b312251d33c3a1162cd6cc63782eb90000000000ffffffff018c7d010000000000160014781834098fcee3ab6140e1ed2fe783bb8f80491902483045022100d256399604d1b343e15514ccf145674652b12bb781f98d483bf2ae0189c5a3be02205a69ef90bcbc89061864ddb285d28f6bfc3f50bea20f146d9367120b06dc88850121020a479f4f728dc0b1451080068a26779625c08ff98bc14126831ee71e5ba02ba802483045022100bede0effbc25e64c0cf433e220ddd9adcbd054adbbb8b1ccc00a1f767fc9a3e602201e76ecae01209ea626dc793b911b8af5773cbab084e1a2ead2d97445ab85dfd9012103098778f39c8080bf352a48ab89fc5bff8c6c1ac0aef1e9070400a32c6821af9e024830450221009c01202dc32f9ef968234180a4e2bf26e3b6d2a753060526b7cb758a13da2aca02200f4979491d5b870b48134a0a97f839b901b84cf24825c419fbc40728427858f101210247b98760d688f81c12ecefbb04e9b36a42058789054a88bdafdf3aafd75bf32b02483045022100b8528e01222bd20dc3ee2da2c2b3e20b3e261bdcb7d0800354a8701228c17fcf02205f2790dd6d7f513e527681e3380c8d944bf385029a411ace3ed42a2ba27ab3eb012102f50bb5d1d35b4b31274df9f53eae64408e235c99e3eacd5ce5dbf0a8670fb41c0248304502210094713b8f887de5b9c555682fb56a63d4cb34014a18b18ad4946b830a75fe00830220210453f124870bdc04c5f33effe3981c8645641ba291ba6490a06894a10867bd012103beb6c593c421f1f1585bac5ed94f54a0ec980423d2944e58afa88626cc5a0a0c00000000",
"txid": "0e79818fc213cd88f72302bf27c9777ed99a19a34442c75e5ad5414ae247e229"
}