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.8k
ビットコインを支えるインフラについて
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
420
Bitcoin x Javascript
you21979
1
430
Other Decks in Programming
See All in Programming
gunshi
kazupon
1
140
Flutter On-device AI로 완성하는 오프라인 앱, 박제창 @DevFest INCHEON 2025
itsmedreamwalker
1
190
ELYZA_Findy AI Engineering Summit登壇資料_AIコーディング時代に「ちゃんと」やること_toB LLMプロダクト開発舞台裏_20251216
elyza
2
950
Implementation Patterns
denyspoltorak
0
140
DevFest Android in Korea 2025 - 개발자 커뮤니티를 통해 얻는 가치
wisemuji
0
180
CSC307 Lecture 02
javiergs
PRO
1
750
令和最新版Android Studioで化石デバイス向けアプリを作る
arkw
0
470
GoLab2025 Recap
kuro_kurorrr
0
1.7k
0→1 フロントエンド開発 Tips🚀 #レバテックMeetup
bengo4com
0
470
Denoのセキュリティに関する仕組みの紹介 (toranoana.deno #23)
uki00a
0
220
Go コードベースの構成と AI コンテキスト定義
andpad
0
150
リリース時」テストから「デイリー実行」へ!開発マネージャが取り組んだ、レガシー自動テストのモダン化戦略
goataka
0
160
Featured
See All Featured
Deep Space Network (abreviated)
tonyrice
0
33
The Pragmatic Product Professional
lauravandoore
37
7.1k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
1.7k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.6k
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
330
Practical Orchestrator
shlominoach
190
11k
AI: The stuff that nobody shows you
jnunemaker
PRO
1
160
The Illustrated Guide to Node.js - THAT Conference 2024
reverentgeek
0
220
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.1k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.2k
We Analyzed 250 Million AI Search Results: Here's What I Found
joshbly
0
410
Getting science done with accelerated Python computing platforms
jacobtomlinson
0
89
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は記事が古いかもしれない