-
Notifications
You must be signed in to change notification settings - Fork 0
/
bottom.sol
51 lines (43 loc) · 1.23 KB
/
bottom.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
pragma solidity ^0.4.0;
contract Inheritance {
address creator;
bool isPassOn;
// total BPC to pass on
uint totalBPC;
constructor() public payable {
creator = msg.sender;
totalBPC = msg.value;
isPassOn = false;
}
// all the wallets that will get money
address[] wallets;
mapping (address => uint) inheritance;
modifier isCreator {
require(msg.sender == creator);
_;
}
modifier isPassedOn {
require(isPassOn == true);
_;
}
// for adding ppl to inheritance
function init(address _wallet, uint _singleInheritance) public isCreator {
wallets.push(_wallet);
inheritance[_wallet] = _singleInheritance;
}
// fires when isPassedOn is true
function fireInheritance() private isPassedOn {
for (uint i = 0; i < wallets.length; i++) {
wallets[i].transfer(inheritance[wallets[i]]);
}
}
// passes on inheritance
function passOn() public isCreator {
isPassOn = true;
fireInheritance();
}
// undo contract if owner wants to
function discard() public isCreator {
creator.transfer(totalBPC);
}
}