armazenamento em blockchain

Como exatamente o blockchain é armazenado?

bloquear disco de dados

blocks/blk*.dat (no diretório ~/.bitcoin.blocks'), incluindo: os dados do bloco original, esses itens de dados são compactados em um bloco por vários. O nó primeiro grava o bloco recebido em blk00000.dat, espera até que esteja cheio (128 MB) e então começa a gravar o próximo e assim por diante. (O arquivo é um arquivo binário)
Estrutura do arquivo:
insira a descrição da imagem aqui

  1. Bytes mágicos: Um é distribuído por bloco, a fim de distinguir a marca de um bloco de outro bloco no processo de fluxo contínuo de dados. O comprimento é de quatro bytes, que varia de acordo com diferentes tags de rede. 4 bytes
    insira a descrição da imagem aqui

  2. tamanho: Refere-se ao tamanho do próximo arquivo inteiro. (O tamanho em si é de 4 bytes)
    O limite de tamanho é controlado por MAX_BLOCKFILE_SIZE no código-fonte, geralmente 128 MB.

  3. cabeçalho do bloco: 80 bytes fixos, a estrutura é a seguinte. Merkle hash é um tipo de hash.

cabeçalho do bloco
insira a descrição da imagem aqui
4. tx count: Indica o número de transações no bloco.
5. Dados da transação: estrutura da transação:
insira a descrição da imagem aqui
o processo de análise dos dados é aproximadamente o seguinte:

Ler o número da versão de 4 bytes
Analisar a variável, obter a quantidade de entrada n,
executar 1~n ciclos e analisar a entrada da transação
Analisar a variação, obter a quantidade de saída m,
executar 1~m ciclos e analisar a saída da transação

insira a descrição da imagem aqui

blocks/index/* (metadados) Nível DB

É um banco de dados leveldb que armazena os metadados dos blocos atualmente conhecidos, e os metadados registram a localização no disco correspondente ao bloco.

chainstate/* Nível DB

Também é um banco de dados leveldb, o objetivo é verificar se os novos blocos e tx são legais. Os dados armazenados são utxo: ou seja, cada transação tem uma entrada e uma saída, a entrada registra a origem dos fundos e a saída registra os fundos. A saída gerada é "saída de transação não gasta", utxo, saída de transação não gasta. Com base na conta,
não há conceito de conta no Bitcoin, e
todas as transações atualmente não gastas e seus metadados são armazenados de forma compacta. Os dados aqui são necessários para validar novos blocos e transações de entrada. Em teoria, esses dados podem ser reconstruídos a partir dos dados do bloco, mas isso levará muito tempo. A verificação de dados pode ser realizada sem esses dados, mas os blocos de dados existentes precisam ser verificados, o que é lento.
Estrutura de dados: merkle tree. (Desde que o hash raiz seja registrado, as alterações em toda a árvore podem ser detectadas.)
O bloco é organizado em uma árvore merkle.
A camada inferior é: blocos de dados, (transação) cada bloco é dividido em duas partes, bloco cabeçalho (hash raiz); corpo do bloco.
Nós completos, nem todos
os nós leves, apenas cabeçalhos de bloco. Precisa ser provado por prova merkle. Verifique no celular para ver se ele foi gravado no blockchain.
Envie uma requisição para todo o nó, desde que seja enviado o hash marcado em vermelho, e então verifique se esses hashes são consistentes com o hash raiz armazenado por ele mesmo. Dê-me o conteúdo da transação e dê-me o hash neste ramo, e eu posso provar isso.
A complexidade de tempo e espaço para verificar isso, log(n).
Prove, prova de não pertinências, que a transmissão de todo o conteúdo numérico (n) é linear.
Para os nós da página, execute a classificação de hash. Se você sabe que eles estão no meio desses dois nós, isso significa que o meio desses dois nós não existe, log(n)
A árvore merkle classificada está classificada, esta é uma prova de inexistência e é mais rápida de pesquisar. (Isso não é usado no Bitcoin atual, mas deveria ser usado no sistema de resolução de nomes de domínio?)
O hash deve ser acíclico.

Banco Central emite moeda digital

Assinatura de chave privada para verificar se é genuína. Algoritmo de criptografia assimétrica, a chave privada é fácil de vazar. A moeda digital é um arquivo, mas pode ser copiado.
O problema do pagamento duplo, gasto duplo, ataque de gasto duplo.
O número de registro do banco central exige que o banco central confirme a propriedade do dinheiro.
1. Quem tem o direito de emitir moeda
2. Como evitar gastos duplos.
Estrutura de dados: blockchain.
A obtém o direito de cunhar moedas e emitir 10 bitcoins. —> na corrente.
Distribuição: A\B, e assinar, e endereço de b, hash de chave pública, que é equivalente a um número de conta bancária.
Entrada: explique a origem da moeda e o hash de B. O hash da chave pública de A, o hash da fonte e o hash da chave pública, a saída contém o hash de A.
A dá dinheiro a B, criptografa-o com a chave pública de B e, após receber o dinheiro, B o descriptografa com a chave privada de B.
Dois tipos de ponteiros de hash:
1. O hash de todo o conteúdo que está encadeado
2. A fonte da moeda (para colocar um ataque de gasto duplo)
Bitcoin e divulgar seu código QR de pagamento. Cabeçalho do bloco
A—>B

  1. versão
  2. ponteiro para o bloco anterior
  3. O hash raiz da árvore merkle
  4. Alvo de limite de meta de dificuldade de mineração
  5. nonceNúmero aleatório. (necessário para mineração)
    H(cabeçalho do bloco) <=alvo

Apenas os hashes dos cabeçalhos dos blocos são concatenados.

Nós completos e nós leves. nó completo e nó leve (não pode verificar independentemente a legitimidade da transação)

Os nós completos precisam verificar todas as informações de transação.
Visamos principalmente nós completos, porque os nós leves não participam da construção e manutenção do blockchain, mas apenas usam algumas informações do blockchain para fazer algumas consultas.

Se você quiser usar o Bitcoin para transações, basta usar os light nodes. (Como corresponder ao sistema de resolução de nomes de domínio)

Como fazê-los gerar um consenso distribuído. tabela de hash distribuída de consenso distribuído
, tabela de hash global. O conteúdo do consenso inclui esses pares de valores-chave.
Sistema distribuído
Em um sistema assíncrono, o atraso da rede assíncrona não está online, há uma falha
CAP teorema
consistência disponibilidade
disponibilidade
partição tolerância parte

tecido hyperledger (cadeia de consórcio) https://blog.csdn.net/ice_fire_x/article/details/104362219
associação

blocks/rev*.dat disco

Contém dados revogados, como um patch reverso.
Cada arquivo blockchain corresponderá a um arquivo de revogação

Total de conexões de armazenamento blockchain

https://www.blockchain.com/explorer/blocks/btc?page=1
https://blockchair.com/zh/bitcoin/blocks#

https://blockchair.com/zh/bitcoin

Acho que você gosta

Origin blog.csdn.net/weixin_41523437/article/details/114867007
Recomendado
Clasificación