Ethereum - Разработка MyContract
Назовем наш договор MyContract как в следующем объявлении -
contract MyContract {
Мы объявим две переменные следующим образом -
uint amount;
uint value;
Переменная amountбудет удерживать накопленные деньги, отправленные исполнителями контракта создателю контракта. Вvalueполе будет содержать стоимость контракта. По мере исполнения исполнителями договораvalue поле будет изменено, чтобы отразить сбалансированную стоимость контракта.
В конструкторе контракта мы устанавливаем значения этих двух переменных.
constructor (uint initialAmount, uint initialValue) public {
amount = 0;
value = 1000;
}
Поскольку изначально сумма, собранная по контракту, равна нулю, мы устанавливаем amount в 0. Устанавливаем договор value до некоторого произвольного числа, в данном случае это 1000. Это значение определяет создатель контракта.
Чтобы проверить собранную сумму в любой момент времени, мы предоставляем метод публичного контракта, называемый getAmount определяется следующим образом -
function getAmount() public view returns(uint) {
return amount;
}
Чтобы получить сбалансированную стоимость контракта в любой момент времени, мы определяем getBalance метод следующим образом -
function getBalance() public view returns(uint) {
return value;
}
Наконец, мы пишем контрактный метод (Send). Это позволяет клиентам отправлять деньги создателю контракта -
function send(uint newDeposit) public {
value = value - newDeposit;
amount = amount + newDeposit;
}
Выполнение send метод изменит оба value и amount поля контракта.
Полный код контракта приведен ниже -
contract MyContract {
uint amount;
uint value;
constructor (uint initialAmount, uint initialValue) public {
amount = 0;
value = 1000;
}
function getBalance() public view returns(uint) {
return value;
}
function getAmount() public view returns(uint) {
return amount;
}
function send(uint newDeposit) public {
value = value - newDeposit;
amount = amount + newDeposit;
}
}