@gooddollar/goodprotocol 2.0.25-beta.9 → 2.0.26-beta.0

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 (421) hide show
  1. package/artifacts/abis/AdminWallet.min.json +1 -1
  2. package/artifacts/abis/CompoundVotingMachine.min.json +1 -1
  3. package/artifacts/abis/DistributionHelper.min.json +1 -1
  4. package/artifacts/abis/DistributionHelperTest.min.json +1 -1
  5. package/artifacts/abis/DistributionHelperTestHelper.min.json +1 -1
  6. package/artifacts/abis/EternalStorage.min.json +1 -0
  7. package/artifacts/abis/FuseOldBridgeKill.min.json +1 -0
  8. package/artifacts/abis/GoodFundManager.min.json +1 -1
  9. package/artifacts/abis/GoodFundManagerTest.min.json +1 -1
  10. package/artifacts/abis/GoodMarketMaker.min.json +1 -1
  11. package/artifacts/abis/GoodReserveCDai.min.json +1 -1
  12. package/artifacts/abis/IQuoterV2.min.json +1 -1
  13. package/artifacts/abis/ISwapRouter.min.json +1 -1
  14. package/artifacts/abis/IUpgradeabilityOwnerStorage.min.json +1 -0
  15. package/artifacts/abis/Initializable.min.json +1 -0
  16. package/artifacts/abis/Ownable.min.json +1 -0
  17. package/artifacts/abis/ReserveRestore.min.json +1 -0
  18. package/artifacts/abis/SuperfluidFaucet.min.json +1 -0
  19. package/artifacts/abis/Upgradeable.min.json +1 -0
  20. package/artifacts/contracts/DAOStackInterfaces.sol/Avatar.dbg.json +1 -1
  21. package/artifacts/contracts/DAOStackInterfaces.sol/Controller.dbg.json +1 -1
  22. package/artifacts/contracts/DAOStackInterfaces.sol/GlobalConstraintInterface.dbg.json +1 -1
  23. package/artifacts/contracts/DAOStackInterfaces.sol/IntVoteInterface.dbg.json +1 -1
  24. package/artifacts/contracts/DAOStackInterfaces.sol/ReputationInterface.dbg.json +1 -1
  25. package/artifacts/contracts/DAOStackInterfaces.sol/SchemeRegistrar.dbg.json +1 -1
  26. package/artifacts/contracts/Interfaces.sol/AggregatorV3Interface.dbg.json +1 -1
  27. package/artifacts/contracts/Interfaces.sol/ERC20.dbg.json +1 -1
  28. package/artifacts/contracts/Interfaces.sol/IAaveIncentivesController.dbg.json +1 -1
  29. package/artifacts/contracts/Interfaces.sol/IAdminWallet.dbg.json +1 -1
  30. package/artifacts/contracts/Interfaces.sol/IDonationStaking.dbg.json +1 -1
  31. package/artifacts/contracts/Interfaces.sol/IERC2917.dbg.json +1 -1
  32. package/artifacts/contracts/Interfaces.sol/IFirstClaimPool.dbg.json +1 -1
  33. package/artifacts/contracts/Interfaces.sol/IGoodDollar.dbg.json +1 -1
  34. package/artifacts/contracts/Interfaces.sol/IGoodStaking.dbg.json +1 -1
  35. package/artifacts/contracts/Interfaces.sol/IHasRouter.dbg.json +1 -1
  36. package/artifacts/contracts/Interfaces.sol/IIdentity.dbg.json +1 -1
  37. package/artifacts/contracts/Interfaces.sol/IIdentityV2.dbg.json +1 -1
  38. package/artifacts/contracts/Interfaces.sol/ILendingPool.dbg.json +1 -1
  39. package/artifacts/contracts/Interfaces.sol/IMultichainRouter.dbg.json +1 -1
  40. package/artifacts/contracts/Interfaces.sol/INameService.dbg.json +1 -1
  41. package/artifacts/contracts/Interfaces.sol/IQuoterV2.dbg.json +4 -0
  42. package/artifacts/contracts/{utils/BuyGDClone.sol → Interfaces.sol}/IQuoterV2.json +1 -1
  43. package/artifacts/contracts/Interfaces.sol/ISwapRouter.dbg.json +4 -0
  44. package/artifacts/contracts/{utils/BuyGDClone.sol → Interfaces.sol}/ISwapRouter.json +1 -1
  45. package/artifacts/contracts/Interfaces.sol/IUBIScheme.dbg.json +1 -1
  46. package/artifacts/contracts/Interfaces.sol/ProxyAdmin.dbg.json +1 -1
  47. package/artifacts/contracts/Interfaces.sol/Reserve.dbg.json +1 -1
  48. package/artifacts/contracts/Interfaces.sol/Staking.dbg.json +1 -1
  49. package/artifacts/contracts/Interfaces.sol/Uniswap.dbg.json +1 -1
  50. package/artifacts/contracts/Interfaces.sol/UniswapFactory.dbg.json +1 -1
  51. package/artifacts/contracts/Interfaces.sol/UniswapPair.dbg.json +1 -1
  52. package/artifacts/contracts/Interfaces.sol/cERC20.dbg.json +1 -1
  53. package/artifacts/contracts/fuseFaucet/Faucet.sol/Faucet.dbg.json +1 -1
  54. package/artifacts/contracts/fuseFaucet/Faucet.sol/Faucet.json +2 -2
  55. package/artifacts/contracts/fuseFaucet/FuseFaucet.sol/FuseFaucet.dbg.json +1 -1
  56. package/artifacts/contracts/fuseFaucet/FuseFaucet.sol/FuseFaucet.json +2 -2
  57. package/artifacts/contracts/fuseFaucet/FuseFaucetV2.sol/FuseFaucetV2.dbg.json +1 -1
  58. package/artifacts/contracts/fuseFaucet/FuseFaucetV2.sol/FuseFaucetV2.json +2 -2
  59. package/artifacts/contracts/fuseFaucet/SuperfluidFacuet.sol/SuperfluidFaucet.dbg.json +4 -0
  60. package/artifacts/contracts/fuseFaucet/SuperfluidFacuet.sol/SuperfluidFaucet.json +536 -0
  61. package/artifacts/contracts/governance/ClaimersDistribution.sol/ClaimersDistribution.dbg.json +1 -1
  62. package/artifacts/contracts/governance/ClaimersDistribution.sol/ClaimersDistribution.json +2 -2
  63. package/artifacts/contracts/governance/CompoundVotingMachine.sol/CompoundVotingMachine.dbg.json +1 -1
  64. package/artifacts/contracts/governance/CompoundVotingMachine.sol/CompoundVotingMachine.json +20 -2
  65. package/artifacts/contracts/governance/GReputation.sol/GReputation.dbg.json +1 -1
  66. package/artifacts/contracts/governance/GReputation.sol/GReputation.json +2 -2
  67. package/artifacts/contracts/governance/GoodDollarStaking.sol/GoodDollarStaking.dbg.json +1 -1
  68. package/artifacts/contracts/governance/GoodDollarStaking.sol/GoodDollarStaking.json +2 -2
  69. package/artifacts/contracts/governance/GoodDollarStaking.sol/IGovernanceStaking.dbg.json +1 -1
  70. package/artifacts/contracts/governance/GoodDollarStaking.sol/IStakingUpgrade.dbg.json +1 -1
  71. package/artifacts/contracts/governance/GoodDollarStaking.sol/RewardsMinter.dbg.json +1 -1
  72. package/artifacts/contracts/governance/GovernanceStaking.sol/GovernanceStaking.dbg.json +1 -1
  73. package/artifacts/contracts/governance/GovernanceStaking.sol/GovernanceStaking.json +2 -2
  74. package/artifacts/contracts/governance/MultiBaseGovernanceShareField.sol/MultiBaseGovernanceShareField.dbg.json +1 -1
  75. package/artifacts/contracts/governance/Reputation.sol/Reputation.dbg.json +1 -1
  76. package/artifacts/contracts/governance/Reputation.sol/Reputation.json +2 -2
  77. package/artifacts/contracts/governance/StakersDistribution.sol/StakersDistribution.dbg.json +1 -1
  78. package/artifacts/contracts/governance/StakersDistribution.sol/StakersDistribution.json +2 -2
  79. package/artifacts/contracts/identity/IdentityV2.sol/IdentityV2.dbg.json +1 -1
  80. package/artifacts/contracts/identity/IdentityV2.sol/IdentityV2.json +2 -2
  81. package/artifacts/contracts/invite/InvitesFuseV2.sol/InvitesFuseV2.dbg.json +1 -1
  82. package/artifacts/contracts/invite/InvitesFuseV2.sol/InvitesFuseV2.json +2 -2
  83. package/artifacts/contracts/invite/InvitesV1.sol/InvitesV1.dbg.json +1 -1
  84. package/artifacts/contracts/invite/InvitesV1.sol/InvitesV1.json +2 -2
  85. package/artifacts/contracts/invite/InvitesV2.sol/InvitesV2.dbg.json +1 -1
  86. package/artifacts/contracts/invite/InvitesV2.sol/InvitesV2.json +2 -2
  87. package/artifacts/contracts/invite/OneTimeReward.sol/OneTimeReward.dbg.json +1 -1
  88. package/artifacts/contracts/invite/OneTimeReward.sol/OneTimeReward.json +2 -2
  89. package/artifacts/contracts/mocks/AaveMock.sol/AaveMock.dbg.json +1 -1
  90. package/artifacts/contracts/mocks/AaveUSDMockOracle.sol/AaveUSDMockOracle.dbg.json +1 -1
  91. package/artifacts/contracts/mocks/BatUSDMockOracle.sol/BatUSDMockOracle.dbg.json +1 -1
  92. package/artifacts/contracts/mocks/CompUsdMockOracle.sol/CompUSDMockOracle.dbg.json +1 -1
  93. package/artifacts/contracts/mocks/DAIMock.sol/DAIMock.dbg.json +1 -1
  94. package/artifacts/contracts/mocks/DaiEthPriceMockOracle.sol/DaiEthPriceMockOracle.dbg.json +1 -1
  95. package/artifacts/contracts/mocks/DecimalsMock.sol/DecimalsMock.dbg.json +1 -1
  96. package/artifacts/contracts/mocks/DistributionBridgeMock.sol/DistributionBridgeMock.dbg.json +1 -1
  97. package/artifacts/contracts/mocks/DistributionBridgeMock.sol/DistributionBridgeMock.json +2 -2
  98. package/artifacts/contracts/mocks/DistributionHelperTest.sol/DistributionHelperTest.dbg.json +1 -1
  99. package/artifacts/contracts/mocks/DistributionHelperTest.sol/DistributionHelperTest.json +21 -2
  100. package/artifacts/contracts/mocks/DistributionHelperTest.sol/DistributionHelperTestHelper.dbg.json +1 -1
  101. package/artifacts/contracts/mocks/DistributionHelperTest.sol/DistributionHelperTestHelper.json +21 -2
  102. package/artifacts/contracts/mocks/EthUSDMockOracle.sol/EthUSDMockOracle.dbg.json +1 -1
  103. package/artifacts/contracts/mocks/FeesFormularMock.sol/FeesFormulaMock.dbg.json +1 -1
  104. package/artifacts/contracts/mocks/GasPriceMockOracle.sol/GasPriceMockOracle.dbg.json +1 -1
  105. package/artifacts/contracts/mocks/GoodCompoundStakingTest.sol/GoodCompoundStakingTest.dbg.json +1 -1
  106. package/artifacts/contracts/mocks/GoodCompoundStakingTest.sol/GoodCompoundStakingTest.json +2 -2
  107. package/artifacts/contracts/mocks/GoodDollarStakingMock.sol/GoodDollarStakingMock.dbg.json +1 -1
  108. package/artifacts/contracts/mocks/GoodDollarStakingMock.sol/GoodDollarStakingMock.json +2 -2
  109. package/artifacts/contracts/mocks/GoodFundManagerTest.sol/GoodFundManagerTest.dbg.json +1 -1
  110. package/artifacts/contracts/mocks/GoodFundManagerTest.sol/GoodFundManagerTest.json +21 -2
  111. package/artifacts/contracts/mocks/IdentityMock.sol/IdentityMock.dbg.json +1 -1
  112. package/artifacts/contracts/mocks/IdentityMock.sol/IdentityMock.json +2 -2
  113. package/artifacts/contracts/mocks/IncentiveControllerMock.sol/IncentiveControllerMock.dbg.json +1 -1
  114. package/artifacts/contracts/mocks/LendingPoolMock.sol/LendingPoolMock.dbg.json +1 -1
  115. package/artifacts/contracts/mocks/MultichainRouterMock.sol/IWrapper.dbg.json +1 -1
  116. package/artifacts/contracts/mocks/MultichainRouterMock.sol/MultichainRouterMock.dbg.json +1 -1
  117. package/artifacts/contracts/mocks/MultichainRouterMock.sol/MultichainRouterMock.json +2 -2
  118. package/artifacts/contracts/mocks/OverMintTester.sol/IGoodDollarStakingTest.dbg.json +1 -1
  119. package/artifacts/contracts/mocks/OverMintTester.sol/OverMintTester.dbg.json +1 -1
  120. package/artifacts/contracts/mocks/OverMintTester.sol/OverMintTester.json +2 -2
  121. package/artifacts/contracts/mocks/OverMintTesterRegularStake.sol/OverMintTesterRegularStake.dbg.json +1 -1
  122. package/artifacts/contracts/mocks/OverMintTesterRegularStake.sol/OverMintTesterRegularStake.json +2 -2
  123. package/artifacts/contracts/mocks/PayableMock.sol/PayableMock.dbg.json +1 -1
  124. package/artifacts/contracts/mocks/SixteenDecimalsTokenMock.sol/SixteenDecimalsTokenMock.dbg.json +1 -1
  125. package/artifacts/contracts/mocks/StakingMockFixedAPY.sol/StakingMockFixedAPY.dbg.json +1 -1
  126. package/artifacts/contracts/mocks/SwapHelperTest.sol/SwapHelperTest.dbg.json +1 -1
  127. package/artifacts/contracts/mocks/SwapHelperTest.sol/SwapHelperTest.json +2 -2
  128. package/artifacts/contracts/mocks/TwentyDecimalsTokenMock.sol/TwentyDecimalsTokenMock.dbg.json +1 -1
  129. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock.dbg.json +1 -1
  130. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock.json +2 -2
  131. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock2.dbg.json +1 -1
  132. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock2.json +2 -2
  133. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock3.dbg.json +1 -1
  134. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock3.json +2 -2
  135. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock4.dbg.json +1 -1
  136. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock4.json +2 -2
  137. package/artifacts/contracts/mocks/UsdcMock.sol/USDCMock.dbg.json +1 -1
  138. package/artifacts/contracts/mocks/cBATMock.sol/cBATMock.dbg.json +1 -1
  139. package/artifacts/contracts/mocks/cDAILowWorthMock.sol/cDAILowWorthMock.dbg.json +1 -1
  140. package/artifacts/contracts/mocks/cDAIMock.sol/cDAIMock.dbg.json +1 -1
  141. package/artifacts/contracts/mocks/cDAINonMintableMock.sol/cDAINonMintableMock.dbg.json +1 -1
  142. package/artifacts/contracts/mocks/cDecimalsMock.sol/cDecimalsMock.dbg.json +1 -1
  143. package/artifacts/contracts/mocks/cSDTMock.sol/cSDTMock.dbg.json +1 -1
  144. package/artifacts/contracts/mocks/cUSDCMock.sol/cUSDCMock.dbg.json +1 -1
  145. package/artifacts/contracts/reserve/DistributionHelper.sol/DistributionHelper.dbg.json +1 -1
  146. package/artifacts/contracts/reserve/DistributionHelper.sol/DistributionHelper.json +21 -2
  147. package/artifacts/contracts/reserve/ExchangeHelper.sol/ExchangeHelper.dbg.json +1 -1
  148. package/artifacts/contracts/reserve/ExchangeHelper.sol/ExchangeHelper.json +2 -2
  149. package/artifacts/contracts/reserve/GoodMarketMaker.sol/GoodMarketMaker.dbg.json +1 -1
  150. package/artifacts/contracts/reserve/GoodMarketMaker.sol/GoodMarketMaker.json +6 -6
  151. package/artifacts/contracts/reserve/GoodReserveCDai.sol/ContributionCalc.dbg.json +1 -1
  152. package/artifacts/contracts/reserve/GoodReserveCDai.sol/GoodReserveCDai.dbg.json +1 -1
  153. package/artifacts/contracts/reserve/GoodReserveCDai.sol/GoodReserveCDai.json +3 -3
  154. package/artifacts/contracts/staking/BaseShareField.sol/BaseShareField.dbg.json +1 -1
  155. package/artifacts/contracts/staking/BaseShareField.sol/BaseShareField.json +2 -2
  156. package/artifacts/contracts/staking/BaseShareFieldV2.sol/BaseShareFieldV2.dbg.json +1 -1
  157. package/artifacts/contracts/staking/BaseShareFieldV2.sol/BaseShareFieldV2.json +2 -2
  158. package/artifacts/contracts/staking/DonationsStaking.sol/DonationsStaking.dbg.json +1 -1
  159. package/artifacts/contracts/staking/DonationsStaking.sol/DonationsStaking.json +2 -2
  160. package/artifacts/contracts/staking/FuseStakingV3.sol/FuseStakingV3.dbg.json +1 -1
  161. package/artifacts/contracts/staking/FuseStakingV3.sol/FuseStakingV3.json +2 -2
  162. package/artifacts/contracts/staking/FuseStakingV3.sol/IConsensus.dbg.json +1 -1
  163. package/artifacts/contracts/staking/FuseStakingV3.sol/PegSwap.dbg.json +1 -1
  164. package/artifacts/contracts/staking/GoodFundManager.sol/GoodFundManager.dbg.json +1 -1
  165. package/artifacts/contracts/staking/GoodFundManager.sol/GoodFundManager.json +21 -2
  166. package/artifacts/contracts/staking/SimpleStaking.sol/SimpleStaking.dbg.json +1 -1
  167. package/artifacts/contracts/staking/SimpleStakingV2.sol/SimpleStakingV2.dbg.json +1 -1
  168. package/artifacts/contracts/staking/UniswapV2SwapHelper.sol/UniswapV2SwapHelper.dbg.json +1 -1
  169. package/artifacts/contracts/staking/UniswapV2SwapHelper.sol/UniswapV2SwapHelper.json +2 -2
  170. package/artifacts/contracts/staking/aave/AaveStakingFactory.sol/AaveStakingFactory.dbg.json +1 -1
  171. package/artifacts/contracts/staking/aave/AaveStakingFactory.sol/AaveStakingFactory.json +2 -2
  172. package/artifacts/contracts/staking/aave/GoodAaveStaking.sol/GoodAaveStaking.dbg.json +1 -1
  173. package/artifacts/contracts/staking/aave/GoodAaveStaking.sol/GoodAaveStaking.json +2 -2
  174. package/artifacts/contracts/staking/aave/GoodAaveStakingV2.sol/GoodAaveStakingV2.dbg.json +1 -1
  175. package/artifacts/contracts/staking/aave/GoodAaveStakingV2.sol/GoodAaveStakingV2.json +2 -2
  176. package/artifacts/contracts/staking/compound/CompoundStakingFactory.sol/CompoundStakingFactory.dbg.json +1 -1
  177. package/artifacts/contracts/staking/compound/CompoundStakingFactory.sol/CompoundStakingFactory.json +2 -2
  178. package/artifacts/contracts/staking/compound/GoodCompoundStaking.sol/GoodCompoundStaking.dbg.json +1 -1
  179. package/artifacts/contracts/staking/compound/GoodCompoundStaking.sol/GoodCompoundStaking.json +2 -2
  180. package/artifacts/contracts/staking/compound/GoodCompoundStakingV2.sol/GoodCompoundStakingV2.dbg.json +1 -1
  181. package/artifacts/contracts/staking/compound/GoodCompoundStakingV2.sol/GoodCompoundStakingV2.json +2 -2
  182. package/artifacts/contracts/staking/utils/Math64X64.sol/Math64x64.dbg.json +1 -1
  183. package/artifacts/contracts/staking/utils/StakingRewardsFixedAPY.sol/StakingRewardsFixedAPY.dbg.json +1 -1
  184. package/artifacts/contracts/token/ERC20PresetMinterPauserUpgradeable.sol/ERC20PresetMinterPauserUpgradeable.dbg.json +1 -1
  185. package/artifacts/contracts/token/ERC677.sol/ERC677.dbg.json +1 -1
  186. package/artifacts/contracts/token/ERC677.sol/ERC677Receiver.dbg.json +1 -1
  187. package/artifacts/contracts/token/GoodDollar.sol/GoodDollar.dbg.json +1 -1
  188. package/artifacts/contracts/token/GoodDollar.sol/GoodDollar.json +2 -2
  189. package/artifacts/contracts/token/IFeesFormula.sol/IFeesFormula.dbg.json +1 -1
  190. package/artifacts/contracts/token/MultichainFeeFormula.sol/MultichainFeeFormula.dbg.json +1 -1
  191. package/artifacts/contracts/token/superfluid/ERC20Permit.sol/ERC20Permit.dbg.json +1 -1
  192. package/artifacts/contracts/token/superfluid/ERC20Permit.sol/SelfApprove.dbg.json +1 -1
  193. package/artifacts/contracts/token/superfluid/ISuperGoodDollar.sol/IGoodDollarCustom.dbg.json +1 -1
  194. package/artifacts/contracts/token/superfluid/ISuperGoodDollar.sol/ISuperGoodDollar.dbg.json +1 -1
  195. package/artifacts/contracts/token/superfluid/ISuperToken.sol/ISuperToken.dbg.json +1 -1
  196. package/artifacts/contracts/token/superfluid/SuperGoodDollar.sol/SuperGoodDollar.dbg.json +1 -1
  197. package/artifacts/contracts/token/superfluid/SuperGoodDollar.sol/SuperGoodDollar.json +2 -2
  198. package/artifacts/contracts/token/superfluid/SuperToken.sol/SuperToken.dbg.json +1 -1
  199. package/artifacts/contracts/token/superfluid/SuperfluidToken.sol/SuperfluidToken.dbg.json +1 -1
  200. package/artifacts/contracts/token/superfluid/UUPSProxiable.sol/UUPSProxiable.dbg.json +1 -1
  201. package/artifacts/contracts/token/superfluid/UUPSProxy.sol/Proxy.dbg.json +1 -1
  202. package/artifacts/contracts/token/superfluid/UUPSProxy.sol/UUPSProxy.dbg.json +1 -1
  203. package/artifacts/contracts/token/superfluid/UUPSProxy.sol/UUPSUtils.dbg.json +1 -1
  204. package/artifacts/contracts/ubi/UBIScheme.sol/UBIScheme.dbg.json +1 -1
  205. package/artifacts/contracts/ubi/UBIScheme.sol/UBIScheme.json +2 -2
  206. package/artifacts/contracts/ubi/UBISchemeV2.sol/UBISchemeV2.dbg.json +1 -1
  207. package/artifacts/contracts/ubi/UBISchemeV2.sol/UBISchemeV2.json +2 -2
  208. package/artifacts/contracts/utils/AdminWallet.sol/AdminWallet.dbg.json +1 -1
  209. package/artifacts/contracts/utils/AdminWallet.sol/AdminWallet.json +2 -22
  210. package/artifacts/contracts/utils/AdminWalletFuse.sol/AdminWalletFuse.dbg.json +1 -1
  211. package/artifacts/contracts/utils/AdminWalletFuse.sol/AdminWalletFuse.json +2 -2
  212. package/artifacts/contracts/utils/BancorFormula.sol/BancorFormula.dbg.json +1 -1
  213. package/artifacts/contracts/utils/BulkProof.sol/BulkProof.dbg.json +1 -1
  214. package/artifacts/contracts/utils/BulkProof.sol/BulkProof.json +2 -2
  215. package/artifacts/contracts/utils/BulkWhitelist.sol/BulkWhitelist.dbg.json +1 -1
  216. package/artifacts/contracts/utils/BulkWhitelist.sol/BulkWhitelist.json +2 -2
  217. package/artifacts/contracts/utils/BuyAndBridgeHelper.sol/BuyAndBridgeHelper.dbg.json +1 -1
  218. package/artifacts/contracts/utils/BuyAndBridgeHelper.sol/BuyAndBridgeHelper.json +2 -2
  219. package/artifacts/contracts/utils/BuyGDClone.sol/BuyGDClone.dbg.json +1 -1
  220. package/artifacts/contracts/utils/BuyGDClone.sol/BuyGDClone.json +2 -2
  221. package/artifacts/contracts/utils/BuyGDClone.sol/BuyGDCloneFactory.dbg.json +1 -1
  222. package/artifacts/contracts/utils/BuyGDClone.sol/BuyGDCloneFactory.json +2 -2
  223. package/artifacts/contracts/utils/BuyGDClone.sol/DonateGDClone.dbg.json +1 -1
  224. package/artifacts/contracts/utils/BuyGDClone.sol/DonateGDClone.json +2 -2
  225. package/artifacts/contracts/utils/DAOContract.sol/DAOContract.dbg.json +1 -1
  226. package/artifacts/contracts/utils/DAOContract.sol/DAOContract.json +2 -2
  227. package/artifacts/contracts/utils/DAOUpgradeableContract.sol/DAOUpgradeableContract.dbg.json +1 -1
  228. package/artifacts/contracts/utils/DAOUpgradeableContract.sol/DAOUpgradeableContract.json +2 -2
  229. package/artifacts/contracts/utils/DSMath.sol/DSMath.dbg.json +1 -1
  230. package/artifacts/contracts/utils/DataTypes.sol/DataTypes.dbg.json +1 -1
  231. package/artifacts/contracts/utils/FuseOldBridgeKill.sol/EternalStorage.dbg.json +4 -0
  232. package/artifacts/contracts/utils/FuseOldBridgeKill.sol/EternalStorage.json +10 -0
  233. package/artifacts/contracts/utils/FuseOldBridgeKill.sol/FuseOldBridgeKill.dbg.json +4 -0
  234. package/artifacts/contracts/utils/FuseOldBridgeKill.sol/FuseOldBridgeKill.json +31 -0
  235. package/artifacts/contracts/utils/FuseOldBridgeKill.sol/IUpgradeabilityOwnerStorage.dbg.json +4 -0
  236. package/artifacts/contracts/utils/FuseOldBridgeKill.sol/IUpgradeabilityOwnerStorage.json +24 -0
  237. package/artifacts/contracts/utils/FuseOldBridgeKill.sol/Initializable.dbg.json +4 -0
  238. package/artifacts/contracts/utils/FuseOldBridgeKill.sol/Initializable.json +24 -0
  239. package/artifacts/contracts/utils/FuseOldBridgeKill.sol/Ownable.dbg.json +4 -0
  240. package/artifacts/contracts/utils/FuseOldBridgeKill.sol/Ownable.json +56 -0
  241. package/artifacts/contracts/utils/FuseOldBridgeKill.sol/Upgradeable.dbg.json +4 -0
  242. package/artifacts/contracts/utils/FuseOldBridgeKill.sol/Upgradeable.json +10 -0
  243. package/artifacts/contracts/utils/GDFaucet.sol/GDFaucet.dbg.json +1 -1
  244. package/artifacts/contracts/utils/GDFaucet.sol/GDFaucet.json +2 -2
  245. package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/GoodDollarMintBurnWrapper.dbg.json +1 -1
  246. package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/GoodDollarMintBurnWrapper.json +2 -2
  247. package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/IRouter.dbg.json +1 -1
  248. package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/PausableControl.dbg.json +1 -1
  249. package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/TokenOperation.dbg.json +1 -1
  250. package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/TokenOperation.json +2 -2
  251. package/artifacts/contracts/utils/IdentityFix.sol/IdentityFix.dbg.json +1 -1
  252. package/artifacts/contracts/utils/IdentityFix.sol/IdentityFix.json +2 -2
  253. package/artifacts/contracts/utils/LastauthReduction.sol/LastauthReduction.dbg.json +1 -1
  254. package/artifacts/contracts/utils/LastauthReduction.sol/LastauthReduction.json +2 -2
  255. package/artifacts/contracts/utils/MultiCall.sol/Multicall.dbg.json +1 -1
  256. package/artifacts/contracts/utils/MultichainBridgeHelper.sol/MultichainBridgeHelper.dbg.json +1 -1
  257. package/artifacts/contracts/utils/MultichainBridgeHelper.sol/MultichainBridgeHelper.json +2 -2
  258. package/artifacts/contracts/utils/NameService.sol/NameService.dbg.json +1 -1
  259. package/artifacts/contracts/utils/OneTimePayments.sol/OneTimePayments.dbg.json +1 -1
  260. package/artifacts/contracts/utils/OneTimePayments.sol/OneTimePayments.json +2 -2
  261. package/artifacts/contracts/utils/OneTimePaymentsV2.sol/OneTimePaymentsV2.dbg.json +1 -1
  262. package/artifacts/contracts/utils/OneTimePaymentsV2.sol/OneTimePaymentsV2.json +2 -2
  263. package/artifacts/contracts/utils/ProtocolUpgrade.sol/OldMarketMaker.dbg.json +1 -1
  264. package/artifacts/contracts/utils/ProtocolUpgrade.sol/ProtocolUpgrade.dbg.json +1 -1
  265. package/artifacts/contracts/utils/ProtocolUpgrade.sol/ProtocolUpgrade.json +2 -2
  266. package/artifacts/contracts/utils/ProtocolUpgradeFuse.sol/ProtocolUpgradeFuse.dbg.json +1 -1
  267. package/artifacts/contracts/utils/ProtocolUpgradeFuse.sol/ProtocolUpgradeFuse.json +2 -2
  268. package/artifacts/contracts/utils/ProtocolUpgradeFuseRecover.sol/ProtocolUpgradeFuseRecover.dbg.json +1 -1
  269. package/artifacts/contracts/utils/ProtocolUpgradeFuseRecover.sol/ProtocolUpgradeFuseRecover.json +2 -2
  270. package/artifacts/contracts/utils/ProtocolUpgradeRecover.sol/ProtocolUpgradeRecover.dbg.json +1 -1
  271. package/artifacts/contracts/utils/ProtocolUpgradeRecover.sol/ProtocolUpgradeRecover.json +2 -2
  272. package/artifacts/contracts/utils/ProxyFactory1967.sol/ERC1967Proxy.dbg.json +1 -1
  273. package/artifacts/contracts/utils/ProxyFactory1967.sol/ProxyFactory1967.dbg.json +1 -1
  274. package/artifacts/contracts/utils/ReputationTestHelper.sol/ReputationTestHelper.dbg.json +1 -1
  275. package/artifacts/contracts/utils/ReputationTestHelper.sol/ReputationTestHelper.json +2 -2
  276. package/artifacts/contracts/utils/ReserveRestore.sol/ReserveRestore.dbg.json +4 -0
  277. package/artifacts/contracts/utils/ReserveRestore.sol/ReserveRestore.json +91 -0
  278. package/contracts/Interfaces.sol +122 -0
  279. package/contracts/fuseFaucet/SuperfluidFacuet.sol +129 -0
  280. package/contracts/governance/CompoundVotingMachine.sol +26 -11
  281. package/contracts/governance/StakersDistribution.sol +13 -13
  282. package/contracts/reserve/DistributionHelper.sol +29 -10
  283. package/contracts/reserve/ExchangeHelper.sol +16 -7
  284. package/contracts/reserve/GoodMarketMaker.sol +43 -53
  285. package/contracts/reserve/GoodReserveCDai.sol +44 -16
  286. package/contracts/staking/GoodFundManager.sol +44 -4
  287. package/contracts/utils/AdminWallet.sol +4 -6
  288. package/contracts/utils/BuyGDClone.sol +0 -122
  289. package/contracts/utils/FuseOldBridgeKill.sol +123 -0
  290. package/contracts/utils/ReserveRestore.sol +157 -0
  291. package/dist/artifacts/contracts/identity/IdentityV2.sol/IdentityV2.json +2 -2
  292. package/dist/artifacts/contracts/token/superfluid/SuperGoodDollar.sol/SuperGoodDollar.json +2 -2
  293. package/hardhat.config.ts +21 -39
  294. package/package.json +3 -3
  295. package/releases/deployment.json +6 -0
  296. package/scripts/multichain-deploy/0_proxyFactory-deploy.ts +20 -15
  297. package/scripts/multichain-deploy/7_superfluidfaucet-deploy.ts +95 -0
  298. package/scripts/multichain-deploy/helpers.ts +8 -8
  299. package/scripts/proposals/reserveRestore.ts +429 -0
  300. package/scripts/test/localOldDaoDeploy.ts +2 -1
  301. package/test/governance/CompoundVotingMachine.daoscheme.ts +3 -0
  302. package/test/governance/CompoundVotingMachine.guardian.test.ts +76 -21
  303. package/test/governance/CompoundVotingMachine.state.test.ts +31 -28
  304. package/test/governance/StakersDistribution.test.ts +79 -5
  305. package/test/helpers.ts +7 -0
  306. package/test/reserve/DistributionHelper.test.ts +10 -10
  307. package/test/reserve/GoodMarketMaker.test.ts +75 -26
  308. package/test/staking/StakingRewards.test.ts +106 -29
  309. package/test/utils/ProtocolUpgrade.test.ts +1 -0
  310. package/types/contracts/{utils/BuyGDClone.sol → Interfaces.sol}/IQuoterV2.ts +1 -1
  311. package/types/contracts/{utils/BuyGDClone.sol → Interfaces.sol}/ISwapRouter.ts +1 -1
  312. package/types/contracts/Interfaces.sol/index.ts +2 -0
  313. package/types/contracts/fuseFaucet/SuperfluidFacuet.sol/SuperfluidFaucet.ts +867 -0
  314. package/types/contracts/fuseFaucet/SuperfluidFacuet.sol/index.ts +4 -0
  315. package/types/contracts/fuseFaucet/index.ts +2 -0
  316. package/types/contracts/governance/CompoundVotingMachine.ts +44 -3
  317. package/types/contracts/mocks/DistributionHelperTest.sol/DistributionHelperTest.ts +35 -0
  318. package/types/contracts/mocks/DistributionHelperTest.sol/DistributionHelperTestHelper.ts +35 -0
  319. package/types/contracts/mocks/GoodFundManagerTest.ts +35 -0
  320. package/types/contracts/reserve/DistributionHelper.ts +35 -0
  321. package/types/contracts/reserve/GoodMarketMaker.ts +3 -3
  322. package/types/contracts/reserve/GoodReserveCDai.sol/GoodReserveCDai.ts +5 -5
  323. package/types/contracts/staking/GoodFundManager.ts +35 -0
  324. package/types/contracts/utils/AdminWallet.ts +0 -34
  325. package/types/contracts/utils/BuyGDClone.sol/index.ts +0 -2
  326. package/types/contracts/utils/FuseOldBridgeKill.sol/FuseOldBridgeKill.ts +108 -0
  327. package/types/contracts/utils/FuseOldBridgeKill.sol/IUpgradeabilityOwnerStorage.ts +89 -0
  328. package/types/contracts/utils/FuseOldBridgeKill.sol/Initializable.ts +87 -0
  329. package/types/contracts/utils/FuseOldBridgeKill.sol/Ownable.ts +148 -0
  330. package/types/contracts/utils/FuseOldBridgeKill.sol/index.ts +7 -0
  331. package/types/contracts/utils/ReserveRestore.ts +201 -0
  332. package/types/contracts/utils/index.ts +3 -0
  333. package/types/factories/contracts/{utils/BuyGDClone.sol → Interfaces.sol}/IQuoterV2__factory.ts +1 -1
  334. package/types/factories/contracts/{utils/BuyGDClone.sol → Interfaces.sol}/ISwapRouter__factory.ts +1 -1
  335. package/types/factories/contracts/Interfaces.sol/index.ts +2 -0
  336. package/types/factories/contracts/fuseFaucet/Faucet__factory.ts +1 -1
  337. package/types/factories/contracts/fuseFaucet/FuseFaucetV2__factory.ts +1 -1
  338. package/types/factories/contracts/fuseFaucet/FuseFaucet__factory.ts +1 -1
  339. package/types/factories/contracts/fuseFaucet/SuperfluidFacuet.sol/SuperfluidFaucet__factory.ts +587 -0
  340. package/types/factories/contracts/fuseFaucet/SuperfluidFacuet.sol/index.ts +4 -0
  341. package/types/factories/contracts/fuseFaucet/index.ts +1 -0
  342. package/types/factories/contracts/governance/ClaimersDistribution__factory.ts +1 -1
  343. package/types/factories/contracts/governance/CompoundVotingMachine__factory.ts +19 -1
  344. package/types/factories/contracts/governance/GReputation__factory.ts +1 -1
  345. package/types/factories/contracts/governance/GoodDollarStaking.sol/GoodDollarStaking__factory.ts +1 -1
  346. package/types/factories/contracts/governance/GovernanceStaking__factory.ts +1 -1
  347. package/types/factories/contracts/governance/Reputation__factory.ts +1 -1
  348. package/types/factories/contracts/governance/StakersDistribution__factory.ts +1 -1
  349. package/types/factories/contracts/identity/IdentityV2__factory.ts +1 -1
  350. package/types/factories/contracts/invite/InvitesFuseV2__factory.ts +1 -1
  351. package/types/factories/contracts/invite/InvitesV1__factory.ts +1 -1
  352. package/types/factories/contracts/invite/InvitesV2__factory.ts +1 -1
  353. package/types/factories/contracts/invite/OneTimeReward__factory.ts +1 -1
  354. package/types/factories/contracts/mocks/DistributionBridgeMock__factory.ts +1 -1
  355. package/types/factories/contracts/mocks/DistributionHelperTest.sol/DistributionHelperTestHelper__factory.ts +20 -1
  356. package/types/factories/contracts/mocks/DistributionHelperTest.sol/DistributionHelperTest__factory.ts +20 -1
  357. package/types/factories/contracts/mocks/GoodCompoundStakingTest__factory.ts +1 -1
  358. package/types/factories/contracts/mocks/GoodDollarStakingMock__factory.ts +1 -1
  359. package/types/factories/contracts/mocks/GoodFundManagerTest__factory.ts +20 -1
  360. package/types/factories/contracts/mocks/IdentityMock__factory.ts +1 -1
  361. package/types/factories/contracts/mocks/MultichainRouterMock.sol/MultichainRouterMock__factory.ts +1 -1
  362. package/types/factories/contracts/mocks/OverMintTester.sol/OverMintTester__factory.ts +1 -1
  363. package/types/factories/contracts/mocks/OverMintTesterRegularStake__factory.ts +1 -1
  364. package/types/factories/contracts/mocks/SwapHelperTest__factory.ts +1 -1
  365. package/types/factories/contracts/mocks/UpgradableMocks.sol/UpgradableMock2__factory.ts +1 -1
  366. package/types/factories/contracts/mocks/UpgradableMocks.sol/UpgradableMock3__factory.ts +1 -1
  367. package/types/factories/contracts/mocks/UpgradableMocks.sol/UpgradableMock4__factory.ts +1 -1
  368. package/types/factories/contracts/mocks/UpgradableMocks.sol/UpgradableMock__factory.ts +1 -1
  369. package/types/factories/contracts/reserve/DistributionHelper__factory.ts +20 -1
  370. package/types/factories/contracts/reserve/ExchangeHelper__factory.ts +1 -1
  371. package/types/factories/contracts/reserve/GoodMarketMaker__factory.ts +5 -5
  372. package/types/factories/contracts/reserve/GoodReserveCDai.sol/GoodReserveCDai__factory.ts +2 -2
  373. package/types/factories/contracts/staking/BaseShareFieldV2__factory.ts +1 -1
  374. package/types/factories/contracts/staking/BaseShareField__factory.ts +1 -1
  375. package/types/factories/contracts/staking/DonationsStaking__factory.ts +1 -1
  376. package/types/factories/contracts/staking/FuseStakingV3.sol/FuseStakingV3__factory.ts +1 -1
  377. package/types/factories/contracts/staking/GoodFundManager__factory.ts +20 -1
  378. package/types/factories/contracts/staking/UniswapV2SwapHelper__factory.ts +1 -1
  379. package/types/factories/contracts/staking/aave/AaveStakingFactory__factory.ts +1 -1
  380. package/types/factories/contracts/staking/aave/GoodAaveStakingV2__factory.ts +1 -1
  381. package/types/factories/contracts/staking/aave/GoodAaveStaking__factory.ts +1 -1
  382. package/types/factories/contracts/staking/compound/CompoundStakingFactory__factory.ts +1 -1
  383. package/types/factories/contracts/staking/compound/GoodCompoundStakingV2__factory.ts +1 -1
  384. package/types/factories/contracts/staking/compound/GoodCompoundStaking__factory.ts +1 -1
  385. package/types/factories/contracts/token/GoodDollar__factory.ts +1 -1
  386. package/types/factories/contracts/token/superfluid/SuperGoodDollar__factory.ts +1 -1
  387. package/types/factories/contracts/ubi/UBISchemeV2__factory.ts +1 -1
  388. package/types/factories/contracts/ubi/UBIScheme__factory.ts +1 -1
  389. package/types/factories/contracts/utils/AdminWalletFuse__factory.ts +1 -1
  390. package/types/factories/contracts/utils/AdminWallet__factory.ts +1 -21
  391. package/types/factories/contracts/utils/BulkWhitelist__factory.ts +1 -1
  392. package/types/factories/contracts/utils/BuyAndBridgeHelper__factory.ts +1 -1
  393. package/types/factories/contracts/utils/BuyGDClone.sol/BuyGDCloneFactory__factory.ts +1 -1
  394. package/types/factories/contracts/utils/BuyGDClone.sol/BuyGDClone__factory.ts +1 -1
  395. package/types/factories/contracts/utils/BuyGDClone.sol/DonateGDClone__factory.ts +1 -1
  396. package/types/factories/contracts/utils/BuyGDClone.sol/index.ts +0 -2
  397. package/types/factories/contracts/utils/DAOContract__factory.ts +1 -1
  398. package/types/factories/contracts/utils/DAOUpgradeableContract__factory.ts +1 -1
  399. package/types/factories/contracts/utils/FuseOldBridgeKill.sol/FuseOldBridgeKill__factory.ts +82 -0
  400. package/types/factories/contracts/utils/FuseOldBridgeKill.sol/IUpgradeabilityOwnerStorage__factory.ts +43 -0
  401. package/types/factories/contracts/utils/FuseOldBridgeKill.sol/Initializable__factory.ts +75 -0
  402. package/types/factories/contracts/utils/FuseOldBridgeKill.sol/Ownable__factory.ts +105 -0
  403. package/types/factories/contracts/utils/FuseOldBridgeKill.sol/index.ts +7 -0
  404. package/types/factories/contracts/utils/GDFaucet__factory.ts +1 -1
  405. package/types/factories/contracts/utils/GoodDollarMintBurnWrapper.sol/GoodDollarMintBurnWrapper__factory.ts +1 -1
  406. package/types/factories/contracts/utils/IdentityFix__factory.ts +1 -1
  407. package/types/factories/contracts/utils/LastauthReduction__factory.ts +1 -1
  408. package/types/factories/contracts/utils/MultichainBridgeHelper__factory.ts +1 -1
  409. package/types/factories/contracts/utils/OneTimePaymentsV2__factory.ts +1 -1
  410. package/types/factories/contracts/utils/OneTimePayments__factory.ts +1 -1
  411. package/types/factories/contracts/utils/ProtocolUpgrade.sol/ProtocolUpgrade__factory.ts +1 -1
  412. package/types/factories/contracts/utils/ProtocolUpgradeFuseRecover__factory.ts +1 -1
  413. package/types/factories/contracts/utils/ProtocolUpgradeFuse__factory.ts +1 -1
  414. package/types/factories/contracts/utils/ProtocolUpgradeRecover__factory.ts +1 -1
  415. package/types/factories/contracts/utils/ReputationTestHelper__factory.ts +1 -1
  416. package/types/factories/contracts/utils/ReserveRestore__factory.ts +144 -0
  417. package/types/factories/contracts/utils/index.ts +2 -0
  418. package/types/hardhat.d.ts +70 -16
  419. package/types/index.ts +12 -4
  420. package/artifacts/contracts/utils/BuyGDClone.sol/IQuoterV2.dbg.json +0 -4
  421. package/artifacts/contracts/utils/BuyGDClone.sol/ISwapRouter.dbg.json +0 -4
@@ -89,6 +89,9 @@ describe("CompoundVotingMachine#DAOScheme", () => {
89
89
  await grep.mint(acct.address, ethers.BigNumber.from("500000"));
90
90
 
91
91
  queuePeriod = await gov.queuePeriod().then(_ => _.toNumber());
92
+
93
+ //disable guardian
94
+ await gov.renounceGuardian()
92
95
  });
93
96
 
94
97
  ///cell 0 - votingPeriod blocks, 1 - quoromPercentage, 2 - proposalPercentage,3 - proposalMaxOperations, 4 - voting delay blocks, 5 - queuePeriod time
@@ -185,13 +185,13 @@ describe("CompoundVotingMachine#Guardian", () => {
185
185
 
186
186
  await gov
187
187
  .connect(signers[4])
188
- ["propose(address[],uint256[],string[],bytes[],string)"](
189
- targets,
190
- values,
191
- signatures,
192
- callDatas,
193
- "do nothing"
194
- );
188
+ ["propose(address[],uint256[],string[],bytes[],string)"](
189
+ targets,
190
+ values,
191
+ signatures,
192
+ callDatas,
193
+ "do nothing"
194
+ );
195
195
  let proposalId = await gov.latestProposalIds(signers[4].address);
196
196
  await advanceBlocks(1);
197
197
 
@@ -204,34 +204,89 @@ describe("CompoundVotingMachine#Guardian", () => {
204
204
  await grep.delegateTo(root.address); //delegate back our votes
205
205
  });
206
206
 
207
+ it("Should not be able to pass proposal without guardian approval", async () => {
208
+ let targets = [gov.address];
209
+ let values = ["0"];
210
+ let signatures = ["setGuardian(address)"];
211
+ let callDatas = [encodeParameters(["address"], [signers[1].address])];
212
+
213
+ await gov
214
+ .connect(root)
215
+ ["propose(address[],uint256[],string[],bytes[],string)"](
216
+ targets,
217
+ values,
218
+ signatures,
219
+ callDatas,
220
+ "set guardian"
221
+ );
222
+ let proposalBlock = +(await ethers.provider.getBlockNumber());
223
+ let proposalId = await gov.latestProposalIds(root.address);
224
+ await advanceBlocks(1);
225
+ await gov.connect(root).castVote(proposalId, true);
226
+ await increaseTime(queuePeriod);
227
+ expect(states[await gov.state(proposalId)]).to.equal("Succeeded");
228
+
229
+ await expect(gov.execute(proposalId)).revertedWith(/not approved/);
230
+
231
+ })
232
+
207
233
  it("Should be able to pass proposal to change guardian", async () => {
208
- console.log(
209
- grep.address,
210
- await grep.totalSupply().then(_ => _.toString()),
211
- await (await grep.getVotes(root.address)).toString(),
212
- await (await grep.balanceOfLocal(root.address)).toString(),
213
- await gov.rep()
234
+ let targets = [gov.address];
235
+ let values = ["0"];
236
+ let signatures = ["setGuardian(address)"];
237
+ let callDatas = [encodeParameters(["address"], [signers[2].address])];
238
+
239
+ await gov
240
+ .connect(root)
241
+ ["propose(address[],uint256[],string[],bytes[],string)"](
242
+ targets,
243
+ values,
244
+ signatures,
245
+ callDatas,
246
+ "set guardian"
214
247
  );
248
+ let proposalBlock = +(await ethers.provider.getBlockNumber());
249
+ let proposalId = await gov.latestProposalIds(root.address);
250
+ await advanceBlocks(1);
251
+ await gov.connect(root).castVote(proposalId, true);
252
+ await increaseTime(queuePeriod);
253
+ expect(states[await gov.state(proposalId)]).to.equal("Succeeded");
254
+
255
+ await gov.connect(signers[1]).approveProposal(proposalId)
256
+
257
+ await gov.execute(proposalId);
258
+ expect(states[await gov.state(proposalId)]).to.equal("Executed");
259
+
260
+ //acct should now have 1M after proposal minted rep
261
+ expect(await gov.guardian()).to.equal(signers[2].address);
262
+ });
263
+
264
+ it("Should be able to pass proposal without approval if no guardian set", async () => {
215
265
  let targets = [gov.address];
216
266
  let values = ["0"];
217
267
  let signatures = ["setGuardian(address)"];
218
268
  let callDatas = [encodeParameters(["address"], [signers[1].address])];
219
269
 
270
+ await gov.connect(signers[2]).renounceGuardian()
271
+
272
+ expect(await gov.guardian()).equal(ethers.constants.AddressZero)
273
+
220
274
  await gov
221
275
  .connect(root)
222
- ["propose(address[],uint256[],string[],bytes[],string)"](
223
- targets,
224
- values,
225
- signatures,
226
- callDatas,
227
- "set guardian"
228
- );
229
- let proposalBlock = +(await ethers.provider.getBlockNumber());
276
+ ["propose(address[],uint256[],string[],bytes[],string)"](
277
+ targets,
278
+ values,
279
+ signatures,
280
+ callDatas,
281
+ "set guardian"
282
+ );
283
+
230
284
  let proposalId = await gov.latestProposalIds(root.address);
231
285
  await advanceBlocks(1);
232
286
  await gov.connect(root).castVote(proposalId, true);
233
287
  await increaseTime(queuePeriod);
234
288
  expect(states[await gov.state(proposalId)]).to.equal("Succeeded");
289
+
235
290
  await gov.execute(proposalId);
236
291
  expect(states[await gov.state(proposalId)]).to.equal("Executed");
237
292
 
@@ -107,6 +107,9 @@ describe("CompoundVotingMachine#States", () => {
107
107
  votePeriod = await gov.votingPeriod().then(_ => _.toNumber());
108
108
  queuePeriod = await gov.queuePeriod().then(_ => _.toNumber());
109
109
  gracePeriod = await gov.gracePeriod().then(_ => _.toNumber());
110
+
111
+ //disable guardian
112
+ await gov.renounceGuardian()
110
113
  });
111
114
 
112
115
  it("Invalid for proposal not found", async () => {
@@ -130,13 +133,13 @@ describe("CompoundVotingMachine#States", () => {
130
133
  await grep.delegateTo(actor.address);
131
134
  await gov
132
135
  .connect(actor)
133
- ["propose(address[],uint256[],string[],bytes[],string)"](
134
- targets,
135
- values,
136
- signatures,
137
- callDatas,
138
- "do nothing"
139
- );
136
+ ["propose(address[],uint256[],string[],bytes[],string)"](
137
+ targets,
138
+ values,
139
+ signatures,
140
+ callDatas,
141
+ "do nothing"
142
+ );
140
143
  let newProposalId = await gov.proposalCount();
141
144
 
142
145
  // send away the delegates
@@ -212,13 +215,13 @@ describe("CompoundVotingMachine#States", () => {
212
215
  await advanceBlocks(1);
213
216
  await gov
214
217
  .connect(actor)
215
- ["propose(address[],uint256[],string[],bytes[],string)"](
216
- targets,
217
- values,
218
- signatures,
219
- callDatas,
220
- "do nothing"
221
- );
218
+ ["propose(address[],uint256[],string[],bytes[],string)"](
219
+ targets,
220
+ values,
221
+ signatures,
222
+ callDatas,
223
+ "do nothing"
224
+ );
222
225
  let proposalId = await gov.latestProposalIds(actor.address);
223
226
  await advanceBlocks(1);
224
227
  await gov.connect(actor).castVote(proposalId, false);
@@ -237,13 +240,13 @@ describe("CompoundVotingMachine#States", () => {
237
240
  await advanceBlocks(1);
238
241
  await gov
239
242
  .connect(actor)
240
- ["propose(address[],uint256[],string[],bytes[],string)"](
241
- targets,
242
- values,
243
- signatures,
244
- callDatas,
245
- "do nothing"
246
- );
243
+ ["propose(address[],uint256[],string[],bytes[],string)"](
244
+ targets,
245
+ values,
246
+ signatures,
247
+ callDatas,
248
+ "do nothing"
249
+ );
247
250
  let proposalId = await gov.latestProposalIds(actor.address);
248
251
  await advanceBlocks(1);
249
252
  await gov.connect(actor).castVote(proposalId, true);
@@ -310,13 +313,13 @@ describe("CompoundVotingMachine#States", () => {
310
313
  await advanceBlocks(1);
311
314
  await gov
312
315
  .connect(signers[0])
313
- ["propose(address[],uint256[],string[],bytes[],string)"](
314
- targets,
315
- values,
316
- signatures,
317
- callDatas,
318
- "do nothing"
319
- );
316
+ ["propose(address[],uint256[],string[],bytes[],string)"](
317
+ targets,
318
+ values,
319
+ signatures,
320
+ callDatas,
321
+ "do nothing"
322
+ );
320
323
  let proposalId = await gov.proposalCount();
321
324
  await advanceBlocks(1);
322
325
 
@@ -652,7 +652,6 @@ describe("StakersDistribution - staking with GD and get Rewards in GDAO", () =>
652
652
  );
653
653
  await advanceBlocks(4);
654
654
  const gdaoBalanceBeforeWithdraw = await grep.balanceOf(staker.address);
655
- console.log({ gdaoBalanceBeforeWithdraw, rewardsPerBlock });
656
655
  await simpleStaking1.connect(staker).withdrawStake(stakingAmount, false);
657
656
  const withdrawBlockNumber = await ethers.provider.getBlockNumber();
658
657
  await stakersDistribution.claimReputation(staker.address, [
@@ -903,8 +902,8 @@ describe("StakersDistribution - staking with GD and get Rewards in GDAO", () =>
903
902
  staker.address,
904
903
  simpleStaking1.address
905
904
  );
906
- expect(userMintedRewardAfterStake.eq(0));
907
- expect(userPendingRewardAfterStake.gt(0));
905
+ expect(userMintedRewardAfterStake).eq(0);
906
+ expect(userPendingRewardAfterStake).gt(0);
908
907
 
909
908
  await stakersDistribution.claimReputation(staker.address, [
910
909
  simpleStaking1.address
@@ -915,8 +914,8 @@ describe("StakersDistribution - staking with GD and get Rewards in GDAO", () =>
915
914
  staker.address,
916
915
  simpleStaking1.address
917
916
  );
918
- expect(userMintedRewardAfterClaim.gt(0));
919
- expect(userPendingRewardAfterClaim.eq(0));
917
+ expect(userMintedRewardAfterClaim).gt(0);
918
+ expect(userPendingRewardAfterClaim).eq(0);
920
919
  });
921
920
 
922
921
  async function getUserMintedAndPendingRewards(
@@ -933,4 +932,79 @@ describe("StakersDistribution - staking with GD and get Rewards in GDAO", () =>
933
932
 
934
933
  return [userMintedReward, userPendingReward];
935
934
  }
935
+
936
+ it("should update user rewards when monthly rate has changed", async () => {
937
+ const goodFundManagerFactory = await ethers.getContractFactory(
938
+ "GoodFundManager"
939
+ );
940
+
941
+ const simpleStaking1 = await deployDaiStaking();
942
+ const ictrl = await ethers.getContractAt(
943
+ "Controller",
944
+ controller,
945
+ schemeMock
946
+ );
947
+ const currentBlockNumber = await ethers.provider.getBlockNumber();
948
+ let encodedData = goodFundManagerFactory.interface.encodeFunctionData(
949
+ "setStakingReward",
950
+ [
951
+ "100000",
952
+ simpleStaking1.address,
953
+ currentBlockNumber - 5,
954
+ currentBlockNumber + 20,
955
+ false
956
+ ] // set 10 gd per block
957
+ );
958
+
959
+ await ictrl.genericCall(goodFundManager.address, encodedData, avatar, 0);
960
+
961
+ let [userMintedRewardBeforeStake, userPendingRewardBeforeStake] =
962
+ await getUserMintedAndPendingRewards(
963
+ staker.address,
964
+ simpleStaking1.address
965
+ );
966
+ expect(userMintedRewardBeforeStake).to.eq("0");
967
+ expect(userPendingRewardBeforeStake).to.eq("0");
968
+
969
+ const stakingAmount = ethers.utils.parseEther("1000");
970
+ await dai["mint(address,uint256)"](staker.address, stakingAmount);
971
+ await dai.connect(staker).approve(simpleStaking1.address, stakingAmount);
972
+ await simpleStaking1.connect(staker).stake(stakingAmount, 0, false);
973
+ await advanceBlocks(5); //should accumulate some gdao rewards
974
+
975
+ const rewardsPerBlockBefore = await stakersDistribution.rewardsPerBlock(
976
+ simpleStaking1.address
977
+ );
978
+
979
+ // reduce rewarsd speed by half from 2m to 1m
980
+ let encoded = stakersDistribution.interface.encodeFunctionData(
981
+ "setMonthlyReputationDistribution",
982
+ [ethers.utils.parseEther("1000000")]
983
+ );
984
+ await genericCall(stakersDistribution.address, encoded);
985
+ const rewardsPerBlockAfter = await stakersDistribution.rewardsPerBlock(
986
+ simpleStaking1.address
987
+ );
988
+ let [userMintedRewardAfterStake, userPendingRewardAfterStake] =
989
+ await getUserMintedAndPendingRewards(
990
+ staker.address,
991
+ simpleStaking1.address
992
+ );
993
+ expect(userMintedRewardAfterStake).eq(0);
994
+ expect(userPendingRewardAfterStake).gt(0);
995
+
996
+ await advanceBlocks(4); //should accumulate some gdao rewards
997
+ let [userMintedRewardAfterUpdate, userPendingRewardAfterUpdate] =
998
+ await getUserMintedAndPendingRewards(
999
+ staker.address,
1000
+ simpleStaking1.address
1001
+ );
1002
+ expect(userMintedRewardAfterUpdate).eq(0);
1003
+ // rewards speed has been reduced by half,
1004
+ expect(rewardsPerBlockAfter).lt(rewardsPerBlockBefore.mul(55).div(100));
1005
+ // was forced 4 blocks to pass since reward update
1006
+ expect(userPendingRewardAfterUpdate).eq(
1007
+ userPendingRewardAfterStake.add(rewardsPerBlockAfter.mul(4))
1008
+ );
1009
+ });
936
1010
  });
package/test/helpers.ts CHANGED
@@ -301,6 +301,9 @@ export const createDAO = async (tokenType: "super" | "regular" = "super") => {
301
301
  kind: "uups"
302
302
  }
303
303
  );
304
+
305
+ console.log("deploying disthelper...");
306
+
304
307
  let distHelper = await upgrades.deployProxy(
305
308
  await ethers.getContractFactory("DistributionHelper"),
306
309
  [nameService.address],
@@ -438,6 +441,10 @@ export const createDAO = async (tokenType: "super" | "regular" = "super") => {
438
441
  await setDAOAddress("REPUTATION", reputation.address);
439
442
 
440
443
  console.log("setting reserve token...");
444
+ await cDAI["mint(address,uint256)"](
445
+ goodReserve.address,
446
+ 10000
447
+ );
441
448
  await setReserveToken(
442
449
  cDAI.address,
443
450
  "100", //1gd
@@ -195,7 +195,7 @@ describe("DistributionHelper", () => {
195
195
  expect(dr.transferType).to.equal(2);
196
196
  });
197
197
 
198
- it("should distribute via fuse bridge", async () => {
198
+ it("should not distribute via fuse bridge", async () => {
199
199
  const { distHelper, bridge } = await loadFixture(fixture);
200
200
 
201
201
  const recipient = signers[0];
@@ -215,15 +215,15 @@ describe("DistributionHelper", () => {
215
215
  await genericCall(distHelper.address, encodedCall, avatar.address, 0);
216
216
 
217
217
  await goodDollar.mint(distHelper.address, "100000000000");
218
- await distHelper.onDistribution("100000000000");
219
- expect(await goodDollar.balanceOf(bridge.address)).to.equal(
220
- (100000000000 * 2000) / 10000
221
- );
222
-
223
- const events = await bridge.queryFilter(bridge.filters.OnToken());
224
- expect(events[0].args.sender).to.equal(distHelper.address);
225
- expect(events[0].args.amount).to.equal((100000000000 * 2000) / 10000);
226
- expect(events[0].args.data).to.equal(recipient.address.toLowerCase());
218
+ await expect(distHelper.onDistribution("100000000000")).revertedWith("DEPRECATED");
219
+ // expect(await goodDollar.balanceOf(bridge.address)).to.equal(
220
+ // (100000000000 * 2000) / 10000
221
+ // );
222
+
223
+ // const events = await bridge.queryFilter(bridge.filters.OnToken());
224
+ // expect(events[0].args.sender).to.equal(distHelper.address);
225
+ // expect(events[0].args.amount).to.equal((100000000000 * 2000) / 10000);
226
+ // expect(events[0].args.data).to.equal(recipient.address.toLowerCase());
227
227
  });
228
228
 
229
229
  it("should distribute via layerzero bridge", async () => {
@@ -120,6 +120,22 @@ describe("GoodMarketMaker - calculate gd value at reserve", () => {
120
120
  expect(onecDAIReturn.toNumber() / 100).to.be.equal(10000); //0.0001 cdai is 1 gd, so for 1eth you get 10000 gd (divide by 100 to account for 2 decimals precision)
121
121
  });
122
122
 
123
+ it("should calculate mint UBI correctly for 8 decimals precision when price is 0.0001 and 100% ratio", async () => {
124
+ const expansion = await initializeToken(
125
+ cdai,
126
+ "100", //1gd
127
+ "10000", //0.0001 cDai
128
+ "1000000" //100% rr
129
+ );
130
+ const gdPrice = await marketMaker.currentPrice(cdai);
131
+ const toMint = await marketMaker.calculateMintInterest(cdai, "100000000");
132
+ const expectedTotalMinted = 10 ** 8 / gdPrice.toNumber(); //1cdai divided by gd price;
133
+ expect(expectedTotalMinted).to.be.equal(10000); //1k GD since price is 0.0001 cdai for 1 gd
134
+ expect(toMint.toString()).to.be.equal(
135
+ (expectedTotalMinted * 100).toString()
136
+ ); //add 2 decimals precision
137
+ });
138
+
123
139
  it("should update reserve ratio by days passed", async () => {
124
140
  const expansion = await marketMaker.reserveRatioDailyExpansion();
125
141
  // 20% yearly. set up in the constructor
@@ -144,16 +160,6 @@ describe("GoodMarketMaker - calculate gd value at reserve", () => {
144
160
  ).to.be.equal("994511"); // 998777 * 0.999388834642296000000000000^7
145
161
  });
146
162
 
147
- it("should calculate mint UBI correctly for 8 decimals precision", async () => {
148
- const gdPrice = await marketMaker.currentPrice(cdai);
149
- const toMint = await marketMaker.calculateMintInterest(cdai, "100000000");
150
- const expectedTotalMinted = 10 ** 8 / gdPrice.toNumber(); //1cdai divided by gd price;
151
- expect(expectedTotalMinted).to.be.equal(10000); //1k GD since price is 0.0001 cdai for 1 gd
152
- expect(toMint.toString()).to.be.equal(
153
- (expectedTotalMinted * 100).toString()
154
- ); //add 2 decimals precision
155
- });
156
-
157
163
  it("should not return a sell contribution if the given gd is less than the given contribution amount", async () => {
158
164
  let dai = await deployDAIMock();
159
165
 
@@ -181,13 +187,27 @@ describe("GoodMarketMaker - calculate gd value at reserve", () => {
181
187
  });
182
188
 
183
189
  it("should be able to calculate and update bonding curve gd balance based on oncoming cDAI and the price stays the same", async () => {
184
- const priceBefore = await marketMaker.currentPrice(cdai);
190
+ let priceBefore = await marketMaker.currentPrice(cdai);
185
191
  await marketMaker.mintInterest(cdai, BN.from(1e8));
192
+ let priceAfter = await marketMaker.currentPrice(cdai)
193
+
194
+ expect(priceAfter).gt(0)
195
+ expect(priceBefore).gt(0)
186
196
  expect(
187
197
  Math.floor(
188
- (await marketMaker.currentPrice(cdai).then(_ => _.toNumber())) / 100
189
- ).toString()
198
+ (priceAfter.toNumber() / 100)).toString()
190
199
  ).to.be.equal(Math.floor(priceBefore.toNumber() / 100).toString());
200
+
201
+
202
+ // very large amount of cdai
203
+ priceBefore = await marketMaker.currentPrice(cdai);
204
+ await marketMaker.mintInterest(cdai, ethers.utils.parseEther("1"));
205
+ priceAfter = await marketMaker.currentPrice(cdai)
206
+
207
+ console.log({ priceAfter, priceBefore })
208
+ expect(priceAfter).gt(0)
209
+ expect(priceBefore).gt(0)
210
+ expect(priceAfter).to.eq(priceBefore);
191
211
  });
192
212
 
193
213
  it("should not be able to mint interest by a non owner", async () => {
@@ -273,11 +293,12 @@ describe("GoodMarketMaker - calculate gd value at reserve", () => {
273
293
  "800000" //80% rr
274
294
  );
275
295
  const price = await marketMaker.currentPrice(dai);
276
- expect(price.toString()).to.be.equal("100000000000000"); //1gd is equal 0.0001 dai = 1000000000000000 wei;
296
+ expect(price.toString()).to.be.equal(ethers.utils.parseEther("0.000125")); //1gd is equal 0.0001/1*0.8 = 0.000125
277
297
  const oneDAIReturn = await marketMaker.buyReturn(
278
298
  dai,
279
299
  ethers.utils.parseEther("1") //1Dai
280
300
  );
301
+
281
302
  //bancor formula to calcualte return
282
303
  //gd return = gdsupply * ((1+tokenamount/tokensupply)^rr -1)
283
304
  const expectedReturn = 1 * ((1 + 1 / 0.0001) ** 0.8 - 1);
@@ -292,16 +313,27 @@ describe("GoodMarketMaker - calculate gd value at reserve", () => {
292
313
  dai,
293
314
  ethers.utils.parseEther("1")
294
315
  );
295
- const expectedTotalMinted = 10 ** 18 / gdPrice.toNumber();
296
- // according to the sell formula the gd price should be 10^14 so 10^18 / 10^14 = 10^4
297
- // Return = _reserveBalance * (1 - (1 - _sellAmount / _supply) ^ (1000000 / _reserveRatio))
298
- expect(expectedTotalMinted).to.be.equal(10000);
316
+ let reserveToken = await marketMaker.reserveTokens(dai);
317
+
318
+ //we expect price to stay the same p = reserve/supply*RR
319
+ const newPrice = reserveToken.reserveSupply.add(ethers.utils.parseEther("1")).mul(1e8).div(reserveToken.gdSupply.add(toMint).mul(reserveToken.reserveRatio))
320
+ expect(newPrice).equal(gdPrice)
321
+
322
+ // the formula is amountToMint = reserveInterest * tokenSupply / reserveBalance
323
+ const expectedTotalMinted = 10 ** 18 * reserveToken.gdSupply.toNumber() / reserveToken.reserveSupply.toNumber()
324
+ expect(expectedTotalMinted).to.be.equal(1000000);
299
325
  expect(toMint.toString()).to.be.equal(
300
- (expectedTotalMinted * 100).toString()
326
+ (expectedTotalMinted).toString()
301
327
  );
302
328
  });
303
329
 
304
330
  it("should calculate sell return with cDAI", async () => {
331
+ await initializeToken(
332
+ cdai,
333
+ "1000000000", //1gd
334
+ "100000000000", //0.0001 cDai
335
+ "900000" //80% rr
336
+ );
305
337
  const gDReturn = await marketMaker.sellReturn(
306
338
  cdai,
307
339
  10 //0.1 gd
@@ -515,19 +547,36 @@ describe("GoodMarketMaker - calculate gd value at reserve", () => {
515
547
  });
516
548
 
517
549
  it("should calculate amount of gd to mint based on incoming cDAI without effecting bonding curve price", async () => {
518
- const priceBefore = await marketMaker.currentPrice(dai);
519
- const toMint = await marketMaker.calculateMintInterest(
550
+ await initializeToken(
520
551
  dai,
521
- BN.from("1000000000000000000")
522
- );
523
- const totalMinted = 1e18 / priceBefore.toNumber();
524
- expect(toMint.toString()).to.be.equal(
525
- Math.floor(totalMinted * 100).toString()
552
+ 6e11,
553
+ ethers.utils.parseEther("600000"),
554
+ 5e5
526
555
  );
556
+
557
+ const priceBefore = await marketMaker.currentPrice(dai);
558
+
559
+ await marketMaker.mintInterest(dai, ethers.utils.parseEther("100"))
527
560
  const priceAfter = await marketMaker.currentPrice(dai);
528
561
  expect(priceBefore.toString()).to.be.equal(priceAfter.toString());
529
562
  });
530
563
 
564
+ it("should calculate amount of gd to mint based on incoming cDAI with small precision issue effecting bonding curve price in very low amounts", async () => {
565
+ await initializeToken(
566
+ dai,
567
+ 600,
568
+ 600000000,
569
+ 5e5
570
+ );
571
+
572
+ const priceBefore = await marketMaker.currentPrice(dai);
573
+
574
+ await marketMaker.mintInterest(dai, 60000)
575
+ const priceAfter = await marketMaker.currentPrice(dai);
576
+ expect(priceBefore).equal(200000000)
577
+ expect(priceAfter).equal(200020000)
578
+ });
579
+
531
580
  it("should not change the reserve ratio when calculate how much decrease it for the reservetoken", async () => {
532
581
  let reserveTokenBefore = await marketMaker.reserveTokens(cdai);
533
582
  let reserveRatioBefore = reserveTokenBefore.reserveRatio;