almacenamiento de cadena de bloques

¿Cómo se almacena exactamente la cadena de bloques?

bloque de disco de datos

blocks/blk*.dat (en el directorio ~/.bitcoin.blocks') archivos, que incluyen: los datos del bloque original, estos elementos de datos se empaquetan en un bloque por varios. El nodo primero escribe el bloque recibido en blk00000.dat, espera hasta que esté lleno (128 MB) y luego comienza a escribir el siguiente, y así sucesivamente. (El archivo es un archivo binario)
Estructura del archivo:
inserte la descripción de la imagen aquí

  1. Bytes mágicos: Se distribuye uno por bloque, con el fin de distinguir la marca de un bloque de otro bloque en el proceso de flujo continuo de datos. La longitud es de cuatro bytes, que varía según las diferentes etiquetas de red. 4 bytes
    inserte la descripción de la imagen aquí

  2. tamaño: Esto se refiere al tamaño del siguiente archivo completo. (El tamaño en sí es de 4 bytes)
    El límite de tamaño está controlado por MAX_BLOCKFILE_SIZE en el código fuente, generalmente 128 MB.

  3. encabezado de bloque: fijo 80 bytes, la estructura es la siguiente. Merkle hash es un tipo de hash.

encabezado de bloque
inserte la descripción de la imagen aquí
4. tx count: Indica el número de transacciones en el bloque.
5. Datos de la transacción: estructura de la transacción:
inserte la descripción de la imagen aquí
el proceso de análisis de los datos es aproximadamente el siguiente:

Leer el número de versión de 4 bytes
Analizar la variante, obtener la cantidad de entrada n,
ejecutar 1~n ciclos y analizar la entrada de la transacción
Analizar la variante, obtener la cantidad de salida m,
ejecutar 1~m ciclos y analizar la salida de la transacción

inserte la descripción de la imagen aquí

bloques/índice/* (metadatos) Nivel DB

Es una base de datos leveldb que almacena los metadatos de los bloques actualmente conocidos, y los metadatos registran la ubicación en el disco correspondiente al bloque.

estado de cadena/* Base de datos de nivel

También es una base de datos leveldb, el propósito es verificar si los nuevos bloques y tx son legales. Los datos almacenados son utxo: es decir, cada transacción tiene una entrada y una salida, la entrada registra el origen de los fondos y la salida registra los fondos. La salida generada es "salida de transacción no gastada", utxo, salida de transacción no gastada. Basado en la cuenta,
no existe el concepto de cuenta en Bitcoin, y
todas las transacciones actualmente no gastadas y sus metadatos se almacenan en forma compacta. Los datos aquí son necesarios para validar nuevos bloques y transacciones entrantes. En teoría, estos datos se pueden reconstruir a partir de los datos del bloque, pero llevará mucho tiempo. La verificación de datos se puede realizar sin estos datos, pero es necesario escanear los bloques de datos existentes, lo cual es lento.
Estructura de datos: árbol merkle. (Siempre que se registre el hash raíz, se pueden detectar los cambios en todo el árbol.)
El bloque está organizado en un árbol merkle.La
capa inferior es: bloques de datos, (transacción) cada bloque se divide en dos partes, bloque encabezado (hash raíz); cuerpo del bloque.
Nodos completos, no todos
los nodos ligeros, solo encabezados de bloque. Tiene que ser probado por la prueba de Merkle. Verifique en el teléfono móvil para ver si se ha escrito en la cadena de bloques.
Envíe una solicitud a todo el nodo, siempre que se envíe el hash marcado en rojo, y luego verifique si estos hash son consistentes con el hash raíz almacenado por sí mismo. Dame el contenido de la transacción, y dame el hash en esta rama, y ​​puedo probarlo.
La complejidad de tiempo y espacio de verificar esto, log(n).
Demostrar, prueba de las no pertenencias, que la transmisión del contenido del número entero (n) es lineal.
Para los nodos de página, realice una clasificación hash. Si sabe que están en el medio de estos dos nodos, significa que el medio de estos dos nodos no existe, log(n)
El árbol merkle ordenado está ordenado, esta es una prueba de inexistencia y es más rápido de buscar. (Esto no se usa en el Bitcoin actual, pero ¿debería usarse en el sistema de resolución de nombres de dominio?)
El hash debe ser acíclico.

Banco Central emite moneda digital

Firma de clave privada para verificar si es genuina. Algoritmo de cifrado asimétrico, la clave privada es fácil de filtrar. La moneda digital es un archivo, pero se puede copiar.
El problema del doble pago, el doble gasto, el ataque del doble gasto.
El número de registro del banco central requiere que el banco central confirme la propiedad del dinero.
1. Quién tiene derecho a emitir moneda
2. Cómo evitar el doble gasto.
Estructura de datos: cadena de bloques.
A obtiene el derecho a acuñar monedas y emite 10 bitcoins. —> en la cadena.
Distribución: A\B, firma y dirección de b, hash de clave pública, que equivale a un número de cuenta bancaria.
Entrada: Explique la fuente de la moneda y el hash de B. El hash de la clave pública de A, el hash de la fuente y el hash de la clave pública, la salida contiene el hash de A.
A le da dinero a B, lo cifra con la clave pública de B y, después de recibir el dinero, B lo descifra con la clave privada de B.
Dos tipos de punteros hash:
1. El hash de todo el contenido que está encadenado
2. La fuente de la moneda (para colocar un ataque de doble gasto)
Bitcoin, y revelar su código QR de pago. Cabecera de bloque
A—>B

  1. versión
  2. puntero al bloque anterior
  3. El hash raíz del árbol merkle
  4. Objetivo de umbral de objetivo de dificultad de minería
  5. nonceNúmero aleatorio. (requerido para la minería)
    H (encabezado de bloque) <= objetivo

Solo se concatenan los valores hash de los encabezados de los bloques.

Nodos completos y nodos ligeros. nodo completo y nodo ligero (no se puede verificar de forma independiente la legitimidad de la transacción)

Los nodos completos necesitan verificar la información de cada transacción.
Nos dirigimos principalmente a los nodos completos, porque los nodos ligeros no participan en la construcción y el mantenimiento de la cadena de bloques, sino que solo usan cierta información de la cadena de bloques para realizar algunas consultas.

Si desea usar Bitcoin para transacciones, solo necesita usar nodos ligeros. (Cómo corresponder al sistema de resolución de nombres de dominio)

Cómo hacer que generen un consenso distribuido. tabla hash distribuida de consenso distribuida
, tabla hash global. El contenido del consenso incluye esos pares de valores clave.
Sistema distribuido En un sistema asíncrono ,
el retraso de la red asíncrona no está en línea, hay un teorema
CAP defectuoso .


Hyperledger (cadena de consorcio) tela https://blog.csdn.net/ice_fire_x/article/details/104362219
membresía

bloques/rev*.dat disco

Contiene datos revocados, como un parche inverso.
Cada archivo de blockchain corresponderá a un archivo de revocación

Conexiones totales de almacenamiento de blockchain

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

https://blockchair.com/zh/bitcoin

Supongo que te gusta

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