@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.
Files changed (738) hide show
  1. package/README.md +25 -0
  2. package/artifacts/abis/AaveMock.min.json +1 -1
  3. package/artifacts/abis/AaveStakingFactory.min.json +1 -1
  4. package/artifacts/abis/AdminWallet.min.json +1 -1
  5. package/artifacts/abis/AdminWalletFuse.min.json +1 -0
  6. package/artifacts/abis/BuyAndBridgeHelper.min.json +1 -0
  7. package/artifacts/abis/ClaimersDistribution.min.json +1 -1
  8. package/artifacts/abis/CompoundStakingFactory.min.json +1 -1
  9. package/artifacts/abis/CompoundVotingMachine.min.json +1 -1
  10. package/artifacts/abis/DAIMock.min.json +1 -1
  11. package/artifacts/abis/DAOUpgradeableContract.min.json +1 -1
  12. package/artifacts/abis/DecimalsMock.min.json +1 -1
  13. package/artifacts/abis/DistributionHelper.min.json +1 -1
  14. package/artifacts/abis/DistributionHelperTest.min.json +1 -1
  15. package/artifacts/abis/DistributionHelperTestHelper.min.json +1 -1
  16. package/artifacts/abis/DonationsStaking.min.json +1 -1
  17. package/artifacts/abis/ERC20Permit.min.json +1 -0
  18. package/artifacts/abis/ERC20PresetMinterPauserUpgradeable.min.json +1 -0
  19. package/artifacts/abis/ERC677.min.json +1 -0
  20. package/artifacts/abis/ERC677Receiver.min.json +1 -0
  21. package/artifacts/abis/ExchangeHelper.min.json +1 -1
  22. package/artifacts/abis/Faucet.min.json +1 -0
  23. package/artifacts/abis/FeesFormulaMock.min.json +1 -0
  24. package/artifacts/abis/FuseFaucet.min.json +1 -1
  25. package/artifacts/abis/FuseFaucetV2.min.json +1 -0
  26. package/artifacts/abis/FuseStakingV3.min.json +1 -1
  27. package/artifacts/abis/GReputation.min.json +1 -1
  28. package/artifacts/abis/GoodAaveStaking.min.json +1 -1
  29. package/artifacts/abis/GoodAaveStakingV2.min.json +1 -1
  30. package/artifacts/abis/GoodCompoundStaking.min.json +1 -1
  31. package/artifacts/abis/GoodCompoundStakingTest.min.json +1 -1
  32. package/artifacts/abis/GoodCompoundStakingV2.min.json +1 -1
  33. package/artifacts/abis/GoodDollar.min.json +1 -0
  34. package/artifacts/abis/GoodDollarMintBurnWrapper.min.json +1 -1
  35. package/artifacts/abis/GoodDollarStaking.min.json +1 -1
  36. package/artifacts/abis/GoodDollarStakingMock.min.json +1 -1
  37. package/artifacts/abis/GoodFundManager.min.json +1 -1
  38. package/artifacts/abis/GoodFundManagerTest.min.json +1 -1
  39. package/artifacts/abis/GoodMarketMaker.min.json +1 -1
  40. package/artifacts/abis/GoodReserveCDai.min.json +1 -1
  41. package/artifacts/abis/GovernanceStaking.min.json +1 -1
  42. package/artifacts/abis/IFeesFormula.min.json +1 -0
  43. package/artifacts/abis/IGoodDollar.min.json +1 -1
  44. package/artifacts/abis/IGoodDollarCustom.min.json +1 -0
  45. package/artifacts/abis/IGovernanceStaking.min.json +1 -0
  46. package/artifacts/abis/IIdentity.min.json +1 -1
  47. package/artifacts/abis/IIdentityV2.min.json +1 -0
  48. package/artifacts/abis/IStakingUpgrade.min.json +1 -0
  49. package/artifacts/abis/ISuperGoodDollar.min.json +1 -0
  50. package/artifacts/abis/IdentityMock.min.json +1 -0
  51. package/artifacts/abis/IdentityV2.min.json +1 -0
  52. package/artifacts/abis/InvitesFuseV2.min.json +1 -0
  53. package/artifacts/abis/InvitesV1.min.json +1 -1
  54. package/artifacts/abis/InvitesV2.min.json +1 -0
  55. package/artifacts/abis/LendingPoolMock.min.json +1 -1
  56. package/artifacts/abis/NameService.min.json +1 -1
  57. package/artifacts/abis/PayableMock.min.json +1 -0
  58. package/artifacts/abis/Proxy.min.json +1 -0
  59. package/artifacts/abis/Reputation.min.json +1 -1
  60. package/artifacts/abis/SelfApprove.min.json +1 -0
  61. package/artifacts/abis/SimpleStaking.min.json +1 -1
  62. package/artifacts/abis/SimpleStakingV2.min.json +1 -1
  63. package/artifacts/abis/SixteenDecimalsTokenMock.min.json +1 -1
  64. package/artifacts/abis/StakersDistribution.min.json +1 -1
  65. package/artifacts/abis/SuperGoodDollar.min.json +1 -0
  66. package/artifacts/abis/SuperToken.min.json +1 -0
  67. package/artifacts/abis/SuperfluidToken.min.json +1 -0
  68. package/artifacts/abis/TwentyDecimalsTokenMock.min.json +1 -1
  69. package/artifacts/abis/UBIScheme.min.json +1 -1
  70. package/artifacts/abis/USDCMock.min.json +1 -1
  71. package/artifacts/abis/UUPSProxiable.min.json +1 -0
  72. package/artifacts/abis/UUPSProxy.min.json +1 -0
  73. package/artifacts/abis/UUPSUtils.min.json +1 -0
  74. package/artifacts/abis/UpgradableMock.min.json +1 -1
  75. package/artifacts/abis/UpgradableMock2.min.json +1 -1
  76. package/artifacts/abis/UpgradableMock3.min.json +1 -1
  77. package/artifacts/abis/UpgradableMock4.min.json +1 -1
  78. package/artifacts/abis/cBATMock.min.json +1 -1
  79. package/artifacts/abis/cDAILowWorthMock.min.json +1 -1
  80. package/artifacts/abis/cDAIMock.min.json +1 -1
  81. package/artifacts/abis/cDAINonMintableMock.min.json +1 -1
  82. package/artifacts/abis/cDecimalsMock.min.json +1 -1
  83. package/artifacts/abis/cSDTMock.min.json +1 -1
  84. package/artifacts/abis/cUSDCMock.min.json +1 -1
  85. package/artifacts/contracts/DAOStackInterfaces.sol/Avatar.dbg.json +1 -1
  86. package/artifacts/contracts/DAOStackInterfaces.sol/Controller.dbg.json +1 -1
  87. package/artifacts/contracts/DAOStackInterfaces.sol/GlobalConstraintInterface.dbg.json +1 -1
  88. package/artifacts/contracts/DAOStackInterfaces.sol/IntVoteInterface.dbg.json +1 -1
  89. package/artifacts/contracts/DAOStackInterfaces.sol/ReputationInterface.dbg.json +1 -1
  90. package/artifacts/contracts/DAOStackInterfaces.sol/SchemeRegistrar.dbg.json +1 -1
  91. package/artifacts/contracts/Interfaces.sol/AggregatorV3Interface.dbg.json +1 -1
  92. package/artifacts/contracts/Interfaces.sol/ERC20.dbg.json +1 -1
  93. package/artifacts/contracts/Interfaces.sol/IAaveIncentivesController.dbg.json +1 -1
  94. package/artifacts/contracts/Interfaces.sol/IAdminWallet.dbg.json +1 -1
  95. package/artifacts/contracts/Interfaces.sol/IDonationStaking.dbg.json +1 -1
  96. package/artifacts/contracts/Interfaces.sol/IERC2917.dbg.json +1 -1
  97. package/artifacts/contracts/Interfaces.sol/IFirstClaimPool.dbg.json +1 -1
  98. package/artifacts/contracts/Interfaces.sol/IGoodDollar.dbg.json +1 -1
  99. package/artifacts/contracts/Interfaces.sol/IGoodDollar.json +184 -0
  100. package/artifacts/contracts/Interfaces.sol/IGoodStaking.dbg.json +1 -1
  101. package/artifacts/contracts/Interfaces.sol/IHasRouter.dbg.json +1 -1
  102. package/artifacts/contracts/Interfaces.sol/IIdentity.dbg.json +1 -1
  103. package/artifacts/contracts/Interfaces.sol/IIdentity.json +70 -0
  104. package/artifacts/contracts/Interfaces.sol/IIdentityV2.dbg.json +4 -0
  105. package/artifacts/contracts/Interfaces.sol/IIdentityV2.json +300 -0
  106. package/artifacts/contracts/Interfaces.sol/ILendingPool.dbg.json +1 -1
  107. package/artifacts/contracts/Interfaces.sol/IMultichainRouter.dbg.json +1 -1
  108. package/artifacts/contracts/Interfaces.sol/INameService.dbg.json +1 -1
  109. package/artifacts/contracts/Interfaces.sol/IUBIScheme.dbg.json +1 -1
  110. package/artifacts/contracts/Interfaces.sol/ProxyAdmin.dbg.json +1 -1
  111. package/artifacts/contracts/Interfaces.sol/Reserve.dbg.json +1 -1
  112. package/artifacts/contracts/Interfaces.sol/Staking.dbg.json +1 -1
  113. package/artifacts/contracts/Interfaces.sol/Uniswap.dbg.json +1 -1
  114. package/artifacts/contracts/Interfaces.sol/UniswapFactory.dbg.json +1 -1
  115. package/artifacts/contracts/Interfaces.sol/UniswapPair.dbg.json +1 -1
  116. package/artifacts/contracts/Interfaces.sol/cERC20.dbg.json +1 -1
  117. package/artifacts/contracts/fuseFaucet/Faucet.sol/Faucet.dbg.json +4 -0
  118. package/artifacts/contracts/fuseFaucet/Faucet.sol/Faucet.json +736 -0
  119. package/artifacts/contracts/fuseFaucet/FuseFaucet.sol/FuseFaucet.dbg.json +1 -1
  120. package/artifacts/contracts/fuseFaucet/FuseFaucet.sol/FuseFaucet.json +15 -2
  121. package/artifacts/contracts/fuseFaucet/FuseFaucetV2.sol/FuseFaucetV2.dbg.json +4 -0
  122. package/artifacts/contracts/fuseFaucet/FuseFaucetV2.sol/FuseFaucetV2.json +480 -0
  123. package/artifacts/contracts/governance/ClaimersDistribution.sol/ClaimersDistribution.dbg.json +1 -1
  124. package/artifacts/contracts/governance/ClaimersDistribution.sol/ClaimersDistribution.json +28 -2
  125. package/artifacts/contracts/governance/CompoundVotingMachine.sol/CompoundVotingMachine.dbg.json +1 -1
  126. package/artifacts/contracts/governance/CompoundVotingMachine.sol/CompoundVotingMachine.json +28 -2
  127. package/artifacts/contracts/governance/GReputation.sol/GReputation.dbg.json +1 -1
  128. package/artifacts/contracts/governance/GReputation.sol/GReputation.json +78 -3
  129. package/artifacts/contracts/governance/GoodDollarStaking.sol/GoodDollarStaking.dbg.json +1 -1
  130. package/artifacts/contracts/governance/GoodDollarStaking.sol/GoodDollarStaking.json +71 -2
  131. package/artifacts/contracts/governance/GoodDollarStaking.sol/IGovernanceStaking.dbg.json +4 -0
  132. package/artifacts/contracts/governance/GoodDollarStaking.sol/IGovernanceStaking.json +24 -0
  133. package/artifacts/contracts/governance/GoodDollarStaking.sol/IStakingUpgrade.dbg.json +4 -0
  134. package/artifacts/contracts/governance/GoodDollarStaking.sol/IStakingUpgrade.json +35 -0
  135. package/artifacts/contracts/governance/GoodDollarStaking.sol/RewardsMinter.dbg.json +1 -1
  136. package/artifacts/contracts/governance/GovernanceStaking.sol/GovernanceStaking.dbg.json +1 -1
  137. package/artifacts/contracts/governance/GovernanceStaking.sol/GovernanceStaking.json +31 -5
  138. package/artifacts/contracts/governance/MultiBaseGovernanceShareField.sol/MultiBaseGovernanceShareField.dbg.json +1 -1
  139. package/artifacts/contracts/governance/Reputation.sol/Reputation.dbg.json +1 -1
  140. package/artifacts/contracts/governance/Reputation.sol/Reputation.json +28 -2
  141. package/artifacts/contracts/governance/StakersDistribution.sol/StakersDistribution.dbg.json +1 -1
  142. package/artifacts/contracts/governance/StakersDistribution.sol/StakersDistribution.json +28 -2
  143. package/artifacts/contracts/identity/IdentityV2.sol/IdentityV2.dbg.json +4 -0
  144. package/artifacts/contracts/identity/IdentityV2.sol/IdentityV2.json +1081 -0
  145. package/artifacts/contracts/invite/InvitesFuseV2.sol/InvitesFuseV2.dbg.json +4 -0
  146. package/artifacts/contracts/invite/InvitesFuseV2.sol/InvitesFuseV2.json +505 -0
  147. package/artifacts/contracts/invite/InvitesV1.sol/InvitesV1.dbg.json +1 -1
  148. package/artifacts/contracts/invite/InvitesV1.sol/InvitesV1.json +15 -2
  149. package/artifacts/contracts/invite/InvitesV2.sol/InvitesV2.dbg.json +4 -0
  150. package/artifacts/contracts/invite/InvitesV2.sol/InvitesV2.json +635 -0
  151. package/artifacts/contracts/mocks/AaveMock.sol/AaveMock.dbg.json +1 -1
  152. package/artifacts/contracts/mocks/AaveMock.sol/AaveMock.json +18 -5
  153. package/artifacts/contracts/mocks/AaveUSDMockOracle.sol/AaveUSDMockOracle.dbg.json +1 -1
  154. package/artifacts/contracts/mocks/AaveUSDMockOracle.sol/AaveUSDMockOracle.json +2 -2
  155. package/artifacts/contracts/mocks/BatUSDMockOracle.sol/BatUSDMockOracle.dbg.json +1 -1
  156. package/artifacts/contracts/mocks/BatUSDMockOracle.sol/BatUSDMockOracle.json +2 -2
  157. package/artifacts/contracts/mocks/CompUsdMockOracle.sol/CompUSDMockOracle.dbg.json +1 -1
  158. package/artifacts/contracts/mocks/CompUsdMockOracle.sol/CompUSDMockOracle.json +2 -2
  159. package/artifacts/contracts/mocks/DAIMock.sol/DAIMock.dbg.json +1 -1
  160. package/artifacts/contracts/mocks/DAIMock.sol/DAIMock.json +18 -5
  161. package/artifacts/contracts/mocks/DaiEthPriceMockOracle.sol/DaiEthPriceMockOracle.dbg.json +1 -1
  162. package/artifacts/contracts/mocks/DaiEthPriceMockOracle.sol/DaiEthPriceMockOracle.json +2 -2
  163. package/artifacts/contracts/mocks/DecimalsMock.sol/DecimalsMock.dbg.json +1 -1
  164. package/artifacts/contracts/mocks/DecimalsMock.sol/DecimalsMock.json +18 -5
  165. package/artifacts/contracts/mocks/DistributionBridgeMock.sol/DistributionBridgeMock.dbg.json +1 -1
  166. package/artifacts/contracts/mocks/DistributionBridgeMock.sol/DistributionBridgeMock.json +2 -2
  167. package/artifacts/contracts/mocks/DistributionHelperTest.sol/DistributionHelperTest.dbg.json +1 -1
  168. package/artifacts/contracts/mocks/DistributionHelperTest.sol/DistributionHelperTest.json +28 -2
  169. package/artifacts/contracts/mocks/DistributionHelperTest.sol/DistributionHelperTestHelper.dbg.json +1 -1
  170. package/artifacts/contracts/mocks/DistributionHelperTest.sol/DistributionHelperTestHelper.json +28 -2
  171. package/artifacts/contracts/mocks/EthUSDMockOracle.sol/EthUSDMockOracle.dbg.json +1 -1
  172. package/artifacts/contracts/mocks/EthUSDMockOracle.sol/EthUSDMockOracle.json +2 -2
  173. package/artifacts/contracts/mocks/FeesFormularMock.sol/FeesFormulaMock.dbg.json +4 -0
  174. package/artifacts/contracts/mocks/FeesFormularMock.sol/FeesFormulaMock.json +69 -0
  175. package/artifacts/contracts/mocks/GasPriceMockOracle.sol/GasPriceMockOracle.dbg.json +1 -1
  176. package/artifacts/contracts/mocks/GasPriceMockOracle.sol/GasPriceMockOracle.json +2 -2
  177. package/artifacts/contracts/mocks/GoodCompoundStakingTest.sol/GoodCompoundStakingTest.dbg.json +1 -1
  178. package/artifacts/contracts/mocks/GoodCompoundStakingTest.sol/GoodCompoundStakingTest.json +22 -9
  179. package/artifacts/contracts/mocks/GoodDollarStakingMock.sol/GoodDollarStakingMock.dbg.json +1 -1
  180. package/artifacts/contracts/mocks/GoodDollarStakingMock.sol/GoodDollarStakingMock.json +95 -2
  181. package/artifacts/contracts/mocks/GoodFundManagerTest.sol/GoodFundManagerTest.dbg.json +1 -1
  182. package/artifacts/contracts/mocks/GoodFundManagerTest.sol/GoodFundManagerTest.json +28 -2
  183. package/artifacts/contracts/mocks/IdentityMock.sol/IdentityMock.dbg.json +4 -0
  184. package/artifacts/contracts/mocks/IdentityMock.sol/IdentityMock.json +277 -0
  185. package/artifacts/contracts/mocks/IncentiveControllerMock.sol/IncentiveControllerMock.dbg.json +1 -1
  186. package/artifacts/contracts/mocks/IncentiveControllerMock.sol/IncentiveControllerMock.json +2 -2
  187. package/artifacts/contracts/mocks/LendingPoolMock.sol/LendingPoolMock.dbg.json +1 -1
  188. package/artifacts/contracts/mocks/LendingPoolMock.sol/LendingPoolMock.json +18 -5
  189. package/artifacts/contracts/mocks/MultichainRouterMock.sol/IWrapper.dbg.json +1 -1
  190. package/artifacts/contracts/mocks/MultichainRouterMock.sol/MultichainRouterMock.dbg.json +1 -1
  191. package/artifacts/contracts/mocks/MultichainRouterMock.sol/MultichainRouterMock.json +2 -2
  192. package/artifacts/contracts/mocks/OverMintTester.sol/IGoodDollarStakingTest.dbg.json +1 -1
  193. package/artifacts/contracts/mocks/OverMintTester.sol/OverMintTester.dbg.json +1 -1
  194. package/artifacts/contracts/mocks/OverMintTester.sol/OverMintTester.json +2 -2
  195. package/artifacts/contracts/mocks/OverMintTesterRegularStake.sol/OverMintTesterRegularStake.dbg.json +1 -1
  196. package/artifacts/contracts/mocks/OverMintTesterRegularStake.sol/OverMintTesterRegularStake.json +2 -2
  197. package/artifacts/contracts/mocks/PayableMock.sol/PayableMock.dbg.json +4 -0
  198. package/artifacts/contracts/mocks/PayableMock.sol/PayableMock.json +18 -0
  199. package/artifacts/contracts/mocks/SixteenDecimalsTokenMock.sol/SixteenDecimalsTokenMock.dbg.json +1 -1
  200. package/artifacts/contracts/mocks/SixteenDecimalsTokenMock.sol/SixteenDecimalsTokenMock.json +18 -5
  201. package/artifacts/contracts/mocks/StakingMockFixedAPY.sol/StakingMockFixedAPY.dbg.json +1 -1
  202. package/artifacts/contracts/mocks/StakingMockFixedAPY.sol/StakingMockFixedAPY.json +2 -2
  203. package/artifacts/contracts/mocks/SwapHelperTest.sol/SwapHelperTest.dbg.json +1 -1
  204. package/artifacts/contracts/mocks/SwapHelperTest.sol/SwapHelperTest.json +2 -2
  205. package/artifacts/contracts/mocks/TwentyDecimalsTokenMock.sol/TwentyDecimalsTokenMock.dbg.json +1 -1
  206. package/artifacts/contracts/mocks/TwentyDecimalsTokenMock.sol/TwentyDecimalsTokenMock.json +18 -5
  207. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock.dbg.json +1 -1
  208. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock.json +28 -2
  209. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock2.dbg.json +1 -1
  210. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock2.json +28 -2
  211. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock3.dbg.json +1 -1
  212. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock3.json +28 -2
  213. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock4.dbg.json +1 -1
  214. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock4.json +28 -2
  215. package/artifacts/contracts/mocks/UsdcMock.sol/USDCMock.dbg.json +1 -1
  216. package/artifacts/contracts/mocks/UsdcMock.sol/USDCMock.json +18 -5
  217. package/artifacts/contracts/mocks/cBATMock.sol/cBATMock.dbg.json +1 -1
  218. package/artifacts/contracts/mocks/cBATMock.sol/cBATMock.json +18 -5
  219. package/artifacts/contracts/mocks/cDAILowWorthMock.sol/cDAILowWorthMock.dbg.json +1 -1
  220. package/artifacts/contracts/mocks/cDAILowWorthMock.sol/cDAILowWorthMock.json +18 -5
  221. package/artifacts/contracts/mocks/cDAIMock.sol/cDAIMock.dbg.json +1 -1
  222. package/artifacts/contracts/mocks/cDAIMock.sol/cDAIMock.json +18 -5
  223. package/artifacts/contracts/mocks/cDAINonMintableMock.sol/cDAINonMintableMock.dbg.json +1 -1
  224. package/artifacts/contracts/mocks/cDAINonMintableMock.sol/cDAINonMintableMock.json +18 -5
  225. package/artifacts/contracts/mocks/cDecimalsMock.sol/cDecimalsMock.dbg.json +1 -1
  226. package/artifacts/contracts/mocks/cDecimalsMock.sol/cDecimalsMock.json +18 -5
  227. package/artifacts/contracts/mocks/cSDTMock.sol/cSDTMock.dbg.json +1 -1
  228. package/artifacts/contracts/mocks/cSDTMock.sol/cSDTMock.json +18 -5
  229. package/artifacts/contracts/mocks/cUSDCMock.sol/cUSDCMock.dbg.json +1 -1
  230. package/artifacts/contracts/mocks/cUSDCMock.sol/cUSDCMock.json +18 -5
  231. package/artifacts/contracts/reserve/DistributionHelper.sol/DistributionHelper.dbg.json +1 -1
  232. package/artifacts/contracts/reserve/DistributionHelper.sol/DistributionHelper.json +28 -2
  233. package/artifacts/contracts/reserve/ExchangeHelper.sol/ExchangeHelper.dbg.json +1 -1
  234. package/artifacts/contracts/reserve/ExchangeHelper.sol/ExchangeHelper.json +28 -2
  235. package/artifacts/contracts/reserve/GoodMarketMaker.sol/GoodMarketMaker.dbg.json +1 -1
  236. package/artifacts/contracts/reserve/GoodMarketMaker.sol/GoodMarketMaker.json +28 -2
  237. package/artifacts/contracts/reserve/GoodReserveCDai.sol/ContributionCalc.dbg.json +1 -1
  238. package/artifacts/contracts/reserve/GoodReserveCDai.sol/GoodReserveCDai.dbg.json +1 -1
  239. package/artifacts/contracts/reserve/GoodReserveCDai.sol/GoodReserveCDai.json +31 -5
  240. package/artifacts/contracts/staking/BaseShareField.sol/BaseShareField.dbg.json +1 -1
  241. package/artifacts/contracts/staking/BaseShareField.sol/BaseShareField.json +2 -2
  242. package/artifacts/contracts/staking/BaseShareFieldV2.sol/BaseShareFieldV2.dbg.json +1 -1
  243. package/artifacts/contracts/staking/BaseShareFieldV2.sol/BaseShareFieldV2.json +2 -2
  244. package/artifacts/contracts/staking/DonationsStaking.sol/DonationsStaking.dbg.json +1 -1
  245. package/artifacts/contracts/staking/DonationsStaking.sol/DonationsStaking.json +32 -6
  246. package/artifacts/contracts/staking/FuseStakingV3.sol/FuseStakingV3.dbg.json +1 -1
  247. package/artifacts/contracts/staking/FuseStakingV3.sol/FuseStakingV3.json +15 -2
  248. package/artifacts/contracts/staking/FuseStakingV3.sol/IConsensus.dbg.json +1 -1
  249. package/artifacts/contracts/staking/FuseStakingV3.sol/PegSwap.dbg.json +1 -1
  250. package/artifacts/contracts/staking/GoodFundManager.sol/GoodFundManager.dbg.json +1 -1
  251. package/artifacts/contracts/staking/GoodFundManager.sol/GoodFundManager.json +28 -2
  252. package/artifacts/contracts/staking/SimpleStaking.sol/SimpleStaking.dbg.json +1 -1
  253. package/artifacts/contracts/staking/SimpleStaking.sol/SimpleStaking.json +16 -3
  254. package/artifacts/contracts/staking/SimpleStakingV2.sol/SimpleStakingV2.dbg.json +1 -1
  255. package/artifacts/contracts/staking/SimpleStakingV2.sol/SimpleStakingV2.json +16 -3
  256. package/artifacts/contracts/staking/UniswapV2SwapHelper.sol/UniswapV2SwapHelper.dbg.json +1 -1
  257. package/artifacts/contracts/staking/UniswapV2SwapHelper.sol/UniswapV2SwapHelper.json +2 -2
  258. package/artifacts/contracts/staking/aave/AaveStakingFactory.sol/AaveStakingFactory.dbg.json +1 -1
  259. package/artifacts/contracts/staking/aave/AaveStakingFactory.sol/AaveStakingFactory.json +3 -3
  260. package/artifacts/contracts/staking/aave/GoodAaveStaking.sol/GoodAaveStaking.dbg.json +1 -1
  261. package/artifacts/contracts/staking/aave/GoodAaveStaking.sol/GoodAaveStaking.json +20 -7
  262. package/artifacts/contracts/staking/aave/GoodAaveStakingV2.sol/GoodAaveStakingV2.dbg.json +1 -1
  263. package/artifacts/contracts/staking/aave/GoodAaveStakingV2.sol/GoodAaveStakingV2.json +20 -7
  264. package/artifacts/contracts/staking/compound/CompoundStakingFactory.sol/CompoundStakingFactory.dbg.json +1 -1
  265. package/artifacts/contracts/staking/compound/CompoundStakingFactory.sol/CompoundStakingFactory.json +4 -4
  266. package/artifacts/contracts/staking/compound/GoodCompoundStaking.sol/GoodCompoundStaking.dbg.json +1 -1
  267. package/artifacts/contracts/staking/compound/GoodCompoundStaking.sol/GoodCompoundStaking.json +22 -9
  268. package/artifacts/contracts/staking/compound/GoodCompoundStakingV2.sol/GoodCompoundStakingV2.dbg.json +1 -1
  269. package/artifacts/contracts/staking/compound/GoodCompoundStakingV2.sol/GoodCompoundStakingV2.json +22 -9
  270. package/artifacts/contracts/staking/utils/Math64X64.sol/Math64x64.dbg.json +1 -1
  271. package/artifacts/contracts/staking/utils/Math64X64.sol/Math64x64.json +2 -2
  272. package/artifacts/contracts/staking/utils/StakingRewardsFixedAPY.sol/StakingRewardsFixedAPY.dbg.json +1 -1
  273. package/artifacts/contracts/token/ERC20PresetMinterPauserUpgradeable.sol/ERC20PresetMinterPauserUpgradeable.dbg.json +4 -0
  274. package/artifacts/contracts/token/ERC20PresetMinterPauserUpgradeable.sol/ERC20PresetMinterPauserUpgradeable.json +768 -0
  275. package/artifacts/contracts/token/ERC677.sol/ERC677.dbg.json +4 -0
  276. package/artifacts/contracts/token/ERC677.sol/ERC677.json +66 -0
  277. package/artifacts/contracts/token/ERC677.sol/ERC677Receiver.dbg.json +4 -0
  278. package/artifacts/contracts/token/ERC677.sol/ERC677Receiver.json +40 -0
  279. package/artifacts/contracts/token/FeesFormula.sol/IFeesFormula.dbg.json +4 -0
  280. package/artifacts/contracts/token/FeesFormula.sol/IFeesFormula.json +45 -0
  281. package/artifacts/contracts/token/GoodDollar.sol/GoodDollar.dbg.json +4 -0
  282. package/artifacts/contracts/token/GoodDollar.sol/GoodDollar.json +1206 -0
  283. package/artifacts/contracts/token/superfluid/ERC20Permit.sol/ERC20Permit.dbg.json +4 -0
  284. package/artifacts/contracts/token/superfluid/ERC20Permit.sol/ERC20Permit.json +99 -0
  285. package/artifacts/contracts/token/superfluid/ERC20Permit.sol/SelfApprove.dbg.json +4 -0
  286. package/artifacts/contracts/token/superfluid/ERC20Permit.sol/SelfApprove.json +34 -0
  287. package/artifacts/contracts/token/superfluid/ISuperGoodDollar.sol/IGoodDollarCustom.dbg.json +4 -0
  288. package/artifacts/contracts/token/superfluid/ISuperGoodDollar.sol/IGoodDollarCustom.json +355 -0
  289. package/artifacts/contracts/token/superfluid/ISuperGoodDollar.sol/ISuperGoodDollar.dbg.json +4 -0
  290. package/artifacts/contracts/token/superfluid/ISuperGoodDollar.sol/ISuperGoodDollar.json +2132 -0
  291. package/artifacts/contracts/token/superfluid/SuperGoodDollar.sol/SuperGoodDollar.dbg.json +4 -0
  292. package/artifacts/contracts/token/superfluid/SuperGoodDollar.sol/SuperGoodDollar.json +2627 -0
  293. package/artifacts/contracts/token/superfluid/SuperToken.sol/SuperToken.dbg.json +4 -0
  294. package/artifacts/contracts/token/superfluid/SuperToken.sol/SuperToken.json +1759 -0
  295. package/artifacts/contracts/token/superfluid/SuperfluidToken.sol/SuperfluidToken.dbg.json +4 -0
  296. package/artifacts/contracts/token/superfluid/SuperfluidToken.sol/SuperfluidToken.json +682 -0
  297. package/artifacts/contracts/token/superfluid/UUPSProxiable.sol/UUPSProxiable.dbg.json +4 -0
  298. package/artifacts/contracts/token/superfluid/UUPSProxiable.sol/UUPSProxiable.json +89 -0
  299. package/artifacts/contracts/token/superfluid/UUPSProxy.sol/Proxy.dbg.json +4 -0
  300. package/artifacts/contracts/token/superfluid/UUPSProxy.sol/Proxy.json +19 -0
  301. package/artifacts/contracts/token/superfluid/UUPSProxy.sol/UUPSProxy.dbg.json +4 -0
  302. package/artifacts/contracts/token/superfluid/UUPSProxy.sol/UUPSProxy.json +32 -0
  303. package/artifacts/contracts/token/superfluid/UUPSProxy.sol/UUPSUtils.dbg.json +4 -0
  304. package/artifacts/contracts/token/superfluid/UUPSProxy.sol/UUPSUtils.json +10 -0
  305. package/artifacts/contracts/ubi/UBIScheme.sol/UBIScheme.dbg.json +1 -1
  306. package/artifacts/contracts/ubi/UBIScheme.sol/UBIScheme.json +41 -22
  307. package/artifacts/contracts/utils/AdminWallet.sol/AdminWallet.dbg.json +1 -1
  308. package/artifacts/contracts/utils/AdminWallet.sol/AdminWallet.json +94 -48
  309. package/artifacts/contracts/utils/AdminWalletFuse.sol/AdminWalletFuse.dbg.json +4 -0
  310. package/artifacts/contracts/utils/AdminWalletFuse.sol/AdminWalletFuse.json +830 -0
  311. package/artifacts/contracts/utils/BancorFormula.sol/BancorFormula.dbg.json +1 -1
  312. package/artifacts/contracts/utils/BancorFormula.sol/BancorFormula.json +2 -2
  313. package/artifacts/contracts/utils/BulkProof.sol/BulkProof.dbg.json +1 -1
  314. package/artifacts/contracts/utils/BulkProof.sol/BulkProof.json +2 -2
  315. package/artifacts/contracts/utils/BuyAndBridgeHelper.sol/BuyAndBridgeHelper.dbg.json +4 -0
  316. package/artifacts/contracts/utils/BuyAndBridgeHelper.sol/BuyAndBridgeHelper.json +184 -0
  317. package/artifacts/contracts/utils/DAOContract.sol/DAOContract.dbg.json +1 -1
  318. package/artifacts/contracts/utils/DAOContract.sol/DAOContract.json +2 -2
  319. package/artifacts/contracts/utils/DAOUpgradeableContract.sol/DAOUpgradeableContract.dbg.json +1 -1
  320. package/artifacts/contracts/utils/DAOUpgradeableContract.sol/DAOUpgradeableContract.json +28 -2
  321. package/artifacts/contracts/utils/DSMath.sol/DSMath.dbg.json +1 -1
  322. package/artifacts/contracts/utils/DSMath.sol/DSMath.json +2 -2
  323. package/artifacts/contracts/utils/DataTypes.sol/DataTypes.dbg.json +1 -1
  324. package/artifacts/contracts/utils/DataTypes.sol/DataTypes.json +2 -2
  325. package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/GoodDollarMintBurnWrapper.dbg.json +1 -1
  326. package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/GoodDollarMintBurnWrapper.json +35 -2
  327. package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/IRouter.dbg.json +1 -1
  328. package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/PausableControl.dbg.json +1 -1
  329. package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/TokenOperation.dbg.json +1 -1
  330. package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/TokenOperation.json +2 -2
  331. package/artifacts/contracts/utils/MultiCall.sol/Multicall.dbg.json +1 -1
  332. package/artifacts/contracts/utils/MultiCall.sol/Multicall.json +2 -2
  333. package/artifacts/contracts/utils/MultichainBridgeHelper.sol/MultichainBridgeHelper.dbg.json +1 -1
  334. package/artifacts/contracts/utils/MultichainBridgeHelper.sol/MultichainBridgeHelper.json +2 -2
  335. package/artifacts/contracts/utils/NameService.sol/NameService.dbg.json +1 -1
  336. package/artifacts/contracts/utils/NameService.sol/NameService.json +28 -2
  337. package/artifacts/contracts/utils/ProtocolUpgrade.sol/OldMarketMaker.dbg.json +1 -1
  338. package/artifacts/contracts/utils/ProtocolUpgrade.sol/ProtocolUpgrade.dbg.json +1 -1
  339. package/artifacts/contracts/utils/ProtocolUpgrade.sol/ProtocolUpgrade.json +2 -2
  340. package/artifacts/contracts/utils/ProtocolUpgradeFuse.sol/ProtocolUpgradeFuse.dbg.json +1 -1
  341. package/artifacts/contracts/utils/ProtocolUpgradeFuse.sol/ProtocolUpgradeFuse.json +2 -2
  342. package/artifacts/contracts/utils/ProtocolUpgradeFuseRecover.sol/ProtocolUpgradeFuseRecover.dbg.json +1 -1
  343. package/artifacts/contracts/utils/ProtocolUpgradeFuseRecover.sol/ProtocolUpgradeFuseRecover.json +2 -2
  344. package/artifacts/contracts/utils/ProtocolUpgradeRecover.sol/ProtocolUpgradeRecover.dbg.json +1 -1
  345. package/artifacts/contracts/utils/ProtocolUpgradeRecover.sol/ProtocolUpgradeRecover.json +2 -2
  346. package/artifacts/contracts/utils/ProxyFactory1967.sol/ERC1967Proxy.dbg.json +1 -1
  347. package/artifacts/contracts/utils/ProxyFactory1967.sol/ERC1967Proxy.json +2 -2
  348. package/artifacts/contracts/utils/ProxyFactory1967.sol/ProxyFactory1967.dbg.json +1 -1
  349. package/artifacts/contracts/utils/ProxyFactory1967.sol/ProxyFactory1967.json +2 -2
  350. package/artifacts/contracts/utils/ReputationTestHelper.sol/ReputationTestHelper.dbg.json +1 -1
  351. package/artifacts/contracts/utils/ReputationTestHelper.sol/ReputationTestHelper.json +2 -2
  352. package/contracts/Interfaces.sol +57 -3
  353. package/contracts/fuseFaucet/Faucet.sol +258 -0
  354. package/contracts/fuseFaucet/FuseFaucet.sol +1 -2
  355. package/contracts/fuseFaucet/FuseFaucetV2.sol +256 -0
  356. package/contracts/governance/GReputation.sol +104 -16
  357. package/contracts/governance/GoodDollarStaking.sol +139 -53
  358. package/contracts/governance/GovernanceStaking.sol +2 -2
  359. package/contracts/identity/IdentityV2.sol +559 -0
  360. package/contracts/invite/InvitesFuseV2.sol +337 -0
  361. package/contracts/invite/InvitesV1.sol +6 -24
  362. package/contracts/invite/InvitesV2.sol +345 -0
  363. package/contracts/mocks/AaveMock.sol +1 -1
  364. package/contracts/mocks/DAIMock.sol +1 -1
  365. package/contracts/mocks/DecimalsMock.sol +1 -1
  366. package/contracts/mocks/FeesFormularMock.sol +21 -0
  367. package/contracts/mocks/GoodDollarStakingMock.sol +16 -0
  368. package/contracts/mocks/GoodFundManagerTest.sol +1 -1
  369. package/contracts/mocks/IdentityMock.sol +58 -0
  370. package/contracts/mocks/LendingPoolMock.sol +1 -1
  371. package/contracts/mocks/PayableMock.sol +3 -0
  372. package/contracts/mocks/SixteenDecimalsTokenMock.sol +1 -6
  373. package/contracts/mocks/TwentyDecimalsTokenMock.sol +1 -6
  374. package/contracts/mocks/UpgradableMocks.sol +5 -3
  375. package/contracts/mocks/UsdcMock.sol +1 -6
  376. package/contracts/mocks/cBATMock.sol +7 -12
  377. package/contracts/mocks/cDAILowWorthMock.sol +8 -12
  378. package/contracts/mocks/cDAIMock.sol +1 -1
  379. package/contracts/mocks/cDAINonMintableMock.sol +7 -12
  380. package/contracts/mocks/cDecimalsMock.sol +1 -1
  381. package/contracts/mocks/cSDTMock.sol +3 -3
  382. package/contracts/mocks/cUSDCMock.sol +5 -5
  383. package/contracts/reserve/DistributionHelper.sol +1 -1
  384. package/contracts/reserve/GoodReserveCDai.sol +1 -1
  385. package/contracts/token/ERC20PresetMinterPauserUpgradeable.sol +140 -0
  386. package/contracts/token/ERC677.sol +74 -0
  387. package/contracts/token/FeesFormula.sol +10 -0
  388. package/contracts/token/GoodDollar.sol +243 -0
  389. package/contracts/token/superfluid/ERC20Permit.sol +101 -0
  390. package/contracts/token/superfluid/ISuperGoodDollar.sol +84 -0
  391. package/contracts/token/superfluid/SuperGoodDollar.sol +401 -0
  392. package/contracts/token/superfluid/SuperToken.sol +714 -0
  393. package/contracts/token/superfluid/SuperfluidToken.sol +403 -0
  394. package/contracts/token/superfluid/UUPSProxiable.sol +55 -0
  395. package/contracts/token/superfluid/UUPSProxy.sol +153 -0
  396. package/contracts/ubi/UBIScheme.sol +88 -68
  397. package/contracts/utils/AdminWallet.sol +42 -11
  398. package/contracts/utils/AdminWalletFuse.sol +271 -0
  399. package/contracts/utils/BuyAndBridgeHelper.sol +108 -0
  400. package/contracts/utils/GoodDollarMintBurnWrapper.sol +19 -1
  401. package/contracts/utils/ProxyFactory1967.sol +1 -1
  402. package/hardhat.config.ts +29 -6
  403. package/package.json +11 -7
  404. package/releases/deploy-settings.json +58 -4
  405. package/releases/deployment.json +65 -231
  406. package/scripts/deployFullDAO.ts +39 -19
  407. package/scripts/gdx/gdxAirdropCalculation.ts +10 -11
  408. package/scripts/governance/airdropCalculationRecover.ts +43 -33
  409. package/scripts/governance/airdropCalculationSorted.ts +438 -0
  410. package/scripts/governance/goodCheckpointSorted.ts +377 -0
  411. package/scripts/multichain-deploy/0_proxyFactory-deploy.ts +100 -0
  412. package/scripts/multichain-deploy/{basicdao-deploy.ts → 1_basicdao-deploy.ts} +123 -93
  413. package/scripts/multichain-deploy/2_helpers-deploy.ts +151 -0
  414. package/scripts/multichain-deploy/{gdSavings-deploy.ts → 3_gdSavings-deploy.ts} +106 -76
  415. package/scripts/multichain-deploy/4_ubi-deploy.ts +147 -0
  416. package/scripts/multichain-deploy/5_gov-deploy.ts +147 -0
  417. package/scripts/multichain-deploy/fulldeploy.sh +26 -0
  418. package/scripts/multichain-deploy/helpers.ts +149 -111
  419. package/scripts/multichain-deploy/verifyEtherscan.ts +197 -0
  420. package/scripts/test/localOldDaoDeploy.ts +10 -3
  421. package/scripts/upgradeToV3/v3-fix.ts +120 -0
  422. package/scripts/upgradeToV3/v3-upgrade.ts +219 -0
  423. package/scripts/upgrades/celo-defi-ubi-deploy.ts +165 -0
  424. package/scripts/upgrades/identity-upgrade.ts +109 -0
  425. package/scripts/upgrades/transferDaoToGuardians.ts +80 -0
  426. package/test/faucet/Faucet.test.ts +157 -0
  427. package/test/{FuseFaucet.test.ts → faucet/FuseFaucet.test.ts} +26 -31
  428. package/test/governance/ClaimersDistribution.test.ts +58 -6
  429. package/test/governance/CompoundVotingMachine.castvote.test.ts +3 -3
  430. package/test/governance/CompoundVotingMachine.crossblockchain.ts +3 -2
  431. package/test/governance/CompoundVotingMachine.daoscheme.ts +8 -10
  432. package/test/governance/CompoundVotingMachine.delegate.test.ts +4 -5
  433. package/test/governance/CompoundVotingMachine.guardian.test.ts +5 -11
  434. package/test/governance/CompoundVotingMachine.propose.test.ts +3 -2
  435. package/test/governance/CompoundVotingMachine.state.test.ts +3 -2
  436. package/test/governance/GReputation.test.ts +78 -32
  437. package/test/governance/GReputation.v2merkle.test.ts +186 -0
  438. package/test/governance/GoodDollarStaking.gd.test.ts +83 -1
  439. package/test/governance/GoodDollarStaking.good.test.ts +2 -1
  440. package/test/governance/GovernanceStaking.test.ts +4 -4
  441. package/test/governance/Reputation.test.ts +2 -1
  442. package/test/governance/StakersDistribution.test.ts +26 -13
  443. package/test/helpers.ts +145 -52
  444. package/test/identity/IdentityV2.test.ts +539 -0
  445. package/test/{InvitesV1.test.ts → invite/InvitesV1.test.ts} +10 -5
  446. package/test/invite/InvitesV2.test.ts +328 -0
  447. package/test/reserve/DistributionHelper.test.ts +2 -1
  448. package/test/reserve/GoodMarketMaker.test.ts +20 -19
  449. package/test/reserve/GoodReserveCDai.cap.test.ts +8 -1
  450. package/test/reserve/GoodReserveCDai.distribution.test.ts +2 -1
  451. package/test/reserve/GoodReserveCDai.gdx.test.ts +2 -2
  452. package/test/reserve/GoodReserveCDai.pause.test.ts +2 -1
  453. package/test/reserve/GoodReserveCDai.test.ts +14 -38
  454. package/test/reserve/GoodReserveCDai.uniswap.test.ts +21 -19
  455. package/test/staking/CompoundStakingFactory.test.ts +8 -5
  456. package/test/staking/DifferentStakingTokens.test.ts +3 -2
  457. package/test/staking/DonationsStaking.test.ts +33 -24
  458. package/test/staking/FuseStaking.test.ts +9 -9
  459. package/test/staking/GoodAaveStakingFactory.test.ts +36 -31
  460. package/test/staking/SimpleDAIStaking.test.ts +13 -19
  461. package/test/staking/StakingRewards.test.ts +19 -16
  462. package/test/staking/StakingRewardsFixedAPY.test.ts +2 -1
  463. package/test/staking/SwapHelper.test.ts +20 -17
  464. package/test/staking/UsdcAaveStaking.test.ts +36 -33
  465. package/test/token/GoodDollar.test.ts +445 -0
  466. package/test/token/SuperGoodDollar.test.ts +422 -0
  467. package/test/ubi/UBIScheme.e2e.test.ts +6 -5
  468. package/test/ubi/UBIScheme.test.ts +37 -36
  469. package/test/ubi/UBISchemeCycle.test.ts +11 -8
  470. package/test/utils/AdminWallet.test.ts +34 -11
  471. package/test/utils/BuyAndBridgeHelper.test.ts +249 -0
  472. package/test/utils/DAOUpgradeableContract.test.ts +3 -2
  473. package/test/utils/GoodDollarMintBurnWrapper.test.ts +3 -2
  474. package/test/utils/NameService.test.ts +37 -21
  475. package/test/utils/ProtocolUpgrade.test.ts +1 -1
  476. package/test/utils/ProxyFactory.test.ts +12 -10
  477. package/truffle-config.js +18 -18
  478. package/types/AaveMock.ts +24 -15
  479. package/types/AccessControlEnumerableUpgradeable.ts +9 -0
  480. package/types/AccessControlUpgradeable.ts +9 -0
  481. package/types/AdminWallet.ts +149 -110
  482. package/types/AdminWalletFuse.ts +1268 -0
  483. package/types/BuyAndBridgeHelper.ts +279 -0
  484. package/types/CBATMock.ts +24 -15
  485. package/types/CDAILowWorthMock.ts +24 -15
  486. package/types/CDAIMock.ts +24 -15
  487. package/types/CDAINonMintableMock.ts +24 -15
  488. package/types/CDecimalsMock.ts +24 -15
  489. package/types/CSDTMock.ts +24 -15
  490. package/types/CUSDCMock.ts +24 -15
  491. package/types/ClaimersDistribution.ts +28 -0
  492. package/types/CompoundVotingMachine.ts +28 -0
  493. package/types/ContextUpgradeable.ts +77 -0
  494. package/types/DAIMock.ts +24 -15
  495. package/types/DAOUpgradeableContract.ts +28 -0
  496. package/types/DecimalsMock.ts +24 -15
  497. package/types/DistributionHelper.ts +28 -0
  498. package/types/DistributionHelperTest.ts +28 -0
  499. package/types/DistributionHelperTestHelper.ts +28 -0
  500. package/types/DonationsStaking.ts +28 -0
  501. package/types/EIP712Upgradeable.ts +77 -0
  502. package/types/ERC165Upgradeable.ts +13 -2
  503. package/types/ERC1967UpgradeUpgradeable.ts +9 -0
  504. package/types/ERC20BurnableUpgradeable.ts +24 -15
  505. package/types/ERC20PausableUpgradeable.ts +24 -15
  506. package/types/ERC20Permit.ts +186 -0
  507. package/types/ERC20PermitUpgradeable.ts +531 -0
  508. package/types/ERC20PresetMinterPauserUpgradeable.ts +129 -16
  509. package/types/ERC20Upgradeable.ts +24 -15
  510. package/types/ERC20WithTokenInfo.ts +339 -0
  511. package/types/ERC677.ts +131 -0
  512. package/types/ERC677Receiver.ts +115 -0
  513. package/types/EventsEmitter.ts +88 -0
  514. package/types/ExchangeHelper.ts +28 -0
  515. package/types/Faucet.ts +1107 -0
  516. package/types/FeesFormulaMock.ts +130 -0
  517. package/types/FuseFaucet.ts +9 -0
  518. package/types/FuseFaucetV2.ts +729 -0
  519. package/types/FuseStakingV3.ts +9 -0
  520. package/types/GReputation.ts +103 -4
  521. package/types/GoodAaveStaking.ts +24 -15
  522. package/types/GoodAaveStakingV2.ts +24 -15
  523. package/types/GoodCompoundStaking.ts +24 -15
  524. package/types/GoodCompoundStakingTest.ts +24 -15
  525. package/types/GoodCompoundStakingV2.ts +24 -15
  526. package/types/GoodDollar.ts +1733 -0
  527. package/types/GoodDollarMintBurnWrapper.ts +55 -0
  528. package/types/GoodDollarStaking.ts +92 -0
  529. package/types/GoodDollarStakingMock.ts +131 -0
  530. package/types/GoodFundManager.ts +28 -0
  531. package/types/GoodFundManagerTest.ts +28 -0
  532. package/types/GoodMarketMaker.ts +28 -0
  533. package/types/GoodReserveCDai.ts +43 -15
  534. package/types/GovernanceStaking.ts +43 -15
  535. package/types/IERC1271Upgradeable.ts +109 -0
  536. package/types/IERC1820Registry.ts +398 -0
  537. package/types/IERC1822ProxiableUpgradeable.ts +90 -0
  538. package/types/IERC20MetadataUpgradeable.ts +15 -15
  539. package/types/IERC20Permit.ts +175 -0
  540. package/types/IERC20PermitUpgradeable.ts +176 -0
  541. package/types/IERC20Upgradeable.ts +15 -15
  542. package/types/IERC777.ts +586 -0
  543. package/types/IERC777Recipient.ts +130 -0
  544. package/types/IERC777Sender.ts +130 -0
  545. package/types/IFeesFormula.ts +111 -0
  546. package/types/IGoodDollar.ts +304 -7
  547. package/types/IGoodDollarCustom.ts +618 -0
  548. package/types/IGovernanceStaking.ts +98 -0
  549. package/types/IIdentity.ts +106 -0
  550. package/types/IIdentityV2.ts +557 -0
  551. package/types/IStakingUpgrade.ts +110 -0
  552. package/types/ISuperAgreement.ts +151 -0
  553. package/types/ISuperApp.ts +410 -0
  554. package/types/ISuperGoodDollar.ts +3029 -0
  555. package/types/ISuperToken.ts +2326 -0
  556. package/types/ISuperTokenFactory.ts +415 -0
  557. package/types/ISuperfluid.ts +1565 -0
  558. package/types/ISuperfluidGovernance.ts +455 -0
  559. package/types/ISuperfluidToken.ts +951 -0
  560. package/types/IdentityMock.ts +493 -0
  561. package/types/IdentityV2.ts +1743 -0
  562. package/types/Initializable.ts +77 -0
  563. package/types/InvitesFuseV2.ts +806 -0
  564. package/types/InvitesV1.ts +9 -0
  565. package/types/InvitesV2.ts +1010 -0
  566. package/types/LendingPoolMock.ts +24 -15
  567. package/types/NameService.ts +28 -0
  568. package/types/OwnableUpgradeable.ts +9 -0
  569. package/types/PausableUpgradeable.ts +9 -0
  570. package/types/PayableMock.ts +92 -0
  571. package/types/ReentrancyGuardUpgradeable.ts +78 -0
  572. package/types/Reputation.ts +28 -0
  573. package/types/SelfApprove.ts +115 -0
  574. package/types/SimpleStaking.ts +24 -15
  575. package/types/SimpleStakingV2.ts +24 -15
  576. package/types/SixteenDecimalsTokenMock.ts +24 -15
  577. package/types/StakersDistribution.ts +28 -0
  578. package/types/SuperGoodDollar.ts +3662 -0
  579. package/types/SuperToken.ts +2434 -0
  580. package/types/SuperfluidToken.ts +951 -0
  581. package/types/TokenInfo.ts +109 -0
  582. package/types/TwentyDecimalsTokenMock.ts +24 -15
  583. package/types/UBIScheme.ts +47 -40
  584. package/types/USDCMock.ts +24 -15
  585. package/types/UUPSProxiable.ts +183 -0
  586. package/types/UUPSProxy.ts +105 -0
  587. package/types/UUPSUpgradeable.ts +28 -0
  588. package/types/UpgradableMock.ts +28 -0
  589. package/types/UpgradableMock2.ts +28 -0
  590. package/types/UpgradableMock3.ts +28 -0
  591. package/types/UpgradableMock4.ts +28 -0
  592. package/types/factories/AaveMock__factory.ts +17 -4
  593. package/types/factories/AaveStakingFactory__factory.ts +1 -1
  594. package/types/factories/AaveUSDMockOracle__factory.ts +1 -1
  595. package/types/factories/AccessControlEnumerableUpgradeable__factory.ts +13 -0
  596. package/types/factories/AccessControlUpgradeable__factory.ts +13 -0
  597. package/types/factories/AdminWalletFuse__factory.ts +881 -0
  598. package/types/factories/AdminWallet__factory.ts +93 -47
  599. package/types/factories/BancorFormula__factory.ts +1 -1
  600. package/types/factories/BaseShareFieldV2__factory.ts +1 -1
  601. package/types/factories/BaseShareField__factory.ts +1 -1
  602. package/types/factories/BatUSDMockOracle__factory.ts +1 -1
  603. package/types/factories/BuyAndBridgeHelper__factory.ts +237 -0
  604. package/types/factories/CBATMock__factory.ts +17 -4
  605. package/types/factories/CDAILowWorthMock__factory.ts +17 -4
  606. package/types/factories/CDAIMock__factory.ts +17 -4
  607. package/types/factories/CDAINonMintableMock__factory.ts +17 -4
  608. package/types/factories/CDecimalsMock__factory.ts +17 -4
  609. package/types/factories/CSDTMock__factory.ts +17 -4
  610. package/types/factories/CUSDCMock__factory.ts +17 -4
  611. package/types/factories/ClaimersDistribution__factory.ts +27 -1
  612. package/types/factories/CompUSDMockOracle__factory.ts +1 -1
  613. package/types/factories/CompoundStakingFactory__factory.ts +1 -1
  614. package/types/factories/CompoundVotingMachine__factory.ts +27 -1
  615. package/types/factories/ContextUpgradeable__factory.ts +39 -0
  616. package/types/factories/DAIMock__factory.ts +17 -4
  617. package/types/factories/DAOContract__factory.ts +1 -1
  618. package/types/factories/DAOUpgradeableContract__factory.ts +27 -1
  619. package/types/factories/DaiEthPriceMockOracle__factory.ts +1 -1
  620. package/types/factories/DecimalsMock__factory.ts +17 -4
  621. package/types/factories/DistributionBridgeMock__factory.ts +1 -1
  622. package/types/factories/DistributionHelperTestHelper__factory.ts +27 -1
  623. package/types/factories/DistributionHelperTest__factory.ts +27 -1
  624. package/types/factories/DistributionHelper__factory.ts +27 -1
  625. package/types/factories/DonationsStaking__factory.ts +27 -1
  626. package/types/factories/EIP712Upgradeable__factory.ts +39 -0
  627. package/types/factories/ERC165Upgradeable__factory.ts +13 -0
  628. package/types/factories/ERC1967Proxy__factory.ts +1 -1
  629. package/types/factories/ERC1967UpgradeUpgradeable__factory.ts +13 -0
  630. package/types/factories/ERC20BurnableUpgradeable__factory.ts +16 -3
  631. package/types/factories/ERC20PausableUpgradeable__factory.ts +16 -3
  632. package/types/factories/ERC20PermitUpgradeable__factory.ts +388 -0
  633. package/types/factories/ERC20Permit__factory.ts +111 -0
  634. package/types/factories/ERC20PresetMinterPauserUpgradeable__factory.ts +99 -5
  635. package/types/factories/ERC20Upgradeable__factory.ts +17 -4
  636. package/types/factories/ERC20WithTokenInfo__factory.ts +248 -0
  637. package/types/factories/ERC677Receiver__factory.ts +55 -0
  638. package/types/factories/ERC677__factory.ts +75 -0
  639. package/types/factories/EthUSDMockOracle__factory.ts +1 -1
  640. package/types/factories/EventsEmitter__factory.ts +84 -0
  641. package/types/factories/ExchangeHelper__factory.ts +27 -1
  642. package/types/factories/Faucet__factory.ts +781 -0
  643. package/types/factories/FeesFormulaMock__factory.ts +132 -0
  644. package/types/factories/FuseFaucetV2__factory.ts +528 -0
  645. package/types/factories/FuseFaucet__factory.ts +14 -1
  646. package/types/factories/FuseStakingV3__factory.ts +14 -1
  647. package/types/factories/GReputation__factory.ts +77 -2
  648. package/types/factories/GasPriceMockOracle__factory.ts +1 -1
  649. package/types/factories/GoodAaveStakingV2__factory.ts +17 -4
  650. package/types/factories/GoodAaveStaking__factory.ts +17 -4
  651. package/types/factories/GoodCompoundStakingTest__factory.ts +17 -4
  652. package/types/factories/GoodCompoundStakingV2__factory.ts +17 -4
  653. package/types/factories/GoodCompoundStaking__factory.ts +17 -4
  654. package/types/factories/GoodDollarMintBurnWrapper__factory.ts +34 -1
  655. package/types/factories/GoodDollarStakingMock__factory.ts +94 -1
  656. package/types/factories/GoodDollarStaking__factory.ts +70 -1
  657. package/types/factories/GoodDollar__factory.ts +1254 -0
  658. package/types/factories/GoodFundManagerTest__factory.ts +27 -1
  659. package/types/factories/GoodFundManager__factory.ts +27 -1
  660. package/types/factories/GoodMarketMaker__factory.ts +27 -1
  661. package/types/factories/GoodReserveCDai__factory.ts +30 -4
  662. package/types/factories/GovernanceStaking__factory.ts +30 -4
  663. package/types/factories/IERC1271Upgradeable__factory.ts +50 -0
  664. package/types/factories/IERC1820Registry__factory.ts +239 -0
  665. package/types/factories/IERC1822ProxiableUpgradeable__factory.ts +43 -0
  666. package/types/factories/IERC20MetadataUpgradeable__factory.ts +3 -3
  667. package/types/factories/IERC20PermitUpgradeable__factory.ts +105 -0
  668. package/types/factories/IERC20Permit__factory.ts +98 -0
  669. package/types/factories/IERC20Upgradeable__factory.ts +3 -3
  670. package/types/factories/IERC777Recipient__factory.ts +64 -0
  671. package/types/factories/IERC777Sender__factory.ts +61 -0
  672. package/types/factories/IERC777__factory.ts +414 -0
  673. package/types/factories/IFeesFormula__factory.ts +57 -0
  674. package/types/factories/IGoodDollarCustom__factory.ts +370 -0
  675. package/types/factories/IGoodDollar__factory.ts +184 -0
  676. package/types/factories/IGovernanceStaking__factory.ts +39 -0
  677. package/types/factories/IIdentityV2__factory.ts +312 -0
  678. package/types/factories/IIdentity__factory.ts +70 -0
  679. package/types/factories/IStakingUpgrade__factory.ts +50 -0
  680. package/types/factories/ISuperAgreement__factory.ts +78 -0
  681. package/types/factories/ISuperApp__factory.ts +272 -0
  682. package/types/factories/ISuperGoodDollar__factory.ts +2147 -0
  683. package/types/factories/ISuperTokenFactory__factory.ts +271 -0
  684. package/types/factories/ISuperToken__factory.ts +1682 -0
  685. package/types/factories/ISuperfluidGovernance__factory.ts +264 -0
  686. package/types/factories/ISuperfluidToken__factory.ts +697 -0
  687. package/types/factories/ISuperfluid__factory.ts +1143 -0
  688. package/types/factories/IdentityMock__factory.ts +327 -0
  689. package/types/factories/IdentityV2__factory.ts +1129 -0
  690. package/types/factories/IncentiveControllerMock__factory.ts +1 -1
  691. package/types/factories/Initializable__factory.ts +36 -0
  692. package/types/factories/InvitesFuseV2__factory.ts +553 -0
  693. package/types/factories/InvitesV1__factory.ts +14 -1
  694. package/types/factories/InvitesV2__factory.ts +683 -0
  695. package/types/factories/LendingPoolMock__factory.ts +17 -4
  696. package/types/factories/Multicall__factory.ts +1 -1
  697. package/types/factories/MultichainBridgeHelper__factory.ts +1 -1
  698. package/types/factories/MultichainRouterMock__factory.ts +1 -1
  699. package/types/factories/NameService__factory.ts +27 -1
  700. package/types/factories/OverMintTesterRegularStake__factory.ts +1 -1
  701. package/types/factories/OverMintTester__factory.ts +1 -1
  702. package/types/factories/OwnableUpgradeable__factory.ts +13 -0
  703. package/types/factories/PausableUpgradeable__factory.ts +13 -0
  704. package/types/factories/PayableMock__factory.ts +66 -0
  705. package/types/factories/ProtocolUpgradeFuseRecover__factory.ts +1 -1
  706. package/types/factories/ProtocolUpgradeFuse__factory.ts +1 -1
  707. package/types/factories/ProtocolUpgradeRecover__factory.ts +1 -1
  708. package/types/factories/ProtocolUpgrade__factory.ts +1 -1
  709. package/types/factories/ProxyFactory1967__factory.ts +1 -1
  710. package/types/factories/ReentrancyGuardUpgradeable__factory.ts +43 -0
  711. package/types/factories/ReputationTestHelper__factory.ts +1 -1
  712. package/types/factories/Reputation__factory.ts +27 -1
  713. package/types/factories/SelfApprove__factory.ts +46 -0
  714. package/types/factories/SimpleStakingV2__factory.ts +16 -3
  715. package/types/factories/SimpleStaking__factory.ts +16 -3
  716. package/types/factories/SixteenDecimalsTokenMock__factory.ts +17 -4
  717. package/types/factories/StakersDistribution__factory.ts +27 -1
  718. package/types/factories/StakingMockFixedAPY__factory.ts +1 -1
  719. package/types/factories/SuperGoodDollar__factory.ts +2680 -0
  720. package/types/factories/SuperToken__factory.ts +1809 -0
  721. package/types/factories/SuperfluidToken__factory.ts +697 -0
  722. package/types/factories/SwapHelperTest__factory.ts +1 -1
  723. package/types/factories/TokenInfo__factory.ts +62 -0
  724. package/types/factories/TwentyDecimalsTokenMock__factory.ts +17 -4
  725. package/types/factories/UBIScheme__factory.ts +40 -21
  726. package/types/factories/USDCMock__factory.ts +17 -4
  727. package/types/factories/UUPSProxiable__factory.ts +101 -0
  728. package/types/factories/UUPSProxy__factory.ts +80 -0
  729. package/types/factories/UUPSUpgradeable__factory.ts +26 -0
  730. package/types/factories/UniswapV2SwapHelper__factory.ts +1 -1
  731. package/types/factories/UpgradableMock2__factory.ts +27 -1
  732. package/types/factories/UpgradableMock3__factory.ts +27 -1
  733. package/types/factories/UpgradableMock4__factory.ts +27 -1
  734. package/types/factories/UpgradableMock__factory.ts +27 -1
  735. package/types/hardhat.d.ts +459 -0
  736. package/types/index.ts +98 -0
  737. package/yarn.lock +1251 -306
  738. package/scripts/multichain-deploy/nonubiDistribution-deploy.ts +0 -170
@@ -8,6 +8,8 @@ import "../utils/NameService.sol";
8
8
  import "../Interfaces.sol";
9
9
  import "../governance/ClaimersDistribution.sol";
10
10
 
11
+ // import "hardhat/console.sol";
12
+
11
13
  /* @title Dynamic amount-per-day UBI scheme allowing claim once a day
12
14
  */
13
15
  contract UBIScheme is DAOUpgradeableContract {
@@ -71,7 +73,8 @@ contract UBIScheme is DAOUpgradeableContract {
71
73
  //dont use first claim, and give ubi as usual
72
74
  bool public useFirstClaimPool;
73
75
 
74
- uint256 public defaultDailyUbi;
76
+ //minimum amount of users to divide the pool for, renamed from defaultDailyUbi
77
+ uint256 public minActiveUsers;
75
78
 
76
79
  // A pool of GD to give to activated users,
77
80
  // since they will enter the UBI pool
@@ -99,14 +102,14 @@ contract UBIScheme is DAOUpgradeableContract {
99
102
  // Total claims per user stat
100
103
  mapping(address => uint256) public totalClaimsPerUser;
101
104
 
105
+ bool public paused;
106
+
102
107
  // Emits when a withdraw has been succeded
103
108
  event WithdrawFromDao(uint256 prevBalance, uint256 newBalance);
104
109
 
105
110
  // Emits when a user is activated
106
111
  event ActivatedUser(address indexed account);
107
112
 
108
- bool public paused;
109
-
110
113
  // Emits when a fish has been succeded
111
114
  event InactiveUserFished(
112
115
  address indexed caller,
@@ -154,11 +157,11 @@ contract UBIScheme is DAOUpgradeableContract {
154
157
  firstClaimPool = _firstClaimPool;
155
158
  shouldWithdrawFromDAO = false;
156
159
  cycleLength = 90; //90 days
157
- iterationGasLimit = 150000;
160
+ iterationGasLimit = 185000; //token transfer cost under superfluid
158
161
  periodStart = (block.timestamp / (1 days)) * 1 days + 12 hours; //set start time to GMT noon
159
162
  startOfCycle = periodStart;
160
- useFirstClaimPool = true;
161
- defaultDailyUbi = 5000;
163
+ useFirstClaimPool = address(_firstClaimPool) != address(0);
164
+ minActiveUsers = 1000;
162
165
  }
163
166
 
164
167
  function setUseFirstClaimPool(bool _use) public {
@@ -268,8 +271,10 @@ contract UBIScheme is DAOUpgradeableContract {
268
271
  currentDayInCycle() >= currentCycleLength || shouldStartEarlyCycle
269
272
  ) //start of cycle or first time
270
273
  {
271
- if (shouldWithdrawFromDAO) _withdrawFromDao();
272
- currentBalance = token.balanceOf(address(this));
274
+ if (shouldWithdrawFromDAO) {
275
+ _withdrawFromDao();
276
+ currentBalance = token.balanceOf(address(this));
277
+ }
273
278
  dailyCyclePool = currentBalance / cycleLength;
274
279
  currentCycleLength = cycleLength;
275
280
  startOfCycle = (block.timestamp / (1 hours)) * 1 hours; //start at a round hour
@@ -285,17 +290,20 @@ contract UBIScheme is DAOUpgradeableContract {
285
290
  Funds storage funds = dailyUBIHistory[currentDay];
286
291
  funds.hasWithdrawn = shouldWithdrawFromDAO;
287
292
  funds.openAmount = currentBalance;
288
- if (activeUsersCount > 0) {
289
- dailyUbi = dailyCyclePool / activeUsersCount;
290
- } else if (useFirstClaimPool == false) {
291
- dailyUbi = defaultDailyUbi;
292
- }
293
+ dailyUbi = dailyCyclePool / max(activeUsersCount, minActiveUsers);
294
+ //update minActiveUsers as claimers grow
295
+ minActiveUsers = max(activeUsersCount / 2, minActiveUsers);
296
+
293
297
  emit UBICalculated(currentDay, dailyUbi, block.number);
294
298
  }
295
299
 
296
300
  return dailyUbi;
297
301
  }
298
302
 
303
+ function max(uint256 a, uint256 b) private pure returns (uint256) {
304
+ return a >= b ? a : b;
305
+ }
306
+
299
307
  /**
300
308
  *@dev Sets the currentDay variable to amount of days
301
309
  * since start of contract.
@@ -356,12 +364,14 @@ contract UBIScheme is DAOUpgradeableContract {
356
364
  * and emits an event in case of claimed.
357
365
  * In case that `isFirstTime` is true, it awards the user.
358
366
  * @param _account the account which recieves the funds
367
+ * @param _target the recipient of funds
359
368
  * @param _amount the amount to transfer
360
369
  * @param _isClaimed true for claimed
361
370
  * @param _isFirstTime true for new user or fished user
362
371
  */
363
372
  function _transferTokens(
364
373
  address _account,
374
+ address _target,
365
375
  uint256 _amount,
366
376
  bool _isClaimed,
367
377
  bool _isFirstTime
@@ -377,7 +387,7 @@ contract UBIScheme is DAOUpgradeableContract {
377
387
 
378
388
  // awards a new user or a fished user
379
389
  if (_isFirstTime) {
380
- uint256 awardAmount = firstClaimPool.awardUser(_account);
390
+ uint256 awardAmount = firstClaimPool.awardUser(_target);
381
391
  claimDay[currentDay].claimAmount += awardAmount;
382
392
  emit UBIClaimed(_account, awardAmount);
383
393
  } else {
@@ -386,7 +396,7 @@ contract UBIScheme is DAOUpgradeableContract {
386
396
  emit UBIClaimed(_account, _amount);
387
397
  }
388
398
  IGoodDollar token = nativeToken();
389
- require(token.transfer(_account, _amount), "claim transfer failed");
399
+ require(token.transfer(_target, _amount), "claim transfer failed");
390
400
  }
391
401
  }
392
402
 
@@ -403,11 +413,9 @@ contract UBIScheme is DAOUpgradeableContract {
403
413
  {
404
414
  _dailyCyclePool = currentBalance / cycleLength;
405
415
  }
406
- if (activeUsersCount > 0) {
407
- _dailyUbi = _dailyCyclePool / activeUsersCount;
408
- } else if (useFirstClaimPool == false) {
409
- _dailyUbi = defaultDailyUbi;
410
- }
416
+
417
+ _dailyUbi = _dailyCyclePool / max(activeUsersCount, minActiveUsers);
418
+
411
419
  return _dailyUbi;
412
420
  }
413
421
 
@@ -447,9 +455,10 @@ contract UBIScheme is DAOUpgradeableContract {
447
455
  * calculats the amount the account can claims, and transfers the amount to the account.
448
456
  * Emits the address of account and amount claimed.
449
457
  * @param _account The claimer account
458
+ * @param _target recipient of funds
450
459
  * @return A bool indicating if UBI was claimed
451
460
  */
452
- function _claim(address _account) internal returns (bool) {
461
+ function _claim(address _account, address _target) internal returns (bool) {
453
462
  // calculats the formula up today ie on day 0 there are no active users, on day 1 any user
454
463
  // (new or active) will trigger the calculation with the active users count of the day before
455
464
  // and so on. the new or inactive users that will become active today, will not take into account
@@ -462,16 +471,16 @@ contract UBIScheme is DAOUpgradeableContract {
462
471
  !fishedUsersAddresses[_account] &&
463
472
  !hasClaimed(_account)
464
473
  ) {
465
- _transferTokens(_account, newDistribution, true, false);
474
+ _transferTokens(_account, _target, newDistribution, true, false);
466
475
  return true;
467
476
  } else if (!isNotNewUser(_account) || fishedUsersAddresses[_account]) {
468
477
  // a unregistered or fished user
469
478
  activeUsersCount += 1;
470
479
  fishedUsersAddresses[_account] = false;
471
480
  if (useFirstClaimPool) {
472
- _transferTokens(_account, 0, false, true);
481
+ _transferTokens(_account, _target, 0, false, true);
473
482
  } else {
474
- _transferTokens(_account, newDistribution, true, false);
483
+ _transferTokens(_account, _target, newDistribution, true, false);
475
484
  }
476
485
  emit ActivatedUser(_account);
477
486
  return true;
@@ -486,18 +495,39 @@ contract UBIScheme is DAOUpgradeableContract {
486
495
  * @return A bool indicating if UBI was claimed
487
496
  */
488
497
  function claim() public requireStarted returns (bool) {
489
- require(
490
- IIdentity(nameService.getAddress("IDENTITY")).isWhitelisted(msg.sender),
491
- "UBIScheme: not whitelisted"
492
- );
493
- bool didClaim = _claim(msg.sender);
498
+ address whitelistedRoot = IIdentityV2(nameService.getAddress("IDENTITY"))
499
+ .getWhitelistedRoot(msg.sender);
500
+ require(whitelistedRoot != address(0), "UBIScheme: not whitelisted");
501
+ bool didClaim = _claim(whitelistedRoot, msg.sender);
494
502
  address claimerDistribution = nameService.getAddress("GDAO_CLAIMERS");
495
503
  if (didClaim && claimerDistribution != address(0)) {
496
- ClaimersDistribution(claimerDistribution).updateClaim(msg.sender);
504
+ ClaimersDistribution(claimerDistribution).updateClaim(whitelistedRoot);
497
505
  }
498
506
  return didClaim;
499
507
  }
500
508
 
509
+ function _canFish(address _account) internal view returns (bool) {
510
+ return
511
+ isNotNewUser(_account) &&
512
+ !isActiveUser(_account) &&
513
+ !fishedUsersAddresses[_account];
514
+ }
515
+
516
+ function _fish(address _account, bool _withTransfer) internal returns (bool) {
517
+ fishedUsersAddresses[_account] = true; // marking the account as fished so it won't refish
518
+
519
+ // making sure that the calculation will be with the correct number of active users in case
520
+ // that the fisher is the first to make the calculation today
521
+ uint256 newDistribution = distributionFormula();
522
+ if (activeUsersCount > 0) {
523
+ activeUsersCount -= 1;
524
+ }
525
+ if (_withTransfer)
526
+ _transferTokens(msg.sender, msg.sender, newDistribution, false, false);
527
+ emit InactiveUserFished(msg.sender, _account, newDistribution);
528
+ return true;
529
+ }
530
+
501
531
  /**
502
532
  * @dev In order to update users from active to inactive, we give out incentive to people
503
533
  * to update the status of inactive users, this action is called "Fishing". Anyone can
@@ -511,22 +541,9 @@ contract UBIScheme is DAOUpgradeableContract {
511
541
  function fish(address _account) public requireStarted returns (bool) {
512
542
  // checking if the account exists. that's been done because that
513
543
  // will prevent trying to fish non-existence accounts in the system
514
- require(
515
- isNotNewUser(_account) && !isActiveUser(_account),
516
- "is not an inactive user"
517
- );
518
- require(!fishedUsersAddresses[_account], "already fished");
519
- fishedUsersAddresses[_account] = true; // marking the account as fished so it won't refish
544
+ require(_canFish(_account), "can't fish");
520
545
 
521
- // making sure that the calculation will be with the correct number of active users in case
522
- // that the fisher is the first to make the calculation today
523
- uint256 newDistribution = distributionFormula();
524
- if (activeUsersCount > 0) {
525
- activeUsersCount -= 1;
526
- }
527
- _transferTokens(msg.sender, newDistribution, false, false);
528
- emit InactiveUserFished(msg.sender, _account, newDistribution);
529
- return true;
546
+ return _fish(_account, true);
530
547
  }
531
548
 
532
549
  /**
@@ -540,21 +557,23 @@ contract UBIScheme is DAOUpgradeableContract {
540
557
  requireStarted
541
558
  returns (uint256)
542
559
  {
543
- for (uint256 i = 0; i < _accounts.length; ++i) {
560
+ uint256 i;
561
+ uint256 bounty;
562
+
563
+ for (; i < _accounts.length; ++i) {
544
564
  if (gasleft() < iterationGasLimit) {
545
- emit TotalFished(i);
546
- return i;
565
+ break;
547
566
  }
548
- if (
549
- isNotNewUser(_accounts[i]) &&
550
- !isActiveUser(_accounts[i]) &&
551
- !fishedUsersAddresses[_accounts[i]]
552
- ) {
553
- require(fish(_accounts[i]), "fish has failed");
567
+ if (_canFish(_accounts[i])) {
568
+ require(_fish(_accounts[i], false), "fish has failed");
569
+ bounty += dailyUbi;
554
570
  }
555
571
  }
556
- emit TotalFished(_accounts.length);
557
- return _accounts.length;
572
+ if (bounty > 0) {
573
+ _transferTokens(msg.sender, msg.sender, bounty, false, false);
574
+ }
575
+ emit TotalFished(i);
576
+ return i;
558
577
  }
559
578
 
560
579
  /**
@@ -572,18 +591,19 @@ contract UBIScheme is DAOUpgradeableContract {
572
591
  paused = _pause;
573
592
  }
574
593
 
575
- function upgrade() public {
576
- _onlyAvatar();
577
- paused = true;
578
- activeUsersCount = 50000; //estimated
579
- dailyUbi = 0; //required so distributionformula will trigger
580
- cycleLength = 30;
581
- currentCycleLength = 0; //this will trigger a new cycle calculation in distribution formula
582
- startOfCycle = block.timestamp - 91 days; //this will trigger a new calculation in distributionFormula
583
- periodStart = 1646136000;
584
- distributionFormula();
585
- emit CycleLengthSet(cycleLength);
586
- }
594
+ // function upgrade() public {
595
+ // _onlyAvatar();
596
+ // paused = true;
597
+ // activeUsersCount = 50000; //estimated
598
+ // dailyUbi = 0; //required so distributionformula will trigger
599
+ // cycleLength = 30;
600
+ // currentCycleLength = 0; //this will trigger a new cycle calculation in distribution formula
601
+ // startOfCycle = block.timestamp - 91 days; //this will trigger a new calculation in distributionFormula
602
+ // periodStart = 1646136000;
603
+ // maxDailyUBI = 50000;
604
+ // distributionFormula();
605
+ // emit CycleLengthSet(cycleLength);
606
+ // }
587
607
 
588
608
  function setActiveUserCount(uint256 _activeUserCount) public {
589
609
  _onlyAvatar();
@@ -4,10 +4,10 @@ pragma solidity >=0.8.0;
4
4
 
5
5
  import "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol";
6
6
  import "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol";
7
- import "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol";
8
7
  import "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol";
9
8
 
10
9
  import "../Interfaces.sol";
10
+ import "../utils/NameService.sol";
11
11
 
12
12
  /* @title Admin wallet contract allowing whitelisting and topping up of
13
13
  * addresses
@@ -15,7 +15,6 @@ import "../Interfaces.sol";
15
15
  contract AdminWallet is
16
16
  Initializable,
17
17
  UUPSUpgradeable,
18
- OwnableUpgradeable,
19
18
  AccessControlUpgradeable
20
19
  {
21
20
  bytes32 public constant WALLET_ADMIN_ROLE = keccak256("WALLET_ADMIN_ROLE");
@@ -28,10 +27,13 @@ contract AdminWallet is
28
27
  uint256 public toppingTimes;
29
28
  uint256 public gasPrice;
30
29
 
31
- IIdentity public identity;
30
+ NameService public nameService;
32
31
 
33
32
  mapping(uint256 => mapping(address => uint256)) toppings;
34
33
 
34
+ uint64 public maxDailyNewWallets;
35
+ uint64 public day;
36
+
35
37
  event AdminsAdded(address payable[] indexed admins);
36
38
  event AdminsRemoved(address[] indexed admins);
37
39
  event WalletTopped(address indexed user, uint256 amount);
@@ -47,17 +49,29 @@ contract AdminWallet is
47
49
  */
48
50
  function initialize(
49
51
  address payable[] memory _admins,
52
+ NameService _ns,
50
53
  address _owner,
51
- IIdentity _identity
54
+ uint256 _gasPrice
52
55
  ) public initializer {
53
56
  __AccessControl_init_unchained();
54
- __Ownable_init_unchained();
55
57
  _setupRole(DEFAULT_ADMIN_ROLE, _owner);
56
- _setDefaults(600000, 9e6, 3, 1e10);
57
- identity = _identity;
58
+ _setupRole(DEFAULT_ADMIN_ROLE, msg.sender);
59
+
60
+ _setDefaults(600000, 9e6, 3, _gasPrice);
61
+ nameService = _ns;
58
62
  if (_admins.length > 0) {
59
63
  addAdmins(_admins);
60
64
  }
65
+ if (msg.sender != _owner) revokeRole(DEFAULT_ADMIN_ROLE, msg.sender);
66
+ }
67
+
68
+ modifier onlyOwner() {
69
+ require(hasRole(DEFAULT_ADMIN_ROLE, msg.sender), "not owner");
70
+ _;
71
+ }
72
+
73
+ function getIdentity() public view returns (IIdentityV2) {
74
+ return IIdentityV2(nameService.getAddress("IDENTITY"));
61
75
  }
62
76
 
63
77
  function setDefaults(
@@ -171,28 +185,45 @@ contract AdminWallet is
171
185
  onlyAdmin
172
186
  reimburseGas
173
187
  {
174
- identity.addWhitelistedWithDID(_user, _did);
188
+ getIdentity().addWhitelistedWithDID(_user, _did);
189
+ }
190
+
191
+ /* @dev Function to add given address to whitelist of identity contract
192
+ * can only be done by admins of wallet and if wallet is an IdentityAdmin
193
+ */
194
+ function whitelist(
195
+ address _user,
196
+ string memory _did,
197
+ uint256 orgChain,
198
+ uint256 dateAuthenticated
199
+ ) public onlyAdmin reimburseGas {
200
+ getIdentity().addWhitelistedWithDIDAndChain(
201
+ _user,
202
+ _did,
203
+ orgChain,
204
+ dateAuthenticated
205
+ );
175
206
  }
176
207
 
177
208
  /* @dev Function to remove given address from whitelist of identity contract
178
209
  * can only be done by admins of wallet and if wallet is an IdentityAdmin
179
210
  */
180
211
  function removeWhitelist(address _user) public onlyAdmin reimburseGas {
181
- identity.removeWhitelisted(_user);
212
+ getIdentity().removeWhitelisted(_user);
182
213
  }
183
214
 
184
215
  /* @dev Function to add given address to blacklist of identity contract
185
216
  * can only be done by admins of wallet and if wallet is an IdentityAdmin
186
217
  */
187
218
  function blacklist(address _user) public onlyAdmin reimburseGas {
188
- identity.addBlacklisted(_user);
219
+ getIdentity().addBlacklisted(_user);
189
220
  }
190
221
 
191
222
  /* @dev Function to remove given address from blacklist of identity contract
192
223
  * can only be done by admins of wallet and if wallet is an IdentityAdmin
193
224
  */
194
225
  function removeBlacklist(address _user) public onlyAdmin reimburseGas {
195
- identity.removeBlacklisted(_user);
226
+ getIdentity().removeBlacklisted(_user);
196
227
  }
197
228
 
198
229
  /* @dev Function to top given address with amount of G$ given in constructor
@@ -0,0 +1,271 @@
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 "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol";
9
+
10
+ import "../Interfaces.sol";
11
+ import "../utils/NameService.sol";
12
+
13
+ /**
14
+ @title Admin wallet contract allowing whitelisting and topping up of addresses
15
+ @notice this is for Fuse with OwnableUpgradeable to keep storage layout
16
+ */
17
+ contract AdminWalletFuse is
18
+ Initializable,
19
+ UUPSUpgradeable,
20
+ OwnableUpgradeable,
21
+ AccessControlUpgradeable
22
+ {
23
+ bytes32 public constant WALLET_ADMIN_ROLE = keccak256("WALLET_ADMIN_ROLE");
24
+
25
+ address payable[] adminlist;
26
+
27
+ uint256 public toppingAmount;
28
+ uint256 public adminToppingAmount;
29
+
30
+ uint256 public toppingTimes;
31
+ uint256 public gasPrice;
32
+
33
+ NameService public nameService;
34
+
35
+ mapping(uint256 => mapping(address => uint256)) toppings;
36
+
37
+ uint64 public maxDailyNewWallets;
38
+ uint64 public day;
39
+
40
+ event AdminsAdded(address payable[] indexed admins);
41
+ event AdminsRemoved(address[] indexed admins);
42
+ event WalletTopped(address indexed user, uint256 amount);
43
+ event GenericCall(
44
+ address indexed _contract,
45
+ bytes _data,
46
+ uint256 _value,
47
+ bool _success
48
+ );
49
+
50
+ /**
51
+ * @dev initialize
52
+ */
53
+ function initialize(
54
+ address payable[] memory _admins,
55
+ NameService _ns,
56
+ address _owner,
57
+ uint256 _gasPrice
58
+ ) public initializer {
59
+ __AccessControl_init_unchained();
60
+ __Ownable_init_unchained();
61
+
62
+ _setupRole(DEFAULT_ADMIN_ROLE, _owner);
63
+
64
+ _setDefaults(600000, 9e6, 3, _gasPrice);
65
+ nameService = _ns;
66
+ if (_admins.length > 0) {
67
+ addAdmins(_admins);
68
+ }
69
+ }
70
+
71
+ function getIdentity() public view returns (IIdentityV2) {
72
+ return IIdentityV2(nameService.getAddress("IDENTITY"));
73
+ }
74
+
75
+ function setDefaults(
76
+ uint256 _toppingAmount,
77
+ uint256 _adminToppingAmount,
78
+ uint256 _toppingTimes,
79
+ uint256 _gasPrice
80
+ ) external onlyOwner {
81
+ _setDefaults(_toppingAmount, _adminToppingAmount, _toppingTimes, _gasPrice);
82
+ }
83
+
84
+ function _setDefaults(
85
+ uint256 _toppingAmount,
86
+ uint256 _adminToppingAmount,
87
+ uint256 _toppingTimes,
88
+ uint256 _gasPrice
89
+ ) internal {
90
+ gasPrice = _gasPrice;
91
+ toppingAmount = _toppingAmount * _gasPrice;
92
+ adminToppingAmount = _adminToppingAmount * _gasPrice;
93
+ toppingTimes = _toppingTimes;
94
+ }
95
+
96
+ function _authorizeUpgrade(address newImplementation)
97
+ internal
98
+ override
99
+ onlyOwner
100
+ {}
101
+
102
+ /* @dev Modifier that checks if caller is admin of wallet
103
+ */
104
+ modifier onlyAdmin() {
105
+ require(isAdmin(msg.sender), "Caller is not admin");
106
+ _;
107
+ }
108
+
109
+ modifier reimburseGas() {
110
+ _;
111
+ if (msg.sender.balance <= adminToppingAmount / 2 && isAdmin(msg.sender)) {
112
+ _topWallet(payable(msg.sender));
113
+ }
114
+ }
115
+
116
+ receive() external payable {}
117
+
118
+ /* @dev Internal function that sets current day
119
+ */
120
+ function currentDay() internal view returns (uint256) {
121
+ return (block.timestamp / 1 days);
122
+ }
123
+
124
+ /* @dev Function to add list of addresses to admins
125
+ * can only be called by creator of contract
126
+ * @param _admins the list of addresses to add
127
+ */
128
+ function addAdmins(address payable[] memory _admins) public onlyOwner {
129
+ for (uint256 i = 0; i < _admins.length; i++) {
130
+ if (isAdmin(_admins[i]) == false) {
131
+ grantRole(WALLET_ADMIN_ROLE, _admins[i]);
132
+ adminlist.push(_admins[i]);
133
+ }
134
+ }
135
+ emit AdminsAdded(_admins);
136
+ }
137
+
138
+ /* @dev Function to remove list of addresses to admins
139
+ * can only be called by creator of contract
140
+ * @param _admins the list of addresses to remove
141
+ */
142
+ function removeAdmins(address[] memory _admins) public onlyOwner {
143
+ for (uint256 i = 0; i < _admins.length; i++) {
144
+ revokeRole(WALLET_ADMIN_ROLE, _admins[i]);
145
+ }
146
+ emit AdminsRemoved(_admins);
147
+ }
148
+
149
+ /**
150
+ * @dev top admins
151
+ */
152
+ function topAdmins(uint256 startIndex, uint256 endIndex) public reimburseGas {
153
+ require(adminlist.length > startIndex, "Admin list is empty");
154
+ for (uint256 i = startIndex; (i < adminlist.length && i < endIndex); i++) {
155
+ if (
156
+ isAdmin(adminlist[i]) && adminlist[i].balance <= adminToppingAmount / 2
157
+ ) {
158
+ _topWallet(adminlist[i]);
159
+ }
160
+ }
161
+ }
162
+
163
+ /* @dev top the first 50 admins
164
+ */
165
+ function topAdmins(uint256 startIndex) public reimburseGas {
166
+ topAdmins(startIndex, startIndex + 50);
167
+ }
168
+
169
+ /**
170
+ * @dev Function to check if given address is an admin
171
+ * @param _user the address to check
172
+ * @return A bool indicating if user is an admin
173
+ */
174
+ function isAdmin(address _user) public view returns (bool) {
175
+ return hasRole(WALLET_ADMIN_ROLE, _user);
176
+ }
177
+
178
+ /* @dev Function to add given address to whitelist of identity contract
179
+ * can only be done by admins of wallet and if wallet is an IdentityAdmin
180
+ */
181
+ function whitelist(address _user, string memory _did)
182
+ public
183
+ onlyAdmin
184
+ reimburseGas
185
+ {
186
+ getIdentity().addWhitelistedWithDID(_user, _did);
187
+ }
188
+
189
+ /* @dev Function to add given address to whitelist of identity contract
190
+ * can only be done by admins of wallet and if wallet is an IdentityAdmin
191
+ */
192
+ function whitelist(
193
+ address _user,
194
+ string memory _did,
195
+ uint256 orgChain,
196
+ uint256 dateAuthenticated
197
+ ) public onlyAdmin reimburseGas {
198
+ getIdentity().addWhitelistedWithDIDAndChain(
199
+ _user,
200
+ _did,
201
+ orgChain,
202
+ dateAuthenticated
203
+ );
204
+ }
205
+
206
+ /* @dev Function to remove given address from whitelist of identity contract
207
+ * can only be done by admins of wallet and if wallet is an IdentityAdmin
208
+ */
209
+ function removeWhitelist(address _user) public onlyAdmin reimburseGas {
210
+ getIdentity().removeWhitelisted(_user);
211
+ }
212
+
213
+ /* @dev Function to add given address to blacklist of identity contract
214
+ * can only be done by admins of wallet and if wallet is an IdentityAdmin
215
+ */
216
+ function blacklist(address _user) public onlyAdmin reimburseGas {
217
+ getIdentity().addBlacklisted(_user);
218
+ }
219
+
220
+ /* @dev Function to remove given address from blacklist of identity contract
221
+ * can only be done by admins of wallet and if wallet is an IdentityAdmin
222
+ */
223
+ function removeBlacklist(address _user) public onlyAdmin reimburseGas {
224
+ getIdentity().removeBlacklisted(_user);
225
+ }
226
+
227
+ /* @dev Function to top given address with amount of G$ given in constructor
228
+ * can only be done by admin the amount of times specified in constructor per day
229
+ * @param _user The address to transfer to
230
+ */
231
+ function topWallet(address payable _user) public onlyAdmin reimburseGas {
232
+ require(
233
+ toppings[currentDay()][_user] < toppingTimes,
234
+ "User wallet has been topped too many times today"
235
+ );
236
+ if (address(_user).balance >= toppingAmount / 4) return;
237
+
238
+ _topWallet(_user);
239
+ }
240
+
241
+ function _topWallet(address payable _wallet) internal {
242
+ toppings[currentDay()][_wallet] += 1;
243
+ uint256 amount = isAdmin(_wallet) ? adminToppingAmount : toppingAmount;
244
+ uint256 toTop = amount - address(_wallet).balance;
245
+ _wallet.transfer(toTop);
246
+ emit WalletTopped(_wallet, toTop);
247
+ }
248
+
249
+ /**
250
+ * @dev perform a generic call to an arbitrary contract
251
+ * @param _contract the contract's address to call
252
+ * @param _data ABI-encoded contract call to call `_contract` address.
253
+ * @param _value value (ETH) to transfer with the transaction
254
+ * @return success success or fail
255
+ * bytes - the return bytes of the called contract's function.
256
+ */
257
+ function genericCall(
258
+ address _contract,
259
+ bytes memory _data,
260
+ uint256 _value
261
+ )
262
+ public
263
+ onlyAdmin
264
+ reimburseGas
265
+ returns (bool success, bytes memory returnValue)
266
+ {
267
+ // solhint-disable-next-line avoid-call-value
268
+ (success, returnValue) = _contract.call{ value: _value }(_data);
269
+ emit GenericCall(_contract, _data, _value, success);
270
+ }
271
+ }