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.
AAC lanzó "Planeta Encriptado" hoy: Según noticias oficiales, AAC lanzó oficialmente AAC PASS "Planeta Encriptado" hoy. Los usuarios pueden obtener NFT (AAC PASS) de diferentes razas en el planeta encriptado apostando AAC, que actualmente incluye familias estelares, planetarias familias y satélites familia.
Se informa que los usuarios que prometen NFT de diferentes razas en "Encrypted Planet" pueden obtener diferentes recompensas de derechos e intereses. Además, el "Plan Firepower" también se lanza simultáneamente. Con cualquier carrera NFT, puedes invitar a otros a convertirse en miembros del planeta encriptado y formar tu propia alianza. [2022/10/11 10:31:10]
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:
Hoy se activó una dirección de Bitcoin que ha estado en silencio durante 8,8 años, con alrededor de 400 BTC: los datos de Whale Alert muestran que a las 3:29:57, hora de Beijing, se activó una dirección de Bitcoin que ha estado en silencio durante 8,8 años. La dirección contenía 400.67645 BTC, según En ese momento, el precio se calculó en unos 17.559.968 dólares estadounidenses. El hash de la transacción es: 3c53fa9aeb2b28ee12950af5d9b89fe8ade9806303e919c7312eb917495bbc1f. [2021/9/23 17:01:34]
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).
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, 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:
Jinjin Finance News, recientemente, el último episodio (13) de la caricatura estadounidense "Los Simpson (Los Simpson)" reprodujo la introducción de la criptomoneda.En este episodio de animación.
El pasado fin de semana (22 y 23 de febrero) se celebró en Riyadh, Arabia Saudita, la Cumbre de Ministros de Finanzas del G20.
El mercado de criptomonedas acaba de perder $20 mil millones en la mayor venta masiva de 2020. Bitcoin incluso se desplomó en casi $ 800 en diez minutos.
Datos sin procesar y secuencias de comandos utilizados en este experimento: https://github.
Valdis Dombrovskis, vicepresidente ejecutivo de la Comisión Europea, dijo que aunque se enviaron múltiples cuestionarios a la Asociación Libr.
Con el desarrollo continuo de la tecnología blockchain, cada vez más instituciones y empresas han comenzado a aumentar la investigación y aplicación de blockchain. En comparación con la cadena pública.
Autor| Traducido por Andrea Tininow| Defiéndete de las circunstancias de si los activos digitales deben ser considerados valores.