UTXO versus blockchains baseadas em contas: funcionamento, diferenças e aplicações

UTXO versus blockchains baseadas em contas: funcionamento, diferenças e aplicações

O que são blockchains UTXO e baseadas em contas?

As blockchains UTXO e baseadas em contas são duas formas diferentes de uma blockchain registar quem possui que criptomoeda e como as transações são processadas.

Exemplos conhecidos de blockchains que funcionam com o modelo UTXO são Bitcoin, Litecoin, Dogecoin e Bitcoin Cash. A Cardano utiliza uma variante mais avançada, o modelo eUTXO, que também permite lógica mais complexa e smart contracts.

Exemplos conhecidos de blockchains baseadas em contas são Ethereum, Solana e a C-Chain da Avalanche. Em blockchains deste tipo, o estado é mantido em contas, por exemplo através de saldos e outros dados armazenados. A Ethereum utiliza, por exemplo, contas com, entre outros elementos, um saldo e nonce, enquanto a Solana armazena todo o estado em contas.

UTXO é a abreviatura de Unspent Transaction Output: uma parte de criptomoeda de uma transação anterior que ainda não foi gasta. Pode compará-la a notas digitais soltas. Cada nota tem um valor determinado e só pode ser gasta uma vez.

Quando faz, por exemplo, uma transação em Bitcoin, utiliza uma ou mais UTXO existentes como input. Estas são depois consideradas gastas. Ao mesmo tempo, surgem novas UTXO para o destinatário e, eventualmente, para o troco que regressa ao remetente.

Um modelo baseado em contas funciona mais como uma conta bancária normal. Uma conta tem um estado atual, como um saldo que sobe ou desce quando as transações são processadas. Na Ethereum, uma conta deste tipo contém, além do saldo em ETH, por exemplo, um nonce e, consoante o tipo de conta, informação sobre código e dados armazenados.

A diferença mais importante está, portanto, na administração. Uma blockchain UTXO regista partes de valor separadas e ainda não gastas, enquanto uma blockchain baseada em contas regista sobretudo o saldo atual e outros dados por conta.

Isto não diz automaticamente nada sobre, por exemplo, consenso, privacidade ou as possibilidades para smart contracts. Além disso, existem modelos UTXO mais avançados, como o eUTXO, que também suportam lógica mais complexa.


Pontos principais

  • Um modelo UTXO regista valor como outputs separados e ainda não gastos de transações anteriores.
  • Um modelo baseado em contas regista um saldo variável e outros dados por conta.
  • A Bitcoin utiliza o modelo UTXO e a Ethereum é um exemplo conhecido de blockchain baseada em contas.
  • No UTXO, um output existente é consumido e são criados novos outputs.
  • Ambos os modelos podem ter transações pseudónimas, mas bem rastreáveis, em blockchains públicas.

Como funciona o modelo UTXO?

O modelo UTXO funciona com partes separadas de criptomoeda que ainda não foram gastas. Uma UTXO deste tipo resulta de uma transação anterior e só pode ser utilizada se forem cumpridas as condições associadas. Normalmente, prova com uma assinatura digital que está autorizado a gastar essa UTXO.

Quando cria uma nova transação, esta refere-se a uma ou mais UTXO existentes. A rede verifica então se essas UTXO ainda não foram gastas e se as condições foram cumpridas.

Importa saber o seguinte: uma UTXO não pode ser consumida parcialmente. Assim que a utiliza, a UTXO inteira é gasta. Por isso, numa pagamento, surgem muitas vezes várias novas UTXO: uma para o destinatário e, eventualmente, uma para o montante restante que regressa ao remetente. Este último é também chamado change output.

Exemplo: Suponha que a sua carteira de criptomoedas pode gastar uma UTXO de 1 BTC e que pretende enviar 0,4 BTC a alguém.

A UTXO completa de 1 BTC é então utilizada como input. A transação pode, por exemplo, enviar 0,4 BTC ao destinatário e devolver o montante restante, após dedução das taxas de transação, como nova UTXO para um endereço que controla.

A antiga UTXO de 1 BTC deixa então de existir. Em vez disso, foram criadas novas UTXO.

O seu saldo visível, portanto, não consiste num único montante na blockchain. É a soma de todas as UTXO que a sua carteira pode gastar.

O valor de uma transação também é fácil de verificar. O valor total dos novos outputs não pode ser superior ao valor dos inputs utilizados. A diferença entre ambos pode ir como taxa de transação para o miner que produz o bloco.

Na Bitcoin, também podem ser associadas condições extra a uma UTXO através de scripts. Um script deste tipo determina sob que condições a UTXO pode ser gasta. Isto torna a Bitcoin programável para certas formas de autorização, mas o modelo de script da Bitcoin é muito mais limitado do que os smart contracts avançados, por exemplo, da Ethereum.

Como funciona o modelo baseado em contas?

O modelo baseado em contas funciona com contas que têm cada uma um estado atual. Pense, por exemplo, num saldo e num nonce. Um nonce é um número crescente que regista quantas transações uma conta enviou. Assim, a rede pode evitar que a mesma instrução de transação seja executada novamente.

Numa transação ETH normal, o saldo do remetente é reduzido e o saldo do destinatário é aumentado. Depois, o novo estado de ambas as contas é armazenado na Ethereum.

A Ethereum distingue dois tipos de contas:

  • Externally owned accounts (EOA's): contas geridas com uma chave privada. Estas são, normalmente, as contas que os utilizadores gerem através de uma carteira. Uma EOA pode iniciar uma transação por si própria.
  • Contas de contrato: contas às quais está associado código de smart contract. Não têm chave privada e não iniciam autonomamente uma transação externa. Executam código quando são chamadas por uma transação ou por outro contrato.

Uma transação a partir de uma EOA contém, entre outros elementos, informação sobre o destino, o montante, o nonce, a assinatura, eventuais dados adicionais e quanto gas pode ser utilizado no máximo. O gas determina quanto trabalho computacional a Ethereum pode executar para uma transação.

Se uma transação for apenas para uma conta normal, por exemplo, pode ser enviado ETH. Se a transação for para uma conta de contrato, a EVM, o ambiente de execução da Ethereum, pode executar o código desse contrato.

Desta forma, uma única transação pode fazer muito mais do que apenas enviar ETH. Um smart contract pode, por exemplo, mover tokens, alterar dados armazenados ou chamar outros smart contracts.

Os validadores verificam e processam transações segundo as mesmas regras. Se a transação for válida, os novos saldos e outras alterações passam a fazer parte do novo estado da Ethereum.

Quais são as principais diferenças entre ambos os modelos?

A maior diferença está na forma como uma blockchain regista o que alguém possui.

Num modelo UTXO, o estado atual consiste em partes separadas de criptomoeda que ainda não foram gastas. Num modelo baseado em contas, cada conta tem precisamente um estado atual, como um saldo, nonce e, eventualmente, dados de contrato armazenados.

No UTXO, utiliza outputs existentes e surgem novos outputs. Nas contas, o estado existente é ajustado diretamente. Pense, por exemplo, num saldo que diminui, num nonce que aumenta ou em dados num smart contract que mudam.

As despesas duplas também são evitadas de forma diferente. No UTXO, o mesmo output só pode ser utilizado uma vez. Num modelo baseado em contas, o nonce ajuda a processar as transações da mesma conta pela ordem correta e a evitar que a mesma instrução seja executada novamente.

É demasiado simples dizer que o UTXO é apenas adequado para pagamentos e que as blockchains baseadas em contas são apenas para smart contracts. Modelos UTXO avançados, como o eUTXO, também podem suportar lógica mais complexa e smart contracts.

Além disso, a forma como uma blockchain funciona na prática não depende apenas do modelo UTXO ou de contas. Também a carteira de criptomoedas, as taxas de transação, a máquina virtual e eventuais técnicas de privacidade desempenham um papel.

Como diferem as transações e a administração de saldos?

Numa transação UTXO, a sua carteira utiliza uma ou mais UTXO existentes como input. A carteira procura juntar montantes suficientes para poder pagar o pagamento e as taxas de transação. Isto também é chamado coin selection.

As UTXO escolhidas valem, em conjunto, mais do que o montante que pretende enviar? Então, normalmente, surge uma nova UTXO com o montante restante. Esta é chamada change output.

Num modelo UTXO, o seu saldo consiste, portanto, em várias UTXO separadas que, em conjunto, formam o seu saldo total disponível.

Num modelo baseado em contas, isto funciona de forma diferente. Uma conta tem um único saldo que é ajustado diretamente. Se enviar ETH, por exemplo, o saldo da sua conta desce e o do destinatário sobe.

As transações a partir da mesma conta Ethereum têm, além disso, cada uma um nonce. Assim, a Ethereum sabe por que ordem essas transações devem ser processadas. Isto é importante, porque uma transação anterior pode influenciar uma posterior. O seu saldo pode, por exemplo, mudar ou um smart contract pode entretanto ter um estado diferente.

Uma transação Ethereum, por isso, não é facilmente comparável a um input e a um output. A transação começa a partir de uma conta, mas um smart contract pode, durante a execução, alterar várias contas, tokens e dados armazenados.

Como diferem a privacidade e a rastreabilidade?

As blockchains públicas UTXO e baseadas em contas são, na maioria dos casos, pseudónimas. Isto significa que um endereço não mostra automaticamente o seu nome, mas que as transações e os endereços estão publicamente na blockchain.

Na Bitcoin, são frequentemente utilizados endereços diferentes para transações diferentes. Também o troco de uma transação pode ir para um novo endereço. Por isso, nem sempre é imediatamente visível quais os endereços que pertencem à mesma pessoa.

Ainda assim, os analistas podem reconhecer padrões. Se vários endereços forem, por exemplo, utilizados em conjunto como input para uma transação Bitcoin, isso pode indicar que a mesma parte controla esses endereços. No entanto, isso não é prova conclusiva.

Na Ethereum, as pessoas usam muitas vezes o mesmo endereço de conta para muitas atividades diferentes. Por isso, transações, movimentos de tokens e interações com smart contracts a partir desse endereço podem ser ligados entre si com mais facilidade.

Nenhum dos modelos é automaticamente anónimo ou mais favorável à privacidade. Técnicas adicionais, como zero-knowledge proofs, mixers ou transações shielded, podem aumentar a privacidade. Estas são técnicas complementares e não fazem parte, por defeito, do modelo UTXO ou baseado em contas.

Que vantagens e desvantagens têm as blockchains UTXO e baseadas em contas?

Ambos os modelos têm pontos fortes e fracos. A abordagem mais adequada depende do que uma blockchain ou aplicação precisa de fazer.

Vantagens do modelo UTXO

  1. Estrutura de transação clara Numa transação UTXO, fica exatamente visível quais os outputs existentes que são utilizados e quais os novos outputs que surgem. Assim, o fluxo de dinheiro dentro de uma transação é fácil de seguir.

  2. Possibilidade de processamento paralelo Transações que não utilizam as mesmas UTXO podem, em alguns modelos UTXO, ser verificadas de forma independente. Isso pode abrir espaço para processamento paralelo.

  3. Controlo claro sobre despesas duplas Uma UTXO só pode ser gasta uma vez. Assim que é utilizada, deixa de existir como output disponível.

Desvantagens do modelo UTXO

  1. Mais trabalho para as carteiras Uma carteira de criptomoedas tem de decidir quais as UTXO a utilizar para um pagamento. Isto chama-se coin selection. Também é necessário gerir change outputs e grandes quantidades de pequenas UTXO.

  2. Estado partilhado pode ser mais complexo Se várias transações precisarem da mesma UTXO para executar lógica de contrato, podem entrar em conflito entre si. Assim que uma transação utiliza essa UTXO, a outra transação pode ter de ser reconstruída com o novo estado.

Vantagens do modelo baseado em contas

  1. Administração de saldos simples Uma conta tem um saldo atual que é ajustado diretamente. Assim, uma carteira não precisa primeiro de procurar várias UTXO separadas para as juntar.

  2. Útil para estado partilhado e persistente Blockchains baseadas em contas, como a Ethereum, podem associar dados diretamente a contas e smart contracts. Isto adapta-se bem a aplicações em que muitas transações se baseiam na mesma informação armazenada.

  3. Adequado para smart contracts complexos Um smart contract pode, durante uma única execução, alterar vários saldos, contas e dados armazenados. Isso torna o modelo prático para muitos tipos diferentes de aplicações blockchain.

Desvantagens do modelo baseado em contas

  1. As transações dependem mais do estado atual O resultado de uma transação pode depender do saldo, do nonce ou dos dados do contrato no momento em que a transação é executada. Uma transação anterior pode entretanto já ter alterado esse estado.

  2. A ordem das transações é importante As transações a partir da mesma conta têm de ser executadas pela ordem correta do nonce. Também nos smart contracts a ordem pela qual as transações são processadas pode influenciar o estado final.

  3. Mais estado partilhado pode tornar o processamento mais complexo Quando muitas transações tentam alterar as mesmas contas ou os mesmos dados de contrato, essas transações nem sempre são totalmente independentes entre si.

Em resumo: nenhum dos modelos é automaticamente mais rápido, mais barato, mais seguro ou melhor para a privacidade. Essas características dependem do desenho completo da blockchain e da forma como o modelo UTXO ou baseado em contas é desenvolvido nesse contexto.

Quando é adequado cada modelo de blockchain?

Um modelo UTXO adapta-se bem a aplicações em que o valor é registado como montantes separados e cada output só pode ser gasto uma vez. Isso funciona, por exemplo, bem para pagamentos, em que é importante saber claramente quais os montantes utilizados e quais os novos montantes que surgem depois.

Se quiser construir aplicações mais complexas, um modelo UTXO pode continuar a ser adequado. Variantes avançadas, como o eUTXO, também podem suportar smart contracts e regras mais complexas.

No entanto, nessas aplicações é preciso pensar cuidadosamente em como vários utilizadores trabalham ao mesmo tempo com os mesmos dados. Se muitas transações precisarem sempre da mesma UTXO, podem entrar em conflito entre si. Ao distribuir os dados por várias UTXO, esses conflitos podem, por vezes, ser limitados.

Um modelo baseado em contas adapta-se, por sua vez, bem a aplicações em que os dados são alterados com frequência e várias ações se baseiam no mesmo estado armazenado. Na Ethereum, uma transação pode, por exemplo, enviar ETH e, ao mesmo tempo, chamar um smart contract que depois altera dados armazenados.

Por isso, a abordagem mais adequada não depende apenas do rótulo UTXO ou baseado em contas. O mais importante é o que a aplicação precisa de fazer, quantos utilizadores querem alterar os mesmos dados ao mesmo tempo, quão complexos são os smart contracts e que experiência de utilização pretende oferecer nas carteiras.

Conclusão

UTXO e blockchains baseadas em contas resolvem o mesmo problema de base, mas fazem-no de forma diferente. O UTXO trabalha com outputs separados e de utilização única, enquanto um modelo de contas regista um estado variável por conta.

Para pagamentos simples, a diferença é fácil de ver: no UTXO, os antigos montantes digitais são consumidos e são criados novos, enquanto nas contas os saldos são atualizados. Em aplicações mais complexas, a escolha torna-se mais interessante. Variantes UTXO podem suportar smart contracts, e os modelos de contas também podem transferir valor sem problemas.

O mais importante, portanto, não é qual o modelo que é, em geral, melhor. O que importa é qual o modelo que melhor se adapta ao que uma blockchain ou aplicação precisa de fazer.

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