typestar

require y revert en Solidity

Guardas con mensaje, o errores tipados propios.

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

// require guards with a message; custom errors revert cheaper.
contract CiderPress {
    error PressBusy(address holder);

    address public pressHolder;

    function book() external {
        require(msg.sender != address(0), "no ghost bookings");
        if (pressHolder != address(0)) {
            revert PressBusy(pressHolder);
        }
        pressHolder = msg.sender;
    }

    function release() external {
        require(msg.sender == pressHolder, "not the holder");
        pressHolder = address(0);
    }
}

Cómo funciona

  1. require(cond, "msg") revierte la llamada entera al fallar.
  2. error PressBusy(address) declara un fallo tipado.
  3. revert PressBusy(holder) devuelve contexto barato.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
22
Caracteres a escribir
498
Tokens
87
Ritmo de tres estrellas
60 tpm

Al ritmo de tres estrellas de 60 tokens por minuto, este intento toma unos 87 segundos.

Escribe este fragmento

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

← Anterior Siguiente →