Cómo Funciona Optimism

Esta es una traducción del artículo inicialmente publicado en inglés en el sitio oficial de Optimism.

Introducción

¡Hola! Para cuando haya terminado de leer esta página, debe tener una comprensión fundamental de cómo Optimism hace que las transacciones de Ethereum sean más baratas y rápidas, el enfoque que Optimism está adoptando para escalar tanto Ethereum como los valores de Ethereum, y por qué Optimism es el mejor lugar para construir su próxima aplicación nativa de Ethereum.

Hemos tratado de hacer que esta guía sea lo más completa posible sin dejar de mantener el contenido accesible para la mayoría de los lectores. Parte del contenido de esta página está dirigido a lectores con conocimientos técnicos, pero aún debe ser comprensible para aquellos con una comprensión básica de cómo funcionan las blockchains. En términos generales, pecamos de simplicidad y accesibilidad. Los lectores interesados ​​en una mirada de bajo nivel de Optimism deben consultar la sección de Protocolo del sitio web de Optimism.

¡Sin más preámbulos, descubramos cómo funciona el Optimism!

Filosofía de diseño

Optimism se construye de acuerdo con una sólida filosofía de diseño que se sustenta en cuatro pilares principales: simplicidad, pragmatismo, sostenibilidad y, por supuesto, optimismo. Es importante comprender estos pilares, ya que influyen en gran medida en el diseño de Optimism en su conjunto.

Sencillez

Optimism está diseñado para ser lo más simple posible para el conjunto de funciones que proporciona. Idealmente, Optimism debería estar compuesto por la cantidad mínima de partes móviles requeridas para un sistema L2 seguro, escalable y flexible. Esta simplicidad le da al diseño de Optimism una serie de ventajas significativas sobre otras construcciones L2 más complejas.

La simplicidad reduce los gastos generales de ingeniería, lo que a su vez significa que podemos dedicar nuestro tiempo a trabajar en nuevas funciones en lugar de recrear las existentes. Optimism prefiere utilizar el código y la infraestructura de Ethereum probados en producción. El ejemplo más visible de esta filosofía en la práctica es la elección de utilizar Geth como software cliente de Optimism.

Cuando se trata de infraestructura crítica, la simplicidad también es seguridad. Cada línea de código que escribimos es una oportunidad para introducir errores no intencionales. Un protocolo simple significa que hay menos código para escribir y, como resultado, menos área de superficie para posibles errores. Una base de código limpia y mínima también es más accesible para los contribuyentes y auditores externos. Todo esto sirve para maximizar la seguridad y la corrección del protocolo Optimism.

La simplicidad también es importante para la visión a largo plazo del Optimism. Al limitar la cantidad de código que escribimos sobre las herramientas de Ethereum, podemos pasar la mayor parte de nuestro tiempo trabajando directamente con las bases de código existentes. El esfuerzo de ingeniería que se dedica a Optimism también puede beneficiar directamente a Ethereum, y viceversa. Esto solo se volverá más pronunciado a medida que el protocolo Optimism se solidifique y los recursos existentes puedan redirigirse hacia la infraestructura central de Ethereum.

Pragmatismo

A pesar de todo su idealismo, el proceso de diseño detrás de Optimism está impulsado en última instancia por el pragmatismo. El equipo central de Optimism tiene limitaciones del mundo real, los proyectos que están implementados en Optimism tienen necesidades del mundo real y los usuarios que interactúan con Optimism tienen problemas del mundo real. La filosofía de diseño de Optimism prioriza las necesidades del usuario y del desarrollador sobre la perfección teórica. A veces la mejor solución no es la más bonita.

Optimism también se desarrolla con el entendimiento de que cualquier equipo central tendrá áreas limitadas de experiencia. Optimism se desarrolla de forma iterativa y se esfuerza por obtener continuamente feedback de los usuarios. Muchas funciones básicas de Optimism hoy (como EVM Equivalence) solo fueron posibles gracias a este enfoque iterativo para el desarrollo del protocolo.

Sustentabilidad

Optimism está pensado para largo plazo. Los desarrolladores de aplicaciones necesitan asegurarse de que la plataforma en la que están construyendo seguirá siendo no solo operativa sino competitiva durante largos períodos de tiempo. El proceso de diseño de Optimism se basa en la idea de la sostenibilidad a largo plazo y de no tomar atajos hacia la escalabilidad. Al final del día, un sistema escalable no significa nada sin el ecosistema que lo sostiene.

La sustentabilidad influye activamente en el diseño del protocolo de Optimism de maneras que van de la mano con nuestra filosofía de simplicidad. Cuanto más compleja sea la base de código, más difícil será para las personas ajenas al equipo central de desarrollo contribuir activamente. Al mantener nuestra base de código simple, podemos construir una comunidad más grande de colaboradores que pueden ayudar a mantener el protocolo a largo plazo.

Optimismo

Por supuesto, nada de esto sería posible sin una sensación de optimismo. Nuestro optimismo sobre la visión de Ethereum hace que este proyecto avance. Creemos en un futuro optimista para Ethereum, un futuro en el que podamos rediseñar nuestras relaciones con las instituciones que coordinan nuestras vidas.

Aunque Optimism parece una blockchain independiente, en última instancia, está diseñada como una extensión de Ethereum. Tenemos esto en cuenta cada vez que creamos nuevas funciones o intentamos simplificar las existentes. Optimism es lo más cercano posible a Ethereum no sólo por razones pragmáticas, sino porque existe para que Ethereum pueda tener éxito. Esperamos que pueda ver la influencia de esta filosofía al observar el diseño de Optimism.

Protocolo Rollup

Hemos cubierto la mayor parte del "por qué" detrás de Optimism. Ahora es el momento de explicar la gran idea que hace posible el Optimismo: el Optimistic Rollup. Veremos una breve explicación de cómo funcionan los Optimistic Rollups a un alto nivel. Luego, explicaremos por qué Optimism está construido como un Optimistic Rollup y por qué creemos que es la mejor opción para un sistema que aborda todos nuestros objetivos de diseño.

Optimistic Rollups TL;DR

Optimism es un "Optimistic Rollup", que es básicamente una forma elegante de describir una blockchain que se aprovecha de la seguridad de otra blockchain "principal". Específicamente, Optimistic Rollups aprovecha el mecanismo de consenso (como PoW o PoS) de su red principal en lugar de proporcionar el suyo propio. En el caso de Optimism, la blockchain principal es Ethereum.

Almacenamiento en bloque (block storage)

Todos los bloques de Optimism se almacenan dentro de un contrato inteligente especial en Ethereum llamado CanonicalTransactionChain (o CTC). Los bloques de Optimism se mantienen dentro de una lista anexa dentro del CTC (explicaremos exactamente cómo se agregan los bloques a esta lista en la siguiente sección). Esta lista anexa forma la blockchain de Optimism.

CanonicalTransactionChainIncluye código que garantiza que la lista de bloques existente no puede ser modificada por nuevas transacciones de Ethereum. Sin embargo, esta garantía puede romperse si la propia blockchain de Ethereum se reorganiza y se cambia el orden de las transacciones de Ethereum pasadas. La mainnet de Optimism está configurada para ser robusta frente a reorganizaciones de bloques de hasta 50 bloques de Ethereum. Si Ethereum experimenta una reorganización mayor que esta, Optimism también se reorganizará.

Por supuesto, un objetivo clave de seguridad de Ethereum es no experimentar este tipo de reorganizaciones de bloques significativas. Por lo tanto, Optimism es seguro frente a grandes reorganizaciones de bloques, siempre que el mecanismo de consenso de Ethereum también lo sea. Es a través de esta relación (al menos en parte) que Optimism deriva sus propiedades de seguridad a Ethereum.

Producción de bloques (Block production)

La producción de bloques Optimism es administrada principalmente por una sola parte, llamada "sequencer" (secuenciador), que ayuda a la red al proporcionando los siguientes servicios:

  • Proporcionar confirmaciones de transacciones instantáneas y actualizaciones de estado.
  • Construcción y ejecución de bloques L2.
  • Envío de transacciones de usuario a L1.

El secuenciador no tiene mempool y las transacciones se aceptan o rechazan inmediatamente en el orden en que se recibieron. Cuando un usuario envía su transacción al secuenciador, éste verifica que la transacción sea válida (es decir, paga un fee suficiente) y luego aplica la transacción a su estado local como un bloque pendiente. Estos bloques pendientes se envían periódicamente en “batches# (grandes lotes) a Ethereum para su finalización. Este proceso de procesamiento por batches reduce significativamente las tarifas generales de transacción al distribuir los costos fijos entre todas las transacciones dentro de un batch determinado. El secuenciador también aplica algunas técnicas básicas de compresión para minimizar la cantidad de datos publicados en Ethereum.

Debido a que el secuenciador tiene acceso de escritura prioritario a la cadena L2, el secuenciador puede proporcionar una fuerte garantía de qué el estado se finalizará en cuanto decida un nuevo bloque pendiente. En otras palabras, se sabe con precisión cuál será el impacto de la transacción. Como resultado, el estado L2 se puede actualizar de forma fiable y extremadamente rápida. Los beneficios de esto incluyen una experiencia de usuario rápida e instantánea, con cosas como actualizaciones de precios de Uniswap casi en tiempo real.

Alternativamente, los usuarios pueden omitir el secuenciador por completo y enviar sus transacciones directamente a CanonicalTransactionChain a través de una transacción de Ethereum. Esto suele ser más costoso porque el costo fijo de enviar esta transacción lo paga el usuario en su totalidad y no se amortiza en muchas transacciones diferentes. Sin embargo, este método de envío alternativo tiene la ventaja de ser resistente a la censura por parte del secuenciador. Incluso si el secuenciador está censurando activamente a un usuario, el usuario siempre puede continuar enviando transacciones en Optimism.

Por el momento, OP Labs PBC ejecuta el único productor de bloques (secuenciador) en la red Optimism. Consulte la sección de Especificaciones de Protocolo para obtener más información sobre cómo planeamos descentralizar el rol de secuenciador en el futuro.

NOTA “Para que los usuarios puedan ejecutar withdrawals censorship-resistan (retiros resistentes a la censura), un rollup debe permitir a los participantes publicar de manera “trustlessly” (confiable) los resultados de las transacciones en Ethereum. Actualmente, OP Labs PBC es la única entidad capaz de publicar resultados de transacciones mientras trabajamos para descentralizar la función de "result proposal" (prueba de resultado). Aunque no es exclusivo de Optimism, vale la pena entender estas propiedades de seguridad cuando se utiliza el sistema. La publicación de resultados permissionless (sin permiso) se introducirá junto con la versión de producción de nuestro sistema de prueba de fallos Cannon.”

Ejecución de bloque (Block execution)

Los nodos de Ethereum descargan bloques de la red p2p de Ethereum. En cambio, los nodos Optimism descargan bloques directamente de la lista de bloques anexa contenida en el contrato CanonicalTransactionChain. Consulte la sección anterior sobre el almacenamiento de bloques para obtener más información sobre cómo se almacenan los bloques dentro de este contrato.

Los nodos de Optimism se componen de dos componentes principales, el indexador de datos de Ethereum y el software cliente de Optimism. El indexador de datos de Ethereum, también llamado "data transport layer" (capa de transporte de datos) o DTL, reconstruye la blockchain Optimism a partir de bloques publicados en el contrato CanonicalTransactionChain. El DTL busca eventos emitidos por el CanonicalTransactionChain que señalen que se han publicado nuevos bloques de Optimism. Luego inspecciona las transacciones que emitieron estos eventos para reconstruir los bloques publicados en el formato de bloque estándar de Ethereum. 

La segunda parte del nodo Optimism, el software de cliente Optimism, es una versión casi completa de Geth. Esto significa que Optimism es casi idéntico a Ethereum. En particular, Optimism comparte la misma máquina virtual Ethereum, la misma estructura de cuenta y estado, y el mismo mecanismo de medición de gas y el mismo fee. Nos referimos a esta arquitectura como "EVM Equivalence" y significa que la mayoría de las herramientas de Ethereum (incluso las más complejas) "simplemente funcionan" con Optimism.

El software de cliente de Optimism monitorea continuamente el DTL en busca de bloques indexados recientemente. Cuando se indexa un nuevo bloque, el software del cliente lo descargará y ejecutará las transacciones incluidas en él. El proceso de ejecutar una transacción en Optimism es el mismo que en Ethereum: cargamos el estado de Optimism, aplicamos la transacción contra ese estado y luego registramos los cambios de estado resultantes. Este proceso luego se repite para cada nuevo bloque indexado por el DTL.

Bridges de activos entre layers

Optimism está diseñado para que los usuarios puedan enviar mensajes arbitrarios entre contratos inteligentes en Optimism y Ethereum. Esto hace posible la transferencia de activos, incluidos los tokens ERC20, entre las dos redes. El mecanismo exacto por el que se produce esta comunicación difiere según la dirección en la que se envían los mensajes.

Optimism usa esta funcionalidad en el puente estándar para permitir a los usuarios depositar activos (ERC20 y ETH) de Ethereum a Optimism y también permitir retiros de los mismos de Optimism a Ethereum. Consulte la documentación para desarrolladores y los ejemplos sobre los detalles del funcionamiento interno del bridge estándar.

Pasando de Ethereum al Optimismo

Para enviar mensajes de Ethereum a Optimism, los usuarios simplemente necesitan activar el contrato CanonicalTransactionChain en Ethereum para crear un nuevo bloque en Optimism. Consulte la sección anterior sobre la producción de bloques para obtener un contexto adicional. Los bloques creados por el usuario pueden incluir transacciones que parecerán originarse en la dirección que generó el bloque.

Pasar del optimismo a Ethereum

No es posible que los contratos en Optimism generen fácilmente transacciones en Ethereum de la misma manera que los contratos de Ethereum pueden generar transacciones en Optimism. Como resultado, el proceso de enviar datos de Optimism a Ethereum es algo más complicado. En lugar de generar automáticamente transacciones autenticadas, debemos ser capaces de hacer statements comprobables sobre el estado de Optimism de los contratos que se encuentran en Ethereum.

El statements sobre el estado de Optimismo requiere un cryptographic commitment en forma de root (raiz) del state trie de Optimismo. El estado de Optimism se actualiza después de cada bloque, por lo que este commitment también cambiará después de cada bloque. Los commitments se publican regularmente (aproximadamente una o dos veces por hora) en un contrato inteligente en Ethereum llamado StateCommitmentChain.

Los usuarios pueden usar estos commitment para generar un Markle tree proofs sobre el estado de Optimism. Estas proofs (pruebas) se pueden verificar mediante contratos inteligentes en Ethereum. Optimism mantiene un conveniente contrato de comunicación cross-chain, el L1CrossDomainMessenger, que puede verificar estas proofs en nombre de otros contratos.

Estas pruebas se pueden usar para hacer statements sobre los datos dentro del almacenamiento de cualquier contrato en Optimism a una altura de bloque específica. Esta funcionalidad básica se puede usar para permitir que los contratos en Optimism envíen mensajes a los contratos en Ethereum. El contrato L2ToL1MessagePasser (preimplementado en la red Optimism) puede ser utilizado por contratos en Optimism para almacenar un mensaje en el estado Optimism. Luego, los usuarios pueden demostrar a los contratos en Ethereum que un contrato determinado en Optimism, de hecho, tenía la intención de enviar un mensaje determinado al mostrar que el hash de este mensaje se ha almacenado dentro del contrato L2ToL1MessagePasser.

Pruebas de fallas (fault proofs)

En un Optimistic Rollups, los state commitments se publican en Ethereum sin ninguna prueba directa de la validez de estos commitments. En cambio, estos commitments se consideran pendientes por un período de tiempo (llamado la "challenge window" o “ventana de desafíos”). Si un state commitment propuesto no se impugna durante la ventana de impugnación (actualmente establecida en 7 días), entonces se considera final. Una vez que un commitment se considera definitivo, los contratos inteligentes en Ethereum pueden aceptar de forma segura pruebas sobre el estado de Optimism en función de ese commitment.

Cuando se impugna un state commitment, se puede invalidar a través de una "foult proof" (anteriormente conocida como "fraus proof" o “prueba de fraude”). Si el commitment se impugna con éxito, entonces se elimina del contrato StateCommitmentChain para eventualmente ser reemplazado por otro commitment propuesto. Es importante tener en cuenta que un challenge exitoso no revierte el Optimism en sí mismo, solo los commitment publicados sobre el estado de la red. El orden de las transacciones y el estado de Optimism no cambian con un challenge a prueba de fallas.

El proceso de prueba de fallas se encuentra actualmente en una importante actualización como efecto secundario de la Equivalencia EVM del 11 de noviembre. Puede leer más sobre este proceso en la sección de Especificaciones del Protocolo del sitio web de Optimism.

Empezar a construir

Has llegado al final de Cómo funciona Optimism. Esperamos que haya aprendido bastante sobre Optimism. Por supuesto, el final de un viaje es siempre el comienzo de otro. Ahora que eres un experto en todo lo relacionado con Optimism, ¡es hora de comenzar a construir!

Implemente una aplicación hoy

Construir contratos inteligentes en Optimism nunca ha sido tan fácil. Si está buscando un lugar para comenzar, le recomendamos que consulte nuestros documentos para developers. Allí encontrará todo lo que necesita saber para crear e implementar su primera aplicación en Optimism.

Involúcrate con Optimism

¿Emocionado por Optimism? ¿Quieres contribuir directamente? Dirígete a nuestra página de contribuciones donde encontrarás una lista de muchas de las formas en que puedes ayudar activamente a construir Optimism. También puedes intentar ir al discord de Optimism para encontrar formas adicionales de ayudar.

Dive deeper

Cómo funciona Optimism es una descripción general de alto nivel. Si está interesado en bucear aún más profundo, debe consultar la sección de Especificaciones del Protocolo del sitio web de Optimism

Subscribe to Optimism Español
Receive the latest updates directly to your inbox.
Mint this entry as an NFT to add it to your collection.
Verification
This entry has been permanently stored onchain and signed by its creator.