開発者向けリファレンス
これは参照用の層で、ビットコインのコードを読んだり、生のトランザクションをデコードしたりするときに出会う、P2Pメッセージの種類、スクリプトのオペコード、RPCのフィールド名、プロトコルの構造を扱い、何かを購入している最中に出会うものではありません。
この分野があるのは、これらの用語の多くが今も調べられているBitcoin Coreの開発者向け用語集が、2021年以降ほとんど変わっておらず、その項目の複数が現在のソフトウェアを説明しなくなっているためです。同用語集が文書化しているBIP70の支払いプロトコルは、Bitcoin Coreのバージョン0.20.0で削除されています。ブルームフィルターの項目が説明している仕組みは、Coreがバージョン0.19.0でデフォルトの提供をやめたものです。これらはすべて、現在のコードの動作に照らして、訂正を黙って適用するのではなく明示したうえで、ここで作り直されています。
用語はいくつかのグループに分かれます。inv、getdata、MSG_FILTERED_WITNESS_BLOCKのようなメッセージの種類は、ピアツーピアプロトコルに属します。OP_RETURNやOP_CHECKSIGのようなオペコードはScriptに属します。署名ハッシュフラグ、シーケンス番号、ロックタイムは、署名が実際に何にコミットするかを決めます。X509と支払いリクエストの項目は歴史的なもので、その旨が記されています。
ほとんどの読者はこの分野を必要としませんし、それで問題ありません。正確なフィールド名を検索した人が、一行だけの断片的なページではなく、正確に説明するページにたどり着けるように、ここに置いています。
47件の用語。最終確認日は2026年9月24日です。
開発者向けリファレンスの用語
- Bitcoin Script別名:ScriptBitcoin Scriptは、すべてのビットコインのアウトプットに組み込まれている小さなスタックベースの言語で、そのコインを再び使用できるようにするために誰かが満たさなければならない条件を定めるものです。
- Bitcoin URI別名:BIP21Bitcoin URIは支払いの詳細を、bitcoin: で始まるクリック可能な1つの文字列にまとめたもので、アドレス、金額、ラベルを含めることができます。
- CompactSize別名:Compact size unsigned integer、VarInt、コンパクトサイズCompactSizeは、ビットコインがシリアライズされたデータ内の個数や長さの前に付ける可変長整数で、253未満の値では1バイト、それ以外では最大9バイトを要します。
- MSG_BLOCKMSG_BLOCKはインベントリ型2であり、ノードがgetdataメッセージに入れてピアに対しハッシュで1つのブロック全体を要求するコードです。
- MSG_CMPCT_BLOCKMSG_CMPCT_BLOCKは、インベントリ種別4にあたる要求専用のコードです。アナウンスに現れることはなく、先に同意したピアへ送るgetdataメッセージの中でだけ有効です。
- MSG_FILTERED_WITNESS_BLOCKフィルタ済みウィットネスブロック型はBIP144の予約リストとBitcoin Coreのソースのenumに存在しますが、どちらにも実装はありません。
- MSG_TXMSG_TXはインベントリの項目をトランザクションとして、タイプコード1で示すものであり、未承認の支払いが、どのピアもその内容を見る前に、ピアへ告知される仕組みです。
- MSG_WITNESS_BLOCKウィットネスブロックのインベントリ型は、SegWit対応のノードが拡張シリアライゼーションでブロックを要求する方法で、すべての署名を削除するのではなく添付した状態で取得します。
- MSG_WITNESS_TXウィットネストランザクション要求は、getdataとして送信され、署名データを除去せずに付けたまま、指定したトランザクションを返すようピアに指示します。
- OP_CHECKMULTISIGOP_CHECKMULTISIGは、署名のグループを公開鍵のリストと1回の手順で照合します。また、Taprootの支払いではバッチ検証を妨げるため、まったく使用できません。
- OP_CHECKSIGOP_CHECKSIGはスタックから公開鍵と署名を取り出し、その署名がこのトランザクションにコミットしていることを検証します。これは、実際にビットコインの所有を証明するチェックです。
- OP_DUPOP_DUPはスタックの最上位の項目をコピーして2回使えるようにする命令であり、そのため標準的なpay-to-public-key-hashのスクリプトは公開鍵のハッシュを計算することと、その公開鍵に対して検証することの両方を行えます。
- OP_EQUALOP_EQUALはスタックの最上位にある2つの項目をバイト単位で比較し、真または偽の結果をプッシュします。そして、すべてのpay-to-script-hash出力において最後に置かれるオペコードです。
- OP_EQUALVERIFYOP_EQUALVERIFYはスタックの最上位2項目を比較し、両者が異なればスクリプトを即座に停止させます。レガシーな支出が正しい公開鍵を提示したことを証明する仕組みは、まさにこの動作によります。
- OP_HASH160OP_HASH160はスタックの最上位の項目にSHA-256を適用し、その結果にRIPEMD-160を適用して、20バイトのダイジェストを残します。これは、1または3で始まるすべてのアドレスに含まれる同じ指紋です。
- OP_RETURNOP_RETURNは、トランザクションのアウトプットを支払い不能であることが証明できる形にするオペコードであり、これにより有効なコインの集合を膨らませることなく、少量の任意のデータをブロックチェーンに書き込めます。
- OP_VERIFYOP_VERIFYはスタックの最上位の項目を取り出し、その項目が真でない限りスクリプト全体を中断します。これにより、Bitcoin Script内のあらゆる検査が厳格な要件になります。
- PaymentDetailsPaymentDetailsは、実際に支払いの内容を記述していたBIP70の内部メッセージで、どの出力に支払うか、いくら支払うか、リクエストがいつ失効するか、署名済みのトランザクションをどこへ送るかを定めていました。
- PaymentRequestPaymentRequestはBIP70の外側のエンベロープです。シリアライズされたPaymentDetailsのバイト列を、証明書チェーンと署名とともに包み込むもので、支払者は誰が要求しているのかを確認できました。
- PKI別名:公開鍵基盤、Public key infrastructurePKI(公開鍵基盤)とは、ある公開鍵が本当にその名前に結び付いたものであるかをソフトウェアが判断できるようにする、認証局、証明書、信頼ストアの仕組みのことです。
- PP amountPP amountは、BIP70のアウトプット内にあったサトシ単位のフィールドで、支払者に送金額を選ばせたい加盟店がゼロに設定するものでした。
- PP expiresPP expiresは、BIP70のPaymentDetailsメッセージに含まれていた任意のUnixタイムスタンプで、その時刻を過ぎるとウォレットがリクエストの受け付けをやめるよう指示するものでした。
- PP pki dataPP pki dataは、BIP70の支払いリクエストにおいて、加盟店の証明書をDERエンコードで格納していたフィールドです。証明書はリーフが先頭で、その後に中間証明書が続き、ルート証明書は含まれていませんでした。
- PP pki typePP pki typeは、BIP70の支払いリクエストの中で、加盟店がどのように署名したかを示す1語の文字列でした。値はnone、SHA-256のx509、SHA-1のx509です。
- PP scriptPP scriptは、BIP70の出力において必須だったフィールドで、支払者が再現しなければならなかった生のロックスクリプト、すなわち最終的にトランザクション出力に含まれるのと同じバイト列を保持していました。
- PPマーチャントデータPPマーチャントデータは、BIP70の加盟店が支払い要求に埋め込み、そのままの形で返送された不透明なバイト列で、入金されたコインを注文と照合するために使われていました。
- PPメモPPメモは、BIP70が加盟店、支払者、または受領を確認するサーバーに、人間が読むために支払いに付けることを認めたUTF-8の自由記述メモでした。
- Pubkey script別名:scriptPubKey、Locking scriptPubkey scriptは、ビットコインの各トランザクション出力に付随する短いビットコインScriptの断片で、その出力のコインが再び移動できるようになる前に満たさなければならない条件を記述します。
- Redeem script別名:redeemScriptRedeem scriptは、pay-to-script-hashのアウトプットの背後に隠された支出条件の全体を定めるスクリプトであり、署名スクリプトの末尾に支出者が添えて提供し、ハッシュを計算して一致するか確認します。
- RPCバイト順RPCバイト順とは、ビットコインのソフトウェアが32バイトのハッシュを表示するときに用いる逆順の方式であり、ウォレットやブロックエクスプローラーからコピーするすべてのトランザクションIDが取る形式です。
- RパラメータRパラメータは、ビットコインURIにBIP72が追加するもので、支払い用アドレスの代わりに、ウォレットが署名済みリクエストを取得することが想定されるURLを置きます。
- SSL署名SSL署名とは、BIP70が、Webサーバーの証明書の鍵でPaymentRequestに署名する際のバイト列に付けた名称であり、この呼び名は書かれた時点ですでに不適切でした。
- URI QRコードURI QRコードとは、bitcoin: URIを符号化した正方形の白黒パターンで、カメラが読み取れるようにしたものです。これにより、本来であれば手入力しなければならないアドレスと金額が読み取れます。
- X.509証明書別名:X.509 certificateX.509証明書は、公開鍵を名前と有効期間に結び付ける署名済みのファイルであり、取引所に対して行うあらゆるHTTPS接続を支える形式です。
- ウィットネススクリプトウィットネススクリプトはP2WSHアウトプットの実際の支払い条件を保持し、ウィットネス内を移動します。そこではそのバイトが通常の4分の1のコストで計量されます。
- オペコード(Opcode)別名:オペコード、Opcode、データプッシュオペコード、非データプッシュオペコードオペコード(Opcode)とは、Bitcoin Scriptの1バイトの命令で、検証ノードに対して次に何を行うか、データをスタックに積むのか、すでにスタックにあるデータに対して1つの操作を行うのかを指示するものです。
- ディスクリプタチェックサムディスクリプタチェックサムとは、出力ディスクリプタ内のハッシュ記号の後ろに付く8文字のコードのことで、ウォレットが誤った鍵を取り込む前に、入力ミスやコピーの誤りを検出するBCH符号です。
- ペイメントプロトコル(BIP70)別名:Payment protocol (BIP70)ペイメントプロトコル(BIP70)は、単なるアドレスの代わりに署名と証明書で裏付けられた支払い要求を使うというビットコインの試みでしたが、Bitcoin Coreはバージョン0.20.0でその最後の対応を削除しました。
- ラベルBitcoin URIにおけるラベルは支払いを受ける個人または事業者の名前を示し、ウォレットにおいてはアドレスやトランザクションに付ける自分専用のメモのことです。
- リーフ証明書リーフ証明書とは、実際に接続したサーバーが提示するエンドエンティティ証明書であり、ドメイン名の管理を証明するものであって、その背後にいる人物については何も証明しません。
- ルート証明書ルート証明書とは、証明書チェーンの最上位にある自己署名の信頼の起点であり、お使いのオペレーティングシステムまたはブラウザのベンダーがそれを置いたという理由だけで信頼されています。
- 署名スクリプト別名:Signature script、scriptSig署名スクリプトとは、インプットが使用するアウトプットのpubkey scriptを満たすために、そのインプットが保持する解錠用データのことであり、現代のSegWitインプットでは空です。
- 証明書チェーン証明書チェーンとは、サーバーが提示する証明書から、お使いの端末がすでに信頼しているルート証明書までをつなぐ、順序づけられた証明書の一覧です。各リンクはその次の証明書によって署名されています。
- 中間証明書中間証明書はルート証明書とリーフ証明書の間に位置し、ルート証明書によって署名され、リーフ証明書に署名するもので、これによりルート証明書の秘密鍵をオフラインのまま未使用に保つことができます。
- 点関数点関数は、secp256k1の生成点をその数で乗算することで秘密鍵を公開鍵に変換するものであり、すべてのビットコインアドレスの土台となる一方向の処理です。
- 内部バイト順内部バイト順とは、ビットコインがシリアライズされた構造の内部で用いる配置のことです。整数は最下位バイトを先頭に書かれ、ハッシュ値はSHA-256が生成した順序のまま書かれます。
- 領収書ビットコインにおける領収書とは、支払いが行われたことを示すために自分が保管しておく証拠のことであり、BIP70では加盟店が署名した受領確認でしたが、実際にはトランザクションIDのことです。
ほかの13分野
- 基本用語ビットコインとは何か、サトシとは何か、そして用語集のほかの項目の土台になる基本的な考え方。
- アドレスと鍵コインの送り先、秘密鍵が実際に管理するもの、そしてひとつのシードから数千のアドレスが生まれる仕組み。
- ウォレットとカストディホット、コールド、カストディ型、マルチシグ。それぞれが、誰がコインを動かせるかをどう変えるのか。
- プライバシーとセキュリティ人々のビットコインを奪う攻撃と、それを防ぐ習慣やツール。
- トランザクションと手数料ビットコインのトランザクションの構成要素、費用がかかる理由、そして止まってしまったものを進める方法。
- 購入と取引所注文の種類、スプレッド、手数料体系:取引所があなたに手数料を請求するときに使う用語。
- 市場と投資時価総額、ボラティリティ、現物ETF。価格の予想を含まない、価格に関する言葉。
- マイニングとコンセンサス新しいブロックが作られる仕組み、難易度が調整するもの、そして誰も管理していなくてもルールが守られる理由。
- プロトコルとアップグレードSegWit、Taproot、ソフトフォーク、BIP:ビットコインがどのように変わり、誰が決めるのか。
- ライトニングとレイヤー2支払いチャネル、インボイス、ルーティング:ブロックのスペースに料金を払わずにビットコインを動かすための仕組み。
- 規制と税金KYC、トラベルルール、MiCA、キャピタルゲイン:あなたの口座と税務申告に関わるルール。
- 文化と歴史Mt. Gox、ジェネシスブロック、HODL、そしてビットコインの語られ方を形づくった出来事とスラング。
- ノードとソフトウェアBitcoin Core、フルノード、プルーニング、RPC:ルールを執行するソフトウェア。
よくある質問
この分野は誰のためのものですか?
ビットコインのソースコードを読む人、生のトランザクションをデコードする人、P2PプロトコルやRPCインターフェースを扱う人のためのものです。購入の層ではなく参照の層であり、ビットコインを持ったり使ったりするのに必要な内容はありません。
Bitcoin Scriptとは何ですか?
コインを使ってよいかどうかを決める、スタックベースの小さな言語です。意図的にループがなく、実行前にすべてのスクリプトのコストを予測できます。ほとんどのトランザクションは、少数の標準パターンのいずれかを使います。
バイト順がたびたび変わるのはなぜですか?
ビットコインは、ハッシュを保存している順序の逆の順序で表示するからです。プロトコルが使うのは内部のバイト順で、RPCの出力とブロックエクスプローラーはそれを反転させます。両者を混同するのが、典型的な最初のバグです。
公式のドキュメントはどこにありますか?
どこか一つのサイトではなく、ソースコードとBIPにあります。ここにある項目は、仕様がある場合はそれを引用し、古い開発者向けドキュメントが時代遅れになっている箇所は、それを繰り返すのではなく訂正します。