Skip to content

Commit d5cc802

Browse files
committed
--wip-- [skip ci]
1 parent 857b991 commit d5cc802

File tree

1 file changed

+12
-70
lines changed

1 file changed

+12
-70
lines changed

contracts/modules/governance/Registry.sol

Lines changed: 12 additions & 70 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,7 @@ contract Registry is IRegistry {
6767

6868
mapping(uint memberId => address member) internal members;
6969
mapping(address member => uint memberId) internal memberIds;
70+
mapping(bytes32 signature => bool used) internal usedSignatures;
7071
mapping(uint memberId => bool isAdvisoryBoardMember) public isAdvisoryBoardMember;
7172

7273
function isMember(address member) external view returns (bool) {
@@ -93,15 +94,20 @@ contract Registry is IRegistry {
9394
memberIds[member] = memberId;
9495
members[memberId] = member;
9596
// todo:
97+
// validate signature
98+
// mark signature as used
9699
// TC.addToWhitelist(member)
97100
}
98101

99102
function swap(address to) external {
100-
require(memberIds[to] == 0, AlreadyMember());
101103
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+
104107
delete memberIds[msg.sender];
108+
memberIds[to] = memberId;
109+
members[memberId] = to;
110+
105111
// todo:
106112
// TC.removeFromWhitelist(msg.sender)
107113
// TC.addToWhitelist(to)
@@ -113,6 +119,7 @@ contract Registry is IRegistry {
113119
uint memberId = memberIds[msg.sender];
114120
require(memberId != 0, NotMember());
115121
require(!isAdvisoryBoardMember[memberId], AdvisoryBoardMemberCannotLeave());
122+
116123
// todo:
117124
// address[] memory pools = TC.getManagerStakingPools(memberId)
118125
// require(pools.length == 0, StakingPoolManagersCannotLeave());
@@ -122,73 +129,8 @@ contract Registry is IRegistry {
122129

123130
// todo:
124131
// 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?
192134
}
193135

194136
/* == CONTRACT MANAGEMENT == */

0 commit comments

Comments
 (0)