Interoperabilidad Blockchain Parte II: Pruebas de consenso y puentes de confianza minimizados

Intermedio12/3/2023, 2:44:51 PM
Este artículo explora los desafíos de seguridad al unir la tecnología y las soluciones de activos entre cadenas. Examina la transición de puentes de múltiples firmas a puentes ZK, destacando la eficiencia de los puentes ZK para reducir los datos en cadena. Además, se explora el potencial de las pruebas de consenso para la verificación de confianza minimizada, cuestionando si significa el futuro de la tecnología puente.

Introducción

En la Parte I, cubrimos el concepto de interoperabilidad de blockchain y cómo su importancia solo aumentará a medida que surjan L1, L2 y cadenas de aplicaciones alternativas. La gran cantidad de capital que se mueve a través de los puentes los convierte en objetivos atractivos para los piratas informáticos y en 2022 vimos una pérdida de 2.500 millones de dólares debido a vulnerabilidades de contratos inteligentes y multifirma. De todas las hazañas que ocurrieron ese año, un asombroso 69% estuvo relacionado con puentes.

En el centro de estas pérdidas se encontraban las fallas en el paso de verificación del puente, donde el mecanismo de confianza utilizado para verificar la validez de la transacción estaba respaldado por humanos y firmas múltiples:

  1. El puente de Ronin fue asegurado por un multisig 5 de 9. 4 validadores fueron operados por una parte y comprometidos de una sola vez, lo que hace que el quinto sea un desencadenante fácil
  2. Harmony Bridge estaba protegido por un multisig 2 de 5 que se vio comprometido mediante métodos desconocidos, aunque se sospechaba de ingeniería social.
  3. Las claves privadas de Multichain eran una 'multifirma' efectivamente en poder de una persona

Dadas estas vulnerabilidades, el paso de verificación en el proceso de conexión se realiza mucho mejor mediante métodos de confianza minimizada que se basan en código y matemáticas.

Aquí es donde las pruebas de consenso entran en juego como una posible solución. El enfoque se basa en un probador que verifica el consenso de blockchain de la cadena de origen y utiliza pruebas de conocimiento cero para dar fe de la validez de una transacción antes de liberar fondos a un destino.

Hay mucho que analizar, así que primero definamos qué queremos decir con verificar el consenso de blockchain.

Verificar el estado/'consenso' de la cadena de bloques de origen

En esencia, las cadenas de bloques son libros de contabilidad que registran transacciones entre cuentas mantenidas por nodos que no confían entre sí. Dado que hay muchos nodos que validan una red blockchain, se debe llegar a un acuerdo entre estos validadores sobre qué bloque es el agregado más recientemente, es decir, deben llegar a un "consenso" sobre el último estado.

Fuente: Adaptado de Ethereum EVM ilustrado

Verificar de manera confiable el consenso de la cadena de origen en la cadena de destino es clave para establecer un puente porque si puede verificar el último bloque de la cadena de origen de una manera que minimice la confianza, determina la última "verdad" y luego tiene la comodidad de ejecutar la acción correspondiente en la cadena de destino.

Verificar el consenso de la cadena de origen para permitir la conexión

Para el puente, el protocolo debe determinar que se realizó válidamente una transacción de "depósito" en la cadena de origen. En la práctica esto implica verificar dos cosas:

  1. Paso 1. Verificar el consenso de blockchain, es decir, que el bloque que estamos consultando es una parte válida del estado mundial de la cadena de origen; y
  2. Paso 2. Verifique que la transacción específica, es decir, la transacción de 'depósito' esté incluida en el bloque (esto se puede probar con una prueba de inclusión de Merkle)

Tras la verificación de ambos, la cadena de destino puede liberar activos al usuario.

Listo, activos puenteados.

En teoría, esto suena simple, pero la parte complicada es el paso 1: no es tan fácil para un contrato inteligente en una cadena verificar el consenso de otra (generalmente Ethereum como cadena fuente).

Desafíos actuales a la hora de verificar el consenso para tender puentes

El primer desafío a señalar es que diferentes cadenas de bloques tienen diferentes mecanismos de consenso y demostrar el consenso en cada cadena de origen requiere un trabajo de ingeniería muy específico para su configuración. Esto significa que el paso de verificación del consenso deberá personalizarse para cada cadena de origen. Por ahora, centrémonos en demostrar el consenso de Ethereum, dado que tiene la mayor parte de TVL y es el puente típico de los usuarios de L1.

Ethereum tiene un gran conjunto de validadores de más de 700.000, de los cuales más de 21.000 validadores votan en un bloque en una ranura. Para lograr la finalidad, un bloque debe obtener votos de ⅔ del conjunto de validadores, lo que equivale aproximadamente a 450.000 votos de validadores. Verificar el consenso total significaría comprobar la validez de 450.000 firmas.

Un método menos engorroso para comprobar el consenso de Ethereum implica el "protocolo de cliente ligero". Esto utiliza un comité de sincronización (512 validadores seleccionados al azar cada 27,3 horas) para dar fe de que el último bloque propuesto es válido. En este caso, verificar el consenso significa verificar la validez de 512 firmas agregadas.

En un contexto puente, un contrato inteligente en la cadena de destino puede utilizar el protocolo de cliente ligero y actuar como un "cliente ligero" en la cadena para verificar el último estado de la cadena de origen y garantizar que se haya realizado un "depósito". Si se cumple, el contrato inteligente libera fondos en la cadena de destino.

Verificación del consenso de la cadena fuente (en Ethereum) a través del comité de sincronización

Este enfoque no es muy práctico porque verificar 512 firmas agregadas directamente en un contrato inteligente en cadena es prohibitivamente costoso sin precompilaciones, dado que los validadores de Ethereum usan firmas BLS.

Entonces, la clave para hacer esto posible es dar el paso de verificación fuera de la cadena...

… y aquí es donde entran las pruebas de consenso.

La solución: pruebas de consenso de las firmas del comité de sincronización

Las pruebas de conocimiento cero han surgido como una solución viable para ayudar a las cadenas de bloques a realizar costosos cálculos fuera de la cadena y verificar el resultado dentro de la cadena. Esto permite que un contrato inteligente puente en la cadena de destino mueva cálculos costosos (como validar el consenso de la cadena de origen) a un probador de conocimiento cero fuera de la cadena:

  1. El probador verificará la firma y generará una prueba de consenso, es decir, una prueba sucinta de conocimiento cero que acredite que el bloque es el siguiente bloque válido, ya que ha recibido ⅔ de las certificaciones del comité de sincronización. Esta prueba verifica el consenso de la cadena de bloques de origen (Paso 1. desde arriba).
  2. Una vez que se prueba la validez de un bloque, podemos probar que una transacción fue parte de este bloque (Paso 2 desde arriba) utilizando pruebas de inclusión de Merkle. (Como alternativa, se puede generar una prueba de conocimiento cero fuera de la cadena y verificarla mediante un contrato inteligente en la cadena de destino para el mismo propósito).

La verificación con pruebas zk nos permite acercarnos a un puente de confianza minimizada

Después de estos dos pasos, el contrato inteligente de destino puede liberar fondos de forma segura en la cadena de destino.

El uso de Consensus Proofs para verificar el estado de la cadena de bloques de origen es un paso importante hacia un puente que minimice la confianza, pero confiar en el protocolo de cliente ligero y los validadores 512 tiene algunas limitaciones (destacadas en la siguiente tabla).

Limitaciones al depender del comité de sincronización para verificar el consenso

Como tal, algunos equipos están trabajando para demostrar el consenso total de Ethereum, lo cual es una tarea compleja e implicaría verificar 450.000 firmas al momento de escribir este artículo. Hacerlo en un circuito de conocimiento cero no es tarea fácil, pero equipos como Polyhedra Network y Succinct se han comprometido a lograrlo.

¿Qué es mejor que demostrar 512 firmas? ¡450.000 firmas!

Polyhedra Network anunció recientemente que lograron verificar 21.000 firmas de validadores que firman un bloque en una ranura determinada en ZK y están trabajando para verificar las 450.000 firmas. Se pueden encontrar más detalles sobre su enfoque y sistema de prueba en su artículo zkBridge.

Una vez que podamos verificar el consenso completo de Ethereum con conocimiento cero, verificar el consenso de otras cadenas con conjuntos de validadores más pequeños con conocimiento cero debería ser relativamente sencillo.

Riesgos de utilizar pruebas de conocimiento cero

Si bien la tecnología de conocimiento cero y las pruebas de consenso resuelven la falibilidad humana, la discusión estaría incompleta sin reconocer algunos de los riesgos que surgen al usarlas como puente.

La tecnología de conocimiento cero está cambiando rápidamente a medida que siguen surgiendo nuevos algoritmos y sistemas. Algunas de estas implementaciones no están auditadas y podrían contener vulnerabilidades, haciéndolas susceptibles a posibles ataques cuando surgen incentivos importantes. Además, incluso después de las auditorías, estos sistemas criptográficos complejos pueden contener vectores de ataque no descubiertos que serán identificados y rectificados con el tiempo, para alcanzar un estado maduro y endurecido.

Además, queda por ver en qué volumen de transacciones el gasto de generar y verificar pruebas de conocimiento cero se amortiza lo suficiente como para considerarse rentable.

La construcción de equipos

Para concluir, destacaremos algunos de los actores que crean soluciones en este espacio. Si bien tienen enfoques y mercados ligeramente diferentes, están superando los límites de lo que pueden hacer los puentes basados en zk y anunciando el surgimiento de una interoperabilidad minimizada en la confianza.

Entre ellos tenemos:

  1. Polyhedra Network , que ha estado diseñando e implementando el protocolo zkBridge , y puede usarse para dar fe del estado de otra cadena. Actualmente, zkBridge admite puentes entre más de 20 L1 y L2, incluidos Ethereum, Polygon, Binance Smart Chain, Optimism y Arbitrum. Polyhedra Network ha integrado pruebas basadas en comités de sincronización y pruebas basadas en consenso total con LayerZero para facilitar el puente basado en zk.
  2. Succinct Labs que han estado desarrollando clientes ligeros basados en zk para dar fe del estado de Ethereum y facilitar el puente entre Gnosis Chain y Ethereum como cadenas de origen y Gnosis, Arbitrum, Avax, Binance Smart Chain, Optimism y Polygon como cadenas de destino.
  3. Electron Labs , que se centra en construir enfoques puente entre Ethereum y el ecosistema Cosmos.
  4. Polymer Labs tiene como objetivo ampliar la conectividad de IBC a través de diferentes cadenas a través de Polymer Hub, que aplica el transporte de IBC o la semántica TAO a través de cadenas conectadas. Polymer Hub también permite un modelo de interoperabilidad de malla que tiene propiedades de escala mejoradas en comparación con los modelos p2p o hub and Spoke.
  5. Lagrange Labs , que utilizará sus propios comités estatales (que están asegurados por la reactivación de Eigenlayer) para dar fe del estado de las cadenas de bloques. Están apuntando a L2 optimistas (Arbitrum, Optimism, Base) y L1 importantes como su salida al mercado.

Equipos trabajando en pruebas de consenso

Conclusión

La interoperabilidad es una parte central de la infraestructura blockchain. En las primeras etapas de la transición se vieron mecanismos de confianza respaldados por firmas múltiples y comprometidos por la dependencia de los humanos. Ahora estamos empezando a entrar en el ámbito de los puentes asegurados mediante criptografía y matemáticas, que son factibles gracias a la aplicación de pruebas de conocimiento cero en el contexto de los puentes.

En esta parte cubrimos cómo las Pruebas de Consenso ayudan a resolver los puentes verificando el último consenso de blockchain fuente finalizado.

Sin embargo, esta tecnología se puede ampliar aún más para verificar el consenso histórico que permite casos de uso entre cadenas más flexibles más allá de la simple conexión en este momento. Y eso es lo que exploraremos en la Parte III de nuestra serie sobre Interoperabilidad: Pruebas de almacenamiento y los casos de uso que desbloquean.

Descargo de responsabilidad:

  1. Este artículo se reimprime de [Superscrypt]. Todos los derechos de autor pertenecen al autor original [Jacob Ko]. Si hay objeciones a esta reimpresión, comuníquese con el equipo de Gate Learn y ellos lo manejarán de inmediato.
  2. Descargo de responsabilidad: los puntos de vista y opiniones expresados en este artículo son únicamente los del autor y no constituyen ningún consejo de inversión.
  3. Las traducciones del artículo a otros idiomas están a cargo del equipo de Gate Learn. A menos que se mencione, está prohibido copiar, distribuir o plagiar los artículos traducidos.

Interoperabilidad Blockchain Parte II: Pruebas de consenso y puentes de confianza minimizados

Intermedio12/3/2023, 2:44:51 PM
Este artículo explora los desafíos de seguridad al unir la tecnología y las soluciones de activos entre cadenas. Examina la transición de puentes de múltiples firmas a puentes ZK, destacando la eficiencia de los puentes ZK para reducir los datos en cadena. Además, se explora el potencial de las pruebas de consenso para la verificación de confianza minimizada, cuestionando si significa el futuro de la tecnología puente.

Introducción

En la Parte I, cubrimos el concepto de interoperabilidad de blockchain y cómo su importancia solo aumentará a medida que surjan L1, L2 y cadenas de aplicaciones alternativas. La gran cantidad de capital que se mueve a través de los puentes los convierte en objetivos atractivos para los piratas informáticos y en 2022 vimos una pérdida de 2.500 millones de dólares debido a vulnerabilidades de contratos inteligentes y multifirma. De todas las hazañas que ocurrieron ese año, un asombroso 69% estuvo relacionado con puentes.

En el centro de estas pérdidas se encontraban las fallas en el paso de verificación del puente, donde el mecanismo de confianza utilizado para verificar la validez de la transacción estaba respaldado por humanos y firmas múltiples:

  1. El puente de Ronin fue asegurado por un multisig 5 de 9. 4 validadores fueron operados por una parte y comprometidos de una sola vez, lo que hace que el quinto sea un desencadenante fácil
  2. Harmony Bridge estaba protegido por un multisig 2 de 5 que se vio comprometido mediante métodos desconocidos, aunque se sospechaba de ingeniería social.
  3. Las claves privadas de Multichain eran una 'multifirma' efectivamente en poder de una persona

Dadas estas vulnerabilidades, el paso de verificación en el proceso de conexión se realiza mucho mejor mediante métodos de confianza minimizada que se basan en código y matemáticas.

Aquí es donde las pruebas de consenso entran en juego como una posible solución. El enfoque se basa en un probador que verifica el consenso de blockchain de la cadena de origen y utiliza pruebas de conocimiento cero para dar fe de la validez de una transacción antes de liberar fondos a un destino.

Hay mucho que analizar, así que primero definamos qué queremos decir con verificar el consenso de blockchain.

Verificar el estado/'consenso' de la cadena de bloques de origen

En esencia, las cadenas de bloques son libros de contabilidad que registran transacciones entre cuentas mantenidas por nodos que no confían entre sí. Dado que hay muchos nodos que validan una red blockchain, se debe llegar a un acuerdo entre estos validadores sobre qué bloque es el agregado más recientemente, es decir, deben llegar a un "consenso" sobre el último estado.

Fuente: Adaptado de Ethereum EVM ilustrado

Verificar de manera confiable el consenso de la cadena de origen en la cadena de destino es clave para establecer un puente porque si puede verificar el último bloque de la cadena de origen de una manera que minimice la confianza, determina la última "verdad" y luego tiene la comodidad de ejecutar la acción correspondiente en la cadena de destino.

Verificar el consenso de la cadena de origen para permitir la conexión

Para el puente, el protocolo debe determinar que se realizó válidamente una transacción de "depósito" en la cadena de origen. En la práctica esto implica verificar dos cosas:

  1. Paso 1. Verificar el consenso de blockchain, es decir, que el bloque que estamos consultando es una parte válida del estado mundial de la cadena de origen; y
  2. Paso 2. Verifique que la transacción específica, es decir, la transacción de 'depósito' esté incluida en el bloque (esto se puede probar con una prueba de inclusión de Merkle)

Tras la verificación de ambos, la cadena de destino puede liberar activos al usuario.

Listo, activos puenteados.

En teoría, esto suena simple, pero la parte complicada es el paso 1: no es tan fácil para un contrato inteligente en una cadena verificar el consenso de otra (generalmente Ethereum como cadena fuente).

Desafíos actuales a la hora de verificar el consenso para tender puentes

El primer desafío a señalar es que diferentes cadenas de bloques tienen diferentes mecanismos de consenso y demostrar el consenso en cada cadena de origen requiere un trabajo de ingeniería muy específico para su configuración. Esto significa que el paso de verificación del consenso deberá personalizarse para cada cadena de origen. Por ahora, centrémonos en demostrar el consenso de Ethereum, dado que tiene la mayor parte de TVL y es el puente típico de los usuarios de L1.

Ethereum tiene un gran conjunto de validadores de más de 700.000, de los cuales más de 21.000 validadores votan en un bloque en una ranura. Para lograr la finalidad, un bloque debe obtener votos de ⅔ del conjunto de validadores, lo que equivale aproximadamente a 450.000 votos de validadores. Verificar el consenso total significaría comprobar la validez de 450.000 firmas.

Un método menos engorroso para comprobar el consenso de Ethereum implica el "protocolo de cliente ligero". Esto utiliza un comité de sincronización (512 validadores seleccionados al azar cada 27,3 horas) para dar fe de que el último bloque propuesto es válido. En este caso, verificar el consenso significa verificar la validez de 512 firmas agregadas.

En un contexto puente, un contrato inteligente en la cadena de destino puede utilizar el protocolo de cliente ligero y actuar como un "cliente ligero" en la cadena para verificar el último estado de la cadena de origen y garantizar que se haya realizado un "depósito". Si se cumple, el contrato inteligente libera fondos en la cadena de destino.

Verificación del consenso de la cadena fuente (en Ethereum) a través del comité de sincronización

Este enfoque no es muy práctico porque verificar 512 firmas agregadas directamente en un contrato inteligente en cadena es prohibitivamente costoso sin precompilaciones, dado que los validadores de Ethereum usan firmas BLS.

Entonces, la clave para hacer esto posible es dar el paso de verificación fuera de la cadena...

… y aquí es donde entran las pruebas de consenso.

La solución: pruebas de consenso de las firmas del comité de sincronización

Las pruebas de conocimiento cero han surgido como una solución viable para ayudar a las cadenas de bloques a realizar costosos cálculos fuera de la cadena y verificar el resultado dentro de la cadena. Esto permite que un contrato inteligente puente en la cadena de destino mueva cálculos costosos (como validar el consenso de la cadena de origen) a un probador de conocimiento cero fuera de la cadena:

  1. El probador verificará la firma y generará una prueba de consenso, es decir, una prueba sucinta de conocimiento cero que acredite que el bloque es el siguiente bloque válido, ya que ha recibido ⅔ de las certificaciones del comité de sincronización. Esta prueba verifica el consenso de la cadena de bloques de origen (Paso 1. desde arriba).
  2. Una vez que se prueba la validez de un bloque, podemos probar que una transacción fue parte de este bloque (Paso 2 desde arriba) utilizando pruebas de inclusión de Merkle. (Como alternativa, se puede generar una prueba de conocimiento cero fuera de la cadena y verificarla mediante un contrato inteligente en la cadena de destino para el mismo propósito).

La verificación con pruebas zk nos permite acercarnos a un puente de confianza minimizada

Después de estos dos pasos, el contrato inteligente de destino puede liberar fondos de forma segura en la cadena de destino.

El uso de Consensus Proofs para verificar el estado de la cadena de bloques de origen es un paso importante hacia un puente que minimice la confianza, pero confiar en el protocolo de cliente ligero y los validadores 512 tiene algunas limitaciones (destacadas en la siguiente tabla).

Limitaciones al depender del comité de sincronización para verificar el consenso

Como tal, algunos equipos están trabajando para demostrar el consenso total de Ethereum, lo cual es una tarea compleja e implicaría verificar 450.000 firmas al momento de escribir este artículo. Hacerlo en un circuito de conocimiento cero no es tarea fácil, pero equipos como Polyhedra Network y Succinct se han comprometido a lograrlo.

¿Qué es mejor que demostrar 512 firmas? ¡450.000 firmas!

Polyhedra Network anunció recientemente que lograron verificar 21.000 firmas de validadores que firman un bloque en una ranura determinada en ZK y están trabajando para verificar las 450.000 firmas. Se pueden encontrar más detalles sobre su enfoque y sistema de prueba en su artículo zkBridge.

Una vez que podamos verificar el consenso completo de Ethereum con conocimiento cero, verificar el consenso de otras cadenas con conjuntos de validadores más pequeños con conocimiento cero debería ser relativamente sencillo.

Riesgos de utilizar pruebas de conocimiento cero

Si bien la tecnología de conocimiento cero y las pruebas de consenso resuelven la falibilidad humana, la discusión estaría incompleta sin reconocer algunos de los riesgos que surgen al usarlas como puente.

La tecnología de conocimiento cero está cambiando rápidamente a medida que siguen surgiendo nuevos algoritmos y sistemas. Algunas de estas implementaciones no están auditadas y podrían contener vulnerabilidades, haciéndolas susceptibles a posibles ataques cuando surgen incentivos importantes. Además, incluso después de las auditorías, estos sistemas criptográficos complejos pueden contener vectores de ataque no descubiertos que serán identificados y rectificados con el tiempo, para alcanzar un estado maduro y endurecido.

Además, queda por ver en qué volumen de transacciones el gasto de generar y verificar pruebas de conocimiento cero se amortiza lo suficiente como para considerarse rentable.

La construcción de equipos

Para concluir, destacaremos algunos de los actores que crean soluciones en este espacio. Si bien tienen enfoques y mercados ligeramente diferentes, están superando los límites de lo que pueden hacer los puentes basados en zk y anunciando el surgimiento de una interoperabilidad minimizada en la confianza.

Entre ellos tenemos:

  1. Polyhedra Network , que ha estado diseñando e implementando el protocolo zkBridge , y puede usarse para dar fe del estado de otra cadena. Actualmente, zkBridge admite puentes entre más de 20 L1 y L2, incluidos Ethereum, Polygon, Binance Smart Chain, Optimism y Arbitrum. Polyhedra Network ha integrado pruebas basadas en comités de sincronización y pruebas basadas en consenso total con LayerZero para facilitar el puente basado en zk.
  2. Succinct Labs que han estado desarrollando clientes ligeros basados en zk para dar fe del estado de Ethereum y facilitar el puente entre Gnosis Chain y Ethereum como cadenas de origen y Gnosis, Arbitrum, Avax, Binance Smart Chain, Optimism y Polygon como cadenas de destino.
  3. Electron Labs , que se centra en construir enfoques puente entre Ethereum y el ecosistema Cosmos.
  4. Polymer Labs tiene como objetivo ampliar la conectividad de IBC a través de diferentes cadenas a través de Polymer Hub, que aplica el transporte de IBC o la semántica TAO a través de cadenas conectadas. Polymer Hub también permite un modelo de interoperabilidad de malla que tiene propiedades de escala mejoradas en comparación con los modelos p2p o hub and Spoke.
  5. Lagrange Labs , que utilizará sus propios comités estatales (que están asegurados por la reactivación de Eigenlayer) para dar fe del estado de las cadenas de bloques. Están apuntando a L2 optimistas (Arbitrum, Optimism, Base) y L1 importantes como su salida al mercado.

Equipos trabajando en pruebas de consenso

Conclusión

La interoperabilidad es una parte central de la infraestructura blockchain. En las primeras etapas de la transición se vieron mecanismos de confianza respaldados por firmas múltiples y comprometidos por la dependencia de los humanos. Ahora estamos empezando a entrar en el ámbito de los puentes asegurados mediante criptografía y matemáticas, que son factibles gracias a la aplicación de pruebas de conocimiento cero en el contexto de los puentes.

En esta parte cubrimos cómo las Pruebas de Consenso ayudan a resolver los puentes verificando el último consenso de blockchain fuente finalizado.

Sin embargo, esta tecnología se puede ampliar aún más para verificar el consenso histórico que permite casos de uso entre cadenas más flexibles más allá de la simple conexión en este momento. Y eso es lo que exploraremos en la Parte III de nuestra serie sobre Interoperabilidad: Pruebas de almacenamiento y los casos de uso que desbloquean.

Descargo de responsabilidad:

  1. Este artículo se reimprime de [Superscrypt]. Todos los derechos de autor pertenecen al autor original [Jacob Ko]. Si hay objeciones a esta reimpresión, comuníquese con el equipo de Gate Learn y ellos lo manejarán de inmediato.
  2. Descargo de responsabilidad: los puntos de vista y opiniones expresados en este artículo son únicamente los del autor y no constituyen ningún consejo de inversión.
  3. Las traducciones del artículo a otros idiomas están a cargo del equipo de Gate Learn. A menos que se mencione, está prohibido copiar, distribuir o plagiar los artículos traducidos.
Comece agora
Registe-se e ganhe um cupão de
100 USD
!