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
ビットコインを支えるインフラについて
Search
Yuki Akiyama
December 12, 2017
Programming
3
3.7k
ビットコインを支えるインフラについて
Yuki Akiyama
December 12, 2017
Tweet
Share
More Decks by Yuki Akiyama
See All by Yuki Akiyama
Rippleアドレスについて
you21979
0
2.1k
Bitcoinにおける手数料の考え方
you21979
1
1.2k
トレーディングボットとは
you21979
0
410
Bitcoin x Javascript
you21979
1
410
Other Decks in Programming
See All in Programming
dbt民主化とLLMによる開発ブースト ~ AI Readyな分析サイクルを目指して ~
yoshyum
3
1.1k
ソフトウェア品質を数字で捉える技術。事業成長を支えるシステム品質の マネジメント
takuya542
2
14k
High-Level Programming Languages in AI Era -Human Thought and Mind-
hayat01sh1da
PRO
0
830
Startups on Rails in Past, Present and Future–Irina Nazarova, RailsConf 2025
irinanazarova
0
150
The Modern View Layer Rails Deserves: A Vision For 2025 And Beyond @ RailsConf 2025, Philadelphia, PA
marcoroth
2
630
ISUCON研修おかわり会 講義スライド
arfes0e2b3c
1
460
Advanced Micro Frontends: Multi Version/ Framework Scenarios @WAD 2025, Berlin
manfredsteyer
PRO
0
340
AI駆動のマルチエージェントによる業務フロー自動化の設計と実践
h_okkah
0
190
ペアプロ × 生成AI 現場での実践と課題について / generative-ai-in-pair-programming
codmoninc
2
20k
git worktree × Claude Code × MCP ~生成AI時代の並列開発フロー~
hisuzuya
1
590
Python型ヒント完全ガイド 初心者でも分かる、現代的で実践的な使い方
mickey_kubo
1
150
Claude Code + Container Use と Cursor で作る ローカル並列開発環境のススメ / ccc local dev
kaelaela
11
6.5k
Featured
See All Featured
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
8
830
Keith and Marios Guide to Fast Websites
keithpitt
411
22k
How to train your dragon (web standard)
notwaldorf
96
6.1k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
8
700
Mobile First: as difficult as doing things right
swwweet
223
9.7k
GraphQLとの向き合い方2022年版
quramy
49
14k
Intergalactic Javascript Robots from Outer Space
tanoku
271
27k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
281
13k
Typedesign – Prime Four
hannesfritz
42
2.7k
What's in a price? How to price your products and services
michaelherold
246
12k
BBQ
matthewcrist
89
9.7k
Building an army of robots
kneath
306
45k
Transcript
ビットコインを支える インフラについて ビットコインとか勉強会#13 2017/12/11 Yuki Akiyama
自己紹介 名前: Yuki Akiyama (ゆあ) twitter : @you21979 所属:ビットバンク株式会社 好きな動物:
ペンギン お仕事など: 新卒のころは証券システム開発 ちょっと前までオンラインゲームやスマホのゲーム開発 今は取引所で暗号通貨のインテグレーションをしています
暗号通貨アドベントカレンダー 開催中です。 埋まっていないので 勉強中のことでもよいので、書いてみたい人! よろしくお願いします https://qiita.com/advent-calendar/2017/cryptocurrencies
そもそなぜインフラがいるのか ビットコインのインフラというとbitcoindがまず思い浮かびますが ウォレットシステムを最初に作ろうとすると最初につまずくことがあります bitcoindのウォレットで管理しているアドレス以外入金データを取得する方法が標準で提 供されていないのです bitcoin-rpcにあるlistunspentのようなコマンドが管理外アドレスでは使えないのです。
入金確認で期待されるインターフェイス • ビットコインアドレスを指定して、未使用のトランザクション(UTXO)一覧を取得する • 新規のUTXOを発見したら、一定の検証数を確認するまで保留し、確認後入金処 理をする
入金確認で期待されるインターフェイス • ビットコインアドレスを指定して、未使用のトランザクション(UTXO)一覧を取得する • 新規のUTXOを発見したら、一定の検証数を確認するまで保留し、確認後入金処 理をする ビットコインアドレスを指定するところから 標準の方法ではサポートされていない
できているよ? でも世の中にはWEBやスマートフォンで動くウォレットがあり 自分で秘密鍵を管理しアドレスを外部から問い合わせて残高が取得できている
今日話すこと これを解決するプロダクトとして代表的な二つのOSSプロダクトがある • insight • electrumx どちらも端末側でウォレットを動かすためのバックエンドサーバーです
insight オープンソースなブロックエクスプローラとして有名 作者はペイメントプロセッサーのBitpay Nodejsで作られている REST-APIで情報を取得できる ハードウェアウォレットのTrezorがWEBウォレットのバックエンドに使っている
insightのクライアントソフト達
insight 基本的に以下の5つの部品から構成されている • 魔改造版bitcoind (insightを動かすために改造されたbitcoind) • bitcore-lib (ビットコインのライブラリ) • bitcore-node
(utxoのデータベース) • insight-ui (ブロックエクスプローラの画面) • insight-api (REST-API)
insightのすごいところ • REST-APIである https://insight.bitpay.com/api/addrs/bitcoin_address/utxo 必要なデータは大体一回のリクエストでとれる • メンテ不要 • ブロックエクスプローラがついている •
マルチプラットホームのウォレットをホスティングできる • プラグインシステムなのでbitcoindからデータを受け取って集計するシステムを簡 単に作れる
insightのつらみ • まだsegwitに対応していない(v5から対応) • bitcoindが魔改造版なので最新版に追従しにくい(最新版を使うには自分でパッチ を当てる必要がある) • 次期バージョンでは魔改造版からbcoinに変更 • データベースがでかい(来年にはbitcoindと合わせて500GB突破しそう)
• しばらく開発が滞ってた(最近はまた活発)
insightはオルトコイン対応のしやすい? チェインパラメータを対応する(値変えるだけで簡単) segwitに対応したコインならそれに対応 (そこそこめんどい) 魔改造版bitcoindをパッチを当てて作る(大変) モナで試した人がいて10日くらいかかってました(でも少し不安定)
insightはオルトコイン対応のしやすい? • Litecoin https://github.com/litecoin-project/litecore-node • ZCash https://github.com/BitMEX/zcash-bitcore-node • Dash https://github.com/dashpay/bitcore-node-dash
• Zcoin https://github.com/Technoprenerd/bitcore-node-zcoin オルトコイン版のinsightは結構不安定だったりするので動いたらラッキーくらいに。
electrumx ウォレットソフトのelectrumのサーバーサイド実装 以前はオルタナティブな実装だったが正式にelectrumの後継サーバーとなった 作者はkyuupichan Python3で作られている tcp接続にてAPIサーバーとして扱える
electrumのクライアントソフト達
electrumx 基本的に三つの部品から構成されている • bitcoind (通常のcoind) • electrumx_server (utxoのデータベース) • compact_history
(データベースメンテナンスツール)
electrumxのすごいところ • 最初からオルトコインに対応できるように設計されている • 現在30種類くらい対応 • REST-APIじゃないので扱いにくいがアドレスウォッチ機能などプッシュ通知ができる
electrumxのつらみ • 必要なデータを一度で取得できないのでいくつか組み合わせて使う • トランザクションをデコードしてくれないので自分で解析する • 定期的にメンテナンスが必要でダウンタイムが必要 • HTTPではないのでwebから使うには変換する仕組みが必要 •
ウォレットを作るには十分だが他のことをやるにはいろいろ足りない
electrumxはオルトコインに対応しやすい? • coins.pyに入っているコインは設定ファイルに記載するだけで対応できる • 対応していないコインなら独自機能を定義する必要があるが同じ機能をほかのコイ ンが実装しているならそれを流用できる • フォーク版作る必要がない(積極的にプルリクを取り込んでいる)
機能比較 対応表 機能 insight electrumx ウォレット実装しやすさ ◎ 〇 最新版への追従のしやすさ △
◎ オルトコイン対応 △ ◎ エコシステムへの応用 〇 △
余談 ここで紹介したインフラ二つともビッグブロック支持なので ビットコインキャッシュは当然のように対応されます
ご清聴ありがとうございました 質問等あれば
おまけ • electrumxのインストール手順(centos7) https://qiita.com/you21979@github/items/91d9362a63392ab69795 • bitcore-nodeの導入方法(ブロックエクスプローラーinsightの導入方法) https://qiita.com/you21979@github/items/a0886460be33f31134b0 ※insightは記事が古いかもしれない