//Write your own contracts here. Currently compiles using solc v0.4.15+commit.bbb8e64f. pragma solidity ^0.4.21; contract Deposit { struct sDepositInfo { uint256 deposit_id; uint256 deposit; } sDepositInfo[] depositArray; mapping(address => uint256) balances; function() public payable { require( msg.value > 0); balances[msg.sender] += msg.value; depositArray.push(sDepositInfo(depositArray.length,msg.value)); } function myBalance() public view returns(uint256) { return balances[msg.sender]; } function totalDepositAmount() public view returns(uint256) { return address(this).balance; } function claim(uint256 _deposit_id) public { require(_deposit_id <= depositArray.length - 1 && _deposit_id == depositArray[_deposit_id].deposit_id && depositArray[_deposit_id].deposit > 0 && balances[msg.sender] >= depositArray[_deposit_id].deposit ); uint256 _deposit = depositArray[_deposit_id].deposit; balances[msg.sender] -= _deposit; depositArray[_deposit_id].deposit = 0; require(msg.sender.send(_deposit)); } }
0.4.21