Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- pragma solidity ^0.5.7;
- contract AlarmClock {
- mapping (address => uint) userComittedMoney;
- mapping (address => address) alarmAddress;
- /*
- Charity hard codded address
- */
- address payable charityAddress = HARD_CODDED_CHARITY_ADDRESS;
- /*
- Money locking function, user will lock money into this contract
- @param _alarmAddress user's alarm address
- */
- function lockMyMoney(address _alarmAddress) public payable{
- userComittedMoney[msg.sender] = msg.value;
- alarmAddress[msg.sender] = _alarmAddress;
- }
- /*
- Spending function, alarm will spend money from contract if
- user failed to wake up on time.
- @param _alarmAddress user's alarm address
- @param _amount amount to be charged from user
- */
- function spend(address _alarmAddress, uint _amount) public{
- require(userComittedMoney[msg.sender] >= _amount && alarmAddress[msg.sender]== _alarmAddress);
- charityAddress.transfer(_amount);
- userComittedMoney[msg.sender]-=_amount;
- }
- /*
- Withdraw money function, if user decided to stop trial, he/she will withdraw the rest
- of the money if exists.
- @param _alarmAddress user's alarm address
- */
- function withdrawMoney(address _alarmAddress) public {
- require(alarmAddress[msg.sender] == _alarmAddress && userComittedMoney[msg.sender]>0);
- msg.sender.transfer(userComittedMoney[msg.sender]);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement