· 6 years ago · Oct 08, 2019, 06:20 PM
1pragma solidity ^0.4.18;
2
3interface IKey {
4 function key() external view returns (bytes32);
5}
6
7contract GroupBank {
8 bool jackKey;
9 bool billKey;
10 bool boyuKey;
11 bytes secretKey;
12 address public groupAddress;
13 address public quickAddress;
14
15 function GroupBank (address _address, address _address2) {
16 jackKey = false;
17 billKey = false;
18 boyuKey = false;
19 secretKey = "0000000000000000000000000000000001234567";
20 groupAddress = _address;
21 quickAddress =_address2;
22 }
23
24 function complete() returns (bool) {
25 return billKey && boyuKey;
26 }
27
28 function key1 (address _address) internal returns (bool){
29 require(msg.sender == _address);
30
31 if(IKey(_address).key() == bytes32("jackSecretKey")){
32 jackKey = true;
33 return true;
34 }
35
36 return false;
37 }
38
39 function key2 (address _address) public returns (bool) {
40 require(msg.sender == _address);
41
42 bytes20 addr = bytes20(_address);
43 bytes20 billSecret = hex"000000000000000000000000000000000badb111";
44 bytes20 mask = hex"0000000000000000000000000000000001234567";
45
46 for (uint256 i = 0; i < 34; i++) {
47 if (addr & mask == billSecret) {
48 billKey = true;
49 return true;
50 }
51 mask <<= 4;
52 billSecret <<= 4;
53 }
54
55 return false;
56 }
57
58 function key3 (bytes _key) public returns (bool) {
59 require(address(keccak256(_key)) == groupAddress);
60
61 boyuKey = true;
62 return true;
63 }
64
65 // function quickOpen () payable {
66 // require(msg.value == 0.42 ether);
67
68 // jackKey = true;
69 // address tmp = groupAddress;
70 // groupAddress = quickAddress;
71 // quickAddress = tmp;
72 // }
73
74}