Bitcoin Script入門:スマートなトランザクションロジックの基礎
上級
要約: Bitcoin Scriptとは何か、どのように機能し、どのような役割を果たすのか。この詳細な技術ガイドでは、Script言語の構造と実際の活用例を掘り下げて解説します。
ビットコインのプログラマビリティ:Scriptが存在する理由
ビットコインは単なるデジタル通貨システムではなく、特定の条件ロジックをトランザクションに組み込めるプラットフォームでもあります。このプログラマビリティは、Scriptと呼ばれる比較的シンプルな言語によって実現されています。
Scriptは、ビットコインのトランザクションにおけるロック条件とアンロック条件を定義します。イーサリアムのスマートコントラクトほどの柔軟性はありませんが、Bitcoin Scriptはよりシンプルな仕組みで強力なカスタムロジックを実現します。
Scriptとは何か?その仕組み
Scriptはスタックベースのプログラミング言語です。命令(OPコード)は、スタックにデータを積む(プッシュする)か、スタック上の既存の要素を操作します。
Scriptは、ビットコインのトランザクションを構成する次の2つの主要な要素に登場します。
- ScriptPubKey:受取人のアドレスによって指定されるロックスクリプト。
- ScriptSig:送信者が提供するアンロックスクリプト。
この2つのスクリプトは連結され、まとめて実行されます。最終的にスタックの最上部に「true」が残れば、そのトランザクションは有効です。
Bitcoin Scriptの主な特徴
- チューリング完全ではない:ループや無限実行はありません。セキュリティを考慮した意図的な設計です。
- 決定論的:同じ入力からは常に同じ出力が得られます。
- ミニマル:不要な複雑さを避け、中核的な機能に絞って設計されています。
- スタックベース:LIFO(後入れ先出し)のデータ構造で動作します。
代表的なスクリプトの種類
1. P2PKH(Pay-to-Public-Key-Hash)
ビットコインにおける標準的なトランザクション形式です。
- ScriptPubKey: OP_DUP OP_HASH160 <PubKeyHash> OP_EQUALVERIFY OP_CHECKSIG
- ScriptSig: <Signature> <PublicKey>
対応する秘密鍵の保有者だけが、資金のロックを解除できます。
2. P2SH(Pay-to-Script-Hash)
より複雑なスクリプトを、1つのハッシュ化されたアドレスとして表現できます。
- ScriptPubKey: OP_HASH160 <ScriptHash> OP_EQUAL
- ScriptSig: <Signature(s)> ... <RedeemScript>
マルチシグやタイムロック付きの支払いによく使われます。
3. マルチシグ(Multisig)
トランザクションを承認するために、複数の有効な署名を必要とします。
例:2-of-3マルチシグのスクリプト:
OP_2 <PubKey1> <PubKey2> <PubKey3> OP_3 OP_CHECKMULTISIG
通常はP2SH構造の中に組み込まれます。
主要なOPコードの概要
Scriptは、OP(オペレーション)コードを使ってロジックを定義します。代表的なものは次のとおりです。
- OP_DUP:スタックの最上部の要素を複製します。
- OP_HASH160:SHA-256を適用した後、RIPEMD-160を適用します。
- OP_EQUALVERIFY:2つの値を比較し、異なる場合はエラーになります。
- OP_CHECKSIG:デジタル署名を検証します。
- OP_CHECKLOCKTIMEVERIFY:時間に基づく支出制限を課します。
スクリプトはこれらのコードを組み合わせて、支出条件を検証する一連のロジックを構築します。
Bitcoin Scriptの技術的な例
基本的なP2PKHの例
- ScriptSig: <Signature> <PublicKey>
- ScriptPubKey: OP_DUP OP_HASH160 <PubKeyHash> OP_EQUALVERIFY OP_CHECKSIG
これらをまとめて実行すると、スタックが各ステップを順に処理して所有権を検証し、支払いを承認します。
タイムロック付きスクリプト
ScriptPubKey: <LockTime> OP_CHECKLOCKTIMEVERIFY OP_DROP <PubKey> OP_CHECKSIG
指定した時刻またはブロック高に達するまで、資金を使うことはできません。エスクロー、相続、段階的な資金の解放などに役立ちます。
Bitcoin Scriptで構築できるもの
- マルチシグネチャウォレット
- タイムロック付きの支払い
- ライトニングネットワークでのチャネル開設
- エスクローシステム
- 制限付きの支出条件(例:1回限り使用できるアウトプット)
Scriptはシンプルさと機能性のバランスを備えており、ビットコインの理念に沿ったものとなっています。
Bitcoin Scriptが重要な理由
Bitcoin Scriptは、ビットコインが単なるデジタルマネー以上のものであることを示しています。トランザクション内でプログラム可能なロジックを実現し、セキュリティを損なうことなく、より高い柔軟性とトラストレスな条件設定を可能にします。
よくある質問:Bitcoin Scriptに関する疑問
Q:Bitcoin Scriptはチューリング完全ですか?
A:いいえ。セキュリティ上の理由から、ループやランダム性を意図的に排除しています。
Q:Bitcoin ScriptはNFTやDeFiに対応できますか?
A:限られた形でのみ可能です。トークンの管理やエスクローといった基本的な機能は実装できますが、本格的なDeFiのロジックは実装できません。
Q:新しいOPコードは今も追加されていますか?
A:はい。SegWitやTaprootなどのアップグレードによって新しいOPコードが導入されており、さらなる追加も議論されています。
まとめ:Scriptはビットコインのスマートレイヤー
Bitcoin Scriptは、ネットワークを支えるトランザクションロジックを定義しています。高度な技術的理解が求められるものの、開発者、セキュリティ専門家、プロトコル設計者にとって欠かせないツールです。
Bitcoin Scriptを探求するユーザーが増えるにつれ、ビットコインがいかに柔軟で安全、かつプログラム可能であるかに気づく人も増えています。
推奨事項
- テストネットを使って、Bitcoin Scriptを安全に試しましょう。
- ScriptSigとScriptPubKeyの違いをしっかり理解しましょう。
- 実際のスクリプトを使って練習しながら、OPコードを習得しましょう。
- マルチシグやタイムロックのシナリオを実装し、実践的に学びましょう。
- Bitcoin CoreのドキュメントやGitHub上のBIPアーカイブを定期的に確認しましょう。





