@gooddollar/goodprotocol 1.0.31-beta.0 → 2.0.1
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/README.md +25 -0
- package/artifacts/abis/AaveMock.min.json +1 -1
- package/artifacts/abis/AaveStakingFactory.min.json +1 -1
- package/artifacts/abis/AdminWallet.min.json +1 -1
- package/artifacts/abis/AdminWalletFuse.min.json +1 -0
- package/artifacts/abis/BuyAndBridgeHelper.min.json +1 -0
- package/artifacts/abis/ClaimersDistribution.min.json +1 -1
- package/artifacts/abis/CompoundStakingFactory.min.json +1 -1
- package/artifacts/abis/CompoundVotingMachine.min.json +1 -1
- package/artifacts/abis/DAIMock.min.json +1 -1
- package/artifacts/abis/DAOUpgradeableContract.min.json +1 -1
- package/artifacts/abis/DecimalsMock.min.json +1 -1
- package/artifacts/abis/DistributionHelper.min.json +1 -1
- package/artifacts/abis/DistributionHelperTest.min.json +1 -1
- package/artifacts/abis/DistributionHelperTestHelper.min.json +1 -1
- package/artifacts/abis/DonationsStaking.min.json +1 -1
- package/artifacts/abis/ERC20Permit.min.json +1 -0
- package/artifacts/abis/ERC20PresetMinterPauserUpgradeable.min.json +1 -0
- package/artifacts/abis/ERC677.min.json +1 -0
- package/artifacts/abis/ERC677Receiver.min.json +1 -0
- package/artifacts/abis/ExchangeHelper.min.json +1 -1
- package/artifacts/abis/Faucet.min.json +1 -0
- package/artifacts/abis/FeesFormulaMock.min.json +1 -0
- package/artifacts/abis/FuseFaucet.min.json +1 -1
- package/artifacts/abis/FuseFaucetV2.min.json +1 -0
- package/artifacts/abis/FuseStakingV3.min.json +1 -1
- package/artifacts/abis/GReputation.min.json +1 -1
- package/artifacts/abis/GoodAaveStaking.min.json +1 -1
- package/artifacts/abis/GoodAaveStakingV2.min.json +1 -1
- package/artifacts/abis/GoodCompoundStaking.min.json +1 -1
- package/artifacts/abis/GoodCompoundStakingTest.min.json +1 -1
- package/artifacts/abis/GoodCompoundStakingV2.min.json +1 -1
- package/artifacts/abis/GoodDollar.min.json +1 -0
- package/artifacts/abis/GoodDollarMintBurnWrapper.min.json +1 -1
- package/artifacts/abis/GoodDollarStaking.min.json +1 -1
- package/artifacts/abis/GoodDollarStakingMock.min.json +1 -1
- package/artifacts/abis/GoodFundManager.min.json +1 -1
- package/artifacts/abis/GoodFundManagerTest.min.json +1 -1
- package/artifacts/abis/GoodMarketMaker.min.json +1 -1
- package/artifacts/abis/GoodReserveCDai.min.json +1 -1
- package/artifacts/abis/GovernanceStaking.min.json +1 -1
- package/artifacts/abis/IFeesFormula.min.json +1 -0
- package/artifacts/abis/IGoodDollar.min.json +1 -1
- package/artifacts/abis/IGoodDollarCustom.min.json +1 -0
- package/artifacts/abis/IGovernanceStaking.min.json +1 -0
- package/artifacts/abis/IIdentity.min.json +1 -1
- package/artifacts/abis/IIdentityV2.min.json +1 -0
- package/artifacts/abis/IStakingUpgrade.min.json +1 -0
- package/artifacts/abis/ISuperGoodDollar.min.json +1 -0
- package/artifacts/abis/IdentityMock.min.json +1 -0
- package/artifacts/abis/IdentityV2.min.json +1 -0
- package/artifacts/abis/InvitesFuseV2.min.json +1 -0
- package/artifacts/abis/InvitesV1.min.json +1 -1
- package/artifacts/abis/InvitesV2.min.json +1 -0
- package/artifacts/abis/LendingPoolMock.min.json +1 -1
- package/artifacts/abis/NameService.min.json +1 -1
- package/artifacts/abis/PayableMock.min.json +1 -0
- package/artifacts/abis/Proxy.min.json +1 -0
- package/artifacts/abis/Reputation.min.json +1 -1
- package/artifacts/abis/SelfApprove.min.json +1 -0
- package/artifacts/abis/SimpleStaking.min.json +1 -1
- package/artifacts/abis/SimpleStakingV2.min.json +1 -1
- package/artifacts/abis/SixteenDecimalsTokenMock.min.json +1 -1
- package/artifacts/abis/StakersDistribution.min.json +1 -1
- package/artifacts/abis/SuperGoodDollar.min.json +1 -0
- package/artifacts/abis/SuperToken.min.json +1 -0
- package/artifacts/abis/SuperfluidToken.min.json +1 -0
- package/artifacts/abis/TwentyDecimalsTokenMock.min.json +1 -1
- package/artifacts/abis/UBIScheme.min.json +1 -1
- package/artifacts/abis/USDCMock.min.json +1 -1
- package/artifacts/abis/UUPSProxiable.min.json +1 -0
- package/artifacts/abis/UUPSProxy.min.json +1 -0
- package/artifacts/abis/UUPSUtils.min.json +1 -0
- package/artifacts/abis/UpgradableMock.min.json +1 -1
- package/artifacts/abis/UpgradableMock2.min.json +1 -1
- package/artifacts/abis/UpgradableMock3.min.json +1 -1
- package/artifacts/abis/UpgradableMock4.min.json +1 -1
- package/artifacts/abis/cBATMock.min.json +1 -1
- package/artifacts/abis/cDAILowWorthMock.min.json +1 -1
- package/artifacts/abis/cDAIMock.min.json +1 -1
- package/artifacts/abis/cDAINonMintableMock.min.json +1 -1
- package/artifacts/abis/cDecimalsMock.min.json +1 -1
- package/artifacts/abis/cSDTMock.min.json +1 -1
- package/artifacts/abis/cUSDCMock.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/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/IGoodDollar.json +184 -0
- 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/IIdentity.json +70 -0
- package/artifacts/contracts/Interfaces.sol/IIdentityV2.dbg.json +4 -0
- package/artifacts/contracts/Interfaces.sol/IIdentityV2.json +300 -0
- 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/IUBIScheme.dbg.json +1 -1
- package/artifacts/contracts/Interfaces.sol/ProxyAdmin.dbg.json +1 -1
- package/artifacts/contracts/Interfaces.sol/Reserve.dbg.json +1 -1
- package/artifacts/contracts/Interfaces.sol/Staking.dbg.json +1 -1
- package/artifacts/contracts/Interfaces.sol/Uniswap.dbg.json +1 -1
- package/artifacts/contracts/Interfaces.sol/UniswapFactory.dbg.json +1 -1
- package/artifacts/contracts/Interfaces.sol/UniswapPair.dbg.json +1 -1
- package/artifacts/contracts/Interfaces.sol/cERC20.dbg.json +1 -1
- package/artifacts/contracts/fuseFaucet/Faucet.sol/Faucet.dbg.json +4 -0
- package/artifacts/contracts/fuseFaucet/Faucet.sol/Faucet.json +736 -0
- package/artifacts/contracts/fuseFaucet/FuseFaucet.sol/FuseFaucet.dbg.json +1 -1
- package/artifacts/contracts/fuseFaucet/FuseFaucet.sol/FuseFaucet.json +15 -2
- package/artifacts/contracts/fuseFaucet/FuseFaucetV2.sol/FuseFaucetV2.dbg.json +4 -0
- package/artifacts/contracts/fuseFaucet/FuseFaucetV2.sol/FuseFaucetV2.json +480 -0
- package/artifacts/contracts/governance/ClaimersDistribution.sol/ClaimersDistribution.dbg.json +1 -1
- package/artifacts/contracts/governance/ClaimersDistribution.sol/ClaimersDistribution.json +28 -2
- package/artifacts/contracts/governance/CompoundVotingMachine.sol/CompoundVotingMachine.dbg.json +1 -1
- package/artifacts/contracts/governance/CompoundVotingMachine.sol/CompoundVotingMachine.json +28 -2
- package/artifacts/contracts/governance/GReputation.sol/GReputation.dbg.json +1 -1
- package/artifacts/contracts/governance/GReputation.sol/GReputation.json +78 -3
- package/artifacts/contracts/governance/GoodDollarStaking.sol/GoodDollarStaking.dbg.json +1 -1
- package/artifacts/contracts/governance/GoodDollarStaking.sol/GoodDollarStaking.json +71 -2
- package/artifacts/contracts/governance/GoodDollarStaking.sol/IGovernanceStaking.dbg.json +4 -0
- package/artifacts/contracts/governance/GoodDollarStaking.sol/IGovernanceStaking.json +24 -0
- package/artifacts/contracts/governance/GoodDollarStaking.sol/IStakingUpgrade.dbg.json +4 -0
- package/artifacts/contracts/governance/GoodDollarStaking.sol/IStakingUpgrade.json +35 -0
- package/artifacts/contracts/governance/GoodDollarStaking.sol/RewardsMinter.dbg.json +1 -1
- package/artifacts/contracts/governance/GovernanceStaking.sol/GovernanceStaking.dbg.json +1 -1
- package/artifacts/contracts/governance/GovernanceStaking.sol/GovernanceStaking.json +31 -5
- 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 +28 -2
- package/artifacts/contracts/governance/StakersDistribution.sol/StakersDistribution.dbg.json +1 -1
- package/artifacts/contracts/governance/StakersDistribution.sol/StakersDistribution.json +28 -2
- package/artifacts/contracts/identity/IdentityV2.sol/IdentityV2.dbg.json +4 -0
- package/artifacts/contracts/identity/IdentityV2.sol/IdentityV2.json +1081 -0
- package/artifacts/contracts/invite/InvitesFuseV2.sol/InvitesFuseV2.dbg.json +4 -0
- package/artifacts/contracts/invite/InvitesFuseV2.sol/InvitesFuseV2.json +505 -0
- package/artifacts/contracts/invite/InvitesV1.sol/InvitesV1.dbg.json +1 -1
- package/artifacts/contracts/invite/InvitesV1.sol/InvitesV1.json +15 -2
- package/artifacts/contracts/invite/InvitesV2.sol/InvitesV2.dbg.json +4 -0
- package/artifacts/contracts/invite/InvitesV2.sol/InvitesV2.json +635 -0
- package/artifacts/contracts/mocks/AaveMock.sol/AaveMock.dbg.json +1 -1
- package/artifacts/contracts/mocks/AaveMock.sol/AaveMock.json +18 -5
- package/artifacts/contracts/mocks/AaveUSDMockOracle.sol/AaveUSDMockOracle.dbg.json +1 -1
- package/artifacts/contracts/mocks/AaveUSDMockOracle.sol/AaveUSDMockOracle.json +2 -2
- package/artifacts/contracts/mocks/BatUSDMockOracle.sol/BatUSDMockOracle.dbg.json +1 -1
- package/artifacts/contracts/mocks/BatUSDMockOracle.sol/BatUSDMockOracle.json +2 -2
- package/artifacts/contracts/mocks/CompUsdMockOracle.sol/CompUSDMockOracle.dbg.json +1 -1
- package/artifacts/contracts/mocks/CompUsdMockOracle.sol/CompUSDMockOracle.json +2 -2
- package/artifacts/contracts/mocks/DAIMock.sol/DAIMock.dbg.json +1 -1
- package/artifacts/contracts/mocks/DAIMock.sol/DAIMock.json +18 -5
- package/artifacts/contracts/mocks/DaiEthPriceMockOracle.sol/DaiEthPriceMockOracle.dbg.json +1 -1
- package/artifacts/contracts/mocks/DaiEthPriceMockOracle.sol/DaiEthPriceMockOracle.json +2 -2
- package/artifacts/contracts/mocks/DecimalsMock.sol/DecimalsMock.dbg.json +1 -1
- package/artifacts/contracts/mocks/DecimalsMock.sol/DecimalsMock.json +18 -5
- package/artifacts/contracts/mocks/DistributionBridgeMock.sol/DistributionBridgeMock.dbg.json +1 -1
- package/artifacts/contracts/mocks/DistributionBridgeMock.sol/DistributionBridgeMock.json +2 -2
- package/artifacts/contracts/mocks/DistributionHelperTest.sol/DistributionHelperTest.dbg.json +1 -1
- package/artifacts/contracts/mocks/DistributionHelperTest.sol/DistributionHelperTest.json +28 -2
- package/artifacts/contracts/mocks/DistributionHelperTest.sol/DistributionHelperTestHelper.dbg.json +1 -1
- package/artifacts/contracts/mocks/DistributionHelperTest.sol/DistributionHelperTestHelper.json +28 -2
- package/artifacts/contracts/mocks/EthUSDMockOracle.sol/EthUSDMockOracle.dbg.json +1 -1
- package/artifacts/contracts/mocks/EthUSDMockOracle.sol/EthUSDMockOracle.json +2 -2
- package/artifacts/contracts/mocks/FeesFormularMock.sol/FeesFormulaMock.dbg.json +4 -0
- package/artifacts/contracts/mocks/FeesFormularMock.sol/FeesFormulaMock.json +69 -0
- package/artifacts/contracts/mocks/GasPriceMockOracle.sol/GasPriceMockOracle.dbg.json +1 -1
- package/artifacts/contracts/mocks/GasPriceMockOracle.sol/GasPriceMockOracle.json +2 -2
- package/artifacts/contracts/mocks/GoodCompoundStakingTest.sol/GoodCompoundStakingTest.dbg.json +1 -1
- package/artifacts/contracts/mocks/GoodCompoundStakingTest.sol/GoodCompoundStakingTest.json +22 -9
- package/artifacts/contracts/mocks/GoodDollarStakingMock.sol/GoodDollarStakingMock.dbg.json +1 -1
- package/artifacts/contracts/mocks/GoodDollarStakingMock.sol/GoodDollarStakingMock.json +95 -2
- package/artifacts/contracts/mocks/GoodFundManagerTest.sol/GoodFundManagerTest.dbg.json +1 -1
- package/artifacts/contracts/mocks/GoodFundManagerTest.sol/GoodFundManagerTest.json +28 -2
- package/artifacts/contracts/mocks/IdentityMock.sol/IdentityMock.dbg.json +4 -0
- package/artifacts/contracts/mocks/IdentityMock.sol/IdentityMock.json +277 -0
- package/artifacts/contracts/mocks/IncentiveControllerMock.sol/IncentiveControllerMock.dbg.json +1 -1
- package/artifacts/contracts/mocks/IncentiveControllerMock.sol/IncentiveControllerMock.json +2 -2
- package/artifacts/contracts/mocks/LendingPoolMock.sol/LendingPoolMock.dbg.json +1 -1
- package/artifacts/contracts/mocks/LendingPoolMock.sol/LendingPoolMock.json +18 -5
- package/artifacts/contracts/mocks/MultichainRouterMock.sol/IWrapper.dbg.json +1 -1
- package/artifacts/contracts/mocks/MultichainRouterMock.sol/MultichainRouterMock.dbg.json +1 -1
- package/artifacts/contracts/mocks/MultichainRouterMock.sol/MultichainRouterMock.json +2 -2
- package/artifacts/contracts/mocks/OverMintTester.sol/IGoodDollarStakingTest.dbg.json +1 -1
- package/artifacts/contracts/mocks/OverMintTester.sol/OverMintTester.dbg.json +1 -1
- package/artifacts/contracts/mocks/OverMintTester.sol/OverMintTester.json +2 -2
- package/artifacts/contracts/mocks/OverMintTesterRegularStake.sol/OverMintTesterRegularStake.dbg.json +1 -1
- package/artifacts/contracts/mocks/OverMintTesterRegularStake.sol/OverMintTesterRegularStake.json +2 -2
- package/artifacts/contracts/mocks/PayableMock.sol/PayableMock.dbg.json +4 -0
- package/artifacts/contracts/mocks/PayableMock.sol/PayableMock.json +18 -0
- package/artifacts/contracts/mocks/SixteenDecimalsTokenMock.sol/SixteenDecimalsTokenMock.dbg.json +1 -1
- package/artifacts/contracts/mocks/SixteenDecimalsTokenMock.sol/SixteenDecimalsTokenMock.json +18 -5
- package/artifacts/contracts/mocks/StakingMockFixedAPY.sol/StakingMockFixedAPY.dbg.json +1 -1
- package/artifacts/contracts/mocks/StakingMockFixedAPY.sol/StakingMockFixedAPY.json +2 -2
- 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/TwentyDecimalsTokenMock.sol/TwentyDecimalsTokenMock.json +18 -5
- package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock.dbg.json +1 -1
- package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock.json +28 -2
- package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock2.dbg.json +1 -1
- package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock2.json +28 -2
- package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock3.dbg.json +1 -1
- package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock3.json +28 -2
- package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock4.dbg.json +1 -1
- package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock4.json +28 -2
- package/artifacts/contracts/mocks/UsdcMock.sol/USDCMock.dbg.json +1 -1
- package/artifacts/contracts/mocks/UsdcMock.sol/USDCMock.json +18 -5
- package/artifacts/contracts/mocks/cBATMock.sol/cBATMock.dbg.json +1 -1
- package/artifacts/contracts/mocks/cBATMock.sol/cBATMock.json +18 -5
- package/artifacts/contracts/mocks/cDAILowWorthMock.sol/cDAILowWorthMock.dbg.json +1 -1
- package/artifacts/contracts/mocks/cDAILowWorthMock.sol/cDAILowWorthMock.json +18 -5
- package/artifacts/contracts/mocks/cDAIMock.sol/cDAIMock.dbg.json +1 -1
- package/artifacts/contracts/mocks/cDAIMock.sol/cDAIMock.json +18 -5
- package/artifacts/contracts/mocks/cDAINonMintableMock.sol/cDAINonMintableMock.dbg.json +1 -1
- package/artifacts/contracts/mocks/cDAINonMintableMock.sol/cDAINonMintableMock.json +18 -5
- package/artifacts/contracts/mocks/cDecimalsMock.sol/cDecimalsMock.dbg.json +1 -1
- package/artifacts/contracts/mocks/cDecimalsMock.sol/cDecimalsMock.json +18 -5
- package/artifacts/contracts/mocks/cSDTMock.sol/cSDTMock.dbg.json +1 -1
- package/artifacts/contracts/mocks/cSDTMock.sol/cSDTMock.json +18 -5
- package/artifacts/contracts/mocks/cUSDCMock.sol/cUSDCMock.dbg.json +1 -1
- package/artifacts/contracts/mocks/cUSDCMock.sol/cUSDCMock.json +18 -5
- package/artifacts/contracts/reserve/DistributionHelper.sol/DistributionHelper.dbg.json +1 -1
- package/artifacts/contracts/reserve/DistributionHelper.sol/DistributionHelper.json +28 -2
- package/artifacts/contracts/reserve/ExchangeHelper.sol/ExchangeHelper.dbg.json +1 -1
- package/artifacts/contracts/reserve/ExchangeHelper.sol/ExchangeHelper.json +28 -2
- package/artifacts/contracts/reserve/GoodMarketMaker.sol/GoodMarketMaker.dbg.json +1 -1
- package/artifacts/contracts/reserve/GoodMarketMaker.sol/GoodMarketMaker.json +28 -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 +31 -5
- 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 +32 -6
- package/artifacts/contracts/staking/FuseStakingV3.sol/FuseStakingV3.dbg.json +1 -1
- package/artifacts/contracts/staking/FuseStakingV3.sol/FuseStakingV3.json +15 -2
- package/artifacts/contracts/staking/FuseStakingV3.sol/IConsensus.dbg.json +1 -1
- package/artifacts/contracts/staking/FuseStakingV3.sol/PegSwap.dbg.json +1 -1
- package/artifacts/contracts/staking/GoodFundManager.sol/GoodFundManager.dbg.json +1 -1
- package/artifacts/contracts/staking/GoodFundManager.sol/GoodFundManager.json +28 -2
- package/artifacts/contracts/staking/SimpleStaking.sol/SimpleStaking.dbg.json +1 -1
- package/artifacts/contracts/staking/SimpleStaking.sol/SimpleStaking.json +16 -3
- package/artifacts/contracts/staking/SimpleStakingV2.sol/SimpleStakingV2.dbg.json +1 -1
- package/artifacts/contracts/staking/SimpleStakingV2.sol/SimpleStakingV2.json +16 -3
- 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 +3 -3
- package/artifacts/contracts/staking/aave/GoodAaveStaking.sol/GoodAaveStaking.dbg.json +1 -1
- package/artifacts/contracts/staking/aave/GoodAaveStaking.sol/GoodAaveStaking.json +20 -7
- package/artifacts/contracts/staking/aave/GoodAaveStakingV2.sol/GoodAaveStakingV2.dbg.json +1 -1
- package/artifacts/contracts/staking/aave/GoodAaveStakingV2.sol/GoodAaveStakingV2.json +20 -7
- package/artifacts/contracts/staking/compound/CompoundStakingFactory.sol/CompoundStakingFactory.dbg.json +1 -1
- package/artifacts/contracts/staking/compound/CompoundStakingFactory.sol/CompoundStakingFactory.json +4 -4
- package/artifacts/contracts/staking/compound/GoodCompoundStaking.sol/GoodCompoundStaking.dbg.json +1 -1
- package/artifacts/contracts/staking/compound/GoodCompoundStaking.sol/GoodCompoundStaking.json +22 -9
- package/artifacts/contracts/staking/compound/GoodCompoundStakingV2.sol/GoodCompoundStakingV2.dbg.json +1 -1
- package/artifacts/contracts/staking/compound/GoodCompoundStakingV2.sol/GoodCompoundStakingV2.json +22 -9
- package/artifacts/contracts/staking/utils/Math64X64.sol/Math64x64.dbg.json +1 -1
- package/artifacts/contracts/staking/utils/Math64X64.sol/Math64x64.json +2 -2
- package/artifacts/contracts/staking/utils/StakingRewardsFixedAPY.sol/StakingRewardsFixedAPY.dbg.json +1 -1
- package/artifacts/contracts/token/ERC20PresetMinterPauserUpgradeable.sol/ERC20PresetMinterPauserUpgradeable.dbg.json +4 -0
- package/artifacts/contracts/token/ERC20PresetMinterPauserUpgradeable.sol/ERC20PresetMinterPauserUpgradeable.json +768 -0
- package/artifacts/contracts/token/ERC677.sol/ERC677.dbg.json +4 -0
- package/artifacts/contracts/token/ERC677.sol/ERC677.json +66 -0
- package/artifacts/contracts/token/ERC677.sol/ERC677Receiver.dbg.json +4 -0
- package/artifacts/contracts/token/ERC677.sol/ERC677Receiver.json +40 -0
- package/artifacts/contracts/token/FeesFormula.sol/IFeesFormula.dbg.json +4 -0
- package/artifacts/contracts/token/FeesFormula.sol/IFeesFormula.json +45 -0
- package/artifacts/contracts/token/GoodDollar.sol/GoodDollar.dbg.json +4 -0
- package/artifacts/contracts/token/GoodDollar.sol/GoodDollar.json +1206 -0
- package/artifacts/contracts/token/superfluid/ERC20Permit.sol/ERC20Permit.dbg.json +4 -0
- package/artifacts/contracts/token/superfluid/ERC20Permit.sol/ERC20Permit.json +99 -0
- package/artifacts/contracts/token/superfluid/ERC20Permit.sol/SelfApprove.dbg.json +4 -0
- package/artifacts/contracts/token/superfluid/ERC20Permit.sol/SelfApprove.json +34 -0
- package/artifacts/contracts/token/superfluid/ISuperGoodDollar.sol/IGoodDollarCustom.dbg.json +4 -0
- package/artifacts/contracts/token/superfluid/ISuperGoodDollar.sol/IGoodDollarCustom.json +355 -0
- package/artifacts/contracts/token/superfluid/ISuperGoodDollar.sol/ISuperGoodDollar.dbg.json +4 -0
- package/artifacts/contracts/token/superfluid/ISuperGoodDollar.sol/ISuperGoodDollar.json +2132 -0
- package/artifacts/contracts/token/superfluid/SuperGoodDollar.sol/SuperGoodDollar.dbg.json +4 -0
- package/artifacts/contracts/token/superfluid/SuperGoodDollar.sol/SuperGoodDollar.json +2627 -0
- package/artifacts/contracts/token/superfluid/SuperToken.sol/SuperToken.dbg.json +4 -0
- package/artifacts/contracts/token/superfluid/SuperToken.sol/SuperToken.json +1759 -0
- package/artifacts/contracts/token/superfluid/SuperfluidToken.sol/SuperfluidToken.dbg.json +4 -0
- package/artifacts/contracts/token/superfluid/SuperfluidToken.sol/SuperfluidToken.json +682 -0
- package/artifacts/contracts/token/superfluid/UUPSProxiable.sol/UUPSProxiable.dbg.json +4 -0
- package/artifacts/contracts/token/superfluid/UUPSProxiable.sol/UUPSProxiable.json +89 -0
- package/artifacts/contracts/token/superfluid/UUPSProxy.sol/Proxy.dbg.json +4 -0
- package/artifacts/contracts/token/superfluid/UUPSProxy.sol/Proxy.json +19 -0
- package/artifacts/contracts/token/superfluid/UUPSProxy.sol/UUPSProxy.dbg.json +4 -0
- package/artifacts/contracts/token/superfluid/UUPSProxy.sol/UUPSProxy.json +32 -0
- package/artifacts/contracts/token/superfluid/UUPSProxy.sol/UUPSUtils.dbg.json +4 -0
- package/artifacts/contracts/token/superfluid/UUPSProxy.sol/UUPSUtils.json +10 -0
- package/artifacts/contracts/ubi/UBIScheme.sol/UBIScheme.dbg.json +1 -1
- package/artifacts/contracts/ubi/UBIScheme.sol/UBIScheme.json +41 -22
- package/artifacts/contracts/utils/AdminWallet.sol/AdminWallet.dbg.json +1 -1
- package/artifacts/contracts/utils/AdminWallet.sol/AdminWallet.json +94 -48
- package/artifacts/contracts/utils/AdminWalletFuse.sol/AdminWalletFuse.dbg.json +4 -0
- package/artifacts/contracts/utils/AdminWalletFuse.sol/AdminWalletFuse.json +830 -0
- package/artifacts/contracts/utils/BancorFormula.sol/BancorFormula.dbg.json +1 -1
- package/artifacts/contracts/utils/BancorFormula.sol/BancorFormula.json +2 -2
- 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/BuyAndBridgeHelper.sol/BuyAndBridgeHelper.dbg.json +4 -0
- package/artifacts/contracts/utils/BuyAndBridgeHelper.sol/BuyAndBridgeHelper.json +184 -0
- 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 +28 -2
- package/artifacts/contracts/utils/DSMath.sol/DSMath.dbg.json +1 -1
- package/artifacts/contracts/utils/DSMath.sol/DSMath.json +2 -2
- package/artifacts/contracts/utils/DataTypes.sol/DataTypes.dbg.json +1 -1
- package/artifacts/contracts/utils/DataTypes.sol/DataTypes.json +2 -2
- package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/GoodDollarMintBurnWrapper.dbg.json +1 -1
- package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/GoodDollarMintBurnWrapper.json +35 -2
- package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/IRouter.dbg.json +1 -1
- package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/PausableControl.dbg.json +1 -1
- package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/TokenOperation.dbg.json +1 -1
- package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/TokenOperation.json +2 -2
- package/artifacts/contracts/utils/MultiCall.sol/Multicall.dbg.json +1 -1
- package/artifacts/contracts/utils/MultiCall.sol/Multicall.json +2 -2
- package/artifacts/contracts/utils/MultichainBridgeHelper.sol/MultichainBridgeHelper.dbg.json +1 -1
- package/artifacts/contracts/utils/MultichainBridgeHelper.sol/MultichainBridgeHelper.json +2 -2
- package/artifacts/contracts/utils/NameService.sol/NameService.dbg.json +1 -1
- package/artifacts/contracts/utils/NameService.sol/NameService.json +28 -2
- package/artifacts/contracts/utils/ProtocolUpgrade.sol/OldMarketMaker.dbg.json +1 -1
- package/artifacts/contracts/utils/ProtocolUpgrade.sol/ProtocolUpgrade.dbg.json +1 -1
- package/artifacts/contracts/utils/ProtocolUpgrade.sol/ProtocolUpgrade.json +2 -2
- package/artifacts/contracts/utils/ProtocolUpgradeFuse.sol/ProtocolUpgradeFuse.dbg.json +1 -1
- package/artifacts/contracts/utils/ProtocolUpgradeFuse.sol/ProtocolUpgradeFuse.json +2 -2
- package/artifacts/contracts/utils/ProtocolUpgradeFuseRecover.sol/ProtocolUpgradeFuseRecover.dbg.json +1 -1
- package/artifacts/contracts/utils/ProtocolUpgradeFuseRecover.sol/ProtocolUpgradeFuseRecover.json +2 -2
- package/artifacts/contracts/utils/ProtocolUpgradeRecover.sol/ProtocolUpgradeRecover.dbg.json +1 -1
- package/artifacts/contracts/utils/ProtocolUpgradeRecover.sol/ProtocolUpgradeRecover.json +2 -2
- package/artifacts/contracts/utils/ProxyFactory1967.sol/ERC1967Proxy.dbg.json +1 -1
- package/artifacts/contracts/utils/ProxyFactory1967.sol/ERC1967Proxy.json +2 -2
- package/artifacts/contracts/utils/ProxyFactory1967.sol/ProxyFactory1967.dbg.json +1 -1
- package/artifacts/contracts/utils/ProxyFactory1967.sol/ProxyFactory1967.json +2 -2
- 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 +57 -3
- package/contracts/fuseFaucet/Faucet.sol +258 -0
- package/contracts/fuseFaucet/FuseFaucet.sol +1 -2
- package/contracts/fuseFaucet/FuseFaucetV2.sol +256 -0
- package/contracts/governance/GReputation.sol +104 -16
- package/contracts/governance/GoodDollarStaking.sol +139 -53
- package/contracts/governance/GovernanceStaking.sol +2 -2
- package/contracts/identity/IdentityV2.sol +559 -0
- package/contracts/invite/InvitesFuseV2.sol +337 -0
- package/contracts/invite/InvitesV1.sol +6 -24
- package/contracts/invite/InvitesV2.sol +345 -0
- package/contracts/mocks/AaveMock.sol +1 -1
- package/contracts/mocks/DAIMock.sol +1 -1
- package/contracts/mocks/DecimalsMock.sol +1 -1
- package/contracts/mocks/FeesFormularMock.sol +21 -0
- package/contracts/mocks/GoodDollarStakingMock.sol +16 -0
- package/contracts/mocks/GoodFundManagerTest.sol +1 -1
- package/contracts/mocks/IdentityMock.sol +58 -0
- package/contracts/mocks/LendingPoolMock.sol +1 -1
- package/contracts/mocks/PayableMock.sol +3 -0
- package/contracts/mocks/SixteenDecimalsTokenMock.sol +1 -6
- package/contracts/mocks/TwentyDecimalsTokenMock.sol +1 -6
- package/contracts/mocks/UpgradableMocks.sol +5 -3
- package/contracts/mocks/UsdcMock.sol +1 -6
- package/contracts/mocks/cBATMock.sol +7 -12
- package/contracts/mocks/cDAILowWorthMock.sol +8 -12
- package/contracts/mocks/cDAIMock.sol +1 -1
- package/contracts/mocks/cDAINonMintableMock.sol +7 -12
- package/contracts/mocks/cDecimalsMock.sol +1 -1
- package/contracts/mocks/cSDTMock.sol +3 -3
- package/contracts/mocks/cUSDCMock.sol +5 -5
- package/contracts/reserve/DistributionHelper.sol +1 -1
- package/contracts/reserve/GoodReserveCDai.sol +1 -1
- package/contracts/token/ERC20PresetMinterPauserUpgradeable.sol +140 -0
- package/contracts/token/ERC677.sol +74 -0
- package/contracts/token/FeesFormula.sol +10 -0
- package/contracts/token/GoodDollar.sol +243 -0
- package/contracts/token/superfluid/ERC20Permit.sol +101 -0
- package/contracts/token/superfluid/ISuperGoodDollar.sol +84 -0
- package/contracts/token/superfluid/SuperGoodDollar.sol +401 -0
- package/contracts/token/superfluid/SuperToken.sol +714 -0
- package/contracts/token/superfluid/SuperfluidToken.sol +403 -0
- package/contracts/token/superfluid/UUPSProxiable.sol +55 -0
- package/contracts/token/superfluid/UUPSProxy.sol +153 -0
- package/contracts/ubi/UBIScheme.sol +88 -68
- package/contracts/utils/AdminWallet.sol +42 -11
- package/contracts/utils/AdminWalletFuse.sol +271 -0
- package/contracts/utils/BuyAndBridgeHelper.sol +108 -0
- package/contracts/utils/GoodDollarMintBurnWrapper.sol +19 -1
- package/contracts/utils/ProxyFactory1967.sol +1 -1
- package/hardhat.config.ts +29 -6
- package/package.json +11 -7
- package/releases/deploy-settings.json +58 -4
- package/releases/deployment.json +65 -231
- package/scripts/deployFullDAO.ts +39 -19
- package/scripts/gdx/gdxAirdropCalculation.ts +10 -11
- package/scripts/governance/airdropCalculationRecover.ts +43 -33
- package/scripts/governance/airdropCalculationSorted.ts +438 -0
- package/scripts/governance/goodCheckpointSorted.ts +377 -0
- package/scripts/multichain-deploy/0_proxyFactory-deploy.ts +100 -0
- package/scripts/multichain-deploy/{basicdao-deploy.ts → 1_basicdao-deploy.ts} +123 -93
- package/scripts/multichain-deploy/2_helpers-deploy.ts +151 -0
- package/scripts/multichain-deploy/{gdSavings-deploy.ts → 3_gdSavings-deploy.ts} +106 -76
- package/scripts/multichain-deploy/4_ubi-deploy.ts +147 -0
- package/scripts/multichain-deploy/5_gov-deploy.ts +147 -0
- package/scripts/multichain-deploy/fulldeploy.sh +26 -0
- package/scripts/multichain-deploy/helpers.ts +149 -111
- package/scripts/multichain-deploy/verifyEtherscan.ts +197 -0
- package/scripts/test/localOldDaoDeploy.ts +10 -3
- package/scripts/upgradeToV3/v3-fix.ts +120 -0
- package/scripts/upgradeToV3/v3-upgrade.ts +219 -0
- package/scripts/upgrades/celo-defi-ubi-deploy.ts +165 -0
- package/scripts/upgrades/identity-upgrade.ts +109 -0
- package/scripts/upgrades/transferDaoToGuardians.ts +80 -0
- package/test/faucet/Faucet.test.ts +157 -0
- package/test/{FuseFaucet.test.ts → faucet/FuseFaucet.test.ts} +26 -31
- package/test/governance/ClaimersDistribution.test.ts +58 -6
- package/test/governance/CompoundVotingMachine.castvote.test.ts +3 -3
- package/test/governance/CompoundVotingMachine.crossblockchain.ts +3 -2
- package/test/governance/CompoundVotingMachine.daoscheme.ts +8 -10
- package/test/governance/CompoundVotingMachine.delegate.test.ts +4 -5
- package/test/governance/CompoundVotingMachine.guardian.test.ts +5 -11
- package/test/governance/CompoundVotingMachine.propose.test.ts +3 -2
- package/test/governance/CompoundVotingMachine.state.test.ts +3 -2
- package/test/governance/GReputation.test.ts +78 -32
- package/test/governance/GReputation.v2merkle.test.ts +186 -0
- package/test/governance/GoodDollarStaking.gd.test.ts +83 -1
- package/test/governance/GoodDollarStaking.good.test.ts +2 -1
- package/test/governance/GovernanceStaking.test.ts +4 -4
- package/test/governance/Reputation.test.ts +2 -1
- package/test/governance/StakersDistribution.test.ts +26 -13
- package/test/helpers.ts +145 -52
- package/test/identity/IdentityV2.test.ts +539 -0
- package/test/{InvitesV1.test.ts → invite/InvitesV1.test.ts} +10 -5
- package/test/invite/InvitesV2.test.ts +328 -0
- package/test/reserve/DistributionHelper.test.ts +2 -1
- package/test/reserve/GoodMarketMaker.test.ts +20 -19
- package/test/reserve/GoodReserveCDai.cap.test.ts +8 -1
- package/test/reserve/GoodReserveCDai.distribution.test.ts +2 -1
- package/test/reserve/GoodReserveCDai.gdx.test.ts +2 -2
- package/test/reserve/GoodReserveCDai.pause.test.ts +2 -1
- package/test/reserve/GoodReserveCDai.test.ts +14 -38
- package/test/reserve/GoodReserveCDai.uniswap.test.ts +21 -19
- package/test/staking/CompoundStakingFactory.test.ts +8 -5
- package/test/staking/DifferentStakingTokens.test.ts +3 -2
- package/test/staking/DonationsStaking.test.ts +33 -24
- package/test/staking/FuseStaking.test.ts +9 -9
- package/test/staking/GoodAaveStakingFactory.test.ts +36 -31
- package/test/staking/SimpleDAIStaking.test.ts +13 -19
- package/test/staking/StakingRewards.test.ts +19 -16
- package/test/staking/StakingRewardsFixedAPY.test.ts +2 -1
- package/test/staking/SwapHelper.test.ts +20 -17
- package/test/staking/UsdcAaveStaking.test.ts +36 -33
- package/test/token/GoodDollar.test.ts +445 -0
- package/test/token/SuperGoodDollar.test.ts +422 -0
- package/test/ubi/UBIScheme.e2e.test.ts +6 -5
- package/test/ubi/UBIScheme.test.ts +37 -36
- package/test/ubi/UBISchemeCycle.test.ts +11 -8
- package/test/utils/AdminWallet.test.ts +34 -11
- package/test/utils/BuyAndBridgeHelper.test.ts +249 -0
- package/test/utils/DAOUpgradeableContract.test.ts +3 -2
- package/test/utils/GoodDollarMintBurnWrapper.test.ts +3 -2
- package/test/utils/NameService.test.ts +37 -21
- package/test/utils/ProtocolUpgrade.test.ts +1 -1
- package/test/utils/ProxyFactory.test.ts +12 -10
- package/truffle-config.js +18 -18
- package/types/AaveMock.ts +24 -15
- package/types/AccessControlEnumerableUpgradeable.ts +9 -0
- package/types/AccessControlUpgradeable.ts +9 -0
- package/types/AdminWallet.ts +149 -110
- package/types/AdminWalletFuse.ts +1268 -0
- package/types/BuyAndBridgeHelper.ts +279 -0
- package/types/CBATMock.ts +24 -15
- package/types/CDAILowWorthMock.ts +24 -15
- package/types/CDAIMock.ts +24 -15
- package/types/CDAINonMintableMock.ts +24 -15
- package/types/CDecimalsMock.ts +24 -15
- package/types/CSDTMock.ts +24 -15
- package/types/CUSDCMock.ts +24 -15
- package/types/ClaimersDistribution.ts +28 -0
- package/types/CompoundVotingMachine.ts +28 -0
- package/types/ContextUpgradeable.ts +77 -0
- package/types/DAIMock.ts +24 -15
- package/types/DAOUpgradeableContract.ts +28 -0
- package/types/DecimalsMock.ts +24 -15
- package/types/DistributionHelper.ts +28 -0
- package/types/DistributionHelperTest.ts +28 -0
- package/types/DistributionHelperTestHelper.ts +28 -0
- package/types/DonationsStaking.ts +28 -0
- package/types/EIP712Upgradeable.ts +77 -0
- package/types/ERC165Upgradeable.ts +13 -2
- package/types/ERC1967UpgradeUpgradeable.ts +9 -0
- package/types/ERC20BurnableUpgradeable.ts +24 -15
- package/types/ERC20PausableUpgradeable.ts +24 -15
- package/types/ERC20Permit.ts +186 -0
- package/types/ERC20PermitUpgradeable.ts +531 -0
- package/types/ERC20PresetMinterPauserUpgradeable.ts +129 -16
- package/types/ERC20Upgradeable.ts +24 -15
- package/types/ERC20WithTokenInfo.ts +339 -0
- package/types/ERC677.ts +131 -0
- package/types/ERC677Receiver.ts +115 -0
- package/types/EventsEmitter.ts +88 -0
- package/types/ExchangeHelper.ts +28 -0
- package/types/Faucet.ts +1107 -0
- package/types/FeesFormulaMock.ts +130 -0
- package/types/FuseFaucet.ts +9 -0
- package/types/FuseFaucetV2.ts +729 -0
- package/types/FuseStakingV3.ts +9 -0
- package/types/GReputation.ts +103 -4
- package/types/GoodAaveStaking.ts +24 -15
- package/types/GoodAaveStakingV2.ts +24 -15
- package/types/GoodCompoundStaking.ts +24 -15
- package/types/GoodCompoundStakingTest.ts +24 -15
- package/types/GoodCompoundStakingV2.ts +24 -15
- package/types/GoodDollar.ts +1733 -0
- package/types/GoodDollarMintBurnWrapper.ts +55 -0
- package/types/GoodDollarStaking.ts +92 -0
- package/types/GoodDollarStakingMock.ts +131 -0
- package/types/GoodFundManager.ts +28 -0
- package/types/GoodFundManagerTest.ts +28 -0
- package/types/GoodMarketMaker.ts +28 -0
- package/types/GoodReserveCDai.ts +43 -15
- package/types/GovernanceStaking.ts +43 -15
- package/types/IERC1271Upgradeable.ts +109 -0
- package/types/IERC1820Registry.ts +398 -0
- package/types/IERC1822ProxiableUpgradeable.ts +90 -0
- package/types/IERC20MetadataUpgradeable.ts +15 -15
- package/types/IERC20Permit.ts +175 -0
- package/types/IERC20PermitUpgradeable.ts +176 -0
- package/types/IERC20Upgradeable.ts +15 -15
- package/types/IERC777.ts +586 -0
- package/types/IERC777Recipient.ts +130 -0
- package/types/IERC777Sender.ts +130 -0
- package/types/IFeesFormula.ts +111 -0
- package/types/IGoodDollar.ts +304 -7
- package/types/IGoodDollarCustom.ts +618 -0
- package/types/IGovernanceStaking.ts +98 -0
- package/types/IIdentity.ts +106 -0
- package/types/IIdentityV2.ts +557 -0
- package/types/IStakingUpgrade.ts +110 -0
- package/types/ISuperAgreement.ts +151 -0
- package/types/ISuperApp.ts +410 -0
- package/types/ISuperGoodDollar.ts +3029 -0
- package/types/ISuperToken.ts +2326 -0
- package/types/ISuperTokenFactory.ts +415 -0
- package/types/ISuperfluid.ts +1565 -0
- package/types/ISuperfluidGovernance.ts +455 -0
- package/types/ISuperfluidToken.ts +951 -0
- package/types/IdentityMock.ts +493 -0
- package/types/IdentityV2.ts +1743 -0
- package/types/Initializable.ts +77 -0
- package/types/InvitesFuseV2.ts +806 -0
- package/types/InvitesV1.ts +9 -0
- package/types/InvitesV2.ts +1010 -0
- package/types/LendingPoolMock.ts +24 -15
- package/types/NameService.ts +28 -0
- package/types/OwnableUpgradeable.ts +9 -0
- package/types/PausableUpgradeable.ts +9 -0
- package/types/PayableMock.ts +92 -0
- package/types/ReentrancyGuardUpgradeable.ts +78 -0
- package/types/Reputation.ts +28 -0
- package/types/SelfApprove.ts +115 -0
- package/types/SimpleStaking.ts +24 -15
- package/types/SimpleStakingV2.ts +24 -15
- package/types/SixteenDecimalsTokenMock.ts +24 -15
- package/types/StakersDistribution.ts +28 -0
- package/types/SuperGoodDollar.ts +3662 -0
- package/types/SuperToken.ts +2434 -0
- package/types/SuperfluidToken.ts +951 -0
- package/types/TokenInfo.ts +109 -0
- package/types/TwentyDecimalsTokenMock.ts +24 -15
- package/types/UBIScheme.ts +47 -40
- package/types/USDCMock.ts +24 -15
- package/types/UUPSProxiable.ts +183 -0
- package/types/UUPSProxy.ts +105 -0
- package/types/UUPSUpgradeable.ts +28 -0
- package/types/UpgradableMock.ts +28 -0
- package/types/UpgradableMock2.ts +28 -0
- package/types/UpgradableMock3.ts +28 -0
- package/types/UpgradableMock4.ts +28 -0
- package/types/factories/AaveMock__factory.ts +17 -4
- package/types/factories/AaveStakingFactory__factory.ts +1 -1
- package/types/factories/AaveUSDMockOracle__factory.ts +1 -1
- package/types/factories/AccessControlEnumerableUpgradeable__factory.ts +13 -0
- package/types/factories/AccessControlUpgradeable__factory.ts +13 -0
- package/types/factories/AdminWalletFuse__factory.ts +881 -0
- package/types/factories/AdminWallet__factory.ts +93 -47
- package/types/factories/BancorFormula__factory.ts +1 -1
- package/types/factories/BaseShareFieldV2__factory.ts +1 -1
- package/types/factories/BaseShareField__factory.ts +1 -1
- package/types/factories/BatUSDMockOracle__factory.ts +1 -1
- package/types/factories/BuyAndBridgeHelper__factory.ts +237 -0
- package/types/factories/CBATMock__factory.ts +17 -4
- package/types/factories/CDAILowWorthMock__factory.ts +17 -4
- package/types/factories/CDAIMock__factory.ts +17 -4
- package/types/factories/CDAINonMintableMock__factory.ts +17 -4
- package/types/factories/CDecimalsMock__factory.ts +17 -4
- package/types/factories/CSDTMock__factory.ts +17 -4
- package/types/factories/CUSDCMock__factory.ts +17 -4
- package/types/factories/ClaimersDistribution__factory.ts +27 -1
- package/types/factories/CompUSDMockOracle__factory.ts +1 -1
- package/types/factories/CompoundStakingFactory__factory.ts +1 -1
- package/types/factories/CompoundVotingMachine__factory.ts +27 -1
- package/types/factories/ContextUpgradeable__factory.ts +39 -0
- package/types/factories/DAIMock__factory.ts +17 -4
- package/types/factories/DAOContract__factory.ts +1 -1
- package/types/factories/DAOUpgradeableContract__factory.ts +27 -1
- package/types/factories/DaiEthPriceMockOracle__factory.ts +1 -1
- package/types/factories/DecimalsMock__factory.ts +17 -4
- package/types/factories/DistributionBridgeMock__factory.ts +1 -1
- package/types/factories/DistributionHelperTestHelper__factory.ts +27 -1
- package/types/factories/DistributionHelperTest__factory.ts +27 -1
- package/types/factories/DistributionHelper__factory.ts +27 -1
- package/types/factories/DonationsStaking__factory.ts +27 -1
- package/types/factories/EIP712Upgradeable__factory.ts +39 -0
- package/types/factories/ERC165Upgradeable__factory.ts +13 -0
- package/types/factories/ERC1967Proxy__factory.ts +1 -1
- package/types/factories/ERC1967UpgradeUpgradeable__factory.ts +13 -0
- package/types/factories/ERC20BurnableUpgradeable__factory.ts +16 -3
- package/types/factories/ERC20PausableUpgradeable__factory.ts +16 -3
- package/types/factories/ERC20PermitUpgradeable__factory.ts +388 -0
- package/types/factories/ERC20Permit__factory.ts +111 -0
- package/types/factories/ERC20PresetMinterPauserUpgradeable__factory.ts +99 -5
- package/types/factories/ERC20Upgradeable__factory.ts +17 -4
- package/types/factories/ERC20WithTokenInfo__factory.ts +248 -0
- package/types/factories/ERC677Receiver__factory.ts +55 -0
- package/types/factories/ERC677__factory.ts +75 -0
- package/types/factories/EthUSDMockOracle__factory.ts +1 -1
- package/types/factories/EventsEmitter__factory.ts +84 -0
- package/types/factories/ExchangeHelper__factory.ts +27 -1
- package/types/factories/Faucet__factory.ts +781 -0
- package/types/factories/FeesFormulaMock__factory.ts +132 -0
- package/types/factories/FuseFaucetV2__factory.ts +528 -0
- package/types/factories/FuseFaucet__factory.ts +14 -1
- package/types/factories/FuseStakingV3__factory.ts +14 -1
- package/types/factories/GReputation__factory.ts +77 -2
- package/types/factories/GasPriceMockOracle__factory.ts +1 -1
- package/types/factories/GoodAaveStakingV2__factory.ts +17 -4
- package/types/factories/GoodAaveStaking__factory.ts +17 -4
- package/types/factories/GoodCompoundStakingTest__factory.ts +17 -4
- package/types/factories/GoodCompoundStakingV2__factory.ts +17 -4
- package/types/factories/GoodCompoundStaking__factory.ts +17 -4
- package/types/factories/GoodDollarMintBurnWrapper__factory.ts +34 -1
- package/types/factories/GoodDollarStakingMock__factory.ts +94 -1
- package/types/factories/GoodDollarStaking__factory.ts +70 -1
- package/types/factories/GoodDollar__factory.ts +1254 -0
- package/types/factories/GoodFundManagerTest__factory.ts +27 -1
- package/types/factories/GoodFundManager__factory.ts +27 -1
- package/types/factories/GoodMarketMaker__factory.ts +27 -1
- package/types/factories/GoodReserveCDai__factory.ts +30 -4
- package/types/factories/GovernanceStaking__factory.ts +30 -4
- package/types/factories/IERC1271Upgradeable__factory.ts +50 -0
- package/types/factories/IERC1820Registry__factory.ts +239 -0
- package/types/factories/IERC1822ProxiableUpgradeable__factory.ts +43 -0
- package/types/factories/IERC20MetadataUpgradeable__factory.ts +3 -3
- package/types/factories/IERC20PermitUpgradeable__factory.ts +105 -0
- package/types/factories/IERC20Permit__factory.ts +98 -0
- package/types/factories/IERC20Upgradeable__factory.ts +3 -3
- package/types/factories/IERC777Recipient__factory.ts +64 -0
- package/types/factories/IERC777Sender__factory.ts +61 -0
- package/types/factories/IERC777__factory.ts +414 -0
- package/types/factories/IFeesFormula__factory.ts +57 -0
- package/types/factories/IGoodDollarCustom__factory.ts +370 -0
- package/types/factories/IGoodDollar__factory.ts +184 -0
- package/types/factories/IGovernanceStaking__factory.ts +39 -0
- package/types/factories/IIdentityV2__factory.ts +312 -0
- package/types/factories/IIdentity__factory.ts +70 -0
- package/types/factories/IStakingUpgrade__factory.ts +50 -0
- package/types/factories/ISuperAgreement__factory.ts +78 -0
- package/types/factories/ISuperApp__factory.ts +272 -0
- package/types/factories/ISuperGoodDollar__factory.ts +2147 -0
- package/types/factories/ISuperTokenFactory__factory.ts +271 -0
- package/types/factories/ISuperToken__factory.ts +1682 -0
- package/types/factories/ISuperfluidGovernance__factory.ts +264 -0
- package/types/factories/ISuperfluidToken__factory.ts +697 -0
- package/types/factories/ISuperfluid__factory.ts +1143 -0
- package/types/factories/IdentityMock__factory.ts +327 -0
- package/types/factories/IdentityV2__factory.ts +1129 -0
- package/types/factories/IncentiveControllerMock__factory.ts +1 -1
- package/types/factories/Initializable__factory.ts +36 -0
- package/types/factories/InvitesFuseV2__factory.ts +553 -0
- package/types/factories/InvitesV1__factory.ts +14 -1
- package/types/factories/InvitesV2__factory.ts +683 -0
- package/types/factories/LendingPoolMock__factory.ts +17 -4
- package/types/factories/Multicall__factory.ts +1 -1
- package/types/factories/MultichainBridgeHelper__factory.ts +1 -1
- package/types/factories/MultichainRouterMock__factory.ts +1 -1
- package/types/factories/NameService__factory.ts +27 -1
- package/types/factories/OverMintTesterRegularStake__factory.ts +1 -1
- package/types/factories/OverMintTester__factory.ts +1 -1
- package/types/factories/OwnableUpgradeable__factory.ts +13 -0
- package/types/factories/PausableUpgradeable__factory.ts +13 -0
- package/types/factories/PayableMock__factory.ts +66 -0
- package/types/factories/ProtocolUpgradeFuseRecover__factory.ts +1 -1
- package/types/factories/ProtocolUpgradeFuse__factory.ts +1 -1
- package/types/factories/ProtocolUpgradeRecover__factory.ts +1 -1
- package/types/factories/ProtocolUpgrade__factory.ts +1 -1
- package/types/factories/ProxyFactory1967__factory.ts +1 -1
- package/types/factories/ReentrancyGuardUpgradeable__factory.ts +43 -0
- package/types/factories/ReputationTestHelper__factory.ts +1 -1
- package/types/factories/Reputation__factory.ts +27 -1
- package/types/factories/SelfApprove__factory.ts +46 -0
- package/types/factories/SimpleStakingV2__factory.ts +16 -3
- package/types/factories/SimpleStaking__factory.ts +16 -3
- package/types/factories/SixteenDecimalsTokenMock__factory.ts +17 -4
- package/types/factories/StakersDistribution__factory.ts +27 -1
- package/types/factories/StakingMockFixedAPY__factory.ts +1 -1
- package/types/factories/SuperGoodDollar__factory.ts +2680 -0
- package/types/factories/SuperToken__factory.ts +1809 -0
- package/types/factories/SuperfluidToken__factory.ts +697 -0
- package/types/factories/SwapHelperTest__factory.ts +1 -1
- package/types/factories/TokenInfo__factory.ts +62 -0
- package/types/factories/TwentyDecimalsTokenMock__factory.ts +17 -4
- package/types/factories/UBIScheme__factory.ts +40 -21
- package/types/factories/USDCMock__factory.ts +17 -4
- package/types/factories/UUPSProxiable__factory.ts +101 -0
- package/types/factories/UUPSProxy__factory.ts +80 -0
- package/types/factories/UUPSUpgradeable__factory.ts +26 -0
- package/types/factories/UniswapV2SwapHelper__factory.ts +1 -1
- package/types/factories/UpgradableMock2__factory.ts +27 -1
- package/types/factories/UpgradableMock3__factory.ts +27 -1
- package/types/factories/UpgradableMock4__factory.ts +27 -1
- package/types/factories/UpgradableMock__factory.ts +27 -1
- package/types/hardhat.d.ts +459 -0
- package/types/index.ts +98 -0
- package/yarn.lock +1251 -306
- package/scripts/multichain-deploy/nonubiDistribution-deploy.ts +0 -170
|
@@ -11,6 +11,8 @@ import "../Interfaces.sol";
|
|
|
11
11
|
* to return the current reputation token.
|
|
12
12
|
* The DAO avatar will be the owner of this reputation token and not the Controller.
|
|
13
13
|
* Minting by the DAO will be done using controller.genericCall and not via controller.mintReputation
|
|
14
|
+
*
|
|
15
|
+
* V2 fixes merkle tree bug
|
|
14
16
|
*/
|
|
15
17
|
contract GReputation is Reputation {
|
|
16
18
|
bytes32 public constant ROOT_STATE = keccak256("rootState");
|
|
@@ -99,25 +101,36 @@ contract GReputation is Reputation {
|
|
|
99
101
|
|
|
100
102
|
function _canMint() internal view override {
|
|
101
103
|
require(
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
104
|
+
hasRole(MINTER_ROLE, _msgSender()) ||
|
|
105
|
+
(address(nameService) != address(0) &&
|
|
106
|
+
(_msgSender() == nameService.getAddress("GDAO_CLAIMERS") ||
|
|
107
|
+
_msgSender() == nameService.getAddress("GDAO_STAKING") ||
|
|
108
|
+
_msgSender() == nameService.getAddress("GDAO_STAKERS"))),
|
|
106
109
|
"GReputation: need minter role or be GDAO contract"
|
|
107
110
|
);
|
|
108
111
|
}
|
|
109
112
|
|
|
110
|
-
/// @notice internal function that overrides Reputation.sol with consideration to delegation
|
|
111
|
-
/// @param _user the address to mint for
|
|
112
|
-
/// @param _amount the amount of rep to mint
|
|
113
|
-
/// @return the actual amount minted
|
|
114
113
|
function _mint(address _user, uint256 _amount)
|
|
115
114
|
internal
|
|
116
115
|
override
|
|
117
116
|
returns (uint256)
|
|
118
117
|
{
|
|
118
|
+
return _mint(_user, _amount, false);
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
/// @notice internal function that overrides Reputation.sol with consideration to delegation
|
|
122
|
+
/// @param _user the address to mint for
|
|
123
|
+
/// @param _amount the amount of rep to mint
|
|
124
|
+
/// @return the actual amount minted
|
|
125
|
+
function _mint(
|
|
126
|
+
address _user,
|
|
127
|
+
uint256 _amount,
|
|
128
|
+
bool ignoreRepTarget
|
|
129
|
+
) internal returns (uint256) {
|
|
119
130
|
address repTarget = reputationRecipients[_user];
|
|
120
|
-
repTarget = repTarget != address(0)
|
|
131
|
+
repTarget = ignoreRepTarget == false && repTarget != address(0)
|
|
132
|
+
? repTarget
|
|
133
|
+
: _user;
|
|
121
134
|
|
|
122
135
|
super._mint(repTarget, _amount);
|
|
123
136
|
|
|
@@ -368,24 +381,75 @@ contract GReputation is Reputation {
|
|
|
368
381
|
}
|
|
369
382
|
|
|
370
383
|
/**
|
|
371
|
-
* @notice prove user balance in a specific blockchain state hash
|
|
384
|
+
* @notice prove user balance in a specific blockchain state hash, uses new sorted pairs trees and double hash for preimage attack mitigation
|
|
372
385
|
* @dev "rootState" is a special state that can be supplied once, and actually mints reputation on the current blockchain
|
|
373
386
|
* we use non sorted merkle tree, as sorting while preparing merkle tree is heavy
|
|
374
387
|
* @param _id the string id of the blockchain we supply proof for
|
|
375
388
|
* @param _user the user to prove his balance
|
|
376
389
|
* @param _balance the balance we are prooving
|
|
377
390
|
* @param _proof array of byte32 with proof data (currently merkle tree path)
|
|
378
|
-
* @param _nodeIndex index of node in the tree (for unsorted merkle tree proof)
|
|
379
|
-
|
|
380
391
|
* @return true if proof is valid
|
|
381
392
|
*/
|
|
382
393
|
function proveBalanceOfAtBlockchain(
|
|
394
|
+
string memory _id,
|
|
395
|
+
address _user,
|
|
396
|
+
uint256 _balance,
|
|
397
|
+
bytes32[] memory _proof
|
|
398
|
+
) public returns (bool) {
|
|
399
|
+
return
|
|
400
|
+
_proveBalanceOfAtBlockchain(
|
|
401
|
+
_id,
|
|
402
|
+
_user,
|
|
403
|
+
_balance,
|
|
404
|
+
_proof,
|
|
405
|
+
new bool[](0),
|
|
406
|
+
0,
|
|
407
|
+
false
|
|
408
|
+
);
|
|
409
|
+
}
|
|
410
|
+
|
|
411
|
+
/**
|
|
412
|
+
* DEPRECATED: future state hashes will be with sorted pairs and with double hash leaf values
|
|
413
|
+
* @notice prove user balance in a specific blockchain state hash
|
|
414
|
+
* @dev "rootState" is a special state that can be supplied once, and actually mints reputation on the current blockchain
|
|
415
|
+
* we use non sorted merkle tree, as sorting while preparing merkle tree is heavy
|
|
416
|
+
* @param _id the string id of the blockchain we supply proof for
|
|
417
|
+
* @param _user the user to prove his balance
|
|
418
|
+
* @param _balance the balance we are prooving
|
|
419
|
+
* @param _proof array of byte32 with proof data (currently merkle tree path)
|
|
420
|
+
* @param _isRightNode array of bool with indication if should be hashed on right or left
|
|
421
|
+
* @param _nodeIndex index of node in the tree (for unsorted merkle tree proof)
|
|
422
|
+
* @return true if proof is valid
|
|
423
|
+
*/
|
|
424
|
+
function proveBalanceOfAtBlockchainLegacy(
|
|
383
425
|
string memory _id,
|
|
384
426
|
address _user,
|
|
385
427
|
uint256 _balance,
|
|
386
428
|
bytes32[] memory _proof,
|
|
429
|
+
bool[] memory _isRightNode,
|
|
387
430
|
uint256 _nodeIndex
|
|
388
431
|
) public returns (bool) {
|
|
432
|
+
return
|
|
433
|
+
_proveBalanceOfAtBlockchain(
|
|
434
|
+
_id,
|
|
435
|
+
_user,
|
|
436
|
+
_balance,
|
|
437
|
+
_proof,
|
|
438
|
+
_isRightNode,
|
|
439
|
+
_nodeIndex,
|
|
440
|
+
true
|
|
441
|
+
);
|
|
442
|
+
}
|
|
443
|
+
|
|
444
|
+
function _proveBalanceOfAtBlockchain(
|
|
445
|
+
string memory _id,
|
|
446
|
+
address _user,
|
|
447
|
+
uint256 _balance,
|
|
448
|
+
bytes32[] memory _proof,
|
|
449
|
+
bool[] memory _isRightNode,
|
|
450
|
+
uint256 _nodeIndex,
|
|
451
|
+
bool legacy
|
|
452
|
+
) internal returns (bool) {
|
|
389
453
|
bytes32 idHash = keccak256(bytes(_id));
|
|
390
454
|
require(
|
|
391
455
|
blockchainStates[idHash].length > 0,
|
|
@@ -402,11 +466,17 @@ contract GReputation is Reputation {
|
|
|
402
466
|
);
|
|
403
467
|
|
|
404
468
|
bytes32 leafHash = keccak256(abi.encode(_user, _balance));
|
|
469
|
+
//v2 double hash fix to prevent preimage attack
|
|
470
|
+
if (legacy == false) {
|
|
471
|
+
leafHash = keccak256(abi.encode(leafHash));
|
|
472
|
+
}
|
|
405
473
|
bool isProofValid = checkProofOrdered(
|
|
406
474
|
_proof,
|
|
475
|
+
_isRightNode,
|
|
407
476
|
stateHash,
|
|
408
477
|
leafHash,
|
|
409
|
-
_nodeIndex
|
|
478
|
+
_nodeIndex,
|
|
479
|
+
legacy == false
|
|
410
480
|
);
|
|
411
481
|
|
|
412
482
|
require(isProofValid, "invalid merkle proof");
|
|
@@ -414,7 +484,10 @@ contract GReputation is Reputation {
|
|
|
414
484
|
//if initiial state then set real balance
|
|
415
485
|
if (idHash == ROOT_STATE) {
|
|
416
486
|
uint256 curTotalSupply = totalSupplyLocalAt(block.number);
|
|
417
|
-
|
|
487
|
+
// on proof for ROOT_HASH we force to ignore the repTarget, so it is the same wallet address receiving the reputation (prevent double voting power on snapshot)
|
|
488
|
+
// also it should behave the same as blockchain sync proof which also doesnt use repTarget, but updates the same address as in the proof
|
|
489
|
+
_mint(_user, _balance, true);
|
|
490
|
+
|
|
418
491
|
updateValueAtNow(totalSupplyHistory, curTotalSupply); // we undo the totalsupply, as we alredy set the totalsupply of the airdrop
|
|
419
492
|
}
|
|
420
493
|
|
|
@@ -544,9 +617,11 @@ contract GReputation is Reputation {
|
|
|
544
617
|
*/
|
|
545
618
|
function checkProofOrdered(
|
|
546
619
|
bytes32[] memory _proof,
|
|
620
|
+
bool[] memory _isRightNode,
|
|
547
621
|
bytes32 _root,
|
|
548
622
|
bytes32 _hash,
|
|
549
|
-
uint256 _index
|
|
623
|
+
uint256 _index,
|
|
624
|
+
bool sorted
|
|
550
625
|
) public pure returns (bool) {
|
|
551
626
|
// use the index to determine the node ordering
|
|
552
627
|
// index ranges 1 to n
|
|
@@ -558,6 +633,16 @@ contract GReputation is Reputation {
|
|
|
558
633
|
for (uint256 j = 0; j < _proof.length; j++) {
|
|
559
634
|
proofElement = _proof[j];
|
|
560
635
|
|
|
636
|
+
// for new sorted format
|
|
637
|
+
if (sorted) {
|
|
638
|
+
computedHash = proofElement < computedHash
|
|
639
|
+
? keccak256(abi.encodePacked(proofElement, computedHash))
|
|
640
|
+
: keccak256(abi.encodePacked(computedHash, proofElement));
|
|
641
|
+
continue;
|
|
642
|
+
}
|
|
643
|
+
|
|
644
|
+
// start of legacy format for the first GOOD airdrop
|
|
645
|
+
|
|
561
646
|
// calculate remaining elements in proof
|
|
562
647
|
remaining = _proof.length - j;
|
|
563
648
|
|
|
@@ -568,7 +653,10 @@ contract GReputation is Reputation {
|
|
|
568
653
|
_index = _index / 2 + 1;
|
|
569
654
|
}
|
|
570
655
|
|
|
571
|
-
if (
|
|
656
|
+
if (
|
|
657
|
+
(_isRightNode.length > 0 && _isRightNode[j] == false) ||
|
|
658
|
+
(_isRightNode.length == 0 && _index % 2 == 0)
|
|
659
|
+
) {
|
|
572
660
|
computedHash = keccak256(abi.encodePacked(proofElement, computedHash));
|
|
573
661
|
_index = _index / 2;
|
|
574
662
|
} else {
|
|
@@ -13,10 +13,22 @@ import "../DAOStackInterfaces.sol";
|
|
|
13
13
|
import "./MultiBaseGovernanceShareField.sol";
|
|
14
14
|
import "../staking/utils/StakingRewardsFixedAPY.sol";
|
|
15
15
|
|
|
16
|
+
// import "hardhat/console.sol";
|
|
17
|
+
|
|
16
18
|
interface RewardsMinter {
|
|
17
19
|
function sendOrMint(address to, uint256 amount) external returns (uint256);
|
|
18
20
|
}
|
|
19
21
|
|
|
22
|
+
interface IGovernanceStaking {
|
|
23
|
+
function withdrawRewards() external returns (uint256);
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
interface IStakingUpgrade {
|
|
27
|
+
function upgradeFrom(address staker, uint256 amount)
|
|
28
|
+
external
|
|
29
|
+
returns (uint256 newShares);
|
|
30
|
+
}
|
|
31
|
+
|
|
20
32
|
/**
|
|
21
33
|
* @title Staking contract that allows citizens to stake G$ to get GOOD + G$ rewards
|
|
22
34
|
* it implements
|
|
@@ -60,6 +72,15 @@ contract GoodDollarStaking is
|
|
|
60
72
|
uint256 actualRewardsSent //maybe rewards could not be minted
|
|
61
73
|
);
|
|
62
74
|
|
|
75
|
+
event StakeUpgraded(
|
|
76
|
+
address indexed staker,
|
|
77
|
+
uint256 amount, //amount withdrawn including actualRewardsSent
|
|
78
|
+
uint256 sharesRedeemed, //shares requested to redeem
|
|
79
|
+
uint256 goodRewards,
|
|
80
|
+
uint256 gdRewards,
|
|
81
|
+
uint256 newShares
|
|
82
|
+
);
|
|
83
|
+
|
|
63
84
|
/**
|
|
64
85
|
* @dev Emitted when `staker` withdraws but MintBurnWrapper could not allocate/mint the rewards
|
|
65
86
|
*/
|
|
@@ -157,35 +178,26 @@ contract GoodDollarStaking is
|
|
|
157
178
|
return true;
|
|
158
179
|
}
|
|
159
180
|
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
181
|
+
function _withdrawStake(
|
|
182
|
+
address from,
|
|
183
|
+
address to,
|
|
184
|
+
uint256 _shares
|
|
185
|
+
)
|
|
186
|
+
internal
|
|
187
|
+
returns (
|
|
188
|
+
uint256 goodRewards,
|
|
189
|
+
uint256 gdRewards,
|
|
190
|
+
uint256 actualRewardsSent,
|
|
191
|
+
uint256 depositComponent
|
|
192
|
+
)
|
|
171
193
|
{
|
|
172
|
-
uint256 depositComponent;
|
|
173
|
-
|
|
174
|
-
//in case amount is 0 this will just withdraw the GOOD rewards, this is required for withdrawRewards
|
|
175
|
-
uint256 originalBalance = sharesOf(msg.sender);
|
|
176
194
|
if (_shares > 0) {
|
|
177
195
|
/* G$ rewards update */
|
|
178
196
|
//we get the relative part user is withdrawing from his original deposit, his principle is composed of deposit+earned interest
|
|
179
|
-
(depositComponent, gdRewards) = _withdraw(
|
|
197
|
+
(depositComponent, gdRewards) = _withdraw(from, _shares);
|
|
180
198
|
/* Good rewards update */
|
|
181
|
-
_decreaseProductivity(
|
|
182
|
-
|
|
183
|
-
msg.sender,
|
|
184
|
-
_shares,
|
|
185
|
-
0,
|
|
186
|
-
block.number
|
|
187
|
-
);
|
|
188
|
-
_burn(msg.sender, _shares); // burn their staking tokens
|
|
199
|
+
_decreaseProductivity(address(this), from, _shares, 0, block.number);
|
|
200
|
+
_burn(from, _shares); // burn their staking tokens
|
|
189
201
|
}
|
|
190
202
|
|
|
191
203
|
// console.log(
|
|
@@ -194,23 +206,45 @@ contract GoodDollarStaking is
|
|
|
194
206
|
// gdRewards
|
|
195
207
|
// );
|
|
196
208
|
|
|
197
|
-
goodRewards = _mintGOODRewards(
|
|
209
|
+
goodRewards = _mintGOODRewards(from);
|
|
198
210
|
|
|
199
211
|
//rewards are paid via the rewards distribution contract
|
|
200
|
-
uint256 actualRewardsSent;
|
|
201
212
|
if (gdRewards > 0) {
|
|
202
|
-
actualRewardsSent = _mintGDRewards(
|
|
213
|
+
actualRewardsSent = _mintGDRewards(from, to, gdRewards);
|
|
203
214
|
}
|
|
204
215
|
|
|
205
|
-
uint256 actualSharesRedeemed = originalBalance - sharesOf(msg.sender);
|
|
206
|
-
|
|
207
216
|
//stake is withdrawn from original deposit sent to this contract
|
|
208
217
|
if (depositComponent > 0) {
|
|
209
|
-
require(
|
|
210
|
-
token.transfer(msg.sender, depositComponent),
|
|
211
|
-
"withdraw transfer failed"
|
|
212
|
-
);
|
|
218
|
+
require(token.transfer(to, depositComponent), "withdraw transfer failed");
|
|
213
219
|
}
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
/**
|
|
223
|
+
* @notice Withdraws _amount from the staker principle
|
|
224
|
+
* in _withdraw we use getPrinciple and not getProductivity because the user can have more G$ to withdraw than he staked
|
|
225
|
+
* @param _shares amount to withdraw
|
|
226
|
+
* @return goodRewards how much GOOD rewards were transfered to staker
|
|
227
|
+
* @return gdRewards out of withdrawn amount how much was taken from earned interest (amount-gdRewards = taken from deposit)
|
|
228
|
+
*/
|
|
229
|
+
function withdrawStake(uint256 _shares)
|
|
230
|
+
public
|
|
231
|
+
nonReentrant
|
|
232
|
+
returns (uint256 goodRewards, uint256 gdRewards)
|
|
233
|
+
{
|
|
234
|
+
//in case amount is 0 this will just withdraw the GOOD rewards, this is required for withdrawRewards
|
|
235
|
+
uint256 originalBalance = sharesOf(msg.sender);
|
|
236
|
+
uint256 depositComponent;
|
|
237
|
+
uint256 actualRewardsSent;
|
|
238
|
+
|
|
239
|
+
(
|
|
240
|
+
goodRewards,
|
|
241
|
+
gdRewards,
|
|
242
|
+
actualRewardsSent,
|
|
243
|
+
depositComponent
|
|
244
|
+
) = _withdrawStake(msg.sender, msg.sender, _shares);
|
|
245
|
+
|
|
246
|
+
uint256 actualSharesRedeemed = originalBalance - sharesOf(msg.sender);
|
|
247
|
+
|
|
214
248
|
emit StakeWithdraw(
|
|
215
249
|
msg.sender,
|
|
216
250
|
actualSharesRedeemed,
|
|
@@ -224,21 +258,23 @@ contract GoodDollarStaking is
|
|
|
224
258
|
|
|
225
259
|
/**
|
|
226
260
|
* @notice helper to mint/send G$ rewards from fixed APY
|
|
227
|
-
* @param
|
|
261
|
+
* @param _account address of the staker
|
|
262
|
+
* @param _recipient address of G$ recipient
|
|
228
263
|
* @param _amount how much to mint/send
|
|
229
264
|
* @return actualSent how much rewards were actually minted/sent. If RewardsMinter is passed its limit it could be that not all requested amount was awarded.
|
|
230
265
|
*/
|
|
231
|
-
function _mintGDRewards(
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
266
|
+
function _mintGDRewards(
|
|
267
|
+
address _account,
|
|
268
|
+
address _recipient,
|
|
269
|
+
uint256 _amount
|
|
270
|
+
) internal returns (uint256 actualSent) {
|
|
235
271
|
//make sure RewardsMinter failure doesnt prevent withdrawl of stake
|
|
236
|
-
//console.log("_mintGDRewards: sending amount: %s to: %s", _amount,
|
|
272
|
+
//console.log("_mintGDRewards: sending amount: %s to: %s", _amount, _account);
|
|
237
273
|
address minter = nameService.getAddress("MINTBURN_WRAPPER");
|
|
238
274
|
if (minter != address(0)) {
|
|
239
275
|
try
|
|
240
276
|
RewardsMinter(nameService.getAddress("MINTBURN_WRAPPER")).sendOrMint(
|
|
241
|
-
|
|
277
|
+
_recipient,
|
|
242
278
|
_amount
|
|
243
279
|
)
|
|
244
280
|
returns (uint256 _res) {
|
|
@@ -258,10 +294,10 @@ contract GoodDollarStaking is
|
|
|
258
294
|
// actualSent,
|
|
259
295
|
// _amount - actualSent
|
|
260
296
|
// );
|
|
261
|
-
uint256 shares = _undoReward(
|
|
262
|
-
_increaseProductivity(address(this),
|
|
263
|
-
_mint(
|
|
264
|
-
emit RewardsNotSent(
|
|
297
|
+
uint256 shares = _undoReward(_account, _amount - actualSent);
|
|
298
|
+
_increaseProductivity(address(this), _account, shares, 0, block.number); //increase productivity back for GOOD rewards
|
|
299
|
+
_mint(_account, shares); //mint shares worth of undone rewards
|
|
300
|
+
emit RewardsNotSent(_account, _amount, actualSent);
|
|
265
301
|
}
|
|
266
302
|
}
|
|
267
303
|
|
|
@@ -271,7 +307,7 @@ contract GoodDollarStaking is
|
|
|
271
307
|
* @return gdRewards recieved G$ rewards
|
|
272
308
|
*/
|
|
273
309
|
function withdrawRewards()
|
|
274
|
-
|
|
310
|
+
external
|
|
275
311
|
returns (uint256 goodRewards, uint256 gdRewards)
|
|
276
312
|
{
|
|
277
313
|
uint256 gdRewardsShares = amountToShares(earned(msg.sender));
|
|
@@ -363,6 +399,11 @@ contract GoodDollarStaking is
|
|
|
363
399
|
emit GOODRewardsSet(_monthlyAmount);
|
|
364
400
|
}
|
|
365
401
|
|
|
402
|
+
function setBlockPerYear(uint128 _blocksPerYear) external {
|
|
403
|
+
_onlyAvatar();
|
|
404
|
+
numberOfBlocksPerYear = _blocksPerYear;
|
|
405
|
+
}
|
|
406
|
+
|
|
366
407
|
/**
|
|
367
408
|
* @dev interest rate per one block in 1e18 precision.
|
|
368
409
|
* for example APY=5% then per block = nroot(1+0.05,numberOfBlocksPerYear)
|
|
@@ -465,14 +506,19 @@ contract GoodDollarStaking is
|
|
|
465
506
|
emit GOODRewardsSet(2 ether * 1e6);
|
|
466
507
|
|
|
467
508
|
//this will make sure rewards are set at 0, so no withdraw issue will happen.
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
509
|
+
address curStaking = nameService.getAddress("GDAO_STAKING");
|
|
510
|
+
bool ok;
|
|
511
|
+
if (curStaking != address(0)) {
|
|
512
|
+
//this will trigger updating of accumulated rewards, so everyone's rewards are updated to this point
|
|
513
|
+
IGovernanceStaking(curStaking).withdrawRewards();
|
|
514
|
+
(ok, ) = dao.genericCall(
|
|
515
|
+
curStaking,
|
|
516
|
+
abi.encodeWithSignature("setMonthlyRewards(uint256)", 0),
|
|
517
|
+
avatar,
|
|
518
|
+
0
|
|
519
|
+
);
|
|
520
|
+
require(ok, "calling setMonthlyRewards failed");
|
|
521
|
+
}
|
|
476
522
|
|
|
477
523
|
//this will set this contract as the GDAO_STAKING contract and give us minting rights on the reputation token
|
|
478
524
|
(ok, ) = dao.genericCall(
|
|
@@ -507,4 +553,44 @@ contract GoodDollarStaking is
|
|
|
507
553
|
}
|
|
508
554
|
setGdApy(_interestRatePerBlock);
|
|
509
555
|
}
|
|
556
|
+
|
|
557
|
+
/**
|
|
558
|
+
* @dev allow to withdraw the balance (principle+rewards) to a new staking contract
|
|
559
|
+
* @param _newStaking the addres of the new staking contract, needs to be a registered DAO scheme and implement IStakingUpgrade
|
|
560
|
+
*/
|
|
561
|
+
function upgradeTo(address _newStaking) external nonReentrant {
|
|
562
|
+
//in case amount is 0 this will just withdraw the GOOD rewards, this is required for withdrawRewards
|
|
563
|
+
uint256 _shares = sharesOf(msg.sender);
|
|
564
|
+
require(_shares > 0, "no balance");
|
|
565
|
+
|
|
566
|
+
//check that target contract was approved by the dao to prevent possible fraud
|
|
567
|
+
require(
|
|
568
|
+
dao.isSchemeRegistered(_newStaking, avatar),
|
|
569
|
+
"not DAO approved upgrade"
|
|
570
|
+
);
|
|
571
|
+
|
|
572
|
+
(
|
|
573
|
+
uint256 goodRewards,
|
|
574
|
+
uint256 gdRewards,
|
|
575
|
+
uint256 actualRewardsSent,
|
|
576
|
+
uint256 depositComponent
|
|
577
|
+
) = _withdrawStake(msg.sender, _newStaking, _shares);
|
|
578
|
+
|
|
579
|
+
require(actualRewardsSent == gdRewards, "unable to mint rewards");
|
|
580
|
+
|
|
581
|
+
//target new staking contract need to trust we transfered the tokens
|
|
582
|
+
uint256 newShares = IStakingUpgrade(_newStaking).upgradeFrom(
|
|
583
|
+
msg.sender,
|
|
584
|
+
depositComponent + gdRewards
|
|
585
|
+
);
|
|
586
|
+
|
|
587
|
+
emit StakeUpgraded(
|
|
588
|
+
msg.sender,
|
|
589
|
+
depositComponent + actualRewardsSent,
|
|
590
|
+
_shares,
|
|
591
|
+
goodRewards,
|
|
592
|
+
gdRewards,
|
|
593
|
+
newShares
|
|
594
|
+
);
|
|
595
|
+
}
|
|
510
596
|
}
|
|
@@ -29,7 +29,7 @@ contract GovernanceStaking is
|
|
|
29
29
|
* @dev Emitted when `staker` earns an `amount` of GOOD tokens
|
|
30
30
|
*/
|
|
31
31
|
event ReputationEarned(address indexed staker, uint256 amount);
|
|
32
|
-
|
|
32
|
+
|
|
33
33
|
/**
|
|
34
34
|
* @dev Emitted when `staker` stakes an `amount` of GoodDollars
|
|
35
35
|
*/
|
|
@@ -44,7 +44,7 @@ contract GovernanceStaking is
|
|
|
44
44
|
* @dev Constructor
|
|
45
45
|
* @param _ns The address of the INameService contract
|
|
46
46
|
*/
|
|
47
|
-
constructor(INameService _ns) {
|
|
47
|
+
constructor(INameService _ns) initializer {
|
|
48
48
|
setDAO(_ns);
|
|
49
49
|
token = ERC20(nameService.getAddress("GOODDOLLAR"));
|
|
50
50
|
__ERC20_init("G$ Staking For GOOD", "sG$");
|