Tendencias del momento
#
Bonk Eco continues to show strength amid $USELESS rally
#
Pump.fun to raise $1B token sale, traders speculating on airdrop
#
Boop.Fun leading the way with a new launchpad on Solana.
Cómo en @Alchemy desarrollamos y lanzamos la cuenta inteligente más eficiente en gas en la historia de las cuentas inteligentes. 🕶️
Todo a partir de una idea de hace aproximadamente 3 años.
Poco sabía en ese entonces que esto terminaría ahorrando a los usuarios enormes sumas de dinero.

En mayo de 2023, hubo una locura en Twitter sobre proxies (por ejemplo, ERC1967, clones, etc.)
La gente tenía variables inmutables, pero querían proxies. Esto era imposible de hacer, pero algunos de nosotros aceptamos el desafío. El problema no era el EVM, sin embargo.
Era cómo pensábamos en los proxies.
Así que lo construimos, surgieron múltiples versiones.
El mío y el @wighawag siguieron el mismo concepto: podríamos simplemente agregar los inmutables copiando la porción de memoria designada al final del código de bytes devuelto en la construcción.
El código real era bastante corto y dulce.

(Puedes ver mi antigua implementación que hice por diversión hace 3 años aquí, jaja: )
También había dos formas de acceder a los argumentos inmutables en tiempo de ejecución.
La primera, mi forma, era simplemente leer el bytecode del proxy a partir de un desplazamiento constante. ¡Sencillo!
Solo carga los inmutables en memoria y descodifícalos según el esquema que hayas configurado.
El segundo era mucho más complejo, pero ligeramente más eficiente en gas y muy interesante.
La idea era que agregarías los inmutables a cada llamada que el proxy delegara. Lo que lleva a un acceso inmutable más barato a costa de complejidad y un mayor costo base de gas.
Curiosamente, Solady (la biblioteca que ahora usamos, no uses mi pequeña demostración en producción jeje), originalmente optó por el segundo enfoque.
Pero ahora, todos hemos convergido en la simplicidad, no conozco ninguna inmutable que añada calldata en producción, y Solady opta por el mismo enfoque que utilicé.
¿Entonces, cómo se relaciona esto con las cuentas?
El caso de uso más básico y común de las cuentas inteligentes implica que sean "propiedad" de otro firmante.
Normalmente, harías esto inicializando la cuenta inteligente con la dirección del propietario.
Pero, hermano mío en la cadena, hay una mejor manera.
Probablemente ya lo has averiguado: simplemente añadimos la dirección del firmante al bytecode del proxy.
Sencillo.
Luego, saltamos completamente la inicialización. Fácil. Y la implementación sabe exactamente dónde se encuentra ese propietario en el bytecode (incluso mejor, Solady se encarga de esto por nosotros).
Y voilà, la cuenta inteligente más poderosa jamás construida es ahora, además, más barata que un intercambio de Uniswap.
¿Entonces, qué podemos aprender de esto?

1. Siempre persigue tu curiosidad
Puede que nunca hubiera existido una cuenta inteligente que use esta tecnología si no hubiéramos perseguido esta idea de clones-con-argumentos-inmutables hace años, solo porque nos pareció interesante.
2. Casi siempre hay una solución simple
Cuando no puedes evitar la complejidad, divide la complejidad en partes más pequeñas y simples. Deberías ser capaz de explicar todo tu código a alguien nuevo en la base de código.
Si no puedes, tu solución es casi seguramente demasiado compleja.
3. En realidad, no hay nada que te detenga.
Si tienes una idea sobre cómo mejorar algo, hazlo. No hay nada que te detenga. Pensé que esto podría funcionar, lo intenté y funcionó.
Eres capaz de cosas increíbles si tan solo dejaras de frenarte, anónimo.
¿Tu pila ya es demasiado profunda?
Espero que este hilo haya sido algo interesante.
Si lo encontraste genial, sé un amigo y golpea a tu chico con un me gusta para que pueda llegar a más de 5 personas con mis publicaciones aquí.
Además, los puntos de 😸 referencia
No solo somos baratos en el despliegue...
5,46K
Parte superior
Clasificación
Favoritos