El 17 de diciembre, me enteré de que la inscripción CIAS iba a ser publicada en Celestia, y planeé trabajar de forma temporal para escribir un guión para pincelar la inscripción. Ahora, tengo mucho de qué quejarme de Celestia y su ecosistema Cosmos, así como del evento CIAS en sí.
De hecho, no es difícil escribir un script para cepillar inscripciones, que se divide principalmente en tres módulos: construcción de billeteras, conexión de nodos y transacciones de inundación. ** Los dos primeros pasos solo deben encontrarse en la documentación del desarrollador de la cadena pública de destino para encontrar una implementación rápida.
Primero fui al sitio web oficial de Celestia y a Github para echar un vistazo, y no hay casos de uso para que los desarrolladores construyan escenarios de usuario, principalmente operación de nodos y otra documentación relacionada. Por supuesto, esto es comprensible, porque Celestia no es una cadena de bloques TdC. Celestia solo menciona en un lugar oscuro que está basado en Cosmos y que es posible interactuar con su red principal con CosmJS.
Así que fui directamente a CosmJS. Pero, ¿qué pasa con Cosmos?, ni siquiera es bueno en documentación. **Fui directamente a Github, y de acuerdo con el sentido común, generalmente este tipo de JS tendrá un caso de uso en Github. Pero su tutorial está oculto en una página secundaria.,Y después de hacer clic en él.,Siga su configuración para hacer un pase.,Finalmente, se informa de un error.。
**Este error no es un problema ambiental.,Es porque su tutorial no se ha actualizado con la versión del tutorial.**A menudo se cambia el nombre de esta clase y no se puede ajustar, etc.。 Cambié a la versión de la biblioteca npm en la versión anterior del tutorial, y todavía hay algunos casos de uso que no funcionan, así que me di por vencido después de tirar por un tiempo.
Así que lo busqué en Google de nuevo, y resultó que la documentación correcta estaba en el sitio web oficial en lugar de en Github, lo cual era un poco contradictorio. **Una vez más, ¿no es bueno actualizar el tutorial Léame de Github al sitio web oficial?
Después de obtener el tutorial correcto, completé rápidamente los dos pasos de construcción de la billetera y conexión de los nodos, y comencé a construir el módulo de transacciones de inundación. En pocas palabras, este módulo es un bucle for que procesa firmas de transacciones + solicitudes de red. Pero aquí hay algunos problemas:
Todos los métodos de transacción en la biblioteca CosmJS solo exponen los parámetros de la transacción en sí, pero su secuencia no se expone (la secuencia es análoga al nonce en el taller de ETH, que es un contador de transacciones establecido para evitar ataques de reproducción, y después de que se emite cada transacción, el nonce y la secuencia son automáticamente +1).
La secuencia es en realidad que se conecta a la red para obtenerla al firmar (chainId, etc.) al firmar, y tiene que pasar por sendTokens() -> signAndBroadCast -> sign(). ** Ir a la red a solicitar y esperar la devolución cada vez que se envía una transacción afectará la velocidad del cepillo y también aumentará las solicitudes inútiles de la red, lo que no es bueno para la inundación y, por supuesto, no es propicio para acelerar / cancelar una transacción. **
Repasemos ETH método de envío de transacciones de Web3JS, donde puedes especificar el nonce tú mismo. Pero no en CosmJS. Sigo pensando que el diseño del ETH Fang es mucho más razonable, puedes especificar directamente el nonce para cancelar/acelerar la transacción, si una transacción está atascada, puedes personalizar un nonce con la misma transacción para reemplazar la transacción atascada, por supuesto, también se puede usar para nuestro ataque de inundación.
Debido a las limitaciones de tiempo, había varias otras funciones en la biblioteca que necesitaban ser modificadas, ** Decidí no usar Proxy para desenganchar la reescritura, sino modificarla directamente en la biblioteca CosmJS. **
La idea del script para desencadenar la transacción de inundación es iniciar continuamente la transacción a través del bucle for y generar una firma, enviarla al nodo RPC y, después de iniciar una transacción, la secuencia/nonce será +1 y, después de iniciar 20 transacciones, el ciclo se reciclará.
Las secuencias solo se extraen localmente antes del inicio de cada ciclo de inundación, y no es necesario volver a solicitar secuencias de los nodos después de cada transacción, como es el valor predeterminado en la biblioteca CosmJS. El chainId, por otro lado, se escribe como un valor fijo y no tiene que solicitarse repetidamente al nodo. (Nota del editor: el número de bucles aquí es relativamente bajo, y está claro que el autor no es tan violento). Alguien, al escribir la inscripción de Conflux, cambió el número de ciclos por ciclo a 1000, enviando alrededor de 200 transacciones diferentes por minuto)
Finalmente, conseguí un script rudimentario de Celestia, que probé brevemente después de que CIAS se desconectara la noche del 17 de diciembre, y envié cientos de transacciones. Después de que la CIAS se reanudó en las primeras horas del 19 de diciembre, golpeé a algunos CIAS (alrededor de 1.800). Pero todavía hay otras cosas de las que quejarse:**
El 17 de diciembre, el nodo RPC de Celestia tuvo un grave problema de falta de sincronización de datos, la altura de bloque de los diferentes nodos RPC es muy diferente, y cuando solicita el nodo a la secuencia de su cuenta, el resultado de retorno es básicamente inconsistente, lo cual es muy doloroso. El explorador de bloques Celestia tampoco está disponible, y es básicamente ciego. Se puede decir que en este momento, aunque la red Celestia no está caída y aún puede producir bloques, se estima que está casi al límite.
El mismo día, el funcionario de inscripción del CIAS vio que Celestia estaba a punto de no poder soportarlo, y anunció temporalmente que todas las transacciones de acuñación de inscripciones en la cadena después de la altura del bloque 48460 no eran válidas, lo que era toda una tendencia de “desenchufar el cable de red de la bolsa”. Y el propio sitio web de CIAS colapsó.
No hay ningún comentario sobre la percepción de que el protocolo de consenso nativo de la cadena Cosmos hace un mal trabajo de consenso sobre los bloques, pero está claro que el propósito de que CIAS retirara el cable de la red anoche es intrigante.
El 17 de diciembre, es difícil elegir un nodo con los datos sincronizados más rápidos, porque casi todos los nodos RPC están abarrotados y, a menudo, no responden. Más tarde intenté escribir un código que cambiara automáticamente los nodos.
El formato de la inscripción en CIAS en sí no es del todo consistente con otras inscripciones, por ejemplo, en el json de brc-20, todos los números son cadenas, mientras que en CIA-20 es un número.
El costo de las inscripciones CIAS se disparó a 1.5 ~ 2U por inscripción cuando fue el más alto anoche, y algunas personas incluso pagaron 80U por una inscripción. Una tarifa tan alta refleja el TPS limitado, y el fundador de Celestia afirma que puede procesar 10k transacciones por segundo, lo que obviamente es una tontería.
En general, la experiencia de la noche del 17 de diciembre fue una frase: Celestia definitivamente no estaba preparado para lidiar con el tráfico a gran escala, y fue muy superficial en términos de configuración de nodos RPC (es difícil imaginar que docenas de nodos RPC puedan explotarse en 1 hora). **
En la noche del 19, la situación era mucho mejor, excepto por la tarifa de gas disparada, no hubo gran problema en otros aspectos, solo se puede decir que Celestia, como red DA dedicada a distribuir datos a nodos ligeros, ha resistido temporalmente la prueba, pero no sé si habrá otros escollos en el futuro.
Ver originales
Esta página puede contener contenido de terceros, que se proporciona únicamente con fines informativos (sin garantías ni declaraciones) y no debe considerarse como un respaldo por parte de Gate a las opiniones expresadas ni como asesoramiento financiero o profesional. Consulte el Descargo de responsabilidad para obtener más detalles.
Después de escribir la escritura de Celestia y escribir la inscripción, se quejó: Las habilidades básicas de Cosmos no son sólidas
Autor: Wuyue, Geek Web3
El 17 de diciembre, me enteré de que la inscripción CIAS iba a ser publicada en Celestia, y planeé trabajar de forma temporal para escribir un guión para pincelar la inscripción. Ahora, tengo mucho de qué quejarme de Celestia y su ecosistema Cosmos, así como del evento CIAS en sí.
De hecho, no es difícil escribir un script para cepillar inscripciones, que se divide principalmente en tres módulos: construcción de billeteras, conexión de nodos y transacciones de inundación. ** Los dos primeros pasos solo deben encontrarse en la documentación del desarrollador de la cadena pública de destino para encontrar una implementación rápida.
Primero fui al sitio web oficial de Celestia y a Github para echar un vistazo, y no hay casos de uso para que los desarrolladores construyan escenarios de usuario, principalmente operación de nodos y otra documentación relacionada. Por supuesto, esto es comprensible, porque Celestia no es una cadena de bloques TdC. Celestia solo menciona en un lugar oscuro que está basado en Cosmos y que es posible interactuar con su red principal con CosmJS.
Así que fui directamente a CosmJS. Pero, ¿qué pasa con Cosmos?, ni siquiera es bueno en documentación. **Fui directamente a Github, y de acuerdo con el sentido común, generalmente este tipo de JS tendrá un caso de uso en Github. Pero su tutorial está oculto en una página secundaria.,Y después de hacer clic en él.,Siga su configuración para hacer un pase.,Finalmente, se informa de un error.。
**Este error no es un problema ambiental.,Es porque su tutorial no se ha actualizado con la versión del tutorial.**A menudo se cambia el nombre de esta clase y no se puede ajustar, etc.。 Cambié a la versión de la biblioteca npm en la versión anterior del tutorial, y todavía hay algunos casos de uso que no funcionan, así que me di por vencido después de tirar por un tiempo.
Así que lo busqué en Google de nuevo, y resultó que la documentación correcta estaba en el sitio web oficial en lugar de en Github, lo cual era un poco contradictorio. **Una vez más, ¿no es bueno actualizar el tutorial Léame de Github al sitio web oficial?
Después de obtener el tutorial correcto, completé rápidamente los dos pasos de construcción de la billetera y conexión de los nodos, y comencé a construir el módulo de transacciones de inundación. En pocas palabras, este módulo es un bucle for que procesa firmas de transacciones + solicitudes de red. Pero aquí hay algunos problemas:
Todos los métodos de transacción en la biblioteca CosmJS solo exponen los parámetros de la transacción en sí, pero su secuencia no se expone (la secuencia es análoga al nonce en el taller de ETH, que es un contador de transacciones establecido para evitar ataques de reproducción, y después de que se emite cada transacción, el nonce y la secuencia son automáticamente +1).
La secuencia es en realidad que se conecta a la red para obtenerla al firmar (chainId, etc.) al firmar, y tiene que pasar por sendTokens() -> signAndBroadCast -> sign(). ** Ir a la red a solicitar y esperar la devolución cada vez que se envía una transacción afectará la velocidad del cepillo y también aumentará las solicitudes inútiles de la red, lo que no es bueno para la inundación y, por supuesto, no es propicio para acelerar / cancelar una transacción. **
Repasemos ETH método de envío de transacciones de Web3JS, donde puedes especificar el nonce tú mismo. Pero no en CosmJS. Sigo pensando que el diseño del ETH Fang es mucho más razonable, puedes especificar directamente el nonce para cancelar/acelerar la transacción, si una transacción está atascada, puedes personalizar un nonce con la misma transacción para reemplazar la transacción atascada, por supuesto, también se puede usar para nuestro ataque de inundación.
Debido a las limitaciones de tiempo, había varias otras funciones en la biblioteca que necesitaban ser modificadas, ** Decidí no usar Proxy para desenganchar la reescritura, sino modificarla directamente en la biblioteca CosmJS. **
La idea del script para desencadenar la transacción de inundación es iniciar continuamente la transacción a través del bucle for y generar una firma, enviarla al nodo RPC y, después de iniciar una transacción, la secuencia/nonce será +1 y, después de iniciar 20 transacciones, el ciclo se reciclará.
Las secuencias solo se extraen localmente antes del inicio de cada ciclo de inundación, y no es necesario volver a solicitar secuencias de los nodos después de cada transacción, como es el valor predeterminado en la biblioteca CosmJS. El chainId, por otro lado, se escribe como un valor fijo y no tiene que solicitarse repetidamente al nodo. (Nota del editor: el número de bucles aquí es relativamente bajo, y está claro que el autor no es tan violento). Alguien, al escribir la inscripción de Conflux, cambió el número de ciclos por ciclo a 1000, enviando alrededor de 200 transacciones diferentes por minuto)
Finalmente, conseguí un script rudimentario de Celestia, que probé brevemente después de que CIAS se desconectara la noche del 17 de diciembre, y envié cientos de transacciones. Después de que la CIAS se reanudó en las primeras horas del 19 de diciembre, golpeé a algunos CIAS (alrededor de 1.800). Pero todavía hay otras cosas de las que quejarse:**
En general, la experiencia de la noche del 17 de diciembre fue una frase: Celestia definitivamente no estaba preparado para lidiar con el tráfico a gran escala, y fue muy superficial en términos de configuración de nodos RPC (es difícil imaginar que docenas de nodos RPC puedan explotarse en 1 hora). **
En la noche del 19, la situación era mucho mejor, excepto por la tarifa de gas disparada, no hubo gran problema en otros aspectos, solo se puede decir que Celestia, como red DA dedicada a distribuir datos a nodos ligeros, ha resistido temporalmente la prueba, pero no sé si habrá otros escollos en el futuro.