Lição 3

Técnicas de optimización de gas con Remix

Es fundamental practicar ahora que domina algunos enfoques fundamentales de optimización del almacenamiento. Participe en los ejemplos ofrecidos y experimente creando los suyos propios. En la siguiente sesión, profundizaremos en la optimización de la visibilidad de funciones y la reutilización de código con bibliotecas. Tenga en cuenta que la optimización es tanto un arte como una ciencia. ¡Continúa experimentando!

Optimización del almacenamiento

La mayoría de los gastos de gas de Ethereum se concentran en el almacenamiento. Cada operación que cambia el estado (almacenamiento) de la red Ethereum suele ser costosa. Como resultado, concentrarse en cómo se conservan y se puede acceder a los datos puede generar importantes reducciones de costos. En esta sesión, veremos algunas formas de optimizar el almacenamiento con Remix.

¿Por qué es caro el almacenamiento?

La cadena de bloques Ethereum proporciona almacenamiento permanente. Todo lo guardado en la cadena de bloques estará disponible mientras la cadena de bloques sobreviva, pero esta permanencia tiene un costo. La optimización del almacenamiento no solo reduce los costos sino que también garantiza que el estado global de Ethereum se utilice de manera eficiente.

Variables de almacenamiento de embalaje

Introducción

Solidity almacena variables en ranuras. Cada ranura tiene 32 bytes. Cuando las variables caben en una sola ranura, se pueden leer o actualizar con una sola operación SLOAD o SSTORE, respectivamente.

Ejemplo

Consideremos dos contratos:

Solidez 
 // Sin optimización 
 pragma solidez ^0.8.9; 

 contratos de almacenamiento no optimizado {
    uint256 public value1;
    uint256 public value2;
}
Solidez 
 // Con optimización 
 pragma solidez ^0.8.9; 

 contratos de almacenamiento optimizado {
    uint128 public value1;
    uint128 public value2;
}
  1. Implemente ambos contratos en Remix y observe las diferencias de gas al interactuar con sus variables.

  2. En la versión optimizada, tanto value1 como value2 comparten una única ranura de 32 bytes.

Reutilización de ranuras de almacenamiento

Introducción

Cuando haya terminado con una ranura de almacenamiento, especialmente el almacenamiento de datos temporal, puede eliminar o poner a cero la ranura para obtener un reembolso de gasolina.

Ejemplo

Solidez 
 pragma solidez ^0.8.9; 

 contrato RefundExample { 
 uint256 public temporalData; 

 función storeTemporaryData(uint256 datos) público {
        temporaryData = data;
    }

    función clearTemporaryData() público {
        delete temporaryData;
    }
}
  1. Implemente este contrato en Remix.

  2. Almacene algunos datos temporales y luego bórrelos.

  3. Consulta el costo del gas. Observe el reembolso de gasolina que recibe por la operación delete .

Uso de eventos en lugar de almacenamiento para datos históricos

Introducción

Si no es necesario acceder a los datos en cadena, considere registrarlos como un evento en lugar de almacenarlos. Los eventos son mucho más baratos que las operaciones de almacenamiento.

Ejemplo

Solidez 
 pragma solidez ^0.8.9; 

 contrato EventExample { 
 evento DataStored(uint256 datos); 

 función storeData (datos uint256) público {
        emit DataStored(data);
    }
}
  1. Implemente e interactúe con el contrato en Remix.

  2. Tenga en cuenta los costos de gas más baratos en comparación con el almacenamiento.

Mirando hacia el futuro

Es fundamental practicar ahora que domina algunos enfoques fundamentales de optimización del almacenamiento. Participe en los ejemplos ofrecidos y experimente creando los suyos propios. En la siguiente sesión, profundizaremos en la optimización de la visibilidad de funciones y la reutilización de código con bibliotecas. Tenga en cuenta que la optimización es tanto un arte como una ciencia. ¡Continúa experimentando!

Exclusão de responsabilidade
* O investimento em criptomoedas envolve riscos significativos. Prossiga com cuidado. O curso não pretende ser um conselho de investimento.
* O curso é criado pelo autor que se juntou ao Gate Learn. Qualquer opinião partilhada pelo autor não representa o Gate Learn.
Catálogo
Lição 3

Técnicas de optimización de gas con Remix

Es fundamental practicar ahora que domina algunos enfoques fundamentales de optimización del almacenamiento. Participe en los ejemplos ofrecidos y experimente creando los suyos propios. En la siguiente sesión, profundizaremos en la optimización de la visibilidad de funciones y la reutilización de código con bibliotecas. Tenga en cuenta que la optimización es tanto un arte como una ciencia. ¡Continúa experimentando!

Optimización del almacenamiento

La mayoría de los gastos de gas de Ethereum se concentran en el almacenamiento. Cada operación que cambia el estado (almacenamiento) de la red Ethereum suele ser costosa. Como resultado, concentrarse en cómo se conservan y se puede acceder a los datos puede generar importantes reducciones de costos. En esta sesión, veremos algunas formas de optimizar el almacenamiento con Remix.

¿Por qué es caro el almacenamiento?

La cadena de bloques Ethereum proporciona almacenamiento permanente. Todo lo guardado en la cadena de bloques estará disponible mientras la cadena de bloques sobreviva, pero esta permanencia tiene un costo. La optimización del almacenamiento no solo reduce los costos sino que también garantiza que el estado global de Ethereum se utilice de manera eficiente.

Variables de almacenamiento de embalaje

Introducción

Solidity almacena variables en ranuras. Cada ranura tiene 32 bytes. Cuando las variables caben en una sola ranura, se pueden leer o actualizar con una sola operación SLOAD o SSTORE, respectivamente.

Ejemplo

Consideremos dos contratos:

Solidez 
 // Sin optimización 
 pragma solidez ^0.8.9; 

 contratos de almacenamiento no optimizado {
    uint256 public value1;
    uint256 public value2;
}
Solidez 
 // Con optimización 
 pragma solidez ^0.8.9; 

 contratos de almacenamiento optimizado {
    uint128 public value1;
    uint128 public value2;
}
  1. Implemente ambos contratos en Remix y observe las diferencias de gas al interactuar con sus variables.

  2. En la versión optimizada, tanto value1 como value2 comparten una única ranura de 32 bytes.

Reutilización de ranuras de almacenamiento

Introducción

Cuando haya terminado con una ranura de almacenamiento, especialmente el almacenamiento de datos temporal, puede eliminar o poner a cero la ranura para obtener un reembolso de gasolina.

Ejemplo

Solidez 
 pragma solidez ^0.8.9; 

 contrato RefundExample { 
 uint256 public temporalData; 

 función storeTemporaryData(uint256 datos) público {
        temporaryData = data;
    }

    función clearTemporaryData() público {
        delete temporaryData;
    }
}
  1. Implemente este contrato en Remix.

  2. Almacene algunos datos temporales y luego bórrelos.

  3. Consulta el costo del gas. Observe el reembolso de gasolina que recibe por la operación delete .

Uso de eventos en lugar de almacenamiento para datos históricos

Introducción

Si no es necesario acceder a los datos en cadena, considere registrarlos como un evento en lugar de almacenarlos. Los eventos son mucho más baratos que las operaciones de almacenamiento.

Ejemplo

Solidez 
 pragma solidez ^0.8.9; 

 contrato EventExample { 
 evento DataStored(uint256 datos); 

 función storeData (datos uint256) público {
        emit DataStored(data);
    }
}
  1. Implemente e interactúe con el contrato en Remix.

  2. Tenga en cuenta los costos de gas más baratos en comparación con el almacenamiento.

Mirando hacia el futuro

Es fundamental practicar ahora que domina algunos enfoques fundamentales de optimización del almacenamiento. Participe en los ejemplos ofrecidos y experimente creando los suyos propios. En la siguiente sesión, profundizaremos en la optimización de la visibilidad de funciones y la reutilización de código con bibliotecas. Tenga en cuenta que la optimización es tanto un arte como una ciencia. ¡Continúa experimentando!

Exclusão de responsabilidade
* O investimento em criptomoedas envolve riscos significativos. Prossiga com cuidado. O curso não pretende ser um conselho de investimento.
* O curso é criado pelo autor que se juntou ao Gate Learn. Qualquer opinião partilhada pelo autor não representa o Gate Learn.