forked from sriharikapu/simply_insured
-
Notifications
You must be signed in to change notification settings - Fork 0
/
BigBank.sol
113 lines (73 loc) · 3.1 KB
/
BigBank.sol
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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
pragma solidity ^0.4.20;
contract SimpleStorage {
uint bank_balance; //The net balance with the bank.
uint credit_limit = 60;
uint current_credit;
uint debit_amount;
uint p2p;
uint time;
mapping(address => uint) balances; //Map of the various users and their account balances
mapping(address => uint) bank_accounts_list; //Map of various users and their balances in the bank
mapping(address => uint) credit_map; // Current credit of user
constructor() payable public {
}
function() payable public {
}
function total_bank_balance_function() public {//Converts the bank balance from wei => ether
address a = address(this);
bank_balance = a.balance / 1000000000000000000;
}
function request_ether_function(address ether_request_address, uint x) public {//User request for ether
uint y = x * 1000000000000000000;
ether_request_address.transfer(y);
bank_accounts_list[ether_request_address] -= y;
balances[ether_request_address] += y;
bank_balance -= y;
}
function print_bank_balance_function() public view returns (uint) {//Call request_ether_function first
return bank_balance;
}
function withdraw_credit(address account_address, uint amount) public returns (uint){
current_credit = account_address.balance / 2;
if (credit_limit - current_credit / 1000000000000000000 > amount) {
account_address.transfer(amount * 1000000000000000000);
}
current_credit += amount * 1000000000000000000;
credit_map[account_address] = current_credit;
balances[account_address] += amount;
time = now;
return time;
// Check whether out of bounds by: (creditLimit - currentCredit) > amount
// If true add amount in both currentCredit && balance [Both are account mapped]
// If no, deny
}
function deposit_credit(uint amount) payable public {
credit_map[msg.sender] = current_credit;
if (amount * 1000000000000000000 <= credit_map[msg.sender]) {
credit_map[msg.sender] = credit_map[msg.sender] - amount * 1000000000000000000;
balances[msg.sender] -= amount * 1000000000000000000;
}
credit_map[msg.sender] = current_credit;
// Subtranct amount from currentCredit && balance [Both are account mapped]
}
// // P2P
// function transfer(address sender, address recipient, uint amount){
// // Check if amount is valid: amount < balance
// // If yes, send amount ETH from sender to recipient
// }
function P2P(uint amount) public payable {
p2p = amount;
}
function P2P_to_person(address reciever) public {
reciever.transfer(p2p);
}
function check_inidvidual_balance() public view returns (uint) {
return balances[msg.sender];
}
function check_inidvidual_credit() public returns (uint) {
if (now - time < 2548800) {
credit_map[msg.sender] += 1000000000000000000 + credit_map[msg.sender];
}
return credit_map[msg.sender];
}
}