132 / 691MINI

Miniscript

Strukturyzowany język Bitcoin Script

Miniscript jest ustrukturyzowaną, typowaną reprezentacją ograniczonego podzbioru Bitcoin Script. Umożliwia składanie warunków wydania, analizę właściwości i budowę poprawnej satisfaction bez osobnej logiki dla każdego script.

Miniscript nie jest nowym opcode, consensus rule ani językiem ogólnego przeznaczenia. To warstwa pośrednia między ludzką spending policy a konkretnym Bitcoin Script, zwykle osadzona w wsh() lub Taproot output descriptor.

Miniscript strukturyzuje tylko wybrany podzbiór Bitcoin Script dla podpisów, hashlocks, timelocks i ich kombinacji. Nie zmienia consensus ani nie dodaje opcode; środki chroni wynikowy Script, a Miniscript jest jego analizowalną reprezentacją.

Spending policy opisuje zamiar: „A albo B po 144 blokach”. Compiler wybiera konkretny Miniscript tłumaczony na Bitcoin Script. Output Descriptor dodatkowo wiąże script z kluczami, derivation, siecią i checksum, na przykład wsh(...).

pk(), older(), after(), sha256(), and_v(), or_d() i thresh() mają ścisłą semantykę. Wrappers jak v: zmieniają typ lub zachowanie. Typy B, V, K i W kontrolują interfejsy stack, więc można składać wyłącznie zgodne wyrażenia.

Satisfaction to witness spełniający gałąź; dissatisfaction to kanoniczny fałsz potrzebny w AND, OR i threshold. Ogólny signer wybiera ścieżkę z dostępnych podpisów, preimages i timelocks. Miniscript nie tworzy private keys ani nie omija brakującego warunku.

after(n) używa bezwzględnego nLockTime, a older(n) względnego nSequence według BIP 68. Locks oparte na wysokości i czasie muszą być zgodne, a pola transakcji poprawne; ostatecznie sprawdza consensus Bitcoin Script, nie tekst policy.

Analiza statyczna ogranicza rozmiar Script i witness, liczbę operacji i signature checks, stack elements oraz koszt ścieżek satisfaction. Wynik zależy od P2WSH lub Tapscript i musi spełniać limity consensus i standardness.

Poprawność typów zapewnia bezpieczną kompozycję, nie rozsądną custody policy. Analiza malleability pyta, czy ktoś może zmienić poprawną satisfaction bez złamania warunków. Gwarancje wymagają założeń, np. równego dostępu do hash preimages; duplikaty kluczy mogą być zabronione.

Jedna policy może dać równoważne Miniscripts o różnych rozmiarach Script i witness. Compiler optymalizuje cost model; wagi 9@ są wskazówką prawdopodobieństwa, nie consensus rule. Inna kompilacja zwykle tworzy inne adresy.

W descriptor wallet Miniscript jest w wsh() lub Taproot script path wraz z key origins. PSBT przenosi transakcję i derivation do signers, ale urządzenie musi obsługiwać descriptor i policy. Na ekranie sprawdź klucze, threshold, timelocks i nieoczekiwane gałęzie.

Zachowaj dokładny descriptor z checksum, key map, derivation paths, sieć, receive/change, range i scan birthday. Uruchom parser/analyzer, wyprowadź kilka adresów i sprawdź każdą satisfaction na regtest lub signet. Przetestuj watch-only recovery i podpis przed wpłatą. Źródła: 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.

Pełniejszy obraz uzyskasz, czytając to hasło razem z Bitcoin Script, Output Descriptor, Multisig, Andrew Poelstra, Timelock, Bitcoin. Do tego hasła prowadzą również odsyłacze z Output Descriptor, Bitcoin Script opcode, Dead Man’s Switch, Andrew Poelstra.

DOC · 001BIP 379 — MiniscriptSpecyfikacja ↗DOC · 002Miniscript Reference — Specification and AnalyzerSpecyfikacja ↗DOC · 003Bitcoin Core — Output DescriptorsDokumentacja ↗DOC · 004Bitcoin Core 24.0 — Miniscript SupportDokumentacja ↗DOC · 005BIP 388 — Wallet Policies for Descriptor WalletsSpecyfikacja ↗
Sprawdzono 1 sierpnia 2026Najpierw źródła · To nie jest porada inwestycyjna