Por el momento, Ethereum solo puede manejar alrededor de 15 transacciones por segundo; lo que esto significa es que los validadores elegirán un conjunto de transacciones de un grupo de transacciones que aún no se ha confirmado, y la forma en que seleccionan estas transacciones está, de hecho, relacionada con su beneficio. Por lo tanto, debe luchar para que se incluya su transacción porque solo hay un número limitado de transacciones que se pueden procesar a la vez.
Ya sabes, a los validadores se les otorgan tarifas cuando incluyen su transacción en un bloque. Ahora piense desde la perspectiva del validador; hay dos transacciones actualmente en el grupo de transacciones que esperan ser recogidas por un validador. Una transacción está dispuesta a pagar $10 y la otra transacción solo paga $1 como tarifa. ¿Qué transacción elegirás?
El de $10 dólares, ¿verdad? Porque si incluyes esta transacción en el bloque, obtendrás $10 dólares como comisión.
Permítanme explicar esto de una manera simple. Cuando interactúa con la red Ethereum, generalmente invoca ciertos contratos inteligentes. Los contratos inteligentes son un conjunto de instrucciones; pensar en ellos como un programa. Cada instrucción requerirá cierta potencia computacional.
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; contract HelloWorld { string public message; constructor() { message = "Hello World"; } function getMessage() public view returns (string memory) { return message; } function setMessage(string memory newMessage) public { message = newMessage; } }
si eres un
Cuando implementa este contrato, lo primero que se llama es su constructor , que establece la variable message
en "Hello World" . Esto cambia el estado de la cadena de bloques . Cualquier cambio de estado requiere tarifas. Supongamos que almacenar una cadena en una variable cuesta 1$.
Si desea establecer el mensaje en otra cosa, digamos, "Bienvenido al artículo de Kishan" , deberá invocar el método setMessage()
en el contrato, pasando su mensaje requerido, y eso nuevamente requerirá algunas tarifas porque están alterando el estado. Digamos que requiere 1$ de nuevo.
¿Qué pasa si quiero ver cuál es el mensaje? Simplemente puede llamar getMessage();
esto no requerirá ninguna tarifa ya que no cambia el estado. Habiendo explicado eso, volvamos a nuestra discusión.
Digamos que, por alguna razón, su transacción que estaba actualmente en el grupo de transacciones invoca este contrato inteligente HelloWorld
y establece el mensaje a su nombre.
Ahora suponga que un validador elige su transacción hipotéticamente, verá que ha establecido las tarifas en $ 1, y la invocación del contrato inteligente en sí tomará $ 1. Entonces, él mismo no recibió nada a cambio. Todas las tarifas se utilizaron al interactuar con el contrato inteligente. ¿Por qué entonces lo recogerá? Esta transacción será rechazada porque no hay ningún incentivo para que el validador la procese y la incluya en la cadena. Por lo tanto, tendrá que volver a intentarlo con tarifas más altas para que pueda atraer al validador para que elija su transacción.
La tarifa del gas puede volverse realmente competitiva cuando muchos usuarios realizan transacciones en Ethereum. Sí, puede establecer las tarifas manualmente, pero tenga en cuenta que la confirmación puede requerir mucho tiempo porque los validadores solo elegirán las transacciones que los beneficiarán.
Si su transacción es sensible al tiempo, por ejemplo, desea que una operación se cierre lo antes posible, eso representa un riesgo de liquidación. En este escenario, es mejor establecer las tarifas lo más alto posible o usar una de las billeteras que le brindan una estimación de las tarifas que confirmarán su transacción en segundos. Porque ahorrar en gasolina puede resultar en que toda su cartera se borre.
Estas altas tarifas han impedido que muchos entusiastas de las criptomonedas realicen transacciones en Ethereum, y se han introducido muchas otras capas 1 para abordar este problema. Pero a todos les falta descentralización, por lo que cualquiera cambiaría a web3.
Queremos utilizar la descentralización y la seguridad que ofrece Ethereum pero, al mismo tiempo, no queremos perder el bolsillo con estas elevadas tarifas.
Una forma de abordar estos problemas son los resúmenes, una solución de escalado de capa 2.
Los rollups son una forma de agregar transacciones y procesarlas fuera de la cadena y publicar el resultado en la cadena.
Todo esto fuera de la cadena y dentro de la cadena puede infundir dudas en la comprensión, así que permítanme aclararlo un poco más. Piense en los rollups como un proceso que puede reducir significativamente las tarifas y la congestión de la cadena de bloques de Ethereum. La forma en que funciona es agrupando (agregando) un gran lote de transacciones y moviéndolas fuera de la cadena, como una cadena paralela, VM, etc. Estas cadenas paralelas son operadas por redes de capa 2 como Arbitrum, zkSync , Optimismo, etc
La agregación la realiza una entidad llamada operador de resumen, cuyo trabajo principal es recopilar transacciones de diferentes usuarios y ejecutarlas en un entorno fuera de la cadena. Nuevamente, fuera de la cadena puede significar muchas cosas dependiendo de la implementación, como una máquina virtual, una cadena lateral u otro protocolo de capa 2.
Una vez que ha ejecutado las transacciones, envía los datos agregados (bloque acumulativo) a la cadena Ethereum como datos de llamada, junto con la prueba de que los ha ejecutado correctamente. Hasta aquí, lo tenemos claro, pero ¿ qué es calldata ?
Piense en los datos de llamadas como un tipo especial de datos que se pueden almacenar en Ethereum sin ejecutarse ni afectar su estado.
Los operadores de acumulación deben pagar una tarifa al validador de Ethereum por incluir los datos de la llamada en un bloque. Una vez incluido. El operador de resumen supervisa el contrato de resumen (explicado en la siguiente sección) en busca de desafíos o disputas de otros usuarios o validadores. Si hay alguna disputa, responde en consecuencia.
Un contrato de resumen es responsable de verificar los datos de la transacción y las pruebas presentes en los datos de llamada enviados por nuestro operador de resumen. Es un contrato inteligente que se implementa en Ethereum que administra el estado y la lógica del resumen.
Un contrato de resumen recibe los datos de transacción y las pruebas del operador de resumen como datos de llamada, los verifica, actualiza el estado de los paquetes acumulativos y emite un evento para cualquier cambio de estado.
Combinemos todo lo que hemos aprendido y resumámoslo usando un ejemplo:
Supongamos que desea enviar 1 ETH a su amigo Ram mediante un resumen.
Usted especifica la dirección de Ram y la cantidad a enviar en su billetera y firma la transacción.
Después de eso, envía la transacción a un operador de resumen, que es responsable de agregar transacciones de diferentes usuarios y ejecutarlas en un entorno de ejecución fuera de la cadena.
El operador de resumen luego agrupará su transacción con otras transacciones en un llamado bloque de resumen y lo enviará a la cadena Ethereum como calldata . Luego paga las tarifas a los validadores por incluirlo en el bloque.
Ahora, según el tipo de acumulación, es posible que el operador de acumulación deba presentar una prueba o una afirmación adicional de la validez del bloque de acumulación junto con los datos de la llamada.
Una vez hecho esto, el bloque acumulativo es procesado por el contrato acumulativo , que es un contrato inteligente implementado en la cadena Ethereum que administra el estado y la lógica del acumulativo. El contrato verifica la prueba o afirmación, actualiza el estado de los usuarios de resumen y emite un evento para cualquier cambio de estado.
Finalmente, Ram recibe 1 ETH de usted en su cuenta acumulada.
Los resúmenes optimistas son optimistas. Lo que quiero decir es que asumen que cada transacción en el lote es válida. Pero hay una trampa. Dan un período de gracia en el que un usuario o un validador que piensa que la transacción no es válida puede impugnarla presentando una prueba de fraude. Luego, la red principal de Ethereum lo verifica y, si el desafío tiene éxito, se rechaza el bloque acumulativo y el operador deshonesto es severamente penalizado.
Si no hay disputa después de que finaliza el período de gracia, el lote de transacciones se ancla a Ethereum y se finalizan los cambios de estado que incluye.
Aunque proporciona una mayor escalabilidad y tarifas de gas reducidas, viene con un retraso en la finalización de la transacción porque uno tiene que esperar el período de gracia.
Hay dos caballos principales en la carrera:
He escrito un artículo detallado que explica los zk-rollups que puede consultar. De todos modos, te daría una breve descripción de lo que es y cómo funciona.
Los resúmenes de zk, a diferencia de los resúmenes optimistas, asumen que cada transacción no es válida hasta que se demuestre que es válida. Utiliza "pruebas de conocimiento cero" para validar la autenticidad de la transacción. Una vez que pasa por todas las transacciones en el lote, envía una sola transacción a Ethereum, junto con la prueba de que el contrato acumulativo puede verificarse fácilmente.
Es más seguro en comparación con un resumen optimista. Dado que no existe un período de gracia, las transacciones tienen una finalidad instantánea ya que la validez ya está comprobada a través de una prueba criptográfica. Sin embargo, generar la prueba requiere un poder de cómputo significativo y experiencia para implementarla. Esto puede aumentar la complejidad en comparación con los resúmenes optimistas.
Los dos caballos principales en la carrera son:
Gracias por tomarse el tiempo para leer este artículo.
Referencias: