Completed governance in MoatAddress.

This commit is contained in:
Sowmayjain 2018-10-27 17:37:21 +05:30
parent 5eafbf733c
commit 0a12d26912
2 changed files with 27 additions and 25 deletions

View File

@ -10,34 +10,44 @@ contract AddressRegistry {
event ResolverDisapproved(address user, address addr); event ResolverDisapproved(address user, address addr);
// Addresses managing the protocol governance // Addresses managing the protocol governance
mapping(address => bool) governors; mapping(address => bool) public governors;
// Address registry of connected smart contracts // Address registry of connected smart contracts
mapping(bytes32 => address) registry; mapping(bytes32 => address) public registry;
// Contract addresses having rights to perform tasks, approved by users // Contract addresses having rights to perform tasks, approved by users
// Resolver Contract >> User >> Approved // Resolver Contract >> User >> Approved
mapping(address => mapping(address => bool)) resolvers; mapping(address => mapping(address => bool)) public resolvers;
} }
contract Governance is AddressRegistry { contract ManageRegistry is AddressRegistry {
function dummyfunction() public pure returns(bool) { address public pendingAdmin;
return true; uint public pendingTime;
function setPendingAdmin() public {
require(block.timestamp > pendingTime, "Pending!");
registry[keccak256("admin")] = pendingAdmin;
} }
// governance code goes here to update the admin in "registry" mapping function setAddr(string name, address newAddr) public {
if (keccak256(name) != keccak256("admin")) {
} require(
governors[msg.sender],
"Permission Denied"
contract ManageRegistry is Governance { );
pendingAdmin = newAddr;
function setAddr(string name, address newAddr) public onlyAdmin { pendingTime = block.timestamp + (24 * 60 * 60); // adding 24 hours
registry[keccak256(name)] = newAddr; } else {
emit AddressChanged(name, newAddr); require(
msg.sender == getAddr("admin"),
"Permission Denied"
);
registry[keccak256(name)] = newAddr;
emit AddressChanged(name, newAddr);
}
} }
function getAddr(string name) public view returns(address addr) { function getAddr(string name) public view returns(address addr) {
@ -45,14 +55,6 @@ contract ManageRegistry is Governance {
require(addr != address(0), "Not a valid address."); require(addr != address(0), "Not a valid address.");
} }
modifier onlyAdmin() {
require(
msg.sender == getAddr("admin"),
"Permission Denied"
);
_;
}
} }

View File

@ -58,7 +58,7 @@ contract MoatResolver is FeeDetail {
fees = cut; fees = cut;
} }
function collectFees(address tokenAddress, uint amount) public onlyAdmin { function collectToken(address tokenAddress, uint amount) public onlyAdmin {
if (tokenAddress == 0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee) { if (tokenAddress == 0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee) {
msg.sender.transfer(amount); msg.sender.transfer(amount);
} else { } else {