Luke Dashjr は luke-jr という名前でも知られる Bitcoin 開発者です。マイニング用インターフェース、Bitcoin Knots、公開された提案や標準である BIP にその仕事が見られます。開発に大きな影響を与えることと、ネットワーク全体に代わって決定することの違いを理解する手がかりになります。
Luke Dashjr は GitHub で luke-jr という名前を使っています。GitHub はソースコード、変更の提案、履歴を保存する場所です。プロフィールからは Bitcoin Knots やマイニングソフト BFGMiner などにたどれます。ただし、プロフィールは全貢献者の完全な経歴でも、一人だけで行った仕事の一覧でもありません。個々の変更や仕様書の著者を調べるほうが確かな裏付けになります。以下では、マイナーにどう仕事を渡すか、早く誤りを見つけるにはどうするか、提案が実際に使われているか、という実務上の問題を見ていきます。 [1]
マイニングでは、準備したブロックに対して計算を繰り返し、要求される難易度を満たす結果を探します。その前に、ブロックの内容を組み立てなければなりません。Dashjr が書いた BIP 22 は getblocktemplate というインターフェースを定めています。プログラムはこれを通して、トランザクションを含む候補ブロックの構造を受け取れます。ハッシュ計算用の短いヘッダーだけを渡されるのではなく、ブロックを組み立て、許可された範囲で変更できるのです。一つの作業だけでなく、仕事全体の資料を受け取るようなものです。完成したブロックの有効性ルールは引き続き守る必要があります。 [2]
同じ候補ブロックにある別のトランザクションが作った出力を、後のトランザクションが使う場面を考えてください。前のトランザクションもブロックに含まれている必要があります。BIP 22 の depends フィールドはこうした依存関係を示します。フィールドがない場合は「不明」であり、「依存関係がない」と推測してはいけません。手数料や sigops、つまりブロックの制限に数える署名検証操作数が省略されている場合も同じです。情報がないことと値がゼロであることは別です。この小さな区別が、受け取った資料の読み違いによる無効なブロックを防ぎます。 [2]
Dashjr の BIP 23 は、マイナーの作業をまとめるプール向けにインターフェースを拡張します。任意の proposal モードでは、用意したブロックをサーバーに提出して、作業証明を除くチェックを受けられます。大きな計算負荷をかけて適切な結果を探す前に、内容の問題を見つけられるわけです。ただし肯定的な応答が示すのは、そのサーバーのルールに候補が適合したことだけです。必要な作業証明や、ほかのノードによる判断はまだありません。事前確認に通ったことは、新しいブロックが採掘されたことを意味しません。 [3]
別の分野には、ルール変更の導入があります。Shaolin Fry と Luke Dashjr が書いた BIP 8 は、チェーン上の位置であるブロック高を使って各段階を定めます。lockinontimeout は、所定の条件のもとで最終期間にマイナーのシグナルを必須とし、将来の有効化を確定させるかどうかを決める設定です。LOCKED_IN は ACTIVE ではありません。前者はこの仕組みで後の移行を確保する状態で、新ルールが適用されるのは後者です。施行時点を決めることと、その時点を迎えることの違いに似ています。提案を書くこと自体がネットワーク全体を切り替えるわけではありません。 [4]
Bitcoin Knots は、自分のノードを動かすソフトウェアです。ノードとは、ブロックとトランザクションをダウンロードして完全に検証するコンピューターです。文書には Bitcoin Core の開発成果を取り込みつつ、独自の変更も採用できることが記されています。ウォレットやグラフィカルな操作画面を含めることもできます。今回の確認時点で、公式サイトは Dashjr を主要メンテナーとしています。特定のソフトウェアを維持する責任は、ネットワーク全体に新しいルールを命じる権限ではありません。選ぶ際には、常に同じ動作をすると決めつけず、各リリースの機能や設定を読むことが大切です。 [5] [6]
Bitcoin Knots をダウンロードするときは、目的の発行者からのファイルかを確かめる必要があります。公式サイトは OpenPGP 署名の検証と、独立した情報源での公開鍵の照合を勧めています。公開鍵は電子署名の検証に使いますが、まず誰の鍵かを確かめなければなりません。正しく確認した鍵で署名が有効なら、ファイルの出所と、署名対象のデータが改変されていないことを確認できます。ただし、プログラムに不具合がないという保証にはなりません。出所の確認、コードの検討、設定の選択は、それぞれ別の作業です。 [6]
Dashjr は提案の準備と公開を扱う BIP 2 も書きました。現在は Murch による BIP 3 がそれを置き換えています。この文書は、公開された BIP が、それだけで Bitcoin コミュニティーの合意や一般的な実装推奨を示すものではないと明記しています。提案は文書のまま終わることも、特定のソフトに採用されることも、共同で適用するルールの変更につながることもあります。番号を付けても何かが自動的に有効になるわけではありません。新しい BIP のニュースでは、誰が実装し、実際に使われているかも確認してください。 [7] [8]
理解を深めるには、この項目とあわせて次もお読みください Matt Corallo, Peter Todd, Satoshi Nakamoto. 次の項目からも参照されています Matt Corallo, Peter Todd.