Учебники

Ethereum — Разработка MyContract

Мы назовем наш контракт MyContract как в следующей декларации —

contract MyContract {

Мы объявим две переменные следующим образом:

uint amount;
uint value;

Переменная сумма будет содержать накопленные деньги, отправленные исполнителями договора создателю договора. Поле значения будет содержать стоимость контракта. Когда исполнители исполняют контракт, поле значения будет изменено, чтобы отразить сбалансированную стоимость контракта.

В конструкторе контракта мы устанавливаем значения этих двух переменных.

constructor (uint initialAmount, uint initialValue) public {
   amount = 0;
   value = 1000;
}

Поскольку изначально сумма, собранная по контракту, равна нулю, мы устанавливаем в поле суммы значение 0. Мы устанавливаем в качестве значения контракта произвольное число, в данном случае это 1000. Создатель контракта принимает решение об этом значении.

Чтобы проверить собранную сумму в любой момент времени, мы предоставляем метод публичного контракта getAmount, определенный следующим образом:

function getAmount() public view returns(uint) {
   return amount;
}

Чтобы получить сбалансированную стоимость контракта в любой момент времени, мы определяем метод getBalance следующим образом:

function getBalance() public view returns(uint) {
   return value;
}

Наконец, мы пишем метод контракта (Отправить) . Это позволяет клиентам отправлять деньги создателю контракта —

function send(uint newDeposit) public {
   value = value - newDeposit;
   amount = amount + newDeposit;
}

Выполнение метода send изменяет поля стоимости и суммы контракта.

Полный код договора приведен ниже —