-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathContractWill
More file actions
47 lines (34 loc) · 1019 Bytes
/
ContractWill
File metadata and controls
47 lines (34 loc) · 1019 Bytes
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
pragma solidity >=0.5.7 <0.6.0;
contract Will {
address owner;
uint fortune;
bool isDeceased;
constructor() public payable {
owner = msg.sender;
fortune = msg.value;
isDeceased = false;
}
modifier onlyOwner {
require (msg.sender == owner);
_;
}
modifier mustBeDeceased {
require (isDeceased == true);
_;
}
address payable[] familyWallets;
mapping (address => uint) inheritance;
function setInheritance(address payable wallet, uint inheritAmount) public onlyOwner {
familyWallets.push(wallet);
inheritance[wallet] = inheritAmount;
}
function payout() private mustBeDeceased {
for(uint i=0; i <familyWallets.length; i++){
familyWallets[i].transfer(inheritance[familyWallets[i]]);
}
}
function deceased() public onlyOwner {
isDeceased = true;
payout();
}
}