Професионална програма
Loading...
AntonTakov avatar AntonTakov 0 Точки

Здравейте имам въпрос относно домашното.Интересува ме как идват парите за закупуване на сървиса и баланса на контракта дали се увеличва автоматично.

Интересува ме как идват парите за закупуване на сървиса и баланса на контракта дали се увеличва автоматично или трябва ръчно да се увеличи в метода за покупка на сървиса.

 

мойто текущо състояние на решението е:

pragma solidity ^0.4.19;
contract ServiceByer {
    address owner;
    uint lastbye=0;
    uint lastwithdraw=0;
    mapping (address => uint) public registrantsPaid;
    
    event ConfirmByeService(address indexed to,bool sucsses,uint moneyback);
    
    function ServiceByer() public{
        owner=msg.sender;
    }
    modifier onlyOwner {
        require(msg.sender==owner);
        _;
    }
    modifier canByeService {
        require(now-lastbye>=2 minutes);
        _;
    }
    
     modifier canWithdraw {
        require(now-lastwithdraw>=1 hours);
        _;
    }
    
    function() public payable{
    }
    
    function withdraw() onlyOwner canWithdraw public {
       lastwithdraw=now;
       if (this.balance>5 ether)
       {
           owner.transfer(5 ether);
       }
       else
       {
           owner.transfer(this.balance);
       }
        
    }
    
    function byeService() canByeService payable public {
        require(msg.value>=1 ether);

        lastbye=now;
        registrantsPaid[msg.sender] =1 ether;
        if (msg.value>1 ether)
        {
            msg.sender.transfer(msg.value-1 ether);
            ConfirmByeService(msg.sender,true,msg.value-1 ether);
        }
        else
        {
            ConfirmByeService(msg.sender,true,0);
        }
    }
}

Тагове:
0
Smart Contract Development with Solidity 14/02/2018 11:55:02
desimira avatar desimira 3 Точки

А това, че owner-а може да тегли максимум 5 ETH наведнъж, не означава ли, че може да иска и по-малко да изтегли? Тоест в баланса си пак може да има 5 ETH или повече, но да иска да изтегли само 3 ETH, наприемр. И не трябва ли тогава в Withdraw функцията да се подава аргумент за стойността на ETH, които иска да изтегли? Аз така я правя, но пък тогава имам друга драма laugh

0
14/02/2018 18:31:09
itzo.nik avatar itzo.nik 0 Точки

Би трябвало макс-а, който може да изтегли да е 5. Тоест ако има 13, да може да изтегли само 5 и да трябва да чака час.

Няма смис да се разбиват реално тегленията, защото за всяка транзакция се плаща.

0