@gooddollar/goodprotocol 1.0.19-beta.3 → 1.0.20
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/ERC20.min.json +1 -1
- package/artifacts/abis/GoodReserveCDai.min.json +1 -1
- package/artifacts/abis/IERC2917.min.json +1 -1
- package/artifacts/abis/cERC20.min.json +1 -1
- 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/ERC20.json +0 -13
- 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/IERC2917.json +0 -13
- 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/ILendingPool.dbg.json +1 -1
- package/artifacts/contracts/Interfaces.sol/INameService.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/Interfaces.sol/cERC20.json +0 -13
- 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 +2 -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/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/mocks/AaveMock.sol/AaveMock.dbg.json +1 -1
- package/artifacts/contracts/mocks/DAIMock.sol/DAIMock.dbg.json +1 -1
- package/artifacts/contracts/mocks/DecimalsMock.sol/DecimalsMock.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/GoodFundManagerTest.sol/GoodFundManagerTest.dbg.json +1 -1
- package/artifacts/contracts/mocks/GoodFundManagerTest.sol/GoodFundManagerTest.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/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/SixteenDecimalsTokenMock.sol/SixteenDecimalsTokenMock.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/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 -65
- 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/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/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/ubi/UBIScheme.sol/UBIScheme.dbg.json +1 -1
- package/artifacts/contracts/ubi/UBIScheme.sol/UBIScheme.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/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/NameService.sol/NameService.dbg.json +1 -1
- 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/contracts/Interfaces.sol +0 -12
- package/contracts/reserve/GoodReserveCDai.sol +1 -28
- package/package.json +3 -2
- package/releases/deployment.json +13 -6
- package/scripts/multichain-deploy/basicdao-deploy.ts +20 -22
- package/scripts/multichain-deploy/helpers.ts +3 -5
- package/types/AaveMock.ts +1022 -0
- package/types/AaveStakingFactory.ts +290 -0
- package/types/AaveUSDMockOracle.ts +89 -0
- package/types/AccessControlEnumerableUpgradeable.ts +435 -0
- package/types/AccessControlUpgradeable.ts +362 -0
- package/types/AggregatorV3Interface.ts +192 -0
- package/types/Avatar.ts +121 -0
- package/types/BancorFormula.ts +974 -0
- package/types/BaseShareField.ts +442 -0
- package/types/BaseShareFieldV2.ts +361 -0
- package/types/BatUSDMockOracle.ts +89 -0
- package/types/BulkProof.ts +111 -0
- package/types/CBATMock.ts +1194 -0
- package/types/CDAILowWorthMock.ts +1160 -0
- package/types/CDAIMock.ts +1210 -0
- package/types/CDAINonMintableMock.ts +1160 -0
- package/types/CDecimalsMock.ts +1194 -0
- package/types/CERC20.ts +527 -0
- package/types/CSDTMock.ts +1194 -0
- package/types/CUSDCMock.ts +1194 -0
- package/types/ClaimersDistribution.ts +606 -0
- package/types/CompUSDMockOracle.ts +89 -0
- package/types/CompoundStakingFactory.ts +261 -0
- package/types/CompoundVotingMachine.ts +1690 -0
- package/types/ContributionCalc.ts +164 -0
- package/types/Controller.ts +547 -0
- package/types/DAIMock.ts +1083 -0
- package/types/DAOContract.ts +162 -0
- package/types/DAOUpgradeableContract.ts +271 -0
- package/types/DaiEthPriceMockOracle.ts +89 -0
- package/types/DecimalsMock.ts +1022 -0
- package/types/DonationsStaking.ts +777 -0
- package/types/ERC165Upgradeable.ts +104 -0
- package/types/ERC1967Proxy.ts +147 -0
- package/types/ERC1967Upgrade.ts +106 -0
- package/types/ERC1967UpgradeUpgradeable.ts +107 -0
- package/types/ERC20.ts +365 -0
- package/types/ERC20BurnableUpgradeable.ts +479 -0
- package/types/ERC20PausableUpgradeable.ts +449 -0
- package/types/ERC20PresetMinterPauserUpgradeable.ts +1023 -0
- package/types/ERC20Upgradeable.ts +417 -0
- package/types/EthUSDMockOracle.ts +138 -0
- package/types/ExchangeHelper.ts +522 -0
- package/types/GReputation.ts +2020 -0
- package/types/GasPriceMockOracle.ts +89 -0
- package/types/GlobalConstraintInterface.ts +134 -0
- package/types/GoodAaveStaking.ts +1752 -0
- package/types/GoodAaveStakingV2.ts +1722 -0
- package/types/GoodCompoundStaking.ts +1838 -0
- package/types/GoodCompoundStakingTest.ts +1948 -0
- package/types/GoodCompoundStakingV2.ts +1636 -0
- package/types/GoodFundManager.ts +1098 -0
- package/types/GoodFundManagerTest.ts +1137 -0
- package/types/GoodMarketMaker.ts +974 -0
- package/types/GoodReserveCDai.ts +1938 -0
- package/types/GovernanceStaking.ts +1267 -0
- package/types/IAaveIncentivesController.ts +155 -0
- package/types/IAccessControlEnumerableUpgradeable.ts +380 -0
- package/types/IAccessControlUpgradeable.ts +307 -0
- package/types/IAdminWallet.ts +171 -0
- package/types/IBeacon.ts +89 -0
- package/types/IBeaconUpgradeable.ts +89 -0
- package/types/IDonationStaking.ts +98 -0
- package/types/IERC165Upgradeable.ts +104 -0
- package/types/IERC1822Proxiable.ts +89 -0
- package/types/IERC20MetadataUpgradeable.ts +340 -0
- package/types/IERC20Upgradeable.ts +300 -0
- package/types/IERC2917.ts +636 -0
- package/types/IFirstClaimPool.ts +115 -0
- package/types/IGoodDollar.ts +579 -0
- package/types/IGoodStaking.ts +264 -0
- package/types/IHasRouter.ts +83 -0
- package/types/IIdentity.ts +281 -0
- package/types/ILendingPool.ts +241 -0
- package/types/INameService.ts +86 -0
- package/types/IUBIScheme.ts +121 -0
- package/types/IncentiveControllerMock.ts +207 -0
- package/types/IntVoteInterface.ts +468 -0
- package/types/LendingPoolMock.ts +1250 -0
- package/types/MultiBaseGovernanceShareField.ts +411 -0
- package/types/Multicall.ts +298 -0
- package/types/NameService.ts +358 -0
- package/types/OldMarketMaker.ts +113 -0
- package/types/OverMintTester.ts +176 -0
- package/types/OverMintTesterRegularStake.ts +177 -0
- package/types/PausableUpgradeable.ts +103 -0
- package/types/ProtocolUpgrade.ts +272 -0
- package/types/ProtocolUpgradeFuse.ts +166 -0
- package/types/ProtocolUpgradeFuseRecover.ts +167 -0
- package/types/ProtocolUpgradeRecover.ts +264 -0
- package/types/Proxy.ts +66 -0
- package/types/ProxyAdmin.ts +210 -0
- package/types/ProxyFactory1967.ts +284 -0
- package/types/Reputation.ts +936 -0
- package/types/ReputationInterface.ts +261 -0
- package/types/ReputationTestHelper.ts +175 -0
- package/types/Reserve.ts +112 -0
- package/types/SchemeRegistrar.ts +164 -0
- package/types/SimpleStaking.ts +1514 -0
- package/types/SimpleStakingV2.ts +1418 -0
- package/types/SixteenDecimalsTokenMock.ts +1023 -0
- package/types/StakersDistribution.ts +921 -0
- package/types/Staking.ts +158 -0
- package/types/SwapHelperTest.ts +120 -0
- package/types/TwentyDecimalsTokenMock.ts +1023 -0
- package/types/UBIScheme.ts +1361 -0
- package/types/USDCMock.ts +1022 -0
- package/types/UUPSUpgradeable.ts +179 -0
- package/types/Uniswap.ts +423 -0
- package/types/UniswapFactory.ts +106 -0
- package/types/UniswapPair.ts +187 -0
- package/types/UniswapV2SwapHelper.ts +124 -0
- package/types/UpgradableMock.ts +321 -0
- package/types/UpgradableMock2.ts +283 -0
- package/types/UpgradableMock3.ts +308 -0
- package/types/UpgradableMock4.ts +308 -0
- package/types/common.ts +44 -0
- package/types/factories/AaveMock__factory.ts +727 -0
- package/types/factories/AaveStakingFactory__factory.ts +262 -0
- package/types/factories/AaveUSDMockOracle__factory.ts +75 -0
- package/types/factories/AccessControlEnumerableUpgradeable__factory.ts +279 -0
- package/types/factories/AccessControlUpgradeable__factory.ts +234 -0
- package/types/factories/AggregatorV3Interface__factory.ts +121 -0
- package/types/factories/Avatar__factory.ts +59 -0
- package/types/factories/BancorFormula__factory.ts +674 -0
- package/types/factories/BaseShareFieldV2__factory.ts +251 -0
- package/types/factories/BaseShareField__factory.ts +307 -0
- package/types/factories/BatUSDMockOracle__factory.ts +75 -0
- package/types/factories/BulkProof__factory.ts +89 -0
- package/types/factories/CBATMock__factory.ts +831 -0
- package/types/factories/CDAILowWorthMock__factory.ts +821 -0
- package/types/factories/CDAIMock__factory.ts +844 -0
- package/types/factories/CDAINonMintableMock__factory.ts +821 -0
- package/types/factories/CDecimalsMock__factory.ts +831 -0
- package/types/factories/CERC20__factory.ts +368 -0
- package/types/factories/CSDTMock__factory.ts +831 -0
- package/types/factories/CUSDCMock__factory.ts +831 -0
- package/types/factories/ClaimersDistribution__factory.ts +404 -0
- package/types/factories/CompUSDMockOracle__factory.ts +75 -0
- package/types/factories/CompoundStakingFactory__factory.ts +249 -0
- package/types/factories/CompoundVotingMachine__factory.ts +1182 -0
- package/types/factories/ContributionCalc__factory.ts +83 -0
- package/types/factories/Controller__factory.ts +359 -0
- package/types/factories/DAIMock__factory.ts +770 -0
- package/types/factories/DAOContract__factory.ts +118 -0
- package/types/factories/DAOUpgradeableContract__factory.ts +201 -0
- package/types/factories/DaiEthPriceMockOracle__factory.ts +79 -0
- package/types/factories/DecimalsMock__factory.ts +742 -0
- package/types/factories/DonationsStaking__factory.ts +554 -0
- package/types/factories/ERC165Upgradeable__factory.ts +45 -0
- package/types/factories/ERC1967Proxy__factory.ts +130 -0
- package/types/factories/ERC1967UpgradeUpgradeable__factory.ts +75 -0
- package/types/factories/ERC1967Upgrade__factory.ts +71 -0
- package/types/factories/ERC20BurnableUpgradeable__factory.ts +331 -0
- package/types/factories/ERC20PausableUpgradeable__factory.ts +339 -0
- package/types/factories/ERC20PresetMinterPauserUpgradeable__factory.ts +733 -0
- package/types/factories/ERC20Upgradeable__factory.ts +332 -0
- package/types/factories/ERC20__factory.ts +272 -0
- package/types/factories/EthUSDMockOracle__factory.ts +108 -0
- package/types/factories/ExchangeHelper__factory.ts +401 -0
- package/types/factories/GReputation__factory.ts +1415 -0
- package/types/factories/GasPriceMockOracle__factory.ts +75 -0
- package/types/factories/GlobalConstraintInterface__factory.ts +72 -0
- package/types/factories/GoodAaveStakingV2__factory.ts +1227 -0
- package/types/factories/GoodAaveStaking__factory.ts +1263 -0
- package/types/factories/GoodCompoundStakingTest__factory.ts +1457 -0
- package/types/factories/GoodCompoundStakingV2__factory.ts +1169 -0
- package/types/factories/GoodCompoundStaking__factory.ts +1303 -0
- package/types/factories/GoodFundManagerTest__factory.ts +775 -0
- package/types/factories/GoodFundManager__factory.ts +733 -0
- package/types/factories/GoodMarketMaker__factory.ts +661 -0
- package/types/factories/GoodReserveCDai__factory.ts +1391 -0
- package/types/factories/GovernanceStaking__factory.ts +922 -0
- package/types/factories/IAaveIncentivesController__factory.ts +83 -0
- package/types/factories/IAccessControlEnumerableUpgradeable__factory.ts +247 -0
- package/types/factories/IAccessControlUpgradeable__factory.ts +202 -0
- package/types/factories/IAdminWallet__factory.ts +75 -0
- package/types/factories/IBeaconUpgradeable__factory.ts +39 -0
- package/types/factories/IBeacon__factory.ts +36 -0
- package/types/factories/IDonationStaking__factory.ts +33 -0
- package/types/factories/IERC165Upgradeable__factory.ts +45 -0
- package/types/factories/IERC1822Proxiable__factory.ts +39 -0
- package/types/factories/IERC20MetadataUpgradeable__factory.ts +252 -0
- package/types/factories/IERC20Upgradeable__factory.ts +209 -0
- package/types/factories/IERC2917__factory.ts +480 -0
- package/types/factories/IFirstClaimPool__factory.ts +58 -0
- package/types/factories/IGoodDollar__factory.ts +411 -0
- package/types/factories/IGoodStaking__factory.ts +175 -0
- package/types/factories/IHasRouter__factory.ts +36 -0
- package/types/factories/IIdentity__factory.ts +150 -0
- package/types/factories/ILendingPool__factory.ts +168 -0
- package/types/factories/INameService__factory.ts +42 -0
- package/types/factories/IUBIScheme__factory.ts +68 -0
- package/types/factories/IncentiveControllerMock__factory.ts +166 -0
- package/types/factories/IntVoteInterface__factory.ts +349 -0
- package/types/factories/LendingPoolMock__factory.ts +914 -0
- package/types/factories/MultiBaseGovernanceShareField__factory.ts +240 -0
- package/types/factories/Multicall__factory.ts +215 -0
- package/types/factories/NameService__factory.ts +264 -0
- package/types/factories/OldMarketMaker__factory.ts +62 -0
- package/types/factories/OverMintTesterRegularStake__factory.ts +156 -0
- package/types/factories/OverMintTester__factory.ts +152 -0
- package/types/factories/PausableUpgradeable__factory.ts +65 -0
- package/types/factories/ProtocolUpgradeFuseRecover__factory.ts +146 -0
- package/types/factories/ProtocolUpgradeFuse__factory.ts +142 -0
- package/types/factories/ProtocolUpgradeRecover__factory.ts +184 -0
- package/types/factories/ProtocolUpgrade__factory.ts +207 -0
- package/types/factories/ProxyAdmin__factory.ts +105 -0
- package/types/factories/ProxyFactory1967__factory.ts +223 -0
- package/types/factories/Proxy__factory.ts +28 -0
- package/types/factories/ReputationInterface__factory.ts +168 -0
- package/types/factories/ReputationTestHelper__factory.ts +141 -0
- package/types/factories/Reputation__factory.ts +667 -0
- package/types/factories/Reserve__factory.ts +52 -0
- package/types/factories/SchemeRegistrar__factory.ts +114 -0
- package/types/factories/SimpleStakingV2__factory.ts +986 -0
- package/types/factories/SimpleStaking__factory.ts +1045 -0
- package/types/factories/SixteenDecimalsTokenMock__factory.ts +734 -0
- package/types/factories/StakersDistribution__factory.ts +591 -0
- package/types/factories/Staking__factory.ts +74 -0
- package/types/factories/SwapHelperTest__factory.ts +96 -0
- package/types/factories/TwentyDecimalsTokenMock__factory.ts +734 -0
- package/types/factories/UBIScheme__factory.ts +969 -0
- package/types/factories/USDCMock__factory.ts +727 -0
- package/types/factories/UUPSUpgradeable__factory.ts +102 -0
- package/types/factories/UniswapFactory__factory.ts +50 -0
- package/types/factories/UniswapPair__factory.ts +117 -0
- package/types/factories/UniswapV2SwapHelper__factory.ts +101 -0
- package/types/factories/Uniswap__factory.ts +272 -0
- package/types/factories/UpgradableMock2__factory.ts +210 -0
- package/types/factories/UpgradableMock3__factory.ts +223 -0
- package/types/factories/UpgradableMock4__factory.ts +223 -0
- package/types/factories/UpgradableMock__factory.ts +236 -0
- package/types/hardhat.d.ts +1077 -0
- package/types/index.ts +236 -0
- package/artifacts/abis/DistributionHelper.min.json +0 -1
- package/artifacts/abis/GoodDollarMintBurnWrapper.min.json +0 -1
- package/artifacts/abis/GoodDollarStaking.min.json +0 -1
- package/artifacts/abis/IMultichainRouter.min.json +0 -1
- package/artifacts/abis/IRouter.min.json +0 -1
- package/artifacts/abis/Math64x64.min.json +0 -1
- package/artifacts/abis/PausableControl.min.json +0 -1
- package/artifacts/abis/RewardsMinter.min.json +0 -1
- package/artifacts/abis/StakingRewardsFixedAPY.min.json +0 -1
- package/artifacts/abis/TokenOperation.min.json +0 -1
- package/artifacts/contracts/Interfaces.sol/IMultichainRouter.dbg.json +0 -4
- package/artifacts/contracts/Interfaces.sol/IMultichainRouter.json +0 -39
- package/artifacts/contracts/governance/GoodDollarStaking.sol/GoodDollarStaking.dbg.json +0 -4
- package/artifacts/contracts/governance/GoodDollarStaking.sol/GoodDollarStaking.json +0 -1028
- package/artifacts/contracts/governance/GoodDollarStaking.sol/RewardsMinter.dbg.json +0 -4
- package/artifacts/contracts/governance/GoodDollarStaking.sol/RewardsMinter.json +0 -35
- package/artifacts/contracts/reserve/DistributionHelper.sol/DistributionHelper.dbg.json +0 -4
- package/artifacts/contracts/reserve/DistributionHelper.sol/DistributionHelper.json +0 -574
- package/artifacts/contracts/staking/utils/Math64X64.sol/Math64x64.dbg.json +0 -4
- package/artifacts/contracts/staking/utils/Math64X64.sol/Math64x64.json +0 -10
- package/artifacts/contracts/staking/utils/StakingRewardsFixedAPY.sol/StakingRewardsFixedAPY.dbg.json +0 -4
- package/artifacts/contracts/staking/utils/StakingRewardsFixedAPY.sol/StakingRewardsFixedAPY.json +0 -153
- package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/GoodDollarMintBurnWrapper.dbg.json +0 -4
- package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/GoodDollarMintBurnWrapper.json +0 -954
- package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/IRouter.dbg.json +0 -4
- package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/IRouter.json +0 -59
- package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/PausableControl.dbg.json +0 -4
- package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/PausableControl.json +0 -69
- package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/TokenOperation.dbg.json +0 -4
- package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/TokenOperation.json +0 -10
- package/contracts/governance/GoodDollarStaking.sol +0 -260
- package/contracts/reserve/DistributionHelper.sol +0 -118
- package/contracts/staking/utils/Math64X64.sol +0 -268
- package/contracts/staking/utils/StakingRewardsFixedAPY.sol +0 -141
- package/contracts/utils/GoodDollarMintBurnWrapper.sol +0 -417
- package/scripts/multichain-deploy/multichainWrapper-deploy.ts +0 -67
- package/scripts/voltageswaps.ts +0 -47
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"_format": "hh-sol-artifact-1",
|
|
3
|
-
"contractName": "IRouter",
|
|
4
|
-
"sourceName": "contracts/utils/GoodDollarMintBurnWrapper.sol",
|
|
5
|
-
"abi": [
|
|
6
|
-
{
|
|
7
|
-
"inputs": [
|
|
8
|
-
{
|
|
9
|
-
"internalType": "address",
|
|
10
|
-
"name": "from",
|
|
11
|
-
"type": "address"
|
|
12
|
-
},
|
|
13
|
-
{
|
|
14
|
-
"internalType": "uint256",
|
|
15
|
-
"name": "amount",
|
|
16
|
-
"type": "uint256"
|
|
17
|
-
}
|
|
18
|
-
],
|
|
19
|
-
"name": "burn",
|
|
20
|
-
"outputs": [
|
|
21
|
-
{
|
|
22
|
-
"internalType": "bool",
|
|
23
|
-
"name": "",
|
|
24
|
-
"type": "bool"
|
|
25
|
-
}
|
|
26
|
-
],
|
|
27
|
-
"stateMutability": "nonpayable",
|
|
28
|
-
"type": "function"
|
|
29
|
-
},
|
|
30
|
-
{
|
|
31
|
-
"inputs": [
|
|
32
|
-
{
|
|
33
|
-
"internalType": "address",
|
|
34
|
-
"name": "to",
|
|
35
|
-
"type": "address"
|
|
36
|
-
},
|
|
37
|
-
{
|
|
38
|
-
"internalType": "uint256",
|
|
39
|
-
"name": "amount",
|
|
40
|
-
"type": "uint256"
|
|
41
|
-
}
|
|
42
|
-
],
|
|
43
|
-
"name": "mint",
|
|
44
|
-
"outputs": [
|
|
45
|
-
{
|
|
46
|
-
"internalType": "bool",
|
|
47
|
-
"name": "",
|
|
48
|
-
"type": "bool"
|
|
49
|
-
}
|
|
50
|
-
],
|
|
51
|
-
"stateMutability": "nonpayable",
|
|
52
|
-
"type": "function"
|
|
53
|
-
}
|
|
54
|
-
],
|
|
55
|
-
"bytecode": "0x",
|
|
56
|
-
"deployedBytecode": "0x",
|
|
57
|
-
"linkReferences": {},
|
|
58
|
-
"deployedLinkReferences": {}
|
|
59
|
-
}
|
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"_format": "hh-sol-artifact-1",
|
|
3
|
-
"contractName": "PausableControl",
|
|
4
|
-
"sourceName": "contracts/utils/GoodDollarMintBurnWrapper.sol",
|
|
5
|
-
"abi": [
|
|
6
|
-
{
|
|
7
|
-
"anonymous": false,
|
|
8
|
-
"inputs": [
|
|
9
|
-
{
|
|
10
|
-
"indexed": false,
|
|
11
|
-
"internalType": "bytes32",
|
|
12
|
-
"name": "role",
|
|
13
|
-
"type": "bytes32"
|
|
14
|
-
}
|
|
15
|
-
],
|
|
16
|
-
"name": "Paused",
|
|
17
|
-
"type": "event"
|
|
18
|
-
},
|
|
19
|
-
{
|
|
20
|
-
"anonymous": false,
|
|
21
|
-
"inputs": [
|
|
22
|
-
{
|
|
23
|
-
"indexed": false,
|
|
24
|
-
"internalType": "bytes32",
|
|
25
|
-
"name": "role",
|
|
26
|
-
"type": "bytes32"
|
|
27
|
-
}
|
|
28
|
-
],
|
|
29
|
-
"name": "Unpaused",
|
|
30
|
-
"type": "event"
|
|
31
|
-
},
|
|
32
|
-
{
|
|
33
|
-
"inputs": [],
|
|
34
|
-
"name": "PAUSE_ALL_ROLE",
|
|
35
|
-
"outputs": [
|
|
36
|
-
{
|
|
37
|
-
"internalType": "bytes32",
|
|
38
|
-
"name": "",
|
|
39
|
-
"type": "bytes32"
|
|
40
|
-
}
|
|
41
|
-
],
|
|
42
|
-
"stateMutability": "view",
|
|
43
|
-
"type": "function"
|
|
44
|
-
},
|
|
45
|
-
{
|
|
46
|
-
"inputs": [
|
|
47
|
-
{
|
|
48
|
-
"internalType": "bytes32",
|
|
49
|
-
"name": "role",
|
|
50
|
-
"type": "bytes32"
|
|
51
|
-
}
|
|
52
|
-
],
|
|
53
|
-
"name": "paused",
|
|
54
|
-
"outputs": [
|
|
55
|
-
{
|
|
56
|
-
"internalType": "bool",
|
|
57
|
-
"name": "",
|
|
58
|
-
"type": "bool"
|
|
59
|
-
}
|
|
60
|
-
],
|
|
61
|
-
"stateMutability": "view",
|
|
62
|
-
"type": "function"
|
|
63
|
-
}
|
|
64
|
-
],
|
|
65
|
-
"bytecode": "0x",
|
|
66
|
-
"deployedBytecode": "0x",
|
|
67
|
-
"linkReferences": {},
|
|
68
|
-
"deployedLinkReferences": {}
|
|
69
|
-
}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"_format": "hh-sol-artifact-1",
|
|
3
|
-
"contractName": "TokenOperation",
|
|
4
|
-
"sourceName": "contracts/utils/GoodDollarMintBurnWrapper.sol",
|
|
5
|
-
"abi": [],
|
|
6
|
-
"bytecode": "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220a332b73371a63f2f25f3d6b5406d03e25bcedb5fec46ac37352e3a622dbee87864736f6c63430008080033",
|
|
7
|
-
"deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220a332b73371a63f2f25f3d6b5406d03e25bcedb5fec46ac37352e3a622dbee87864736f6c63430008080033",
|
|
8
|
-
"linkReferences": {},
|
|
9
|
-
"deployedLinkReferences": {}
|
|
10
|
-
}
|
|
@@ -1,260 +0,0 @@
|
|
|
1
|
-
// SPDX-License-Identifier: MIT
|
|
2
|
-
|
|
3
|
-
pragma solidity >=0.8.0;
|
|
4
|
-
|
|
5
|
-
import "@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol";
|
|
6
|
-
import "../utils/DAOUpgradeableContract.sol";
|
|
7
|
-
import "../utils/NameService.sol";
|
|
8
|
-
import "../Interfaces.sol";
|
|
9
|
-
import "../DAOStackInterfaces.sol";
|
|
10
|
-
import "./MultiBaseGovernanceShareField.sol";
|
|
11
|
-
import "@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol";
|
|
12
|
-
import "../staking/utils/StakingRewardsFixedAPY.sol";
|
|
13
|
-
|
|
14
|
-
interface RewardsMinter {
|
|
15
|
-
function sendOrMint(address to, uint256 amount) external returns (uint256);
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
/**
|
|
19
|
-
* @title Staking contract that allows citizens to stake G$ to get GOOD + G$ rewards
|
|
20
|
-
* it implements
|
|
21
|
-
*/
|
|
22
|
-
contract GoodDollarStaking is
|
|
23
|
-
ERC20Upgradeable,
|
|
24
|
-
MultiBaseGovernanceShareField,
|
|
25
|
-
DAOUpgradeableContract,
|
|
26
|
-
ReentrancyGuardUpgradeable,
|
|
27
|
-
StakingRewardsFixedAPY
|
|
28
|
-
{
|
|
29
|
-
// Token address
|
|
30
|
-
ERC20 token;
|
|
31
|
-
|
|
32
|
-
uint128 public numberOfBlocksPerYear;
|
|
33
|
-
|
|
34
|
-
/**
|
|
35
|
-
* @dev Emitted when `staker` earns an `amount` of GOOD tokens
|
|
36
|
-
*/
|
|
37
|
-
event ReputationEarned(address indexed staker, uint256 amount);
|
|
38
|
-
|
|
39
|
-
/**
|
|
40
|
-
* @dev Emitted when `staker` stakes an `amount` of GoodDollars
|
|
41
|
-
*/
|
|
42
|
-
event Staked(address indexed staker, uint256 amount);
|
|
43
|
-
|
|
44
|
-
/**
|
|
45
|
-
* @dev Emitted when `staker` withdraws an `amount` of staked GoodDollars
|
|
46
|
-
*/
|
|
47
|
-
event StakeWithdraw(address indexed staker, uint256 amount);
|
|
48
|
-
|
|
49
|
-
/**
|
|
50
|
-
* @dev Constructor
|
|
51
|
-
* @param _ns The address of the INameService contract
|
|
52
|
-
*/
|
|
53
|
-
constructor(
|
|
54
|
-
INameService _ns,
|
|
55
|
-
uint128 _interestRatePerBlock,
|
|
56
|
-
uint128 _numberOfBlocksPerYear
|
|
57
|
-
) StakingRewardsFixedAPY(_interestRatePerBlock) {
|
|
58
|
-
setDAO(_ns);
|
|
59
|
-
require(
|
|
60
|
-
nameService.getAddress("MintBurnWrapper") != address(0),
|
|
61
|
-
"rewards minter not set"
|
|
62
|
-
);
|
|
63
|
-
numberOfBlocksPerYear = _numberOfBlocksPerYear;
|
|
64
|
-
token = ERC20(nameService.getAddress("GOODDOLLAR"));
|
|
65
|
-
__ERC20_init("G$ Savings", "svG$");
|
|
66
|
-
rewardsPerBlock[address(this)] = (2 ether * 1e6) / getChainBlocksPerMonth(); // (2M monthly GDAO as specified in specs, divided by blocks in month )
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
function getChainBlocksPerMonth() public view override returns (uint256) {
|
|
70
|
-
return numberOfBlocksPerYear / 12;
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
/**
|
|
74
|
-
* @dev Allows a staker to deposit Tokens. Notice that `approve` is
|
|
75
|
-
* needed to be executed before the execution of this method.
|
|
76
|
-
* Can be executed only when the contract is not paused.
|
|
77
|
-
* @param _amount The amount of GD to stake
|
|
78
|
-
*/
|
|
79
|
-
function stake(uint256 _amount) external {
|
|
80
|
-
require(_amount > 0, "You need to stake a positive token amount");
|
|
81
|
-
require(
|
|
82
|
-
token.transferFrom(_msgSender(), address(this), _amount),
|
|
83
|
-
"transferFrom failed, make sure you approved token transfer"
|
|
84
|
-
);
|
|
85
|
-
/* GOOD rewards Updates */
|
|
86
|
-
_increaseProductivity(
|
|
87
|
-
address(this),
|
|
88
|
-
_msgSender(),
|
|
89
|
-
_amount,
|
|
90
|
-
0,
|
|
91
|
-
block.number
|
|
92
|
-
);
|
|
93
|
-
_mint(_msgSender(), _amount); // mint Staking token for staker
|
|
94
|
-
_mintRewards(_msgSender());
|
|
95
|
-
/* end GOOD rewards Updates */
|
|
96
|
-
|
|
97
|
-
/* G$ rewards updates */
|
|
98
|
-
_stake(_msgSender(), _amount);
|
|
99
|
-
|
|
100
|
-
emit Staked(_msgSender(), _amount);
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
/**
|
|
104
|
-
* @dev Withdraws the sender staked Token.
|
|
105
|
-
*/
|
|
106
|
-
function withdrawStake(uint256 _amount) external nonReentrant {
|
|
107
|
-
(uint256 userProductivity, ) = getProductivity(address(this), _msgSender());
|
|
108
|
-
if (_amount == 0) _amount = userProductivity;
|
|
109
|
-
require(_amount > 0, "Should withdraw positive amount");
|
|
110
|
-
require(userProductivity >= _amount, "Not enough token staked");
|
|
111
|
-
uint256 tokenWithdraw = _amount;
|
|
112
|
-
|
|
113
|
-
_burn(_msgSender(), _amount); // burn their staking tokens
|
|
114
|
-
|
|
115
|
-
/* Good rewards update */
|
|
116
|
-
_decreaseProductivity(
|
|
117
|
-
address(this),
|
|
118
|
-
_msgSender(),
|
|
119
|
-
_amount,
|
|
120
|
-
0,
|
|
121
|
-
block.number
|
|
122
|
-
);
|
|
123
|
-
_mintRewards(_msgSender());
|
|
124
|
-
/* end Good rewards update */
|
|
125
|
-
|
|
126
|
-
/* G$ rewards update */
|
|
127
|
-
_withdraw(_msgSender(), tokenWithdraw);
|
|
128
|
-
if (stakersInfo[_msgSender()].balance == 0) {
|
|
129
|
-
_mintGDRewards(_msgSender()); //we mint GD rewards only when balance is 0 or upon request
|
|
130
|
-
}
|
|
131
|
-
|
|
132
|
-
/* end G$ rewards update */
|
|
133
|
-
|
|
134
|
-
require(
|
|
135
|
-
token.transfer(_msgSender(), tokenWithdraw),
|
|
136
|
-
"withdraw transfer failed"
|
|
137
|
-
);
|
|
138
|
-
emit StakeWithdraw(_msgSender(), _amount);
|
|
139
|
-
}
|
|
140
|
-
|
|
141
|
-
function _mintGDRewards(address _to) internal returns (uint256 actualSent) {
|
|
142
|
-
uint256 rewards = _getReward(_to);
|
|
143
|
-
|
|
144
|
-
//make sure RewardsMinter failure doesnt prevent withdrawl of stake
|
|
145
|
-
try
|
|
146
|
-
RewardsMinter(nameService.getAddress("MintBurnWrapper")).sendOrMint(
|
|
147
|
-
_to,
|
|
148
|
-
rewards
|
|
149
|
-
)
|
|
150
|
-
returns (uint256 _res) {
|
|
151
|
-
actualSent = _res;
|
|
152
|
-
} catch {
|
|
153
|
-
actualSent = 0;
|
|
154
|
-
}
|
|
155
|
-
//it could be that rewards minter doesnt have enough or passed cap
|
|
156
|
-
//so we keep track of debt to user
|
|
157
|
-
if (actualSent < rewards) {
|
|
158
|
-
_undoReward(_to, rewards - actualSent);
|
|
159
|
-
}
|
|
160
|
-
}
|
|
161
|
-
|
|
162
|
-
/**
|
|
163
|
-
* @dev Staker can withdraw their rewards without withdraw their stake
|
|
164
|
-
*/
|
|
165
|
-
function withdrawRewards()
|
|
166
|
-
public
|
|
167
|
-
nonReentrant
|
|
168
|
-
returns (uint256 goodRewards, uint256 gdRewards)
|
|
169
|
-
{
|
|
170
|
-
goodRewards = _mintRewards(_msgSender());
|
|
171
|
-
gdRewards = _mintGDRewards(_msgSender());
|
|
172
|
-
}
|
|
173
|
-
|
|
174
|
-
/**
|
|
175
|
-
* @dev Mint rewards of the staker
|
|
176
|
-
* @param user Receipent address of the rewards
|
|
177
|
-
* @return Returns amount of the minted rewards
|
|
178
|
-
* emits 'ReputationEarned' event for staker earned GOOD amount
|
|
179
|
-
*/
|
|
180
|
-
function _mintRewards(address user) internal returns (uint256) {
|
|
181
|
-
uint256 amount = _issueEarnedRewards(address(this), user, 0, block.number);
|
|
182
|
-
if (amount > 0) {
|
|
183
|
-
ERC20(nameService.getAddress("REPUTATION")).mint(user, amount);
|
|
184
|
-
emit ReputationEarned(_msgSender(), amount);
|
|
185
|
-
}
|
|
186
|
-
return amount;
|
|
187
|
-
}
|
|
188
|
-
|
|
189
|
-
/**
|
|
190
|
-
* @dev Returns the number of decimals used to get its user representation.
|
|
191
|
-
*/
|
|
192
|
-
function decimals() public view virtual override returns (uint8) {
|
|
193
|
-
return 2;
|
|
194
|
-
}
|
|
195
|
-
|
|
196
|
-
/**
|
|
197
|
-
* @dev override _transfer to handle rewards calculations when transfer the stake
|
|
198
|
-
*/
|
|
199
|
-
function _transfer(
|
|
200
|
-
address from,
|
|
201
|
-
address to,
|
|
202
|
-
uint256 value
|
|
203
|
-
) internal override {
|
|
204
|
-
_decreaseProductivity(address(this), from, value, 0, block.number);
|
|
205
|
-
_withdraw(from, value); //update G$ rewards
|
|
206
|
-
_increaseProductivity(address(this), to, value, 0, block.number);
|
|
207
|
-
_stake(to, value); //update G$ rewards
|
|
208
|
-
|
|
209
|
-
//mint GOOD rewards
|
|
210
|
-
_mintRewards(from);
|
|
211
|
-
_mintRewards(to);
|
|
212
|
-
|
|
213
|
-
if (stakersInfo[from].balance == 0) {
|
|
214
|
-
_mintGDRewards(from); //we mint GD rewards only when balance is 0 or upon request
|
|
215
|
-
}
|
|
216
|
-
super._transfer(from, to, value);
|
|
217
|
-
}
|
|
218
|
-
|
|
219
|
-
/**
|
|
220
|
-
* @dev Calculate rewards per block from monthly amount of rewards and set it
|
|
221
|
-
* @param _monthlyAmount total rewards which will distribute monthly
|
|
222
|
-
*/
|
|
223
|
-
function setMonthlyGOODRewards(uint256 _monthlyAmount) public {
|
|
224
|
-
_onlyAvatar();
|
|
225
|
-
_setMonthlyRewards(address(this), _monthlyAmount);
|
|
226
|
-
}
|
|
227
|
-
|
|
228
|
-
/**
|
|
229
|
-
* @dev Calculate rewards per block from monthly amount of rewards and set it
|
|
230
|
-
* @param _interestRatePerBlock bps yearly apy
|
|
231
|
-
*/
|
|
232
|
-
function setGdApy(uint128 _interestRatePerBlock) public {
|
|
233
|
-
_onlyAvatar();
|
|
234
|
-
_setAPY(_interestRatePerBlock);
|
|
235
|
-
}
|
|
236
|
-
|
|
237
|
-
/// @dev helper function for multibase
|
|
238
|
-
function getRewardsPerBlock() public view returns (uint256) {
|
|
239
|
-
return rewardsPerBlock[address(this)];
|
|
240
|
-
}
|
|
241
|
-
|
|
242
|
-
/// @dev helper function for multibase
|
|
243
|
-
function getStaked(address _user) public view returns (uint256, uint256) {
|
|
244
|
-
return getProductivity(address(this), _user);
|
|
245
|
-
}
|
|
246
|
-
|
|
247
|
-
/// @dev helper function for multibase
|
|
248
|
-
function getUserPendingReward(address _user) public view returns (uint256) {
|
|
249
|
-
return getUserPendingReward(address(this), 0, block.number, _user);
|
|
250
|
-
}
|
|
251
|
-
|
|
252
|
-
/// @dev helper function for multibase
|
|
253
|
-
function goodStakerInfo(address _user) public view returns (UserInfo memory) {
|
|
254
|
-
return contractToUsers[address(this)][_user];
|
|
255
|
-
}
|
|
256
|
-
|
|
257
|
-
function totalRewardsPerShare() public view returns (uint256) {
|
|
258
|
-
return totalRewardsPerShare(address(this));
|
|
259
|
-
}
|
|
260
|
-
}
|
|
@@ -1,118 +0,0 @@
|
|
|
1
|
-
// SPDX-License-Identifier: MIT
|
|
2
|
-
/**
|
|
3
|
-
Wrap the G$ token to provide mint permissions to multichain.org router/bridge
|
|
4
|
-
based on https://github.com/anyswap/multichain-smart-contracts/blob/1459fe6281867319af8ffb1849e5c16d242d6530/contracts/wrapper/MintBurnWrapper.sol
|
|
5
|
-
|
|
6
|
-
Added onTokenTransfer
|
|
7
|
-
|
|
8
|
-
Fixed:
|
|
9
|
-
https://github.com/anyswap/multichain-smart-contracts/issues/4
|
|
10
|
-
https://github.com/anyswap/multichain-smart-contracts/issues/3
|
|
11
|
-
*/
|
|
12
|
-
|
|
13
|
-
pragma solidity ^0.8;
|
|
14
|
-
|
|
15
|
-
import "@openzeppelin/contracts/token/ERC20/IERC20.sol";
|
|
16
|
-
import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
|
|
17
|
-
import "@openzeppelin/contracts-upgradeable/access/AccessControlEnumerableUpgradeable.sol";
|
|
18
|
-
import "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol";
|
|
19
|
-
import "@openzeppelin/contracts/utils/math/Math.sol";
|
|
20
|
-
|
|
21
|
-
import "../utils/DAOUpgradeableContract.sol";
|
|
22
|
-
|
|
23
|
-
contract DistributionHelper is
|
|
24
|
-
DAOUpgradeableContract,
|
|
25
|
-
AccessControlEnumerableUpgradeable
|
|
26
|
-
{
|
|
27
|
-
enum TransferType {
|
|
28
|
-
FuseBridge,
|
|
29
|
-
MultichainBridge,
|
|
30
|
-
Contract
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
struct DistributionRecipient {
|
|
34
|
-
uint32 bps;
|
|
35
|
-
uint32 chainId;
|
|
36
|
-
address addr;
|
|
37
|
-
TransferType transferType;
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
DistributionRecipient[] public distributionRecipients;
|
|
41
|
-
address public fuseBridge;
|
|
42
|
-
IMultichainRouter public multiChainBridge;
|
|
43
|
-
|
|
44
|
-
event Distribution(
|
|
45
|
-
uint256 distributed,
|
|
46
|
-
uint256 startingBalance,
|
|
47
|
-
uint256 incomingAmount
|
|
48
|
-
);
|
|
49
|
-
|
|
50
|
-
function initialize(INameService _ns) external initializer {
|
|
51
|
-
__AccessControlEnumerable_init();
|
|
52
|
-
setDAO(_ns);
|
|
53
|
-
_setupRole(DEFAULT_ADMIN_ROLE, avatar);
|
|
54
|
-
fuseBridge = nameService.getAddress("BRIDGE_CONTRACT");
|
|
55
|
-
multiChainBridge = IMultichainRouter(
|
|
56
|
-
0xf27Ee99622C3C9b264583dACB2cCE056e194494f
|
|
57
|
-
);
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
function onDistribution(uint256 _amount) external {
|
|
61
|
-
//we consider the actuall balance and not _amount
|
|
62
|
-
uint256 toDistribute = nativeToken().balanceOf(address(this));
|
|
63
|
-
if (toDistribute == 0) return;
|
|
64
|
-
|
|
65
|
-
uint256 totalDistributed;
|
|
66
|
-
for (uint256 i = 0; i < distributionRecipients.length; i++) {
|
|
67
|
-
DistributionRecipient storage r = distributionRecipients[i];
|
|
68
|
-
if (r.bps > 0) {
|
|
69
|
-
uint256 toTransfer = (toDistribute * r.bps) / 10000;
|
|
70
|
-
totalDistributed += toTransfer;
|
|
71
|
-
distribute(r, toTransfer);
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
emit Distribution(totalDistributed, toDistribute, _amount);
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
function addRecipient(DistributionRecipient memory _recipient)
|
|
79
|
-
external
|
|
80
|
-
onlyRole(DEFAULT_ADMIN_ROLE)
|
|
81
|
-
{
|
|
82
|
-
distributionRecipients.push(_recipient);
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
function updateRecipient(DistributionRecipient memory _recipient)
|
|
86
|
-
external
|
|
87
|
-
onlyRole(DEFAULT_ADMIN_ROLE)
|
|
88
|
-
{
|
|
89
|
-
for (uint256 i = 0; i < distributionRecipients.length; i++) {
|
|
90
|
-
if (distributionRecipients[i].addr == _recipient.addr) {
|
|
91
|
-
distributionRecipients[i] = _recipient;
|
|
92
|
-
return;
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
function distribute(DistributionRecipient storage _recipient, uint256 _amount)
|
|
98
|
-
internal
|
|
99
|
-
{
|
|
100
|
-
if (_recipient.transferType == TransferType.FuseBridge) {
|
|
101
|
-
nativeToken().transferAndCall(
|
|
102
|
-
fuseBridge,
|
|
103
|
-
_amount,
|
|
104
|
-
abi.encodePacked(_recipient.addr)
|
|
105
|
-
);
|
|
106
|
-
} else if (_recipient.transferType == TransferType.MultichainBridge) {
|
|
107
|
-
nativeToken().approve(address(multiChainBridge), _amount);
|
|
108
|
-
multiChainBridge.anySwapOut(
|
|
109
|
-
address(nativeToken()),
|
|
110
|
-
_recipient.addr,
|
|
111
|
-
_amount,
|
|
112
|
-
_recipient.chainId
|
|
113
|
-
);
|
|
114
|
-
} else if (_recipient.transferType == TransferType.Contract) {
|
|
115
|
-
nativeToken().transferAndCall(_recipient.addr, _amount, "");
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
}
|