En el espíritu de ¿Existen patrones de almacenamiento sencillos y bien resueltos para Solidity? ...
¿Existen prácticas conocidas y probadas en batalla sobre cómo tratar los errores en grandes bases de código de Solidity?
Es común en la ingeniería de software tener una colección clara de nombres, códigos y descripciones de errores, generalmente implementados a través de enumeraciones. El único proyecto que he visto que se adhiere a esta versión rigurosa del manejo de errores es Compound , pero debe haber más. El código base de Compound es grande y está entretejido con otras sutilezas, como scripts de verificación formales, por lo que no es estrictamente la mejor implementación a la que referirse al responder esta pregunta.
// SPDX-License-Identifier: UNLICENSED
pragma solidity ^0.8.4;
error Unauthorized();
contract VendingMachine {
address payable owner = payable(msg.sender);
function withdraw() public {
if (msg.sender != owner) {
revert Unauthorized();
}
owner.transfer(address(this).balance);
}
// ...
}
Observe la nueva y brillante error
declaración en la línea 4. Este es un cambio de juego para Solidity: es más fácil trabajar con él, más eficiente en el consumo de combustible y más elegante que las cadenas de razón revertidas.
mikko ohtamaa
Pablo Razvan Berg
mikko ohtamaa
Pablo Razvan Berg