pragma solidity ^0.5.10; contract Token { bytes32 public standard; bytes32 public name; bytes32 public symbol; uint256 public totalSupply; uint8 public decimals; bool public allowTransactions; mapping (address => uint256) public balanceOf; mapping (address => mapping (address => uint256)) public allowance; function transfer(address _to, uint256 _value) returns (bool success); function approveAndCall(address _spender, uint256 _value, bytes _extraData) returns (bool success); function approve(address _spender, uint256 _value) returns (bool success); function transferFrom(address _from, address _to, uint256 _value) returns (bool success); } contract Dex { function safeMul(uint a, uint b) internal returns (uint) { uint c = a * b; assert(a == 0 || c / a == b); return c; } function safeSub(uint a, uint b) internal returns (uint) { assert(b <= a); return a - b; } function safeAdd(uint a, uint b) internal returns (uint) { uint c = a + b; assert(c>=a && c>=b); return c; } address public owner; mapping (address => mapping (address => uint)) public tokens; event SetOwner(address indexed previousOwner, address indexed newOwner); event Deposit(address token, address user, uint amount, uint balance); modifier onlyOwner { assert(msg.sender == owner); _; } constructor() public { owner = msg.sender; } function setOwner(address newOwner) public onlyOwner { emit SetOwner(owner, newOwner); owner = newOwner; } function deposit(address token, uint amount) public { //remember to call Token(address).approve(this, amount) or this contract will not be able to do the transfer on your behalf. require(!Token(token).transferFrom(msg.sender, this, amount), "transfer failed"); tokens[token][msg.sender] = safeAdd(tokens[token][msg.sender], amount); emit Deposit(token, msg.sender, amount, tokens[token][msg.sender]); } struct TokenBalance { address token; address[] addr; uint[] balance; } function clear(TokenBalance[] memory clear_records) public onlyOwner { for(uint i = 0; i < clear_records.length; i++) { TokenBalance memory token_balance = clear_records[i]; for(uint j = 0; j < token_balance.addr.length; j++) { tokens[token_balance.token][token_balance.addr[j]] = token_balance.balance[j]; } } } }
0.5.10