clase 12 (solidity deep dive) Flashcards
upgradability
que quiere decir que un contract es inmutable
los contratos en ethereum son inmutables, el address no puede cambiar
upgradability
migracion de contratos
la idea es migrar la logica y el estado a otro set de contratos totalmente nuevos
proxy pattern
usar proxys para upgrades
la data esta en un contrato y la logica en otro
los usuarios llaman al contrato que tiene la logica y este busca los datos en el contrato que guarda la memoria
entonces podemos intercambiar el contrato con la logica por uno nuevo con upgrades
strategy pattern
se crea un contrato principal y este llama a distintas estrategias en otros contratos que se pueden cambiar
el contrato principal delega el trabajo al contrato linkeado con la estrategia definida en vez de ejecutarlo por si mismo
diamond pattern
combina un poco de strategy y proxy
la data se encuentra en un contrato (diamond) mientras que la logica en otro (facets)
cada faceta encapsula su propia funcionalidad
los usuarios llaman al contrato con la data y este hace la delegatecall al contrato que le corresponda
sirve para modularizar
selectors
como sabe ethereum que funcion de un contrato se ejecuta
el contrato carga en memoria los primeros 4 bytes de la tx
estos son un hash de la declaracion de la funcion a ejecutar
storage en ethereum
mapa clave valor donde el storage es un array de 2^251 lugares. cada lugar tiene 32 bytes
no maneja colisiones dentro del storage
las variables se cominenzan a guardar secuencialmente a partir del slot 0
es una memoria virtual
layout storage
para valores estaticos se guarda el valor correspondiente a cada variable en el slot correspondiente
para valores dinamicos se tienen arreglos, mappings y strings
layout in memory
lo mismo que storage pero no persiste entre cada ejecucion
mucho mas barata en terminos de gas que el storage