Puedes seguir desde aquí todos los capítulos traducidos, y la documentación original en inglés.

Los contratos en Solidity son similares a las clases en los lenguajes orientados a objetos. Cada contrato puede contener declaraciones de variables de estado, funciones, modificadores de función, eventos, tipos "Struct" y tipos "Enum". Además, los contratos pueden heredar de otros contratos.
Variables de estado
Las variables de estado son valores los cuales están permanentemente en el almacenamiento del contrato.
pragma solidity ^0.4.0;
contract SimpleStorage {
uint storedData; // State variable
// ...
}
Ojea la sección 'Tipos' para ver los tipos de variables de estados válidos así como 'Visibilidad y Accesores' para elecciones de visibilidad.
Funciones
Las funciones son unidades de código ejecutable dentro de un contrato.
pragma solidity ^0.4.0;
contract SimpleAuction {
function bid() payable { // Function
// ...
}
}
Las llamadas de función pueden ocurrir internamente o externamente y tienen diferentes niveles de visibilidad hacia otros contratos.
Modificadores de funciones
Los modificadores de funciones puede ser usados para corregir semática de funciones de una manera declarativa.
pragma solidity ^0.4.0;
contract Purchase {
address public seller;
modifier onlySeller() { // Modifier
if (msg.sender != seller) throw;
_;
}
function abort() onlySeller { // Modifier usage
// ...
}
}
Eventos
Los eventos son interfaces en conveniencia con las facilidades de registro de la Máquina Virtual Ethereum.
pragma solidity ^0.4.0;
contract SimpleAuction {
event HighestBidIncreased(address bidder, uint amount); // Event
function bid() payable {
// ...
HighestBidIncreased(msg.sender, msg.value); // Triggering event
}
}
Mira el apartado Eventos en la sección de contratos para obtener información sobre cómo se declaran evento y pueden ser usados dentro de una dapp.
Tipos Structs
Los structs son tipos personalizados que pueden agruptar muchas variables.
pragma solidity ^0.4.0;
contract Ballot {
struct Voter { // Struct
uint weight;
bool voted;
address delegate;
uint vote;
}
}
Tipos Enum
Los enums pueden ser usados para crear tipos personalizados con un conjunto finito de valores.
pragma solidity ^0.4.0;
contract Purchase {
enum State { Created, Locked, Inactive } // Enum
}