pragma solidity ^0.4.23;
|
|
|
|
contract Accounts {
|
|
|
|
mapping(address => Account) accounts;
|
|
|
|
struct Account {
|
|
address ID;
|
|
int64 Balance;
|
|
bytes32[] History;
|
|
}
|
|
|
|
event BalanceUpdated(address sender, address receiver, int64 value);
|
|
|
|
function updateBalance(address _receiver, int64 _value) public {
|
|
// check if balance of _sender is under the limit
|
|
require(accounts[msg.sender].Balance - _value > -100, "too much negative balance");
|
|
// substract _value from _sender account
|
|
accounts[msg.sender].Balance = accounts[msg.sender].Balance - _value;
|
|
// add _value to _receiver account
|
|
accounts[_receiver].Balance = accounts[_receiver].Balance + _value;
|
|
|
|
// add transaction to history of sender and receiver accounts
|
|
|
|
// emit BalanceUpdated
|
|
emit BalanceUpdated(msg.sender, _receiver, _value);
|
|
|
|
}
|
|
function getBalance(address _address) public view returns (int64) {
|
|
return accounts[_address].Balance;
|
|
}
|
|
}
|