BlueWalletなど昨今のウォレットアプリでは、電子署名やアドレス生成部分などに関して外部のオープンソースな共通コンポーネントを利用してアプリ開発を行っています。開発の現場では、こうした共通の部品をライブラリと呼称します。
ライブラリは様々なプロジェクトに利用されることで、沢山の稼働実績がたまります。その結果、多くの動作不具合が修正され、とても品質の高い部品となります。
電子署名、アドレス生成部分などはセキュリティ上欠陥が許されない大事な部分です。もし自前で全部用意するとなると大変な開発コストがかかります(テスト検証のコストが半端ないです)。
アプリ開発を俯瞰したとき、より低コストで全体のクオリティを上げられるという意味で外部ライブラリを利用する意義は大いにあるといえます。
開発の現場は、こうしたライブラリ、不具合情報をやりとりするコミュニティなど様々な開発者向けエコシステムに支えられています。
今回は、エコシステムの中でもライブラリについて、特にビットコイン周りの世界で最近元気なものについてご紹介しようと思います。
BITCOINJS (BITCOINJS-LIB)
さて、まず最初にご紹介したいのは古株BitcoinJS (bitcoinjs-lib)です。
GitHub上の記録を辿ると2011年5月に最初のコミットがあり、かなり初期のころから存在しているようです。
公式サイト: https://github.com/bitcoinjs/bitcoinjs-lib
うたい文句: A javascript Bitcoin library for node.js and browsers. Written in TypeScript, but committing the JS files to verify.
出来ること: 鍵、ビットコインアドレスの生成、トランザクションの作成
提供スタイル: npmパッケージ (JavaScript)
ライセンス: MIT
GitHubスター数: 5.6k
GitHub上での利用プロジェクト数: 11.2k
最初のコミット: 2011年5月5日
利用ウォレット: BlueWallet
原の所感:
ウォレットに必要とされる機能の中でも特にコアな部分だけを機能提供するライブラリです。ブロックチェーン上の残高参照、送金トランザクション作成時のUTXO選択といった機能はなく、これらは外部ライブラリなどと組合わせて利用します。
npmパッケージで提供されており、SaaS、モバイル(React Native)でも動く点で勝手が良いです。
ドキュメントが存在せず、サンプルコードを参照しろ、というスタンスなのは玄人向けですね。
BITCOIN DEV KIT (BDK)
次にご紹介するのは2020年登場の期待の新星Bitcoin Dev Kit (BDK)。
何度も支払いをする際にアドレス再利用をする必要がない(サブスクリプションをやりやすい)支払いを可能にするBIP47に対応しそうな雰囲気で要注目です。
(関連プルリクエストを見てみると導入に関して揉めているようではあります https://github.com/bitcoindevkit/bdk/pull/574)
公式サイト: https://bitcoindevkit.org/
うたい文句: With BDK, you can seamlessly build cross platform mobile wallets
出来ること: 鍵、ビットコインアドレスの生成、複雑なトランザクションの作成、Descriptors対応、ウォレット管理
提供スタイル: Cargoパッケージ (Rust)
ライセンス: Apache 2.0 / MIT
GitHubスター数: 347
GitHub上での利用プロジェクト数: 統計なし
最初のコミット: 2020年1月23日
原の所感:
Rust製でしっかりした作りの印象です。Bitcoin Coreクライアント、Electrumクライアントまで内蔵しているので、残高参照などもお手の物で頼もしいです。WebAssembly経由でクロスプラットフォームでの利用に対応するようです。私はTypeScriptエコシステムにどっぷりなため、こちらのライブラリはまだ利用したことがないです。WebAssemblyを使ってアクセスできそうなので、どこかで時間を見つけてチャレンジしてみようと思います。
LIGHTNING DEV KIT (LDK)
こちらはBDKとセットで紹介されることの多いライブラリで、Lightning Network用のものとなります。Lightning NetworkのBOLT 1.0 標準規格に対応しています。
2021年末に米ブロック(旧スクエア)の暗号資産部門Spiralが発表したことで話題になりました。
ジャックドーシー人形のでてくる紹介動画までつくっちゃう力の入れようです。https://youtu.be/oOT78Bgy1Qw