@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.
Files changed (290) hide show
  1. package/artifacts/abis/AdminWallet.min.json +1 -1
  2. package/artifacts/abis/Faucet.min.json +1 -0
  3. package/artifacts/abis/GoodDollarStaking.min.json +1 -1
  4. package/artifacts/abis/GoodDollarStakingMock.min.json +1 -1
  5. package/artifacts/abis/IGoodDollar.min.json +1 -1
  6. package/artifacts/abis/IGovernanceStaking.min.json +1 -0
  7. package/artifacts/abis/IIdentity.min.json +1 -1
  8. package/artifacts/abis/IIdentityV2.min.json +1 -0
  9. package/artifacts/abis/IdentityV2.min.json +1 -0
  10. package/artifacts/abis/InvitesV2.min.json +1 -0
  11. package/artifacts/abis/UBIScheme.min.json +1 -1
  12. package/artifacts/contracts/DAOStackInterfaces.sol/Avatar.dbg.json +1 -1
  13. package/artifacts/contracts/DAOStackInterfaces.sol/Controller.dbg.json +1 -1
  14. package/artifacts/contracts/DAOStackInterfaces.sol/GlobalConstraintInterface.dbg.json +1 -1
  15. package/artifacts/contracts/DAOStackInterfaces.sol/IntVoteInterface.dbg.json +1 -1
  16. package/artifacts/contracts/DAOStackInterfaces.sol/ReputationInterface.dbg.json +1 -1
  17. package/artifacts/contracts/DAOStackInterfaces.sol/SchemeRegistrar.dbg.json +1 -1
  18. package/artifacts/contracts/Interfaces.sol/AggregatorV3Interface.dbg.json +1 -1
  19. package/artifacts/contracts/Interfaces.sol/ERC20.dbg.json +1 -1
  20. package/artifacts/contracts/Interfaces.sol/IAaveIncentivesController.dbg.json +1 -1
  21. package/artifacts/contracts/Interfaces.sol/IAdminWallet.dbg.json +1 -1
  22. package/artifacts/contracts/Interfaces.sol/IDonationStaking.dbg.json +1 -1
  23. package/artifacts/contracts/Interfaces.sol/IERC2917.dbg.json +1 -1
  24. package/artifacts/contracts/Interfaces.sol/IFirstClaimPool.dbg.json +1 -1
  25. package/artifacts/contracts/Interfaces.sol/IGoodDollar.dbg.json +1 -1
  26. package/artifacts/contracts/Interfaces.sol/IGoodDollar.json +39 -0
  27. package/artifacts/contracts/Interfaces.sol/IGoodStaking.dbg.json +1 -1
  28. package/artifacts/contracts/Interfaces.sol/IHasRouter.dbg.json +1 -1
  29. package/artifacts/contracts/Interfaces.sol/IIdentity.dbg.json +1 -1
  30. package/artifacts/contracts/Interfaces.sol/IIdentity.json +51 -0
  31. package/artifacts/contracts/Interfaces.sol/IIdentityV2.dbg.json +4 -0
  32. package/artifacts/contracts/Interfaces.sol/IIdentityV2.json +281 -0
  33. package/artifacts/contracts/Interfaces.sol/ILendingPool.dbg.json +1 -1
  34. package/artifacts/contracts/Interfaces.sol/IMultichainRouter.dbg.json +1 -1
  35. package/artifacts/contracts/Interfaces.sol/INameService.dbg.json +1 -1
  36. package/artifacts/contracts/Interfaces.sol/IUBIScheme.dbg.json +1 -1
  37. package/artifacts/contracts/Interfaces.sol/ProxyAdmin.dbg.json +1 -1
  38. package/artifacts/contracts/Interfaces.sol/Reserve.dbg.json +1 -1
  39. package/artifacts/contracts/Interfaces.sol/Staking.dbg.json +1 -1
  40. package/artifacts/contracts/Interfaces.sol/Uniswap.dbg.json +1 -1
  41. package/artifacts/contracts/Interfaces.sol/UniswapFactory.dbg.json +1 -1
  42. package/artifacts/contracts/Interfaces.sol/UniswapPair.dbg.json +1 -1
  43. package/artifacts/contracts/Interfaces.sol/cERC20.dbg.json +1 -1
  44. package/artifacts/contracts/fuseFaucet/Faucet.sol/Faucet.dbg.json +4 -0
  45. package/artifacts/contracts/fuseFaucet/Faucet.sol/Faucet.json +684 -0
  46. package/artifacts/contracts/fuseFaucet/FuseFaucet.sol/FuseFaucet.dbg.json +1 -1
  47. package/artifacts/contracts/fuseFaucet/FuseFaucet.sol/FuseFaucet.json +2 -2
  48. package/artifacts/contracts/governance/ClaimersDistribution.sol/ClaimersDistribution.dbg.json +1 -1
  49. package/artifacts/contracts/governance/ClaimersDistribution.sol/ClaimersDistribution.json +2 -2
  50. package/artifacts/contracts/governance/CompoundVotingMachine.sol/CompoundVotingMachine.dbg.json +1 -1
  51. package/artifacts/contracts/governance/CompoundVotingMachine.sol/CompoundVotingMachine.json +2 -2
  52. package/artifacts/contracts/governance/GReputation.sol/GReputation.dbg.json +1 -1
  53. package/artifacts/contracts/governance/GReputation.sol/GReputation.json +2 -2
  54. package/artifacts/contracts/governance/GoodDollarStaking.sol/GoodDollarStaking.dbg.json +1 -1
  55. package/artifacts/contracts/governance/GoodDollarStaking.sol/GoodDollarStaking.json +15 -2
  56. package/artifacts/contracts/governance/GoodDollarStaking.sol/IGovernanceStaking.dbg.json +4 -0
  57. package/artifacts/contracts/governance/GoodDollarStaking.sol/IGovernanceStaking.json +24 -0
  58. package/artifacts/contracts/governance/GoodDollarStaking.sol/RewardsMinter.dbg.json +1 -1
  59. package/artifacts/contracts/governance/GovernanceStaking.sol/GovernanceStaking.dbg.json +1 -1
  60. package/artifacts/contracts/governance/GovernanceStaking.sol/GovernanceStaking.json +2 -2
  61. package/artifacts/contracts/governance/MultiBaseGovernanceShareField.sol/MultiBaseGovernanceShareField.dbg.json +1 -1
  62. package/artifacts/contracts/governance/Reputation.sol/Reputation.dbg.json +1 -1
  63. package/artifacts/contracts/governance/Reputation.sol/Reputation.json +2 -2
  64. package/artifacts/contracts/governance/StakersDistribution.sol/StakersDistribution.dbg.json +1 -1
  65. package/artifacts/contracts/governance/StakersDistribution.sol/StakersDistribution.json +2 -2
  66. package/artifacts/contracts/identity/IdentityV2.sol/IdentityV2.dbg.json +4 -0
  67. package/artifacts/contracts/identity/IdentityV2.sol/IdentityV2.json +1000 -0
  68. package/artifacts/contracts/invite/InvitesV1.sol/InvitesV1.dbg.json +1 -1
  69. package/artifacts/contracts/invite/InvitesV1.sol/InvitesV1.json +2 -2
  70. package/artifacts/contracts/invite/InvitesV2.sol/InvitesV2.dbg.json +4 -0
  71. package/artifacts/contracts/invite/InvitesV2.sol/InvitesV2.json +586 -0
  72. package/artifacts/contracts/mocks/AaveMock.sol/AaveMock.dbg.json +1 -1
  73. package/artifacts/contracts/mocks/DAIMock.sol/DAIMock.dbg.json +1 -1
  74. package/artifacts/contracts/mocks/DecimalsMock.sol/DecimalsMock.dbg.json +1 -1
  75. package/artifacts/contracts/mocks/DistributionBridgeMock.sol/DistributionBridgeMock.dbg.json +1 -1
  76. package/artifacts/contracts/mocks/DistributionBridgeMock.sol/DistributionBridgeMock.json +2 -2
  77. package/artifacts/contracts/mocks/DistributionHelperTest.sol/DistributionHelperTest.dbg.json +1 -1
  78. package/artifacts/contracts/mocks/DistributionHelperTest.sol/DistributionHelperTest.json +2 -2
  79. package/artifacts/contracts/mocks/DistributionHelperTest.sol/DistributionHelperTestHelper.dbg.json +1 -1
  80. package/artifacts/contracts/mocks/DistributionHelperTest.sol/DistributionHelperTestHelper.json +2 -2
  81. package/artifacts/contracts/mocks/GoodCompoundStakingTest.sol/GoodCompoundStakingTest.dbg.json +1 -1
  82. package/artifacts/contracts/mocks/GoodCompoundStakingTest.sol/GoodCompoundStakingTest.json +2 -2
  83. package/artifacts/contracts/mocks/GoodDollarStakingMock.sol/GoodDollarStakingMock.dbg.json +1 -1
  84. package/artifacts/contracts/mocks/GoodDollarStakingMock.sol/GoodDollarStakingMock.json +15 -2
  85. package/artifacts/contracts/mocks/GoodFundManagerTest.sol/GoodFundManagerTest.dbg.json +1 -1
  86. package/artifacts/contracts/mocks/GoodFundManagerTest.sol/GoodFundManagerTest.json +2 -2
  87. package/artifacts/contracts/mocks/IncentiveControllerMock.sol/IncentiveControllerMock.dbg.json +1 -1
  88. package/artifacts/contracts/mocks/LendingPoolMock.sol/LendingPoolMock.dbg.json +1 -1
  89. package/artifacts/contracts/mocks/MultichainRouterMock.sol/IWrapper.dbg.json +1 -1
  90. package/artifacts/contracts/mocks/MultichainRouterMock.sol/MultichainRouterMock.dbg.json +1 -1
  91. package/artifacts/contracts/mocks/MultichainRouterMock.sol/MultichainRouterMock.json +2 -2
  92. package/artifacts/contracts/mocks/OverMintTester.sol/IGoodDollarStakingTest.dbg.json +1 -1
  93. package/artifacts/contracts/mocks/OverMintTester.sol/OverMintTester.dbg.json +1 -1
  94. package/artifacts/contracts/mocks/OverMintTester.sol/OverMintTester.json +2 -2
  95. package/artifacts/contracts/mocks/OverMintTesterRegularStake.sol/OverMintTesterRegularStake.dbg.json +1 -1
  96. package/artifacts/contracts/mocks/OverMintTesterRegularStake.sol/OverMintTesterRegularStake.json +2 -2
  97. package/artifacts/contracts/mocks/SixteenDecimalsTokenMock.sol/SixteenDecimalsTokenMock.dbg.json +1 -1
  98. package/artifacts/contracts/mocks/StakingMockFixedAPY.sol/StakingMockFixedAPY.dbg.json +1 -1
  99. package/artifacts/contracts/mocks/SwapHelperTest.sol/SwapHelperTest.dbg.json +1 -1
  100. package/artifacts/contracts/mocks/SwapHelperTest.sol/SwapHelperTest.json +2 -2
  101. package/artifacts/contracts/mocks/TwentyDecimalsTokenMock.sol/TwentyDecimalsTokenMock.dbg.json +1 -1
  102. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock.dbg.json +1 -1
  103. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock.json +2 -2
  104. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock2.dbg.json +1 -1
  105. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock2.json +2 -2
  106. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock3.dbg.json +1 -1
  107. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock3.json +2 -2
  108. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock4.dbg.json +1 -1
  109. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock4.json +2 -2
  110. package/artifacts/contracts/mocks/UsdcMock.sol/USDCMock.dbg.json +1 -1
  111. package/artifacts/contracts/mocks/cBATMock.sol/cBATMock.dbg.json +1 -1
  112. package/artifacts/contracts/mocks/cDAILowWorthMock.sol/cDAILowWorthMock.dbg.json +1 -1
  113. package/artifacts/contracts/mocks/cDAIMock.sol/cDAIMock.dbg.json +1 -1
  114. package/artifacts/contracts/mocks/cDAINonMintableMock.sol/cDAINonMintableMock.dbg.json +1 -1
  115. package/artifacts/contracts/mocks/cDecimalsMock.sol/cDecimalsMock.dbg.json +1 -1
  116. package/artifacts/contracts/mocks/cSDTMock.sol/cSDTMock.dbg.json +1 -1
  117. package/artifacts/contracts/mocks/cUSDCMock.sol/cUSDCMock.dbg.json +1 -1
  118. package/artifacts/contracts/reserve/DistributionHelper.sol/DistributionHelper.dbg.json +1 -1
  119. package/artifacts/contracts/reserve/DistributionHelper.sol/DistributionHelper.json +2 -2
  120. package/artifacts/contracts/reserve/ExchangeHelper.sol/ExchangeHelper.dbg.json +1 -1
  121. package/artifacts/contracts/reserve/ExchangeHelper.sol/ExchangeHelper.json +2 -2
  122. package/artifacts/contracts/reserve/GoodMarketMaker.sol/GoodMarketMaker.dbg.json +1 -1
  123. package/artifacts/contracts/reserve/GoodMarketMaker.sol/GoodMarketMaker.json +2 -2
  124. package/artifacts/contracts/reserve/GoodReserveCDai.sol/ContributionCalc.dbg.json +1 -1
  125. package/artifacts/contracts/reserve/GoodReserveCDai.sol/GoodReserveCDai.dbg.json +1 -1
  126. package/artifacts/contracts/reserve/GoodReserveCDai.sol/GoodReserveCDai.json +2 -2
  127. package/artifacts/contracts/staking/BaseShareField.sol/BaseShareField.dbg.json +1 -1
  128. package/artifacts/contracts/staking/BaseShareField.sol/BaseShareField.json +2 -2
  129. package/artifacts/contracts/staking/BaseShareFieldV2.sol/BaseShareFieldV2.dbg.json +1 -1
  130. package/artifacts/contracts/staking/BaseShareFieldV2.sol/BaseShareFieldV2.json +2 -2
  131. package/artifacts/contracts/staking/DonationsStaking.sol/DonationsStaking.dbg.json +1 -1
  132. package/artifacts/contracts/staking/DonationsStaking.sol/DonationsStaking.json +2 -2
  133. package/artifacts/contracts/staking/FuseStakingV3.sol/FuseStakingV3.dbg.json +1 -1
  134. package/artifacts/contracts/staking/FuseStakingV3.sol/FuseStakingV3.json +2 -2
  135. package/artifacts/contracts/staking/FuseStakingV3.sol/IConsensus.dbg.json +1 -1
  136. package/artifacts/contracts/staking/FuseStakingV3.sol/PegSwap.dbg.json +1 -1
  137. package/artifacts/contracts/staking/GoodFundManager.sol/GoodFundManager.dbg.json +1 -1
  138. package/artifacts/contracts/staking/GoodFundManager.sol/GoodFundManager.json +2 -2
  139. package/artifacts/contracts/staking/SimpleStaking.sol/SimpleStaking.dbg.json +1 -1
  140. package/artifacts/contracts/staking/SimpleStakingV2.sol/SimpleStakingV2.dbg.json +1 -1
  141. package/artifacts/contracts/staking/UniswapV2SwapHelper.sol/UniswapV2SwapHelper.dbg.json +1 -1
  142. package/artifacts/contracts/staking/UniswapV2SwapHelper.sol/UniswapV2SwapHelper.json +2 -2
  143. package/artifacts/contracts/staking/aave/AaveStakingFactory.sol/AaveStakingFactory.dbg.json +1 -1
  144. package/artifacts/contracts/staking/aave/AaveStakingFactory.sol/AaveStakingFactory.json +2 -2
  145. package/artifacts/contracts/staking/aave/GoodAaveStaking.sol/GoodAaveStaking.dbg.json +1 -1
  146. package/artifacts/contracts/staking/aave/GoodAaveStaking.sol/GoodAaveStaking.json +2 -2
  147. package/artifacts/contracts/staking/aave/GoodAaveStakingV2.sol/GoodAaveStakingV2.dbg.json +1 -1
  148. package/artifacts/contracts/staking/aave/GoodAaveStakingV2.sol/GoodAaveStakingV2.json +2 -2
  149. package/artifacts/contracts/staking/compound/CompoundStakingFactory.sol/CompoundStakingFactory.dbg.json +1 -1
  150. package/artifacts/contracts/staking/compound/CompoundStakingFactory.sol/CompoundStakingFactory.json +2 -2
  151. package/artifacts/contracts/staking/compound/GoodCompoundStaking.sol/GoodCompoundStaking.dbg.json +1 -1
  152. package/artifacts/contracts/staking/compound/GoodCompoundStaking.sol/GoodCompoundStaking.json +2 -2
  153. package/artifacts/contracts/staking/compound/GoodCompoundStakingV2.sol/GoodCompoundStakingV2.dbg.json +1 -1
  154. package/artifacts/contracts/staking/compound/GoodCompoundStakingV2.sol/GoodCompoundStakingV2.json +2 -2
  155. package/artifacts/contracts/staking/utils/Math64X64.sol/Math64x64.dbg.json +1 -1
  156. package/artifacts/contracts/staking/utils/StakingRewardsFixedAPY.sol/StakingRewardsFixedAPY.dbg.json +1 -1
  157. package/artifacts/contracts/ubi/UBIScheme.sol/UBIScheme.dbg.json +1 -1
  158. package/artifacts/contracts/ubi/UBIScheme.sol/UBIScheme.json +15 -22
  159. package/artifacts/contracts/utils/AdminWallet.sol/AdminWallet.dbg.json +1 -1
  160. package/artifacts/contracts/utils/AdminWallet.sol/AdminWallet.json +76 -56
  161. package/artifacts/contracts/utils/BancorFormula.sol/BancorFormula.dbg.json +1 -1
  162. package/artifacts/contracts/utils/BulkProof.sol/BulkProof.dbg.json +1 -1
  163. package/artifacts/contracts/utils/BulkProof.sol/BulkProof.json +2 -2
  164. package/artifacts/contracts/utils/DAOContract.sol/DAOContract.dbg.json +1 -1
  165. package/artifacts/contracts/utils/DAOContract.sol/DAOContract.json +2 -2
  166. package/artifacts/contracts/utils/DAOUpgradeableContract.sol/DAOUpgradeableContract.dbg.json +1 -1
  167. package/artifacts/contracts/utils/DAOUpgradeableContract.sol/DAOUpgradeableContract.json +2 -2
  168. package/artifacts/contracts/utils/DSMath.sol/DSMath.dbg.json +1 -1
  169. package/artifacts/contracts/utils/DataTypes.sol/DataTypes.dbg.json +1 -1
  170. package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/GoodDollarMintBurnWrapper.dbg.json +1 -1
  171. package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/GoodDollarMintBurnWrapper.json +2 -2
  172. package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/IRouter.dbg.json +1 -1
  173. package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/PausableControl.dbg.json +1 -1
  174. package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/TokenOperation.dbg.json +1 -1
  175. package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/TokenOperation.json +2 -2
  176. package/artifacts/contracts/utils/MultichainBridgeHelper.sol/MultichainBridgeHelper.dbg.json +1 -1
  177. package/artifacts/contracts/utils/MultichainBridgeHelper.sol/MultichainBridgeHelper.json +2 -2
  178. package/artifacts/contracts/utils/NameService.sol/NameService.dbg.json +1 -1
  179. package/artifacts/contracts/utils/ProtocolUpgrade.sol/OldMarketMaker.dbg.json +1 -1
  180. package/artifacts/contracts/utils/ProtocolUpgrade.sol/ProtocolUpgrade.dbg.json +1 -1
  181. package/artifacts/contracts/utils/ProtocolUpgrade.sol/ProtocolUpgrade.json +2 -2
  182. package/artifacts/contracts/utils/ProtocolUpgradeFuse.sol/ProtocolUpgradeFuse.dbg.json +1 -1
  183. package/artifacts/contracts/utils/ProtocolUpgradeFuse.sol/ProtocolUpgradeFuse.json +2 -2
  184. package/artifacts/contracts/utils/ProtocolUpgradeFuseRecover.sol/ProtocolUpgradeFuseRecover.dbg.json +1 -1
  185. package/artifacts/contracts/utils/ProtocolUpgradeFuseRecover.sol/ProtocolUpgradeFuseRecover.json +2 -2
  186. package/artifacts/contracts/utils/ProtocolUpgradeRecover.sol/ProtocolUpgradeRecover.dbg.json +1 -1
  187. package/artifacts/contracts/utils/ProtocolUpgradeRecover.sol/ProtocolUpgradeRecover.json +2 -2
  188. package/artifacts/contracts/utils/ProxyFactory1967.sol/ERC1967Proxy.dbg.json +1 -1
  189. package/artifacts/contracts/utils/ProxyFactory1967.sol/ProxyFactory1967.dbg.json +1 -1
  190. package/artifacts/contracts/utils/ReputationTestHelper.sol/ReputationTestHelper.dbg.json +1 -1
  191. package/artifacts/contracts/utils/ReputationTestHelper.sol/ReputationTestHelper.json +2 -2
  192. package/contracts/Interfaces.sol +26 -0
  193. package/contracts/fuseFaucet/Faucet.sol +245 -0
  194. package/contracts/governance/GoodDollarStaking.sol +23 -9
  195. package/contracts/identity/IdentityV2.sol +434 -0
  196. package/contracts/invite/InvitesV2.sol +316 -0
  197. package/contracts/ubi/UBIScheme.sol +45 -40
  198. package/contracts/utils/AdminWallet.sol +42 -11
  199. package/hardhat.config.ts +16 -2
  200. package/package.json +3 -2
  201. package/releases/deploy-settings.json +36 -1
  202. package/releases/deployment.json +93 -52
  203. package/scripts/multichain-deploy/0_proxyFactory-deploy.ts +45 -0
  204. package/scripts/multichain-deploy/{basicdao-deploy.ts → 1_basicdao-deploy.ts} +56 -52
  205. package/scripts/multichain-deploy/2_helpers-deploy.ts +143 -0
  206. package/scripts/multichain-deploy/{gdSavings-deploy.ts → 3_gdSavings-deploy.ts} +90 -76
  207. package/scripts/multichain-deploy/4_ubi-deploy.ts +121 -0
  208. package/scripts/multichain-deploy/5_gov-deploy.ts +123 -0
  209. package/scripts/multichain-deploy/helpers.ts +0 -1
  210. package/scripts/multichain-deploy/verifyEtherscan.ts +84 -0
  211. package/scripts/test/localOldDaoDeploy.ts +10 -3
  212. package/scripts/upgrades/identity-upgrade.ts +153 -0
  213. package/scripts/{multichain-deploy → upgrades}/nonubiDistribution-deploy.ts +2 -5
  214. package/test/helpers.ts +12 -8
  215. package/test/ubi/UBIScheme.test.ts +30 -30
  216. package/test/ubi/UBISchemeCycle.test.ts +9 -7
  217. package/test/utils/AdminWallet.test.ts +33 -11
  218. package/types/AdminWallet.ts +124 -113
  219. package/types/Faucet.ts +1014 -0
  220. package/types/GoodDollarStaking.ts +34 -0
  221. package/types/GoodDollarStakingMock.ts +34 -0
  222. package/types/IERC1271.ts +109 -0
  223. package/types/IGoodDollar.ts +54 -0
  224. package/types/IGovernanceStaking.ts +98 -0
  225. package/types/IIdentity.ts +75 -0
  226. package/types/IIdentityV2.ts +526 -0
  227. package/types/IdentityV2.ts +1612 -0
  228. package/types/InvitesV2.ts +933 -0
  229. package/types/UBIScheme.ts +19 -40
  230. package/types/factories/AaveStakingFactory__factory.ts +1 -1
  231. package/types/factories/AdminWallet__factory.ts +75 -55
  232. package/types/factories/BaseShareFieldV2__factory.ts +1 -1
  233. package/types/factories/BaseShareField__factory.ts +1 -1
  234. package/types/factories/ClaimersDistribution__factory.ts +1 -1
  235. package/types/factories/CompoundStakingFactory__factory.ts +1 -1
  236. package/types/factories/CompoundVotingMachine__factory.ts +1 -1
  237. package/types/factories/DAOContract__factory.ts +1 -1
  238. package/types/factories/DAOUpgradeableContract__factory.ts +1 -1
  239. package/types/factories/DistributionBridgeMock__factory.ts +1 -1
  240. package/types/factories/DistributionHelperTestHelper__factory.ts +1 -1
  241. package/types/factories/DistributionHelperTest__factory.ts +1 -1
  242. package/types/factories/DistributionHelper__factory.ts +1 -1
  243. package/types/factories/DonationsStaking__factory.ts +1 -1
  244. package/types/factories/ExchangeHelper__factory.ts +1 -1
  245. package/types/factories/Faucet__factory.ts +729 -0
  246. package/types/factories/FuseFaucet__factory.ts +1 -1
  247. package/types/factories/FuseStakingV3__factory.ts +1 -1
  248. package/types/factories/GReputation__factory.ts +1 -1
  249. package/types/factories/GoodAaveStakingV2__factory.ts +1 -1
  250. package/types/factories/GoodAaveStaking__factory.ts +1 -1
  251. package/types/factories/GoodCompoundStakingTest__factory.ts +1 -1
  252. package/types/factories/GoodCompoundStakingV2__factory.ts +1 -1
  253. package/types/factories/GoodCompoundStaking__factory.ts +1 -1
  254. package/types/factories/GoodDollarMintBurnWrapper__factory.ts +1 -1
  255. package/types/factories/GoodDollarStakingMock__factory.ts +14 -1
  256. package/types/factories/GoodDollarStaking__factory.ts +14 -1
  257. package/types/factories/GoodFundManagerTest__factory.ts +1 -1
  258. package/types/factories/GoodFundManager__factory.ts +1 -1
  259. package/types/factories/GoodMarketMaker__factory.ts +1 -1
  260. package/types/factories/GoodReserveCDai__factory.ts +1 -1
  261. package/types/factories/GovernanceStaking__factory.ts +1 -1
  262. package/types/factories/IERC1271__factory.ts +47 -0
  263. package/types/factories/IGoodDollar__factory.ts +39 -0
  264. package/types/factories/IGovernanceStaking__factory.ts +39 -0
  265. package/types/factories/IIdentityV2__factory.ts +293 -0
  266. package/types/factories/IIdentity__factory.ts +51 -0
  267. package/types/factories/IdentityV2__factory.ts +1048 -0
  268. package/types/factories/InvitesV1__factory.ts +1 -1
  269. package/types/factories/InvitesV2__factory.ts +634 -0
  270. package/types/factories/MultichainBridgeHelper__factory.ts +1 -1
  271. package/types/factories/MultichainRouterMock__factory.ts +1 -1
  272. package/types/factories/OverMintTesterRegularStake__factory.ts +1 -1
  273. package/types/factories/OverMintTester__factory.ts +1 -1
  274. package/types/factories/ProtocolUpgradeFuseRecover__factory.ts +1 -1
  275. package/types/factories/ProtocolUpgradeFuse__factory.ts +1 -1
  276. package/types/factories/ProtocolUpgradeRecover__factory.ts +1 -1
  277. package/types/factories/ProtocolUpgrade__factory.ts +1 -1
  278. package/types/factories/ReputationTestHelper__factory.ts +1 -1
  279. package/types/factories/Reputation__factory.ts +1 -1
  280. package/types/factories/StakersDistribution__factory.ts +1 -1
  281. package/types/factories/SwapHelperTest__factory.ts +1 -1
  282. package/types/factories/UBIScheme__factory.ts +14 -21
  283. package/types/factories/UniswapV2SwapHelper__factory.ts +1 -1
  284. package/types/factories/UpgradableMock2__factory.ts +1 -1
  285. package/types/factories/UpgradableMock3__factory.ts +1 -1
  286. package/types/factories/UpgradableMock4__factory.ts +1 -1
  287. package/types/factories/UpgradableMock__factory.ts +1 -1
  288. package/types/hardhat.d.ts +54 -0
  289. package/types/index.ts +12 -0
  290. package/yarn.lock +4 -4
@@ -74,8 +74,8 @@
74
74
  "type": "function"
75
75
  }
76
76
  ],
77
- "bytecode": "0x608060405234801561001057600080fd5b5060405161035c38038061035c83398101604081905261002f91610054565b600080546001600160a01b0319166001600160a01b0392909216919091179055610084565b60006020828403121561006657600080fd5b81516001600160a01b038116811461007d57600080fd5b9392505050565b6102c9806100936000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80635653eeeb1461004657806391d61f3e1461005b578063c52164c61461006e575b600080fd5b6100596100543660046101e7565b61009d565b005b6100596100693660046101e7565b610145565b600054610081906001600160a01b031681565b6040516001600160a01b03909116815260200160405180910390f35b60005b8181101561013f576000546040516340c10f1960e01b81526001600160a01b03909116906340c10f19906100da9087908790600401610228565b602060405180830381600087803b1580156100f457600080fd5b505af1158015610108573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061012c9190610241565b50806101378161026a565b9150506100a0565b50505050565b60005b8181101561013f57600054604051632770a7eb60e21b81526001600160a01b0390911690639dc29fac906101829087908790600401610228565b602060405180830381600087803b15801561019c57600080fd5b505af11580156101b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101d49190610241565b50806101df8161026a565b915050610148565b6000806000606084860312156101fc57600080fd5b83356001600160a01b038116811461021357600080fd5b95602085013595506040909401359392505050565b6001600160a01b03929092168252602082015260400190565b60006020828403121561025357600080fd5b8151801515811461026357600080fd5b9392505050565b600060001982141561028c57634e487b7160e01b600052601160045260246000fd5b506001019056fea2646970667358221220a9e79a4dd3fd1fa013d0a2232cbff569221ba33b84f992e39b9a89213eb5edac64736f6c63430008080033",
78
- "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100415760003560e01c80635653eeeb1461004657806391d61f3e1461005b578063c52164c61461006e575b600080fd5b6100596100543660046101e7565b61009d565b005b6100596100693660046101e7565b610145565b600054610081906001600160a01b031681565b6040516001600160a01b03909116815260200160405180910390f35b60005b8181101561013f576000546040516340c10f1960e01b81526001600160a01b03909116906340c10f19906100da9087908790600401610228565b602060405180830381600087803b1580156100f457600080fd5b505af1158015610108573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061012c9190610241565b50806101378161026a565b9150506100a0565b50505050565b60005b8181101561013f57600054604051632770a7eb60e21b81526001600160a01b0390911690639dc29fac906101829087908790600401610228565b602060405180830381600087803b15801561019c57600080fd5b505af11580156101b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101d49190610241565b50806101df8161026a565b915050610148565b6000806000606084860312156101fc57600080fd5b83356001600160a01b038116811461021357600080fd5b95602085013595506040909401359392505050565b6001600160a01b03929092168252602082015260400190565b60006020828403121561025357600080fd5b8151801515811461026357600080fd5b9392505050565b600060001982141561028c57634e487b7160e01b600052601160045260246000fd5b506001019056fea2646970667358221220a9e79a4dd3fd1fa013d0a2232cbff569221ba33b84f992e39b9a89213eb5edac64736f6c63430008080033",
77
+ "bytecode": "0x608060405234801561001057600080fd5b5060405161035c38038061035c83398101604081905261002f91610054565b600080546001600160a01b0319166001600160a01b0392909216919091179055610084565b60006020828403121561006657600080fd5b81516001600160a01b038116811461007d57600080fd5b9392505050565b6102c9806100936000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80635653eeeb1461004657806391d61f3e1461005b578063c52164c61461006e575b600080fd5b6100596100543660046101e7565b61009d565b005b6100596100693660046101e7565b610145565b600054610081906001600160a01b031681565b6040516001600160a01b03909116815260200160405180910390f35b60005b8181101561013f576000546040516340c10f1960e01b81526001600160a01b03909116906340c10f19906100da9087908790600401610228565b602060405180830381600087803b1580156100f457600080fd5b505af1158015610108573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061012c9190610241565b50806101378161026a565b9150506100a0565b50505050565b60005b8181101561013f57600054604051632770a7eb60e21b81526001600160a01b0390911690639dc29fac906101829087908790600401610228565b602060405180830381600087803b15801561019c57600080fd5b505af11580156101b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101d49190610241565b50806101df8161026a565b915050610148565b6000806000606084860312156101fc57600080fd5b83356001600160a01b038116811461021357600080fd5b95602085013595506040909401359392505050565b6001600160a01b03929092168252602082015260400190565b60006020828403121561025357600080fd5b8151801515811461026357600080fd5b9392505050565b600060001982141561028c57634e487b7160e01b600052601160045260246000fd5b506001019056fea2646970667358221220bf5af15fd554b440d628427d634d0ac3eb559002d7f37b7154c4e720322a9e9c64736f6c63430008080033",
78
+ "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100415760003560e01c80635653eeeb1461004657806391d61f3e1461005b578063c52164c61461006e575b600080fd5b6100596100543660046101e7565b61009d565b005b6100596100693660046101e7565b610145565b600054610081906001600160a01b031681565b6040516001600160a01b03909116815260200160405180910390f35b60005b8181101561013f576000546040516340c10f1960e01b81526001600160a01b03909116906340c10f19906100da9087908790600401610228565b602060405180830381600087803b1580156100f457600080fd5b505af1158015610108573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061012c9190610241565b50806101378161026a565b9150506100a0565b50505050565b60005b8181101561013f57600054604051632770a7eb60e21b81526001600160a01b0390911690639dc29fac906101829087908790600401610228565b602060405180830381600087803b15801561019c57600080fd5b505af11580156101b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101d49190610241565b50806101df8161026a565b915050610148565b6000806000606084860312156101fc57600080fd5b83356001600160a01b038116811461021357600080fd5b95602085013595506040909401359392505050565b6001600160a01b03929092168252602082015260400190565b60006020828403121561025357600080fd5b8151801515811461026357600080fd5b9392505050565b600060001982141561028c57634e487b7160e01b600052601160045260246000fd5b506001019056fea2646970667358221220bf5af15fd554b440d628427d634d0ac3eb559002d7f37b7154c4e720322a9e9c64736f6c63430008080033",
79
79
  "linkReferences": {},
80
80
  "deployedLinkReferences": {}
81
81
  }
@@ -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
- public
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
- //on governacnestaking anyone withdrawing from now on will get 0 GOOD, not matter how long he has been staking
469
- (bool ok, ) = dao.genericCall(
470
- nameService.getAddress("GDAO_STAKING"),
471
- abi.encodeWithSignature("setMonthlyRewards(uint256)", 0),
472
- avatar,
473
- 0
474
- );
475
- require(ok, "calling setMonthlyRewards failed");
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(