@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,268 +0,0 @@
|
|
|
1
|
-
// SPDX-License-Identifier: BSD-4-Clause
|
|
2
|
-
/*
|
|
3
|
-
* ABDK Math 64.64 Smart Contract Library. Copyright © 2019 by ABDK Consulting.
|
|
4
|
-
* Author: Mikhail Vladimirov <mikhail.vladimirov@gmail.com>
|
|
5
|
-
*/
|
|
6
|
-
pragma solidity ^0.8.0;
|
|
7
|
-
|
|
8
|
-
/**
|
|
9
|
-
* Smart contract library of mathematical functions operating with signed
|
|
10
|
-
* 64.64-bit fixed point numbers. Signed 64.64-bit fixed point number is
|
|
11
|
-
* basically a simple fraction whose numerator is signed 128-bit integer and
|
|
12
|
-
* denominator is 2^64. As long as denominator is always the same, there is no
|
|
13
|
-
* need to store it, thus in Solidity signed 64.64-bit fixed point numbers are
|
|
14
|
-
* represented by int128 type holding only the numerator.
|
|
15
|
-
*/
|
|
16
|
-
library Math64x64 {
|
|
17
|
-
/*
|
|
18
|
-
* Minimum value signed 64.64-bit fixed point number may have.
|
|
19
|
-
*/
|
|
20
|
-
int128 private constant MIN_64x64 = -0x80000000000000000000000000000000;
|
|
21
|
-
|
|
22
|
-
/*
|
|
23
|
-
* Maximum value signed 64.64-bit fixed point number may have.
|
|
24
|
-
*/
|
|
25
|
-
int128 private constant MAX_64x64 = 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF;
|
|
26
|
-
|
|
27
|
-
/**
|
|
28
|
-
* Convert unsigned 256-bit integer number into signed 64.64-bit fixed point
|
|
29
|
-
* number. Revert on overflow.
|
|
30
|
-
*
|
|
31
|
-
* @param x unsigned 256-bit integer number
|
|
32
|
-
* @return signed 64.64-bit fixed point number
|
|
33
|
-
*/
|
|
34
|
-
function fromUInt(uint256 x) internal pure returns (int128) {
|
|
35
|
-
unchecked {
|
|
36
|
-
require(x <= 0x7FFFFFFFFFFFFFFF);
|
|
37
|
-
return int128(int256(x << 64));
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
/**
|
|
42
|
-
* Convert signed 64.64 fixed point number into unsigned 64-bit integer
|
|
43
|
-
* number rounding down. Revert on underflow.
|
|
44
|
-
*
|
|
45
|
-
* @param x signed 64.64-bit fixed point number
|
|
46
|
-
* @return unsigned 64-bit integer number
|
|
47
|
-
*/
|
|
48
|
-
function toUInt(int128 x) internal pure returns (uint64) {
|
|
49
|
-
unchecked {
|
|
50
|
-
require(x >= 0);
|
|
51
|
-
return uint64(uint128(x >> 64));
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
/**
|
|
56
|
-
* Calculate x * y rounding down, where x is signed 64.64 fixed point number
|
|
57
|
-
* and y is unsigned 256-bit integer number. Revert on overflow.
|
|
58
|
-
*
|
|
59
|
-
* @param x signed 64.64 fixed point number
|
|
60
|
-
* @param y unsigned 256-bit integer number
|
|
61
|
-
* @return unsigned 256-bit integer number
|
|
62
|
-
*/
|
|
63
|
-
function mulu(int128 x, uint256 y) internal pure returns (uint256) {
|
|
64
|
-
unchecked {
|
|
65
|
-
if (y == 0) return 0;
|
|
66
|
-
|
|
67
|
-
require(x >= 0);
|
|
68
|
-
|
|
69
|
-
uint256 lo = (uint256(int256(x)) *
|
|
70
|
-
(y & 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF)) >> 64;
|
|
71
|
-
uint256 hi = uint256(int256(x)) * (y >> 128);
|
|
72
|
-
|
|
73
|
-
require(hi <= 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF);
|
|
74
|
-
hi <<= 64;
|
|
75
|
-
|
|
76
|
-
require(
|
|
77
|
-
hi <=
|
|
78
|
-
0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -
|
|
79
|
-
lo
|
|
80
|
-
);
|
|
81
|
-
return hi + lo;
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
/**
|
|
86
|
-
* Calculate x / y rounding towards zero, where x and y are unsigned 256-bit
|
|
87
|
-
* integer numbers. Revert on overflow or when y is zero.
|
|
88
|
-
*
|
|
89
|
-
* @param x unsigned 256-bit integer number
|
|
90
|
-
* @param y unsigned 256-bit integer number
|
|
91
|
-
* @return signed 64.64-bit fixed point number
|
|
92
|
-
*/
|
|
93
|
-
function divu(uint256 x, uint256 y) internal pure returns (int128) {
|
|
94
|
-
unchecked {
|
|
95
|
-
require(y != 0);
|
|
96
|
-
uint128 result = divuu(x, y);
|
|
97
|
-
require(result <= uint128(MAX_64x64));
|
|
98
|
-
return int128(result);
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
/**
|
|
103
|
-
* Calculate x^y assuming 0^0 is 1, where x is signed 64.64 fixed point number
|
|
104
|
-
* and y is unsigned 256-bit integer number. Revert on overflow.
|
|
105
|
-
*
|
|
106
|
-
* @param x signed 64.64-bit fixed point number
|
|
107
|
-
* @param y uint256 value
|
|
108
|
-
* @return signed 64.64-bit fixed point number
|
|
109
|
-
*/
|
|
110
|
-
function pow(int128 x, uint256 y) internal pure returns (int128) {
|
|
111
|
-
unchecked {
|
|
112
|
-
bool negative = x < 0 && y & 1 == 1;
|
|
113
|
-
|
|
114
|
-
uint256 absX = uint128(x < 0 ? -x : x);
|
|
115
|
-
uint256 absResult;
|
|
116
|
-
absResult = 0x100000000000000000000000000000000;
|
|
117
|
-
|
|
118
|
-
if (absX <= 0x10000000000000000) {
|
|
119
|
-
absX <<= 63;
|
|
120
|
-
while (y != 0) {
|
|
121
|
-
if (y & 0x1 != 0) {
|
|
122
|
-
absResult = (absResult * absX) >> 127;
|
|
123
|
-
}
|
|
124
|
-
absX = (absX * absX) >> 127;
|
|
125
|
-
|
|
126
|
-
if (y & 0x2 != 0) {
|
|
127
|
-
absResult = (absResult * absX) >> 127;
|
|
128
|
-
}
|
|
129
|
-
absX = (absX * absX) >> 127;
|
|
130
|
-
|
|
131
|
-
if (y & 0x4 != 0) {
|
|
132
|
-
absResult = (absResult * absX) >> 127;
|
|
133
|
-
}
|
|
134
|
-
absX = (absX * absX) >> 127;
|
|
135
|
-
|
|
136
|
-
if (y & 0x8 != 0) {
|
|
137
|
-
absResult = (absResult * absX) >> 127;
|
|
138
|
-
}
|
|
139
|
-
absX = (absX * absX) >> 127;
|
|
140
|
-
|
|
141
|
-
y >>= 4;
|
|
142
|
-
}
|
|
143
|
-
|
|
144
|
-
absResult >>= 64;
|
|
145
|
-
} else {
|
|
146
|
-
uint256 absXShift = 63;
|
|
147
|
-
if (absX < 0x1000000000000000000000000) {
|
|
148
|
-
absX <<= 32;
|
|
149
|
-
absXShift -= 32;
|
|
150
|
-
}
|
|
151
|
-
if (absX < 0x10000000000000000000000000000) {
|
|
152
|
-
absX <<= 16;
|
|
153
|
-
absXShift -= 16;
|
|
154
|
-
}
|
|
155
|
-
if (absX < 0x1000000000000000000000000000000) {
|
|
156
|
-
absX <<= 8;
|
|
157
|
-
absXShift -= 8;
|
|
158
|
-
}
|
|
159
|
-
if (absX < 0x10000000000000000000000000000000) {
|
|
160
|
-
absX <<= 4;
|
|
161
|
-
absXShift -= 4;
|
|
162
|
-
}
|
|
163
|
-
if (absX < 0x40000000000000000000000000000000) {
|
|
164
|
-
absX <<= 2;
|
|
165
|
-
absXShift -= 2;
|
|
166
|
-
}
|
|
167
|
-
if (absX < 0x80000000000000000000000000000000) {
|
|
168
|
-
absX <<= 1;
|
|
169
|
-
absXShift -= 1;
|
|
170
|
-
}
|
|
171
|
-
|
|
172
|
-
uint256 resultShift = 0;
|
|
173
|
-
while (y != 0) {
|
|
174
|
-
require(absXShift < 64);
|
|
175
|
-
|
|
176
|
-
if (y & 0x1 != 0) {
|
|
177
|
-
absResult = (absResult * absX) >> 127;
|
|
178
|
-
resultShift += absXShift;
|
|
179
|
-
if (absResult > 0x100000000000000000000000000000000) {
|
|
180
|
-
absResult >>= 1;
|
|
181
|
-
resultShift += 1;
|
|
182
|
-
}
|
|
183
|
-
}
|
|
184
|
-
absX = (absX * absX) >> 127;
|
|
185
|
-
absXShift <<= 1;
|
|
186
|
-
if (absX >= 0x100000000000000000000000000000000) {
|
|
187
|
-
absX >>= 1;
|
|
188
|
-
absXShift += 1;
|
|
189
|
-
}
|
|
190
|
-
|
|
191
|
-
y >>= 1;
|
|
192
|
-
}
|
|
193
|
-
|
|
194
|
-
require(resultShift < 64);
|
|
195
|
-
absResult >>= 64 - resultShift;
|
|
196
|
-
}
|
|
197
|
-
int256 result = negative ? -int256(absResult) : int256(absResult);
|
|
198
|
-
require(result >= MIN_64x64 && result <= MAX_64x64);
|
|
199
|
-
return int128(result);
|
|
200
|
-
}
|
|
201
|
-
}
|
|
202
|
-
|
|
203
|
-
/**
|
|
204
|
-
* Calculate x / y rounding towards zero, where x and y are unsigned 256-bit
|
|
205
|
-
* integer numbers. Revert on overflow or when y is zero.
|
|
206
|
-
*
|
|
207
|
-
* @param x unsigned 256-bit integer number
|
|
208
|
-
* @param y unsigned 256-bit integer number
|
|
209
|
-
* @return unsigned 64.64-bit fixed point number
|
|
210
|
-
*/
|
|
211
|
-
function divuu(uint256 x, uint256 y) private pure returns (uint128) {
|
|
212
|
-
unchecked {
|
|
213
|
-
require(y != 0);
|
|
214
|
-
|
|
215
|
-
uint256 result;
|
|
216
|
-
|
|
217
|
-
if (x <= 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF)
|
|
218
|
-
result = (x << 64) / y;
|
|
219
|
-
else {
|
|
220
|
-
uint256 msb = 192;
|
|
221
|
-
uint256 xc = x >> 192;
|
|
222
|
-
if (xc >= 0x100000000) {
|
|
223
|
-
xc >>= 32;
|
|
224
|
-
msb += 32;
|
|
225
|
-
}
|
|
226
|
-
if (xc >= 0x10000) {
|
|
227
|
-
xc >>= 16;
|
|
228
|
-
msb += 16;
|
|
229
|
-
}
|
|
230
|
-
if (xc >= 0x100) {
|
|
231
|
-
xc >>= 8;
|
|
232
|
-
msb += 8;
|
|
233
|
-
}
|
|
234
|
-
if (xc >= 0x10) {
|
|
235
|
-
xc >>= 4;
|
|
236
|
-
msb += 4;
|
|
237
|
-
}
|
|
238
|
-
if (xc >= 0x4) {
|
|
239
|
-
xc >>= 2;
|
|
240
|
-
msb += 2;
|
|
241
|
-
}
|
|
242
|
-
if (xc >= 0x2) msb += 1; // No need to shift xc anymore
|
|
243
|
-
|
|
244
|
-
result = (x << (255 - msb)) / (((y - 1) >> (msb - 191)) + 1);
|
|
245
|
-
require(result <= 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF);
|
|
246
|
-
|
|
247
|
-
uint256 hi = result * (y >> 128);
|
|
248
|
-
uint256 lo = result * (y & 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF);
|
|
249
|
-
|
|
250
|
-
uint256 xh = x >> 192;
|
|
251
|
-
uint256 xl = x << 64;
|
|
252
|
-
|
|
253
|
-
if (xl < lo) xh -= 1;
|
|
254
|
-
xl -= lo; // We rely on overflow behavior here
|
|
255
|
-
lo = hi << 128;
|
|
256
|
-
if (xl < lo) xh -= 1;
|
|
257
|
-
xl -= lo; // We rely on overflow behavior here
|
|
258
|
-
|
|
259
|
-
assert(xh == hi >> 128);
|
|
260
|
-
|
|
261
|
-
result += xl / y;
|
|
262
|
-
}
|
|
263
|
-
|
|
264
|
-
require(result <= 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF);
|
|
265
|
-
return uint128(result);
|
|
266
|
-
}
|
|
267
|
-
}
|
|
268
|
-
}
|
|
@@ -1,141 +0,0 @@
|
|
|
1
|
-
// SPDX-License-Identifier: MIT
|
|
2
|
-
pragma solidity >=0.8.0;
|
|
3
|
-
|
|
4
|
-
import "./Math64X64.sol";
|
|
5
|
-
|
|
6
|
-
contract StakingRewardsFixedAPY {
|
|
7
|
-
using Math64x64 for int128;
|
|
8
|
-
|
|
9
|
-
// the users stake information
|
|
10
|
-
struct StakerInfo {
|
|
11
|
-
uint128 reward; // the reward amount which should be transfered to the user
|
|
12
|
-
uint128 balance; // the amount of user active stake
|
|
13
|
-
uint128 rewardPerTokenPaid; // rewards that accounted already so should be substracted
|
|
14
|
-
// while calculating rewards of staker
|
|
15
|
-
uint128 rewardsMinted;
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
// the user info sheet
|
|
19
|
-
mapping(address => StakerInfo) public stakersInfo;
|
|
20
|
-
|
|
21
|
-
// precision constant for math
|
|
22
|
-
uint128 public constant PRECISION = 1e18;
|
|
23
|
-
|
|
24
|
-
// last block this staking contract was updated and rewards were calculated
|
|
25
|
-
uint128 public lastUpdateBlock;
|
|
26
|
-
|
|
27
|
-
// the amount of reward per token
|
|
28
|
-
uint128 public rewardPerTokenStored;
|
|
29
|
-
|
|
30
|
-
// total supply of active stakes
|
|
31
|
-
uint128 public totalStaked;
|
|
32
|
-
uint256 public principle; //total earning compounding interest;
|
|
33
|
-
|
|
34
|
-
// annual percentage yield - rate of return on stake over one year;
|
|
35
|
-
|
|
36
|
-
// interest rate per one block in 1e18 precision.
|
|
37
|
-
//for example APY=5% then per block = nroot(1+0.05,numberOfBlocksPerYear)
|
|
38
|
-
//nroot(1.05,6000000) = 1.000000008131694
|
|
39
|
-
//in 1e18 = 1000000008131694000
|
|
40
|
-
int128 public interestRatePerBlockX64;
|
|
41
|
-
|
|
42
|
-
constructor(uint128 _interestRatePerBlock) {
|
|
43
|
-
_setAPY(_interestRatePerBlock);
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
function _setAPY(uint128 _interestRatePerBlock)
|
|
47
|
-
internal
|
|
48
|
-
updateReward(address(0))
|
|
49
|
-
{
|
|
50
|
-
interestRatePerBlockX64 = Math64x64.divu(_interestRatePerBlock, 1e18); //convert to signed int x64
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
modifier updateReward(address account) {
|
|
54
|
-
_updateReward(account);
|
|
55
|
-
_;
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
function _rewardPerToken() internal returns (uint256) {
|
|
59
|
-
if (totalStaked == 0) {
|
|
60
|
-
return rewardPerTokenStored;
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
//earned in timespan = interestRatePerBlock^blocksPassed * principle/PRECISION
|
|
64
|
-
//earned perToken = earnedInTimeSpan*PRECISION/totalStaked
|
|
65
|
-
//PRECISION cancels out
|
|
66
|
-
int128 compound = interestRatePerBlockX64.pow(
|
|
67
|
-
block.number - lastUpdateBlock
|
|
68
|
-
);
|
|
69
|
-
uint256 earnedInterest = compound.mulu(principle);
|
|
70
|
-
principle += earnedInterest;
|
|
71
|
-
|
|
72
|
-
return rewardPerTokenStored += uint128(earnedInterest / totalStaked); //principle is already in PRECISION
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
/**
|
|
76
|
-
* @dev The function allows anyone to calculate the exact amount of reward
|
|
77
|
-
* earned.
|
|
78
|
-
* @param account A staker address
|
|
79
|
-
*/
|
|
80
|
-
function earned(address account) public returns (uint256) {
|
|
81
|
-
return
|
|
82
|
-
(stakersInfo[account].balance *
|
|
83
|
-
(_rewardPerToken() - stakersInfo[account].rewardPerTokenPaid)) /
|
|
84
|
-
PRECISION;
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
// this function updates the reward for the specific user
|
|
88
|
-
function _updateReward(address _account) internal virtual {
|
|
89
|
-
rewardPerTokenStored = uint128(_rewardPerToken());
|
|
90
|
-
lastUpdateBlock = uint128(block.number);
|
|
91
|
-
if (_account != address(0)) {
|
|
92
|
-
stakersInfo[_account].reward += uint128(earned(_account));
|
|
93
|
-
stakersInfo[_account].rewardPerTokenPaid = rewardPerTokenStored;
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
function _withdraw(address _from, uint256 _amount)
|
|
98
|
-
internal
|
|
99
|
-
virtual
|
|
100
|
-
updateReward(_from)
|
|
101
|
-
{
|
|
102
|
-
require(_amount > 0, "Cannot withdraw 0");
|
|
103
|
-
totalStaked -= uint128(_amount);
|
|
104
|
-
principle -= _amount * PRECISION;
|
|
105
|
-
stakersInfo[_from].balance -= uint128(_amount);
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
function _stake(address _from, uint256 _amount)
|
|
109
|
-
internal
|
|
110
|
-
virtual
|
|
111
|
-
updateReward(_from)
|
|
112
|
-
{
|
|
113
|
-
require(_amount > 0, "Cannot stake 0");
|
|
114
|
-
totalStaked += uint128(_amount);
|
|
115
|
-
principle += _amount * PRECISION;
|
|
116
|
-
|
|
117
|
-
stakersInfo[_from].balance += uint128(_amount);
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
function _getReward(address _to)
|
|
121
|
-
internal
|
|
122
|
-
virtual
|
|
123
|
-
updateReward(_to)
|
|
124
|
-
returns (uint256 reward)
|
|
125
|
-
{
|
|
126
|
-
// return and reset the reward if there is any
|
|
127
|
-
reward = stakersInfo[_to].reward;
|
|
128
|
-
stakersInfo[_to].reward = 0;
|
|
129
|
-
stakersInfo[_to].rewardsMinted += uint128(reward);
|
|
130
|
-
principle -= reward * PRECISION; //rewards are part of the compounding interest
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
/**
|
|
134
|
-
* @dev keep track of debt to user in case reward minting failed
|
|
135
|
-
*/
|
|
136
|
-
function _undoReward(address _to, uint256 _amount) internal virtual {
|
|
137
|
-
stakersInfo[_to].reward += uint128(_amount);
|
|
138
|
-
stakersInfo[_to].rewardsMinted -= uint128(_amount);
|
|
139
|
-
principle += _amount * PRECISION; //rewards are part of the compounding interest
|
|
140
|
-
}
|
|
141
|
-
}
|