Blockchain Ethereum

Conta Ethereum

Para possíveis ataques de repetição no Ethereum, adicione um valor nonce a cada transação na conta para registrar quantas transações são e, em seguida, assine o valor nonce junto com a transação. Se alguém repetir a transação mais tarde, após a verificação, ela será encontrada que a transação correspondente ao valor nonce foi executada uma vez e não será mais executada. Portanto, o nó completo também deve salvar o valor nonce de cada nó.

O conceito de contas facilita a execução de contratos.

  1. Conta externa (conta normal)
  • Semelhante à conta Bitcoin, a conta é controlada por meio de chaves públicas e privadas.
  • Status da conta: saldo da conta, nonce (contador)
  1. Conta de contrato
  • Sem controle por meio de chaves públicas e privadas, as transações não podem ser iniciadas. Todas as transações só podem ser iniciadas por contas externas.
  • Pode ser chamado para convocar outros contratos. Quando uma conta de contrato for gerada, um endereço será retornado e o endereço será chamado para chamar o contrato.
  • O status da conta do contrato também inclui código e armazenamento.

Árvore de estado ETH

Escolha da estrutura de dados:

  • Optar por usar tabela hash?

    Como fornecer prova merkle: Se você usar uma tabela hash para construir uma árvore merkle e, em seguida, colocar o hash raiz no cabeçalho do bloco. Se for esse o caso, toda vez que um novo bloco é lançado, todos os status de contas precisam ser formados em uma nova árvore merkle, mas na verdade apenas um pequeno número de contas muda de status a cada vez. Portanto, o método de simplesmente formar uma árvore merkle de todas as contas é um pouco caro. E é difícil manter a consistência de todos os nós do blockchain

  • Usar a árvore Merkle diretamente?

    Um deles é um estado onde é difícil encontrar e atualizar dados.

    Se deve classificar, se não classificar

    • As pesquisas são mais lentas
    • É difícil garantir que a estrutura da árvore merkle construída seja consistente no blockchain. Isso levará a diferentes valores de hash da árvore merkle calculados por diferentes nós.

    Se estiver classificando:

    • A complexidade de adicionar dados é alta. Se você inserir um dado, é possível que a maior parte da árvore precise recalcular o valor do hash.

Estruturas de dados selecionadas no Ethereum:

Árvore de prefixos compactada

tente:

Insira a descrição da imagem aqui

Tentativa compactada:

Insira a descrição da imagem aqui

O ponteiro aqui usa ponteiro hash

Insira a descrição da imagem aqui
Insira a descrição da imagem aqui

A necessidade de preservar estados históricos. Na rede Ethereum, os forks são muito comuns. Ao contrário do Ethereum, que armazena transações simples no blockchain, os contratos inteligentes no Ethereum podem implementar transações mais complexas. análise.

  • O valor no estado é armazenado primeiro após a serialização, usando o método RLP (Recursive Length Profix)

Árvore de transações e árvore de recebimentos ETH

  • Árvore de transações: contém informações de transação
  • Árvore de recibos: Existe uma informação de recibo correspondente a cada transação, que registra informações relevantes da transação e é útil para encontrar informações sobre transações relacionadas.

Ambas as árvores usam a estrutura MPT

estrutura do filtro de flor:

Calcule o valor do hash calculando as informações dos elementos do conjunto, mapeie-o para um resumo compacto e defina o bit de posição correspondente como um. Este método pode provar que um elemento não está no conjunto, mas não pode provar que um elemento está no conjunto. Como haverá colisões de hash, alguns usam vários algoritmos de hash para calcular vários resumos e reduzir a possibilidade de colisões de hash.

Insira a descrição da imagem aqui

O filtro Bloom no cabeçalho do bloco é a união dos filtros Bloom abaixo.

Por que o estado do usuário não salva apenas o estado do usuário relacionado à transação atual?

  • Se houver uma transação, é A–> B, e se apenas parte do status do usuário for salva, então quando você precisar encontrar o status da conta B, porque apenas parte do status do usuário é salva, você precisa manter estou ansioso para ver se a conta B existe, mas se B é uma conta nova, então você precisa encontrar o bloco gênese para obter o resultado.

Protocolo Fantasma

Se você continuar a usar o protocolo de consenso no Bitcoin:

Para reduzir o tempo de geração de blocos, os garfos temporários também aumentarão muito.Quando um grande pool de mineração extrai um bloco, o bloco em que está terá maior probabilidade de se tornar a cadeia legal mais longa, o que significa que outros blocos são extraído em vão. No Bitcoin, embora os usuários individuais não tenham vantagem no poder de computação em comparação aos pools de mineração, os usuários do Bitcoin ainda podem minerar blocos antes dos pools de mineração, e os blocos que eles mineram estão. Na maioria dos casos, está na cadeia legal mais longa (o bloco o tempo de geração é relativamente longo e não é tão fácil causar uma bifurcação e então será mais longo.)

Protocolo Fantasma:

Conceito central: tio bloco

Para blocos que foram minerados, mas não se tornaram a cadeia legal mais longa, este bloco é considerado um bloco tio da cadeia legal mais longa recém-adicionada. Se o bloco atrás da cadeia legal mais longa contiver um bloco de tio, então o bloco de tio incluído receberá 7/8 da recompensa do bloco, mas não receberá a taxa de gás. O novo bloco contendo o bloco de tio receberá 1/32 da recompensa do bloco . Pode conter até dois blocos tio.

Insira a descrição da imagem aqui

A definição de um bloco de tio só pode ser separada por no máximo 7 gerações, e à medida que o número de gerações aumenta, as recompensas obtidas pelo bloco de tio diminuirão gradativamente, e o estabelecimento de qual bloco o contém ainda é 1/32. A recompensa do bloco no Ethereum não continuará a diminuir.

O significado deste desenho:

  • Se o número máximo de gerações entre blocos tio não for especificado, o nó completo precisará salvar muitos blocos tio.
  • Incentive a fusão dos blocos tios na cadeia legal mais longa o mais cedo possível.

Para blocos tio incluídos:

  1. A transação não é executada até que a cadeia legal mais longa contenha a transação no bloco tio.
  2. Verificar a legalidade não significa verificar a legalidade da transação, mas sim se o bloco tio atende aos requisitos de dificuldade.

O bloco tio só pode ser o primeiro bloco após a bifurcação e os blocos subsequentes não podem ser contados como blocos tio.

Insira a descrição da imagem aqui

Se os blocos subsequentes também forem blocos tio, o custo de falha do ataque fork será muito pequeno.

Conduza um ataque de fork. Se eu tiver sucesso, posso reverter a transação. Mesmo se falhar, ainda posso receber a recompensa do bloco do tio.

Reconhecer apenas o primeiro bloco como bloco tio pode aumentar o custo de ataques de fork fracassados, fazendo com que os blocos de fork sejam mesclados o mais rápido possível.

Algoritmo de mineração ETH

quebra-cabeça de mineração com muita memória. Isso é usado para tornar hostil aos chips ASIC.

Algoritmo de mineração de litecoin, scrypt

Insira a descrição da imagem aqui

Gere uma matriz maior, calcule um valor hash selecionando uma semente e armazene-o na primeira posição da matriz. O valor hash das posições subsequentes da matriz é calculado usando o valor hash do elemento anterior da matriz. Ao calcular o quebra-cabeça, primeiro selecione uma posição e depois determine a próxima posição a ser lida com base no valor hash dessa posição. Depois de repetir um certo número de vezes, use o nonce para encontrar o valor do nonce que atenda aos requisitos de dificuldade.

Quanto menos pessoas usam uma criptomoeda, menos segura ela se torna. Porque 51% do poder computacional é relativamente fácil de alcançar.

Algoritmo de mineração em Ethereum (ethash):

Insira a descrição da imagem aqui

Ethereum primeiro adota um método semelhante ao Litecoin para calcular um cache de 16M e, em seguida, calcula um DAG maior com base no cache (o tamanho do cache e do DAG aumentará de vez em quando). A partir de uma determinada posição do array na semente, um hash é calculado e a próxima posição a ser lida é obtida desse hash. O hash é atualizado com base no valor do array naquela posição. Após 256 rodadas de iterações de atualização, o hash final calculado é O valor é preenchido na primeira posição no DAG. O processo de cálculo do quebra-cabeça é: calcular um hash com base no cabeçalho do bloco e no valor inicial do nonce, em seguida, obter uma posição a partir da posição apontada pelo hash, retirar os valores desta posição e das posições adjacentes, calcular um hash para obter a próxima posição e executar o mesmo A operação atualiza o valor do hash, faz um loop 64 vezes para obter o valor do hash final e compara-o com o limite de dificuldade para ver se ele atende aos requisitos de dificuldade. , altere o valor nonce e calcule novamente.

A cada 30.000 blocos, o valor da semente mudará, o tamanho do cache aumentará em 1/128 do tamanho inicial e o cache será regenerado com base na nova semente.

Quando o nó light realiza a verificação, o bloco de cabeçalho e o nonce do bloco obtido são combinados para calcular um hash. Como o nó light não o salva, o valor da posição correspondente do DAG deve ser gerado temporariamente. (O valor do cálculo é um pouco maior, mas para nós leves, apenas um valor de nonce é calculado, mas para máquinas de mineração, como há muitos valores de nonce para tentar, a eficiência do cálculo sem salvar o DAG é muito baixa)

Prova de patrimônio PoS, sem necessidade de mineração

É seguro minerar usando chips ASIC? : Como o chip ASIC é um chip de mineração especializado, se um ataque de 51% for alcançado usando um chip ASIC, então a segurança da criptomoeda será comprovadamente problemática e o preço do Bitcoin cairá, o que pode eventualmente levar a perdas A máquina de mineração comprada naquela época não poderia ser utilizada para outros fins, portanto seria um prejuízo. E se as máquinas de usuários comuns também puderem minerar, o custo de lançar ataques será reduzido, porque essas máquinas poderão ser usadas para outras coisas quando a mineração não for mais necessária.

Ajuste de dificuldade Ethereum (esta parte é o melhor código)

https://www.bilibili.com/video/BV1Vt411X7JF?p=20&spm_id_from=pageDriver

Bomba de dificuldade: Está configurada para a futura transferência para prova de patrimônio. À medida que o número de blocos aumenta, a dificuldade de mineração aumentará exponencialmente, de modo que quando a dificuldade de mineração se tornar muito grande no futuro, será benéfico transferir para PoS. Mas antes do PoS ser totalmente desenvolvido, o efeito da bomba de dificuldade já era aparente. Portanto, há um retorno de chamada de número de bloco de bomba de dificuldade de 3.000.000 de blocos.

Prova de participação

Uma das maiores desvantagens da prova de trabalho é que ela consome energia

Embora os contratos inteligentes ainda precisem ser processados ​​no Ethereum, o tempo de geração do bloco é curto e o consumo de energia é inferior ao da mineração de Bitcoin.

O mecanismo de mineração determina a proporção da receita obtida através do tamanho do poder de computação, e o tamanho do poder de mineração depende da quantidade de fundos investidos. Portanto, a ideia do Proof of Stake é determinar o valor da receita diretamente por quanto dinheiro é investido no blockchain, omitindo a etapa de mineração.

No Bitcoin, os direitos contábeis são obtidos através do poder computacional, enquanto no Ethereum, os direitos contábeis são obtidos através da quantidade de moedas Ether investidas. Ou seja, os direitos contábeis são alocados de acordo com a probabilidade de acordo com a idade da moeda. Não há necessidade de minerar e você também receberá recompensas em bloco após publicar o bloco. Quando o Ethereum foi estabelecido pela primeira vez, uma parte do Ethereum foi reservada para investimento de terceiros.

Vantagens da Prova de Participação:

A manutenção dos recursos da blockchain Ethereum é um ciclo fechado.

Os recursos para manter a segurança do blockchain no Bitcoin vêm do ambiente externo do Bitcoin, ou seja, os recursos utilizados para lutar pelos direitos contábeis podem ser obtidos através do ambiente externo (utilizando dinheiro diferente de criptomoeda, e depois convertendo-o em recursos competitivos de criptomoeda). Use dinheiro imobiliário para comprar máquinas de mineração). O valor total de mercado do Bitcoin na economia mundial é relativamente pequeno e, se alguém estiver disposto, pode facilmente reunir 51% do poder computacional. No Ethereum, se ele quiser lançar um ataque de 51%, ele precisa possuir 51% das moedas Ethereum no sistema Ethereum, o que significa que haverá uma grande quantidade de compras de Ethereum, então o preço do Ethereum também aumentará. sobe.

Algumas criptomoedas adotam uma combinação de ambas as abordagens:

Tanto a mineração como a prova de direitos são realizadas, e a dificuldade de mineração com mais moedas será reduzida em conformidade. No entanto, se o design for feito simplesmente desta forma, será cada vez mais fácil para as pessoas com mais moedas minerarem, obtendo assim mais moedas, e então a mineração será mais fácil. Portanto, alguns são projetados para que as moedas não possam ser usadas imediatamente após a mineração de um bloco por um período de tempo.

Desafios na Prova de Participação:

Protegendo suas apostas:

Insira a descrição da imagem aqui

Ou seja, quando o blockchain se bifurca, você pode fazer apostas em ambos os lados ao mesmo tempo (a prova de patrimônio exige o pagamento de algo semelhante a um depósito para obter o patrimônio. Para evitar que o nó empacote transações ilegais, se transações ilegais são empacotados, haverá Se a recompensa do bloco for menor que a recompensa do bloco e o depósito for retirado), esse tipo de comportamento de hedge dispersará o poder de computação no caso de prova de carga de trabalho, mas não existe tal problema em prova de aposta.

Casper: Prova de aposta pronta para uso em blockchains

Na fase mista de mineração e prova de aposta, o pré-requisito para um Validador se tornar um Validador é investir uma determinada quantia de depósito. Sua responsabilidade é promover o sistema para chegar a um consenso. O validador vota para decidir qual cadeia se tornará a cadeia legal mais longa, e mais de 2/3 dos votos podem ser aprovados.
Insira a descrição da imagem aqui

Cada 50 blocos constituem uma época e uma votação é realizada após cada época. Só pode ser confirmado depois que mais de 2/3 dos nós concordam em duas épocas consecutivas. O validador pode obter recompensas pela votação, mas tem que esperar um período de tempo. Durante esse tempo, pode-se avaliar se o validador cumpre legalmente suas funções e lida com isso.

contrato inteligente

Um contrato inteligente é um pedaço de código executado no blockchain. A lógica do código define o contrato.

Insira a descrição da imagem aqui

Hash na linguagem de solidez não suporta travessia.

A conta a pagar adicionada após a função de lance indica que esta função recebe transferências externas

Como as contas externas chamam contratos inteligentes

Chamar um contrato é semelhante a uma transação de transferência. Se o objeto de transferência for uma conta de contrato, significa que o contrato é chamado. A função específica chamada será descrita no campo de dados.

Insira a descrição da imagem aqui

Como um contrato chama outro contrato?

  • ligue diretamente
    Insira a descrição da imagem aqui

  • Use a função de chamada do tipo de endereço
    Insira a descrição da imagem aqui

  • O agente chama a função delegadocall
    Insira a descrição da imagem aqui

A diferença entre as duas primeiras chamadas é que se a função chamada na anterior der errado, o contrato que está sendo chamado também dará errado, porém, usando a função de chamada, se a chamada falhar, será retornado falso.

função de fallback (esta função é chamada se a função correspondente não for encontrada)

Insira a descrição da imagem aqui

Criação e operação de contratos inteligentes

Insira a descrição da imagem aqui

taxa de gás

Insira a descrição da imagem aqui

A taxa máxima do gás será deduzida no Ethereum de uma só vez. Se a taxa do gás finalmente calculada não atender a esse padrão, a taxa do gás cobrada em excesso será reembolsada. Se não for suficiente, resultará em uma reversão, e a taxa do gás coletados não serão reembolsados. (Acho que uma forma eficaz de prevenir ataques maliciosos na blockchain é fazer com que o fracasso de alguns métodos de ataque pague um preço maior)

Se ocorrer algum erro durante a transação, toda a transação será revertida, como se a transação nunca tivesse ocorrido.

Há um limite na taxa máxima de gás permitida para um bloco publicado para evitar que os blocos publicados consumam recursos excessivamente. Semelhante ao Bitcoin, o tamanho do bloco não pode exceder 1 milhão.

Manipulação de erros

Insira a descrição da imagem aqui

revert() lança uma exceção incondicionalmente

Chamadas aninhadas

Insira a descrição da imagem aqui

As operações em contas em qualquer contrato inteligente são operações na árvore de estado salva localmente e só serão acordadas após serem publicadas na rede blockchain.

Execute a transação primeiro antes da mineração, porque se ela não for executada primeiro, não há como determinar a árvore de estado, não há como calcular o valor raiz e não há como tentar o valor nonce.

O que acontecerá se alguns mineradores não verificarem os blocos recém-lançados? A mineração não pode continuar sem verificação. Como o processo de verificação consiste em executar novamente o conteúdo do blockchain publicado, se não for executado, o status obtido pela mineração subsequente será inconsistente com outros nós e não será reconhecido. Outra abordagem é fazer uma cópia das três árvores obtidas por terceiros após a execução, abordagem semelhante à de um pool de mineração. (Você não pode obter o conteúdo da árvore diretamente do bloco publicado, apenas um hash está no cabeçalho do bloco)

As transações publicadas no blockchain não são necessariamente executadas com sucesso, pois não há como deduzir a taxa do gás se não forem publicadas.

Estrutura de dados de recebimento

Insira a descrição da imagem aqui

Informações relevantes que os contratos inteligentes podem obter

Insira a descrição da imagem aqui

Insira a descrição da imagem aqui

Insira a descrição da imagem aqui

Três métodos de transferência:

  • transfer() causará uma reversão da cadeia e gerará muito pouca taxa de gás.
  • send() não causará reversão da cadeia e lhe dará uma taxa de gás muito pequena.
  • call.value() enviará a taxa de gás restante para

Se o contrato inteligente for mal elaborado, o dinheiro depositado não poderá ser sacado.

Acho que você gosta

Origin blog.csdn.net/weixin_46287316/article/details/129096609
Recomendado
Clasificación