Visão geral
Uma transação é o mecanismo fundamental para transferir valor na rede Bitcoin. Todo movimento de bitcoin — desde pagamentos simples até contratos complexos entre múltiplas partes — é expresso como uma transação. Uma transação consome um ou mais UTXOs existentes como entradas e cria um ou mais UTXOs novos como saídas, sendo a diferença entre o total de entradas e o total de saídas a taxa de transação.
Estrutura de uma transação
Transação
┌──────────────────────────────────────────┐
│ Versão: 2 │
├──────────────────────────────────────────┤
│ Entradas: │
│ ┌────────────────────────────────────┐ │
│ │ TXID anterior + Índice de saída │ │
│ │ ScriptSig / Testemunha (prova) │ │
│ │ Número de sequência │ │
│ └────────────────────────────────────┘ │
│ (uma ou mais entradas) │
├──────────────────────────────────────────┤
│ Saídas: │
│ ┌────────────────────────────────────┐ │
│ │ Valor (em satoshis) │ │
│ │ ScriptPubKey (script de bloqueio) │ │
│ └────────────────────────────────────┘ │
│ (uma ou mais saídas) │
├──────────────────────────────────────────┤
│ Locktime │
└──────────────────────────────────────────┘
Ciclo de vida de uma transação
- Construção: A carteira do remetente seleciona UTXOs para gastar como entradas e define as saídas (endereço do destinatário e valor, mais o troco).
- Assinatura: A carteira assina cada entrada com a chave privada correspondente, satisfazendo as condições de gasto.
- Transmissão: A transação assinada é enviada aos nós conectados na rede peer-to-peer.
- Mempool: Os nós validam a transação e a colocam em sua mempool, aguardando inclusão em um bloco.
- Confirmação: Um minerador inclui a transação em um bloco, e ela recebe sua primeira confirmação.
Tipos de transações
- Padrão (P2PKH, P2SH, P2WPKH, P2WSH, P2TR): Formatos de pagamento comuns reconhecidos pelas políticas de retransmissão padrão.
- Coinbase: Uma transação especial em cada bloco que cria novo bitcoin como a recompensa de bloco.
- Varredura: Consolida todos os UTXOs em uma única saída.
- Em lote: Combina múltiplos pagamentos em uma única transação para economizar em taxas.
Identificação
Cada transação é identificada pelo seu ID de transação (TXID), um hash único de 256 bits derivado dos dados da transação. Em transações SegWit, o TXID exclui os dados da testemunha, resolvendo o problema da maleabilidade de transações.