Miniscript は新しい opcode、consensus rule、汎用プログラミング言語ではありません。人が書く spending policy と具体的な Bitcoin Script の中間層で、通常は wsh() または Taproot output descriptor に入ります。
Miniscript は署名、hashlocks、timelocks とその組合せに使う Bitcoin Script の一部だけを構造化します。consensus を変えず opcode も追加しません。資金を守るのは生成された Script であり、Miniscript は解析可能な表現です。
Spending policy は「A、または144ブロック後に B」のような意図です。Compiler が具体的な Miniscript を選び Bitcoin Script に変換します。Output Descriptor はさらに鍵、derivation、network、checksum を wsh(...) などへ結び付けます。
pk()、older()、after()、sha256()、and_v()、or_d()、thresh() は厳密な意味を持ちます。v: など wrappers は型や動作を変えます。B、V、K、W 型が stack interface を制約し、互換な式だけを合成できます。
Satisfaction は分岐を真にする witness、dissatisfaction は AND、OR、threshold の合成に必要な標準的な偽です。汎用 signer は署名、preimages、timelocks の可用性で経路を選びます。Miniscript は private key を作らず条件も回避しません。
after(n) は絶対 nLockTime、older(n) は BIP 68 の相対 nSequence を使います。高さと時間の locks は互換で、トランザクション項目も正しく設定する必要があります。最終判定は policy 文ではなく consensus Bitcoin Script です。
静的解析は Script・witness size、操作数、signature checks、stack elements、各 satisfaction path のコストを制限できます。結果は P2WSH または Tapscript context に依存し、consensus と standardness limits の両方を満たす必要があります。
型の正しさは安全な合成を保証しますが、custody policy の妥当性までは保証しません。Malleability 解析は第三者が条件を破らず satisfaction を変えられるかを調べます。hash preimages への同等アクセス等の前提があり、重複鍵は禁止され得ます。
一つの policy から、Script と witness size が異なる同等 Miniscript を複数生成できます。Compiler は cost model を最適化し、9@ 等は確率のヒントで consensus rule ではありません。別のコンパイルは通常、別のアドレスになります。
Descriptor wallet では Miniscript は wsh() または Taproot script path に key origins と共に入ります。PSBT は transaction と derivation を signers へ渡せますが、端末が descriptor と policy を対応する必要があります。画面で鍵、threshold、timelocks、余計な分岐を確認します。
Checksum 付きの正確な descriptor、key map、derivation paths、network、receive/change、range、scan birthday を保存します。parser/analyzer、複数アドレス導出、regtest または signet で全 satisfaction を試し、入金前に watch-only recovery と署名を検証します。 出典: BIP 379 — Miniscript; Miniscript Reference — Specification and Analyzer; Bitcoin Core — Output Descriptors; Bitcoin Core 24.0 — Miniscript Support; BIP 388 — Wallet Policies for Descriptor Wallets.
理解を深めるには、この項目とあわせて次もお読みください Bitcoin Script, Output Descriptor, Multisig, Andrew Poelstra, Timelock, Bitcoin. 次の項目からも参照されています Output Descriptor, Bitcoin Script opcode, Dead Man’s Switch, Andrew Poelstra.