Share
Embed
Lightning Network Ptarmigan Hands-on
Introduction for hands-on about Ptarmigan which is Lightning Network Software.
Please download this file and try it in your environment.
Nayuta
May 20, 2019
Transcript
27 slides
-
About Docker ϗετOS ԾԽιϑτΣΞ ΞϓϦέʔγϣϯ … Hyper-V VirtualBox ͱಉ͡Α͏ͳԾڥͷ࡞ΛՄೳͱ͢ΔιϑτΣΞɹ
্هιϑτΣΞ܈ͱൺͯ͠ɺήετOSΛ্ཱͪ͛Δඞཁ͕ͳ͍ ΞϓϦέʔγϣϯ ήετOS ήετOS … ⾢ ඞཁͳ͠ ϗετϚγϯͷΧʔωϧΛར༻͠ɺϓϩηεΛִ͢Δ͜ͱͰܰྔɺߴʹಈ͘ -
Mac OS Command + Shift + U → λʔϛφϧىಈ Windows
Docker Quickstart Terminal $ docker -v -
$ docker pull char1yxok/ptarmigan:2.0 $ docker images $ docker run
--name ptarmigan -p 3333:3000 -d -it cd75364f4ffe $ docker ps $ docker exec -it ptarmigan /bin/bash Docker্ͷίϯςφ(ubuntu)ɺϩάΠϯྃʂ -
Bitcoin Core Daemon version : 0.18.99.0 Ptarmigan version : 0.2.2
ίϯςφͰͷૢ࡞खॱ ⾢ Bitcoind ͷ࣮ߦ(ࠓճregtestͰߦ͍·͢) $ cd ~/ $ bitcoind -daemon $ ./new_nodedir.sh first ⾢ Ptarmigan ͷϊʔυ࡞ $ cd first $ ptarmd --network=regtest ⾢ Ptarmigan ͷ࣮ߦ $ cd ptarmigan/install όʔδϣϯใ ⾢ ࡞ͨ͠ϊʔυ໊ͷσΟϨΫτϦҠಈ -
৽͘͠ίϯιʔϧΛ্ཱͪ͛Δ $ docker-machine ls $ docker exec -it ptarmigan /bin/bash
$ cd ~/ptarmigan/ptarmapi (WindowsͷΈ) ⾢ URLΛ߇͓͑ͯ͘ $ npm run start ϒϥβΛ্ཱͪ͛ɺΞυϨεόʔʹҎԼͷΛೖྗ͢Δ Mac Windows localhost:3333/api ্෦Ͱ߇͑ͨURL:3333/api ⾢ (ྫ)192.168.99.100:3333/api -
(ex.1) getinfo ػೳ … PtarmiganͷϊʔυͷIDͷใΛදࣔ͢Δ ૢ࡞ॱ … 'Try it out'
→ 'Execute' → Response body -
(ex.2) createinvoice ػೳ … Lightning NetworkͰ༻͢ΔinvoiceΛൃߦ͢Δ ૢ࡞ॱ … 'Try it
out' → 'Parameters' → Example Valueͷ"amountMsat"ʹΛೖྗ ɹɹɹɹ 'Execute' → Response bodyͷ"bolt11"ͷΛpayerʹ͢ɻ https://starblocks.acinq.co/ https://shop.nayuta.co/ -
(ex.3) 2ϊʔυؒͷconnectʙpayment·Ͱɹ ৽͘͠ίϯιʔϧΛ্ཱͪ͛ɺdocker exec -it ptarmigan /bin/bash ͰίϯςφʹೖΔ $ cd
~/ptarmigan/install $ ./new_nodedir.sh second $ cd second/ $ ptarmd --network=regtest --port=1111 $ cd ~/ptarmigan/install/second ৽͘͠ίϯιʔϧΛ্ཱͪ͛ɺdocker exec -it ptarmigan /bin/bash ͰίϯςφʹೖΔ $ ptarmcli -l ⾢ node_id ͷ(“”ෆཁ)Λ߇͓͑ͯ͘: ᶃ $ hostname -I ⾢ ग़ྗΛ߇͓͑ͯ͘: ᶄ $ bitcoin-cli getnewaddress $ bitcoin-cli generatetoaddress 500 ᶅ ⾢ ग़ྗΛ߇͓͑ͯ͘: ᶅ ⾢ 500ͷޙʹᶅͷΛೖྗ ※͜͜·ͰͰɺLightningͷ2ͭͷϊʔυ͕ͨ͠ͷͰɺ࣍connectͱfundingΛߦ͏ ⾢ secondͱ͍͏ϊʔυΛ৽ͨʹ࡞ -
ϒϥβͷconnectػೳ͔ΒExample ValueҎԼͷΛೖྗ͠ɺ'Execute'ΛԡԼ ࠶ͼgetinfo͢Δͱ"peers"͕૿͑ɺϊʔυ͕ଓ͞Εͨ͜ͱ͕Θ͔Δɻ openchannelػೳ͔ΒExample ValueҎԼͷΛೖྗ͠ɺ'Execute'ΛԡԼ "peerNodeId": "ᶃ", "fundingSat": 100000 Response
bodyͷ"status"͕"Progressing"ʹͳ͍ͬͯΕޭʂ "peerNodeId": "ᶃ", "peerAddr": "ᶄ", "peerPort": 1111 $ bitcoin-cli generatetoaddress 1 ᶅ ⾢ NodeIdʹᶃɺAddrʹᶄͷΛೖྗ $ ptarmcli -i 1000 ⾢ ग़ྗΛ߇͓͑ͯ͘: ᶆ (=secondͷinvoice) ⾢ ϒϩοΫΛ1ͭ࡞ΓɺfundingΛྃͤ͞Δ getinfoػೳΛ࣮ߦ͠ɺlocal ͱremote ͷmsatoshiͷΛ֬ೝ͢Δ sendpaymentػೳ͔ΒExample ValueҎԼͷΛೖྗ͠ɺ'Execute'ΛԡԼ "bolt11": ᶆ ⾢ first→secondͷfundingΛߦ͏ ⾢ invoiceΛड͚ͯfirst→secondͷpayment -
※͜Ε͕LightningͷಛͷҰͭͰ͋Δଈ࣌ੑͰɺBitcoinͩͱࢧ͍ʹ࠷10͔͔Δ closeػೳ͔ΒExample ValueҎԼͷΛೖྗ͠ɺ'Execute'ΛԡԼ "peerNodeId": ᶃ Response bodyͷresult͕"Start Mutual Close"ͱͳ͍ͬͯΕޭ $
bitcoin-cli generatetoaddress 1 ᶅ ⾢ ϒϩοΫΛ1ͭ࡞ΓɺclosingΛྃͤ͞Δ 10ඵఔͪgetinfoػೳΛ࣮ߦ͠ɺܨ͕͍ͬͯͨϊʔυ͕அ͞Ε͍ͯΔ͜ͱΛ֬ೝ͢Δ ※ࠓճregtestͷͨΊ࣮ࡍʹBitcoinͷߴ͕ߦ͖དྷͨ͠ͷ͔֬ೝ͕Ͱ͖·ͤΜɻ ɹtestnetͰ࣮ߦͨ͠ࡍʹLightningͷϊʔυؒͰνϟωϧΛ։͘લޙʹ ɹbitcoin-cli getbalanceΛ࣮ߦ͠ɺߴ͕Ҡ͍ͬͯΔ(ࢧ͍͕ग़དྷ͍ͯΔ)͜ͱΛ֬ೝ͍ͯͩ͘͠͞ɻ getinfoػೳΛ࣮ߦ͠ɺlocal ͱremote ͷ͕±1000ͣͭมԽ͍ͯ͠Εࢧ͍ޭ -
⾢ ίϯςφͷݩͱͳΔΠϝʔδΛআ $ exit Dockerͷఀࢭͱআͷํ๏ $ docker stop ptarmigan $
docker rm ptarmigan $ docker rmi cd75364f4ffe ⾢ ίϯςφ͔Βൈ͚Δ ⾢ ίϯςφΛఀࢭ ⾢ ίϯςφΛআ -
Appendix mainnetͱtestnetͰಈ͔͢ํ๏(bitcoin core v0.18.99 ͷྫ) ࠓճregtestͰૢ࡞Λߦ͍·͕ͨ͠ɺ͜ͷڥͰଞͷnetಈ͔͢͜ͱ͕Ͱ͖·͢ɻ ͦΕͧΕɺ~/.bitcoin/bitcoin.conf ΛҎԼͷΑ͏ʹฤू͠ɺBitcoindΛىಈ͠·͢ɻ Main net
testnet rpcuser=bitcoinuser rpcpassword=bitcoinpassword testnet=3 txindex=1 server=1 rpcuser=bitcoinuser rpcpassword=bitcoinpassword txindex=1 server=1 ※BitcoindͷىಈޙʹϒϩοΫใͷμϯϩʔυ͕ ɹ࢝·Γ·͕͢ɺtestnetͰ͋Ε20GBऑɺ ɹmainnetͰ͋Ε200GBͷσΟεΫ༰ྔΛ ɹඞཁͱ͢ΔͨΊ͝ҙ͍ͩ͘͞ɻ ɹ·ͨɺμϯϩʔυʹ૬Ԡͷ͕͔͔࣌ؒΓ·͢ɻɹ ɹ ɹptarmdϒϩοΫใͷμϯϩʔυྃޙʹ ɹߦ͍ͬͯͩ͘͞ɻ ~/ptarmigan/install/new_node.shͰ৽ͨʹϊʔυΛ࡞͠ɺσΟϨΫτϦΛҠಈ͢Δ $ ptarmd --network=testnet/mainnet ҎԼͷίϚϯυΛ࣮ߦ͢Δ(testnetͱmainnetͰಡΈସ͑Δ)