Después de superar el desafío técnico más difícil, entramos en la fase de sprint de este trabajo: implementar contratos inteligentes en un entorno compatible con EVM. zkSync lanza la primera versión de testnet de zkSync 2.0: los usuarios ya pueden usar el explorador de bloques para ver la actividad de transacciones de zkSync 2.0. En este artículo, explicaremos cada componente clave en profundidad y anunciaremos actualizaciones de progreso y planes para la próxima versión. Navegador testnet ZKSYNC 2.0: https://zksync2-alpha.zkscan.io/ En términos de criptografía, se finalizó el conjunto de instrucciones de zkEVM y se completaron dos implementaciones: en el circuito y en el entorno de ejecución. En el lado del compilador, los contratos inteligentes escritos en Solidity y Zinc ahora se pueden compilar en el código de bytes zkEVM. En términos de infraestructura central, se completó la integración completa del nodo y los contratos inteligentes compilados se pueden implementar y ejecutar con éxito. Si bien la infraestructura central de zkEVM y 2.0 está lista para ser expuesta al público, el compilador de esta versión necesita más trabajo para perfeccionarse y manejar todos los casos extremos. Para brindar una experiencia de desarrollador más integral, hemos decidido que, una vez que el compilador sea 100 % confiable, abriremos el acceso a zkEVM, al compilador y al SDK central al mismo tiempo. Los dos se ven casi iguales, los siguientes puntos son las diferencias más importantes: El contrato inteligente zkSync 2.0 es compatible con la mayoría de los códigos de operación en Ethereum. Sin embargo, existen las siguientes excepciones: 1. Los códigos de operación ADDMOD, SMOD, MULMOD, EXP y CREATE2 no se admiten en esta versión de testnet, pero se admitirán en versiones futuras. 2. Temporalmente no admitiremos el código de operación KECCAK256, sino que reemplazaremos todas las llamadas llamando automáticamente a otra función hash resistente a colisiones. KECCAK256 se presentará más adelante como precompilación. 3. Decidimos no incluir más el código de operación SELFDESTRUCT, ya que Ethereum planea eliminarlo. 4. Podemos eliminar la compatibilidad con los códigos de operación XOR/AND/OR completos de 256 bits, ya que estos códigos de operación solo existen en los códigos de solidez compilados para máscaras de bits. Esto lo puede hacer el compilador usando otros códigos de operación. Gas En zkSync 2.0, hay un concepto diferente de gas. Los precios de las tarifas de transacción fluctuarán según las tarifas de gas L1 actuales y el costo de generar pruebas de conocimiento cero (ZKP). Las llamadas de contrato inteligente tendrán un paso máximo de zkEVM y almacenarán parámetros de escritura. La próxima versión de la API de Web3 contendrá nuestra implementación de la API de Web3, que será compatible con el estándar de Web3 tal como se define en la documentación de Ethereum. Los eventos funcionarán de inmediato y todos los servicios se pueden integrar fácilmente. zkSync incluye funciones que L1 no incluye, como el concepto de bloques verificados y finalizados. Por lo tanto, habrá otras formas para que los desarrolladores controlen los datos con mayor precisión. El código de cliente de Web3 recibirá los mismos datos que Ethereum, pero puede solicitar información específica a través del espacio de nombres zksync_. Debido a que zkSync tiene varios tipos de transacciones y usa firmas EIP712, el formato de los datos de eth_sendRawTransaction es diferente de L1. Sin embargo, la codificación corresponde a Ethereum ABI, por lo que no es difícil soportarlo. Firmar transacciones Las transacciones en zkSync 2.0 se pueden autorizar de dos maneras (además del mecanismo de cola de prioridad): varios equipos de F1 se vieron obligados a eliminar la publicidad relacionada con el cifrado durante el Gran Premio de Francia, Francia tiene reglas estrictas sobre la publicidad de una variedad de productos, y la criptomoneda es el último producto que viola las reglas francesas. Durante el Gran Premio de Francia del pasado fin de semana, varios equipos de F1 tuvieron que cubrir o quitar las pegatinas con el logotipo de los productos relacionados con las criptomonedas. (RacingNews365) [2022/7/26 2:38:57] 1. Los usuarios pueden firmar transacciones con su billetera Ethereum normal (como Metamask o cualquier billetera WalletConnect) firmando un mensaje EIP712. 2. Cualquier cuenta puede configurar una clave pública para crear nuestra firma Schnorr interna para firmar transacciones. Esto permite que las billeteras inteligentes basadas en contratos interactúen con zkSync 2.0 sin el costo adicional de enviar mensajes L1. Eficiencia de almacenamiento mejorada Cada bloque solo puede sobrescribir la ranura de almacenamiento una vez. Esto significa que si varios usuarios interactúan con un solo contrato AMM, las ranuras de almacenamiento para ese contrato AMM solo se sobrescribirán una vez. Esto permite que el clasificador reembolse el costo compartido de una sola escritura al usuario más adelante. Precompilación Está previsto un mecanismo de "precompilación", pero se lanzará en una fecha posterior. Planeamos admitir primero las primitivas de recuperación keccak256, sha256 hash y ECDSA. Además, consideramos incluir otras precompilaciones según la necesidad y la complejidad, como la función de ronda de Blake2f (casi inutilizable en Ethereum en su forma actual). Restricciones adicionales La primera iteración de zkSync 2.0 puede agregar una restricción adicional de que cada transacción solo puede llamar al contrato inteligente 32 veces hasta que se pueda implementar un mecanismo de contabilidad adecuado. Habrá un límite estricto para el seguimiento de la ejecución, pero será comparable al límite actual del tamaño del bloque de Ethereum y no debería afectar a la mayoría. Puede haber más restricciones, pero nuestro objetivo es reducirlas al mínimo posible en la versión final. Una inmersión profunda en la arquitectura de zkSync 2.0 Es posible que haya oído hablar del "triángulo imposible de la cadena de bloques", pero cuando se trata de escalar Ethereum, hay un cuarto factor: la programabilidad. Todas las soluciones de escalado actuales sacrifican algo de seguridad, descentralización y programabilidad para lograr la escalabilidad. El diseño de zkSync 2.0 combina los siguientes dos importantes avances tecnológicos, con el objetivo de maximizar la realización de las cuatro funciones mencionadas anteriormente: 1. zkEVM: un motor que admite zkRollup compatible con EVM, que proporciona seguridad L1 y admite inteligencia de solidez al mismo tiempo Solución de contrato. 2. zkPorter: un sistema de disponibilidad de datos fuera de la cadena que es dos órdenes de magnitud más escalable que los paquetes acumulativos. Debido a que zkEVM y zkPorter son interoperables y componibles, zkSync 2.0 supera significativamente a todas las demás soluciones de escalado. El consenso actual es que la fragmentación de datos Eth2 se activará a fines de 2022, proporcionando una capa de disponibilidad de datos más grande sin sacrificar la descentralización. La tecnología zkRollup combinada con la fragmentación de datos Eth2 es el objetivo final de zkSync, logrando más de 100,000 TPS sin sacrificar ninguno de los 4 factores. Árbol de estado El árbol de estado de zkSync 2.0 cubre todo el espacio de direcciones de 160 bits de Ethereum. Cada cuenta existirá en la sección zkRollup o en la sección zkPorter del estado. Las cuentas zkRollup y zkPorter son exactamente iguales, excepto por una diferencia: donde se obtiene la disponibilidad de datos. Los datos de transacciones de zkRollup se publican en la red principal de Ethereum a través de llamadas de datos; los datos de transacciones de zkPorter se publican en la red zkSync Guardian, donde los poseedores de tokens de zkSync pueden participar en el mecanismo PoS de la red. Elegir dónde publicar los datos es una compensación entre costo y seguridad. La tarifa de transacción de zkPorter es mucho más barata que la de rollup, pero los fondos del usuario pueden congelarse. Sin embargo, la validez de las cuentas zkRollup y zkPorter está garantizada por pruebas de conocimiento cero y Ethereum. En otras palabras, los fondos en zkPorter solo se pueden congelar, no robar. La interoperabilidad y componibilidad de las cuentas zkRollup y zkPorter brinda a cada usuario la oportunidad de ser un ciudadano zkSync de primera clase. Suponiendo que Uniswap se implemente en el lado de zkRollup, los usuarios pueden acceder a él a través de la cuenta de zkPorter y realizar el intercambio con la tarifa de manejo más baja. zkSync 2.0 es un sistema diseñado específicamente para usuarios del sector financiero. Criptografía Nuestra máquina virtual, a menudo denominada zkEVM, no es una réplica 1:1 de la EVM. Sin embargo, zkEVM está diseñado para poder ejecutar el 99 % de los contratos escritos en Solidity y mantener el mismo comportamiento ante reversiones y excepciones. Al mismo tiempo, zkEVM puede generar eficientemente pruebas de conocimiento cero en un circuito. La implementación de zkEVM no requiere cambios importantes en nuestro sistema de prueba anterior; seguimos usando PLONK (a menudo denominado UltraPLONK) con puertas personalizadas y tablas de búsqueda y la curva BN-254 de Ethereum. Esto es ventajoso porque este sistema de prueba ha sido probado en batalla (zkSync 1.0 y otros proyectos han utilizado este sistema de prueba desde junio de 2020). Después de varios meses de arduo trabajo, el conjunto de instrucciones de zkEVM se completó e implementó en el circuito y el entorno de ejecución. Aquí hay una distinción importante: la implementación en el circuito y el entorno de ejecución están separados y tienen diferentes propósitos. El trabajo del circuito es generar pruebas de seguimientos de ejecución y proporcionar testigos, pero el proceso es lento. Por otro lado, el entorno de ejecución es una implementación directa de zkEVM en rust, que es eficiente y rápido. Si dependiéramos de circuitos para la generación y ejecución de pruebas, llevaría horas finalizar una transacción. Y la separación de la generación de pruebas y la ejecución simple permite la liquidación instantánea de transacciones en zkSync. A continuación, nuestro trabajo se centrará en combinar zkEVM con el compilador y la recursión: la recursión entre bloques nos permite emitir una prueba para N bloques; la recursión dentro de los bloques agrega subpruebas de diferentes partes lógicas del bloque. ¡Esta es la parte facil! Desde junio de 2020, se han utilizado pruebas agregadas recursivas entre bloques en la red principal zkSync 1.0. Para obtener más información sobre la recursión intrabloque y cómo funciona nuestro zkEVM, vea la explicación del video. Compiladores También trabajamos en dos interfaces de compilador para zkEVM: Yul y Zinc. Yul es una representación intermedia de Solidity que se puede compilar en código de bytes para diferentes backends. Zinc es nuestro lenguaje basado en óxido para contratos inteligentes y circuitos de prueba de conocimiento cero de uso general. Debido a que el compilador está construido usando el marco LLVM, se puede pensar que tiene un front-end, Yul → LLVM IR y un back-end, LLVM IR → bytecode zkEVM. La adopción de LLVM trae varias ventajas importantes: 1. El marco de optimización de LLVM no coincide: genera el código de bytes zkEVM más eficiente a partir de LLVM IR. 2. Con una nueva versión de Solidity o Zinc, la interfaz del compilador manejará todos los cambios y LLVM nos evitará tener que cambiar el backend del compilador. 3. En el futuro, si los desarrolladores desean escribir contratos inteligentes basados en Rust nativo o Javascript, solo necesitan crear una interfaz de compilación para el lenguaje, y los contratos inteligentes se pueden usar de forma inmediata en zkSync. La seguridad del compilador es de suma importancia para nosotros y ha sido probada con varias suites: 1. Pruebas léxicas, sintácticas y semánticas en compiladores Zinc y Yul. 2. Nuestras propias pruebas de integración para Zinc y Solidity, que se ejecutan a lo largo de todo el ciclo de vida del contrato inteligente: desde el análisis del código fuente hasta la implementación del contrato y la ejecución de transacciones en zkSync. 3. Un amplio conjunto de pruebas integrado desde el repositorio de Solidity, adecuado para nuestra herramienta de pruebas de integración. Cada suite ya contiene varios miles de pruebas, y las aumentaremos al menos en un orden de magnitud. Nuestros dos compiladores se implementaron y ejecutaron con éxito contratos inteligentes simples en ambos idiomas. Pero aún hay más optimizaciones que deben realizarse, algunas declaraciones LLVM IR complejas deben convertirse a bytecode zkEVM. Por lo tanto, decidimos esperar hasta que el comportamiento de nuestro compilador sea más robusto antes de lanzarlo. Después de trabajar en el compilador, nos centraremos en perfeccionar la funcionalidad de Zinc y luego crearemos una interfaz de compilador de Rust para permitir la escritura de contratos inteligentes en Rust nativo. Infraestructura central La infraestructura central de zkSync 2.0 consta de varios componentes clave: Nodo completo 1. Un entorno de ejecución previo al circuito que utiliza el código de bytes zkEVM de una máquina virtual 2. El estado está disponible segundos después de enviar una transacción 3. Filtrado de datos no válidos obvios transacciones (por ejemplo, fondos insuficientes para realizar una transacción), estas transacciones pueden inflar el bloque 4. Ejecutar transacciones en el mempool y generar bloques. Probadores 1. Testigos que reciben bloques y generan pruebas de conocimiento cero, 2. Interfaces de probadores para la generación de pruebas paralelas 3. Un escalador automático de probadores personalizado que crea y finaliza máquinas de prueba según sea necesario. Interactor 1. Una herramienta para monitorear e interactuar con Ethereum L1, 2. Calcular las tarifas de transacción según el precio del token, el costo de generación de ZKP y la tarifa de gas L1. Paranoid supervisa Prometheus, Elasticity, Sentinel, Uptime, varios sistemas de notificación de eventos individuales y un servicio de verificación de tiempo de ejecución de seguridad personalizado. La infraestructura central de zkSync 2.0 es completamente funcional y tiene integrado el ejecutor zkEVM.
Tags:
El argumento a favor de la centralización de ETH ha sido utilizado durante mucho tiempo por inversores de Bitcoin bien informados, como Preston Pysh y Lyn Alden.
Hoy en día, los tokens DeFi se pueden dividir en gran medida en dos categorías: "tokens productivos" y "tokens no productivos". Los tokens DeFi no productivos se refieren a esos típicos "tokens de gobierno sin valor".
Como los tentáculos extendidos de la cadena de bloques.
Después de superar el desafío técnico más difícil.
Cómo explicar racionalmente las enormes fluctuaciones de precios en el mercado de Bitcoin sigue siendo un desafío constante para los inversores e investigadores del mercado de Bitcoin.
Loco dice Estados Unidos y Rusia han iniciado una nueva ronda de competencia económica. Primero, Estados Unidos bloqueó su propia inversión en bonos del gobierno ruso denominados en euros y rublos. Luego.
Internet se encuentra en una revolución en la que los servicios patentados centralizados están siendo reemplazados por servicios abiertos descentralizados. En la Internet actual.