@gooddollar/goodprotocol 2.0.25-beta.0 → 2.0.25-beta.10
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/BulkWhitelist.min.json +1 -0
- 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/FuseStakingV3.min.json +1 -1
- 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/InvitesV2.min.json +1 -1
- package/artifacts/abis/LastauthReduction.min.json +1 -0
- package/artifacts/abis/OneTimeReward.min.json +1 -0
- package/artifacts/abis/Ownable.min.json +1 -0
- package/artifacts/abis/ReserveRestore.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/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 +15 -2
- package/artifacts/contracts/invite/OneTimeReward.sol/OneTimeReward.dbg.json +4 -0
- package/artifacts/contracts/invite/OneTimeReward.sol/OneTimeReward.json +291 -0
- 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 +7 -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 -2
- 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 +4 -0
- package/artifacts/contracts/utils/BulkWhitelist.sol/BulkWhitelist.json +67 -0
- 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 +4 -0
- package/artifacts/contracts/utils/LastauthReduction.sol/LastauthReduction.json +81 -0
- 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/governance/CompoundVotingMachine.sol +26 -11
- package/contracts/governance/StakersDistribution.sol +13 -13
- package/contracts/invite/InvitesV2.sol +60 -43
- package/contracts/invite/OneTimeReward.sol +87 -0
- 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/FuseStakingV3.sol +4 -2
- package/contracts/staking/GoodFundManager.sol +44 -4
- package/contracts/utils/BulkWhitelist.sol +51 -0
- package/contracts/utils/BuyGDClone.sol +0 -122
- package/contracts/utils/FuseOldBridgeKill.sol +123 -0
- package/contracts/utils/LastauthReduction.sol +92 -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/dist/test-sdk/deploySuperGoodDollar.js +1 -1
- package/package.json +19 -20
- package/releases/deployment.json +612 -599
- package/scripts/analytics/activeStakers.ts +25 -0
- package/scripts/analytics/activeUsersCount.ts +80 -26
- package/scripts/analytics/activeWalletsStats.ts +155 -22
- package/scripts/analytics/checkBridgeBalances.ts +442 -0
- package/scripts/deployFullDAO.ts +6 -4
- package/scripts/fv.ts +148 -35
- package/scripts/multichain-deploy/helpers.ts +10 -8
- package/scripts/proposals/identityAuthPeriod.ts +229 -0
- package/scripts/proposals/reserveRestore.ts +429 -0
- package/scripts/test/localOldDaoDeploy.ts +2 -1
- package/scripts/utils.ts +28 -16
- 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 +9 -0
- package/test/invite/InvitesV2.test.ts +165 -271
- package/test/reserve/DistributionHelper.test.ts +10 -10
- package/test/reserve/GoodMarketMaker.test.ts +75 -26
- package/test/reserve/GoodReserveCDai.test.ts +2 -1
- package/test/staking/FuseStaking.test.ts +23 -54
- package/test/staking/StakingRewards.test.ts +106 -29
- package/test/utils/ProtocolUpgrade.test.ts +1 -0
- package/tsconfig.json +1 -1
- package/types/@openzeppelin/contracts/access/Ownable.ts +175 -0
- package/types/@openzeppelin/contracts/access/index.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/governance/CompoundVotingMachine.ts +44 -3
- package/types/contracts/invite/InvitesV2.ts +32 -0
- package/types/contracts/invite/OneTimeReward.ts +521 -0
- package/types/contracts/invite/index.ts +1 -0
- 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/FuseStakingV3.sol/FuseStakingV3.ts +7 -2
- package/types/contracts/staking/GoodFundManager.ts +35 -0
- package/types/contracts/utils/BulkWhitelist.ts +153 -0
- 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/LastauthReduction.ts +168 -0
- package/types/contracts/utils/ReserveRestore.ts +201 -0
- package/types/contracts/utils/index.ts +5 -0
- package/types/factories/@openzeppelin/contracts/access/Ownable__factory.ts +78 -0
- package/types/factories/@openzeppelin/contracts/access/index.ts +1 -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/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 +14 -1
- package/types/factories/contracts/invite/OneTimeReward__factory.ts +361 -0
- package/types/factories/contracts/invite/index.ts +1 -0
- 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 +6 -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 -1
- package/types/factories/contracts/utils/BulkWhitelist__factory.ts +123 -0
- 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 +134 -0
- 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 +4 -0
- package/types/hardhat.d.ts +97 -16
- package/types/index.ts +18 -4
- package/artifacts/contracts/utils/BuyGDClone.sol/IQuoterV2.dbg.json +0 -4
- package/artifacts/contracts/utils/BuyGDClone.sol/ISwapRouter.dbg.json +0 -4
- package/contracts/utils/.DS_Store +0 -0
- package/yarn.lock +0 -23715
|
@@ -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;
|
|
@@ -474,6 +474,7 @@ describe("GoodReserve - staking with cDAI mocks", () => {
|
|
|
474
474
|
"BancorFormula",
|
|
475
475
|
await marketMaker.getBancor()
|
|
476
476
|
);
|
|
477
|
+
|
|
477
478
|
const expectedReturn = await bancor.calculateSaleReturn(
|
|
478
479
|
supplyBefore.toString(),
|
|
479
480
|
reserveBalanceBefore.toString(),
|
|
@@ -966,7 +967,7 @@ describe("GoodReserve - staking with cDAI mocks", () => {
|
|
|
966
967
|
parseInt(reserveBalance.toString()) *
|
|
967
968
|
(1 -
|
|
968
969
|
(1 - amount.toNumber() / parseInt(supply.toString())) **
|
|
969
|
-
|
|
970
|
+
(1000000 / reserveToken.reserveRatio));
|
|
970
971
|
|
|
971
972
|
expected = Math.ceil((0.8 * expected) / 100) * 100; //deduct 20% contribution, allow 5 points precission mismatch (due to bancor pow estimation?), match solidity no floating point
|
|
972
973
|
//expected = Math.floor(0.8 * expected);
|
|
@@ -12,12 +12,7 @@ describe("FuseStakingV3", () => {
|
|
|
12
12
|
let founder, staker1, staker2;
|
|
13
13
|
let signers;
|
|
14
14
|
|
|
15
|
-
let uniswap: waffle.MockContract,
|
|
16
|
-
uniswapFactory,
|
|
17
|
-
uniswapPair,
|
|
18
|
-
gdusdcPair,
|
|
19
|
-
fusefusdPair,
|
|
20
|
-
ubiMock;
|
|
15
|
+
let uniswap: waffle.MockContract, uniswapFactory, uniswapPair, gdusdcPair, fusefusdPair, ubiMock;
|
|
21
16
|
|
|
22
17
|
const deployMocks = async () => {
|
|
23
18
|
let u = await hre.artifacts.readArtifact("Uniswap");
|
|
@@ -35,24 +30,14 @@ describe("FuseStakingV3", () => {
|
|
|
35
30
|
await uniswap.mock.WETH.returns(signers[3].address);
|
|
36
31
|
await uniswapFactory.mock.getPair.returns(uniswapPair.address);
|
|
37
32
|
await uniswapFactory.mock.getPair
|
|
38
|
-
.withArgs(
|
|
39
|
-
ethers.constants.AddressZero,
|
|
40
|
-
"0x620fd5fa44BE6af63715Ef4E65DDFA0387aD13F5"
|
|
41
|
-
)
|
|
33
|
+
.withArgs(ethers.constants.AddressZero, "0x620fd5fa44BE6af63715Ef4E65DDFA0387aD13F5")
|
|
42
34
|
.returns(gdusdcPair.address);
|
|
43
35
|
|
|
44
36
|
await uniswapFactory.mock.getPair
|
|
45
|
-
.withArgs(
|
|
46
|
-
signers[3].address,
|
|
47
|
-
"0x249BE57637D8B013Ad64785404b24aeBaE9B098B"
|
|
48
|
-
)
|
|
37
|
+
.withArgs(signers[3].address, "0x249BE57637D8B013Ad64785404b24aeBaE9B098B")
|
|
49
38
|
.returns(fusefusdPair.address);
|
|
50
39
|
|
|
51
|
-
await uniswapPair.mock.getReserves.returns(
|
|
52
|
-
ethers.utils.parseEther("1000"),
|
|
53
|
-
"100000",
|
|
54
|
-
"0"
|
|
55
|
-
);
|
|
40
|
+
await uniswapPair.mock.getReserves.returns(ethers.utils.parseEther("1000"), "100000", "0");
|
|
56
41
|
await gdusdcPair.mock.getReserves.returns("4984886100", "10789000000", "0");
|
|
57
42
|
await fusefusdPair.mock.getReserves.returns(
|
|
58
43
|
ethers.utils.parseEther("10000"),
|
|
@@ -67,9 +52,7 @@ describe("FuseStakingV3", () => {
|
|
|
67
52
|
await deployMocks();
|
|
68
53
|
|
|
69
54
|
let network = networkConfig.name;
|
|
70
|
-
staking = (await (
|
|
71
|
-
await ethers.getContractFactory("FuseStakingV3")
|
|
72
|
-
).deploy()) as FuseStakingV3;
|
|
55
|
+
staking = (await (await ethers.getContractFactory("FuseStakingV3")).deploy()) as FuseStakingV3;
|
|
73
56
|
|
|
74
57
|
await staking.initialize(uniswap.address, NULL_ADDRESS);
|
|
75
58
|
await staking.setUBIScheme(ubiMock.address);
|
|
@@ -80,54 +63,42 @@ describe("FuseStakingV3", () => {
|
|
|
80
63
|
});
|
|
81
64
|
|
|
82
65
|
it("should calc quantity with slippage", async () => {
|
|
83
|
-
const res = await staking[
|
|
84
|
-
"
|
|
85
|
-
|
|
66
|
+
const res = await staking["calcMaxTokenWithPriceImpact(uint256,uint256,uint256)"](
|
|
67
|
+
"6917100025787759640000",
|
|
68
|
+
"265724494",
|
|
69
|
+
ethers.utils.parseEther("500")
|
|
70
|
+
);
|
|
86
71
|
|
|
87
72
|
// const fuseQuantity = ethers.utils.formatEther(res);
|
|
88
73
|
expect(res.maxToken).to.gt(0);
|
|
89
|
-
expect(res.maxToken).to.equal(
|
|
90
|
-
|
|
91
|
-
);
|
|
92
|
-
expect(res.tokenOut).to.equal(7717004);
|
|
74
|
+
expect(res.maxToken).to.equal(BigNumber.from("6917100025787759640000").mul(6).div(1000));
|
|
75
|
+
expect(res.tokenOut).to.equal(1580111);
|
|
93
76
|
});
|
|
94
77
|
|
|
95
78
|
it("should calc quantity with uniswap mock", async () => {
|
|
96
|
-
const res = await staking["calcMaxFuseWithPriceImpact(uint256)"](
|
|
97
|
-
ethers.utils.parseEther("500")
|
|
98
|
-
);
|
|
79
|
+
const res = await staking["calcMaxFuseWithPriceImpact(uint256)"](ethers.utils.parseEther("500"));
|
|
99
80
|
|
|
100
81
|
// const fuseQuantity = ethers.utils.formatEther(res);
|
|
101
82
|
expect(res.fuseAmount).to.gt(0);
|
|
102
|
-
expect(res.fuseAmount).to.equal(ethers.utils.parseEther("
|
|
83
|
+
expect(res.fuseAmount).to.equal(ethers.utils.parseEther("6"));
|
|
103
84
|
|
|
104
|
-
await uniswapPair.mock.getReserves.returns(
|
|
105
|
-
|
|
106
|
-
"500000",
|
|
107
|
-
"0"
|
|
108
|
-
);
|
|
109
|
-
const res2 = await staking["calcMaxFuseWithPriceImpact(uint256)"](
|
|
110
|
-
ethers.utils.parseEther("500")
|
|
111
|
-
);
|
|
85
|
+
await uniswapPair.mock.getReserves.returns(ethers.utils.parseEther("100"), "500000", "0");
|
|
86
|
+
const res2 = await staking["calcMaxFuseWithPriceImpact(uint256)"](ethers.utils.parseEther("500"));
|
|
112
87
|
|
|
113
|
-
expect(res2.fuseAmount).to.equal(ethers.utils.parseEther("
|
|
88
|
+
expect(res2.fuseAmount).to.equal(ethers.utils.parseEther("0.6"));
|
|
114
89
|
});
|
|
115
90
|
|
|
116
91
|
it("should calculate gd/usdc quantity with 0 price impact ", async () => {
|
|
117
|
-
const res = await staking["calcMaxFuseUSDCWithPriceImpact(uint256)"](
|
|
118
|
-
ethers.utils.parseEther("10")
|
|
119
|
-
);
|
|
92
|
+
const res = await staking["calcMaxFuseUSDCWithPriceImpact(uint256)"](ethers.utils.parseEther("10"));
|
|
120
93
|
//exchanging 10 fuse which are equal 2$ USDC should have no significant price impact on usdc/gd swap so we should be able to swap the whole 10
|
|
121
94
|
expect(res.maxFuse).to.gt(0);
|
|
122
95
|
expect(res.maxFuse).to.equal(ethers.utils.parseEther("10"));
|
|
123
96
|
});
|
|
124
97
|
|
|
125
98
|
it("should detect gd/usdc price impact", async () => {
|
|
126
|
-
const res = await staking["calcMaxFuseUSDCWithPriceImpact(uint256)"](
|
|
127
|
-
ethers.utils.parseEther("10000")
|
|
128
|
-
);
|
|
99
|
+
const res = await staking["calcMaxFuseUSDCWithPriceImpact(uint256)"](ethers.utils.parseEther("10000"));
|
|
129
100
|
expect(res.maxFuse).to.lt(ethers.utils.parseEther("10000"));
|
|
130
|
-
expect(res.maxFuse).to.equal(ethers.utils.parseEther("
|
|
101
|
+
expect(res.maxFuse).to.equal(ethers.utils.parseEther("323.67")); //on fuse swap it was around 335$ on above gd/usdc reserves that reaches 3% impact, that means 335*5=1675fuse
|
|
131
102
|
});
|
|
132
103
|
|
|
133
104
|
it("should match fuseswap and allow to exchange +-4600 fuse to G$", async () => {
|
|
@@ -141,10 +112,8 @@ describe("FuseStakingV3", () => {
|
|
|
141
112
|
"0"
|
|
142
113
|
);
|
|
143
114
|
|
|
144
|
-
const res = await staking["calcMaxFuseUSDCWithPriceImpact(uint256)"](
|
|
145
|
-
|
|
146
|
-
);
|
|
147
|
-
expect(res.maxFuse).to.lt(ethers.utils.parseEther("5000"));
|
|
148
|
-
expect(res.maxFuse).to.gt(ethers.utils.parseEther("4500"));
|
|
115
|
+
const res = await staking["calcMaxFuseUSDCWithPriceImpact(uint256)"](ethers.utils.parseEther("10000"));
|
|
116
|
+
expect(res.maxFuse).to.lt(ethers.utils.parseEther("1000"));
|
|
117
|
+
expect(res.maxFuse).to.gt(ethers.utils.parseEther("450"));
|
|
149
118
|
});
|
|
150
119
|
});
|
|
@@ -47,8 +47,10 @@ describe("StakingRewards - staking with cDAI mocks and get Rewards in GoodDollar
|
|
|
47
47
|
genericCall,
|
|
48
48
|
goodCompoundStakingFactory,
|
|
49
49
|
goodCompoundStakingTestFactory,
|
|
50
|
+
runAsAvatarOnly,
|
|
50
51
|
deployStaking;
|
|
51
52
|
|
|
53
|
+
|
|
52
54
|
before(async () => {
|
|
53
55
|
[founder, staker, ...signers] = await ethers.getSigners();
|
|
54
56
|
schemeMock = signers.pop();
|
|
@@ -67,9 +69,11 @@ describe("StakingRewards - staking with cDAI mocks and get Rewards in GoodDollar
|
|
|
67
69
|
reserve,
|
|
68
70
|
setReserveToken,
|
|
69
71
|
genericCall: gc,
|
|
70
|
-
COMP
|
|
72
|
+
COMP,
|
|
73
|
+
runAsAvatarOnly: raao
|
|
71
74
|
} = await loadFixture(createDAO);
|
|
72
75
|
|
|
76
|
+
runAsAvatarOnly = raao
|
|
73
77
|
const cdaiFactory = await ethers.getContractFactory("cDAIMock");
|
|
74
78
|
const cBatFactory = await ethers.getContractFactory("cBATMock");
|
|
75
79
|
const goodFundManagerFactory = await ethers.getContractFactory(
|
|
@@ -447,6 +451,15 @@ describe("StakingRewards - staking with cDAI mocks and get Rewards in GoodDollar
|
|
|
447
451
|
expect(gdBalancerAfterWithdraw).to.be.equal(gdBalanceBeforeWithdraw);
|
|
448
452
|
});
|
|
449
453
|
|
|
454
|
+
it("shouldn't be able to collect interest when contract is not active", async () => {
|
|
455
|
+
const goodCompoundStaking2 = await deployStaking(null, null, "1728000");
|
|
456
|
+
await expect(
|
|
457
|
+
goodFundManager
|
|
458
|
+
.connect(staker)
|
|
459
|
+
.collectInterest([goodCompoundStaking2.address], true)
|
|
460
|
+
).revertedWith(/not a dao contract/);
|
|
461
|
+
});
|
|
462
|
+
|
|
450
463
|
// it("should set blacklisted false and mint rewards", async () => {
|
|
451
464
|
// const goodFundManagerFactory = await ethers.getContractFactory(
|
|
452
465
|
// "GoodFundManager"
|
|
@@ -1137,6 +1150,86 @@ describe("StakingRewards - staking with cDAI mocks and get Rewards in GoodDollar
|
|
|
1137
1150
|
expect(sortedArrays[1][0]).to.be.equal(cDAI1.address);
|
|
1138
1151
|
});
|
|
1139
1152
|
|
|
1153
|
+
// needs to come before next test where we blacklist the goodcompoundstaking contract
|
|
1154
|
+
it("should revert when colleced interest is not greater than gas cost when 2 months passed [ @skip-on-coverage ]", async () => {
|
|
1155
|
+
|
|
1156
|
+
// make sure expansion is very low
|
|
1157
|
+
await initializeToken(
|
|
1158
|
+
cDAI.address,
|
|
1159
|
+
"129966743722", //1gd
|
|
1160
|
+
"499870173594", //0.0001 cDai
|
|
1161
|
+
"1000000" //100% rr
|
|
1162
|
+
);
|
|
1163
|
+
await runAsAvatarOnly(
|
|
1164
|
+
goodReserve,
|
|
1165
|
+
"setReserveRatioDailyExpansion(uint256,uint256)",
|
|
1166
|
+
ethers.utils.parseEther("999999999"),
|
|
1167
|
+
ethers.utils.parseEther("1000000000")
|
|
1168
|
+
);
|
|
1169
|
+
|
|
1170
|
+
const currentBlockNumber = await ethers.provider.getBlockNumber();
|
|
1171
|
+
const currentBlock = await ethers.provider.getBlock(currentBlockNumber);
|
|
1172
|
+
|
|
1173
|
+
let encodedData = goodFundManager.interface.encodeFunctionData(
|
|
1174
|
+
"setStakingReward",
|
|
1175
|
+
[
|
|
1176
|
+
"1000",
|
|
1177
|
+
goodCompoundStaking.address,
|
|
1178
|
+
0,
|
|
1179
|
+
currentBlockNumber + 1000000,
|
|
1180
|
+
false
|
|
1181
|
+
] // set 10 gd per block
|
|
1182
|
+
);
|
|
1183
|
+
await genericCall(goodFundManager.address, encodedData);
|
|
1184
|
+
await ethers.provider.send("evm_setNextBlockTimestamp", [
|
|
1185
|
+
currentBlock.timestamp + 5185020
|
|
1186
|
+
]);
|
|
1187
|
+
await ethers.provider.send("evm_mine", []);
|
|
1188
|
+
console.log(await goodFundManager.activeContracts(0));
|
|
1189
|
+
await expect(
|
|
1190
|
+
goodFundManager.collectInterest([goodCompoundStaking.address], false)
|
|
1191
|
+
).revertedWith(/< gas costs/);
|
|
1192
|
+
});
|
|
1193
|
+
|
|
1194
|
+
it("should be able to mint ubi when 0 interest but ubi value > interestMultiplier*gas cost when 2 months passed [ @skip-on-coverage ]", async () => {
|
|
1195
|
+
|
|
1196
|
+
await initializeToken(
|
|
1197
|
+
cDAI.address,
|
|
1198
|
+
"129966743722", //1gd
|
|
1199
|
+
"499870173594", //0.0001 cDai
|
|
1200
|
+
"400000" //100% rr
|
|
1201
|
+
);
|
|
1202
|
+
await runAsAvatarOnly(
|
|
1203
|
+
goodReserve,
|
|
1204
|
+
"setReserveRatioDailyExpansion(uint256,uint256)",
|
|
1205
|
+
ethers.utils.parseEther("999999999"),
|
|
1206
|
+
ethers.utils.parseEther("1000000000")
|
|
1207
|
+
);
|
|
1208
|
+
|
|
1209
|
+
const currentBlockNumber = await ethers.provider.getBlockNumber();
|
|
1210
|
+
const currentBlock = await ethers.provider.getBlock(currentBlockNumber);
|
|
1211
|
+
|
|
1212
|
+
let encodedData = goodFundManager.interface.encodeFunctionData(
|
|
1213
|
+
"setStakingReward",
|
|
1214
|
+
[
|
|
1215
|
+
"1000",
|
|
1216
|
+
goodCompoundStaking.address,
|
|
1217
|
+
0,
|
|
1218
|
+
currentBlockNumber + 1000000,
|
|
1219
|
+
false
|
|
1220
|
+
] // set 10 gd per block
|
|
1221
|
+
);
|
|
1222
|
+
await genericCall(goodFundManager.address, encodedData);
|
|
1223
|
+
await ethers.provider.send("evm_setNextBlockTimestamp", [
|
|
1224
|
+
currentBlock.timestamp + 5185020
|
|
1225
|
+
]);
|
|
1226
|
+
await ethers.provider.send("evm_mine", []);
|
|
1227
|
+
console.log(await goodFundManager.activeContracts(0));
|
|
1228
|
+
await expect(
|
|
1229
|
+
goodFundManager.collectInterest([goodCompoundStaking.address], false)
|
|
1230
|
+
).revertedWith(/< gas costs/);
|
|
1231
|
+
});
|
|
1232
|
+
|
|
1140
1233
|
it("It should not be able to calc and sort array when there is no active staking contract", async () => {
|
|
1141
1234
|
const goodFundManagerFactory = await ethers.getContractFactory(
|
|
1142
1235
|
"GoodFundManager"
|
|
@@ -1156,22 +1249,6 @@ describe("StakingRewards - staking with cDAI mocks and get Rewards in GoodDollar
|
|
|
1156
1249
|
await genericCall(goodFundManager.address, encodedData, avatar, 0);
|
|
1157
1250
|
});
|
|
1158
1251
|
|
|
1159
|
-
it("collected interest should be greater than gas cost when 2 months passed", async () => {
|
|
1160
|
-
const currentBlockNumber = await ethers.provider.getBlockNumber();
|
|
1161
|
-
const currentBlock = await ethers.provider.getBlock(currentBlockNumber);
|
|
1162
|
-
|
|
1163
|
-
await ethers.provider.send("evm_setNextBlockTimestamp", [
|
|
1164
|
-
currentBlock.timestamp + 5185020
|
|
1165
|
-
]);
|
|
1166
|
-
await ethers.provider.send("evm_mine", []);
|
|
1167
|
-
const collectableContracts = await goodFundManager
|
|
1168
|
-
.calcSortedContracts()
|
|
1169
|
-
.catch(e => e);
|
|
1170
|
-
await expect(
|
|
1171
|
-
goodFundManager.collectInterest([goodCompoundStaking.address], false)
|
|
1172
|
-
).revertedWith(/< gas costs/);
|
|
1173
|
-
});
|
|
1174
|
-
|
|
1175
1252
|
it("Avatar should be able to set gd minting gas amount", async () => {
|
|
1176
1253
|
const goodFundManagerFactory = await ethers.getContractFactory(
|
|
1177
1254
|
"GoodFundManager"
|
|
@@ -1512,13 +1589,13 @@ describe("StakingRewards - staking with cDAI mocks and get Rewards in GoodDollar
|
|
|
1512
1589
|
);
|
|
1513
1590
|
await bat
|
|
1514
1591
|
.connect(staker)
|
|
1515
|
-
|
|
1592
|
+
["approve(address,uint256)"](simpleStaking1.address, stakingAmount);
|
|
1516
1593
|
await bat
|
|
1517
1594
|
.connect(signers[0])
|
|
1518
|
-
|
|
1595
|
+
["approve(address,uint256)"](simpleStaking1.address, stakingAmount);
|
|
1519
1596
|
await bat
|
|
1520
1597
|
.connect(signers[1])
|
|
1521
|
-
|
|
1598
|
+
["approve(address,uint256)"](simpleStaking1.address, stakingAmount);
|
|
1522
1599
|
const stakerOneStakeBlockNumber =
|
|
1523
1600
|
(await ethers.provider.getBlockNumber()) + 1;
|
|
1524
1601
|
await simpleStaking1["stake(uint256,uint256,bool)"](
|
|
@@ -1533,7 +1610,7 @@ describe("StakingRewards - staking with cDAI mocks and get Rewards in GoodDollar
|
|
|
1533
1610
|
(await ethers.provider.getBlockNumber()) + 1;
|
|
1534
1611
|
await simpleStaking1
|
|
1535
1612
|
.connect(staker)
|
|
1536
|
-
|
|
1613
|
+
["stake(uint256,uint256,bool)"](stakingAmount.div(5), "0", false);
|
|
1537
1614
|
const stakerTwoGdBalanceAfterStake = await goodDollar.balanceOf(
|
|
1538
1615
|
staker.address
|
|
1539
1616
|
);
|
|
@@ -1541,7 +1618,7 @@ describe("StakingRewards - staking with cDAI mocks and get Rewards in GoodDollar
|
|
|
1541
1618
|
(await ethers.provider.getBlockNumber()) + 1;
|
|
1542
1619
|
await simpleStaking1
|
|
1543
1620
|
.connect(signers[0])
|
|
1544
|
-
|
|
1621
|
+
["stake(uint256,uint256,bool)"](stakingAmount.div(4), "0", false);
|
|
1545
1622
|
const stakerThreeGdBalanceAfterStake = await goodDollar.balanceOf(
|
|
1546
1623
|
signers[0].address
|
|
1547
1624
|
);
|
|
@@ -1549,7 +1626,7 @@ describe("StakingRewards - staking with cDAI mocks and get Rewards in GoodDollar
|
|
|
1549
1626
|
(await ethers.provider.getBlockNumber()) + 1;
|
|
1550
1627
|
await simpleStaking1
|
|
1551
1628
|
.connect(signers[1])
|
|
1552
|
-
|
|
1629
|
+
["stake(uint256,uint256,bool)"](stakingAmount.div(10), "0", false);
|
|
1553
1630
|
const stakerFourGdBalanceAfterStake = await goodDollar.balanceOf(
|
|
1554
1631
|
signers[1].address
|
|
1555
1632
|
);
|
|
@@ -1561,21 +1638,21 @@ describe("StakingRewards - staking with cDAI mocks and get Rewards in GoodDollar
|
|
|
1561
1638
|
);
|
|
1562
1639
|
await simpleStaking1
|
|
1563
1640
|
.connect(staker)
|
|
1564
|
-
|
|
1641
|
+
["withdrawStake(uint256,bool)"](stakingAmount.div(5), false);
|
|
1565
1642
|
const stakerTwoWithdrawBlockNumber = await ethers.provider.getBlockNumber();
|
|
1566
1643
|
const stakerTwoGdBalanceAfterWithdraw = await goodDollar.balanceOf(
|
|
1567
1644
|
staker.address
|
|
1568
1645
|
);
|
|
1569
1646
|
await simpleStaking1
|
|
1570
1647
|
.connect(signers[0])
|
|
1571
|
-
|
|
1648
|
+
["withdrawStake(uint256,bool)"](stakingAmount.div(4), false);
|
|
1572
1649
|
|
|
1573
1650
|
const stakerThreeGdBalanceAfterWithdraw = await goodDollar.balanceOf(
|
|
1574
1651
|
signers[0].address
|
|
1575
1652
|
);
|
|
1576
1653
|
await simpleStaking1
|
|
1577
1654
|
.connect(signers[1])
|
|
1578
|
-
|
|
1655
|
+
["withdrawStake(uint256,bool)"](stakingAmount.div(10), false);
|
|
1579
1656
|
const stakerFourGdBalanceAfterWithdraw = await goodDollar.balanceOf(
|
|
1580
1657
|
signers[1].address
|
|
1581
1658
|
);
|
|
@@ -1683,7 +1760,7 @@ describe("StakingRewards - staking with cDAI mocks and get Rewards in GoodDollar
|
|
|
1683
1760
|
);
|
|
1684
1761
|
await bat
|
|
1685
1762
|
.connect(staker)
|
|
1686
|
-
|
|
1763
|
+
["approve(address,uint256)"](simpleStaking1.address, stakingAmount);
|
|
1687
1764
|
await simpleStaking1["stake(uint256,uint256,bool)"](
|
|
1688
1765
|
stakingAmount,
|
|
1689
1766
|
"0",
|
|
@@ -1695,14 +1772,14 @@ describe("StakingRewards - staking with cDAI mocks and get Rewards in GoodDollar
|
|
|
1695
1772
|
const stakerStakeBlockNumber = (await ethers.provider.getBlockNumber()) + 1;
|
|
1696
1773
|
await simpleStaking1
|
|
1697
1774
|
.connect(staker)
|
|
1698
|
-
|
|
1775
|
+
["stake(uint256,uint256,bool)"](stakingAmount.div(20), "0", false); // should get ~0.009 gd each block
|
|
1699
1776
|
const stakerGdBalanceAfterStake = await goodDollar.balanceOf(
|
|
1700
1777
|
staker.address
|
|
1701
1778
|
);
|
|
1702
1779
|
await advanceBlocks(100);
|
|
1703
1780
|
await simpleStaking1
|
|
1704
1781
|
.connect(staker)
|
|
1705
|
-
|
|
1782
|
+
["withdrawStake(uint256,bool)"](stakingAmount.div(20), false);
|
|
1706
1783
|
const stakerWithdrawBlockNumber = await ethers.provider.getBlockNumber();
|
|
1707
1784
|
const stakerGdBalanceAfterWithdraw = await goodDollar.balanceOf(
|
|
1708
1785
|
staker.address
|
|
@@ -460,6 +460,7 @@ describe("ProtocolUpgrade - Upgrade old protocol contracts to new ones", () => {
|
|
|
460
460
|
"ExchangeHelper",
|
|
461
461
|
deployment["test-mainnet"].ExchangeHelper
|
|
462
462
|
);
|
|
463
|
+
await exchangeHelper.setAddresses();
|
|
463
464
|
await cDAI["mint(address,uint256)"](
|
|
464
465
|
founder.address,
|
|
465
466
|
ethers.utils.parseUnits("1000", 8)
|