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
require(cond, "msg")revierte la llamada entera al fallar.error PressBusy(address)declara un fallo tipado.revert PressBusy(holder)devuelve contexto barato.
Palabras clave y builtins usados aquí
addresscontractexternalfunctionifpublicrequire
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.
Paso 1 de 3 en Guardas; paso 8 de 28 en Fundamentos del lenguaje.