Transações: entradas e saídas

Sem saldos, só moedas sendo gastas e criadas.

A sua carteira mostra um saldo, mas o Bitcoin em si não tem contas. Tem moedas, chamadas UTXOs, e transações que destroem umas moedas e criam outras novas.

A estrutura

  • Version (4 bytes).
  • Entradas: cada uma nomeia uma moeda a gastar com um outpoint (txid + índice de saída), um scriptSig e um campo nSequence de 4 bytes.
  • Saídas: cada uma tem um valor em satoshis (8 bytes) e um script de bloqueio, o scriptPubKey, que diz o que é preciso para gastá-la.
  • nLockTime (4 bytes): o bloco ou momento mais cedo em que a transação pode ser minerada.
  • Witness (só SegWit): assinaturas e scripts, fora do txid.

As moedas gastam-se inteiras

Um UTXO não se pode dividir enquanto está lá. Se você tem uma moeda de 0,5 BTC e quer pagar 0,2 BTC, gasta a moeda inteira e cria duas saídas: 0,2 BTC ao receptor e cerca de 0,3 BTC de volta a si como «troco», normalmente para um endereço novo da sua própria carteira.

A taxa é invisível

Nenhum campo diz «taxa». A taxa é simplesmente as entradas menos as saídas. No exemplo acima, se as saídas somam 0,4999 BTC, o minerador pode reivindicar os 0,0001 BTC restantes. Esqueça a saída de troco e toda a diferença vai para o minerador.

O que um nó verifica

  • Cada entrada gasta uma moeda que existe e ainda não foi gasta.
  • O script de cada entrada, junto com o script de bloqueio da moeda (e o witness), corre com sucesso.
  • As saídas não somam mais do que as entradas.
  • Os timelocks estão satisfeitos.

Cunhar moedas novas

A única exceção a «entradas pagam saídas» é a transação coinbase, a primeira de cada bloco, que cria a recompensa de bloco do nada. As suas saídas só podem ser gastas após mais 100 blocos.

Limites de política

O Bitcoin Core também aplica regras de relay além do consenso. Uma transação standard pode ter no máximo 400.000 weight units. Saídas que custam mais a gastar do que valem chamam-se dust e não são retransmitidas. Na feerate de dust por omissão, isso é abaixo de 546 satoshis para uma saída legacy P2PKH e abaixo de 294 satoshis para uma saída SegWit nativa P2WPKH.

Conclusão

Cada bitcoin que você possui é uma saída específica de uma transação passada, bloqueada por um script que só a sua chave pode satisfazer.