typestar

Errores tipados en Solidity

Contexto con tipos, más barato que los strings de revert.

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.24;

// Custom errors carry typed context and cost less than strings.
contract PlotAssigner {
    error PlotTaken(uint256 plot, address holder);
    error OverLimit(uint256 requested, uint256 max);

    uint256 public constant MAX_PER_MEMBER = 2;
    mapping(uint256 => address) public holder;
    mapping(address => uint256) public held;

    function claim(uint256 plot) external {
        if (holder[plot] != address(0)) {
            revert PlotTaken(plot, holder[plot]);
        }
        if (held[msg.sender] >= MAX_PER_MEMBER) {
            revert OverLimit(held[msg.sender] + 1, MAX_PER_MEMBER);
        }
        holder[plot] = msg.sender;
        held[msg.sender] += 1;
    }
}

Cómo funciona

  1. Dos errores cargan la parcela, el titular y los límites.
  2. revert PlotTaken(plot, holder[plot]) nombra el conflicto.
  3. Constantes como MAX_PER_MEMBER documentan la política.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
23
Caracteres a escribir
640
Tokens
132
Ritmo de tres estrellas
55 tpm

Al ritmo de tres estrellas de 55 tokens por minuto, este intento toma unos 144 segundos.

Escribe este fragmento

Paso 3 de 3 en Guardas; paso 10 de 28 en Fundamentos del lenguaje.

← Anterior Siguiente →