mirror of
https://github.com/Instadapp/dsa-governance.git
synced 2024-07-29 22:27:52 +00:00
added verification method
This commit is contained in:
parent
7a31428e9d
commit
dfa415795e
|
@ -8,6 +8,10 @@ interface IGovernorBravo {
|
||||||
function _acceptAdminOnTimelock() external;
|
function _acceptAdminOnTimelock() external;
|
||||||
function _setImplementation(address implementation_) external;
|
function _setImplementation(address implementation_) external;
|
||||||
function propose(address[] memory targets, uint[] memory values, string[] memory signatures, bytes[] memory calldatas, string memory description) external returns (uint);
|
function propose(address[] memory targets, uint[] memory values, string[] memory signatures, bytes[] memory calldatas, string memory description) external returns (uint);
|
||||||
|
function admin() external view returns(address);
|
||||||
|
function timelock() external view returns(address);
|
||||||
|
function votingDelay() external view returns(uint256);
|
||||||
|
function votingPeriod() external view returns(uint256);
|
||||||
}
|
}
|
||||||
|
|
||||||
interface ITimelock {
|
interface ITimelock {
|
||||||
|
@ -16,15 +20,19 @@ interface ITimelock {
|
||||||
function setPendingAdmin(address pendingAdmin_) external;
|
function setPendingAdmin(address pendingAdmin_) external;
|
||||||
function queueTransaction(address target, uint value, string memory signature, bytes memory data, uint eta) external returns (bytes32);
|
function queueTransaction(address target, uint value, string memory signature, bytes memory data, uint eta) external returns (bytes32);
|
||||||
function executeTransaction(address target, uint value, string memory signature, bytes memory data, uint eta) external payable returns (bytes memory);
|
function executeTransaction(address target, uint value, string memory signature, bytes memory data, uint eta) external payable returns (bytes memory);
|
||||||
|
function admin() external view returns(address);
|
||||||
|
function delay() external view returns(uint256);
|
||||||
}
|
}
|
||||||
|
|
||||||
interface IInstaIndex {
|
interface IInstaIndex {
|
||||||
function changeMaster(address _newMaster) external;
|
function changeMaster(address _newMaster) external;
|
||||||
function updateMaster() external;
|
function updateMaster() external;
|
||||||
|
function master() external view returns(address);
|
||||||
}
|
}
|
||||||
|
|
||||||
interface ILite {
|
interface ILite {
|
||||||
function setAdmin(address newAdmin) external;
|
function setAdmin(address newAdmin) external;
|
||||||
|
function getAdmin() external view returns(address);
|
||||||
}
|
}
|
||||||
|
|
||||||
interface IDSAV2 {
|
interface IDSAV2 {
|
||||||
|
@ -36,6 +44,8 @@ interface IDSAV2 {
|
||||||
external
|
external
|
||||||
payable
|
payable
|
||||||
returns (bytes32);
|
returns (bytes32);
|
||||||
|
|
||||||
|
function isAuth(address user) external view returns (bool);
|
||||||
}
|
}
|
||||||
|
|
||||||
contract PayloadIGP7 {
|
contract PayloadIGP7 {
|
||||||
|
@ -65,7 +75,7 @@ contract PayloadIGP7 {
|
||||||
|
|
||||||
|
|
||||||
function propose() external {
|
function propose() external {
|
||||||
uint256 totalActions = 8;
|
uint256 totalActions = 9;
|
||||||
address[] memory targets = new address[](totalActions);
|
address[] memory targets = new address[](totalActions);
|
||||||
uint256[] memory values = new uint256[](totalActions);
|
uint256[] memory values = new uint256[](totalActions);
|
||||||
string[] memory signatures = new string[](totalActions);
|
string[] memory signatures = new string[](totalActions);
|
||||||
|
@ -95,6 +105,9 @@ contract PayloadIGP7 {
|
||||||
// Action 8: call executeTransaction - new timelock contract to execute below payload
|
// Action 8: call executeTransaction - new timelock contract to execute below payload
|
||||||
(targets[7], values[7], signatures[7], calldatas[7]) = action8();
|
(targets[7], values[7], signatures[7], calldatas[7]) = action8();
|
||||||
|
|
||||||
|
// Action 9: call verifyProposal() - on this payload contract
|
||||||
|
(targets[8], values[8], signatures[8], calldatas[8]) = action9();
|
||||||
|
|
||||||
uint256 proposedId = GOVERNOR.propose(
|
uint256 proposedId = GOVERNOR.propose(
|
||||||
targets,
|
targets,
|
||||||
values,
|
values,
|
||||||
|
@ -132,17 +145,39 @@ contract PayloadIGP7 {
|
||||||
TIMELOCK.setDelay(ONE_DAY_TIME_IN_SECONDS);
|
TIMELOCK.setDelay(ONE_DAY_TIME_IN_SECONDS);
|
||||||
}
|
}
|
||||||
|
|
||||||
function verifyProposal() external {
|
function verifyProposal() external view {
|
||||||
// Verify 1 : Verify DSA Master
|
// Verify 1 : Verify DSA Master
|
||||||
|
require(INSTAINDEX.master() == address(TIMELOCK), "InstaIndex-wrong-master");
|
||||||
|
|
||||||
// Verify 2 : Verify Lite Admin
|
// Verify 2 : Verify Lite Admin
|
||||||
|
require(LITE.getAdmin() == address(TIMELOCK), "Lite-wrong-admin");
|
||||||
|
|
||||||
// Verify 3 : Verify Governor Admin
|
// Verify 3 : Verify Governor Admin
|
||||||
// Verify 4 : Verify Old Timelock Admin
|
require(GOVERNOR.admin() == address(TIMELOCK), "Governor-wrong-admin");
|
||||||
// Verify 5 : Verify New Timelock Admin
|
|
||||||
// Verify 6 : Verify Treasury remove of old timelock
|
// Verify 4 : Verify Governor Admin
|
||||||
// Verify 7 : Verify Treasury add of new timelock
|
require(GOVERNOR.timelock() == address(TIMELOCK), "Governor-wrong-timelock");
|
||||||
// Verify 8 : Verify voting delay
|
|
||||||
// Verify 9 : Verify voting period
|
// Verify 5 : Verify Old Timelock Admin
|
||||||
// Verify 10: Verify queueing period
|
require(OLD_TIMELOCK.admin() == address(TIMELOCK), "Old-timelock-wrong-admin");
|
||||||
|
|
||||||
|
// Verify 6 : Verify New Timelock Admin
|
||||||
|
require(TIMELOCK.admin() == address(GOVERNOR), "Timelock-wrong-admin");
|
||||||
|
|
||||||
|
// Verify 7 : Verify Treasury remove of old timelock
|
||||||
|
require(TREASURY.isAuth(address(OLD_TIMELOCK)) == false, "Treasury-old-timelock-not-removed");
|
||||||
|
|
||||||
|
// Verify 8 : Verify Treasury add of new timelock
|
||||||
|
require(TREASURY.isAuth(address(TIMELOCK)) == true, "Treasury-new-timelock-not-added");
|
||||||
|
|
||||||
|
// Verify 9 : Verify voting delay
|
||||||
|
require(GOVERNOR.votingDelay() == ONE_DAY_TIME_IN_BLOCKS, "Voting-delay-not-set-to-one-day");
|
||||||
|
|
||||||
|
// Verify 10 : Verify voting period
|
||||||
|
require(GOVERNOR.votingPeriod() == TWO_DAY_TIME_IN_BLOCKS, "Voting-period-not-set-to-two-day");
|
||||||
|
|
||||||
|
// Verify 11: Verify queueing period
|
||||||
|
require(TIMELOCK.delay() == ONE_DAY_TIME_IN_SECONDS, "Timelock-delay-not-set-to-one-day");
|
||||||
}
|
}
|
||||||
|
|
||||||
///////// PROPOSAL ACTIONS - 8 Actions ///////
|
///////// PROPOSAL ACTIONS - 8 Actions ///////
|
||||||
|
@ -287,4 +322,12 @@ contract PayloadIGP7 {
|
||||||
block.timestamp
|
block.timestamp
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// @notice Action 5: call verifyProposal() - on this payload contract to verify end of execution
|
||||||
|
function action9() public view returns(address target, uint256 value, string memory signature, bytes memory calldatas) {
|
||||||
|
target = address(this);
|
||||||
|
value = 0;
|
||||||
|
signature = "verifyProposal()";
|
||||||
|
calldatas = abi.encode();
|
||||||
|
}
|
||||||
}
|
}
|
Loading…
Reference in New Issue
Block a user