github.com/shyftnetwork/go-empyrean@v1.8.3-0.20191127201940-fbfca9338f04/shyft-config/shyft-cli/web3/transfer-through-master/contracts/Transfers.sol (about) 1 pragma solidity ^0.4.19; 2 3 import "./Transfers2.sol"; 4 5 contract Transfers { 6 mapping (address => uint) public balance; 7 Transfers2 t; 8 address t_addr; 9 10 function Transfers() public { 11 t = new Transfers2(); 12 t_addr = address(t); 13 } 14 15 function transfer(address _addr, uint _value) public { 16 require(balance[msg.sender] >= _value); 17 bytes4 sig = bytes4(keccak256("transfer(address)")); 18 t_addr.call.value(_value)(sig, _addr); 19 } 20 21 function myBalance() public returns (uint) { 22 return balance[msg.sender]; 23 } 24 25 function deposit() public payable returns (uint) { 26 balance[msg.sender] += msg.value; 27 return balance[msg.sender]; 28 } 29 30 function withdraw(address _addr, uint _value) public { 31 require(balance[msg.sender] >= _value); 32 balance[msg.sender] -= _value; 33 _addr.transfer(_value); 34 } 35 36 function withdrawMulti(address[] _addrs, uint _value) public { 37 uint l = _addrs.length; 38 require(balance[msg.sender] >= _value * l); 39 balance[msg.sender] -= _value * l; 40 for (uint i = 0; i < l; i++){ 41 _addrs[i].transfer(_value); 42 } 43 } 44 }