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
alokin avatar alokin 2 Точки

Привет!

Няма нужда да увеличаваш ръчно баланса. Щом имаш payable функция, балансът се увеличава със стойността на транзакцията, с която я викаш. Можеш да си сложиш и една view функция, с която да си проверяваш this.balance:

function getBalance() public view returns (uint) {
    return this.balance;

}

 

 

0
12/02/2018 17:00:26
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
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.