@gooddollar/goodprotocol 2.0.25-beta.9 → 2.0.26-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/artifacts/abis/AdminWallet.min.json +1 -1
- package/artifacts/abis/CompoundVotingMachine.min.json +1 -1
- package/artifacts/abis/DistributionHelper.min.json +1 -1
- package/artifacts/abis/DistributionHelperTest.min.json +1 -1
- package/artifacts/abis/DistributionHelperTestHelper.min.json +1 -1
- package/artifacts/abis/EternalStorage.min.json +1 -0
- package/artifacts/abis/FuseOldBridgeKill.min.json +1 -0
- package/artifacts/abis/GoodFundManager.min.json +1 -1
- package/artifacts/abis/GoodFundManagerTest.min.json +1 -1
- package/artifacts/abis/GoodMarketMaker.min.json +1 -1
- package/artifacts/abis/GoodReserveCDai.min.json +1 -1
- package/artifacts/abis/IQuoterV2.min.json +1 -1
- package/artifacts/abis/ISwapRouter.min.json +1 -1
- package/artifacts/abis/IUpgradeabilityOwnerStorage.min.json +1 -0
- package/artifacts/abis/Initializable.min.json +1 -0
- package/artifacts/abis/Ownable.min.json +1 -0
- package/artifacts/abis/ReserveRestore.min.json +1 -0
- package/artifacts/abis/SuperfluidFaucet.min.json +1 -0
- package/artifacts/abis/Upgradeable.min.json +1 -0
- package/artifacts/contracts/DAOStackInterfaces.sol/Avatar.dbg.json +1 -1
- package/artifacts/contracts/DAOStackInterfaces.sol/Controller.dbg.json +1 -1
- package/artifacts/contracts/DAOStackInterfaces.sol/GlobalConstraintInterface.dbg.json +1 -1
- package/artifacts/contracts/DAOStackInterfaces.sol/IntVoteInterface.dbg.json +1 -1
- package/artifacts/contracts/DAOStackInterfaces.sol/ReputationInterface.dbg.json +1 -1
- package/artifacts/contracts/DAOStackInterfaces.sol/SchemeRegistrar.dbg.json +1 -1
- package/artifacts/contracts/Interfaces.sol/AggregatorV3Interface.dbg.json +1 -1
- package/artifacts/contracts/Interfaces.sol/ERC20.dbg.json +1 -1
- package/artifacts/contracts/Interfaces.sol/IAaveIncentivesController.dbg.json +1 -1
- package/artifacts/contracts/Interfaces.sol/IAdminWallet.dbg.json +1 -1
- package/artifacts/contracts/Interfaces.sol/IDonationStaking.dbg.json +1 -1
- package/artifacts/contracts/Interfaces.sol/IERC2917.dbg.json +1 -1
- package/artifacts/contracts/Interfaces.sol/IFirstClaimPool.dbg.json +1 -1
- package/artifacts/contracts/Interfaces.sol/IGoodDollar.dbg.json +1 -1
- package/artifacts/contracts/Interfaces.sol/IGoodStaking.dbg.json +1 -1
- package/artifacts/contracts/Interfaces.sol/IHasRouter.dbg.json +1 -1
- package/artifacts/contracts/Interfaces.sol/IIdentity.dbg.json +1 -1
- package/artifacts/contracts/Interfaces.sol/IIdentityV2.dbg.json +1 -1
- package/artifacts/contracts/Interfaces.sol/ILendingPool.dbg.json +1 -1
- package/artifacts/contracts/Interfaces.sol/IMultichainRouter.dbg.json +1 -1
- package/artifacts/contracts/Interfaces.sol/INameService.dbg.json +1 -1
- package/artifacts/contracts/Interfaces.sol/IQuoterV2.dbg.json +4 -0
- package/artifacts/contracts/{utils/BuyGDClone.sol → Interfaces.sol}/IQuoterV2.json +1 -1
- package/artifacts/contracts/Interfaces.sol/ISwapRouter.dbg.json +4 -0
- package/artifacts/contracts/{utils/BuyGDClone.sol → Interfaces.sol}/ISwapRouter.json +1 -1
- package/artifacts/contracts/Interfaces.sol/IUBIScheme.dbg.json +1 -1
- package/artifacts/contracts/Interfaces.sol/ProxyAdmin.dbg.json +1 -1
- package/artifacts/contracts/Interfaces.sol/Reserve.dbg.json +1 -1
- package/artifacts/contracts/Interfaces.sol/Staking.dbg.json +1 -1
- package/artifacts/contracts/Interfaces.sol/Uniswap.dbg.json +1 -1
- package/artifacts/contracts/Interfaces.sol/UniswapFactory.dbg.json +1 -1
- package/artifacts/contracts/Interfaces.sol/UniswapPair.dbg.json +1 -1
- package/artifacts/contracts/Interfaces.sol/cERC20.dbg.json +1 -1
- package/artifacts/contracts/fuseFaucet/Faucet.sol/Faucet.dbg.json +1 -1
- package/artifacts/contracts/fuseFaucet/Faucet.sol/Faucet.json +2 -2
- package/artifacts/contracts/fuseFaucet/FuseFaucet.sol/FuseFaucet.dbg.json +1 -1
- package/artifacts/contracts/fuseFaucet/FuseFaucet.sol/FuseFaucet.json +2 -2
- package/artifacts/contracts/fuseFaucet/FuseFaucetV2.sol/FuseFaucetV2.dbg.json +1 -1
- package/artifacts/contracts/fuseFaucet/FuseFaucetV2.sol/FuseFaucetV2.json +2 -2
- package/artifacts/contracts/fuseFaucet/SuperfluidFacuet.sol/SuperfluidFaucet.dbg.json +4 -0
- package/artifacts/contracts/fuseFaucet/SuperfluidFacuet.sol/SuperfluidFaucet.json +536 -0
- package/artifacts/contracts/governance/ClaimersDistribution.sol/ClaimersDistribution.dbg.json +1 -1
- package/artifacts/contracts/governance/ClaimersDistribution.sol/ClaimersDistribution.json +2 -2
- package/artifacts/contracts/governance/CompoundVotingMachine.sol/CompoundVotingMachine.dbg.json +1 -1
- package/artifacts/contracts/governance/CompoundVotingMachine.sol/CompoundVotingMachine.json +20 -2
- package/artifacts/contracts/governance/GReputation.sol/GReputation.dbg.json +1 -1
- package/artifacts/contracts/governance/GReputation.sol/GReputation.json +2 -2
- package/artifacts/contracts/governance/GoodDollarStaking.sol/GoodDollarStaking.dbg.json +1 -1
- package/artifacts/contracts/governance/GoodDollarStaking.sol/GoodDollarStaking.json +2 -2
- package/artifacts/contracts/governance/GoodDollarStaking.sol/IGovernanceStaking.dbg.json +1 -1
- package/artifacts/contracts/governance/GoodDollarStaking.sol/IStakingUpgrade.dbg.json +1 -1
- package/artifacts/contracts/governance/GoodDollarStaking.sol/RewardsMinter.dbg.json +1 -1
- package/artifacts/contracts/governance/GovernanceStaking.sol/GovernanceStaking.dbg.json +1 -1
- package/artifacts/contracts/governance/GovernanceStaking.sol/GovernanceStaking.json +2 -2
- package/artifacts/contracts/governance/MultiBaseGovernanceShareField.sol/MultiBaseGovernanceShareField.dbg.json +1 -1
- package/artifacts/contracts/governance/Reputation.sol/Reputation.dbg.json +1 -1
- package/artifacts/contracts/governance/Reputation.sol/Reputation.json +2 -2
- package/artifacts/contracts/governance/StakersDistribution.sol/StakersDistribution.dbg.json +1 -1
- package/artifacts/contracts/governance/StakersDistribution.sol/StakersDistribution.json +2 -2
- package/artifacts/contracts/identity/IdentityV2.sol/IdentityV2.dbg.json +1 -1
- package/artifacts/contracts/identity/IdentityV2.sol/IdentityV2.json +2 -2
- package/artifacts/contracts/invite/InvitesFuseV2.sol/InvitesFuseV2.dbg.json +1 -1
- package/artifacts/contracts/invite/InvitesFuseV2.sol/InvitesFuseV2.json +2 -2
- package/artifacts/contracts/invite/InvitesV1.sol/InvitesV1.dbg.json +1 -1
- package/artifacts/contracts/invite/InvitesV1.sol/InvitesV1.json +2 -2
- package/artifacts/contracts/invite/InvitesV2.sol/InvitesV2.dbg.json +1 -1
- package/artifacts/contracts/invite/InvitesV2.sol/InvitesV2.json +2 -2
- package/artifacts/contracts/invite/OneTimeReward.sol/OneTimeReward.dbg.json +1 -1
- package/artifacts/contracts/invite/OneTimeReward.sol/OneTimeReward.json +2 -2
- package/artifacts/contracts/mocks/AaveMock.sol/AaveMock.dbg.json +1 -1
- package/artifacts/contracts/mocks/AaveUSDMockOracle.sol/AaveUSDMockOracle.dbg.json +1 -1
- package/artifacts/contracts/mocks/BatUSDMockOracle.sol/BatUSDMockOracle.dbg.json +1 -1
- package/artifacts/contracts/mocks/CompUsdMockOracle.sol/CompUSDMockOracle.dbg.json +1 -1
- package/artifacts/contracts/mocks/DAIMock.sol/DAIMock.dbg.json +1 -1
- package/artifacts/contracts/mocks/DaiEthPriceMockOracle.sol/DaiEthPriceMockOracle.dbg.json +1 -1
- package/artifacts/contracts/mocks/DecimalsMock.sol/DecimalsMock.dbg.json +1 -1
- package/artifacts/contracts/mocks/DistributionBridgeMock.sol/DistributionBridgeMock.dbg.json +1 -1
- package/artifacts/contracts/mocks/DistributionBridgeMock.sol/DistributionBridgeMock.json +2 -2
- package/artifacts/contracts/mocks/DistributionHelperTest.sol/DistributionHelperTest.dbg.json +1 -1
- package/artifacts/contracts/mocks/DistributionHelperTest.sol/DistributionHelperTest.json +21 -2
- package/artifacts/contracts/mocks/DistributionHelperTest.sol/DistributionHelperTestHelper.dbg.json +1 -1
- package/artifacts/contracts/mocks/DistributionHelperTest.sol/DistributionHelperTestHelper.json +21 -2
- package/artifacts/contracts/mocks/EthUSDMockOracle.sol/EthUSDMockOracle.dbg.json +1 -1
- package/artifacts/contracts/mocks/FeesFormularMock.sol/FeesFormulaMock.dbg.json +1 -1
- package/artifacts/contracts/mocks/GasPriceMockOracle.sol/GasPriceMockOracle.dbg.json +1 -1
- package/artifacts/contracts/mocks/GoodCompoundStakingTest.sol/GoodCompoundStakingTest.dbg.json +1 -1
- package/artifacts/contracts/mocks/GoodCompoundStakingTest.sol/GoodCompoundStakingTest.json +2 -2
- package/artifacts/contracts/mocks/GoodDollarStakingMock.sol/GoodDollarStakingMock.dbg.json +1 -1
- package/artifacts/contracts/mocks/GoodDollarStakingMock.sol/GoodDollarStakingMock.json +2 -2
- package/artifacts/contracts/mocks/GoodFundManagerTest.sol/GoodFundManagerTest.dbg.json +1 -1
- package/artifacts/contracts/mocks/GoodFundManagerTest.sol/GoodFundManagerTest.json +21 -2
- package/artifacts/contracts/mocks/IdentityMock.sol/IdentityMock.dbg.json +1 -1
- package/artifacts/contracts/mocks/IdentityMock.sol/IdentityMock.json +2 -2
- package/artifacts/contracts/mocks/IncentiveControllerMock.sol/IncentiveControllerMock.dbg.json +1 -1
- package/artifacts/contracts/mocks/LendingPoolMock.sol/LendingPoolMock.dbg.json +1 -1
- package/artifacts/contracts/mocks/MultichainRouterMock.sol/IWrapper.dbg.json +1 -1
- package/artifacts/contracts/mocks/MultichainRouterMock.sol/MultichainRouterMock.dbg.json +1 -1
- package/artifacts/contracts/mocks/MultichainRouterMock.sol/MultichainRouterMock.json +2 -2
- package/artifacts/contracts/mocks/OverMintTester.sol/IGoodDollarStakingTest.dbg.json +1 -1
- package/artifacts/contracts/mocks/OverMintTester.sol/OverMintTester.dbg.json +1 -1
- package/artifacts/contracts/mocks/OverMintTester.sol/OverMintTester.json +2 -2
- package/artifacts/contracts/mocks/OverMintTesterRegularStake.sol/OverMintTesterRegularStake.dbg.json +1 -1
- package/artifacts/contracts/mocks/OverMintTesterRegularStake.sol/OverMintTesterRegularStake.json +2 -2
- package/artifacts/contracts/mocks/PayableMock.sol/PayableMock.dbg.json +1 -1
- package/artifacts/contracts/mocks/SixteenDecimalsTokenMock.sol/SixteenDecimalsTokenMock.dbg.json +1 -1
- package/artifacts/contracts/mocks/StakingMockFixedAPY.sol/StakingMockFixedAPY.dbg.json +1 -1
- package/artifacts/contracts/mocks/SwapHelperTest.sol/SwapHelperTest.dbg.json +1 -1
- package/artifacts/contracts/mocks/SwapHelperTest.sol/SwapHelperTest.json +2 -2
- package/artifacts/contracts/mocks/TwentyDecimalsTokenMock.sol/TwentyDecimalsTokenMock.dbg.json +1 -1
- package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock.dbg.json +1 -1
- package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock.json +2 -2
- package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock2.dbg.json +1 -1
- package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock2.json +2 -2
- package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock3.dbg.json +1 -1
- package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock3.json +2 -2
- package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock4.dbg.json +1 -1
- package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock4.json +2 -2
- package/artifacts/contracts/mocks/UsdcMock.sol/USDCMock.dbg.json +1 -1
- package/artifacts/contracts/mocks/cBATMock.sol/cBATMock.dbg.json +1 -1
- package/artifacts/contracts/mocks/cDAILowWorthMock.sol/cDAILowWorthMock.dbg.json +1 -1
- package/artifacts/contracts/mocks/cDAIMock.sol/cDAIMock.dbg.json +1 -1
- package/artifacts/contracts/mocks/cDAINonMintableMock.sol/cDAINonMintableMock.dbg.json +1 -1
- package/artifacts/contracts/mocks/cDecimalsMock.sol/cDecimalsMock.dbg.json +1 -1
- package/artifacts/contracts/mocks/cSDTMock.sol/cSDTMock.dbg.json +1 -1
- package/artifacts/contracts/mocks/cUSDCMock.sol/cUSDCMock.dbg.json +1 -1
- package/artifacts/contracts/reserve/DistributionHelper.sol/DistributionHelper.dbg.json +1 -1
- package/artifacts/contracts/reserve/DistributionHelper.sol/DistributionHelper.json +21 -2
- package/artifacts/contracts/reserve/ExchangeHelper.sol/ExchangeHelper.dbg.json +1 -1
- package/artifacts/contracts/reserve/ExchangeHelper.sol/ExchangeHelper.json +2 -2
- package/artifacts/contracts/reserve/GoodMarketMaker.sol/GoodMarketMaker.dbg.json +1 -1
- package/artifacts/contracts/reserve/GoodMarketMaker.sol/GoodMarketMaker.json +6 -6
- package/artifacts/contracts/reserve/GoodReserveCDai.sol/ContributionCalc.dbg.json +1 -1
- package/artifacts/contracts/reserve/GoodReserveCDai.sol/GoodReserveCDai.dbg.json +1 -1
- package/artifacts/contracts/reserve/GoodReserveCDai.sol/GoodReserveCDai.json +3 -3
- package/artifacts/contracts/staking/BaseShareField.sol/BaseShareField.dbg.json +1 -1
- package/artifacts/contracts/staking/BaseShareField.sol/BaseShareField.json +2 -2
- package/artifacts/contracts/staking/BaseShareFieldV2.sol/BaseShareFieldV2.dbg.json +1 -1
- package/artifacts/contracts/staking/BaseShareFieldV2.sol/BaseShareFieldV2.json +2 -2
- package/artifacts/contracts/staking/DonationsStaking.sol/DonationsStaking.dbg.json +1 -1
- package/artifacts/contracts/staking/DonationsStaking.sol/DonationsStaking.json +2 -2
- package/artifacts/contracts/staking/FuseStakingV3.sol/FuseStakingV3.dbg.json +1 -1
- package/artifacts/contracts/staking/FuseStakingV3.sol/FuseStakingV3.json +2 -2
- package/artifacts/contracts/staking/FuseStakingV3.sol/IConsensus.dbg.json +1 -1
- package/artifacts/contracts/staking/FuseStakingV3.sol/PegSwap.dbg.json +1 -1
- package/artifacts/contracts/staking/GoodFundManager.sol/GoodFundManager.dbg.json +1 -1
- package/artifacts/contracts/staking/GoodFundManager.sol/GoodFundManager.json +21 -2
- package/artifacts/contracts/staking/SimpleStaking.sol/SimpleStaking.dbg.json +1 -1
- package/artifacts/contracts/staking/SimpleStakingV2.sol/SimpleStakingV2.dbg.json +1 -1
- package/artifacts/contracts/staking/UniswapV2SwapHelper.sol/UniswapV2SwapHelper.dbg.json +1 -1
- package/artifacts/contracts/staking/UniswapV2SwapHelper.sol/UniswapV2SwapHelper.json +2 -2
- package/artifacts/contracts/staking/aave/AaveStakingFactory.sol/AaveStakingFactory.dbg.json +1 -1
- package/artifacts/contracts/staking/aave/AaveStakingFactory.sol/AaveStakingFactory.json +2 -2
- package/artifacts/contracts/staking/aave/GoodAaveStaking.sol/GoodAaveStaking.dbg.json +1 -1
- package/artifacts/contracts/staking/aave/GoodAaveStaking.sol/GoodAaveStaking.json +2 -2
- package/artifacts/contracts/staking/aave/GoodAaveStakingV2.sol/GoodAaveStakingV2.dbg.json +1 -1
- package/artifacts/contracts/staking/aave/GoodAaveStakingV2.sol/GoodAaveStakingV2.json +2 -2
- package/artifacts/contracts/staking/compound/CompoundStakingFactory.sol/CompoundStakingFactory.dbg.json +1 -1
- package/artifacts/contracts/staking/compound/CompoundStakingFactory.sol/CompoundStakingFactory.json +2 -2
- package/artifacts/contracts/staking/compound/GoodCompoundStaking.sol/GoodCompoundStaking.dbg.json +1 -1
- package/artifacts/contracts/staking/compound/GoodCompoundStaking.sol/GoodCompoundStaking.json +2 -2
- package/artifacts/contracts/staking/compound/GoodCompoundStakingV2.sol/GoodCompoundStakingV2.dbg.json +1 -1
- package/artifacts/contracts/staking/compound/GoodCompoundStakingV2.sol/GoodCompoundStakingV2.json +2 -2
- package/artifacts/contracts/staking/utils/Math64X64.sol/Math64x64.dbg.json +1 -1
- package/artifacts/contracts/staking/utils/StakingRewardsFixedAPY.sol/StakingRewardsFixedAPY.dbg.json +1 -1
- package/artifacts/contracts/token/ERC20PresetMinterPauserUpgradeable.sol/ERC20PresetMinterPauserUpgradeable.dbg.json +1 -1
- package/artifacts/contracts/token/ERC677.sol/ERC677.dbg.json +1 -1
- package/artifacts/contracts/token/ERC677.sol/ERC677Receiver.dbg.json +1 -1
- package/artifacts/contracts/token/GoodDollar.sol/GoodDollar.dbg.json +1 -1
- package/artifacts/contracts/token/GoodDollar.sol/GoodDollar.json +2 -2
- package/artifacts/contracts/token/IFeesFormula.sol/IFeesFormula.dbg.json +1 -1
- package/artifacts/contracts/token/MultichainFeeFormula.sol/MultichainFeeFormula.dbg.json +1 -1
- package/artifacts/contracts/token/superfluid/ERC20Permit.sol/ERC20Permit.dbg.json +1 -1
- package/artifacts/contracts/token/superfluid/ERC20Permit.sol/SelfApprove.dbg.json +1 -1
- package/artifacts/contracts/token/superfluid/ISuperGoodDollar.sol/IGoodDollarCustom.dbg.json +1 -1
- package/artifacts/contracts/token/superfluid/ISuperGoodDollar.sol/ISuperGoodDollar.dbg.json +1 -1
- package/artifacts/contracts/token/superfluid/ISuperToken.sol/ISuperToken.dbg.json +1 -1
- package/artifacts/contracts/token/superfluid/SuperGoodDollar.sol/SuperGoodDollar.dbg.json +1 -1
- package/artifacts/contracts/token/superfluid/SuperGoodDollar.sol/SuperGoodDollar.json +2 -2
- package/artifacts/contracts/token/superfluid/SuperToken.sol/SuperToken.dbg.json +1 -1
- package/artifacts/contracts/token/superfluid/SuperfluidToken.sol/SuperfluidToken.dbg.json +1 -1
- package/artifacts/contracts/token/superfluid/UUPSProxiable.sol/UUPSProxiable.dbg.json +1 -1
- package/artifacts/contracts/token/superfluid/UUPSProxy.sol/Proxy.dbg.json +1 -1
- package/artifacts/contracts/token/superfluid/UUPSProxy.sol/UUPSProxy.dbg.json +1 -1
- package/artifacts/contracts/token/superfluid/UUPSProxy.sol/UUPSUtils.dbg.json +1 -1
- package/artifacts/contracts/ubi/UBIScheme.sol/UBIScheme.dbg.json +1 -1
- package/artifacts/contracts/ubi/UBIScheme.sol/UBIScheme.json +2 -2
- package/artifacts/contracts/ubi/UBISchemeV2.sol/UBISchemeV2.dbg.json +1 -1
- package/artifacts/contracts/ubi/UBISchemeV2.sol/UBISchemeV2.json +2 -2
- package/artifacts/contracts/utils/AdminWallet.sol/AdminWallet.dbg.json +1 -1
- package/artifacts/contracts/utils/AdminWallet.sol/AdminWallet.json +2 -22
- package/artifacts/contracts/utils/AdminWalletFuse.sol/AdminWalletFuse.dbg.json +1 -1
- package/artifacts/contracts/utils/AdminWalletFuse.sol/AdminWalletFuse.json +2 -2
- package/artifacts/contracts/utils/BancorFormula.sol/BancorFormula.dbg.json +1 -1
- package/artifacts/contracts/utils/BulkProof.sol/BulkProof.dbg.json +1 -1
- package/artifacts/contracts/utils/BulkProof.sol/BulkProof.json +2 -2
- package/artifacts/contracts/utils/BulkWhitelist.sol/BulkWhitelist.dbg.json +1 -1
- package/artifacts/contracts/utils/BulkWhitelist.sol/BulkWhitelist.json +2 -2
- package/artifacts/contracts/utils/BuyAndBridgeHelper.sol/BuyAndBridgeHelper.dbg.json +1 -1
- package/artifacts/contracts/utils/BuyAndBridgeHelper.sol/BuyAndBridgeHelper.json +2 -2
- package/artifacts/contracts/utils/BuyGDClone.sol/BuyGDClone.dbg.json +1 -1
- package/artifacts/contracts/utils/BuyGDClone.sol/BuyGDClone.json +2 -2
- package/artifacts/contracts/utils/BuyGDClone.sol/BuyGDCloneFactory.dbg.json +1 -1
- package/artifacts/contracts/utils/BuyGDClone.sol/BuyGDCloneFactory.json +2 -2
- package/artifacts/contracts/utils/BuyGDClone.sol/DonateGDClone.dbg.json +1 -1
- package/artifacts/contracts/utils/BuyGDClone.sol/DonateGDClone.json +2 -2
- package/artifacts/contracts/utils/DAOContract.sol/DAOContract.dbg.json +1 -1
- package/artifacts/contracts/utils/DAOContract.sol/DAOContract.json +2 -2
- package/artifacts/contracts/utils/DAOUpgradeableContract.sol/DAOUpgradeableContract.dbg.json +1 -1
- package/artifacts/contracts/utils/DAOUpgradeableContract.sol/DAOUpgradeableContract.json +2 -2
- package/artifacts/contracts/utils/DSMath.sol/DSMath.dbg.json +1 -1
- package/artifacts/contracts/utils/DataTypes.sol/DataTypes.dbg.json +1 -1
- package/artifacts/contracts/utils/FuseOldBridgeKill.sol/EternalStorage.dbg.json +4 -0
- package/artifacts/contracts/utils/FuseOldBridgeKill.sol/EternalStorage.json +10 -0
- package/artifacts/contracts/utils/FuseOldBridgeKill.sol/FuseOldBridgeKill.dbg.json +4 -0
- package/artifacts/contracts/utils/FuseOldBridgeKill.sol/FuseOldBridgeKill.json +31 -0
- package/artifacts/contracts/utils/FuseOldBridgeKill.sol/IUpgradeabilityOwnerStorage.dbg.json +4 -0
- package/artifacts/contracts/utils/FuseOldBridgeKill.sol/IUpgradeabilityOwnerStorage.json +24 -0
- package/artifacts/contracts/utils/FuseOldBridgeKill.sol/Initializable.dbg.json +4 -0
- package/artifacts/contracts/utils/FuseOldBridgeKill.sol/Initializable.json +24 -0
- package/artifacts/contracts/utils/FuseOldBridgeKill.sol/Ownable.dbg.json +4 -0
- package/artifacts/contracts/utils/FuseOldBridgeKill.sol/Ownable.json +56 -0
- package/artifacts/contracts/utils/FuseOldBridgeKill.sol/Upgradeable.dbg.json +4 -0
- package/artifacts/contracts/utils/FuseOldBridgeKill.sol/Upgradeable.json +10 -0
- package/artifacts/contracts/utils/GDFaucet.sol/GDFaucet.dbg.json +1 -1
- package/artifacts/contracts/utils/GDFaucet.sol/GDFaucet.json +2 -2
- package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/GoodDollarMintBurnWrapper.dbg.json +1 -1
- package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/GoodDollarMintBurnWrapper.json +2 -2
- package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/IRouter.dbg.json +1 -1
- package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/PausableControl.dbg.json +1 -1
- package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/TokenOperation.dbg.json +1 -1
- package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/TokenOperation.json +2 -2
- package/artifacts/contracts/utils/IdentityFix.sol/IdentityFix.dbg.json +1 -1
- package/artifacts/contracts/utils/IdentityFix.sol/IdentityFix.json +2 -2
- package/artifacts/contracts/utils/LastauthReduction.sol/LastauthReduction.dbg.json +1 -1
- package/artifacts/contracts/utils/LastauthReduction.sol/LastauthReduction.json +2 -2
- package/artifacts/contracts/utils/MultiCall.sol/Multicall.dbg.json +1 -1
- package/artifacts/contracts/utils/MultichainBridgeHelper.sol/MultichainBridgeHelper.dbg.json +1 -1
- package/artifacts/contracts/utils/MultichainBridgeHelper.sol/MultichainBridgeHelper.json +2 -2
- package/artifacts/contracts/utils/NameService.sol/NameService.dbg.json +1 -1
- package/artifacts/contracts/utils/OneTimePayments.sol/OneTimePayments.dbg.json +1 -1
- package/artifacts/contracts/utils/OneTimePayments.sol/OneTimePayments.json +2 -2
- package/artifacts/contracts/utils/OneTimePaymentsV2.sol/OneTimePaymentsV2.dbg.json +1 -1
- package/artifacts/contracts/utils/OneTimePaymentsV2.sol/OneTimePaymentsV2.json +2 -2
- package/artifacts/contracts/utils/ProtocolUpgrade.sol/OldMarketMaker.dbg.json +1 -1
- package/artifacts/contracts/utils/ProtocolUpgrade.sol/ProtocolUpgrade.dbg.json +1 -1
- package/artifacts/contracts/utils/ProtocolUpgrade.sol/ProtocolUpgrade.json +2 -2
- package/artifacts/contracts/utils/ProtocolUpgradeFuse.sol/ProtocolUpgradeFuse.dbg.json +1 -1
- package/artifacts/contracts/utils/ProtocolUpgradeFuse.sol/ProtocolUpgradeFuse.json +2 -2
- package/artifacts/contracts/utils/ProtocolUpgradeFuseRecover.sol/ProtocolUpgradeFuseRecover.dbg.json +1 -1
- package/artifacts/contracts/utils/ProtocolUpgradeFuseRecover.sol/ProtocolUpgradeFuseRecover.json +2 -2
- package/artifacts/contracts/utils/ProtocolUpgradeRecover.sol/ProtocolUpgradeRecover.dbg.json +1 -1
- package/artifacts/contracts/utils/ProtocolUpgradeRecover.sol/ProtocolUpgradeRecover.json +2 -2
- package/artifacts/contracts/utils/ProxyFactory1967.sol/ERC1967Proxy.dbg.json +1 -1
- package/artifacts/contracts/utils/ProxyFactory1967.sol/ProxyFactory1967.dbg.json +1 -1
- package/artifacts/contracts/utils/ReputationTestHelper.sol/ReputationTestHelper.dbg.json +1 -1
- package/artifacts/contracts/utils/ReputationTestHelper.sol/ReputationTestHelper.json +2 -2
- package/artifacts/contracts/utils/ReserveRestore.sol/ReserveRestore.dbg.json +4 -0
- package/artifacts/contracts/utils/ReserveRestore.sol/ReserveRestore.json +91 -0
- package/contracts/Interfaces.sol +122 -0
- package/contracts/fuseFaucet/SuperfluidFacuet.sol +129 -0
- package/contracts/governance/CompoundVotingMachine.sol +26 -11
- package/contracts/governance/StakersDistribution.sol +13 -13
- package/contracts/reserve/DistributionHelper.sol +29 -10
- package/contracts/reserve/ExchangeHelper.sol +16 -7
- package/contracts/reserve/GoodMarketMaker.sol +43 -53
- package/contracts/reserve/GoodReserveCDai.sol +44 -16
- package/contracts/staking/GoodFundManager.sol +44 -4
- package/contracts/utils/AdminWallet.sol +4 -6
- package/contracts/utils/BuyGDClone.sol +0 -122
- package/contracts/utils/FuseOldBridgeKill.sol +123 -0
- package/contracts/utils/ReserveRestore.sol +157 -0
- package/dist/artifacts/contracts/identity/IdentityV2.sol/IdentityV2.json +2 -2
- package/dist/artifacts/contracts/token/superfluid/SuperGoodDollar.sol/SuperGoodDollar.json +2 -2
- package/hardhat.config.ts +21 -39
- package/package.json +3 -3
- package/releases/deployment.json +6 -0
- package/scripts/multichain-deploy/0_proxyFactory-deploy.ts +20 -15
- package/scripts/multichain-deploy/7_superfluidfaucet-deploy.ts +95 -0
- package/scripts/multichain-deploy/helpers.ts +8 -8
- package/scripts/proposals/reserveRestore.ts +429 -0
- package/scripts/test/localOldDaoDeploy.ts +2 -1
- package/test/governance/CompoundVotingMachine.daoscheme.ts +3 -0
- package/test/governance/CompoundVotingMachine.guardian.test.ts +76 -21
- package/test/governance/CompoundVotingMachine.state.test.ts +31 -28
- package/test/governance/StakersDistribution.test.ts +79 -5
- package/test/helpers.ts +7 -0
- package/test/reserve/DistributionHelper.test.ts +10 -10
- package/test/reserve/GoodMarketMaker.test.ts +75 -26
- package/test/staking/StakingRewards.test.ts +106 -29
- package/test/utils/ProtocolUpgrade.test.ts +1 -0
- package/types/contracts/{utils/BuyGDClone.sol → Interfaces.sol}/IQuoterV2.ts +1 -1
- package/types/contracts/{utils/BuyGDClone.sol → Interfaces.sol}/ISwapRouter.ts +1 -1
- package/types/contracts/Interfaces.sol/index.ts +2 -0
- package/types/contracts/fuseFaucet/SuperfluidFacuet.sol/SuperfluidFaucet.ts +867 -0
- package/types/contracts/fuseFaucet/SuperfluidFacuet.sol/index.ts +4 -0
- package/types/contracts/fuseFaucet/index.ts +2 -0
- package/types/contracts/governance/CompoundVotingMachine.ts +44 -3
- package/types/contracts/mocks/DistributionHelperTest.sol/DistributionHelperTest.ts +35 -0
- package/types/contracts/mocks/DistributionHelperTest.sol/DistributionHelperTestHelper.ts +35 -0
- package/types/contracts/mocks/GoodFundManagerTest.ts +35 -0
- package/types/contracts/reserve/DistributionHelper.ts +35 -0
- package/types/contracts/reserve/GoodMarketMaker.ts +3 -3
- package/types/contracts/reserve/GoodReserveCDai.sol/GoodReserveCDai.ts +5 -5
- package/types/contracts/staking/GoodFundManager.ts +35 -0
- package/types/contracts/utils/AdminWallet.ts +0 -34
- package/types/contracts/utils/BuyGDClone.sol/index.ts +0 -2
- package/types/contracts/utils/FuseOldBridgeKill.sol/FuseOldBridgeKill.ts +108 -0
- package/types/contracts/utils/FuseOldBridgeKill.sol/IUpgradeabilityOwnerStorage.ts +89 -0
- package/types/contracts/utils/FuseOldBridgeKill.sol/Initializable.ts +87 -0
- package/types/contracts/utils/FuseOldBridgeKill.sol/Ownable.ts +148 -0
- package/types/contracts/utils/FuseOldBridgeKill.sol/index.ts +7 -0
- package/types/contracts/utils/ReserveRestore.ts +201 -0
- package/types/contracts/utils/index.ts +3 -0
- package/types/factories/contracts/{utils/BuyGDClone.sol → Interfaces.sol}/IQuoterV2__factory.ts +1 -1
- package/types/factories/contracts/{utils/BuyGDClone.sol → Interfaces.sol}/ISwapRouter__factory.ts +1 -1
- package/types/factories/contracts/Interfaces.sol/index.ts +2 -0
- package/types/factories/contracts/fuseFaucet/Faucet__factory.ts +1 -1
- package/types/factories/contracts/fuseFaucet/FuseFaucetV2__factory.ts +1 -1
- package/types/factories/contracts/fuseFaucet/FuseFaucet__factory.ts +1 -1
- package/types/factories/contracts/fuseFaucet/SuperfluidFacuet.sol/SuperfluidFaucet__factory.ts +587 -0
- package/types/factories/contracts/fuseFaucet/SuperfluidFacuet.sol/index.ts +4 -0
- package/types/factories/contracts/fuseFaucet/index.ts +1 -0
- package/types/factories/contracts/governance/ClaimersDistribution__factory.ts +1 -1
- package/types/factories/contracts/governance/CompoundVotingMachine__factory.ts +19 -1
- package/types/factories/contracts/governance/GReputation__factory.ts +1 -1
- package/types/factories/contracts/governance/GoodDollarStaking.sol/GoodDollarStaking__factory.ts +1 -1
- package/types/factories/contracts/governance/GovernanceStaking__factory.ts +1 -1
- package/types/factories/contracts/governance/Reputation__factory.ts +1 -1
- package/types/factories/contracts/governance/StakersDistribution__factory.ts +1 -1
- package/types/factories/contracts/identity/IdentityV2__factory.ts +1 -1
- package/types/factories/contracts/invite/InvitesFuseV2__factory.ts +1 -1
- package/types/factories/contracts/invite/InvitesV1__factory.ts +1 -1
- package/types/factories/contracts/invite/InvitesV2__factory.ts +1 -1
- package/types/factories/contracts/invite/OneTimeReward__factory.ts +1 -1
- package/types/factories/contracts/mocks/DistributionBridgeMock__factory.ts +1 -1
- package/types/factories/contracts/mocks/DistributionHelperTest.sol/DistributionHelperTestHelper__factory.ts +20 -1
- package/types/factories/contracts/mocks/DistributionHelperTest.sol/DistributionHelperTest__factory.ts +20 -1
- package/types/factories/contracts/mocks/GoodCompoundStakingTest__factory.ts +1 -1
- package/types/factories/contracts/mocks/GoodDollarStakingMock__factory.ts +1 -1
- package/types/factories/contracts/mocks/GoodFundManagerTest__factory.ts +20 -1
- package/types/factories/contracts/mocks/IdentityMock__factory.ts +1 -1
- package/types/factories/contracts/mocks/MultichainRouterMock.sol/MultichainRouterMock__factory.ts +1 -1
- package/types/factories/contracts/mocks/OverMintTester.sol/OverMintTester__factory.ts +1 -1
- package/types/factories/contracts/mocks/OverMintTesterRegularStake__factory.ts +1 -1
- package/types/factories/contracts/mocks/SwapHelperTest__factory.ts +1 -1
- package/types/factories/contracts/mocks/UpgradableMocks.sol/UpgradableMock2__factory.ts +1 -1
- package/types/factories/contracts/mocks/UpgradableMocks.sol/UpgradableMock3__factory.ts +1 -1
- package/types/factories/contracts/mocks/UpgradableMocks.sol/UpgradableMock4__factory.ts +1 -1
- package/types/factories/contracts/mocks/UpgradableMocks.sol/UpgradableMock__factory.ts +1 -1
- package/types/factories/contracts/reserve/DistributionHelper__factory.ts +20 -1
- package/types/factories/contracts/reserve/ExchangeHelper__factory.ts +1 -1
- package/types/factories/contracts/reserve/GoodMarketMaker__factory.ts +5 -5
- package/types/factories/contracts/reserve/GoodReserveCDai.sol/GoodReserveCDai__factory.ts +2 -2
- package/types/factories/contracts/staking/BaseShareFieldV2__factory.ts +1 -1
- package/types/factories/contracts/staking/BaseShareField__factory.ts +1 -1
- package/types/factories/contracts/staking/DonationsStaking__factory.ts +1 -1
- package/types/factories/contracts/staking/FuseStakingV3.sol/FuseStakingV3__factory.ts +1 -1
- package/types/factories/contracts/staking/GoodFundManager__factory.ts +20 -1
- package/types/factories/contracts/staking/UniswapV2SwapHelper__factory.ts +1 -1
- package/types/factories/contracts/staking/aave/AaveStakingFactory__factory.ts +1 -1
- package/types/factories/contracts/staking/aave/GoodAaveStakingV2__factory.ts +1 -1
- package/types/factories/contracts/staking/aave/GoodAaveStaking__factory.ts +1 -1
- package/types/factories/contracts/staking/compound/CompoundStakingFactory__factory.ts +1 -1
- package/types/factories/contracts/staking/compound/GoodCompoundStakingV2__factory.ts +1 -1
- package/types/factories/contracts/staking/compound/GoodCompoundStaking__factory.ts +1 -1
- package/types/factories/contracts/token/GoodDollar__factory.ts +1 -1
- package/types/factories/contracts/token/superfluid/SuperGoodDollar__factory.ts +1 -1
- package/types/factories/contracts/ubi/UBISchemeV2__factory.ts +1 -1
- package/types/factories/contracts/ubi/UBIScheme__factory.ts +1 -1
- package/types/factories/contracts/utils/AdminWalletFuse__factory.ts +1 -1
- package/types/factories/contracts/utils/AdminWallet__factory.ts +1 -21
- package/types/factories/contracts/utils/BulkWhitelist__factory.ts +1 -1
- package/types/factories/contracts/utils/BuyAndBridgeHelper__factory.ts +1 -1
- package/types/factories/contracts/utils/BuyGDClone.sol/BuyGDCloneFactory__factory.ts +1 -1
- package/types/factories/contracts/utils/BuyGDClone.sol/BuyGDClone__factory.ts +1 -1
- package/types/factories/contracts/utils/BuyGDClone.sol/DonateGDClone__factory.ts +1 -1
- package/types/factories/contracts/utils/BuyGDClone.sol/index.ts +0 -2
- package/types/factories/contracts/utils/DAOContract__factory.ts +1 -1
- package/types/factories/contracts/utils/DAOUpgradeableContract__factory.ts +1 -1
- package/types/factories/contracts/utils/FuseOldBridgeKill.sol/FuseOldBridgeKill__factory.ts +82 -0
- package/types/factories/contracts/utils/FuseOldBridgeKill.sol/IUpgradeabilityOwnerStorage__factory.ts +43 -0
- package/types/factories/contracts/utils/FuseOldBridgeKill.sol/Initializable__factory.ts +75 -0
- package/types/factories/contracts/utils/FuseOldBridgeKill.sol/Ownable__factory.ts +105 -0
- package/types/factories/contracts/utils/FuseOldBridgeKill.sol/index.ts +7 -0
- package/types/factories/contracts/utils/GDFaucet__factory.ts +1 -1
- package/types/factories/contracts/utils/GoodDollarMintBurnWrapper.sol/GoodDollarMintBurnWrapper__factory.ts +1 -1
- package/types/factories/contracts/utils/IdentityFix__factory.ts +1 -1
- package/types/factories/contracts/utils/LastauthReduction__factory.ts +1 -1
- package/types/factories/contracts/utils/MultichainBridgeHelper__factory.ts +1 -1
- package/types/factories/contracts/utils/OneTimePaymentsV2__factory.ts +1 -1
- package/types/factories/contracts/utils/OneTimePayments__factory.ts +1 -1
- package/types/factories/contracts/utils/ProtocolUpgrade.sol/ProtocolUpgrade__factory.ts +1 -1
- package/types/factories/contracts/utils/ProtocolUpgradeFuseRecover__factory.ts +1 -1
- package/types/factories/contracts/utils/ProtocolUpgradeFuse__factory.ts +1 -1
- package/types/factories/contracts/utils/ProtocolUpgradeRecover__factory.ts +1 -1
- package/types/factories/contracts/utils/ReputationTestHelper__factory.ts +1 -1
- package/types/factories/contracts/utils/ReserveRestore__factory.ts +144 -0
- package/types/factories/contracts/utils/index.ts +2 -0
- package/types/hardhat.d.ts +70 -16
- package/types/index.ts +12 -4
- package/artifacts/contracts/utils/BuyGDClone.sol/IQuoterV2.dbg.json +0 -4
- package/artifacts/contracts/utils/BuyGDClone.sol/ISwapRouter.dbg.json +0 -4
|
@@ -89,6 +89,9 @@ describe("CompoundVotingMachine#DAOScheme", () => {
|
|
|
89
89
|
await grep.mint(acct.address, ethers.BigNumber.from("500000"));
|
|
90
90
|
|
|
91
91
|
queuePeriod = await gov.queuePeriod().then(_ => _.toNumber());
|
|
92
|
+
|
|
93
|
+
//disable guardian
|
|
94
|
+
await gov.renounceGuardian()
|
|
92
95
|
});
|
|
93
96
|
|
|
94
97
|
///cell 0 - votingPeriod blocks, 1 - quoromPercentage, 2 - proposalPercentage,3 - proposalMaxOperations, 4 - voting delay blocks, 5 - queuePeriod time
|
|
@@ -185,13 +185,13 @@ describe("CompoundVotingMachine#Guardian", () => {
|
|
|
185
185
|
|
|
186
186
|
await gov
|
|
187
187
|
.connect(signers[4])
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
188
|
+
["propose(address[],uint256[],string[],bytes[],string)"](
|
|
189
|
+
targets,
|
|
190
|
+
values,
|
|
191
|
+
signatures,
|
|
192
|
+
callDatas,
|
|
193
|
+
"do nothing"
|
|
194
|
+
);
|
|
195
195
|
let proposalId = await gov.latestProposalIds(signers[4].address);
|
|
196
196
|
await advanceBlocks(1);
|
|
197
197
|
|
|
@@ -204,34 +204,89 @@ describe("CompoundVotingMachine#Guardian", () => {
|
|
|
204
204
|
await grep.delegateTo(root.address); //delegate back our votes
|
|
205
205
|
});
|
|
206
206
|
|
|
207
|
+
it("Should not be able to pass proposal without guardian approval", async () => {
|
|
208
|
+
let targets = [gov.address];
|
|
209
|
+
let values = ["0"];
|
|
210
|
+
let signatures = ["setGuardian(address)"];
|
|
211
|
+
let callDatas = [encodeParameters(["address"], [signers[1].address])];
|
|
212
|
+
|
|
213
|
+
await gov
|
|
214
|
+
.connect(root)
|
|
215
|
+
["propose(address[],uint256[],string[],bytes[],string)"](
|
|
216
|
+
targets,
|
|
217
|
+
values,
|
|
218
|
+
signatures,
|
|
219
|
+
callDatas,
|
|
220
|
+
"set guardian"
|
|
221
|
+
);
|
|
222
|
+
let proposalBlock = +(await ethers.provider.getBlockNumber());
|
|
223
|
+
let proposalId = await gov.latestProposalIds(root.address);
|
|
224
|
+
await advanceBlocks(1);
|
|
225
|
+
await gov.connect(root).castVote(proposalId, true);
|
|
226
|
+
await increaseTime(queuePeriod);
|
|
227
|
+
expect(states[await gov.state(proposalId)]).to.equal("Succeeded");
|
|
228
|
+
|
|
229
|
+
await expect(gov.execute(proposalId)).revertedWith(/not approved/);
|
|
230
|
+
|
|
231
|
+
})
|
|
232
|
+
|
|
207
233
|
it("Should be able to pass proposal to change guardian", async () => {
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
234
|
+
let targets = [gov.address];
|
|
235
|
+
let values = ["0"];
|
|
236
|
+
let signatures = ["setGuardian(address)"];
|
|
237
|
+
let callDatas = [encodeParameters(["address"], [signers[2].address])];
|
|
238
|
+
|
|
239
|
+
await gov
|
|
240
|
+
.connect(root)
|
|
241
|
+
["propose(address[],uint256[],string[],bytes[],string)"](
|
|
242
|
+
targets,
|
|
243
|
+
values,
|
|
244
|
+
signatures,
|
|
245
|
+
callDatas,
|
|
246
|
+
"set guardian"
|
|
214
247
|
);
|
|
248
|
+
let proposalBlock = +(await ethers.provider.getBlockNumber());
|
|
249
|
+
let proposalId = await gov.latestProposalIds(root.address);
|
|
250
|
+
await advanceBlocks(1);
|
|
251
|
+
await gov.connect(root).castVote(proposalId, true);
|
|
252
|
+
await increaseTime(queuePeriod);
|
|
253
|
+
expect(states[await gov.state(proposalId)]).to.equal("Succeeded");
|
|
254
|
+
|
|
255
|
+
await gov.connect(signers[1]).approveProposal(proposalId)
|
|
256
|
+
|
|
257
|
+
await gov.execute(proposalId);
|
|
258
|
+
expect(states[await gov.state(proposalId)]).to.equal("Executed");
|
|
259
|
+
|
|
260
|
+
//acct should now have 1M after proposal minted rep
|
|
261
|
+
expect(await gov.guardian()).to.equal(signers[2].address);
|
|
262
|
+
});
|
|
263
|
+
|
|
264
|
+
it("Should be able to pass proposal without approval if no guardian set", async () => {
|
|
215
265
|
let targets = [gov.address];
|
|
216
266
|
let values = ["0"];
|
|
217
267
|
let signatures = ["setGuardian(address)"];
|
|
218
268
|
let callDatas = [encodeParameters(["address"], [signers[1].address])];
|
|
219
269
|
|
|
270
|
+
await gov.connect(signers[2]).renounceGuardian()
|
|
271
|
+
|
|
272
|
+
expect(await gov.guardian()).equal(ethers.constants.AddressZero)
|
|
273
|
+
|
|
220
274
|
await gov
|
|
221
275
|
.connect(root)
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
276
|
+
["propose(address[],uint256[],string[],bytes[],string)"](
|
|
277
|
+
targets,
|
|
278
|
+
values,
|
|
279
|
+
signatures,
|
|
280
|
+
callDatas,
|
|
281
|
+
"set guardian"
|
|
282
|
+
);
|
|
283
|
+
|
|
230
284
|
let proposalId = await gov.latestProposalIds(root.address);
|
|
231
285
|
await advanceBlocks(1);
|
|
232
286
|
await gov.connect(root).castVote(proposalId, true);
|
|
233
287
|
await increaseTime(queuePeriod);
|
|
234
288
|
expect(states[await gov.state(proposalId)]).to.equal("Succeeded");
|
|
289
|
+
|
|
235
290
|
await gov.execute(proposalId);
|
|
236
291
|
expect(states[await gov.state(proposalId)]).to.equal("Executed");
|
|
237
292
|
|
|
@@ -107,6 +107,9 @@ describe("CompoundVotingMachine#States", () => {
|
|
|
107
107
|
votePeriod = await gov.votingPeriod().then(_ => _.toNumber());
|
|
108
108
|
queuePeriod = await gov.queuePeriod().then(_ => _.toNumber());
|
|
109
109
|
gracePeriod = await gov.gracePeriod().then(_ => _.toNumber());
|
|
110
|
+
|
|
111
|
+
//disable guardian
|
|
112
|
+
await gov.renounceGuardian()
|
|
110
113
|
});
|
|
111
114
|
|
|
112
115
|
it("Invalid for proposal not found", async () => {
|
|
@@ -130,13 +133,13 @@ describe("CompoundVotingMachine#States", () => {
|
|
|
130
133
|
await grep.delegateTo(actor.address);
|
|
131
134
|
await gov
|
|
132
135
|
.connect(actor)
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
136
|
+
["propose(address[],uint256[],string[],bytes[],string)"](
|
|
137
|
+
targets,
|
|
138
|
+
values,
|
|
139
|
+
signatures,
|
|
140
|
+
callDatas,
|
|
141
|
+
"do nothing"
|
|
142
|
+
);
|
|
140
143
|
let newProposalId = await gov.proposalCount();
|
|
141
144
|
|
|
142
145
|
// send away the delegates
|
|
@@ -212,13 +215,13 @@ describe("CompoundVotingMachine#States", () => {
|
|
|
212
215
|
await advanceBlocks(1);
|
|
213
216
|
await gov
|
|
214
217
|
.connect(actor)
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
218
|
+
["propose(address[],uint256[],string[],bytes[],string)"](
|
|
219
|
+
targets,
|
|
220
|
+
values,
|
|
221
|
+
signatures,
|
|
222
|
+
callDatas,
|
|
223
|
+
"do nothing"
|
|
224
|
+
);
|
|
222
225
|
let proposalId = await gov.latestProposalIds(actor.address);
|
|
223
226
|
await advanceBlocks(1);
|
|
224
227
|
await gov.connect(actor).castVote(proposalId, false);
|
|
@@ -237,13 +240,13 @@ describe("CompoundVotingMachine#States", () => {
|
|
|
237
240
|
await advanceBlocks(1);
|
|
238
241
|
await gov
|
|
239
242
|
.connect(actor)
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
243
|
+
["propose(address[],uint256[],string[],bytes[],string)"](
|
|
244
|
+
targets,
|
|
245
|
+
values,
|
|
246
|
+
signatures,
|
|
247
|
+
callDatas,
|
|
248
|
+
"do nothing"
|
|
249
|
+
);
|
|
247
250
|
let proposalId = await gov.latestProposalIds(actor.address);
|
|
248
251
|
await advanceBlocks(1);
|
|
249
252
|
await gov.connect(actor).castVote(proposalId, true);
|
|
@@ -310,13 +313,13 @@ describe("CompoundVotingMachine#States", () => {
|
|
|
310
313
|
await advanceBlocks(1);
|
|
311
314
|
await gov
|
|
312
315
|
.connect(signers[0])
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
316
|
+
["propose(address[],uint256[],string[],bytes[],string)"](
|
|
317
|
+
targets,
|
|
318
|
+
values,
|
|
319
|
+
signatures,
|
|
320
|
+
callDatas,
|
|
321
|
+
"do nothing"
|
|
322
|
+
);
|
|
320
323
|
let proposalId = await gov.proposalCount();
|
|
321
324
|
await advanceBlocks(1);
|
|
322
325
|
|
|
@@ -652,7 +652,6 @@ describe("StakersDistribution - staking with GD and get Rewards in GDAO", () =>
|
|
|
652
652
|
);
|
|
653
653
|
await advanceBlocks(4);
|
|
654
654
|
const gdaoBalanceBeforeWithdraw = await grep.balanceOf(staker.address);
|
|
655
|
-
console.log({ gdaoBalanceBeforeWithdraw, rewardsPerBlock });
|
|
656
655
|
await simpleStaking1.connect(staker).withdrawStake(stakingAmount, false);
|
|
657
656
|
const withdrawBlockNumber = await ethers.provider.getBlockNumber();
|
|
658
657
|
await stakersDistribution.claimReputation(staker.address, [
|
|
@@ -903,8 +902,8 @@ describe("StakersDistribution - staking with GD and get Rewards in GDAO", () =>
|
|
|
903
902
|
staker.address,
|
|
904
903
|
simpleStaking1.address
|
|
905
904
|
);
|
|
906
|
-
expect(userMintedRewardAfterStake.eq(0)
|
|
907
|
-
expect(userPendingRewardAfterStake.gt(0)
|
|
905
|
+
expect(userMintedRewardAfterStake).eq(0);
|
|
906
|
+
expect(userPendingRewardAfterStake).gt(0);
|
|
908
907
|
|
|
909
908
|
await stakersDistribution.claimReputation(staker.address, [
|
|
910
909
|
simpleStaking1.address
|
|
@@ -915,8 +914,8 @@ describe("StakersDistribution - staking with GD and get Rewards in GDAO", () =>
|
|
|
915
914
|
staker.address,
|
|
916
915
|
simpleStaking1.address
|
|
917
916
|
);
|
|
918
|
-
expect(userMintedRewardAfterClaim.gt(0)
|
|
919
|
-
expect(userPendingRewardAfterClaim.eq(0)
|
|
917
|
+
expect(userMintedRewardAfterClaim).gt(0);
|
|
918
|
+
expect(userPendingRewardAfterClaim).eq(0);
|
|
920
919
|
});
|
|
921
920
|
|
|
922
921
|
async function getUserMintedAndPendingRewards(
|
|
@@ -933,4 +932,79 @@ describe("StakersDistribution - staking with GD and get Rewards in GDAO", () =>
|
|
|
933
932
|
|
|
934
933
|
return [userMintedReward, userPendingReward];
|
|
935
934
|
}
|
|
935
|
+
|
|
936
|
+
it("should update user rewards when monthly rate has changed", async () => {
|
|
937
|
+
const goodFundManagerFactory = await ethers.getContractFactory(
|
|
938
|
+
"GoodFundManager"
|
|
939
|
+
);
|
|
940
|
+
|
|
941
|
+
const simpleStaking1 = await deployDaiStaking();
|
|
942
|
+
const ictrl = await ethers.getContractAt(
|
|
943
|
+
"Controller",
|
|
944
|
+
controller,
|
|
945
|
+
schemeMock
|
|
946
|
+
);
|
|
947
|
+
const currentBlockNumber = await ethers.provider.getBlockNumber();
|
|
948
|
+
let encodedData = goodFundManagerFactory.interface.encodeFunctionData(
|
|
949
|
+
"setStakingReward",
|
|
950
|
+
[
|
|
951
|
+
"100000",
|
|
952
|
+
simpleStaking1.address,
|
|
953
|
+
currentBlockNumber - 5,
|
|
954
|
+
currentBlockNumber + 20,
|
|
955
|
+
false
|
|
956
|
+
] // set 10 gd per block
|
|
957
|
+
);
|
|
958
|
+
|
|
959
|
+
await ictrl.genericCall(goodFundManager.address, encodedData, avatar, 0);
|
|
960
|
+
|
|
961
|
+
let [userMintedRewardBeforeStake, userPendingRewardBeforeStake] =
|
|
962
|
+
await getUserMintedAndPendingRewards(
|
|
963
|
+
staker.address,
|
|
964
|
+
simpleStaking1.address
|
|
965
|
+
);
|
|
966
|
+
expect(userMintedRewardBeforeStake).to.eq("0");
|
|
967
|
+
expect(userPendingRewardBeforeStake).to.eq("0");
|
|
968
|
+
|
|
969
|
+
const stakingAmount = ethers.utils.parseEther("1000");
|
|
970
|
+
await dai["mint(address,uint256)"](staker.address, stakingAmount);
|
|
971
|
+
await dai.connect(staker).approve(simpleStaking1.address, stakingAmount);
|
|
972
|
+
await simpleStaking1.connect(staker).stake(stakingAmount, 0, false);
|
|
973
|
+
await advanceBlocks(5); //should accumulate some gdao rewards
|
|
974
|
+
|
|
975
|
+
const rewardsPerBlockBefore = await stakersDistribution.rewardsPerBlock(
|
|
976
|
+
simpleStaking1.address
|
|
977
|
+
);
|
|
978
|
+
|
|
979
|
+
// reduce rewarsd speed by half from 2m to 1m
|
|
980
|
+
let encoded = stakersDistribution.interface.encodeFunctionData(
|
|
981
|
+
"setMonthlyReputationDistribution",
|
|
982
|
+
[ethers.utils.parseEther("1000000")]
|
|
983
|
+
);
|
|
984
|
+
await genericCall(stakersDistribution.address, encoded);
|
|
985
|
+
const rewardsPerBlockAfter = await stakersDistribution.rewardsPerBlock(
|
|
986
|
+
simpleStaking1.address
|
|
987
|
+
);
|
|
988
|
+
let [userMintedRewardAfterStake, userPendingRewardAfterStake] =
|
|
989
|
+
await getUserMintedAndPendingRewards(
|
|
990
|
+
staker.address,
|
|
991
|
+
simpleStaking1.address
|
|
992
|
+
);
|
|
993
|
+
expect(userMintedRewardAfterStake).eq(0);
|
|
994
|
+
expect(userPendingRewardAfterStake).gt(0);
|
|
995
|
+
|
|
996
|
+
await advanceBlocks(4); //should accumulate some gdao rewards
|
|
997
|
+
let [userMintedRewardAfterUpdate, userPendingRewardAfterUpdate] =
|
|
998
|
+
await getUserMintedAndPendingRewards(
|
|
999
|
+
staker.address,
|
|
1000
|
+
simpleStaking1.address
|
|
1001
|
+
);
|
|
1002
|
+
expect(userMintedRewardAfterUpdate).eq(0);
|
|
1003
|
+
// rewards speed has been reduced by half,
|
|
1004
|
+
expect(rewardsPerBlockAfter).lt(rewardsPerBlockBefore.mul(55).div(100));
|
|
1005
|
+
// was forced 4 blocks to pass since reward update
|
|
1006
|
+
expect(userPendingRewardAfterUpdate).eq(
|
|
1007
|
+
userPendingRewardAfterStake.add(rewardsPerBlockAfter.mul(4))
|
|
1008
|
+
);
|
|
1009
|
+
});
|
|
936
1010
|
});
|
package/test/helpers.ts
CHANGED
|
@@ -301,6 +301,9 @@ export const createDAO = async (tokenType: "super" | "regular" = "super") => {
|
|
|
301
301
|
kind: "uups"
|
|
302
302
|
}
|
|
303
303
|
);
|
|
304
|
+
|
|
305
|
+
console.log("deploying disthelper...");
|
|
306
|
+
|
|
304
307
|
let distHelper = await upgrades.deployProxy(
|
|
305
308
|
await ethers.getContractFactory("DistributionHelper"),
|
|
306
309
|
[nameService.address],
|
|
@@ -438,6 +441,10 @@ export const createDAO = async (tokenType: "super" | "regular" = "super") => {
|
|
|
438
441
|
await setDAOAddress("REPUTATION", reputation.address);
|
|
439
442
|
|
|
440
443
|
console.log("setting reserve token...");
|
|
444
|
+
await cDAI["mint(address,uint256)"](
|
|
445
|
+
goodReserve.address,
|
|
446
|
+
10000
|
|
447
|
+
);
|
|
441
448
|
await setReserveToken(
|
|
442
449
|
cDAI.address,
|
|
443
450
|
"100", //1gd
|
|
@@ -195,7 +195,7 @@ describe("DistributionHelper", () => {
|
|
|
195
195
|
expect(dr.transferType).to.equal(2);
|
|
196
196
|
});
|
|
197
197
|
|
|
198
|
-
it("should distribute via fuse bridge", async () => {
|
|
198
|
+
it("should not distribute via fuse bridge", async () => {
|
|
199
199
|
const { distHelper, bridge } = await loadFixture(fixture);
|
|
200
200
|
|
|
201
201
|
const recipient = signers[0];
|
|
@@ -215,15 +215,15 @@ describe("DistributionHelper", () => {
|
|
|
215
215
|
await genericCall(distHelper.address, encodedCall, avatar.address, 0);
|
|
216
216
|
|
|
217
217
|
await goodDollar.mint(distHelper.address, "100000000000");
|
|
218
|
-
await distHelper.onDistribution("100000000000");
|
|
219
|
-
expect(await goodDollar.balanceOf(bridge.address)).to.equal(
|
|
220
|
-
|
|
221
|
-
);
|
|
222
|
-
|
|
223
|
-
const events = await bridge.queryFilter(bridge.filters.OnToken());
|
|
224
|
-
expect(events[0].args.sender).to.equal(distHelper.address);
|
|
225
|
-
expect(events[0].args.amount).to.equal((100000000000 * 2000) / 10000);
|
|
226
|
-
expect(events[0].args.data).to.equal(recipient.address.toLowerCase());
|
|
218
|
+
await expect(distHelper.onDistribution("100000000000")).revertedWith("DEPRECATED");
|
|
219
|
+
// expect(await goodDollar.balanceOf(bridge.address)).to.equal(
|
|
220
|
+
// (100000000000 * 2000) / 10000
|
|
221
|
+
// );
|
|
222
|
+
|
|
223
|
+
// const events = await bridge.queryFilter(bridge.filters.OnToken());
|
|
224
|
+
// expect(events[0].args.sender).to.equal(distHelper.address);
|
|
225
|
+
// expect(events[0].args.amount).to.equal((100000000000 * 2000) / 10000);
|
|
226
|
+
// expect(events[0].args.data).to.equal(recipient.address.toLowerCase());
|
|
227
227
|
});
|
|
228
228
|
|
|
229
229
|
it("should distribute via layerzero bridge", async () => {
|
|
@@ -120,6 +120,22 @@ describe("GoodMarketMaker - calculate gd value at reserve", () => {
|
|
|
120
120
|
expect(onecDAIReturn.toNumber() / 100).to.be.equal(10000); //0.0001 cdai is 1 gd, so for 1eth you get 10000 gd (divide by 100 to account for 2 decimals precision)
|
|
121
121
|
});
|
|
122
122
|
|
|
123
|
+
it("should calculate mint UBI correctly for 8 decimals precision when price is 0.0001 and 100% ratio", async () => {
|
|
124
|
+
const expansion = await initializeToken(
|
|
125
|
+
cdai,
|
|
126
|
+
"100", //1gd
|
|
127
|
+
"10000", //0.0001 cDai
|
|
128
|
+
"1000000" //100% rr
|
|
129
|
+
);
|
|
130
|
+
const gdPrice = await marketMaker.currentPrice(cdai);
|
|
131
|
+
const toMint = await marketMaker.calculateMintInterest(cdai, "100000000");
|
|
132
|
+
const expectedTotalMinted = 10 ** 8 / gdPrice.toNumber(); //1cdai divided by gd price;
|
|
133
|
+
expect(expectedTotalMinted).to.be.equal(10000); //1k GD since price is 0.0001 cdai for 1 gd
|
|
134
|
+
expect(toMint.toString()).to.be.equal(
|
|
135
|
+
(expectedTotalMinted * 100).toString()
|
|
136
|
+
); //add 2 decimals precision
|
|
137
|
+
});
|
|
138
|
+
|
|
123
139
|
it("should update reserve ratio by days passed", async () => {
|
|
124
140
|
const expansion = await marketMaker.reserveRatioDailyExpansion();
|
|
125
141
|
// 20% yearly. set up in the constructor
|
|
@@ -144,16 +160,6 @@ describe("GoodMarketMaker - calculate gd value at reserve", () => {
|
|
|
144
160
|
).to.be.equal("994511"); // 998777 * 0.999388834642296000000000000^7
|
|
145
161
|
});
|
|
146
162
|
|
|
147
|
-
it("should calculate mint UBI correctly for 8 decimals precision", async () => {
|
|
148
|
-
const gdPrice = await marketMaker.currentPrice(cdai);
|
|
149
|
-
const toMint = await marketMaker.calculateMintInterest(cdai, "100000000");
|
|
150
|
-
const expectedTotalMinted = 10 ** 8 / gdPrice.toNumber(); //1cdai divided by gd price;
|
|
151
|
-
expect(expectedTotalMinted).to.be.equal(10000); //1k GD since price is 0.0001 cdai for 1 gd
|
|
152
|
-
expect(toMint.toString()).to.be.equal(
|
|
153
|
-
(expectedTotalMinted * 100).toString()
|
|
154
|
-
); //add 2 decimals precision
|
|
155
|
-
});
|
|
156
|
-
|
|
157
163
|
it("should not return a sell contribution if the given gd is less than the given contribution amount", async () => {
|
|
158
164
|
let dai = await deployDAIMock();
|
|
159
165
|
|
|
@@ -181,13 +187,27 @@ describe("GoodMarketMaker - calculate gd value at reserve", () => {
|
|
|
181
187
|
});
|
|
182
188
|
|
|
183
189
|
it("should be able to calculate and update bonding curve gd balance based on oncoming cDAI and the price stays the same", async () => {
|
|
184
|
-
|
|
190
|
+
let priceBefore = await marketMaker.currentPrice(cdai);
|
|
185
191
|
await marketMaker.mintInterest(cdai, BN.from(1e8));
|
|
192
|
+
let priceAfter = await marketMaker.currentPrice(cdai)
|
|
193
|
+
|
|
194
|
+
expect(priceAfter).gt(0)
|
|
195
|
+
expect(priceBefore).gt(0)
|
|
186
196
|
expect(
|
|
187
197
|
Math.floor(
|
|
188
|
-
(
|
|
189
|
-
).toString()
|
|
198
|
+
(priceAfter.toNumber() / 100)).toString()
|
|
190
199
|
).to.be.equal(Math.floor(priceBefore.toNumber() / 100).toString());
|
|
200
|
+
|
|
201
|
+
|
|
202
|
+
// very large amount of cdai
|
|
203
|
+
priceBefore = await marketMaker.currentPrice(cdai);
|
|
204
|
+
await marketMaker.mintInterest(cdai, ethers.utils.parseEther("1"));
|
|
205
|
+
priceAfter = await marketMaker.currentPrice(cdai)
|
|
206
|
+
|
|
207
|
+
console.log({ priceAfter, priceBefore })
|
|
208
|
+
expect(priceAfter).gt(0)
|
|
209
|
+
expect(priceBefore).gt(0)
|
|
210
|
+
expect(priceAfter).to.eq(priceBefore);
|
|
191
211
|
});
|
|
192
212
|
|
|
193
213
|
it("should not be able to mint interest by a non owner", async () => {
|
|
@@ -273,11 +293,12 @@ describe("GoodMarketMaker - calculate gd value at reserve", () => {
|
|
|
273
293
|
"800000" //80% rr
|
|
274
294
|
);
|
|
275
295
|
const price = await marketMaker.currentPrice(dai);
|
|
276
|
-
expect(price.toString()).to.be.equal("
|
|
296
|
+
expect(price.toString()).to.be.equal(ethers.utils.parseEther("0.000125")); //1gd is equal 0.0001/1*0.8 = 0.000125
|
|
277
297
|
const oneDAIReturn = await marketMaker.buyReturn(
|
|
278
298
|
dai,
|
|
279
299
|
ethers.utils.parseEther("1") //1Dai
|
|
280
300
|
);
|
|
301
|
+
|
|
281
302
|
//bancor formula to calcualte return
|
|
282
303
|
//gd return = gdsupply * ((1+tokenamount/tokensupply)^rr -1)
|
|
283
304
|
const expectedReturn = 1 * ((1 + 1 / 0.0001) ** 0.8 - 1);
|
|
@@ -292,16 +313,27 @@ describe("GoodMarketMaker - calculate gd value at reserve", () => {
|
|
|
292
313
|
dai,
|
|
293
314
|
ethers.utils.parseEther("1")
|
|
294
315
|
);
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
//
|
|
298
|
-
|
|
316
|
+
let reserveToken = await marketMaker.reserveTokens(dai);
|
|
317
|
+
|
|
318
|
+
//we expect price to stay the same p = reserve/supply*RR
|
|
319
|
+
const newPrice = reserveToken.reserveSupply.add(ethers.utils.parseEther("1")).mul(1e8).div(reserveToken.gdSupply.add(toMint).mul(reserveToken.reserveRatio))
|
|
320
|
+
expect(newPrice).equal(gdPrice)
|
|
321
|
+
|
|
322
|
+
// the formula is amountToMint = reserveInterest * tokenSupply / reserveBalance
|
|
323
|
+
const expectedTotalMinted = 10 ** 18 * reserveToken.gdSupply.toNumber() / reserveToken.reserveSupply.toNumber()
|
|
324
|
+
expect(expectedTotalMinted).to.be.equal(1000000);
|
|
299
325
|
expect(toMint.toString()).to.be.equal(
|
|
300
|
-
(expectedTotalMinted
|
|
326
|
+
(expectedTotalMinted).toString()
|
|
301
327
|
);
|
|
302
328
|
});
|
|
303
329
|
|
|
304
330
|
it("should calculate sell return with cDAI", async () => {
|
|
331
|
+
await initializeToken(
|
|
332
|
+
cdai,
|
|
333
|
+
"1000000000", //1gd
|
|
334
|
+
"100000000000", //0.0001 cDai
|
|
335
|
+
"900000" //80% rr
|
|
336
|
+
);
|
|
305
337
|
const gDReturn = await marketMaker.sellReturn(
|
|
306
338
|
cdai,
|
|
307
339
|
10 //0.1 gd
|
|
@@ -515,19 +547,36 @@ describe("GoodMarketMaker - calculate gd value at reserve", () => {
|
|
|
515
547
|
});
|
|
516
548
|
|
|
517
549
|
it("should calculate amount of gd to mint based on incoming cDAI without effecting bonding curve price", async () => {
|
|
518
|
-
|
|
519
|
-
const toMint = await marketMaker.calculateMintInterest(
|
|
550
|
+
await initializeToken(
|
|
520
551
|
dai,
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
expect(toMint.toString()).to.be.equal(
|
|
525
|
-
Math.floor(totalMinted * 100).toString()
|
|
552
|
+
6e11,
|
|
553
|
+
ethers.utils.parseEther("600000"),
|
|
554
|
+
5e5
|
|
526
555
|
);
|
|
556
|
+
|
|
557
|
+
const priceBefore = await marketMaker.currentPrice(dai);
|
|
558
|
+
|
|
559
|
+
await marketMaker.mintInterest(dai, ethers.utils.parseEther("100"))
|
|
527
560
|
const priceAfter = await marketMaker.currentPrice(dai);
|
|
528
561
|
expect(priceBefore.toString()).to.be.equal(priceAfter.toString());
|
|
529
562
|
});
|
|
530
563
|
|
|
564
|
+
it("should calculate amount of gd to mint based on incoming cDAI with small precision issue effecting bonding curve price in very low amounts", async () => {
|
|
565
|
+
await initializeToken(
|
|
566
|
+
dai,
|
|
567
|
+
600,
|
|
568
|
+
600000000,
|
|
569
|
+
5e5
|
|
570
|
+
);
|
|
571
|
+
|
|
572
|
+
const priceBefore = await marketMaker.currentPrice(dai);
|
|
573
|
+
|
|
574
|
+
await marketMaker.mintInterest(dai, 60000)
|
|
575
|
+
const priceAfter = await marketMaker.currentPrice(dai);
|
|
576
|
+
expect(priceBefore).equal(200000000)
|
|
577
|
+
expect(priceAfter).equal(200020000)
|
|
578
|
+
});
|
|
579
|
+
|
|
531
580
|
it("should not change the reserve ratio when calculate how much decrease it for the reservetoken", async () => {
|
|
532
581
|
let reserveTokenBefore = await marketMaker.reserveTokens(cdai);
|
|
533
582
|
let reserveRatioBefore = reserveTokenBefore.reserveRatio;
|