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;
   }
}