Quise tomar este curso apenas salio pero me di cuenta que necesitaba aprender más antes de continuar, y uffff alfin casi por terminar, tengo un par de aportes:
-
Sobre el cálculo de memoryCost en la línea 32 de la clase Memory: En mi entendimiento el argumento de memoryCost deberia ser (offset+BigInt(1)), osea se le deberia sumar 1 (un) espacio único de memoria, todos los espacios equivalen a 32 bytes. En la funcion memoryCost a esta suma (offset+BigInt(1)) se le multiplica por 32.
-
Para el cálculo del gas en SLOAD: Debemos identificar si un valor se ha accedido previamente en la misma transacción (acceso caliente♨️) o si es la primera vez (acceso frío❄️) esto permite ajustar el gas consumido de manera dinámica: 2100 gas para el primer acceso y 100 de gas para accesos subsiguientes. Implementé una estructura de datos tipo Map<BigInt, BigInt> dentro del contexto de ejecución para este propósito. Si el valor se encuentra en el map, se consume 100 de gas; de lo contrario, se registra el acceso y se consume 2100 de gas.
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?