Ante los graves problemas de ineficiencia que tiene el actual sistema de comisiones, que el usuario debe pagar para que la red de Ethereum 1.0 ejecute las transacciones, surge el EIP-1559 como una alternativa viable y esperanzadora, que permitiría a Ethereum dar un paso de gigante hacia una mejor experiencia de usuario y una mayor escalabilidad de todo su ecosistema.

 

El problema

Uno de los principales problemas con el que se encuentran muchos de los usuarios que quieren ejecutar transacciones en la red de Ethereum, es la gestión del gas, y como consecuencia, la gestión de las comisiones (fees) que se tienen que pagar.

En el presente artículo, no vamos a explicar en profundidad los conceptos clave para entender la gestión del gas en Ethereum 1.0 en la actualidad, como pueden ser el «gas fee», el «gas price», o el «gas limit», por lo que recomendamos al lector, que si los desconoce, antes de continuar con la lectura del presente artículo, acceda al contenido del siguiente enlace, en el que se explican de forma clara y resumida.

Como decíamos, la gestión del gas y de las comisiones, lejos de ser un tema trivial, se ha convertido en un verdadero quebradero de cabeza, tanto para los usuarios finales, como para los desarrolladores de DApps, ya que en muchas ocasiones, en la actualidad, el coste de las comisiones, supera con creces el valor de las transacciones.

Esta circunstancia, ha provocado que la implementación de ciertos proyectos, en la red de Ethereum, puedan ser inviables, o poco atractivos para los desarrolladores y/o usuarios finales. Como consecuencia, puede llegar a producirse una búsqueda de otras plataformas alternativas a Ethereum en el ecosistema Blockchain.

En la actualidad, la red de Ethereum soporta los principales proyectos de DeFi como Maker, Aave, Compound, o Uniswap, por citar algunos, en los cuales la rapidez con la que se realizan las transacciones es un factor determinante para que los usuarios finales puedan aprovechar todo su potencial (Yield Farming, Flash Loans, arbitraje, etc), y como consecuencia, puedan ser proyectos atractivos para la comunidad.

El sistema actual de cálculo de comisiones, implementado en Ethereum 1.0, para ejecutar las transacciones, se basa en un mecanismo de subasta simple, en el cual los usuarios solicitan la ejecución de sus transacciones realizando una oferta indicada en la transacción, mediante el campo «gas price». El «gas price» indica  el precio en wei (1 ETH es 1.000.000.000.000.000.000 wei) que el originador de la transacción está dispuesto a pagar por unidad de gas. Cuanto mayor sea el «gas price», menor será el tiempo que tarda en incluirse la transacción en un nuevo bloque, ya que los mineros eligen las transacciones con las comisiones más altas (un «gas price» más alto) para incluirlas en los nuevos bloques creados.

Dicho sistema de subastas crea graves problemas de ineficiencia en el protocolo. Por un lado, las transacciones, a menudo, tienen que esperar varios bloques hasta que finalmente son incluidas en la cadena de bloques. Po otro lado, se requieren complejos algoritmos para determinar una estimación de las comisiones a pagar para poder ejecutar las transacciones. Dichos algoritmos, en ocasiones no funcionan del todo bien, por lo que el usuario, frecuentemente paga comisiones excesivas sin necesidad de hacerlo.

Es importante volver a insistir en que la velocidad con la que se ejecuta una transacción depende directamente del tamaño de la comisión a pagar. Es decir, a mayor comisión, mayor velocidad en la ejecución de la transacción. Esto es así, según hemos indicado anteriormente, debido a que los mineros pueden elegir las transacciones con mayor comisión para incluirlas en los nuevos bloques minados. Recordemos que los mineros en Ethereum 1.0, cuando crean un nuevo bloque, perciben una recompensa fija o estática por crear el nuevo bloque (static block reward), cuyo valor en la actualidad asciende a 2 ETH, además de recibir las comisiones que los usuarios han pagado para ejecutar las transacciones incluidas en el nuevo bloque (Txn fees), cuyo monto es variable para cada bloque, por lo que, a la hora de crear nuevos bloques con transacciones, a los mineros les interesa incluir las transacciones con una mayor comisión asociada.

Las wallets, como Metamask, tienen herramientas para determinar una estimación de la comisión que el usuario debería pagar para poder ejecutar una transacción, en función de la rapidez con la que quiera ser ejecutada. Pero debemos recalcar, que son estimaciones realizadas tomando como base la información relativa a los últimos bloques minados en la red, y que como tales, pueden fallar, ya que el volumen de transacciones a ejecutar en la red no es constante en el tiempo, pudiendo sufrir picos de demanda en cualquier momento. Como consecuencia, una vez lazada la transacción, puede que la rapidez con la que en realidad se ejecute difiera bastante con la estimación inicial realizada.

Vamos a ver, con un ejemplo práctico sencillo, lo anteriormente explicado. Supongamos que un usuario, llamado Javier, quiere transferir 0,001 ETH (1,47$ al cambio en el momento de escribir el artículo) a otro usuario, llamado Antonio, en la mainnet de Ethereum 1.0. Para ello, Javier utiliza la wallet Metamask, la cual le indica que si quiere que su transacción se ejecute rápidamente, debe pagar de comisión 0,00212 ETH. Si quiere que la transacción se ejecute con una rapidez media, debe pagar de comisión 0,00189 ETH. Y si no tiene prisa y no le importa que la transacción tarde en ejecutarse, debe pagar de comisión 0,00176 ETH (Figura 1).

EIP-1559 Transaction Fee Metamask

Figura 1: estimación del coste de la comisión realizada por Metamask. Fuente

En cualquiera de los tres casos, la comisión estimada por Metamask a pagar, supera el valor a transferir en la transacción (0,001 ETH), y además, como veremos a continuación, en ningún momento, Javier tiene la plena certeza que las estimaciones se cumplan en la realidad, una vez lanzada la transacción.

Supongamos que Javier tiene muchísima prisa en realizar el pago de 0,001 ETH a Antonio, y necesita que su transacción sea incluida en el siguiente nuevo bloque a crear. Para ello, decide pagar una comisión de 0,00212 ETH, es decir, la más alta que le propone Metamask, y con un valor superior en ETH al propio transferido en la transacción. Al mismo tiempo que Javier realiza la transacción, un gran numero de usuarios de la mainnet de Ethereum 1.0, pagan por realizar sus transacciones una comisión de  0,00213 ETH. El minero encargado de proponer el siguiente bloque, selecciona las transacciones con las tasas más altas para ganar la máxima cantidad de ETH posible, por lo que si las transacciones con unas comisiones de 0,00213 ETH son superiores a las transacciones que caben en el bloque, la transacción de Javier no se llegará a incluir en el siguiente nuevo bloque, y puede que tampoco en los siguientes próximos bloques, por la misma razón que la explicada anteriormente.

En el ejemplo indicado, el perjuicio que implica tal situación a Javier puede parecer que no sea muy importante a nivel económico, pero pongámonos en el caso de las transacciones que se realizan en el ecosistema DeFi, en el cual se mueven millones de dólares todos los días, y en el que el hecho de que las ejecuciones de las transacciones no se realicen en los tiempos estimados por los usuarios, pueden arruinar el objetivo de dichas transacciones, pudiendo hacer perder a los usuarios grandes cantidades de dinero.

Como consecuencia de lo anterior, en la actualidad, en la mainnet de Ethereum 1.0, los usuarios que necesitan que sus transacciones se ejecuten rápidamente, llegan a pagar incluso mayores comisiones que las propuestas por las wallets, al no fiarse de sus estimaciones, haciendo que se produzca una espiral de aumento de las comisiones difícilmente gestionable, y que perjudica a la mayoría de los usuarios finales del ecosistema.

Conocedores del gran problema que supone el actual sistema de gestión de comisiones implementado en Ethereum 1.0, los desarrolladores y usuarios que forman la comunidad de Ethereum, están buscando continuamente sistemas que mejoren el actual, de tal forma que se consiga un sistema que permita hacer a la plataforma de Ethereum mas usable y atractiva para las actuales y las futuras DApps a desarrollar.

En este contexto, surge la iniciativa «EIP-1559: Fee market change for ETH 1.0 chain», la cual pasamos a explicar en el siguiente apartado del presente artículo.

¿Qué aporta el EIP-1559?

EIP-1559 (Ethereum Improvement Proposal 1559) es una propuesta de mejora del protocolo de Ethereum que fue anunciada el 13 de abril de 2019 por Vitalik ButerinEric ConnerRick DudleyMatthew SlipperIan NordenAbdelhamid Bakhta, y cuyo principal objetivo es crear un nuevo sistema de comisiones, mas eficiente que el actual, para Ethereum 1.0. Su estado actual es «Review», es decir, la propuesta está siendo discutida por la comunidad (desarrolladores, mineros, usuarios, etc) y debe ser aceptada para que finalmente pueda ser implementada en un futuro, mediante un hardfork en la cadena de bloques.

Para ello, el EIP-1559 propone dos novedades fundamentales respecto al sistema actual de comisiones. Por un lado, propone usar una comisión fija por bloque «base fee», que posteriormente será quemada. Dicha «base fee» es la comisión mínima, a pagar por el usuario, para poder ejecutar una transacción en la red. Por otro lado, propone que el tamaño de los bloques pueda ser dinámico con el fin de poder absorber la demanda puntual de transacciones a ejecutar que puede haber en momentos determinados en la red.

Respecto a la primera novedad, hay que destacar, tal y como hemos comentado en el apartado anterior, que en el sistema actual de comisiones implementado en Ethereum 1.0, la cuantía de las comisiones a pagar por ejecutar una transacción, varía en función de lo que los usuarios estén dispuestos a pagar por ejecutarlas, ya que los mineros pueden seleccionar las transacciones que estimen oportunas, eligiendo principalmente las que tienen una mayor cantidad de comisión asociada.

El EIP-1559 propone acabar con este sistema de comisiones variables, proponiendo una comisión fija «base fee» por bloque, la cual no irá al minero, sino que será quemada por el propio protocolo. El valor de la «base fee» se incluirá en la cabecera de cada nuevo bloque creado. Dicha comisión base podrá aumentarse o disminuirse por cada bloque, en función de una fórmula en la que intervienen el gas usado y el gas objetivo «gas limit» del bloque padre. De esta forma, cuando los nuevos bloques superen el «gas limit», la «base fee» aumentará, y cuando los nuevos bloques se queden por debajo del «gas limit», la «base fee» disminuirá. Es decir, la «base fee» se ajustará en función de lo congestionada que esté la red en cada momento. Si la red está muy congestionada la «base fee» aumentará ligeramente, y cuando la red esté poco congestionada, la «base fee» disminuirá ligeramente.

Además de lo anterior, el EIP-1559 incluye el concepto de «inclusion fee» o «gas premium», el cual determina la comisión que el usuario está dispuesto a pagar como propina para incentivar a los mineros a que incluyan las transacciones en los bloques y a que no dejen los nuevos bloques minados vacíos de transacciones. El concepto de «gas premium» se incluirá como un nuevo campo en la propia transacción.

Por último, el EIP-1559, también incluye el concepto de «max fee» o «feecap», el cual determina la comisión máxima que está dispuesto a pagar un usuario por ejecutar una transacción. Dicho concepto también se incluye como un nuevo campo dentro de  cada transacción. La diferencia entre «feecap» y «base fee»+»gas premium» es devuelta al usuario que origina la transacción.

Como consecuencia de lo anteriormente explicado, los mineros, con el nuevo sistema que propone el EIP-1559, obtendrían las recompensas fijas o estáticas por crear los nuevos bloques «static block reward», más las «gas premium». En ningún caso, los mineros se quedarán con las «base fee», las cuales, como hemos indicado, serán quemadas por el protocolo. Este hecho da seguridad al protocolo, ya que se elimina la posibilidad de que, por un lado, los mineros puedan rellenar los bloques con transacciones propias para mantener el «base fee» alto, y por otro lado, de que pueda haber usuarios que intenten pagar a los mineros fuera de la cadena (off-chain) para incluir sus transacciones dentro de la cadena (off-chain) con una baja comisión.

Otra consecuencia, es que las wallets podrán predecir con bastante exactitud las comisiones que los usuarios deberán pagar por ejecutar sus transacciones, incluso en periodos de alta volatilidad en el sistema, en cuanto a demanda se refiere, ya que los cambios en la «base fee» que se pueden dar de un bloque a otro son predecibles.

Respecto a la segunda novedad, hay que indicar que, en la actualidad, Ethereum 1.0 implementa un sistema que no tiene un mecanismo que permita ajustar el tamaño del bloque, haciéndolo más grande o pequeño, para satisfacer las diferencias de demanda que se producen bloque por bloque. El tamaño del bloque viene determinado por el parámetro «gas limit», el cual indica el límite máximo de unidades de gas de todas las transacciones que contienen los bloques. Dicho valor, es aproximadamente, en la actualidad, de 12,5 millones de unidades de gas. Esto puede provocar situaciones (las más) en las que la red se congestiona y no es capaz de ejecutar con eficiencia todas las transacciones pendientes, y en otras ocasiones (las menos), en las que no hay mucha demanda de transacciones, y se pueden minar bloques que están parcialmente vacíos de transacciones.

El EIP-1559 propone que el tamaño de los bloques creados pueda ser dinámico, pudiendo variar el valor que toma el parámetro «gas limit» en cada uno de los bloques, de tal forma que puedan absorber picos de congestión en la red por el alto volumen de demanda de ejecución de transacciones en un momento determinado. De esta forma, se propone que el tamaño del bloque pueda llegar a duplicarse con un «gas limit» de 25 millones de unidades de gas.

Además de todo lo anterior, la implementación del EIP-1559 conlleva unas consideraciones de seguridad que no vamos a abarcar en el presente artículo, pero que invitamos al lector a profundizar a través del siguiente enlace.