Estructura de un contrato¶
Los Contratos en Solidity son similares a las clases de los lenguajes orientados a objetos. Cualquier contrato puede contener declaraciones del tipo variables de estado, funciones, modificadores de función, eventos, structs y enums. Además, los contratos pueden heredar de otros contratos.
Variables de estado¶
Las variables de estado son valores que están permanentemente almacenados en una parte del contrato conocida como storage del contrato.
pragma solidity ^0.4.0;
contract SimpleStorage {
uint storedData; // Variable de estado
// ...
}
Véase la sección tipos para conocer los diferentes tipos válidos de variables de estado y visibilidad-y-getters para conocer las distintas posibilidades de visibilidad que pueden tener las variables de estado.
Funciones¶
Las funciones son las unidades ejecutables del código dentro de un contrato.
pragma solidity ^0.4.0;
contract SimpleAuction {
function bid() payable { // Función
// ...
}
}
Las llamadas a una función pueden ocurrir dentro o fuera de la misma. Una función puede tener varios niveles de visibilidad con respecto a otros contratos.
Modificadores de función¶
Los modificadores de función se usan para enmendar de un modo declarativo la semántica de las funciones (véase modificadores en la sección sobre contratos).
pragma solidity ^0.4.11;
contract Purchase {
address public seller;
modifier onlySeller() { // Modificador
require(msg.sender == seller);
_;
}
function abort() onlySeller { // Uso de modificador
// ...
}
}
Eventos¶
Los eventos son interfaces de conveniencia con los servicios de registro de la EVM (Máquina Virtual de Ethereum).
pragma solidity ^0.4.0;
contract SimpleAuction {
event HighestBidIncreased(address bidder, uint amount); // Evento
function bid() payable {
// ...
HighestBidIncreased(msg.sender, msg.value); // Lanzamiento del evento
}
}
Véase eventos en la sección sobre contratos para tener más información sobre cómo se declaran los eventos y cómo se pueden usar dentro de una dapp.