Glossário · em profundidade

Sighash

Uma flag que diz a quais partes de uma transação uma assinatura se compromete.

Quando assina uma transação, não assina os bytes em bruto. Assina um hash de partes selecionadas, chamado signature hash. Uma flag sighash de um byte no fim da assinatura diz quais partes.

As flags

  • SIGHASH_ALL (padrão): compromete-se com todas as entradas e saídas.
  • SIGHASH_NONE: compromete-se só com as entradas; qualquer um pode mudar as saídas.
  • SIGHASH_SINGLE: compromete-se com a saída do mesmo índice que esta entrada.
  • ANYONECANPAY pode combinar-se com cada uma, de modo que a assinatura só se compromete com a sua própria entrada.

Atualizações

O BIP143 (SegWit v0) fez os assinantes comprometerem-se com o montante gasto, o que corrigiu o hashing quadrático e ajuda carteiras de hardware. O BIP341 (Taproot) foi mais longe e compromete-se com todos os montantes e scripts gastos, e adicionou SIGHASH_DEFAULT, que se comporta como ALL mas poupa um byte.