wTXID

Como um TXID, mas incluindo os dados de testemunha

Um wTXID é como um TXID, mas inclui os dados de testemunha de uma transação.

Ícone Ferramenta

TXID

Calcule o identificador (TXID/wTXID) de uma transação: HASH256 dos dados, em ordem de bytes invertida.

0 bytes

Exemplos

Como você cria um wTXID?

Transação SegWit

Para uma transação segwit, o TXID é o HASH256 dos dados exceto marker/flag/witness, e o wTXID é o HASH256 de todos os dados incluindo esses campos. Os dois são diferentes.

Ordem de Bytes. Não esqueça que TXIDs e wTXIDs são exibidos em ordem invertida, então o resultado inicial do HASH256 estará em ordem natural (parece "ao contrário" no início).

Transação Legada

Uma transação não-segwit tem o mesmo TXID e wTXID, já que não contém marker, flag nem witness.

Você pode encontrar o wTXID de uma transação rodando bitcoin-cli getrawtransaction <txid> 1. O wTXID será igual ao campo "hash".

Compromisso de wTXID

Comprometendo os dados de testemunha ao bloco

Os wTXIDs são usados para comprometer os novos dados das transações segwit ao bloco, por meio de uma raiz da testemunha (witness root hash).

Todos os dados das transações legadas são comprometidos ao cabeçalho do bloco por meio de uma raiz de Merkle de todos os TXIDs do bloco. Porém, os TXIDs não incluem os dados de marker, flag e witness. Então, para todos os blocos desde a atualização SegWit, também criamos uma raiz de Merkle de todos os wTXIDs e a comprometemos ao bloco.

Ícone Ferramenta

Raiz de Merkle

Calcule a raiz de Merkle a partir de uma lista de TXIDs (um por linha, na ordem de exibição/explorer).

Essa raiz da testemunha passa pelo HASH256 junto com o valor reservado da testemunha para criar um compromisso de wTXID, que é colocado dentro do ScriptPubKey de uma das saídas da transação coinbase. Assim, se alguém tentar alterar o conteúdo da testemunha de qualquer transação do bloco, ela não vai mais bater com o compromisso, e o bloco será inválido.

Ícone Ferramenta

HASH256

SHA-256 dupla. Faz o hash dos bytes de dados usando SHA-256 duas vezes: SHA256(SHA256(dados)).

0 bytes 0 bytes

Os wTXIDs servem, em última análise, para impedir que alguém edite os novos dados de testemunha (segwit) incluídos no bloco.

A raiz da testemunha usa o wTXID da coinbase como todo zeros, para evitar uma referência circular.