@@ -67,6 +67,7 @@ contract Registry is IRegistry {
67
67
68
68
mapping (uint memberId = > address member ) internal members;
69
69
mapping (address member = > uint memberId ) internal memberIds;
70
+ mapping (bytes32 signature = > bool used ) internal usedSignatures;
70
71
mapping (uint memberId = > bool isAdvisoryBoardMember ) public isAdvisoryBoardMember;
71
72
72
73
function isMember (address member ) external view returns (bool ) {
@@ -93,15 +94,20 @@ contract Registry is IRegistry {
93
94
memberIds[member] = memberId;
94
95
members[memberId] = member;
95
96
// todo:
97
+ // validate signature
98
+ // mark signature as used
96
99
// TC.addToWhitelist(member)
97
100
}
98
101
99
102
function swap (address to ) external {
100
- require (memberIds[to] == 0 , AlreadyMember ());
101
103
uint memberId = memberIds[msg .sender ];
102
- members[memberId] = to;
103
- memberIds[to] = memberId;
104
+ require (memberId != 0 , NotMember ());
105
+ require (memberIds[to] == 0 , AlreadyMember ());
106
+
104
107
delete memberIds[msg .sender ];
108
+ memberIds[to] = memberId;
109
+ members[memberId] = to;
110
+
105
111
// todo:
106
112
// TC.removeFromWhitelist(msg.sender)
107
113
// TC.addToWhitelist(to)
@@ -113,6 +119,7 @@ contract Registry is IRegistry {
113
119
uint memberId = memberIds[msg .sender ];
114
120
require (memberId != 0 , NotMember ());
115
121
require (! isAdvisoryBoardMember[memberId], AdvisoryBoardMemberCannotLeave ());
122
+
116
123
// todo:
117
124
// address[] memory pools = TC.getManagerStakingPools(memberId)
118
125
// require(pools.length == 0, StakingPoolManagersCannotLeave());
@@ -122,73 +129,8 @@ contract Registry is IRegistry {
122
129
123
130
// todo:
124
131
// TC.removeFromWhitelist(msg.sender)
125
- // TK.burnFrom(msg.sender)
126
- }
127
-
128
- /// WITH DESIGNATED ROLES
129
-
130
- struct AddressInfo {
131
- uint32 id; // member id
132
- uint8 role; // role id
133
- }
134
-
135
- struct MemberRole {
136
- uint32 id;
137
- uint8 role;
138
- address addr;
139
- }
140
-
141
- mapping (uint id = > mapping (uint role = > address )) internal roleAddresses;
142
- mapping (address => AddressInfo) internal addressToInfo;
143
- mapping (uint id = > mapping (uint role = > address nominee )) internal roleOffers;
144
-
145
- /* == MEMBER MANAGEMENT == */
146
-
147
- function getAddress (uint id , uint role ) external view returns (address ) {
148
- return roleAddresses[id][role];
149
- }
150
-
151
- function getMemberAddresses (uint id ) external view returns (MemberRole[] memory memberRoles ) {
152
- memberRoles = new MemberRole [](256 );
153
-
154
- for (uint role = 1 ; role <= 256 ; role++ ) {
155
- AddressInfo memory info = addressToInfo[roleAddresses[id][role]];
156
- memberRoles[role - 1 ] = MemberRole ({
157
- id: info.id,
158
- role: info.role,
159
- addr: roleAddresses[id][role]
160
- });
161
- }
162
-
163
- return memberRoles;
164
- }
165
-
166
- function nominateAddress (uint role , address nominee ) external {
167
- AddressInfo memory info = addressToInfo[msg .sender ];
168
- require (info.id != 0 , NotMember ());
169
- require (info.role == 1 , NotMainAddress ());
170
-
171
- require (role > 0 && role <= 256 , InvalidRole ());
172
- roleOffers[info.id][role] = nominee;
173
- }
174
-
175
- function acceptNomination (uint memberId , uint role ) external {
176
-
177
- require (memberId != 0 , InvalidMemberId ());
178
- require (role > 0 && role <= 256 , InvalidRole ());
179
-
180
- address nominee = roleOffers[memberId][role];
181
- require (nominee == msg .sender , NotNominee ());
182
-
183
- roleAddresses[memberId][role] = nominee;
184
- addressToInfo[nominee] = AddressInfo ({ id: memberId, role: role });
185
-
186
- delete roleOffers[memberId][role];
187
- }
188
-
189
- function getMember (address addr ) external view returns (uint id , uint role ) {
190
- AddressInfo memory info = addressToInfo[addr];
191
- return (info.id, info.role);
132
+ // uint balance = TK.balanceOf(msg.sender)
133
+ // TK.burnFrom(msg.sender, balance) // or revert?
192
134
}
193
135
194
136
/* == CONTRACT MANAGEMENT == */
0 commit comments