Miniscript není nový opcode, konsenzuální pravidlo ani samostatný programovací jazyk s libovolným výpočtem. Je to mezivrstva mezi lidskou spending policy a konkrétním Bitcoin Scriptem, obvykle vložená do wsh() nebo Taproot descriptoru.
Miniscript strukturuje jen vybranou podmnožinu Bitcoin Scriptu pro podpisy, hashlocky, timelocky a jejich kombinace. Nezmění konsensus, nepřidá opcode a mince chrání výsledný Script; Miniscript je analyzovatelná reprezentace, kterou software přeloží nebo rozpozná.
Spending policy popisuje záměr, například „A, nebo B po 144 blocích“. Compiler z ní zvolí konkrétní Miniscript; ten se přeloží na Bitcoin Script. Output Descriptor navíc váže skript ke klíčům, derivaci, síťovému kontextu a checksumu, například wsh(...).
Fragmenty pk(), older(), after(), sha256(), and_v(), or_d() či thresh() mají přesnou sémantiku. Wrappers jako v: mění typ nebo chování bez změny záměru. Typy B, V, K a W hlídají stackové rozhraní, takže lze skládat pouze kompatibilní výrazy.
Satisfaction je witness, který větev splní; dissatisfaction je kanonické nesplnění podvýrazu potřebné pro AND, OR a threshold konstrukce. Obecný signer vybírá cestu podle dostupných podpisů, preimages a timelocků. Miniscript privátní klíče nevytváří ani neobchází chybějící podmínku.
after(n) používá absolutní nLockTime a older(n) relativní nSequence podle BIP 68. Výškové a časové timelocky musí být kompatibilní a transakce musí mít správná pole; validitu nakonec vyhodnotí consensus Bitcoin Script, nikoli text policy.
Statická analýza dokáže předem odhadnout velikost Scriptu a witnessu, počet operací a podpisových kontrol, stackové prvky i náklady různých satisfaction cest. Výsledek závisí na kontextu P2WSH nebo Tapscript a musí respektovat konsenzuální i standardness limity.
Typová správnost znamená bezpečnou kompozici, nikoli automaticky rozumnou custody policy. Analýza malleability hledá, zda třetí strana může změnit platnou satisfaction bez porušení podmínek. Záruky stojí na uvedených předpokladech, například dostupnosti stejných hash preimages, a opakované klíče mohou být zakázány.
Jedna policy může mít více ekvivalentních Miniscriptů s odlišnou velikostí Scriptu a witnessu. Compiler optimalizuje podle cost modelu; váhy jako 9@ u větví jsou pravděpodobnostní nápověda, ne consensus pravidlo. Jiná kompilace obvykle vytvoří jiný Script a tedy jiné adresy.
V descriptor wallet je Miniscript součástí wsh() nebo Taproot script path spolu s key origins. PSBT může předat transakci a derivační data signerům, ale zařízení musí daný descriptor a policy skutečně podporovat. Na displeji ověřte klíče, threshold, timelocky a nečekané větve.
Uložte přesný checksummed descriptor, key map, derivation paths, síť, receive/change větve, range a scan birthday. Proveďte parser/analyzer kontrolu, odvoďte několik adres a otestujte každou zamýšlenou satisfaction na regtestu či signetu. Obnovu watch-only i podpisovou cestu vyzkoušejte před vložením hodnoty. Prameny: 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.
Pro nejúplnější obraz čtěte toto heslo společně s Bitcoin Script, Output Descriptor, Multisig, Andrew Poelstra, Timelock, Bitcoin. Opačným směrem na něj odkazují také Output Descriptor, Opcode Bitcoin Scriptu, Dead Man’s Switch, Pieter Wuille.