Datos sin procesar y secuencias de comandos utilizados en este experimento: https://github.com/mandrigin/ethereum-mainnet-resolver-witness-stats Introducción Hay una forma de acelerar el proceso de sincronización inicial (a partir del bloque de génesis) Sincronización de cadena de bloques) , es decir, utilizar datos testigo de bloque (witness) para preconstruir un árbol de caché (cache trie) para evitar un acceso de estado lento. Hacerlo requiere espacio adicional en el disco duro y ancho de banda de la red, pero puede acelerar considerablemente el proceso de sincronización.
La razón es que, en general, para ejecutar un bloque, necesitamos algunos datos en el árbol de Merkle. Aunque ya hay algunos datos en el árbol de Merkle antes de que se ejecute un bloque, es posible que estos datos no sean suficientes para ejecutar el bloque. Entonces, normalmente, tenemos que extraer datos de la base de datos estatal (state db) y agregarlos al árbol Merkle antes de que podamos verificar la transacción. Este proceso puede ser lento debido a la lentitud del acceso al disco duro/consulta de la base de datos.
De acuerdo con la descripción de este problema, podemos dividir tres soluciones diferentes:
1) Proceso normal (es decir, el esquema utilizado actualmente en los nodos de Ethereum)
Antes de que se ejecute el bloque B, tenemos el árbol de estado T1;
Cuando es necesario ejecutar B, agregamos los datos faltantes de T1 a T1, formando T1', T1'', y así sucesivamente. Cada vez que encontramos información que no está en T1, la buscamos en la base de datos (lentamente).
Después de ejecutar B, tenemos el árbol de estado T2, que tiene todos los estados de cuenta necesarios para ejecutar B.
Guarde T2 para uso futuro.
2) Proceso sin estado
Antes de que se ejecute el bloque B, no tenemos un árbol de estado; sin embargo, podemos obtener un dato testigo W para reorganizar el árbol de estado requerido para ejecutar este bloque.
Ejecutamos W y obtenemos el árbol de estados T2.
CNBC: Los comerciantes están prestando mucha atención a activos como Bitcoin para analizar las tendencias del mercado de valores: CNBC publicó hoy un artículo en el que los comerciantes están observando de cerca a Bitcoin y otras inversiones especulativas como Tesla (Tesla), en busca de lo que pueda indicar el próximo movimiento del mercado de valores. señales. En los últimos días, el mercado de valores en general comenzó a moverse junto con ambos activos, dijeron muchos inversores y comerciantes. [2021/1/13 16:01:36]
Ejecute el bloque B en T2, no se requiere una búsqueda en la base de datos.
Después de ejecutar el bloque, T2 se descarta.
3) Seguimiento semi-sin estado (es decir, el esquema a probar en este experimento)
Antes de que se ejecute el bloque B, tenemos el árbol de estado T1, datos testigo W1, W2, ..., suficientes para convertir T1 en T2
Ejecute W1, W2, ... en T1 a su vez, y finalmente obtenga T2 sin consultar la base de datos.
Para ejecutar el bloque B en T2, no es necesario consultar la base de datos.
Guarde T2 para uso futuro.
El uso de un proceso casi sin estado para la sincronización inicial obtiene la mayoría de los beneficios de un proceso sin estado †, sin transferir tantos datos porque reutilizamos la memoria caché del árbol de estado.
† En un esquema quasi-stateless, la ejecución paralela de bloques será más restringida
Entonces, para probar el rendimiento de una solución casi sin estado, necesitamos medir dos cosas:
¿Cuánto disco/ancho de banda adicional requiere este enfoque? ¿Es realmente mejor que un enfoque con estado completo?
¿Cuánto más rápido será su sincronización inicial?
En este artículo nos centraremos en probar los requisitos del disco duro.
El tamaño máximo del árbol de estado (árbol de Merkle): 1 millón de nodos. Una vez que la cantidad de nodos supera este valor, desalojamos los nodos LRU para liberar memoria. De esta forma, podemos controlar el uso de memoria del árbol de estado.
Parte de los datos testigo se almacenarán en una base de datos (usamos boltdb). Cada entrada está estructurada de la siguiente manera:
clave: byte // número de bloque + el número máximo de nodos en el árbol de estado valor: []byte // datos testigo, serializados según la descripción en el documento Hacemos not El código del contrato se almacenará en los datos testigo (esto es una deficiencia de nuestra arquitectura actual).
BTC continúa superando la marca de $21 800: los datos de Huobi Global Station muestran que BTC ha subido a corto plazo, superando la marca de $21 800, y ahora está en $21 800,01, con un aumento intradiario del 5,52 %. por favor haga un buen trabajo en el control de riesgos. [2020/12/17 15:29:20]
Los datos se obtienen de la siguiente manera (requiere un nodo turbo-geth sincronizado)
(en el repositorio turbo-geth)make state./build/bin/state stateless \ — chaindata ~/nvme1/mainnet/mainnet/geth/ chaindata \ — statefile semi_stateless.statefile \ — snapshotInterval 1000000 ;— snapshotFrom 10000000 \ — statsfile new_witness.stats.compressed.2.csv \  _;D semi_estado. db \ — statelessResolver \ — triesize 1000000 \El almacenamiento de resultados experimentales se sincroniza desde el bloque de génesis 6, 169,246 ( 6,19 millones) de bloques, la base de datos de datos de testigos (bolt db) alcanzó los 99 GB.
python quantile-analysis.py cache_1_000_000/semi_stateless_witnesses.db.stats.1.csv
media 0.038 MB mediana 0.028 MB90 cuantil 08MB5 0.028MB90 quantile 0.102 MB99 quantile 0.146 Maximum MB 2.350 MB data size python absolute_values_plot.py  ;cache_1_000_000/semi_stateless_witnesses.db.stats.1.csv Tamaño de datos testigo desde el bloque de génesis hasta la etapa de altura de bloque de 6,1 millones, el gráfico se trunca en 1 MB. Tome el promedio móvil sobre 1024 bloques.
absolute_values_plot.py cache_1_000_000/semi_stateless_witnesses.db.stats.1.csv 3000000 El tamaño de los datos testigo después de que se resolvió el ataque DDoS de Shanghái, y el promedio móvil se toma de acuerdo con 1024 bloques.
python ddos_zoom.py cache_1_000_000/semi_stateless_witnesses.db.stats.1.csv Haga zoom para ver el impacto de los ataques DDoS en el tamaño de los datos testigo (datos sin procesar).
Se puede ver que el tamaño de los datos testigo aumenta significativamente durante el período desde la altura 2,3 millones hasta la altura 2,5 millones, y desde la altura 2,65 millones hasta la altura 2,75 millones.
python full_vs_semi.py cache_1_000_000/semi_stateless_witnesses.db.stats.1.csv
El tamaño de los datos de los testigos en el estado completamente apátrida se ajusta en función de los datos de los testigos en el estado casi apátrida más la parte faltante del código del contrato.
Como se puede ver en este gráfico, el uso de un enfoque casi sin estado puede ahorrar una gran cantidad de datos (en comparación con un enfoque totalmente sin estado).
Agregar un analizador sin estado agrega 0,4 MB a la cantidad de datos que deben transferirse/almacenarse por bloque. En comparación con proporcionar datos de testigo por bloque, este valor ahorra demasiado, incluso si contamos las ganancias que podemos obtener al cambiar el modo de árbol de estado, ahorra mucho (sobre el tamaño de los datos de testigo en el bloque de modo de árbol hexadecimal y árbol binario, consulte mi artículo anterior) (Nota del traductor: vea el hipervínculo al final del artículo para la traducción al chino).
Si este rendimiento es correcto, entonces es claramente una buena manera de acelerar la sincronización inicial y sus requisitos de datos son más pequeños que un enfoque completamente sin estado.
Tags:
El fundador de Litecoin, Charlie Lee, ha criticado la industria de las finanzas descentralizadas (DeFi), calificándola de "lo peor de ambos mundos". Antes de esto.
Anoche y esta mañana, las principales monedas digitales en general cayeron.El sentimiento bajista de la noche a la mañana para Bitcoin se ha extendido durante el día.
El activo con mejor rendimiento de la última década claramente pertenece a Bitcoin. Después de que Bitcoin fuera declarado muerto muchas veces.
Datos sin procesar y secuencias de comandos utilizados en este experimento: https://github.
Golden Finance Blockchain News, 23 de febrero Para aquellos escépticos de criptomonedas e inversores que creen en los mercados tradicionales.
La primera premisa y el vínculo más crítico para que la moneda digital realice una inversión de valor es "valuar" el proyecto de acuerdo con el modelo matemático científico. Recientemente.
El Consejo de Estabilidad Financiera (en adelante.