O que é uma transação coinbase e como funciona no Bitcoin?

O que é uma transação coinbase e como funciona no Bitcoin?

O que é uma transação coinbase?

Uma transação coinbase é a primeira transação em cada bloco de Bitcoin. Esta é a forma como um miner recebe a recompensa por esse bloco. Esta recompensa chama-se block reward e consiste em duas partes: bitcoin recém-emitido, a block subsidy, e as taxas de transação de todas as transações normais que o miner incluiu nesse bloco.

O miner que cria um bloco candidato coloca sempre esta transação em primeiro lugar no bloco. Através dos outputs, ou seja, dos destinos do dinheiro, o miner pode fazer com que a recompensa siga para uma sua própria morada ou para uma miningpool.


Pontos principais

  • Uma transação coinbase é sempre a primeira transação de um bloco de Bitcoin.
  • Os miners usam esta transação para reclamar a block subsidy e as taxas de transação.
  • Os full nodes verificam se a transação coinbase cumpre as regras do Bitcoin.
  • Uma transação coinbase tem uma input especial que não faz referência a um output anterior de Bitcoin.
  • A recompensa só pode ser gasta a partir da block height h+100.

Como funciona uma transação coinbase?

Um miner cria primeiro um bloco candidato com a transação coinbase no topo e, depois, acrescenta, se for caso disso, transações da mempool. A mempool é, de forma simples, a fila de espera com transações que já foram enviadas para a rede, mas que ainda não constam num bloco.

O miner escolhe depois para onde vai a recompensa. Pode ser uma sua própria morada Bitcoin, mas nas miningpools existe muitas vezes um script de pagamento definido pela pool. A pool trata depois de como os participantes são pagos.

Na input especial da coinbase consta, entre outras coisas, a block height, ou seja, o número de ordem do bloco. O miner também pode acrescentar aí dados extra, como uma nonce adicional. Uma nonce é um valor que o software de mining altera continuamente durante a procura de um hash válido.

Porque é que isso é útil? Em proof of work, o miner tenta muitos hashes diferentes até encontrar um que cumpra as regras do Bitcoin. Se a nonce normal no cabeçalho do bloco já não for suficiente para fazer novas tentativas, o miner pode ajustar a nonce extra na transação coinbase.

Com isso, o ID da transação coinbase muda. Em seguida, também muda a merkle root, uma espécie de impressão criptográfica resumida de todas as transações no bloco. Assim, o miner volta a ter muitas novas possibilidades para tentar hashes.

A transação coinbase só conta realmente quando o miner encontra um bloco válido e os nodes aceitam esse bloco. Um node é um computador que verifica as regras do Bitcoin. Se um node rejeitar o bloco, então a transação coinbase também não faz parte da blockchain ativa do Bitcoin.

Qual é a diferença entre uma transação coinbase e uma transação normal?

A grande diferença é que uma transação normal de Bitcoin gasta bitcoin existente, enquanto uma transação coinbase fixa a recompensa do bloco.

Uma transação normal usa uma ou mais inputs. Uma dessas inputs faz referência a um “Unspent Transaction Output” anterior, ainda não gasto. Esse output não gasto também é chamado de UTXO. De forma simples: um UTXO é uma parte de bitcoin que ainda está pronta para ser gasta.

Numa transação normal, o valor dos outputs tem de ser igual ou inferior ao valor das inputs. A diferença é a taxa de transação que o miner pode receber.

Uma transação coinbase funciona de forma diferente. Esta tem exatamente uma input especial coinbase. Esta não faz de propósito referência a um UTXO existente. Em vez disso, contém um hash nulo como ID da transação anterior e o índice 0xffffffff.

Isto não significa que o miner possa simplesmente criar bitcoin. O valor total dos outputs pode ser, no máximo, igual à subsidy desse bloco mais as fees das outras transações no mesmo bloco.

Também se aplicam duas regras simples do bloco:

  • Um bloco tem de começar com exatamente uma transação coinbase.
  • Mais tarde, no mesmo bloco, não pode existir uma segunda transação coinbase.

Outra diferença: os outputs de uma transação coinbase não podem ser gastos de imediato. Para isso, aplica-se um período de espera separado de 100 novos blocos.

Que regras se aplicam a uma transação coinbase?

Uma transação coinbase tem de cumprir várias regras fixas do Bitcoin. Se isso não acontecer, todo o bloco é rejeitado pela rede.

As regras mais importantes são:

  • A transação coinbase está sempre como primeira transação num bloco.
  • A transação tem uma input especial.
  • Essa input não faz referência a bitcoin recebidos anteriormente, como numa transação normal.
  • Na input é incluído, entre outras coisas, o número do bloco, também chamado de block height.
  • O miner não pode dar a si próprio uma quantidade arbitrária de bitcoin.
  • A recompensa total pode consistir, no máximo, na block subsidy mais as taxas de transação do bloco.

A block subsidy é a quantidade de novo bitcoin que é emitida quando um bloco é criado. O Bitcoin começou com uma recompensa de 50 BTC por bloco. Após cada 210.000 blocos, esta recompensa é reduzida para metade. Isso acontece aproximadamente uma vez de quatro em quatro anos e chama-se Bitcoin halving. Os miners, portanto, não podem ajustar esta recompensa por sua conta.

Se um bloco contiver dados de witness de SegWit, a transação coinbase tem ainda uma função técnica adicional. Nesse caso, é incluído na transação coinbase um chamado witness commitment. Com isso, os dados de witness das transações ficam ligados criptograficamente ao bloco, para que os nodes possam verificar estes dados.

Porque é que uma transação coinbase não tem inputs normais?

Uma transação coinbase tem, de facto, uma input, mas não uma input normal que gaste bitcoin de um output anterior.

Isto é lógico: a block subsidy é tornada disponível pela primeira vez através desta transação. Portanto, ainda não existe um UTXO anterior para o qual o miner possa fazer referência. Também as taxas de transação do novo bloco chegam ao miner através desta transação.

Pode vê-la como a liquidação de um bloco. O miner produziu um bloco válido e pode, por isso, reclamar exatamente a recompensa que pertence a esse bloco. Os full nodes verificam depois se esse valor está correto.

Exemplo: Suponha que a block subsidy e todas as fees em conjunto formam um determinado valor máximo. Se um miner colocar mais do que esse valor nos outputs da coinbase, o bloco é inválido. O miner não recebe então absolutamente nada, nem sequer o valor que era permitido.

A coinbase-input também tem uma função prática durante o mining. A block height obrigatória e a eventual nonce extra ajudam o software de mining a fazer continuamente novas tentativas de proof of work.

Quanto tempo demora a confirmação de uma transação coinbase?

Uma transação coinbase recebe a sua primeira confirmação assim que o bloco em que se encontra passa a fazer parte da blockchain ativa do Bitcoin.

Quanto tempo isso demora não está definido antecipadamente. O miner tem primeiro de encontrar um bloco válido de proof of work e a rede tem de aceitar esse bloco. Proof of work é o sistema em que os miners fazem trabalho computacional para encontrar um hash que cumpra as regras do Bitcoin.

O output coinbase ainda não pode ser gasto de imediato depois disso. O Bitcoin determina que este só pode ser usado como input a partir da block height h+100, sendo h a altura do bloco em que a transação coinbase se encontra.

Se a recompensa estiver, por exemplo, no bloco 500, então pode ser gasta pela primeira vez no bloco 600. Trata-se, portanto, de 100 novos blocos, e não de um período fixo em horas ou minutos. Os blocos não são encontrados sempre exatamente ao mesmo momento.

Algumas aplicações de carteira de criptomoedas contam as confirmações de forma ligeiramente diferente no ecrã. Por isso, esta regra é a mais clara: um output coinbase do bloco h pode ser gasto no bloco h+100.

Porque é que as transações coinbase são importantes para o Bitcoin?

As transações coinbase são importantes porque determinam como o novo bitcoin é emitido segundo as regras fixas do Bitcoin e como os miners recebem as suas taxas de transação.

A block reward dá aos miners uma razão para investir poder computacional em proof of work e criar blocos válidos. Sem uma transação coinbase, não existe uma forma padrão de atribuir essa recompensa dentro de um bloco.

Ao mesmo tempo, o Bitcoin mantém a quantidade de dinheiro sob controlo. Cada full node verifica por si próprio se a transação coinbase não paga demasiado. Se um miner tentar reclamar bitcoin extra, os nodes não aceitam o bloco. Assim, um miner não pode, sozinho, alterar as regras ou criar bitcoin adicional.

Também para o mining em si esta transação é útil. Ao alterar dados como uma nonce extra, a merkle root muda e o miner obtém mais hashes para tentar.

No SegWit, a transação coinbase também desempenha um papel na fixação dos dados de witness. Assim, esses dados adicionais da transação ficam ligados criptograficamente ao bloco.

Que riscos e limitações têm as transações coinbase?

A principal limitação é que o bitcoin recebido não fica disponível de imediato. Um miner ou uma miningpool tem de esperar até que 100 novos blocos tenham sido adicionados antes de o output coinbase poder ser gasto. Isto limita temporariamente a liquidez.

Além disso, a recompensa só é válida enquanto o bloco estiver na blockchain ativa do Bitcoin. Se um bloco não for aceite, ou se mais tarde sair da chain ativa devido a uma reorganização da chain, então o output correspondente não pode ser gasto.

Um miner também tem de ser muito preciso com o valor. Reclamar demasiado torna todo o bloco inválido. Reclamar menos é permitido, desde que o limite máximo não seja ultrapassado, mas nesse caso o miner perde por sua conta parte das possíveis receitas.

O coinbase-scriptSig tem espaço limitado. Pode ter, no máximo, 100 bytes e tem de começar com a block height. Por isso, sobra pouco espaço para texto livre ou outros metadados.

Tudo o que um miner aí colocar torna-se visível publicamente assim que o bloco é incluído. Uma miningpool pode, por exemplo, acrescentar uma etiqueta reconhecível. Isso pode revelar informação sobre quem produziu o bloco.

Por fim, esta recompensa também continua dependente de um script de gasto correto e das chaves certas. Se o script estiver mal configurado ou se as chaves necessárias já não estiverem disponíveis, a recompensa pode continuar a não poder ser gasta apesar da regra dos 100 blocos.

Conclusão

Uma transação coinbase é a primeira transação especial de cada bloco de Bitcoin. Com esta transação, o miner recebe, no máximo, a block subsidy e as taxas de transação desse bloco.

A transação parece-se com uma transação normal de Bitcoin, mas tem uma input especial que não faz referência a bitcoin anteriores. Isto é necessário porque a block subsidy fica disponível pela primeira vez através desta via. Ao mesmo tempo, os nodes controlam de forma rigorosa quanto o miner pode reclamar.

Para si, enquanto utilizador comum de Bitcoin, uma transação coinbase normalmente não é visível de forma direta. Mas, por baixo da superfície, esta é uma parte importante do Bitcoin: liga o mining, o proof of work, a emissão de novo bitcoin e as taxas de transação entre si.

Sobre a Finst

A Finst é uma plataforma de criptomoedas líder nos Países Baixos que oferece taxas de transação bastante reduzidas, segurança de nível institucional e um conjunto abrangente de serviços de criptomoedas, como negociação, custódia, staking e rampas de entrada e saída de moeda fiduciária. Fundada pelo antigo núcleo da equipa da DEGIRO, a Finst está autorizada como prestador de serviços de criptoativos pela Autoridade Holandesa para os Mercados Financeiros (AFM) e serve clientes privados e institucionais em 30 países europeus.

A plataforma de criptomoedas para todos os investidores

Quer seja um investidor ativo ou de longo prazo, a Finst permite-lhe aumentar o seu património de criptomoedas com confiança e tranquilidade.

Criar conta gratuita