I have written an additional test confirming that the cycle duration is 14 days, which is the standard validation period currently adopted by the protocol, to further affirm the working logic of the mitigated steps:
function testCycleDuration() public {
uint256 duration = 2 weeks;
uint256 depositAmt = 1000 ether;
uint256 avaxAssignmentRequest = 1000 ether;
uint128 ggpStakeAmt = 200 ether;
vm.startPrank(nodeOp);
ggp.approve(address(staking), MAX_AMT);
staking.stakeGGP(ggpStakeAmt);
MinipoolManager.Minipool memory mp1 = createMinipool(depositAmt, avaxAssignmentRequest, duration);
vm.stopPrank();
//Manually set their GGP stake to 1, to ensure that the GGP slash amount will be more than the GGP staked.
int256 stakerIndex = staking.getIndexOf(address(nodeOp));
store.subUint(keccak256(abi.encodePacked("staker.item", stakerIndex, ".ggpStaked")), ggpStakeAmt - 1);
address liqStaker1 = getActorWithTokens("liqStaker1", MAX_AMT, MAX_AMT);
vm.prank(liqStaker1);
ggAVAX.depositAVAX{value: MAX_AMT}();
rialto.processMinipoolStart(mp1.nodeID);
skip(duration);
rialto.processMinipoolEndWithoutRewards(mp1.nodeID);
uint256 cycleDuration = store.getUint(keccak256(abi.encodePacked("minipool.item", index, ".endTime"))) -
store.getUint(keccak256(abi.encodePacked("minipool.item", index, ".startTime")));
assertEq(cycleDuration, 14 days);
}
"If a node operator has excessively low uptime, stakers are compensated from the GGP insurance put up by the Node Operator. This socializes the risk of being matched with a bad operator, and minimizes any potential losses. Slashed GGP can be sold to token holders at a discounted rate, with AVAX proceeds awarded to Liquid Stakers."
To the liquid stakers, they are generally more concerned about getting compensated with AVAX rather than GGP.
GGP is initialized with TotalGGPCirculatingSupply == 18_000_000 ether. However, an exchange is needed to at least allow node operators to swap AVAX or ggAVAX into GGP. Devoid of this, no one would be able to secure any GGP to stake prior to creating a minipool.
Additionally, with an exchange in place, liquid stakers would be able to sell the slashed GGP awarded at their discretion instead of being dictated by Protocol DAO.
The mitigation steps are flawlessly implemented.
I have written an additional test confirming that the cycle duration is 14 days, which is the standard validation period currently adopted by the protocol, to further affirm the working logic of the mitigated steps:
Nevertheless, as denoted by Gogopool LitePaper,
"If a node operator has excessively low uptime, stakers are compensated from the GGP insurance put up by the Node Operator. This socializes the risk of being matched with a bad operator, and minimizes any potential losses. Slashed GGP can be sold to token holders at a discounted rate, with AVAX proceeds awarded to Liquid Stakers."
To the liquid stakers, they are generally more concerned about getting compensated with AVAX rather than GGP.
GGP is initialized with TotalGGPCirculatingSupply == 18_000_000 ether. However, an exchange is needed to at least allow node operators to swap AVAX or ggAVAX into GGP. Devoid of this, no one would be able to secure any GGP to stake prior to creating a minipool.
Additionally, with an exchange in place, liquid stakers would be able to sell the slashed GGP awarded at their discretion instead of being dictated by Protocol DAO.