1. Quais modelos são utilizados atualmente na rede?

Cadeias conhecidas como Ethereum, EOS e Solana usam o modelo de conta. Pode-se até dizer que mais de 90% dos projetos usam o modelo de conta, enquanto apenas alguns projetos estabelecidos usam o modelo UTXO, como BTC e DOGE. ., LTC, é claro, alguns projetos relativamente novos também usam esse modelo, como o FUEL usando o esquema OP na Camada2.

2. O que é um modelo de conta?

Para simplificar, é o sistema de contas bancárias, como transferências entre bancos, Alipay, transferências WeChat, etc., todos pertencem ao modelo de conta. Deixe-me lhe dar um exemplo:

Se A tem 100 e B tem 100

Neste momento, A transfere 50 yuans para B

A forma de expressão no sistema é

A -50, B +50

Então o equilíbrio deles

A 50, B 150

Isto é uma transferência.

Suponha novamente que A ainda tenha 100 e queira transferir 1 yuan para 100 novas pessoas que abriram contas.

Neste momento, A precisa transferir 1 yuan para 100 pessoas ao mesmo tempo.

Transação 1

A -1, 1ª pessoa +1

Então o equilíbrio deles

A 99, pessoa 1 1

Transação 2

A -1, 2ª pessoa +1

Então o equilíbrio deles

A 98, Pessoa 2 1

n ° 3

A -1, 3ª pessoa +1

Então o equilíbrio deles

A 97, Pessoa 3 1

e assim por diante

......

100ª pessoa

A -1, 100ª pessoa +1

Então o equilíbrio deles

A 0, centésima pessoa 1

Teoricamente, são necessárias 100 transferências, e a próxima transferência deve primeiro completar a anterior. Caso contrário, não é possível garantir que o saldo da conta seja consistente e haverá confusão, se há múltiplas transferências, se o saldo é suficiente para transferir. , etc.

Teoricamente, à medida que o número de transações aumenta, o tempo necessário para a execução aumenta.

3. Qual é o modelo UTXO?

Como mencionado anteriormente, muitos players convencionais usam UTXO, e o Bitcoin, o ancestral deste círculo, também usa o modelo UTXO. A propósito, DCEP, a moeda digital legal emitida por nosso país, também é baseada no modelo UTXO, portanto. este modelo Deve ter sua singularidade.

O nome completo do UTXO é Unspent Transaction Output, que significa "saída de transação não gasta". Simplificando, seu modelo é um pouco como o sistema de caixa na vida cotidiana.

A tem uma carteira (uma carteira real) com valor nominal de 1 yuan, valor nominal de 10 yuans e valor nominal de 100 yuans.

A quer dar a B, C e D 1 yuan cada.

R Existem três maneiras

Tipo 1: Dê a B um valor nominal de 1 yuan

Segunda opção: dar a C um valor nominal de 10 yuans e receber 9 yuans de volta.

O terceiro método: dê a D um valor nominal de 100 yuans e receba 99 yuans de volta.

Todas as três maneiras podem concluir esta transação.

Voltando à cadeia, imagine que todo valor nominal do dinheiro aqui é na verdade um UTXO on-chain. O UTXO durante o uso não é transferido, mas é constantemente destruído e reconstruído, por exemplo:

A usa o segundo método para transferir dinheiro para C. O UTXO com valor nominal de 10 yuans será destruído. O sistema reimprimirá um UTXO com valor nominal de 1 yuan e valor nominal de 9 yuans. dado a C e os 9 yuans serão devolvidos a A.

O terceiro método é o mesmo.Quando 100 yuans são destruídos, um UTXO com valor nominal de 1 yuan e valor nominal de 99 yuans é impresso. 1 yuan é dado a D e 99 yuans são devolvidos a A.

Esta é a diferença entre os métodos de transferência UTXO e de modelo de conta. O que é ainda mais impressionante é que o modelo UTXO pode ser transferido em paralelo. Como o saldo existe por meio de UTXO descentralizado, cada valor nominal pode, na verdade, ser transferido para pessoas diferentes ao mesmo tempo. acima dos três métodos Pode ser concluído simultaneamente em uma transação, porque não há problema de consistência de conta envolvido e cada UTXO é calculado de forma independente.

Quando comparamos os modelos de conta acima, cada transação deve depender da conclusão da transação anterior. A lacuna de desempenho pode ser imaginada. Desta forma, podemos compreender porque é que a moeda digital do banco central utiliza o modelo UTXO. Caso contrário, como poderia Shenzhen enviar 10 milhões de renminbi digitais para 50.000 carteiras?

Vamos voltar ao exemplo acima

A tem 100 e deseja transferir 1 yuan para 100 novas pessoas que abram contas.

Um UTXO com valor nominal de 100 pode ser dividido em 100 UTXOs com valor nominal de 1 yuan e então distribuído diretamente para 100 pessoas em uma transação, instantaneamente.

Resumindo, pense no valor nominal do UTXO como um dinheiro mais flexível, constantemente destruído e reconstruído na cadeia.

Se você quiser saber quanto dinheiro há neste endereço de carteira, você precisa contar quantos saldos UTXO existem e somá-los.

4. Vantagens e desvantagens do modelo de conta e UTXO

Vantagens do modelo de conta:

O contrato é armazenado na Conta na forma de código, e a Conta possui seu próprio estado. Este modelo tem melhor programabilidade, é mais fácil de entender pelos desenvolvedores e possui uma gama mais ampla de cenários.

As transações em massa são mais baratas. Imagine que o pool de mineração pague aos mineradores uma taxa de manuseio em UTXO, porque cada entrada e saída exigem um script de testemunha ou script de bloqueio separado, a transação em si será muito grande e a verificação de assinatura e o armazenamento de transações consumirão recursos valiosos na cadeia. . O modelo de Conta pode reduzir bastante os custos por meio de contratos.

Desvantagens do modelo de conta:

Não há dependência entre as transações do modelo de conta e o problema de repetição precisa ser resolvido. Como o Ethereum resolve esse problema? Sabemos que o Ethereum usa um método de valor Nonce exclusivo. Cada transação Tx possui um campo Nonce. Para cada usuário, esse Nonce não pode ser repetido, evitando assim ataques de repetição.

Para a implementação de Lightning Network/Thunder Network, Plasma, etc., um mecanismo de prova de prova mais complexo é necessário para a prova do usuário, e um protocolo mais complexo é necessário para a migração de estado das subcadeias para a cadeia principal.

Vantagens UTXO:

O cálculo ocorre fora da cadeia e a transação em si é tanto o resultado quanto a prova. O nó só precisa realizar verificação e não precisa realizar cálculos adicionais na transação e não há armazenamento de estado adicional. O cálculo do UTXO de saída da própria transação é concluído na carteira, de modo que o ônus do cálculo da transação é totalmente suportado pela carteira, o que reduz até certo ponto o ônus da cadeia.

Exceto para transações Coinbase, a entrada da transação está sempre vinculada a um UTXO. As transações não podem ser reproduzidas e a sequência e as dependências das transações podem ser facilmente verificadas, e se as transações foram consumidas também podem ser facilmente comprovadas.

O modelo UTXO não tem estado e é mais fácil de processar simultaneamente.

Melhor privacidade para transações do tipo P2SH. As entradas na transação não estão relacionadas entre si e tecnologias como o CoinJoin podem ser usadas para aumentar um certo grau de privacidade.

Desvantagens do UTXO:

Ele é incapaz de implementar alguma lógica mais complexa e tem pouca programabilidade. Para lógicas complexas ou contratos que exigem preservação do estado, a implementação é difícil e a utilização do espaço estatal é relativamente baixa.

Quando houver mais entradas, os scripts de testemunha também aumentarão. A própria assinatura consome mais CPU e espaço de armazenamento.

5. Quais são as breves diferenças entre o modelo de conta e o UTXO?

Saldo da conta

Modelo de conta: Você pode ver quanto dinheiro está na conta de forma simples e clara.

Modelo UTXO: conte quantos UTXOs existem no endereço e o resultado de resumi-los é o saldo.

Quando o número de transações aumenta exponencialmente

Modelo de conta: Será cada vez mais difícil.

Modelo UTXO: suporta naturalmente alta simultaneidade.

De uma perspectiva de contrato/desenvolvedor inteligente

O modelo de conta está em conformidade com os hábitos lógicos dos desenvolvedores e é relativamente fácil de escrever lógica.

A programação de script UTXO é mais complicada