@gooddollar/goodprotocol 1.0.29-beta.1 → 1.0.29-beta.2
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/AdminWallet.min.json +1 -1
- package/artifacts/abis/Faucet.min.json +1 -0
- package/artifacts/abis/GoodDollarStaking.min.json +1 -1
- package/artifacts/abis/GoodDollarStakingMock.min.json +1 -1
- package/artifacts/abis/IGoodDollar.min.json +1 -1
- 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/IdentityV2.min.json +1 -0
- package/artifacts/abis/InvitesV2.min.json +1 -0
- package/artifacts/abis/UBIScheme.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 +39 -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 +51 -0
- package/artifacts/contracts/Interfaces.sol/IIdentityV2.dbg.json +4 -0
- package/artifacts/contracts/Interfaces.sol/IIdentityV2.json +281 -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 +684 -0
- package/artifacts/contracts/fuseFaucet/FuseFaucet.sol/FuseFaucet.dbg.json +1 -1
- package/artifacts/contracts/fuseFaucet/FuseFaucet.sol/FuseFaucet.json +2 -2
- package/artifacts/contracts/governance/ClaimersDistribution.sol/ClaimersDistribution.dbg.json +1 -1
- package/artifacts/contracts/governance/ClaimersDistribution.sol/ClaimersDistribution.json +2 -2
- package/artifacts/contracts/governance/CompoundVotingMachine.sol/CompoundVotingMachine.dbg.json +1 -1
- package/artifacts/contracts/governance/CompoundVotingMachine.sol/CompoundVotingMachine.json +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/GoodDollarStaking.sol/GoodDollarStaking.dbg.json +1 -1
- package/artifacts/contracts/governance/GoodDollarStaking.sol/GoodDollarStaking.json +15 -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/RewardsMinter.dbg.json +1 -1
- package/artifacts/contracts/governance/GovernanceStaking.sol/GovernanceStaking.dbg.json +1 -1
- package/artifacts/contracts/governance/GovernanceStaking.sol/GovernanceStaking.json +2 -2
- package/artifacts/contracts/governance/MultiBaseGovernanceShareField.sol/MultiBaseGovernanceShareField.dbg.json +1 -1
- package/artifacts/contracts/governance/Reputation.sol/Reputation.dbg.json +1 -1
- package/artifacts/contracts/governance/Reputation.sol/Reputation.json +2 -2
- package/artifacts/contracts/governance/StakersDistribution.sol/StakersDistribution.dbg.json +1 -1
- package/artifacts/contracts/governance/StakersDistribution.sol/StakersDistribution.json +2 -2
- package/artifacts/contracts/identity/IdentityV2.sol/IdentityV2.dbg.json +4 -0
- package/artifacts/contracts/identity/IdentityV2.sol/IdentityV2.json +1000 -0
- package/artifacts/contracts/invite/InvitesV1.sol/InvitesV1.dbg.json +1 -1
- package/artifacts/contracts/invite/InvitesV1.sol/InvitesV1.json +2 -2
- package/artifacts/contracts/invite/InvitesV2.sol/InvitesV2.dbg.json +4 -0
- package/artifacts/contracts/invite/InvitesV2.sol/InvitesV2.json +586 -0
- 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/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 +2 -2
- package/artifacts/contracts/mocks/DistributionHelperTest.sol/DistributionHelperTestHelper.dbg.json +1 -1
- package/artifacts/contracts/mocks/DistributionHelperTest.sol/DistributionHelperTestHelper.json +2 -2
- package/artifacts/contracts/mocks/GoodCompoundStakingTest.sol/GoodCompoundStakingTest.dbg.json +1 -1
- package/artifacts/contracts/mocks/GoodCompoundStakingTest.sol/GoodCompoundStakingTest.json +2 -2
- package/artifacts/contracts/mocks/GoodDollarStakingMock.sol/GoodDollarStakingMock.dbg.json +1 -1
- package/artifacts/contracts/mocks/GoodDollarStakingMock.sol/GoodDollarStakingMock.json +15 -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/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/SixteenDecimalsTokenMock.sol/SixteenDecimalsTokenMock.dbg.json +1 -1
- package/artifacts/contracts/mocks/StakingMockFixedAPY.sol/StakingMockFixedAPY.dbg.json +1 -1
- package/artifacts/contracts/mocks/SwapHelperTest.sol/SwapHelperTest.dbg.json +1 -1
- package/artifacts/contracts/mocks/SwapHelperTest.sol/SwapHelperTest.json +2 -2
- package/artifacts/contracts/mocks/TwentyDecimalsTokenMock.sol/TwentyDecimalsTokenMock.dbg.json +1 -1
- package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock.dbg.json +1 -1
- package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock.json +2 -2
- package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock2.dbg.json +1 -1
- package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock2.json +2 -2
- package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock3.dbg.json +1 -1
- package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock3.json +2 -2
- package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock4.dbg.json +1 -1
- package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock4.json +2 -2
- package/artifacts/contracts/mocks/UsdcMock.sol/USDCMock.dbg.json +1 -1
- package/artifacts/contracts/mocks/cBATMock.sol/cBATMock.dbg.json +1 -1
- package/artifacts/contracts/mocks/cDAILowWorthMock.sol/cDAILowWorthMock.dbg.json +1 -1
- package/artifacts/contracts/mocks/cDAIMock.sol/cDAIMock.dbg.json +1 -1
- package/artifacts/contracts/mocks/cDAINonMintableMock.sol/cDAINonMintableMock.dbg.json +1 -1
- package/artifacts/contracts/mocks/cDecimalsMock.sol/cDecimalsMock.dbg.json +1 -1
- package/artifacts/contracts/mocks/cSDTMock.sol/cSDTMock.dbg.json +1 -1
- package/artifacts/contracts/mocks/cUSDCMock.sol/cUSDCMock.dbg.json +1 -1
- package/artifacts/contracts/reserve/DistributionHelper.sol/DistributionHelper.dbg.json +1 -1
- package/artifacts/contracts/reserve/DistributionHelper.sol/DistributionHelper.json +2 -2
- package/artifacts/contracts/reserve/ExchangeHelper.sol/ExchangeHelper.dbg.json +1 -1
- package/artifacts/contracts/reserve/ExchangeHelper.sol/ExchangeHelper.json +2 -2
- package/artifacts/contracts/reserve/GoodMarketMaker.sol/GoodMarketMaker.dbg.json +1 -1
- package/artifacts/contracts/reserve/GoodMarketMaker.sol/GoodMarketMaker.json +2 -2
- package/artifacts/contracts/reserve/GoodReserveCDai.sol/ContributionCalc.dbg.json +1 -1
- package/artifacts/contracts/reserve/GoodReserveCDai.sol/GoodReserveCDai.dbg.json +1 -1
- package/artifacts/contracts/reserve/GoodReserveCDai.sol/GoodReserveCDai.json +2 -2
- package/artifacts/contracts/staking/BaseShareField.sol/BaseShareField.dbg.json +1 -1
- package/artifacts/contracts/staking/BaseShareField.sol/BaseShareField.json +2 -2
- package/artifacts/contracts/staking/BaseShareFieldV2.sol/BaseShareFieldV2.dbg.json +1 -1
- package/artifacts/contracts/staking/BaseShareFieldV2.sol/BaseShareFieldV2.json +2 -2
- package/artifacts/contracts/staking/DonationsStaking.sol/DonationsStaking.dbg.json +1 -1
- package/artifacts/contracts/staking/DonationsStaking.sol/DonationsStaking.json +2 -2
- package/artifacts/contracts/staking/FuseStakingV3.sol/FuseStakingV3.dbg.json +1 -1
- package/artifacts/contracts/staking/FuseStakingV3.sol/FuseStakingV3.json +2 -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 +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/staking/utils/Math64X64.sol/Math64x64.dbg.json +1 -1
- package/artifacts/contracts/staking/utils/StakingRewardsFixedAPY.sol/StakingRewardsFixedAPY.dbg.json +1 -1
- package/artifacts/contracts/ubi/UBIScheme.sol/UBIScheme.dbg.json +1 -1
- package/artifacts/contracts/ubi/UBIScheme.sol/UBIScheme.json +15 -22
- package/artifacts/contracts/utils/AdminWallet.sol/AdminWallet.dbg.json +1 -1
- package/artifacts/contracts/utils/AdminWallet.sol/AdminWallet.json +76 -56
- 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/GoodDollarMintBurnWrapper.sol/GoodDollarMintBurnWrapper.dbg.json +1 -1
- package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/GoodDollarMintBurnWrapper.json +2 -2
- package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/IRouter.dbg.json +1 -1
- package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/PausableControl.dbg.json +1 -1
- package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/TokenOperation.dbg.json +1 -1
- package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/TokenOperation.json +2 -2
- package/artifacts/contracts/utils/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/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 +26 -0
- package/contracts/fuseFaucet/Faucet.sol +245 -0
- package/contracts/governance/GoodDollarStaking.sol +23 -9
- package/contracts/identity/IdentityV2.sol +434 -0
- package/contracts/invite/InvitesV2.sol +316 -0
- package/contracts/ubi/UBIScheme.sol +45 -40
- package/contracts/utils/AdminWallet.sol +42 -11
- package/hardhat.config.ts +16 -2
- package/package.json +3 -2
- package/releases/deploy-settings.json +36 -1
- package/releases/deployment.json +93 -52
- package/scripts/multichain-deploy/0_proxyFactory-deploy.ts +45 -0
- package/scripts/multichain-deploy/{basicdao-deploy.ts → 1_basicdao-deploy.ts} +56 -52
- package/scripts/multichain-deploy/2_helpers-deploy.ts +143 -0
- package/scripts/multichain-deploy/{gdSavings-deploy.ts → 3_gdSavings-deploy.ts} +90 -76
- package/scripts/multichain-deploy/4_ubi-deploy.ts +121 -0
- package/scripts/multichain-deploy/5_gov-deploy.ts +123 -0
- package/scripts/multichain-deploy/helpers.ts +0 -1
- package/scripts/multichain-deploy/verifyEtherscan.ts +84 -0
- package/scripts/test/localOldDaoDeploy.ts +10 -3
- package/scripts/upgrades/identity-upgrade.ts +153 -0
- package/scripts/{multichain-deploy → upgrades}/nonubiDistribution-deploy.ts +2 -5
- package/test/helpers.ts +12 -8
- package/test/ubi/UBIScheme.test.ts +30 -30
- package/test/ubi/UBISchemeCycle.test.ts +9 -7
- package/test/utils/AdminWallet.test.ts +33 -11
- package/types/AdminWallet.ts +124 -113
- package/types/Faucet.ts +1014 -0
- package/types/GoodDollarStaking.ts +34 -0
- package/types/GoodDollarStakingMock.ts +34 -0
- package/types/IERC1271.ts +109 -0
- package/types/IGoodDollar.ts +54 -0
- package/types/IGovernanceStaking.ts +98 -0
- package/types/IIdentity.ts +75 -0
- package/types/IIdentityV2.ts +526 -0
- package/types/IdentityV2.ts +1612 -0
- package/types/InvitesV2.ts +933 -0
- package/types/UBIScheme.ts +19 -40
- package/types/factories/AaveStakingFactory__factory.ts +1 -1
- package/types/factories/AdminWallet__factory.ts +75 -55
- package/types/factories/BaseShareFieldV2__factory.ts +1 -1
- package/types/factories/BaseShareField__factory.ts +1 -1
- package/types/factories/ClaimersDistribution__factory.ts +1 -1
- package/types/factories/CompoundStakingFactory__factory.ts +1 -1
- package/types/factories/CompoundVotingMachine__factory.ts +1 -1
- package/types/factories/DAOContract__factory.ts +1 -1
- package/types/factories/DAOUpgradeableContract__factory.ts +1 -1
- package/types/factories/DistributionBridgeMock__factory.ts +1 -1
- package/types/factories/DistributionHelperTestHelper__factory.ts +1 -1
- package/types/factories/DistributionHelperTest__factory.ts +1 -1
- package/types/factories/DistributionHelper__factory.ts +1 -1
- package/types/factories/DonationsStaking__factory.ts +1 -1
- package/types/factories/ExchangeHelper__factory.ts +1 -1
- package/types/factories/Faucet__factory.ts +729 -0
- package/types/factories/FuseFaucet__factory.ts +1 -1
- package/types/factories/FuseStakingV3__factory.ts +1 -1
- package/types/factories/GReputation__factory.ts +1 -1
- package/types/factories/GoodAaveStakingV2__factory.ts +1 -1
- package/types/factories/GoodAaveStaking__factory.ts +1 -1
- package/types/factories/GoodCompoundStakingTest__factory.ts +1 -1
- package/types/factories/GoodCompoundStakingV2__factory.ts +1 -1
- package/types/factories/GoodCompoundStaking__factory.ts +1 -1
- package/types/factories/GoodDollarMintBurnWrapper__factory.ts +1 -1
- package/types/factories/GoodDollarStakingMock__factory.ts +14 -1
- package/types/factories/GoodDollarStaking__factory.ts +14 -1
- package/types/factories/GoodFundManagerTest__factory.ts +1 -1
- package/types/factories/GoodFundManager__factory.ts +1 -1
- package/types/factories/GoodMarketMaker__factory.ts +1 -1
- package/types/factories/GoodReserveCDai__factory.ts +1 -1
- package/types/factories/GovernanceStaking__factory.ts +1 -1
- package/types/factories/IERC1271__factory.ts +47 -0
- package/types/factories/IGoodDollar__factory.ts +39 -0
- package/types/factories/IGovernanceStaking__factory.ts +39 -0
- package/types/factories/IIdentityV2__factory.ts +293 -0
- package/types/factories/IIdentity__factory.ts +51 -0
- package/types/factories/IdentityV2__factory.ts +1048 -0
- package/types/factories/InvitesV1__factory.ts +1 -1
- package/types/factories/InvitesV2__factory.ts +634 -0
- package/types/factories/MultichainBridgeHelper__factory.ts +1 -1
- package/types/factories/MultichainRouterMock__factory.ts +1 -1
- package/types/factories/OverMintTesterRegularStake__factory.ts +1 -1
- package/types/factories/OverMintTester__factory.ts +1 -1
- 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/ReputationTestHelper__factory.ts +1 -1
- package/types/factories/Reputation__factory.ts +1 -1
- package/types/factories/StakersDistribution__factory.ts +1 -1
- package/types/factories/SwapHelperTest__factory.ts +1 -1
- package/types/factories/UBIScheme__factory.ts +14 -21
- package/types/factories/UniswapV2SwapHelper__factory.ts +1 -1
- package/types/factories/UpgradableMock2__factory.ts +1 -1
- package/types/factories/UpgradableMock3__factory.ts +1 -1
- package/types/factories/UpgradableMock4__factory.ts +1 -1
- package/types/factories/UpgradableMock__factory.ts +1 -1
- package/types/hardhat.d.ts +54 -0
- package/types/index.ts +12 -0
- package/yarn.lock +4 -4
|
@@ -74,8 +74,8 @@
|
|
|
74
74
|
"type": "function"
|
|
75
75
|
}
|
|
76
76
|
],
|
|
77
|
-
"bytecode": "
|
|
78
|
-
"deployedBytecode": "
|
|
77
|
+
"bytecode": "0x608060405234801561001057600080fd5b5060405161035c38038061035c83398101604081905261002f91610054565b600080546001600160a01b0319166001600160a01b0392909216919091179055610084565b60006020828403121561006657600080fd5b81516001600160a01b038116811461007d57600080fd5b9392505050565b6102c9806100936000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80635653eeeb1461004657806391d61f3e1461005b578063c52164c61461006e575b600080fd5b6100596100543660046101e7565b61009d565b005b6100596100693660046101e7565b610145565b600054610081906001600160a01b031681565b6040516001600160a01b03909116815260200160405180910390f35b60005b8181101561013f576000546040516340c10f1960e01b81526001600160a01b03909116906340c10f19906100da9087908790600401610228565b602060405180830381600087803b1580156100f457600080fd5b505af1158015610108573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061012c9190610241565b50806101378161026a565b9150506100a0565b50505050565b60005b8181101561013f57600054604051632770a7eb60e21b81526001600160a01b0390911690639dc29fac906101829087908790600401610228565b602060405180830381600087803b15801561019c57600080fd5b505af11580156101b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101d49190610241565b50806101df8161026a565b915050610148565b6000806000606084860312156101fc57600080fd5b83356001600160a01b038116811461021357600080fd5b95602085013595506040909401359392505050565b6001600160a01b03929092168252602082015260400190565b60006020828403121561025357600080fd5b8151801515811461026357600080fd5b9392505050565b600060001982141561028c57634e487b7160e01b600052601160045260246000fd5b506001019056fea2646970667358221220bf5af15fd554b440d628427d634d0ac3eb559002d7f37b7154c4e720322a9e9c64736f6c63430008080033",
|
|
78
|
+
"deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100415760003560e01c80635653eeeb1461004657806391d61f3e1461005b578063c52164c61461006e575b600080fd5b6100596100543660046101e7565b61009d565b005b6100596100693660046101e7565b610145565b600054610081906001600160a01b031681565b6040516001600160a01b03909116815260200160405180910390f35b60005b8181101561013f576000546040516340c10f1960e01b81526001600160a01b03909116906340c10f19906100da9087908790600401610228565b602060405180830381600087803b1580156100f457600080fd5b505af1158015610108573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061012c9190610241565b50806101378161026a565b9150506100a0565b50505050565b60005b8181101561013f57600054604051632770a7eb60e21b81526001600160a01b0390911690639dc29fac906101829087908790600401610228565b602060405180830381600087803b15801561019c57600080fd5b505af11580156101b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101d49190610241565b50806101df8161026a565b915050610148565b6000806000606084860312156101fc57600080fd5b83356001600160a01b038116811461021357600080fd5b95602085013595506040909401359392505050565b6001600160a01b03929092168252602082015260400190565b60006020828403121561025357600080fd5b8151801515811461026357600080fd5b9392505050565b600060001982141561028c57634e487b7160e01b600052601160045260246000fd5b506001019056fea2646970667358221220bf5af15fd554b440d628427d634d0ac3eb559002d7f37b7154c4e720322a9e9c64736f6c63430008080033",
|
|
79
79
|
"linkReferences": {},
|
|
80
80
|
"deployedLinkReferences": {}
|
|
81
81
|
}
|
package/contracts/Interfaces.sol
CHANGED
|
@@ -77,6 +77,12 @@ interface IGoodDollar is ERC20 {
|
|
|
77
77
|
) external returns (bool);
|
|
78
78
|
|
|
79
79
|
function formula() external view returns (address);
|
|
80
|
+
|
|
81
|
+
function setIdentity(address identity) external;
|
|
82
|
+
|
|
83
|
+
function identity() external view returns (address);
|
|
84
|
+
|
|
85
|
+
function owner() external view returns (address);
|
|
80
86
|
}
|
|
81
87
|
|
|
82
88
|
interface IERC2917 is ERC20 {
|
|
@@ -264,9 +270,29 @@ interface IIdentity {
|
|
|
264
270
|
|
|
265
271
|
function owner() external view returns (address);
|
|
266
272
|
|
|
273
|
+
function removeContract(address account) external;
|
|
274
|
+
|
|
275
|
+
function isDAOContract(address account) external view returns (bool);
|
|
276
|
+
|
|
277
|
+
function addrToDID(address account) external view returns (string memory);
|
|
278
|
+
|
|
267
279
|
event WhitelistedAdded(address user);
|
|
268
280
|
}
|
|
269
281
|
|
|
282
|
+
interface IIdentityV2 is IIdentity {
|
|
283
|
+
function addWhitelistedWithDIDAndChain(
|
|
284
|
+
address account,
|
|
285
|
+
string memory did,
|
|
286
|
+
uint256 orgChainId,
|
|
287
|
+
uint256 dateAuthenticated
|
|
288
|
+
) external;
|
|
289
|
+
|
|
290
|
+
function getWhitelistedRoot(address account)
|
|
291
|
+
external
|
|
292
|
+
view
|
|
293
|
+
returns (address root);
|
|
294
|
+
}
|
|
295
|
+
|
|
270
296
|
interface IUBIScheme {
|
|
271
297
|
function currentDay() external view returns (uint256);
|
|
272
298
|
|
|
@@ -0,0 +1,245 @@
|
|
|
1
|
+
//SPDX-License-Identifier: MIT
|
|
2
|
+
|
|
3
|
+
pragma solidity >=0.8.0;
|
|
4
|
+
|
|
5
|
+
import "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol";
|
|
6
|
+
import "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol";
|
|
7
|
+
import "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol";
|
|
8
|
+
import "../Interfaces.sol";
|
|
9
|
+
import "../utils/NameService.sol";
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* @title DonationStaking contract that receives funds in ETH/DAI
|
|
13
|
+
* and stake them in the SimpleStaking contract
|
|
14
|
+
*/
|
|
15
|
+
contract Faucet is Initializable, UUPSUpgradeable, AccessControlUpgradeable {
|
|
16
|
+
bytes32 public constant RELAYER_ROLE = keccak256("relayer");
|
|
17
|
+
|
|
18
|
+
event WalletTopped(
|
|
19
|
+
address indexed account, //address topped
|
|
20
|
+
uint256 amount,
|
|
21
|
+
address whitelistedRoot, //if account is connected to a whitelisted account, this will be it
|
|
22
|
+
address indexed relayerOrWhitelisted //the sender of the tx
|
|
23
|
+
);
|
|
24
|
+
|
|
25
|
+
uint256 public perDayRoughLimit;
|
|
26
|
+
uint256 public toppingAmount;
|
|
27
|
+
uint256 public gasRefund;
|
|
28
|
+
uint256 public startTime;
|
|
29
|
+
uint256 public currentDay;
|
|
30
|
+
|
|
31
|
+
NameService public nameService;
|
|
32
|
+
|
|
33
|
+
mapping(uint256 => mapping(address => uint256)) public toppings;
|
|
34
|
+
mapping(address => bool) public notFirstTime;
|
|
35
|
+
|
|
36
|
+
struct Wallet {
|
|
37
|
+
uint128 lastDayTopped;
|
|
38
|
+
uint32 dailyToppingCount;
|
|
39
|
+
uint128[7] lastWeekToppings;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
mapping(address => Wallet) public wallets;
|
|
43
|
+
uint32 public maxDailyToppings;
|
|
44
|
+
uint64 public gasPrice;
|
|
45
|
+
uint32 public maxPerWeekMultiplier;
|
|
46
|
+
uint32 public maxSwapAmount;
|
|
47
|
+
address public goodDollar_unused; //kept because of upgrades
|
|
48
|
+
uint64 public maxDailyNewWallets;
|
|
49
|
+
uint64 public dailyNewWalletsCount;
|
|
50
|
+
|
|
51
|
+
function initialize(
|
|
52
|
+
NameService _ns,
|
|
53
|
+
uint64 _gasPrice,
|
|
54
|
+
address relayer,
|
|
55
|
+
address owner
|
|
56
|
+
) public initializer {
|
|
57
|
+
__AccessControl_init_unchained();
|
|
58
|
+
_setupRole(DEFAULT_ADMIN_ROLE, owner);
|
|
59
|
+
if (relayer != address(0)) _setupRole(RELAYER_ROLE, relayer);
|
|
60
|
+
gasPrice = _gasPrice;
|
|
61
|
+
toppingAmount = 600000 * gasPrice; //0.6M gwei
|
|
62
|
+
perDayRoughLimit = 2 * toppingAmount;
|
|
63
|
+
maxDailyToppings = 3;
|
|
64
|
+
startTime = block.timestamp;
|
|
65
|
+
nameService = _ns;
|
|
66
|
+
maxPerWeekMultiplier = 2;
|
|
67
|
+
maxSwapAmount = 1000;
|
|
68
|
+
maxDailyNewWallets = 5000;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
function _authorizeUpgrade(address newImplementation)
|
|
72
|
+
internal
|
|
73
|
+
override
|
|
74
|
+
onlyRole(DEFAULT_ADMIN_ROLE)
|
|
75
|
+
{}
|
|
76
|
+
|
|
77
|
+
function getIdentity() public view returns (IIdentityV2) {
|
|
78
|
+
return IIdentityV2(nameService.getAddress("IDENTITY"));
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
function upgrade() public {
|
|
82
|
+
if (maxDailyNewWallets == 0) maxDailyNewWallets = 5000;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
modifier reimburseGas() {
|
|
86
|
+
uint256 _gasRefund = gasleft();
|
|
87
|
+
_;
|
|
88
|
+
_gasRefund = _gasRefund - gasleft() + 42000;
|
|
89
|
+
payable(msg.sender).transfer(_gasRefund * gasPrice); //gas price assumed 1e9 = 1gwei
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
receive() external payable {}
|
|
93
|
+
|
|
94
|
+
/*
|
|
95
|
+
* only whitelisted account or relayer can top non whitelisted accounts
|
|
96
|
+
* if target account is whitelisted anyone can top it
|
|
97
|
+
*/
|
|
98
|
+
modifier onlyAuthorized(address toTop) {
|
|
99
|
+
require(
|
|
100
|
+
getIdentity().getWhitelistedRoot(toTop) != address(0) ||
|
|
101
|
+
getIdentity().getWhitelistedRoot(msg.sender) != address(0) ||
|
|
102
|
+
hasRole(RELAYER_ROLE, msg.sender)
|
|
103
|
+
);
|
|
104
|
+
_;
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
modifier toppingLimit(address _user) {
|
|
108
|
+
//switch wallet to the account we do the accounting for
|
|
109
|
+
address whitelistedRoot = getIdentity().getWhitelistedRoot(_user);
|
|
110
|
+
_user = whitelistedRoot == address(0) ? _user : payable(whitelistedRoot);
|
|
111
|
+
|
|
112
|
+
uint256 prevDay = currentDay;
|
|
113
|
+
|
|
114
|
+
setDay();
|
|
115
|
+
if (currentDay != prevDay) dailyNewWalletsCount = 0;
|
|
116
|
+
|
|
117
|
+
require(
|
|
118
|
+
wallets[_user].lastDayTopped != uint128(currentDay) ||
|
|
119
|
+
wallets[_user].dailyToppingCount < maxDailyToppings,
|
|
120
|
+
"max daily toppings"
|
|
121
|
+
);
|
|
122
|
+
|
|
123
|
+
require(
|
|
124
|
+
(notFirstTime[_user] == false &&
|
|
125
|
+
dailyNewWalletsCount < maxDailyNewWallets) ||
|
|
126
|
+
whitelistedRoot != address(0),
|
|
127
|
+
"User not whitelisted or not first time"
|
|
128
|
+
);
|
|
129
|
+
|
|
130
|
+
//reset inactive days
|
|
131
|
+
uint256 dayOfWeek = currentDay % 7;
|
|
132
|
+
uint256 dayDiff = (currentDay - wallets[_user].lastDayTopped);
|
|
133
|
+
dayDiff = dayDiff > 7 ? 7 : dayDiff;
|
|
134
|
+
dayDiff = dayDiff > dayOfWeek ? dayOfWeek + 1 : dayDiff;
|
|
135
|
+
for (uint256 day = dayOfWeek + 1 - dayDiff; day <= dayOfWeek; day++) {
|
|
136
|
+
wallets[_user].lastWeekToppings[day] = 0;
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
uint128 weekTotal = 0;
|
|
140
|
+
for (uint256 i = 0; i <= dayOfWeek; i++) {
|
|
141
|
+
weekTotal += wallets[_user].lastWeekToppings[uint256(i)];
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
require(
|
|
145
|
+
weekTotal < perDayRoughLimit * maxPerWeekMultiplier,
|
|
146
|
+
"User wallet has been topped too many times this week"
|
|
147
|
+
);
|
|
148
|
+
_;
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
/* @dev Internal function that sets current day
|
|
152
|
+
*/
|
|
153
|
+
function setDay() internal {
|
|
154
|
+
currentDay = (block.timestamp - startTime) / 1 days;
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
function canTop(address _user) external view returns (bool) {
|
|
158
|
+
address whitelistedRoot = getIdentity().getWhitelistedRoot(_user);
|
|
159
|
+
_user = whitelistedRoot == address(0) ? _user : whitelistedRoot;
|
|
160
|
+
|
|
161
|
+
uint256 _currentDay = (block.timestamp - startTime) / 1 days;
|
|
162
|
+
bool can = (wallets[_user].lastDayTopped != uint128(_currentDay) ||
|
|
163
|
+
wallets[_user].dailyToppingCount < 3) &&
|
|
164
|
+
((notFirstTime[_user] == false &&
|
|
165
|
+
dailyNewWalletsCount < maxDailyNewWallets) ||
|
|
166
|
+
whitelistedRoot != address(0));
|
|
167
|
+
|
|
168
|
+
uint128[7] memory lastWeekToppings = wallets[_user].lastWeekToppings;
|
|
169
|
+
//reset inactive days
|
|
170
|
+
uint256 dayOfWeek = _currentDay % 7;
|
|
171
|
+
uint256 dayDiff = (_currentDay - wallets[_user].lastDayTopped);
|
|
172
|
+
dayDiff = dayDiff > 7 ? 7 : dayDiff;
|
|
173
|
+
dayDiff = dayDiff > dayOfWeek ? dayOfWeek + 1 : dayDiff;
|
|
174
|
+
|
|
175
|
+
for (uint256 day = dayOfWeek + 1 - dayDiff; day <= dayOfWeek; day++) {
|
|
176
|
+
lastWeekToppings[day] = 0;
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
uint128 weekTotal = 0;
|
|
180
|
+
for (uint256 i = 0; i <= dayOfWeek; i++) {
|
|
181
|
+
weekTotal += lastWeekToppings[uint256(i)];
|
|
182
|
+
}
|
|
183
|
+
can = can && weekTotal < perDayRoughLimit * maxPerWeekMultiplier;
|
|
184
|
+
return can;
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
/* @dev Function to top given address with amount of G$ given in constructor
|
|
188
|
+
* can only be done by admin the amount of times specified in constructor per day
|
|
189
|
+
* @param _user The address to transfer to
|
|
190
|
+
*/
|
|
191
|
+
function topWallet(address payable _user)
|
|
192
|
+
public
|
|
193
|
+
reimburseGas
|
|
194
|
+
toppingLimit(_user)
|
|
195
|
+
onlyAuthorized(_user)
|
|
196
|
+
{
|
|
197
|
+
_topWallet(_user);
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
function _topWallet(address payable _wallet) internal {
|
|
201
|
+
address payable target = _wallet;
|
|
202
|
+
|
|
203
|
+
//switch wallet to the account we do the accounting for
|
|
204
|
+
address whitelistedRoot = getIdentity().getWhitelistedRoot(_wallet);
|
|
205
|
+
_wallet = whitelistedRoot == address(0)
|
|
206
|
+
? _wallet
|
|
207
|
+
: payable(whitelistedRoot);
|
|
208
|
+
|
|
209
|
+
require(toppingAmount > address(_wallet).balance);
|
|
210
|
+
uint256 toTop = toppingAmount - address(_wallet).balance;
|
|
211
|
+
|
|
212
|
+
uint256 dayOfWeek = currentDay % 7;
|
|
213
|
+
|
|
214
|
+
if (wallets[_wallet].lastDayTopped == uint128(currentDay))
|
|
215
|
+
wallets[_wallet].dailyToppingCount += 1;
|
|
216
|
+
else wallets[_wallet].dailyToppingCount = 1;
|
|
217
|
+
wallets[_wallet].lastDayTopped = uint128(currentDay);
|
|
218
|
+
wallets[_wallet].lastWeekToppings[dayOfWeek] += uint128(toTop);
|
|
219
|
+
|
|
220
|
+
if (notFirstTime[_wallet] == false && whitelistedRoot == address(0)) {
|
|
221
|
+
dailyNewWalletsCount++;
|
|
222
|
+
}
|
|
223
|
+
notFirstTime[_wallet] = true;
|
|
224
|
+
|
|
225
|
+
target.transfer(toTop);
|
|
226
|
+
emit WalletTopped(target, toTop, whitelistedRoot, msg.sender);
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
function onTokenTransfer(
|
|
230
|
+
address payable _from,
|
|
231
|
+
uint256 amount,
|
|
232
|
+
bytes calldata data
|
|
233
|
+
) external returns (bool) {
|
|
234
|
+
require(amount <= maxSwapAmount, "slippage");
|
|
235
|
+
address uniswapLike = abi.decode(data, (address));
|
|
236
|
+
Uniswap uniswap = Uniswap(uniswapLike);
|
|
237
|
+
address[] memory path = new address[](2);
|
|
238
|
+
path[0] = address(msg.sender);
|
|
239
|
+
path[1] = uniswap.WETH();
|
|
240
|
+
|
|
241
|
+
cERC20(msg.sender).approve(address(uniswapLike), type(uint256).max);
|
|
242
|
+
uniswap.swapExactTokensForETH(amount, 0, path, _from, block.timestamp);
|
|
243
|
+
return true;
|
|
244
|
+
}
|
|
245
|
+
}
|
|
@@ -17,6 +17,10 @@ interface RewardsMinter {
|
|
|
17
17
|
function sendOrMint(address to, uint256 amount) external returns (uint256);
|
|
18
18
|
}
|
|
19
19
|
|
|
20
|
+
interface IGovernanceStaking {
|
|
21
|
+
function withdrawRewards() external returns (uint256);
|
|
22
|
+
}
|
|
23
|
+
|
|
20
24
|
/**
|
|
21
25
|
* @title Staking contract that allows citizens to stake G$ to get GOOD + G$ rewards
|
|
22
26
|
* it implements
|
|
@@ -271,7 +275,7 @@ contract GoodDollarStaking is
|
|
|
271
275
|
* @return gdRewards recieved G$ rewards
|
|
272
276
|
*/
|
|
273
277
|
function withdrawRewards()
|
|
274
|
-
|
|
278
|
+
external
|
|
275
279
|
returns (uint256 goodRewards, uint256 gdRewards)
|
|
276
280
|
{
|
|
277
281
|
uint256 gdRewardsShares = amountToShares(earned(msg.sender));
|
|
@@ -363,6 +367,11 @@ contract GoodDollarStaking is
|
|
|
363
367
|
emit GOODRewardsSet(_monthlyAmount);
|
|
364
368
|
}
|
|
365
369
|
|
|
370
|
+
function setBlockPerYear(uint128 _blocksPerYear) external {
|
|
371
|
+
_onlyAvatar();
|
|
372
|
+
numberOfBlocksPerYear = _blocksPerYear;
|
|
373
|
+
}
|
|
374
|
+
|
|
366
375
|
/**
|
|
367
376
|
* @dev interest rate per one block in 1e18 precision.
|
|
368
377
|
* for example APY=5% then per block = nroot(1+0.05,numberOfBlocksPerYear)
|
|
@@ -465,14 +474,19 @@ contract GoodDollarStaking is
|
|
|
465
474
|
emit GOODRewardsSet(2 ether * 1e6);
|
|
466
475
|
|
|
467
476
|
//this will make sure rewards are set at 0, so no withdraw issue will happen.
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
477
|
+
address curStaking = nameService.getAddress("GDAO_STAKING");
|
|
478
|
+
bool ok;
|
|
479
|
+
if (curStaking != address(0)) {
|
|
480
|
+
//this will trigger updating of accumulated rewards, so everyone's rewards are updated to this point
|
|
481
|
+
IGovernanceStaking(curStaking).withdrawRewards();
|
|
482
|
+
(ok, ) = dao.genericCall(
|
|
483
|
+
curStaking,
|
|
484
|
+
abi.encodeWithSignature("setMonthlyRewards(uint256)", 0),
|
|
485
|
+
avatar,
|
|
486
|
+
0
|
|
487
|
+
);
|
|
488
|
+
require(ok, "calling setMonthlyRewards failed");
|
|
489
|
+
}
|
|
476
490
|
|
|
477
491
|
//this will set this contract as the GDAO_STAKING contract and give us minting rights on the reputation token
|
|
478
492
|
(ok, ) = dao.genericCall(
|