O Script bruto é poderoso, mas fácil de errar. Um pequeno erro pode deixar moedas impossíveis de gastar, ou gastáveis pela pessoa errada. Duas ferramentas tornam carteiras avançadas mais seguras.
Descritores de saída
Um descritor é uma string que descreve exatamente quais scripts uma carteira possui:
wpkh(xpub…/0/*): SegWit nativo de chave única.wsh(multi(2,xpubA…,xpubB…,xpubC…)): multisig 2-de-3 P2WSH.tr(KEY,{pk(A),pk(B)}): Taproot com um caminho de chave e duas folhas de script.
Origens de chave como [fingerprint/84h/0h/0h] dizem aos assinantes qual chave usar, e um checksum após # captura erros de digitação. Descritores são padronizados nos BIPs 380–386. Carteiras do Bitcoin Core são baseadas em descritores por padrão desde a versão 23.
Miniscript
Miniscript, desenhado por Pieter Wuille, Andrew Poelstra e Sanket Kanjalkar e especificado no BIP379, é um subconjunto estruturado do Script. Você escreve uma política:
or(pk(A), and(pk(B), older(12960)))
«A pode gastar a qualquer momento, ou B pode gastar após 12.960 blocos (cerca de 90 dias).» Um compilador transforma isso em miniscript, que mapeia diretamente para Script. O resultado parece algo como:
or_d(pk(A),and_v(v:pk(B),older(12960)))
Por que ajuda
- Analisável: o software pode calcular cada forma de gastar, o tamanho máximo do witness (assim taxas podem ser estimadas) e quais chaves são necessárias.
- Componível: peças como
pk(),multi(),thresh(),older(),after()esha256()encaixam de forma tipada. - Amigável a assinantes: qualquer carteira compatível pode assinar qualquer miniscript sem código sob medida, junto com PSBTs.
Uso no mundo real
Miniscript permite carteiras de herança e multisig decrescente, como «2-de-3 agora, 1-de-3 após um ano», que antes exigiam scripts sob medida. O Bitcoin Core suporta miniscript em descritores para P2WSH e Tapscript.
Limites
Miniscript cobre a maior parte do Script útil, mas não todo script possível. Também não pode impedir uma política ruim, como dar a chave de recuperação à pessoa errada.