normalise stream amount & balance test

This commit is contained in:
gozzy 2022-12-05 19:33:58 +00:00
parent b931c24498
commit 59d851c51f
4 changed files with 23 additions and 23 deletions

View File

@ -1,21 +1,23 @@
pragma solidity 0.8.1;
import "./interfaces/IERC20.sol";
import "./interfaces/ISablier.sol"
import "./interfaces/ISablier.sol";
import "./proprietary/Parameters.sol";
contract Proposal is Parameters {
function executeProposal() public {
IERC20(tokenAddress).approve(sablierAddress, RENUMERATION_AMOUNT);
IERC20(tokenAddress).approve(sablierAddress, RENUMERATION_NORMALISED_AMOUNT);
ISablier(sablierAddress).cancelStream(COMMUNITY_FUND_STREAM_ID);
ISablier(sablierAddress).createStream(
RENUMERATION_ADDRESS,
FISCAL_Q_RENUMERATION_AMOUNT,
RENUMERATION_NORMALISED_AMOUNT,
tokenAddress,
RENUMERATION_START_TS,
RENUMERATION_START_TS + FISCAL_Q_DURATION
);
ISablier(sablierAddress).cancelStream(COMMUNITY_FUND_STREAM_ID);
}
}

View File

@ -1,9 +1,11 @@
pragma solidity 0.8.1;
pragma solidity ^0.8.1;
interface ISablier {
function cancelStream(uint256 streamId) external returns (bool);
function balanceOf(uint256 streamId, address who) external returns (uint256);
function createStream(
address recipent,
uint256 deposit,

View File

@ -3,10 +3,12 @@ pragma solidity 0.8.1;
contract Parameters {
uint256 public COMMUNITY_FUND_STREAM_ID = 103358;
uint256 public FISCAL_Q_RENUMERATION_AMOUNT = 10000 ether;
uint256 public FISCAL_Q_DURATION = 90 days;
uint256 public RENUMERATION_START_TS =;
address public RENUMERATION_ADDRESS =;
uint256 public RENUMERATION_START_TS = 1670740000;
uint256 public RENUMERATION_AMOUNT = 10000 ether;
uint256 public RENUMERATION_NORMALISED_AMOUNT = RENUMERATION_AMOUNT - (RENUMERATION_AMOUNT % FISCAL_Q_DURATION);
address public RENUMERATION_ADDRESS = 0x40d16C473CB7bF5fAB9713b27A4562EAa6f915d1;
// beneficary addresses
address public governanceAddress = 0x5efda50f22d34F262c29268506C5Fa42cB56A1Ce;

View File

@ -1,35 +1,29 @@
pragma solidity ^0.8.1;
import "../src/interfaces/IENSResolver.sol";
import "../src/Proposal.sol";
import "forge-std/Test.sol";
contract ProposalTest is Test, Proposal {
function compareBytes(bytes memory a, bytes memory b) public returns (bool e) {
e = keccak256(abi.encodePacked(a)) == keccak256(abi.encodePacked(b));
}
function testProposal() public {
uint256 balanceBefore = IERC20(tokenAddress).balanceOf(governanceAddress);
uint256 streamBalance = ISablier(sablierAddress).balanceOf(COMMUNITY_FUND_STREAM_ID, governanceAddress);
vm.startPrank(address(governanceAddress));
executeProposal();
vm.stopPrank();
_testResults();
}
function _testResults() public {
IENSResolver resolver = IENSResolver(resolverAddress);
bytes memory classicContentHash = resolver.contenthash(CLASSIC_ENS_SUBNODE);
bytes memory novaContentHash = resolver.contenthash(NOVA_ENS_SUBNODE);
uint256 balanceAfter = IERC20(tokenAddress).balanceOf(governanceAddress);
require(
compareBytes(classicContentHash, CLASSIC_IPFS_HASH),
"PRIMARY CONTENT NOT UPDATED"
RENUMERATION_AMOUNT - RENUMERATION_NORMALISED_AMOUNT < 1000 gwei,
"NORMALISED NUMBER BREACHES ROUNDING THRESHOLD"
);
require(
compareBytes(novaContentHash, NOVA_IPFS_HASH),
"SECONDARY CONTENT NOT UPDATED"
balanceBefore - RENUMERATION_NORMALISED_AMOUNT == balanceAfter - streamBalance,
"OUTFLOWS GREATER THAN INFLOWS"
);
}