typestar

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

  1. Cachear length antes del bucle ahorra lecturas repetidas.
  2. Un retorno nombrado como uint256 sum acumula directo.
  3. El crecimiento sin cota encarece total() con cada push.

Palabras clave y builtins usados aquí

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.

Escribe este fragmento

Paso 2 de 3 en Datos y gas; paso 15 de 28 en Fundamentos del lenguaje.

← Anterior Siguiente →