-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathinterface.sol
More file actions
56 lines (38 loc) · 1.3 KB
/
Copy pathinterface.sol
File metadata and controls
56 lines (38 loc) · 1.3 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
// SPDX-License-Identifier: MIT
pragma solidity ^0.8;
interface Ibank {
function getblance() external view returns (uint256);
function deposit() external payable ;
function withdraw( uint256 _value)external;
}
contract Bank is Ibank{
mapping (address => uint256) public balances;
function getblance() external view returns (uint256){
return balances[msg.sender];
}
function deposit() external payable {
require(msg.value>0,"deposit amount must great than 0");
balances[msg.sender]+= msg.value;
}
function withdraw( uint256 _value)external {
require(_value<=balances[msg.sender], "NO balance");
balances[msg.sender]-=_value;
payable(msg.sender).transfer(_value);
}
}
contract BankUser{
receive() external payable { }
fallback() external payable { }
function getUserBlance(address ads) external view returns (uint256) {
Bank b=Bank(ads);
return b.getblance();
}
function User_withdraw_Bank(address ads,uint amount) external payable{
Bank b=Bank(ads);
b.withdraw(amount);
}
function deposit_in_bank(address ads) external payable {
Bank b=Bank(ads);
b.deposit{value:msg.value}();
}
}