Miniscript e descritores de saída

Escrever políticas de gasto complexas com segurança.

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() e sha256() 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.