Rå Script er kraftig, men lett å gjøre feil. En liten feil kan gjøre mynter ubrukelige, eller brukbare for feil person. To verktøy gjør avanserte lommebøker tryggere.
Output-deskriptorer
En deskriptor er en streng som beskriver nøyaktig hvilke scripter en lommebok eier:
wpkh(xpub…/0/*): native SegWit enkeltnøkkel.wsh(multi(2,xpubA…,xpubB…,xpubC…)): 2-av-3 P2WSH multisig.tr(KEY,{pk(A),pk(B)}): Taproot med en nøkkelsti og to script-blader.
Nøkkelopphav som [fingerprint/84h/0h/0h] forteller signere hvilken nøkkel som skal brukes, og en sjekksum etter # fanger skrivefeil. Deskriptorer er standardisert i BIP 380–386. Bitcoin Core-lommebøker har vært deskriptor-baserte som standard siden versjon 23.
Miniscript
Miniscript, designet av Pieter Wuille, Andrew Poelstra og Sanket Kanjalkar og spesifisert i BIP379, er et strukturert subsett av Script. Du skriver en policy:
or(pk(A), and(pk(B), older(12960)))
«A kan bruke når som helst, eller B kan bruke etter 12 960 blokker (omkring 90 dager).» En kompilator gjør dette om til miniscript, som mapper direkte til Script. Resultatet ser omtrent slik ut:
or_d(pk(A),and_v(v:pk(B),older(12960)))
Hvorfor det hjelper
- Analyserbart: programvare kan beregne hver måte å bruke på, maksimal witness-størrelse (så gebyrer kan estimeres), og hvilke nøkler som trengs.
- Sammensettbart: brikker som
pk(),multi(),thresh(),older(),after()ogsha256()passer sammen på en type-sjekket måte. - Signer-vennlig: enhver kompatibel lommebok kan signere for ethvert miniscript uten tilpasset kode, sammen med PSBT-er.
Bruk i praksis
Miniscript muliggjør arv og avtakende multisig-lommebøker, som «2-av-3 nå, 1-av-3 etter et år», som tidligere krevde tilpassede scripter. Bitcoin Core støtter miniscript i deskriptorer for P2WSH og Tapscript.
Grenser
Miniscript dekker det meste av nyttig Script, men ikke hvert mulige script. Det kan heller ikke forhindre en dårlig policy, som å gi gjenopprettingsnøkkelen til feil person.