@gooddollar/goodprotocol 2.0.31 → 2.0.32
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/CeloDistributionHelper.min.json +1 -0
- package/artifacts/abis/CeloDistributionHelperTest.min.json +1 -0
- package/artifacts/abis/CeloDistributionHelperTestHelper.min.json +1 -0
- package/artifacts/abis/IBancorExchangeProvider.min.json +1 -0
- package/artifacts/abis/IBroker.min.json +1 -0
- package/artifacts/abis/IGoodDollarExchangeProvider.min.json +1 -0
- package/artifacts/abis/IGoodDollarExpansionController.min.json +1 -0
- package/artifacts/abis/IMentoReserve.min.json +1 -0
- package/artifacts/abis/ITradingLimits.min.json +1 -0
- package/artifacts/abis/MentoExchange.min.json +1 -0
- package/artifacts/abis/ProtocolUpgradeV4Mento.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 +1 -1
- package/artifacts/contracts/Interfaces.sol/ISwapRouter.dbg.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/MentoInterfaces.sol/IBancorExchangeProvider.dbg.json +4 -0
- package/artifacts/contracts/MentoInterfaces.sol/IBancorExchangeProvider.json +282 -0
- package/artifacts/contracts/MentoInterfaces.sol/IBroker.dbg.json +4 -0
- package/artifacts/contracts/MentoInterfaces.sol/IBroker.json +491 -0
- package/artifacts/contracts/MentoInterfaces.sol/IGoodDollarExchangeProvider.dbg.json +4 -0
- package/artifacts/contracts/MentoInterfaces.sol/IGoodDollarExchangeProvider.json +164 -0
- package/artifacts/contracts/MentoInterfaces.sol/IGoodDollarExpansionController.dbg.json +4 -0
- package/artifacts/contracts/MentoInterfaces.sol/IGoodDollarExpansionController.json +333 -0
- package/artifacts/contracts/MentoInterfaces.sol/IMentoReserve.dbg.json +4 -0
- package/artifacts/contracts/MentoInterfaces.sol/IMentoReserve.json +927 -0
- package/artifacts/contracts/MentoInterfaces.sol/ITradingLimits.dbg.json +4 -0
- package/artifacts/contracts/MentoInterfaces.sol/ITradingLimits.json +10 -0
- package/artifacts/contracts/fuseFaucet/Faucet.sol/Faucet.dbg.json +1 -1
- package/artifacts/contracts/fuseFaucet/FuseFaucet.sol/FuseFaucet.dbg.json +1 -1
- package/artifacts/contracts/fuseFaucet/FuseFaucetV2.sol/FuseFaucetV2.dbg.json +1 -1
- package/artifacts/contracts/fuseFaucet/SuperfluidFacuet.sol/SuperfluidFaucet.dbg.json +1 -1
- package/artifacts/contracts/governance/ClaimersDistribution.sol/ClaimersDistribution.dbg.json +1 -1
- package/artifacts/contracts/governance/CompoundVotingMachine.sol/CompoundVotingMachine.dbg.json +1 -1
- package/artifacts/contracts/governance/GReputation.sol/GReputation.dbg.json +1 -1
- package/artifacts/contracts/governance/GoodDollarStaking.sol/GoodDollarStaking.dbg.json +1 -1
- 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/MultiBaseGovernanceShareField.sol/MultiBaseGovernanceShareField.dbg.json +1 -1
- package/artifacts/contracts/governance/Reputation.sol/Reputation.dbg.json +1 -1
- 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/invite/InvitesFuseV2.sol/InvitesFuseV2.dbg.json +1 -1
- package/artifacts/contracts/invite/InvitesV1.sol/InvitesV1.dbg.json +1 -1
- package/artifacts/contracts/invite/InvitesV2.sol/InvitesV2.dbg.json +1 -1
- package/artifacts/contracts/invite/OneTimeReward.sol/OneTimeReward.dbg.json +1 -1
- 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/CeloDistributionHelperTest.sol/CeloDistributionHelperTest.dbg.json +4 -0
- package/artifacts/contracts/mocks/CeloDistributionHelperTest.sol/CeloDistributionHelperTest.json +864 -0
- package/artifacts/contracts/mocks/CeloDistributionHelperTest.sol/CeloDistributionHelperTestHelper.dbg.json +4 -0
- package/artifacts/contracts/mocks/CeloDistributionHelperTest.sol/CeloDistributionHelperTestHelper.json +890 -0
- 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/DistributionHelperTest.sol/DistributionHelperTest.dbg.json +1 -1
- package/artifacts/contracts/mocks/DistributionHelperTest.sol/DistributionHelperTest.json +2 -2
- package/artifacts/contracts/mocks/DistributionHelperTest.sol/DistributionHelperTestHelper.dbg.json +1 -1
- package/artifacts/contracts/mocks/DistributionHelperTest.sol/DistributionHelperTestHelper.json +2 -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/GoodFundManagerTest.sol/GoodFundManagerTest.dbg.json +1 -1
- package/artifacts/contracts/mocks/GoodFundManagerTest.sol/GoodFundManagerTest.json +2 -2
- package/artifacts/contracts/mocks/IdentityMock.sol/IdentityMock.dbg.json +1 -1
- 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/OverMintTester.sol/IGoodDollarStakingTest.dbg.json +1 -1
- package/artifacts/contracts/mocks/OverMintTester.sol/OverMintTester.dbg.json +1 -1
- 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/TwentyDecimalsTokenMock.sol/TwentyDecimalsTokenMock.dbg.json +1 -1
- package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock.dbg.json +1 -1
- package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock2.dbg.json +1 -1
- package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock3.dbg.json +1 -1
- package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock4.dbg.json +1 -1
- 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/CeloDistributionHelper.sol/CeloDistributionHelper.dbg.json +4 -0
- package/artifacts/contracts/reserve/CeloDistributionHelper.sol/CeloDistributionHelper.json +864 -0
- package/artifacts/contracts/reserve/DistributionHelper.sol/DistributionHelper.dbg.json +1 -1
- package/artifacts/contracts/reserve/DistributionHelper.sol/DistributionHelper.json +2 -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 +2 -2
- 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 +2 -2
- package/artifacts/contracts/staking/BaseShareField.sol/BaseShareField.dbg.json +1 -1
- package/artifacts/contracts/staking/BaseShareFieldV2.sol/BaseShareFieldV2.dbg.json +1 -1
- 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/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 +2 -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/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/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/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/UBISchemeV2.sol/UBISchemeV2.dbg.json +1 -1
- package/artifacts/contracts/utils/AdminWallet.sol/AdminWallet.dbg.json +1 -1
- package/artifacts/contracts/utils/AdminWalletFuse.sol/AdminWalletFuse.dbg.json +1 -1
- 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/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/BuyGDCloneFactory.dbg.json +1 -1
- package/artifacts/contracts/utils/BuyGDClone.sol/DonateGDClone.dbg.json +1 -1
- package/artifacts/contracts/utils/DAOContract.sol/DAOContract.dbg.json +1 -1
- package/artifacts/contracts/utils/DAOUpgradeableContract.sol/DAOUpgradeableContract.dbg.json +1 -1
- 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 +1 -1
- package/artifacts/contracts/utils/FuseOldBridgeKill.sol/FuseOldBridgeKill.dbg.json +1 -1
- package/artifacts/contracts/utils/FuseOldBridgeKill.sol/IUpgradeabilityOwnerStorage.dbg.json +1 -1
- package/artifacts/contracts/utils/FuseOldBridgeKill.sol/Initializable.dbg.json +1 -1
- package/artifacts/contracts/utils/FuseOldBridgeKill.sol/Ownable.dbg.json +1 -1
- package/artifacts/contracts/utils/FuseOldBridgeKill.sol/Upgradeable.dbg.json +1 -1
- package/artifacts/contracts/utils/GDFaucet.sol/GDFaucet.dbg.json +1 -1
- package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/GoodDollarMintBurnWrapper.dbg.json +1 -1
- 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/IdentityFix.sol/IdentityFix.dbg.json +1 -1
- 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/NameService.sol/NameService.dbg.json +1 -1
- package/artifacts/contracts/utils/OneTimePayments.sol/OneTimePayments.dbg.json +1 -1
- package/artifacts/contracts/utils/OneTimePaymentsV2.sol/OneTimePaymentsV2.dbg.json +1 -1
- package/artifacts/contracts/utils/ProtoclUpgradeV4Mento.sol/MentoExchange.dbg.json +4 -0
- package/artifacts/contracts/utils/ProtoclUpgradeV4Mento.sol/MentoExchange.json +24 -0
- package/artifacts/contracts/utils/ProtoclUpgradeV4Mento.sol/ProtocolUpgradeV4Mento.dbg.json +4 -0
- package/artifacts/contracts/utils/ProtoclUpgradeV4Mento.sol/ProtocolUpgradeV4Mento.json +92 -0
- 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/ProtocolUpgradeFuse.sol/ProtocolUpgradeFuse.dbg.json +1 -1
- package/artifacts/contracts/utils/ProtocolUpgradeFuseRecover.sol/ProtocolUpgradeFuseRecover.dbg.json +1 -1
- package/artifacts/contracts/utils/ProtocolUpgradeRecover.sol/ProtocolUpgradeRecover.dbg.json +1 -1
- 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/ReserveRestore.sol/ReserveRestore.dbg.json +1 -1
- package/artifacts/contracts/utils/ReserveRestore.sol/ReserveRestore.json +2 -2
- package/contracts/MentoInterfaces.sol +746 -0
- package/contracts/mocks/CeloDistributionHelperTest.sol +25 -0
- package/contracts/reserve/CeloDistributionHelper.sol +286 -0
- package/contracts/reserve/GoodMarketMaker.sol +11 -1
- package/contracts/staking/GoodFundManager.sol +5 -2
- package/contracts/utils/ProtoclUpgradeV4Mento.sol +99 -0
- package/contracts/utils/ReserveRestore.sol +171 -147
- package/hardhat.config.ts +4 -4
- package/package.json +5 -2
- package/releases/deployment.json +25 -13
- package/scripts/multichain-deploy/helpers.ts +45 -24
- package/scripts/proposals/reserveRestore.ts +130 -85
- package/scripts/proposals/v4Upgrade.ts +845 -0
- package/test/reserve/CeloDistributionHelper.test.ts +377 -0
- package/test/reserve/GoodMarketMaker.test.ts +98 -35
- package/test/zzz - e2e/CeloDistributionHelper.e2e.test.ts +0 -0
- package/types/contracts/MentoInterfaces.sol/IBancorExchangeProvider.ts +422 -0
- package/types/contracts/MentoInterfaces.sol/IBroker.ts +727 -0
- package/types/contracts/MentoInterfaces.sol/IGoodDollarExchangeProvider.ts +341 -0
- package/types/contracts/MentoInterfaces.sol/IGoodDollarExpansionController.ts +617 -0
- package/types/contracts/MentoInterfaces.sol/IMentoReserve.ts +1700 -0
- package/types/contracts/MentoInterfaces.sol/index.ts +8 -0
- package/types/contracts/index.ts +2 -0
- package/types/contracts/mocks/CeloDistributionHelperTest.sol/CeloDistributionHelperTest.ts +1226 -0
- package/types/contracts/mocks/CeloDistributionHelperTest.sol/CeloDistributionHelperTestHelper.ts +1279 -0
- package/types/contracts/mocks/CeloDistributionHelperTest.sol/index.ts +5 -0
- package/types/contracts/mocks/index.ts +2 -0
- package/types/contracts/reserve/CeloDistributionHelper.ts +1226 -0
- package/types/contracts/reserve/index.ts +1 -0
- package/types/contracts/utils/ProtoclUpgradeV4Mento.sol/MentoExchange.ts +81 -0
- package/types/contracts/utils/ProtoclUpgradeV4Mento.sol/ProtocolUpgradeV4Mento.ts +161 -0
- package/types/contracts/utils/ProtoclUpgradeV4Mento.sol/index.ts +5 -0
- package/types/contracts/utils/index.ts +2 -0
- package/types/factories/contracts/MentoInterfaces.sol/IBancorExchangeProvider__factory.ts +301 -0
- package/types/factories/contracts/MentoInterfaces.sol/IBroker__factory.ts +506 -0
- package/types/factories/contracts/MentoInterfaces.sol/IGoodDollarExchangeProvider__factory.ts +183 -0
- package/types/factories/contracts/MentoInterfaces.sol/IGoodDollarExpansionController__factory.ts +352 -0
- package/types/factories/contracts/MentoInterfaces.sol/IMentoReserve__factory.ts +942 -0
- package/types/factories/contracts/MentoInterfaces.sol/index.ts +8 -0
- package/types/factories/contracts/governance/StakersDistribution__factory.ts +1 -1
- package/types/factories/contracts/index.ts +1 -0
- package/types/factories/contracts/mocks/CeloDistributionHelperTest.sol/CeloDistributionHelperTestHelper__factory.ts +949 -0
- package/types/factories/contracts/mocks/CeloDistributionHelperTest.sol/CeloDistributionHelperTest__factory.ts +919 -0
- package/types/factories/contracts/mocks/CeloDistributionHelperTest.sol/index.ts +5 -0
- package/types/factories/contracts/mocks/DistributionHelperTest.sol/DistributionHelperTestHelper__factory.ts +1 -1
- package/types/factories/contracts/mocks/DistributionHelperTest.sol/DistributionHelperTest__factory.ts +1 -1
- package/types/factories/contracts/mocks/GoodCompoundStakingTest__factory.ts +1 -1
- package/types/factories/contracts/mocks/GoodFundManagerTest__factory.ts +1 -1
- package/types/factories/contracts/mocks/OverMintTesterRegularStake__factory.ts +1 -1
- package/types/factories/contracts/mocks/index.ts +1 -0
- package/types/factories/contracts/reserve/CeloDistributionHelper__factory.ts +919 -0
- package/types/factories/contracts/reserve/DistributionHelper__factory.ts +1 -1
- package/types/factories/contracts/reserve/ExchangeHelper__factory.ts +1 -1
- package/types/factories/contracts/reserve/GoodMarketMaker__factory.ts +1 -1
- package/types/factories/contracts/reserve/GoodReserveCDai.sol/GoodReserveCDai__factory.ts +1 -1
- package/types/factories/contracts/reserve/index.ts +1 -0
- package/types/factories/contracts/staking/DonationsStaking__factory.ts +1 -1
- package/types/factories/contracts/staking/GoodFundManager__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/utils/BuyAndBridgeHelper__factory.ts +1 -1
- package/types/factories/contracts/utils/LastauthReduction__factory.ts +1 -1
- package/types/factories/contracts/utils/ProtoclUpgradeV4Mento.sol/MentoExchange__factory.ts +39 -0
- package/types/factories/contracts/utils/ProtoclUpgradeV4Mento.sol/ProtocolUpgradeV4Mento__factory.ts +152 -0
- package/types/factories/contracts/utils/ProtoclUpgradeV4Mento.sol/index.ts +5 -0
- package/types/factories/contracts/utils/ReserveRestore__factory.ts +1 -1
- package/types/factories/contracts/utils/index.ts +1 -0
- package/types/hardhat.d.ts +90 -0
- package/types/index.ts +20 -0
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
* - add requirement of guardians to approve on-chain proposals
|
|
12
12
|
* - reserve should not trust exchange helper
|
|
13
13
|
* - resere should not trust fundmanager for its starting balance
|
|
14
|
-
*
|
|
14
|
+
*
|
|
15
15
|
* PLAN:
|
|
16
16
|
* - pause staking
|
|
17
17
|
* - prevent fusebridge usage
|
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
* - unpause reserve
|
|
30
30
|
* - unpause goodfundmanager
|
|
31
31
|
* - switch fuse distribution to use lz bridge insted of deprecated fuse bridge
|
|
32
|
-
*
|
|
32
|
+
*
|
|
33
33
|
*
|
|
34
34
|
* Fuse:
|
|
35
35
|
* PLAN:
|
|
@@ -49,17 +49,28 @@ import { executeViaGuardian, executeViaSafe, verifyProductionSigner } from "../m
|
|
|
49
49
|
import ProtocolSettings from "../../releases/deploy-settings.json";
|
|
50
50
|
|
|
51
51
|
import dao from "../../releases/deployment.json";
|
|
52
|
-
import {
|
|
52
|
+
import {
|
|
53
|
+
ExchangeHelper,
|
|
54
|
+
FuseOldBridgeKill,
|
|
55
|
+
GoodFundManager,
|
|
56
|
+
GoodMarketMaker,
|
|
57
|
+
GoodReserveCDai,
|
|
58
|
+
IGoodDollar,
|
|
59
|
+
ReserveRestore
|
|
60
|
+
} from "../../types";
|
|
53
61
|
let { name: networkName } = network;
|
|
54
62
|
|
|
55
|
-
|
|
56
63
|
const isSimulation = network.name === "hardhat" || network.name === "fork" || network.name === "localhost";
|
|
57
64
|
|
|
58
65
|
// hacker and hacked multichain bridge accounts
|
|
59
|
-
const LOCKED_ACCOUNTS = [
|
|
60
|
-
|
|
66
|
+
const LOCKED_ACCOUNTS = [
|
|
67
|
+
"0xeC577447D314cf1e443e9f4488216651450DBE7c",
|
|
68
|
+
"0xD17652350Cfd2A37bA2f947C910987a3B1A1c60d",
|
|
69
|
+
"0x6738fA889fF31F82d9Fe8862ec025dbE318f3Fde"
|
|
70
|
+
];
|
|
71
|
+
const INITIAL_DAI = ethers.utils.parseEther("100000"); // 100k
|
|
61
72
|
// reserve funder (goodlabs safe)
|
|
62
|
-
const funder = "0xF0652a820dd39EC956659E0018Da022132f2f40a"
|
|
73
|
+
const funder = "0xF0652a820dd39EC956659E0018Da022132f2f40a";
|
|
63
74
|
|
|
64
75
|
export const upgradeMainnet = async network => {
|
|
65
76
|
const isProduction = networkName.includes("production");
|
|
@@ -106,14 +117,12 @@ export const upgradeMainnet = async network => {
|
|
|
106
117
|
const govImpl = await ethers.deployContract("CompoundVotingMachine");
|
|
107
118
|
const distHelperImplt = await ethers.deployContract("DistributionHelper");
|
|
108
119
|
const marketMakerImpl = await ethers.deployContract("GoodMarketMaker");
|
|
109
|
-
const upgradeImpl = await ethers.deployContract("ReserveRestore", [release.NameService]) as ReserveRestore;
|
|
120
|
+
const upgradeImpl = (await ethers.deployContract("ReserveRestore", [release.NameService])) as ReserveRestore;
|
|
110
121
|
|
|
111
122
|
const gd = (await ethers.getContractAt("IGoodDollar", release.GoodDollar)) as IGoodDollar;
|
|
112
123
|
|
|
113
|
-
|
|
114
124
|
// test blacklisting to prevent burn by hacker
|
|
115
125
|
if (isSimulation) {
|
|
116
|
-
|
|
117
126
|
const locked = await ethers.getImpersonatedSigner(LOCKED_ACCOUNTS[0]);
|
|
118
127
|
const tx = await gd
|
|
119
128
|
.connect(locked)
|
|
@@ -124,21 +133,19 @@ export const upgradeMainnet = async network => {
|
|
|
124
133
|
|
|
125
134
|
console.log("Burn tx before:", tx);
|
|
126
135
|
|
|
127
|
-
const funderSigner = await ethers.getImpersonatedSigner(funder)
|
|
128
|
-
const dai = await ethers.getContractAt("IGoodDollar", release.DAI)
|
|
129
|
-
await dai.connect(funderSigner).approve(upgradeImpl.address, ethers.utils.parseEther("200000"))
|
|
130
|
-
const whale = await ethers.getImpersonatedSigner("0xa359Fc83C48277EedF375a5b6DC9Ec7D093aD3f2")
|
|
131
|
-
await dai.connect(whale).transfer(root.address, ethers.utils.parseEther("100000"))
|
|
132
|
-
|
|
133
|
-
const lockedFunds = await Promise.all(LOCKED_ACCOUNTS.map(_ => gd.balanceOf(_)))
|
|
134
|
-
const totalLocked = lockedFunds.reduce((acc, cur) => acc.add(cur), ethers.constants.Zero)
|
|
135
|
-
console.log({ totalLocked })
|
|
136
|
+
const funderSigner = await ethers.getImpersonatedSigner(funder);
|
|
137
|
+
const dai = await ethers.getContractAt("IGoodDollar", release.DAI);
|
|
138
|
+
await dai.connect(funderSigner).approve(upgradeImpl.address, ethers.utils.parseEther("200000"));
|
|
139
|
+
const whale = await ethers.getImpersonatedSigner("0xa359Fc83C48277EedF375a5b6DC9Ec7D093aD3f2");
|
|
140
|
+
await dai.connect(whale).transfer(root.address, ethers.utils.parseEther("100000"));
|
|
136
141
|
|
|
142
|
+
const lockedFunds = await Promise.all(LOCKED_ACCOUNTS.map(_ => gd.balanceOf(_)));
|
|
143
|
+
const totalLocked = lockedFunds.reduce((acc, cur) => acc.add(cur), ethers.constants.Zero);
|
|
144
|
+
console.log({ totalLocked });
|
|
137
145
|
}
|
|
138
146
|
|
|
139
147
|
const startSupply = await gd.totalSupply();
|
|
140
148
|
|
|
141
|
-
|
|
142
149
|
console.log("executing proposals");
|
|
143
150
|
|
|
144
151
|
const proposalContracts = [
|
|
@@ -152,7 +159,7 @@ export const upgradeMainnet = async network => {
|
|
|
152
159
|
release.Identity, // set locked G$ accounts as blacklisted so cant do burnfrom
|
|
153
160
|
release.ForeignBridge, // claim bridge tokens to mpb bridge
|
|
154
161
|
release.GoodReserveCDai, //upgrade reserve
|
|
155
|
-
release.GoodFundManager,
|
|
162
|
+
release.GoodFundManager, //upgrade fundmanager
|
|
156
163
|
release.ExchangeHelper, //upgrade exchangehelper
|
|
157
164
|
release.DistributionHelper, //upgrade disthelper
|
|
158
165
|
release.StakersDistribution, //upgrade stakers dist
|
|
@@ -162,7 +169,7 @@ export const upgradeMainnet = async network => {
|
|
|
162
169
|
release.ExchangeHelper, // activate upgrade changes
|
|
163
170
|
release.Controller,
|
|
164
171
|
// upgradeImpl.address,
|
|
165
|
-
release.
|
|
172
|
+
release.GoodReserveCDai
|
|
166
173
|
];
|
|
167
174
|
|
|
168
175
|
const proposalEthValues = proposalContracts.map(_ => 0);
|
|
@@ -187,8 +194,7 @@ export const upgradeMainnet = async network => {
|
|
|
187
194
|
"addOrUpdateRecipient((uint32,uint32,address,uint8))",
|
|
188
195
|
"setAddresses()",
|
|
189
196
|
"registerScheme(address,bytes32,bytes4,address)", // give upgrade contract permissions
|
|
190
|
-
|
|
191
|
-
"unpause()"
|
|
197
|
+
"grantRole(bytes32,address)"
|
|
192
198
|
];
|
|
193
199
|
|
|
194
200
|
const proposalFunctionInputs = [
|
|
@@ -222,7 +228,13 @@ export const upgradeMainnet = async network => {
|
|
|
222
228
|
release.Avatar
|
|
223
229
|
]
|
|
224
230
|
),
|
|
225
|
-
|
|
231
|
+
ethers.utils.defaultAbiCoder.encode(
|
|
232
|
+
["bytes32", "address"],
|
|
233
|
+
[
|
|
234
|
+
"0x65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a", //pauser role
|
|
235
|
+
release.Avatar
|
|
236
|
+
]
|
|
237
|
+
)
|
|
226
238
|
];
|
|
227
239
|
|
|
228
240
|
if (isProduction) {
|
|
@@ -247,7 +259,7 @@ export const upgradeMainnet = async network => {
|
|
|
247
259
|
}
|
|
248
260
|
|
|
249
261
|
if (isSimulation) {
|
|
250
|
-
await mainnetPostChecks(upgradeImpl)
|
|
262
|
+
await mainnetPostChecks(upgradeImpl);
|
|
251
263
|
}
|
|
252
264
|
};
|
|
253
265
|
|
|
@@ -259,8 +271,7 @@ const mainnetPostChecks = async (upgradeImpl: ReserveRestore) => {
|
|
|
259
271
|
const gd = await ethers.getContractAt("IGoodDollar", release.GoodDollar);
|
|
260
272
|
|
|
261
273
|
//execute the reserve initialization
|
|
262
|
-
(await upgradeImpl.upgrade(funder, INITIAL_DAI)).wait()
|
|
263
|
-
|
|
274
|
+
(await upgradeImpl.upgrade(funder, INITIAL_DAI)).wait();
|
|
264
275
|
|
|
265
276
|
const locked = await ethers.getImpersonatedSigner(LOCKED_ACCOUNTS[0]);
|
|
266
277
|
const tx = await gd
|
|
@@ -273,64 +284,100 @@ const mainnetPostChecks = async (upgradeImpl: ReserveRestore) => {
|
|
|
273
284
|
|
|
274
285
|
const dai = await ethers.getContractAt("IGoodDollar", release.DAI);
|
|
275
286
|
const cdai = await ethers.getContractAt("IGoodDollar", release.cDAI);
|
|
276
|
-
const reserve = await ethers.getContractAt("GoodReserveCDai", release.GoodReserveCDai) as GoodReserveCDai
|
|
277
|
-
const mm = await ethers.getContractAt("GoodMarketMaker", release.GoodMarketMaker) as GoodMarketMaker
|
|
278
|
-
const newExpansion = await mm.reserveRatioDailyExpansion()
|
|
279
|
-
console.log(
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
287
|
+
const reserve = (await ethers.getContractAt("GoodReserveCDai", release.GoodReserveCDai)) as GoodReserveCDai;
|
|
288
|
+
const mm = (await ethers.getContractAt("GoodMarketMaker", release.GoodMarketMaker)) as GoodMarketMaker;
|
|
289
|
+
const newExpansion = await mm.reserveRatioDailyExpansion();
|
|
290
|
+
console.log(
|
|
291
|
+
"new expansion set:",
|
|
292
|
+
newExpansion,
|
|
293
|
+
newExpansion.mul(1e15).div(ethers.utils.parseEther("1000000000")).toNumber() / 1e15 === 0.999711382710978
|
|
294
|
+
);
|
|
295
|
+
console.log(
|
|
296
|
+
"discount should be disabled:",
|
|
297
|
+
await reserve.discountDisabled(),
|
|
298
|
+
" gdx should be disabled:",
|
|
299
|
+
await reserve.gdxDisabled()
|
|
300
|
+
);
|
|
301
|
+
const resereState = await mm.reserveTokens(release.cDAI);
|
|
302
|
+
console.log({ resereState });
|
|
283
303
|
const finalSupply = await gd.totalSupply();
|
|
284
|
-
const distHelper = await ethers.getContractAt("DistributionHelper", release.DistributionHelper)
|
|
285
|
-
const result = await distHelper.calcGDToSell(1e9)
|
|
286
|
-
console.log("how much G$ to sell to cover distribution fees out of 1M:", result.toNumber() / 100)
|
|
287
|
-
const [cdaiPriceBefore, daiPriceBefore] = await (
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
304
|
+
const distHelper = await ethers.getContractAt("DistributionHelper", release.DistributionHelper);
|
|
305
|
+
const result = await distHelper.calcGDToSell(1e9);
|
|
306
|
+
console.log("how much G$ to sell to cover distribution fees out of 1M:", result.toNumber() / 100);
|
|
307
|
+
const [cdaiPriceBefore, daiPriceBefore] = await (
|
|
308
|
+
await Promise.all([reserve.currentPrice(), reserve.currentPriceDAI()])
|
|
309
|
+
).map(_ => _.toNumber());
|
|
310
|
+
console.log({ cdaiPriceBefore, daiPriceBefore });
|
|
311
|
+
const dex = (await ethers.getContractAt("ExchangeHelper", release.ExchangeHelper)) as ExchangeHelper;
|
|
312
|
+
await dai.approve(dex.address, ethers.utils.parseEther("10000"));
|
|
291
313
|
await dex.buy([release.DAI], ethers.utils.parseEther("10000"), 0, 0, root.address);
|
|
292
314
|
// check g$ prices
|
|
293
|
-
const [cdaiPriceAfter, daiPriceAfter] = await (
|
|
294
|
-
|
|
295
|
-
|
|
315
|
+
const [cdaiPriceAfter, daiPriceAfter] = await (
|
|
316
|
+
await Promise.all([reserve.currentPrice(), reserve.currentPriceDAI()])
|
|
317
|
+
).map(_ => _.toNumber());
|
|
318
|
+
console.log("prices after buying form reserve with 10k DAI", { cdaiPriceAfter, daiPriceAfter });
|
|
319
|
+
await gd.approve(dex.address, await gd.balanceOf(root.address));
|
|
296
320
|
await dex.sell([release.DAI], await gd.balanceOf(root.address), 0, 0, root.address);
|
|
297
|
-
const daiBalanceAfterSell = await dai.balanceOf(root.address)
|
|
321
|
+
const daiBalanceAfterSell = await dai.balanceOf(root.address);
|
|
298
322
|
// expect a 10% sell fee
|
|
299
|
-
console.log("expect 10% sell fee (selling 10K gets only 9K of dai, balance should be ~99K):", {
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
const
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
323
|
+
console.log("expect 10% sell fee (selling 10K gets only 9K of dai, balance should be ~99K):", {
|
|
324
|
+
daiBalanceAfterSell
|
|
325
|
+
});
|
|
326
|
+
const cdaiReserveBalance = await cdai.balanceOf(reserve.address);
|
|
327
|
+
console.log({ cdaiReserveBalance });
|
|
328
|
+
|
|
329
|
+
const [mpbBalance, fuseBalance] = await Promise.all([
|
|
330
|
+
gd.balanceOf(release.MpbBridge),
|
|
331
|
+
gd.balanceOf(release.ForeignBridge)
|
|
332
|
+
]);
|
|
333
|
+
console.log("fuse bridge should have 0 balance and Mpb should be >6B", { mpbBalance, fuseBalance });
|
|
334
|
+
const gfm = (await ethers.getContractAt("GoodFundManager", release.GoodFundManager)) as GoodFundManager;
|
|
335
|
+
const stakingContracts = await gfm.callStatic.calcSortedContracts();
|
|
336
|
+
console.log({ stakingContracts });
|
|
337
|
+
const interesTX = await (
|
|
338
|
+
await gfm.collectInterest(
|
|
339
|
+
stakingContracts.map(_ => _[0]),
|
|
340
|
+
false
|
|
341
|
+
)
|
|
342
|
+
).wait();
|
|
343
|
+
const ubiEvents = last(await reserve.queryFilter(reserve.filters.UBIMinted(), -1));
|
|
344
|
+
console.log(
|
|
345
|
+
"collectinterest gfm events:",
|
|
346
|
+
interesTX.events?.find(_ => _.event === "FundsTransferred")
|
|
347
|
+
);
|
|
348
|
+
console.log("ubiEvents after collect interest:", ubiEvents);
|
|
312
349
|
// check expansion after some time
|
|
313
|
-
await time.increase(365 * 60 * 60 * 24)
|
|
350
|
+
await time.increase(365 * 60 * 60 * 24);
|
|
314
351
|
const gdSupplyBeforeExpansion = await gd.totalSupply();
|
|
315
|
-
const reserveStateBeforeYearExpansion = await mm.reserveTokens(release.cDAI)
|
|
316
|
-
|
|
317
|
-
const expansionTX = await (await gfm.collectInterest([], false)).wait()
|
|
318
|
-
const ubiExpansionEvents = last(await reserve.queryFilter(reserve.filters.UBIMinted(), -1))
|
|
319
|
-
console.log(
|
|
320
|
-
|
|
321
|
-
|
|
352
|
+
const reserveStateBeforeYearExpansion = await mm.reserveTokens(release.cDAI);
|
|
353
|
+
|
|
354
|
+
const expansionTX = await (await gfm.collectInterest([], false)).wait();
|
|
355
|
+
const ubiExpansionEvents = last(await reserve.queryFilter(reserve.filters.UBIMinted(), -1));
|
|
356
|
+
console.log(
|
|
357
|
+
"gfm events after 1 year expansion:",
|
|
358
|
+
expansionTX.events?.filter(_ => _.event === "FundsTransferred")
|
|
359
|
+
);
|
|
360
|
+
console.log("ubiEvents after 1 year expansion:", ubiExpansionEvents);
|
|
361
|
+
const reserveStateAfterYearExpansion = await mm.reserveTokens(release.cDAI);
|
|
322
362
|
const gdSupplyAfterExpansion = await gd.totalSupply();
|
|
323
|
-
console.log({
|
|
363
|
+
console.log({
|
|
364
|
+
reserveStateAfterYearExpansion,
|
|
365
|
+
gdSupplyAfterExpansion,
|
|
366
|
+
gdSupplyBeforeExpansion,
|
|
367
|
+
reserveStateBeforeYearExpansion
|
|
368
|
+
});
|
|
324
369
|
|
|
325
370
|
//execute the reserve initialization
|
|
326
|
-
await (await upgradeImpl.donate(funder, INITIAL_DAI)).wait()
|
|
327
|
-
const [cdaiPriceAfterDonation, daiPriceAfterDonation] = await (
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
console.log({
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
371
|
+
await (await upgradeImpl.donate(funder, INITIAL_DAI)).wait();
|
|
372
|
+
const [cdaiPriceAfterDonation, daiPriceAfterDonation] = await (
|
|
373
|
+
await Promise.all([reserve.currentPrice(), reserve.currentPriceDAI()])
|
|
374
|
+
).map(_ => _.toNumber());
|
|
375
|
+
console.log("price after dai donation:", { cdaiPriceAfterDonation, daiPriceAfterDonation });
|
|
376
|
+
const reserveStateAfterDonation = await mm.reserveTokens(release.cDAI);
|
|
377
|
+
console.log({ reserveStateAfterDonation });
|
|
378
|
+
|
|
379
|
+
await (await upgradeImpl.end()).wait();
|
|
380
|
+
};
|
|
334
381
|
export const upgradeFuse = async network => {
|
|
335
382
|
let [root] = await ethers.getSigners();
|
|
336
383
|
|
|
@@ -350,8 +397,6 @@ export const upgradeFuse = async network => {
|
|
|
350
397
|
await root.sendTransaction({ value: ethers.constants.WeiPerEther.mul(3), to: guardian.address });
|
|
351
398
|
}
|
|
352
399
|
|
|
353
|
-
|
|
354
|
-
|
|
355
400
|
const gd = (await ethers.getContractAt("IGoodDollar", release.GoodDollar)) as IGoodDollar;
|
|
356
401
|
|
|
357
402
|
const isMinter = await gd.isMinter(release.HomeBridge);
|
|
@@ -359,11 +404,11 @@ export const upgradeFuse = async network => {
|
|
|
359
404
|
console.log({ networkEnv, guardian: guardian.address, isSimulation, isProduction, isMinter });
|
|
360
405
|
|
|
361
406
|
const govImpl = await ethers.deployContract("CompoundVotingMachine");
|
|
362
|
-
const killBridge = await ethers.deployContract("FuseOldBridgeKill") as FuseOldBridgeKill
|
|
407
|
+
const killBridge = (await ethers.deployContract("FuseOldBridgeKill")) as FuseOldBridgeKill;
|
|
363
408
|
|
|
364
409
|
const proposalContracts = [
|
|
365
410
|
release.HomeBridge, // prevent from using by upgrading to empty contract and removing minting rights
|
|
366
|
-
release.CompoundVotingMachine
|
|
411
|
+
release.CompoundVotingMachine //upgrade gov
|
|
367
412
|
];
|
|
368
413
|
|
|
369
414
|
const proposalEthValues = proposalContracts.map(_ => 0);
|
|
@@ -373,11 +418,12 @@ export const upgradeFuse = async network => {
|
|
|
373
418
|
"upgradeTo(address)"
|
|
374
419
|
];
|
|
375
420
|
|
|
376
|
-
|
|
377
421
|
const proposalFunctionInputs = [
|
|
378
|
-
ethers.utils.defaultAbiCoder.encode(
|
|
379
|
-
|
|
380
|
-
|
|
422
|
+
ethers.utils.defaultAbiCoder.encode(
|
|
423
|
+
["uint256", "address", "bytes"],
|
|
424
|
+
[2, killBridge.address, killBridge.interface.encodeFunctionData("end")]
|
|
425
|
+
),
|
|
426
|
+
ethers.utils.defaultAbiCoder.encode(["address"], [govImpl.address])
|
|
381
427
|
];
|
|
382
428
|
|
|
383
429
|
if (isProduction) {
|
|
@@ -401,7 +447,6 @@ export const upgradeFuse = async network => {
|
|
|
401
447
|
}
|
|
402
448
|
|
|
403
449
|
if (isSimulation) {
|
|
404
|
-
|
|
405
450
|
const isMinter = await gd.isMinter(release.HomeBridge);
|
|
406
451
|
console.log("Fuse bridge scheme registration check:", isMinter ? "Failed" : "Success");
|
|
407
452
|
}
|