Solidez - Contratos
Contract in Solidity es similar a una clase en C ++. Un contrato tiene las siguientes propiedades.
Constructor - Una función especial declarada con la palabra clave constructor que se ejecutará una vez por contrato y se invoca cuando se crea un contrato.
State Variables - Variables por contrato para almacenar el estado del contrato.
Functions - Funciones por Contrato que pueden modificar las variables de estado para alterar el estado de un contrato.
Cuantificadores de visibilidad
A continuación se muestran varios cuantificadores de visibilidad para funciones / variables de estado de un contrato.
external- Las funciones externas están destinadas a ser llamadas por otros contratos. No se pueden utilizar para llamadas internas. Para llamar a una función externa dentro del contrato, se requiere la llamada this.function_name (). Las variables de estado no se pueden marcar como externas.
public- Las funciones públicas / variables se pueden utilizar tanto de forma externa como interna. Para la variable de estado pública, Solidity crea automáticamente una función getter.
internal - Las funciones internas / variables solo se pueden utilizar internamente o mediante contratos derivados.
private - Las funciones / variables privadas solo se pueden utilizar internamente y ni siquiera mediante contratos derivados.
Ejemplo
pragma solidity ^0.5.0;
contract C {
//private state variable
uint private data;
//public state variable
uint public info;
//constructor
constructor() public {
info = 10;
}
//private function
function increment(uint a) private pure returns(uint) { return a + 1; }
//public function
function updateData(uint a) public { data = a; }
function getData() public view returns(uint) { return data; }
function compute(uint a, uint b) internal pure returns (uint) { return a + b; }
}
//External Contract
contract D {
function readData() public returns(uint) {
C c = new C();
c.updateData(7);
return c.getData();
}
}
//Derived Contract
contract E is C {
uint private result;
C private c;
constructor() public {
c = new C();
}
function getComputedResult() public {
result = compute(3, 5);
}
function getResult() public view returns(uint) { return result; }
function getData() public view returns(uint) { return c.info(); }
}
Ejecute el programa anterior siguiendo los pasos proporcionados en el capítulo Primera aplicación de Solidity. Ejecute varios métodos de contratos. Para E.getComputedResult () seguido de E.getResult () muestra -
Salida
0: uint256: 8