Bucles y gas en Solidity
Cada pasada cuesta gas; los arreglos acotados mantienen el bucle honesto.
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.24;
// Loops cost gas per pass, so bounded arrays keep them honest.
contract WeighStation {
uint256[] public cratesKg;
function log(uint256 kg) external {
cratesKg.push(kg);
}
function total() external view returns (uint256 sum) {
uint256 n = cratesKg.length;
for (uint256 i = 0; i < n; i++) {
sum += cratesKg[i]; // named return accumulates
}
}
function heaviest() external view returns (uint256 best) {
for (uint256 i = 0; i < cratesKg.length; i++) {
if (cratesKg[i] > best) best = cratesKg[i];
}
}
}
Cómo funciona
- Cachear
lengthantes del bucle ahorra lecturas repetidas. - Un retorno nombrado como
uint256 sumacumula directo. - El crecimiento sin cota encarece
total()con cada push.
Palabras clave y builtins usados aquí
contractexternalforfunctionifpublicreturnsuint256
El intento, en números
- Líneas
- 24
- Caracteres a escribir
- 560
- Tokens
- 126
- Ritmo de tres estrellas
- 60 tpm
Al ritmo de tres estrellas de 60 tokens por minuto, este intento toma unos 126 segundos.
Paso 2 de 3 en Datos y gas; paso 15 de 28 en Fundamentos del lenguaje.