Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
ビットコインとか勉強会#16
Search
HIROSHI MUTAGUCHI
April 01, 2018
Technology
530
2
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
ビットコインとか勉強会#16
HIROSHI MUTAGUCHI
April 01, 2018
Other Decks in Technology
See All in Technology
Bedrock AgentCore RuntimeでAuth0 Changelog調査AIをアップグレードした話
t5u8a5a
1
120
RSA暗号を手計算したくなること、ありますよね?? (20260615_orestudy6_rsa)
thousanda
0
390
【Snowflake Summit 2026 Recap!!】Snowflake Summit Deep Dive: Security & Governance
civitaspo
0
170
On-behalf-of Token exchange with AgentCore Identity
hironobuiga
2
170
フィジカル版Github Onshapeの紹介
shiba_8ro
0
210
Claude Codeをどのように キャッチアップしているか
oikon48
12
7.9k
非定型業務をAI slackbotで自動化する ~ 社内要望を自動壁打ちするbotを作った ~/automating-ad-hoc-work-with-ai-slackbot
shibayu36
0
650
失敗を資産に変えるClaude Code
shinyasaita
0
650
Agent Skills設計で柔軟性と硬さのバランスが難しい話
nassy20
0
130
入門!AWS Blocks
ysuzuki
1
120
2026TECHFRESH畢業分享會 - Lightning Talk - E起 See See : 電商推薦讀心術? 數據說了算
line_developers_tw
PRO
0
980
小さくはじめるSLI/SLO ~育てながら組織に定着させる実践知~ / Starting Small with SLI/SLOs: Building Adoption Through Continuous Growth
nari_ex
7
1.9k
Featured
See All Featured
Color Theory Basics | Prateek | Gurzu
gurzu
0
360
GitHub's CSS Performance
jonrohan
1033
470k
Lightning talk: Run Django tests with GitHub Actions
sabderemane
0
200
Optimising Largest Contentful Paint
csswizardry
37
3.7k
The Organizational Zoo: Understanding Human Behavior Agility Through Metaphoric Constructive Conversations (based on the works of Arthur Shelley, Ph.D)
kimpetersen
PRO
0
360
Collaborative Software Design: How to facilitate domain modelling decisions
baasie
1
250
Conquering PDFs: document understanding beyond plain text
inesmontani
PRO
4
2.8k
Writing Fast Ruby
sferik
630
63k
Leo the Paperboy
mayatellez
7
1.8k
A Modern Web Designer's Workflow
chriscoyier
698
190k
We Have a Design System, Now What?
morganepeng
55
8.2k
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
3
160
Transcript
コードが書けなくても 手を動かして学ぶ方法 3/27 ビットコインとか勉強会 #16
自己紹介 • 牟田口裕司(むたぐちひろし) • 株式会社IDOM (旧 ガリバーインターナショナル) • 社内情シス担当 •
職歴 SIer → <3社> → IDOM(今ここ) • 最近思うこと 作るって楽しい! 手を動かして何か作りたい • その他 Maker Faire Tokyoにボランティア参加 自立分散社会フォーラムの個人会員
アジェンダ 1. はじめに 2. 情報収集してみる 3. すぐ出来ること 4. Bitcoinフルノードを立ててみる 5.
Lightning Networkをさわってみる
1.はじめに <2016年秋頃> 現金を扱うコストが苦痛になってきた ↓ ↓ ↓ ↓ ↓ 財布を持ちたくない ↓ ↓ ↓ ↓ ↓ Fintechってのが流行ってるらしい ↓ ↓ ↓ ↓ ↓ ビットコイン?なんか財布持たなくても良くなるらしい ↓ ↓ ↓ ↓ ↓
〜〜 勉強開始 〜〜
ポケットに穴あいて 現金ばらまいて歩いてた
2.情報収集してみる 情報を頭に入 れただけでは 実感わかない
3.すぐに出来ること • Suicaのみで生活してみる ◦ やっぱりコンビニ最高! • ビットコインを送金してみる ◦ ブロックに取り込まれるのに時間かかる ◦
手数料高い ◦ 送金完了してるのにアプリに反映されない • LinePayを使ってみる ◦ 現金のチャージ簡単 ◦ コンビニはローソンしか使えない
3.すぐに出来ること 金額指定の方法 読み込ませる式 読み込み式 手入力 指定済 ローソン:POS Wikiの募金
3.すぐに出来ること 金額指定の方法 読み込ませる式 読み込み式 手入力 指定済 Wikiの募金 安い ※利用場所が限定される ローソン:POS
高い ※設備導入コストかかる 安い ※金額不足過剰時に面倒
4.ビットコインのフルノードを立ててみる • フルノードを立ててみる ◦ トランザクションデータの同期に3W ◦ 同期後は非力なラズパイ2でもサクサク動く ◦ bitcoind の最新版が触れる
▪ bitcoind 0.16 ◦ コマンドが実行できる • ラズパイ壊れない ◦ 2017/4〜 連続稼動
5.Lightning Networkをさわってみる ビットコインの課題 • 取引量が限られる(7件程度/秒) • 送金手数料が高い • ブロックチェーンサイズが大きくなってきた(160 GB)
• 取引の確定に時間がかかる これらを解決する手段の一つ 固定IPで常時接続が必要 → ラズパイではきつい → VPSでフルノード構築 (メモリ1GB,HDD200GB 864円/月) Blockstream社のc-lightningを使用
オフチェーンで取引をする Bitcoin Network Lightning Network
Lightning Network Bitcoin Network 手順 ユーザー視点で見ると・・・ ①アドレ ス作成 ②送金 ③Payment
Channel開く ④デポ ジット ⑥PaymentC hannel閉じる ⑦返金 ⑧着金 ⑤取引
BitcoinNetwork ノードを経由して取引 Aさん Dさん Bさん Cさん Eさん ①アドレスを作成する
BitcoinNetwork ノードを経由して取引 Aさん Dさん Bさん Cさん Eさん ②送金する
ノードを経由して取引 ③PaymentChannel開く Aさん Dさん Bさん Cさん Eさん
ノードを経由して取引 Aさん Dさん Bさん Cさん Eさん ④デポジットする
ノードを経由して取引 直接つながらなくても間を経由して取引される。 マルチホップ送金 Aさん Dさん Bさん Cさん Eさん ⑤取引をする
ノードを経由して取引 直接つながらなくても間を経由して取引される。 Aさん Dさん Bさん Cさん Eさん ⑤取引をする
ノードを経由して取引 Aさん Dさん Bさん Cさん Eさん ⑥PaymentChannel閉じる
ノードを経由して取引 Aさん Dさん Bさん Cさん Eさん BitcoinNetwork ⑦返金する
LightningNetworkの状況(testnet) https://explorer.acinq.co/#/
txidなどを元に実際どうなってるかを見てみる ②、④、⑦でBitcoinのブロックに書き込みをしてる Lightning Network Bitcoin Network ①アドレ ス作成 ②送金 ③Payment
Channel開く ④デポ ジット ⑥PaymentC hannel閉じる ⑦返金 ⑧着金 ⑤取引
②送金 Lightning Network Bitcoin Network ①アドレ ス作成 ②送金 ③Payment Channel開く
④デポ ジット ⑥PaymentC hannel閉じる ⑦返金 ⑧着金 ⑤取引
BitcoinNetwork ②送金 Aさん Dさん Bさん Cさん Eさん ②送金する
②送金 送金 2行目はtxid $ bitcoin-cli sendtoaddress 2MzGDD9quuLEzXL7YY85HrmoWUonks9mg4c 1 6c35e7ca0c427ea61f9ffdf7c615a7d131d6ce352ca5a75b4f0cfc86d4bbf8f4 $
lightning-cli newaddr { "address" : "2MzGDD9quuLEzXL7YY85HrmoWUonks9mg4c" } LNアドレスの作成
②送金 testnet用のエクスプローラで確認 https://test-insight.bitpay.com
②送金 $ bitcoin-cli getrawtransaction 6c35e7ca0c427ea61f9ffdf7c615a7d131d6ce352ca5a75b4f0cfc86d4bbf8f4 <16進データ> $ bitcoin-cli decoderawtransaction <16進データ>
トランザクションの詳細をみるには・・・
④デポジット Lightning Network Bitcoin Network ①アドレ ス作成 ②送金 ③Payment Channel開く
④デポ ジット ⑥PaymentC hannel閉じる ⑦返金 ⑧着金 ⑤取引
④デポジット Aさん Dさん Bさん Cさん Eさん ④デポジットする
④デポジット PaymentChannelを開く 10000000 satoshi(0.1 BTC)をデポジット $ lightning-cli fundchannel 027e92b4fa1988ae5b0d44b87da80ab8875312fdae6631a8896851bc41857e66aa 10000000
{ "tx" : "02000000000101f4f8bbd486fc0c4f5ba7a52c35ced631d1a715c6f7fd9f1fa67e420ccae7356c0100000017160014 2cf995871e9132feaae66dc9a4d79e0c13c65995ffffffff02809698000000000022002062e8e632aba272e934dbc171 f5298bd2348641c903ff2bdb70648a74b8196aa4d0495d05000000001600147b7eb600e7fb99a55f610222a0bcaa25 614038bf02483045022100816ff9c42ba1f2cd1a184921661241b0d07b085fbe62b8b3b1b663d608a4f404022061d2 0642c087191a334a56d03f597b8d0670b1281acfff58c500bf14fba0e7f101210367be5bfa831ea087b1ce2f31f710b3 213bff468df79ee9bd2e5fb702797f65be00000000", "txid" : "3c926db39d8225a7dc9e936c57dc2c80d7729f9157543c7228c7a798c5457fbb" }
④デポジット 2MzGDD9quuLEzXL7YY85HrmoWUonks9mg4c → ②で送金したアドレス Unparsed address [0] → LN側のアドレス
④デポジット トランザクションの中を確認しようとすると・・・ $ bitcoin-cli gettransaction 3c926db39d8225a7dc9e936c57dc2c80d7729f9157543c7228c7a798c5457fbb error code: -5 error
message: Invalid or non-wallet transaction id
⑦返金 Lightning Network Bitcoin Network ①アドレ ス作成 ②送金 ③Payment Channel開く
④デポ ジット ⑥PaymentC hannel閉じる ⑦返金 ⑧着金 ⑤取引
⑦返金 Aさん Dさん Bさん Cさん Eさん BitcoinNetwork ⑦返金する
⑦返金 全額返金する $ lightning-cli withdraw n42HubwU2Nv4wEQ4cexhDCyVZmqJi9apJb all { "tx" :
"02000000000102bb7f45c598a7c728723c5457919f72d7802cdc576c939edca725829db36d923c0100000000ffffff ffeba7c7f71aa7e2f15729ef10714ff5b0b90b26858a82c68e4d28f0f5054f9b790000000000ffffffff01e5def50500000 0001976a914f6df33c1a83b8d7cbd9645d74fdf8e45c53aba3f88ac024830450221008a7f9d4293c71f1bee9193eae 92934b9aadae61013ada43b155277c75c024c6e022005b0f9a1ae15febae19c0becbdf5d872da0ac6ea4b4f970389b 32d0b34727e4a012103dbbcca6b2e28c7be1700b05f99c6e131e4dd7356da53cd8db44a68bdef42423b024730440 2201365b96433561497de48ab8ffe8b51ee487202ffcee0546d461aed377a0418220220379a03db4df6388cf6f78d2 217db693225b7eff3db73b6d78b5756dbf398daa3012103b9d06829d8096beabb00f912785782d7c7147f6b1f0c1ec ef27f4f5065c6977f00000000", "txid" : "7d4cf2c46747db42804dc16854680343c49c5c049f572b283994da4712f8a4e7" }
⑦返金 ②送金 1 BTC ⑦返金 0.99999461 BTC 手数料 0.00000539 BTC
②送金 ④デポ ジット ⑦返金
Bitcoin Network 取引のまとめ そもそも別レイヤーに送金できない Lightning Network ①アドレ ス作成 ②送金 ③Payment
Channel開く ④デポ ジット ⑥PaymentC hannel閉じる ⑦返金 ⑧着金 ⑤取引 送金BTC ロック ←実際は送ってない
Lightning Network Bitcoin Network エラー、不具合、気づくこと ①アドレ ス作成 ②送金 ③Payment Channel開く
④デポ ジット ⑥PaymentC hannel閉じる ⑦返金 ⑧着金 ⑤取引
④デポジット デポジットは16777215 satoshi以下でないといけない 16777215 satoshi = 0.16777215 BTC ≒ 150994円(1BTC
= 900000円) $ lightning-cli fundchannel 022f0edb0d6a8e19320e949a6f24fd4442c390ba1f38f8349b92ee0ee6cbdece08 100000000 { "code" : -1, "message" : "Funding satoshi must be <= 16777215" }
⑤取引 手数料は送金額の0.5%以下でないとエラーになる。 150000 msatoshi送金で1004 msatoshiの手数料(送金額の0.669333%) $ lightning-cli pay lntb1500n1pd2uz6mpp5ct88sksjgz2e58s2hhnq0l5pw36fqy2j5esvu9cv7g8gu3de6zvqdpd2fjkzepqg9e8g6trd3jn5gz 8wfjk2m3q2dkk7mm5dp5k2cqzyssymvh8zs664lp68yu3jfmz70c0v89hkuntld2ypys5y3q7l7ag8yygwyxkfhvka5t4d3
ac8mw797m76rcwraas3x579y47577ay346sqyzfkk9 { "code" : 206, "message" : "Fee 1004 is 0.669333% of payment 150000; max fee requested is 0.500000%", "data" : { "fee" : 1004, "feepercent" : 0.669333, "msatoshi" : 150000, "maxfeepercent" : 0.500000, "getroute_tries" : 6, "sendpay_tries" : 0 } }
単位 1BTC = 100,000,000 satoshi = 100,000,000,000 msatoshi 1satoshi未満の返金時はどうするの? $
lightning-cli listpeers { "peers" : [ { "id" : "027e92b4fa1988ae5b0d44b87da80ab8875312fdae6631a8896851bc41857e66aa", "connected" : true, "netaddr" : [ "133.18.23.0:9735" ], "alias" : "TEST1.MUTAGUCHI", "color" : "008000", "channels" : [ { "state" : "CHANNELD_NORMAL", "owner" : "lightning_channeld", "short_channel_id" : "1288485:44:0", "funding_txid" : "3c926db39d8225a7dc9e936c57dc2c80d7729f9157543c7228c7a798c5457fbb", "msatoshi_to_us" : 10000000000, "msatoshi_total" : 10000000000, "dust_limit_satoshis" : 546, "max_htlc_value_in_flight_msat" : 18446744073709551615, "channel_reserve_satoshis" : 0, "htlc_minimum_msat" : 0, "to_self_delay" : 6, "max_accepted_htlcs" : 483, "status" : [ "CHANNELD_NORMAL:Funding transaction locked." ] } ] } ] }
その他(c-lightningが不安定?) • ③PaymentChannel開けない、④デポジットできない、⑤取引できない • lightningdが落ちる。 • bitcoindとLightningdのブロック高が合わない。 $ bitcoin-cli getinfo
"version": 150100, 〜中略〜 "balance": 1.94999236, "blocks": 1288659, 〜中略〜 } $ lightning-cli getinfo { "id" : "034ea2619d137ceaeb7c0a9a4c36037c6a99eed4cef9eca984bf5ac2efbbb6fcf4", "port" : 9735, "address" : [ { "type" : "ipv4", "address" : "133.18.23.210", "port" : 9735 } ], "version" : "v0.5.2-2016-11-21-2269-g249464c", "blockheight" : 1288659, "network" : "testnet" }
None
まとめ ターミナルはお友達になるしかない コマンドも少しずつ覚えるしかない GitHub見るようになった エクスプローラ見るようになった testnetのマイニングは約20分毎 そして単なる知識だったものを自信が持っ て説明できるようになる!
Appendix • ビットコイナー反省会 ◦ Lightning Network Q&A放送 with 大石哲之さん https://youtu.be/fm9-Dw9BvMI
◦ SegWit,Lightning, MAST ビットコインの最重要技術を改めて考える with ハウインターナショナル安 土さん https://youtu.be/jtRn6cFVc68 • ブロックチェーン・プログラミング 仮想通貨入門 11章 スケーラビリティへの対応 • GitHub ElementsProject/lightning https://github.com/ElementsProject/lightning • GitHub lightningnetwork/lnd https://github.com/lightningnetwork/lnd/blob/master/docs/INSTALL.md
Appendix 自分で試したい場合はQiitaに手順まとめました • お手軽にVPSでBitcoinフルノードを立ち上げる方法 https://qiita.com/9muta/items/d3b5cf003d18ab58d112 • LightningNetworkノードを立ち上げる方法 https://qiita.com/9muta/items/285431be70caf667ecd1 • LightningNetworkを使ってみる
https://qiita.com/9muta/items/c9549a4694ff5fe8bf25