ブロックチェーン/レベル X · 一周して/10.3 ビットコインで暮らす/レッスン 5
ビットコイン上での構築
Regtest、ディスクリプタ、およびパブリックレビューの規律
用意するものBitcoin Coreを実行しているコンピューター(ダウンロード済みかつ検証済み)bitcoin-cliのリファレンス(bitcoin-cli help)BIP 174およびBIP 380のドキュメント
問い
- Bitcoin Coreで1行のコードが変更されても、安定版になるまでに何ヶ月も議論が必要なのはなぜか?
- 開発者は、実際の資金を危険にさらしたりメインネットワークを破壊したりすることなく、コンセンサスに関わる重要なロジックをどのようにテストするのでしょうか?
- デスクリプタとPSBTの違いは何か、そしてなぜどちらも現代のウォレット開発に不可欠なのか?
探究
- Bitcoin Coreには、テスト用としてregtestとSignetという2つの主要な環境が用意されている。Regtestでは、ワークプルーフの要件がないため開発者は即座にブロックをマイニングでき、単体テストやコンセンサスルールの迅速な改善に最適だ。Signet(BIP 325)は公開されているテストネットワークで、こちらでも指定された署名者からの署名がブロックに必要となるため、一定のブロック生成間隔が保たれ、ハッシュレートによる過負荷を受けない。そのため、実際のお金を使わずに他者のソフトウェアとの互換性テストに適している。
- リモートプロシージャコール(RPC)インターフェースにより、Bitcoin Coreの内部状態が外部スクリプトに公開される。開発者はRPCコマンドを使ってチェーンを操作したり、トランザクションを確認したり、regtest環境でマイニングを起動したりする。このようなプログラムベースのアクセスは、グラフィカルユーザインターフェースを完全に無視し、ノードのデータ構造と直接やり取りする必要があるウォレットソフトウェアを開発する上で不可欠だ。
- デスクリプタは、キーがどのようにして支出条件に変換されるかを定義する一方で、部分的に署名されたビットコイントランザクション(PSBT)は複数者による署名処理を可能にする。BIP 174によってPSBTフォーマットが標準化され、ハードウェアウォレット、モバイルデバイス、サーバーといった異なるプラットフォームが秘密鍵を明かすことなくトランザクションに署名を加えることができるようになった。キー管理とトランザクション作成の分離は、安全なマルチシグ設定において極めて重要だ。
- Bitcoin Dev Kit(BDK)およびLightning Dev Kit(LDK)は、アプリケーション開発者がノード管理の複雑さを気にすることなく開発できるようにしています。BDKは、Bitcoin CoreやElectrumサーバー、Esplora APIからチェーンデータを読み取れる、デスクリプタベースのウォレット用のRustライブラリです。一方、LDKはモバイルデバイス向けに最適化された、Lightning Networkプロトコルの軽量な実装を提供します。これらのライブラリにより、高度なシステムプログラミングの知識がなくてもビットコインネイティブなアプリケーションを開発するハードルが下がります。
- パブリックレビューは、ビットコインのセキュリティモデルの根幹をなしています。プルリクエストを通じて提案された変更内容は、世界中の開発者コミュニティによって厳格に審査されます。PR Review Clubは、貢献者が差分を行ごとに分析する定期的なセッションを開催することで、このプロセスを円滑に進めています。この集団的知恵によって微妙なバグが見つかり、コンセンサスに基づく変更が採用される前に十分に理解されるのです。これは、他のソフトウェアエコシステムで一般的な迅速なリリースサイクルとは異なるプロセスです。
- プライベートチェーンを起動するには、bitcoind -regtest -daemonを実行し、bitcoin-cli -regtest createwallet devを使ってウォレットを作成します。次にgeneratetoaddressを使ってそのアドレスのうちの1つで101ブロックマイニングを行い、最初のコインベースが成熟させます。walletcreatefundedpsbtを使って支払いを作成し、decodepsbtでそれを読み取り、walletprocesspsbtおよびsendrawtransactionを使って署名してブロードキャストします。さらに1ブロックマイニングを行い、確認が行われるのを待ちます。
重要な事実
- Regtestは、隔離されたテストにおいてプルーフ・オブ・ワークを必要とせず、即時のブロックマイニングを可能にする。
- Signet(BIP 325)ブロックは指定されたキーによって署名されなければならず、これにより安定したパブリックテストネットワークが実現される。
- BIP 174は、複数者による署名ワークフローのための部分的に署名されたビットコイントランザクション(PSBT)形式を定義しています。
- BIP 380におけるスクリプト記述子は、ウォレットの鍵派生パスと支出条件を定義します。
- Bitcoin Dev Kit(BDK)は、さまざまなチェーンバックエンド上でデスクリプタベースのウォレットを構築するためのRustライブラリです。
- パブリックなプルリクエストのレビューにより、合意に基づく変更がリリースされる前に厳格で多層的なチェックを受けることが保証されます。
演習 九・六・三・一
9集めるビットコイン開発エコシステムにおける9つの異なる構成要素、すなわちregtest、Signet、メインネット、RPCインターフェース、デスクリプター、PSBTs、BDK、LDK、PR Review Clubを特定し、それぞれがソフトウェアのライフサイクルにおいて果たす主な役割を記述しなさい。
6まとめるこれら9つのコンポーネントを、プライベートテスト、パブリックテスト、ノードインターフェース、ウォレット標準、開発用ライブラリ、レビューという機能別に6つのカテゴリーに分類してください。
3絞り込む6つのグループを、ビットコインソフトウェア開発を統制する3つの核心原則に絞り込む。それは、安全性のための分離、互換性のための標準化、そしてセキュリティのための透明性である。
1結晶化するネットワークノードに直接接続できないハードウェアウォレットを使用する場合、PSBTが必要なのは不正アクセスから資産を守るためです。
事実確認
日付、数字、主張は、下記に記載された公表資料と照合して確認しました。