arnaucube
arnaucube/reciprokaPublic Self-hosted repository
reciproka/contracts/accounts.sol
contracts/accounts.solRaw
 1pragma solidity ^0.4.23;
 2
 3contract Accounts {
 4
 5  mapping(address => Account) accounts;
 6
 7  struct Account {
 8    address ID;
 9    int64 Balance;
10    bytes32[] History;
11  }
12
13  event BalanceUpdated(address sender, address receiver, int64 value);
14
15  function updateBalance(address _receiver, int64 _value) public {
16    // check if balance of _sender is under the limit
17    require(accounts[msg.sender].Balance - _value > -100, "too much negative balance");
18    // substract _value from _sender account
19    accounts[msg.sender].Balance = accounts[msg.sender].Balance - _value;
20    // add _value to _receiver account
21    accounts[_receiver].Balance = accounts[_receiver].Balance + _value;
22
23    // add transaction to history of sender and receiver accounts
24
25    // emit BalanceUpdated
26    emit BalanceUpdated(msg.sender, _receiver, _value);
27
28  }
29  function getBalance(address _address) public view returns (int64) {
30    return accounts[_address].Balance;
31  }
32}