@gooddollar/goodprotocol 2.1.3 → 2.2.0-beta.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 (318) hide show
  1. package/README.md +0 -2
  2. package/artifacts/abis/IdentityV4.min.json +1 -0
  3. package/artifacts/contracts/DAOStackInterfaces.sol/Avatar.dbg.json +1 -1
  4. package/artifacts/contracts/DAOStackInterfaces.sol/Controller.dbg.json +1 -1
  5. package/artifacts/contracts/DAOStackInterfaces.sol/GlobalConstraintInterface.dbg.json +1 -1
  6. package/artifacts/contracts/DAOStackInterfaces.sol/IntVoteInterface.dbg.json +1 -1
  7. package/artifacts/contracts/DAOStackInterfaces.sol/ReputationInterface.dbg.json +1 -1
  8. package/artifacts/contracts/DAOStackInterfaces.sol/SchemeRegistrar.dbg.json +1 -1
  9. package/artifacts/contracts/IUniswapV3.sol/INonfungiblePositionManager.dbg.json +1 -1
  10. package/artifacts/contracts/IUniswapV3.sol/IUniswapV3Pool.dbg.json +1 -1
  11. package/artifacts/contracts/Interfaces.sol/AggregatorV3Interface.dbg.json +1 -1
  12. package/artifacts/contracts/Interfaces.sol/ERC20.dbg.json +1 -1
  13. package/artifacts/contracts/Interfaces.sol/IAaveIncentivesController.dbg.json +1 -1
  14. package/artifacts/contracts/Interfaces.sol/IAdminWallet.dbg.json +1 -1
  15. package/artifacts/contracts/Interfaces.sol/IDonationStaking.dbg.json +1 -1
  16. package/artifacts/contracts/Interfaces.sol/IERC2917.dbg.json +1 -1
  17. package/artifacts/contracts/Interfaces.sol/IFirstClaimPool.dbg.json +1 -1
  18. package/artifacts/contracts/Interfaces.sol/IGoodDollar.dbg.json +1 -1
  19. package/artifacts/contracts/Interfaces.sol/IGoodStaking.dbg.json +1 -1
  20. package/artifacts/contracts/Interfaces.sol/IHasRouter.dbg.json +1 -1
  21. package/artifacts/contracts/Interfaces.sol/IIdentity.dbg.json +1 -1
  22. package/artifacts/contracts/Interfaces.sol/IIdentityV2.dbg.json +1 -1
  23. package/artifacts/contracts/Interfaces.sol/ILendingPool.dbg.json +1 -1
  24. package/artifacts/contracts/Interfaces.sol/IMultichainRouter.dbg.json +1 -1
  25. package/artifacts/contracts/Interfaces.sol/INameService.dbg.json +1 -1
  26. package/artifacts/contracts/Interfaces.sol/IQuoterV2.dbg.json +1 -1
  27. package/artifacts/contracts/Interfaces.sol/ISwapRouter.dbg.json +1 -1
  28. package/artifacts/contracts/Interfaces.sol/IUBIScheme.dbg.json +1 -1
  29. package/artifacts/contracts/Interfaces.sol/ProxyAdmin.dbg.json +1 -1
  30. package/artifacts/contracts/Interfaces.sol/Reserve.dbg.json +1 -1
  31. package/artifacts/contracts/Interfaces.sol/Staking.dbg.json +1 -1
  32. package/artifacts/contracts/Interfaces.sol/Uniswap.dbg.json +1 -1
  33. package/artifacts/contracts/Interfaces.sol/UniswapFactory.dbg.json +1 -1
  34. package/artifacts/contracts/Interfaces.sol/UniswapPair.dbg.json +1 -1
  35. package/artifacts/contracts/Interfaces.sol/cERC20.dbg.json +1 -1
  36. package/artifacts/contracts/MentoInterfaces.sol/IBancorExchangeProvider.dbg.json +1 -1
  37. package/artifacts/contracts/MentoInterfaces.sol/IBroker.dbg.json +1 -1
  38. package/artifacts/contracts/MentoInterfaces.sol/IGoodDollarExchangeProvider.dbg.json +1 -1
  39. package/artifacts/contracts/MentoInterfaces.sol/IGoodDollarExpansionController.dbg.json +1 -1
  40. package/artifacts/contracts/MentoInterfaces.sol/IMentoReserve.dbg.json +1 -1
  41. package/artifacts/contracts/MentoInterfaces.sol/ITradingLimits.dbg.json +1 -1
  42. package/artifacts/contracts/fuseFaucet/Faucet.sol/Faucet.dbg.json +1 -1
  43. package/artifacts/contracts/fuseFaucet/FuseFaucet.sol/FuseFaucet.dbg.json +1 -1
  44. package/artifacts/contracts/fuseFaucet/FuseFaucetV2.sol/FuseFaucetV2.dbg.json +1 -1
  45. package/artifacts/contracts/fuseFaucet/SuperfluidFacuet.sol/SuperfluidFaucet.dbg.json +1 -1
  46. package/artifacts/contracts/governance/ClaimersDistribution.sol/ClaimersDistribution.dbg.json +1 -1
  47. package/artifacts/contracts/governance/CompoundVotingMachine.sol/CompoundVotingMachine.dbg.json +1 -1
  48. package/artifacts/contracts/governance/GReputation.sol/GReputation.dbg.json +1 -1
  49. package/artifacts/contracts/governance/GoodDollarStaking.sol/GoodDollarStaking.dbg.json +1 -1
  50. package/artifacts/contracts/governance/GoodDollarStaking.sol/GoodDollarStaking.json +2 -2
  51. package/artifacts/contracts/governance/GoodDollarStaking.sol/IGovernanceStaking.dbg.json +1 -1
  52. package/artifacts/contracts/governance/GoodDollarStaking.sol/IStakingUpgrade.dbg.json +1 -1
  53. package/artifacts/contracts/governance/GoodDollarStaking.sol/RewardsMinter.dbg.json +1 -1
  54. package/artifacts/contracts/governance/GovernanceStaking.sol/GovernanceStaking.dbg.json +1 -1
  55. package/artifacts/contracts/governance/MultiBaseGovernanceShareField.sol/MultiBaseGovernanceShareField.dbg.json +1 -1
  56. package/artifacts/contracts/governance/Reputation.sol/Reputation.dbg.json +1 -1
  57. package/artifacts/contracts/governance/StakersDistribution.sol/StakersDistribution.dbg.json +1 -1
  58. package/artifacts/contracts/identity/IdentityV2.sol/IdentityV2.dbg.json +1 -1
  59. package/artifacts/contracts/identity/IdentityV3.sol/IdentityV3.dbg.json +1 -1
  60. package/artifacts/contracts/identity/IdentityV3.sol/IdentityV3.json +2 -2
  61. package/artifacts/contracts/identity/IdentityV4.sol/IdentityV4.dbg.json +4 -0
  62. package/artifacts/contracts/identity/IdentityV4.sol/IdentityV4.json +1162 -0
  63. package/artifacts/contracts/invite/InvitesFuseV2.sol/InvitesFuseV2.dbg.json +1 -1
  64. package/artifacts/contracts/invite/InvitesV1.sol/InvitesV1.dbg.json +1 -1
  65. package/artifacts/contracts/invite/InvitesV2.sol/InvitesV2.dbg.json +1 -1
  66. package/artifacts/contracts/invite/OneTimeReward.sol/OneTimeReward.dbg.json +1 -1
  67. package/artifacts/contracts/mocks/AaveMock.sol/AaveMock.dbg.json +1 -1
  68. package/artifacts/contracts/mocks/AaveUSDMockOracle.sol/AaveUSDMockOracle.dbg.json +1 -1
  69. package/artifacts/contracts/mocks/BatUSDMockOracle.sol/BatUSDMockOracle.dbg.json +1 -1
  70. package/artifacts/contracts/mocks/CeloDistributionHelperTest.sol/CeloDistributionHelperTest.dbg.json +1 -1
  71. package/artifacts/contracts/mocks/CeloDistributionHelperTest.sol/CeloDistributionHelperTestHelper.dbg.json +1 -1
  72. package/artifacts/contracts/mocks/CompUsdMockOracle.sol/CompUSDMockOracle.dbg.json +1 -1
  73. package/artifacts/contracts/mocks/DAIMock.sol/DAIMock.dbg.json +1 -1
  74. package/artifacts/contracts/mocks/DaiEthPriceMockOracle.sol/DaiEthPriceMockOracle.dbg.json +1 -1
  75. package/artifacts/contracts/mocks/DecimalsMock.sol/DecimalsMock.dbg.json +1 -1
  76. package/artifacts/contracts/mocks/DistributionBridgeMock.sol/DistributionBridgeMock.dbg.json +1 -1
  77. package/artifacts/contracts/mocks/DistributionBridgeMock.sol/DistributionBridgeMock.json +2 -2
  78. package/artifacts/contracts/mocks/DistributionHelperTest.sol/DistributionHelperTest.dbg.json +1 -1
  79. package/artifacts/contracts/mocks/DistributionHelperTest.sol/DistributionHelperTestHelper.dbg.json +1 -1
  80. package/artifacts/contracts/mocks/EthUSDMockOracle.sol/EthUSDMockOracle.dbg.json +1 -1
  81. package/artifacts/contracts/mocks/FeesFormularMock.sol/FeesFormulaMock.dbg.json +1 -1
  82. package/artifacts/contracts/mocks/GasPriceMockOracle.sol/GasPriceMockOracle.dbg.json +1 -1
  83. package/artifacts/contracts/mocks/GenericDistributionHelperTest.sol/GenericDistributionHelperTest.dbg.json +1 -1
  84. package/artifacts/contracts/mocks/GenericDistributionHelperTest.sol/GenericDistributionHelperTestHelper.dbg.json +1 -1
  85. package/artifacts/contracts/mocks/GoodCompoundStakingTest.sol/GoodCompoundStakingTest.dbg.json +1 -1
  86. package/artifacts/contracts/mocks/GoodDollarStakingMock.sol/GoodDollarStakingMock.dbg.json +1 -1
  87. package/artifacts/contracts/mocks/GoodDollarStakingMock.sol/GoodDollarStakingMock.json +2 -2
  88. package/artifacts/contracts/mocks/GoodFundManagerTest.sol/GoodFundManagerTest.dbg.json +1 -1
  89. package/artifacts/contracts/mocks/IdentityMock.sol/IdentityMock.dbg.json +1 -1
  90. package/artifacts/contracts/mocks/IncentiveControllerMock.sol/IncentiveControllerMock.dbg.json +1 -1
  91. package/artifacts/contracts/mocks/LendingPoolMock.sol/LendingPoolMock.dbg.json +1 -1
  92. package/artifacts/contracts/mocks/MultichainRouterMock.sol/IWrapper.dbg.json +1 -1
  93. package/artifacts/contracts/mocks/MultichainRouterMock.sol/MultichainRouterMock.dbg.json +1 -1
  94. package/artifacts/contracts/mocks/MultichainRouterMock.sol/MultichainRouterMock.json +2 -2
  95. package/artifacts/contracts/mocks/OverMintTester.sol/IGoodDollarStakingTest.dbg.json +1 -1
  96. package/artifacts/contracts/mocks/OverMintTester.sol/OverMintTester.dbg.json +1 -1
  97. package/artifacts/contracts/mocks/OverMintTesterRegularStake.sol/OverMintTesterRegularStake.dbg.json +1 -1
  98. package/artifacts/contracts/mocks/PayableMock.sol/PayableMock.dbg.json +1 -1
  99. package/artifacts/contracts/mocks/SixteenDecimalsTokenMock.sol/SixteenDecimalsTokenMock.dbg.json +1 -1
  100. package/artifacts/contracts/mocks/StakingMockFixedAPY.sol/StakingMockFixedAPY.dbg.json +1 -1
  101. package/artifacts/contracts/mocks/StakingMockFixedAPY.sol/StakingMockFixedAPY.json +2 -2
  102. package/artifacts/contracts/mocks/SwapHelperTest.sol/SwapHelperTest.dbg.json +1 -1
  103. package/artifacts/contracts/mocks/TwentyDecimalsTokenMock.sol/TwentyDecimalsTokenMock.dbg.json +1 -1
  104. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock.dbg.json +1 -1
  105. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock2.dbg.json +1 -1
  106. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock3.dbg.json +1 -1
  107. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock4.dbg.json +1 -1
  108. package/artifacts/contracts/mocks/UsdcMock.sol/USDCMock.dbg.json +1 -1
  109. package/artifacts/contracts/mocks/cBATMock.sol/cBATMock.dbg.json +1 -1
  110. package/artifacts/contracts/mocks/cDAILowWorthMock.sol/cDAILowWorthMock.dbg.json +1 -1
  111. package/artifacts/contracts/mocks/cDAIMock.sol/cDAIMock.dbg.json +1 -1
  112. package/artifacts/contracts/mocks/cDAINonMintableMock.sol/cDAINonMintableMock.dbg.json +1 -1
  113. package/artifacts/contracts/mocks/cDecimalsMock.sol/cDecimalsMock.dbg.json +1 -1
  114. package/artifacts/contracts/mocks/cSDTMock.sol/cSDTMock.dbg.json +1 -1
  115. package/artifacts/contracts/mocks/cUSDCMock.sol/cUSDCMock.dbg.json +1 -1
  116. package/artifacts/contracts/reserve/CeloDistributionHelper.sol/CeloDistributionHelper.dbg.json +1 -1
  117. package/artifacts/contracts/reserve/DistributionHelper.sol/DistributionHelper.dbg.json +1 -1
  118. package/artifacts/contracts/reserve/ExchangeHelper.sol/ExchangeHelper.dbg.json +1 -1
  119. package/artifacts/contracts/reserve/GenericDistributionHelper.sol/GenericDistributionHelper.dbg.json +1 -1
  120. package/artifacts/contracts/reserve/GoodMarketMaker.sol/GoodMarketMaker.dbg.json +1 -1
  121. package/artifacts/contracts/reserve/GoodReserveCDai.sol/ContributionCalc.dbg.json +1 -1
  122. package/artifacts/contracts/reserve/GoodReserveCDai.sol/GoodReserveCDai.dbg.json +1 -1
  123. package/artifacts/contracts/staking/BaseShareField.sol/BaseShareField.dbg.json +1 -1
  124. package/artifacts/contracts/staking/BaseShareFieldV2.sol/BaseShareFieldV2.dbg.json +1 -1
  125. package/artifacts/contracts/staking/DonationsStaking.sol/DonationsStaking.dbg.json +1 -1
  126. package/artifacts/contracts/staking/FuseStakingV3.sol/FuseStakingV3.dbg.json +1 -1
  127. package/artifacts/contracts/staking/FuseStakingV3.sol/IConsensus.dbg.json +1 -1
  128. package/artifacts/contracts/staking/FuseStakingV3.sol/PegSwap.dbg.json +1 -1
  129. package/artifacts/contracts/staking/GoodFundManager.sol/GoodFundManager.dbg.json +1 -1
  130. package/artifacts/contracts/staking/SimpleStaking.sol/SimpleStaking.dbg.json +1 -1
  131. package/artifacts/contracts/staking/SimpleStakingV2.sol/SimpleStakingV2.dbg.json +1 -1
  132. package/artifacts/contracts/staking/UniswapV2SwapHelper.sol/UniswapV2SwapHelper.dbg.json +1 -1
  133. package/artifacts/contracts/staking/aave/AaveStakingFactory.sol/AaveStakingFactory.dbg.json +1 -1
  134. package/artifacts/contracts/staking/aave/GoodAaveStaking.sol/GoodAaveStaking.dbg.json +1 -1
  135. package/artifacts/contracts/staking/aave/GoodAaveStakingV2.sol/GoodAaveStakingV2.dbg.json +1 -1
  136. package/artifacts/contracts/staking/compound/CompoundStakingFactory.sol/CompoundStakingFactory.dbg.json +1 -1
  137. package/artifacts/contracts/staking/compound/GoodCompoundStaking.sol/GoodCompoundStaking.dbg.json +1 -1
  138. package/artifacts/contracts/staking/compound/GoodCompoundStakingV2.sol/GoodCompoundStakingV2.dbg.json +1 -1
  139. package/artifacts/contracts/staking/utils/Math64X64.sol/Math64x64.dbg.json +1 -1
  140. package/artifacts/contracts/staking/utils/StakingRewardsFixedAPY.sol/StakingRewardsFixedAPY.dbg.json +1 -1
  141. package/artifacts/contracts/token/ERC20PresetMinterPauserUpgradeable.sol/ERC20PresetMinterPauserUpgradeable.dbg.json +1 -1
  142. package/artifacts/contracts/token/ERC677.sol/ERC677.dbg.json +1 -1
  143. package/artifacts/contracts/token/ERC677.sol/ERC677Receiver.dbg.json +1 -1
  144. package/artifacts/contracts/token/GoodDollar.sol/GoodDollar.dbg.json +1 -1
  145. package/artifacts/contracts/token/GoodDollar2.sol/GoodDollar2.dbg.json +1 -1
  146. package/artifacts/contracts/token/IFeesFormula.sol/IFeesFormula.dbg.json +1 -1
  147. package/artifacts/contracts/token/MultichainFeeFormula.sol/MultichainFeeFormula.dbg.json +1 -1
  148. package/artifacts/contracts/token/superfluid/ERC20Permit.sol/ERC20Permit.dbg.json +1 -1
  149. package/artifacts/contracts/token/superfluid/ERC20Permit.sol/SelfApprove.dbg.json +1 -1
  150. package/artifacts/contracts/token/superfluid/ISuperGoodDollar.sol/IGoodDollarCustom.dbg.json +1 -1
  151. package/artifacts/contracts/token/superfluid/ISuperGoodDollar.sol/ISuperGoodDollar.dbg.json +1 -1
  152. package/artifacts/contracts/token/superfluid/ISuperToken.sol/ISuperToken.dbg.json +1 -1
  153. package/artifacts/contracts/token/superfluid/SuperGoodDollar.sol/SuperGoodDollar.dbg.json +1 -1
  154. package/artifacts/contracts/token/superfluid/SuperToken.sol/SuperToken.dbg.json +1 -1
  155. package/artifacts/contracts/token/superfluid/SuperfluidToken.sol/SuperfluidToken.dbg.json +1 -1
  156. package/artifacts/contracts/token/superfluid/UUPSProxiable.sol/UUPSProxiable.dbg.json +1 -1
  157. package/artifacts/contracts/token/superfluid/UUPSProxy.sol/Proxy.dbg.json +1 -1
  158. package/artifacts/contracts/token/superfluid/UUPSProxy.sol/UUPSProxy.dbg.json +1 -1
  159. package/artifacts/contracts/token/superfluid/UUPSProxy.sol/UUPSUtils.dbg.json +1 -1
  160. package/artifacts/contracts/ubi/UBIScheme.sol/UBIScheme.dbg.json +1 -1
  161. package/artifacts/contracts/ubi/UBISchemeV2.sol/UBISchemeV2.dbg.json +1 -1
  162. package/artifacts/contracts/utils/AdminWallet.sol/AdminWallet.dbg.json +1 -1
  163. package/artifacts/contracts/utils/AdminWalletFuse.sol/AdminWalletFuse.dbg.json +1 -1
  164. package/artifacts/contracts/utils/BancorFormula.sol/BancorFormula.dbg.json +1 -1
  165. package/artifacts/contracts/utils/BulkProof.sol/BulkProof.dbg.json +1 -1
  166. package/artifacts/contracts/utils/BulkWhitelist.sol/BulkWhitelist.dbg.json +1 -1
  167. package/artifacts/contracts/utils/BuyAndBridgeHelper.sol/BuyAndBridgeHelper.dbg.json +1 -1
  168. package/artifacts/contracts/utils/BuyFromReserveHelper.sol/BuyFromReserveHelper.dbg.json +1 -1
  169. package/artifacts/contracts/utils/BuyGDClone.sol/BuyGDClone.dbg.json +1 -1
  170. package/artifacts/contracts/utils/BuyGDClone.sol/BuyGDCloneFactory.dbg.json +1 -1
  171. package/artifacts/contracts/utils/BuyGDClone.sol/DonateGDClone.dbg.json +1 -1
  172. package/artifacts/contracts/utils/DAOContract.sol/DAOContract.dbg.json +1 -1
  173. package/artifacts/contracts/utils/DAOUpgradeableContract.sol/DAOUpgradeableContract.dbg.json +1 -1
  174. package/artifacts/contracts/utils/DSMath.sol/DSMath.dbg.json +1 -1
  175. package/artifacts/contracts/utils/DataTypes.sol/DataTypes.dbg.json +1 -1
  176. package/artifacts/contracts/utils/FuseOldBridgeKill.sol/EternalStorage.dbg.json +1 -1
  177. package/artifacts/contracts/utils/FuseOldBridgeKill.sol/FuseOldBridgeKill.dbg.json +1 -1
  178. package/artifacts/contracts/utils/FuseOldBridgeKill.sol/IUpgradeabilityOwnerStorage.dbg.json +1 -1
  179. package/artifacts/contracts/utils/FuseOldBridgeKill.sol/Initializable.dbg.json +1 -1
  180. package/artifacts/contracts/utils/FuseOldBridgeKill.sol/Ownable.dbg.json +1 -1
  181. package/artifacts/contracts/utils/FuseOldBridgeKill.sol/Upgradeable.dbg.json +1 -1
  182. package/artifacts/contracts/utils/GDFaucet.sol/GDFaucet.dbg.json +1 -1
  183. package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/GoodDollarMintBurnWrapper.dbg.json +1 -1
  184. package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/IRouter.dbg.json +1 -1
  185. package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/PausableControl.dbg.json +1 -1
  186. package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/TokenOperation.dbg.json +1 -1
  187. package/artifacts/contracts/utils/IdentityFix.sol/IdentityFix.dbg.json +1 -1
  188. package/artifacts/contracts/utils/LastauthReduction.sol/LastauthReduction.dbg.json +1 -1
  189. package/artifacts/contracts/utils/LastauthReduction.sol/LastauthReduction.json +2 -2
  190. package/artifacts/contracts/utils/MultiCall.sol/Multicall.dbg.json +1 -1
  191. package/artifacts/contracts/utils/MultichainBridgeHelper.sol/MultichainBridgeHelper.dbg.json +1 -1
  192. package/artifacts/contracts/utils/NameService.sol/NameService.dbg.json +1 -1
  193. package/artifacts/contracts/utils/OneTimePayments.sol/OneTimePayments.dbg.json +1 -1
  194. package/artifacts/contracts/utils/OneTimePaymentsV2.sol/OneTimePaymentsV2.dbg.json +1 -1
  195. package/artifacts/contracts/utils/ProtoclUpgradeV4Mento.sol/MentoExchange.dbg.json +1 -1
  196. package/artifacts/contracts/utils/ProtoclUpgradeV4Mento.sol/ProtocolUpgradeV4Mento.dbg.json +1 -1
  197. package/artifacts/contracts/utils/ProtocolUpgrade.sol/OldMarketMaker.dbg.json +1 -1
  198. package/artifacts/contracts/utils/ProtocolUpgrade.sol/ProtocolUpgrade.dbg.json +1 -1
  199. package/artifacts/contracts/utils/ProtocolUpgradeFuse.sol/ProtocolUpgradeFuse.dbg.json +1 -1
  200. package/artifacts/contracts/utils/ProtocolUpgradeFuseRecover.sol/ProtocolUpgradeFuseRecover.dbg.json +1 -1
  201. package/artifacts/contracts/utils/ProtocolUpgradeRecover.sol/ProtocolUpgradeRecover.dbg.json +1 -1
  202. package/artifacts/contracts/utils/ProxyFactory1967.sol/ERC1967Proxy.dbg.json +1 -1
  203. package/artifacts/contracts/utils/ProxyFactory1967.sol/ProxyFactory1967.dbg.json +1 -1
  204. package/artifacts/contracts/utils/ReputationTestHelper.sol/ReputationTestHelper.dbg.json +1 -1
  205. package/artifacts/contracts/utils/ReserveRestore.sol/ReserveRestore.dbg.json +1 -1
  206. package/artifacts/contracts/utils/ReserveRestore.sol/ReserveRestore.json +2 -2
  207. package/contracts/identity/IdentityV3.sol +0 -3
  208. package/contracts/identity/IdentityV4.sol +578 -0
  209. package/hardhat.config.ts +3 -4
  210. package/package.json +8 -4
  211. package/test/governance/ClaimersDistribution.test.ts +1 -1
  212. package/test/governance/CompoundVotingMachine.castvote.test.ts +30 -30
  213. package/test/helpers.ts +76 -195
  214. package/test/identity/IdentityV3.test.ts +53 -129
  215. package/test/identity/IdentityV4.test.ts +454 -0
  216. package/test/reserve/GenericDistributionHelper.e2e.test.ts +445 -0
  217. package/test/utils/AdminWallet.test.ts +14 -15
  218. package/types/contracts/identity/IdentityV4.ts +2001 -0
  219. package/types/contracts/identity/index.ts +1 -0
  220. package/types/contracts/utils/UpdateReserveRatio.sol/MentoExchange.ts +81 -0
  221. package/types/contracts/utils/UpdateReserveRatio.sol/UpdateReserveRatio.ts +134 -0
  222. package/types/contracts/utils/UpdateReserveRatio.sol/index.ts +5 -0
  223. package/types/contracts/utils/UpdateReserveRatioAfterXDC.sol/UpdateReserveRatioAfterXDC.ts +7 -2
  224. package/types/contracts/utils/index.ts +2 -2
  225. package/types/factories/contracts/governance/GoodDollarStaking.sol/GoodDollarStaking__factory.ts +1 -1
  226. package/types/factories/contracts/identity/IdentityV3__factory.ts +1 -1
  227. package/types/factories/contracts/identity/IdentityV4__factory.ts +1213 -0
  228. package/types/factories/contracts/identity/index.ts +1 -0
  229. package/types/factories/contracts/mocks/DistributionBridgeMock__factory.ts +1 -1
  230. package/types/factories/contracts/mocks/GoodDollarStakingMock__factory.ts +1 -1
  231. package/types/factories/contracts/mocks/MultichainRouterMock.sol/MultichainRouterMock__factory.ts +1 -1
  232. package/types/factories/contracts/mocks/StakingMockFixedAPY__factory.ts +1 -1
  233. package/types/factories/contracts/utils/LastauthReduction__factory.ts +1 -1
  234. package/types/factories/contracts/utils/ReserveRestore__factory.ts +1 -1
  235. package/types/factories/contracts/utils/UpdateReserveRatio.sol/MentoExchange__factory.ts +39 -0
  236. package/types/factories/contracts/utils/UpdateReserveRatio.sol/UpdateReserveRatio__factory.ts +113 -0
  237. package/types/factories/contracts/utils/UpdateReserveRatio.sol/index.ts +5 -0
  238. package/types/factories/contracts/utils/UpdateReserveRatioAfterXDC.sol/UpdateReserveRatioAfterXDC__factory.ts +9 -15
  239. package/types/factories/contracts/utils/index.ts +1 -1
  240. package/types/hardhat.d.ts +13 -4
  241. package/types/index.ts +4 -2
  242. package/scripts/ProxyFactory.json +0 -4425
  243. package/scripts/analytics/activeGDStakers.ts +0 -188
  244. package/scripts/analytics/activeStakers.ts +0 -25
  245. package/scripts/analytics/activeUsersCount.ts +0 -156
  246. package/scripts/analytics/activeWalletsStats.ts +0 -301
  247. package/scripts/analytics/checkActiveWallets.ts +0 -60
  248. package/scripts/analytics/checkBridgeBalances.ts +0 -442
  249. package/scripts/analytics/claimIncidentStats.ts +0 -98
  250. package/scripts/analytics/faucetStats.ts +0 -130
  251. package/scripts/analytics/gdinflow.ts +0 -57
  252. package/scripts/analytics/goodHolders.ts +0 -46
  253. package/scripts/analytics/goodgiveback.ts +0 -64
  254. package/scripts/analytics/p2pTxs.ts +0 -564
  255. package/scripts/analytics/stuckgd.ts +0 -70
  256. package/scripts/analytics/tokenInOutStats.ts +0 -48
  257. package/scripts/analytics/whitelistsyncIssue.ts +0 -87
  258. package/scripts/bulkProof.ts +0 -202
  259. package/scripts/bulkWhitelist.ts +0 -31
  260. package/scripts/deployGnosisSafe.ts +0 -111
  261. package/scripts/fetchOrDeployProxyFactory.ts +0 -46
  262. package/scripts/fv.ts +0 -263
  263. package/scripts/gdx/gdxAirdropCalculation.ts +0 -479
  264. package/scripts/getFounders.ts +0 -32
  265. package/scripts/governance/README.md +0 -70
  266. package/scripts/governance/airdropCalculation.ts +0 -1119
  267. package/scripts/governance/airdropCalculationRecover.ts +0 -416
  268. package/scripts/governance/airdropCalculationSorted.ts +0 -438
  269. package/scripts/governance/goodCheckpointSorted.ts +0 -300
  270. package/scripts/keeper/fishInactive.ts +0 -47
  271. package/scripts/minimize.sh +0 -17
  272. package/scripts/multichain-deploy/0_proxyFactory-deploy.ts +0 -131
  273. package/scripts/multichain-deploy/1_basicdao-deploy.ts +0 -294
  274. package/scripts/multichain-deploy/2_helpers-deploy.ts +0 -152
  275. package/scripts/multichain-deploy/2b_otp-deploy.ts +0 -73
  276. package/scripts/multichain-deploy/3_gdSavings-deploy.ts +0 -190
  277. package/scripts/multichain-deploy/4_ubi-deploy.ts +0 -129
  278. package/scripts/multichain-deploy/5_gov-deploy.ts +0 -179
  279. package/scripts/multichain-deploy/6_testnetFaucet.ts +0 -85
  280. package/scripts/multichain-deploy/7_superfluidfaucet-deploy.ts +0 -123
  281. package/scripts/multichain-deploy/8_disthelper-deploy.ts +0 -152
  282. package/scripts/multichain-deploy/createUniswapTestPools.ts +0 -163
  283. package/scripts/multichain-deploy/flattened/Avatar.sol +0 -913
  284. package/scripts/multichain-deploy/flattened/Controller.sol +0 -1891
  285. package/scripts/multichain-deploy/flattened/FeeFormula.sol +0 -1290
  286. package/scripts/multichain-deploy/fulldeploy.sh +0 -26
  287. package/scripts/multichain-deploy/helpers.ts +0 -647
  288. package/scripts/multichain-deploy/multichainWrapper-deploy.ts +0 -59
  289. package/scripts/multichain-deploy/verifyEtherscan.ts +0 -177
  290. package/scripts/proposals/gip-14_1.ts +0 -251
  291. package/scripts/proposals/gip-15.ts +0 -427
  292. package/scripts/proposals/gip-25-xdc-upgrade-ubi.ts +0 -746
  293. package/scripts/proposals/gips-14_1.md +0 -29
  294. package/scripts/proposals/hack-ubi-recovery.ts +0 -414
  295. package/scripts/proposals/identityAuthPeriod.ts +0 -229
  296. package/scripts/proposals/reserveRestore.ts +0 -474
  297. package/scripts/proposals/updateDistHelper.ts +0 -180
  298. package/scripts/proposals/v4Upgrade.ts +0 -845
  299. package/scripts/releaser.js +0 -24
  300. package/scripts/staking/stakersGdRewardsCalculation.ts +0 -64
  301. package/scripts/upgradeScheme.ts +0 -97
  302. package/scripts/upgradeToV2/upgradeToV2.ts +0 -853
  303. package/scripts/upgradeToV2/upgradeToV2Recover.ts +0 -939
  304. package/scripts/upgradeToV3/v3-fix.ts +0 -120
  305. package/scripts/upgradeToV3/v3-fuse-multichain.ts +0 -117
  306. package/scripts/upgradeToV3/v3-upgrade.ts +0 -219
  307. package/scripts/upgrades/celo-defi-ubi-deploy.ts +0 -184
  308. package/scripts/upgrades/identity-upgrade.ts +0 -126
  309. package/scripts/upgrades/multichain-formula-upgrade.ts +0 -143
  310. package/scripts/upgrades/multichain-temp-fix.ts +0 -129
  311. package/scripts/upgrades/restoreFunds.ts +0 -91
  312. package/scripts/upgrades/superfluid-nft-celo-gas-token.ts +0 -159
  313. package/scripts/upgrades/transferDaoToGuardians.ts +0 -80
  314. package/scripts/upgrades/upgradeAdminWallet.ts +0 -29
  315. package/scripts/upgrades/upgradeFaucet.ts +0 -46
  316. package/scripts/utils.ts +0 -50
  317. package/scripts/verify.ts +0 -67
  318. package/scripts/voltageswaps.ts +0 -46
@@ -1,853 +0,0 @@
1
- /**
2
- * Mainnet:
3
- * 0. deploy nameService
4
- * 1. deploy votingmachine + reputation
5
- * 2. deploy Reserve, MarketMaker
6
- * 3. deploy FundManager
7
- * 4. deploy ubi staking contracts
8
- */
9
-
10
- import { network, ethers, upgrades, run } from "hardhat";
11
- import { isFunction, get, omitBy } from "lodash";
12
- import { getImplementationAddress } from "@openzeppelin/upgrades-core";
13
- import pressAnyKey from "press-any-key";
14
- import { AaveStakingFactory, CompoundStakingFactory, ProxyFactory1967 } from "../../types";
15
- import SchemeRegistrarABI from "@gooddollar/goodcontracts/build/contracts/SchemeRegistrar.json";
16
- import releaser from "../releaser";
17
- import {
18
- GReputation,
19
- SchemeRegistrar,
20
- CompoundVotingMachine,
21
- ProtocolUpgrade,
22
- ProtocolUpgradeFuse,
23
- NameService
24
- } from "../../types";
25
- import { getFounders } from "../getFounders";
26
- import OldDAO from "../../releases/olddao.json";
27
-
28
- import ProtocolSettings from "../../releases/deploy-settings.json";
29
- import { keccak256 } from "ethers/lib/utils";
30
-
31
- let GAS_SETTINGS: any = {
32
- maxPriorityFeePerGas: ethers.utils.parseUnits("1", "gwei"),
33
- maxFeePerGas: ethers.utils.parseUnits("50", "gwei"),
34
- gasLimit: 30000000
35
- };
36
-
37
- let totalGas = 0;
38
- const gasUsage = {};
39
- const countTotalGas = async (tx, name) => {
40
- let res = tx;
41
- if (tx.deployTransaction) tx = tx.deployTransaction;
42
- if (tx.wait) res = await tx.wait();
43
- if (res.gasUsed) {
44
- totalGas += parseInt(res.gasUsed);
45
- gasUsage[name] = gasUsage[name] || 0;
46
- gasUsage[name] += parseInt(res.gasUsed);
47
- } else console.log("no gas data", { res, tx });
48
- };
49
-
50
- console.log({
51
- network: network.name,
52
- upgrade: process.env.UPGRADE
53
- });
54
- const { name } = network;
55
-
56
- export const main = async (networkName = name, isPerformUpgrade = true, olddao?): Promise<{ [key: string]: any }> => {
57
- const isProduction = networkName.startsWith("production");
58
- if (isProduction && networkName.includes("mainnet")) {
59
- GAS_SETTINGS.gasLimit = 6000000;
60
- GAS_SETTINGS.maxFeePerGas = ethers.utils.parseUnits("80", "gwei");
61
- } else if (network.config.chainId === 122) {
62
- //case we are on fusefuse
63
- GAS_SETTINGS = {
64
- gasLimit: 6000000,
65
- gasPrice: ethers.utils.parseUnits("1", "gwei")
66
- };
67
- } else if (network.config.chainId === 3 || network.config.chainId === 42) {
68
- GAS_SETTINGS = {
69
- maxPriorityFeePerGas: ethers.utils.parseUnits("1", "gwei"),
70
- maxFeePerGas: ethers.utils.parseUnits("10", "gwei"),
71
- gasLimit: 6000000
72
- };
73
- }
74
-
75
- const isDappTest = networkName.startsWith("dapptest");
76
- const isTest = network.name === "hardhat" || isDappTest;
77
- const isCoverage = process.env.CODE_COVERAGE;
78
- const isDevelop = !isProduction;
79
- const isMainnet = networkName.includes("mainnet");
80
- let protocolSettings = {
81
- ...ProtocolSettings["default"],
82
- ...ProtocolSettings[networkName]
83
- };
84
- console.log(`networkName ${networkName}`, {
85
- isTest,
86
- isDappTest,
87
- isCoverage,
88
- isMainnet,
89
- isDevelop
90
- });
91
- const dao = olddao || OldDAO[networkName];
92
- const fse = require("fs-extra");
93
- const ProtocolAddresses = await fse.readJson("releases/deployment.json");
94
- const newfusedao = await ProtocolAddresses[networkName.replace(/\-mainnet/, "")];
95
- const newdao = ProtocolAddresses[networkName] || {};
96
-
97
- let [root, proxyDeployer] = await ethers.getSigners();
98
-
99
- let avatar = dao.Avatar;
100
- let controller = dao.Controller;
101
- let repStateId = isMainnet ? "fuse" : "rootState";
102
-
103
- const founders = await getFounders(networkName);
104
-
105
- console.log(`root: ${root.address} founders: ${founders.map(_ => _.address)}`);
106
-
107
- const compoundTokens = [
108
- {
109
- name: "cdai",
110
- address: (protocolSettings.compound != undefined && protocolSettings.compound.cdai) || dao.cDAI,
111
- usdOracle: (protocolSettings.compound != undefined && protocolSettings.compound.daiUsdOracle) || dao.DAIUsdOracle,
112
- compUsdOracle:
113
- (protocolSettings.compound != undefined && protocolSettings.compound.compUsdOracle) || dao.COMPUsdOracle,
114
- swapPath: []
115
- }
116
- ];
117
-
118
- const aaveTokens = [
119
- {
120
- name: "usdc",
121
- address: protocolSettings.aave.usdc || dao.USDC,
122
- usdOracle: protocolSettings.aave.usdcUsdOracle || dao.USDCUsdOracle,
123
- aaveUsdOracle: protocolSettings.aave.aaveUsdOracle || dao.AAVEUsdOracle,
124
- swapPath: [get(protocolSettings, "aave.usdc", dao.USDC), get(protocolSettings, "compound.dai", dao.DAI)]
125
- }
126
- ];
127
-
128
- let release: { [key: string]: any } = newdao;
129
-
130
- const toDeployUpgradable = [
131
- {
132
- network: "mainnet",
133
- name: "NameService",
134
- args: [
135
- controller,
136
- [
137
- "CONTROLLER",
138
- "AVATAR",
139
- "IDENTITY",
140
- "GOODDOLLAR",
141
- "CONTRIBUTION_CALCULATION",
142
- "BANCOR_FORMULA",
143
- "DAI",
144
- "CDAI",
145
- "COMP",
146
- "BRIDGE_CONTRACT",
147
- "UNISWAP_ROUTER",
148
- "GAS_PRICE_ORACLE",
149
- "DAI_ETH_ORACLE",
150
- "ETH_USD_ORACLE"
151
- ].map(_ => ethers.utils.keccak256(ethers.utils.toUtf8Bytes(_))),
152
- [
153
- controller,
154
- avatar,
155
- dao.Identity,
156
- dao.GoodDollar,
157
- dao.Contribution,
158
- protocolSettings.bancor || dao.BancorFormula,
159
- get(protocolSettings, "compound.dai", dao.DAI),
160
- get(protocolSettings, "compound.cdai", dao.cDAI),
161
- get(protocolSettings, "compound.comp", dao.COMP),
162
- dao.ForeignBridge,
163
- protocolSettings.uniswapRouter || dao.UniswapRouter,
164
- !isMainnet || dao.GasPriceOracle || protocolSettings.chainlink.gasPrice, //should fail if missing only on mainnet
165
- !isMainnet || dao.DAIEthOracle || protocolSettings.chainlink.dai_eth,
166
- !isMainnet || dao.ETHUsdOracle || protocolSettings.chainlink.eth_usd
167
- ]
168
- ]
169
- },
170
- {
171
- network: "fuse",
172
- name: "NameService",
173
- args: [
174
- controller,
175
- ["CONTROLLER", "AVATAR", "IDENTITY", "GOODDOLLAR", "BRIDGE_CONTRACT"].map(_ =>
176
- ethers.utils.keccak256(ethers.utils.toUtf8Bytes(_))
177
- ),
178
- [controller, avatar, dao.Identity, dao.GoodDollar, dao.HomeBridge]
179
- ]
180
- },
181
- {
182
- network: "both",
183
- name: "GReputation",
184
- initializer: "initialize(address, string, bytes32, uint256)",
185
- args: [
186
- () => get(release, "NameService", newdao.NameService),
187
- repStateId,
188
- protocolSettings.governance.gdaoAirdrop, //should fail on real deploy if not set
189
- protocolSettings.governance.gdaoTotalSupply //should fail on real deploy if not set
190
- ]
191
- },
192
- {
193
- network: "both",
194
- name: "CompoundVotingMachine",
195
- args: [
196
- () => get(release, "NameService", newdao.NameService),
197
- protocolSettings.governance.proposalVotingPeriod,
198
- protocolSettings.governance.guardian || root.address,
199
- () => get(release, "GReputation", newdao.GReputation)
200
- ]
201
- },
202
- {
203
- network: "mainnet",
204
- name: "GoodMarketMaker",
205
- args: [
206
- () => get(release, "NameService", newdao.NameService),
207
- protocolSettings.expansionRatio.nom,
208
- protocolSettings.expansionRatio.denom
209
- ]
210
- },
211
- {
212
- network: "mainnet",
213
- name: "GoodReserveCDai",
214
- initializer: "initialize(address, bytes32)",
215
- args: [() => get(release, "NameService", newdao.NameService), protocolSettings.gdxAirdrop]
216
- },
217
- {
218
- network: "mainnet",
219
- name: "ExchangeHelper",
220
- initializer: "initialize(address)",
221
- args: [() => get(release, "NameService", newdao.NameService)]
222
- },
223
- {
224
- network: "mainnet",
225
- name: "GoodFundManager",
226
- args: [() => get(release, "NameService", newdao.NameService)]
227
- },
228
- {
229
- network: "mainnet",
230
- name: "StakersDistribution",
231
- args: [() => get(release, "NameService", newdao.NameService)]
232
- },
233
- {
234
- network: "fuse",
235
- name: "ClaimersDistribution",
236
- args: [() => get(release, "NameService", newdao.NameService)]
237
- },
238
- {
239
- network: "fuse",
240
- name: "GovernanceStaking",
241
- args: [() => get(release, "NameService", newdao.NameService)],
242
- isUpgradable: false
243
- },
244
- {
245
- network: "fuse",
246
- name: "UBIScheme",
247
- initializer: "initialize(address, address, uint256)",
248
- args: [() => get(release, "NameService", newdao.NameService), dao.FirstClaimPool, 14]
249
- },
250
- {
251
- network: "mainnet",
252
- name: "ProtocolUpgrade",
253
- args: [dao.Controller, root.address],
254
- isUpgradable: false,
255
- initializer: null
256
- },
257
- {
258
- network: "fuse",
259
- name: "ProtocolUpgradeFuse",
260
- args: [dao.Controller, root.address],
261
- isUpgradable: false
262
- },
263
- {
264
- network: "mainnet",
265
- name: "UniswapV2SwapHelper",
266
- args: [],
267
- isUpgradable: false
268
- },
269
- {
270
- network: "mainnet",
271
- name: "CompoundStakingFactory",
272
- args: [],
273
- isUpgradable: false,
274
- libraries: ["UniswapV2SwapHelper"]
275
- },
276
- {
277
- network: "mainnet",
278
- name: "AaveStakingFactory",
279
- args: [],
280
- isUpgradable: false,
281
- libraries: ["UniswapV2SwapHelper"]
282
- }
283
- ];
284
-
285
- let proxyFactory: ProxyFactory1967;
286
- const getProxyFactory = async () => {
287
- if (isDevelop === false && newdao.ProxyFactory) {
288
- return (proxyFactory = (await ethers.getContractAt(
289
- "ProxyFactory1967",
290
- newdao.ProxyFactory
291
- )) as unknown as ProxyFactory1967);
292
- } else {
293
- console.info("deploying ProxyFactory1967", isDevelop, newdao.ProxyFactory);
294
- // await pressAnyKey();
295
-
296
- const pf = await (await ethers.getContractFactory("ProxyFactory1967", root)).deploy(GAS_SETTINGS);
297
- await pf.deployed();
298
- await releaser({ ProxyFactory: pf.address }, networkName, "deployment", false);
299
- return (proxyFactory = pf.connect(root) as unknown as ProxyFactory1967);
300
- }
301
- };
302
-
303
- const deployDeterministic = async (contract, args: any[], factoryOpts = {}) => {
304
- try {
305
- const Contract = await ethers.getContractFactory(contract.name, factoryOpts);
306
-
307
- const salt = ethers.BigNumber.from(keccak256(ethers.utils.toUtf8Bytes(contract.name)));
308
-
309
- if (contract.isUpgradable !== false) {
310
- if (isCoverage) {
311
- console.log("Deploying:", contract.name, "using proxy");
312
- //coverage has large contracts doesnt work with proxy factory
313
- const tx = await upgrades.deployProxy(Contract, args, {
314
- initializer: contract.initializer,
315
- kind: "uups",
316
- unsafeAllowLinkedLibraries: true
317
- });
318
- await countTotalGas(tx, contract.name);
319
- return tx;
320
- }
321
- console.log("Deploying:", contract.name, "using proxyfactory");
322
- const encoded = Contract.interface.encodeFunctionData(contract.initializer || "initialize", args);
323
- const tx = await Contract.deploy(GAS_SETTINGS);
324
- const impl = await tx.deployed();
325
- await countTotalGas(tx, contract.name);
326
-
327
- const tx2 = await proxyFactory.deployProxy(salt, impl.address, encoded, GAS_SETTINGS);
328
- await countTotalGas(tx2, contract.name);
329
- const deployTx = await tx2.wait().catch(e => console.error("failed to deploy proxy, assuming it exists...", e));
330
- return ethers.getContractAt(
331
- contract.name,
332
- await proxyFactory["getDeploymentAddress(uint256,address)"](salt, root.address)
333
- );
334
- } else {
335
- //for some reason deploying with link library via proxy doesnt work on hardhat test env
336
- if (isTest === false) {
337
- console.log("Deploying:", contract.name, "using proxyfactory code");
338
- const constructor = Contract.interface.encodeDeploy(args);
339
- const bytecode = ethers.utils.solidityPack(["bytes", "bytes"], [Contract.bytecode, constructor]);
340
- const deployTx = await (await proxyFactory.deployCode(salt, bytecode, GAS_SETTINGS)).wait();
341
- return ethers.getContractAt(
342
- contract.name,
343
- await proxyFactory["getDeploymentAddress(uint256,address,bytes32)"](salt, root.address, keccak256(bytecode))
344
- );
345
- } else {
346
- console.log("Deploying:", contract.name, "using regular");
347
- const tx = await Contract.deploy(...args, GAS_SETTINGS);
348
- await countTotalGas(tx, contract.name);
349
- const impl = await tx.deployed();
350
- return impl;
351
- }
352
- }
353
- } catch (e) {
354
- console.log("Failed deploying contract:", { contract });
355
- throw e;
356
- }
357
- };
358
-
359
- const deployContracts = async () => {
360
- console.log({ dao, newdao, protocolSettings });
361
-
362
- await getProxyFactory();
363
- console.info("got proxyfactory at:", proxyFactory.address);
364
- for (let contract of toDeployUpgradable) {
365
- if (contract.network !== "both" && (contract.network === "mainnet") !== isMainnet) {
366
- console.log(contract, " Skipping non mainnet/sidechain contract:", contract.network, contract.name);
367
- continue;
368
- }
369
- if (isDevelop === false && newdao[contract.name]) {
370
- console.log(
371
- contract.name,
372
- " Skipping deployed contract at:",
373
- newdao[contract.name],
374
- "upgrading:",
375
- !!process.env.UPGRADE
376
- );
377
- continue;
378
- }
379
-
380
- const args = await Promise.all(contract.args.map(async _ => await (isFunction(_) ? _() : _)));
381
-
382
- console.log(`deploying contract upgrade ${contract.name}`, {
383
- args
384
- // release
385
- // pf: ProxyFactory.factory.address
386
- });
387
- // await pressAnyKey();
388
- let opts = {};
389
- if (contract.libraries) {
390
- let libraries = {};
391
- contract.libraries.forEach(l => (libraries[l] = release[l]));
392
- opts = { libraries };
393
- }
394
- const Contract = await ethers.getContractFactory(contract.name, opts);
395
-
396
- let deployed = await deployDeterministic(contract, args, opts);
397
-
398
- console.log(`${contract.name} deployed to: ${deployed.address}`);
399
- release[contract.name] = deployed.address;
400
- await releaser(release, networkName, "deployment", false);
401
- }
402
-
403
- if (!isProduction || get(release, "StakingContracts", []).length == 0) {
404
- const { DonationsStaking, StakingContracts } = isMainnet && (await deployStakingContracts(release));
405
- release["StakingContracts"] = StakingContracts;
406
- release["DonationsStaking"] = DonationsStaking;
407
- console.log("staking contracts result:", {
408
- StakingContracts,
409
- DonationsStaking
410
- });
411
- }
412
-
413
- release["network"] = networkName;
414
- release["networkId"] = network.config.chainId || 4447;
415
- if (!isMainnet) {
416
- release["HomeBridge"] = dao.HomeBridge;
417
- release["SignupBonus"] = dao.SignupBonus;
418
- release["OneTimePayments"] = dao.OneTimePayments;
419
- release["Invites"] = dao.Invites;
420
- release["AdminWallet"] = dao.AdminWallet;
421
- } else {
422
- release["ForeignBridge"] = dao.ForeignBridge;
423
- release["Contribution"] = dao.Contribution;
424
- }
425
-
426
- release["Identity"] = dao.Identity;
427
- release["GoodDollar"] = dao.GoodDollar;
428
- release["Controller"] = dao.Controller;
429
- release["Avatar"] = avatar;
430
- release["FirstClaimPool"] = dao.FirstClaimPool;
431
- release["ProxyAdmin"] = dao.ProxyAdmin;
432
- release["BancorFormula"] = protocolSettings.bancor || dao.BancorFormula;
433
-
434
- release["DAI"] = get(protocolSettings, "compound.dai", dao.DAI);
435
- release["cDAI"] = get(protocolSettings, "compound.cdai", dao.cDAI);
436
- release["COMP"] = get(protocolSettings, "compound.comp", dao.COMP);
437
-
438
- release = omitBy(release, _ => _ === undefined);
439
- let res = Object.assign(newdao, release);
440
- await releaser(release, networkName);
441
- return release;
442
- };
443
-
444
- // const proveNewRep = async () => {
445
- // console.log("prooving new rep...");
446
- // if (networkName.includes("production") === false) {
447
- // const proofs = [
448
- // [
449
- // "0x23d8bd1cdfa398986bb91927d3011fb1ded1425b6ae3ff794e497235481fe57f",
450
- // "0xe4ac4e67088f036e8dc535fee10a3ad42065e444d2b0bd3668e0df21e1590db3",
451
- // ],
452
- // ["0x4c01c2c86a047dc65fc8ff0a1d9ac11842597af9a363711e4db7dcabcfda307b"],
453
- // [
454
- // "0x235dc3126b01e763befb96ead059e3f19d0380e65e477e6ebb95c1d9fc90e0b7",
455
- // "0xe4ac4e67088f036e8dc535fee10a3ad42065e444d2b0bd3668e0df21e1590db3",
456
- // ],
457
- // ];
458
- // let proofResults = await Promise.all(
459
- // founders.map((f, idx) =>
460
- // grep
461
- // .connect(f)
462
- // .proveBalanceOfAtBlockchain(repStateId, f.address, 100, proofs[idx])
463
- // .then((_) => _.wait())
464
- // )
465
- // );
466
- // console.log(
467
- // "proofs:",
468
- // proofResults.map((_) => _.events)
469
- // );
470
- // } else {
471
- // //prove foundation multi sig account
472
- // const proof = [];
473
- // const foundationAddress = protocolSettings.governance.foundationAddress;
474
- // let proofResult = await grep
475
- // .proveBalanceOfAtBlockchain(
476
- // repStateId,
477
- // foundationAddress,
478
- // 12000000,
479
- // proof
480
- // )
481
- // .then((_) => _.wait());
482
-
483
- // console.log("proofs:", proofResult.events);
484
- // }
485
- // };
486
-
487
- const performUpgrade = async release => {
488
- const isKovan = networkName.includes("kovan");
489
- const upgrade: ProtocolUpgrade = (await ethers.getContractAt(
490
- "ProtocolUpgrade",
491
- release.ProtocolUpgrade
492
- )) as unknown as ProtocolUpgrade;
493
-
494
- console.log("performing protocol v2 upgrade on Mainnet...", {
495
- release,
496
- dao
497
- });
498
- console.log("upgrading nameservice + staking rewards...");
499
- let tx;
500
- tx = await (
501
- await upgrade.upgradeBasic(
502
- release.NameService,
503
- [
504
- ethers.utils.keccak256(ethers.utils.toUtf8Bytes("RESERVE")),
505
- ethers.utils.keccak256(ethers.utils.toUtf8Bytes("MARKET_MAKER")),
506
- ethers.utils.keccak256(ethers.utils.toUtf8Bytes("FUND_MANAGER")),
507
- ethers.utils.keccak256(ethers.utils.toUtf8Bytes("REPUTATION")),
508
- ethers.utils.keccak256(ethers.utils.toUtf8Bytes("GDAO_STAKERS")),
509
- ethers.utils.keccak256(ethers.utils.toUtf8Bytes("BRIDGE_CONTRACT")),
510
- ethers.utils.keccak256(ethers.utils.toUtf8Bytes("UBI_RECIPIENT")),
511
- ethers.utils.keccak256(ethers.utils.toUtf8Bytes("EXCHANGE_HELPER"))
512
- ],
513
- [
514
- release.GoodReserveCDai,
515
- release.GoodMarketMaker,
516
- release.GoodFundManager,
517
- release.GReputation,
518
- release.StakersDistribution,
519
- dao.ForeignBridge,
520
- isKovan ? root.address : newfusedao.UBIScheme, //fake for kovan
521
- release.ExchangeHelper
522
- ],
523
- release.StakingContracts.map((_: any) => _[0]),
524
- release.StakingContracts.map((_: any) => _[1])
525
- )
526
- ).wait();
527
- await countTotalGas(tx, "call upgrade basic");
528
-
529
- console.log("upgrading reserve...", {
530
- params: [release.NameService, dao.Reserve, dao.MarketMaker, dao.FundManager, release.COMP]
531
- });
532
- tx = await upgrade.upgradeReserve(
533
- release.NameService,
534
- dao.Reserve,
535
- dao.MarketMaker,
536
- dao.FundManager,
537
- release.COMP,
538
- GAS_SETTINGS
539
- );
540
- await countTotalGas(tx, "call upgrade reserve");
541
- console.log("upgrading donationstaking...", {
542
- params: [
543
- release.NameService,
544
- dao.DonationsStaking, //old
545
- release.DonationsStaking
546
- ]
547
- });
548
- tx = await upgrade.upgradeDonationStaking(
549
- release.NameService,
550
- dao.DonationsStaking, //old
551
- release.DonationsStaking, //new
552
- dao.DAIStaking,
553
- GAS_SETTINGS
554
- );
555
- await countTotalGas(tx, "call upgrade donations");
556
- console.log("Donation staking upgraded");
557
- //extract just the addresses without the rewards
558
- // release.StakingContracts = release.StakingContracts.map((_) => _[0]);
559
-
560
- if (isProduction) {
561
- console.log("SKIPPING GOVERNANCE UPGRADE FOR PRODUCTION. RUN IT MANUALLY");
562
- } else {
563
- console.log("upgrading governance...");
564
-
565
- tx = await upgrade.upgradeGovernance(dao.SchemeRegistrar, dao.UpgradeScheme, release.CompoundVotingMachine);
566
- await countTotalGas(tx, "call upgrade gov");
567
- }
568
- };
569
-
570
- const performUpgradeFuse = async release => {
571
- const upgrade: ProtocolUpgradeFuse = (await ethers.getContractAt(
572
- "ProtocolUpgradeFuse",
573
- release.ProtocolUpgradeFuse
574
- )) as unknown as ProtocolUpgradeFuse;
575
-
576
- console.log("performing protocol v2 upgrade on Fuse...", { release, dao });
577
- await upgrade
578
- .upgrade(
579
- release.NameService,
580
- //old contracts
581
- [dao.SchemeRegistrar || ethers.constants.AddressZero, dao.UpgradeScheme, dao.UBIScheme, dao.FirstClaimPool],
582
- release.UBIScheme,
583
- [
584
- ethers.utils.keccak256(ethers.utils.toUtf8Bytes("REPUTATION")),
585
- ethers.utils.keccak256(ethers.utils.toUtf8Bytes("BRIDGE_CONTRACT")),
586
- ethers.utils.keccak256(ethers.utils.toUtf8Bytes("UBISCHEME")),
587
- ethers.utils.keccak256(ethers.utils.toUtf8Bytes("GDAO_STAKING")),
588
- ethers.utils.keccak256(ethers.utils.toUtf8Bytes("GDAO_CLAIMERS"))
589
- ],
590
- [
591
- release.GReputation,
592
- dao.HomeBridge,
593
- release.UBIScheme,
594
- release.GovernanceStaking,
595
- release.ClaimersDistribution
596
- ],
597
- GAS_SETTINGS
598
- )
599
- .then(_ => countTotalGas(_, "fuse basic upgrade"));
600
-
601
- if (isProduction) {
602
- console.log("SKIPPING GOVERNANCE UPGRADE FOR PRODUCTION. RUN IT MANUALLY");
603
- } else {
604
- console.log("upgrading governance...");
605
-
606
- await upgrade.upgradeGovernance(
607
- dao.SchemeRegistrar,
608
- dao.UpgradeScheme,
609
- release.CompoundVotingMachine,
610
- GAS_SETTINGS
611
- );
612
- }
613
- };
614
-
615
- //give Avatar permissions to the upgrade process contract
616
- const voteProtocolUpgrade = async release => {
617
- const Upgrade = release.ProtocolUpgrade || release.ProtocolUpgradeFuse;
618
-
619
- console.log("approve upgrade scheme in dao...", Upgrade, dao.SchemeRegistrar);
620
-
621
- const schemeRegistrar: SchemeRegistrar = (await ethers.getContractAt(
622
- "SchemeRegistrar",
623
- dao.SchemeRegistrar
624
- )) as unknown as SchemeRegistrar;
625
- console.log("proprosing scheme ...");
626
-
627
- const proposal = await (
628
- await schemeRegistrar.proposeScheme(
629
- avatar,
630
- Upgrade,
631
- ethers.constants.HashZero,
632
- "0x0000001F",
633
- ethers.utils.keccak256(ethers.utils.toUtf8Bytes("ProtocolUpgrade"))
634
- )
635
- ).wait();
636
- await countTotalGas(proposal, "propose upgrade");
637
-
638
- console.log("proposal tx:", proposal.transactionHash);
639
- let proposalId = proposal.events.find(_ => _.event === "NewSchemeProposal").args._proposalId;
640
-
641
- console.log("proposal", { scheme: Upgrade, proposalId });
642
-
643
- console.log("voting...");
644
-
645
- const absoluteVote = await ethers.getContractAt(
646
- ["function vote(bytes32,uint,uint,address) returns (bool)"],
647
- dao.AbsoluteVote
648
- );
649
-
650
- console.log("voteUpgradeScheme", {
651
- absoluteVote: dao.AbsoluteVote,
652
- founders
653
- });
654
- await Promise.all(
655
- founders.slice(1).map(f =>
656
- absoluteVote
657
- .connect(f)
658
- .vote(proposalId, 1, 0, f.address, {
659
- ...GAS_SETTINGS,
660
- gasLimit: 300000
661
- })
662
- .then(_ => countTotalGas(_.wait(), "vote"))
663
- .catch(e => console.log("founder vote failed:", f.address, e.message))
664
- )
665
- );
666
- };
667
-
668
- const deployStakingContracts = async release => {
669
- const isRopsten = networkName === "fuse-mainnet" || networkName === "staging-mainnet";
670
- console.log("deployStakingContracts", {
671
- factory: release.CompoundStakingFactory,
672
- ns: release.NameService
673
- });
674
- const compfactory = await ethers.getContractAt("CompoundStakingFactory", release.CompoundStakingFactory);
675
- const aavefactory = await ethers.getContractAt("AaveStakingFactory", release.AaveStakingFactory);
676
- const compps = compoundTokens.map(async token => {
677
- let rewardsPerBlock = protocolSettings.staking.rewardsPerBlock;
678
- console.log("deployStakingContracts", {
679
- token,
680
- settings: protocolSettings.staking,
681
- rewardsPerBlock,
682
- factory: compfactory.address,
683
- params: [
684
- token.address,
685
- release.NameService,
686
- protocolSettings.staking.fullRewardsThreshold, //blocks before switching for 0.5x rewards to 1x multiplier
687
- token.usdOracle,
688
- token.compUsdOracle
689
- ]
690
- });
691
- const tx = await (
692
- await compfactory["cloneAndInit(address,address,uint64,address,address,address[])"](
693
- token.address,
694
- release.NameService,
695
- protocolSettings.staking.fullRewardsThreshold, //blocks before switching for 0.5x rewards to 1x multiplier
696
- token.usdOracle,
697
- token.compUsdOracle,
698
- token.swapPath,
699
- GAS_SETTINGS
700
- )
701
- ).wait();
702
- await countTotalGas(tx, "deploy comp staking");
703
- const log = tx.events.find(_ => _.event === "Deployed");
704
- if (!log.args.proxy) throw new Error(`staking contract deploy failed ${token}`);
705
- return [log.args.proxy, rewardsPerBlock];
706
- });
707
-
708
- await Promise.all(compps);
709
- // const compps = [
710
- // Promise.resolve(["0x9999c40c8b88c740076b15d2e708db6a7a071b53", 13888])
711
- // ];
712
- let deployed;
713
- if (!isDappTest && (!isRopsten || isTest)) {
714
- const aaveps = aaveTokens.map(async token => {
715
- let rewardsPerBlock = (protocolSettings.staking.rewardsPerBlock / 2) //aave gets half of the rewards
716
- .toFixed(0);
717
- console.log("deployStakingContracts aave", {
718
- token,
719
- settings: protocolSettings.staking,
720
- rewardsPerBlock,
721
- params: [
722
- token.address,
723
- get(protocolSettings, "aave.lendingPool", dao.AaveLendingPool),
724
- release.NameService,
725
- protocolSettings.staking.fullRewardsThreshold, //blocks before switching for 0.5x rewards to 1x multiplier
726
- token.usdOracle,
727
-
728
- get(protocolSettings, "aave.incentiveController", dao.AaveIncentiveController),
729
- token.aaveUsdOracle,
730
- token.swapPath,
731
- GAS_SETTINGS
732
- ]
733
- });
734
- const tx = await (
735
- await aavefactory["cloneAndInit(address,address,address,uint64,address,address,address,address[])"](
736
- token.address,
737
- get(protocolSettings, "aave.lendingPool", dao.AaveLendingPool),
738
- release.NameService,
739
- protocolSettings.staking.fullRewardsThreshold, //blocks before switching for 0.5x rewards to 1x multiplier
740
- token.usdOracle,
741
- get(protocolSettings, "aave.incentiveController", dao.AaveIncentiveController),
742
- token.aaveUsdOracle,
743
- token.swapPath,
744
- GAS_SETTINGS
745
- )
746
- ).wait();
747
- await countTotalGas(tx, "deploy aave staking");
748
- const log = tx.events.find(_ => _.event === "Deployed");
749
- if (!log.args.proxy) throw new Error(`staking contract deploy failed ${token}`);
750
- return [log.args.proxy, rewardsPerBlock];
751
- });
752
-
753
- // const aaveps = [
754
- // Promise.resolve(["0x8f0c4f59b4c593193e5b5e0224d848ac803ad1a2", 13888 / 2])
755
- // ];
756
- await Promise.all(aaveps);
757
- deployed = await Promise.all(compps.concat(aaveps));
758
- } else {
759
- deployed = await Promise.all(compps);
760
- }
761
-
762
- console.log("deploying donation staking");
763
- console.log(`release ${release}`);
764
- const deployedDonationsStaking = await deployDeterministic(
765
- {
766
- network: "mainnet",
767
- name: "DonationsStaking",
768
- isUpgradable: true
769
- },
770
- [
771
- release.NameService,
772
- deployed[0][0],
773
- ["0x0000000000000000000000000000000000000000", get(protocolSettings, "compound.dai", dao.DAI)],
774
- [get(protocolSettings, "compound.dai", dao.DAI), "0x0000000000000000000000000000000000000000"]
775
- ],
776
- { libraries: { UniswapV2SwapHelper: release["UniswapV2SwapHelper"] } }
777
- );
778
- // await countTotalGas(deployedDonationsStaking);
779
-
780
- console.log(`DonationsStaking deployed to: ${deployedDonationsStaking.address}`);
781
-
782
- return {
783
- DonationsStaking: deployedDonationsStaking.address,
784
- StakingContracts: deployed
785
- };
786
- };
787
- const verifyContracts = async release => {
788
- for (let contract of toDeployUpgradable) {
789
- if (contract.network !== "both" && (contract.network === "mainnet") !== isMainnet) {
790
- console.log(
791
- contract,
792
- " Skipping verification non mainnet/sidechain contract:",
793
- contract.network,
794
- contract.name
795
- );
796
- continue;
797
- }
798
- console.log("Running contract verification:", { contract }, release[contract.name]);
799
- if (contract.isUpgradable !== false) {
800
- const implementationAddress = await getImplementationAddress(network.provider, release[contract.name]);
801
- try {
802
- await run("verify:verify", {
803
- address: implementationAddress
804
- });
805
- } catch (err) {
806
- console.log("err", err);
807
- }
808
- } else {
809
- try {
810
- await run("verify:verify", {
811
- address: release[contract.name],
812
- constructorArguments: contract.args,
813
- libraries: {
814
- UniswapV2SwapHelper: release["UniswapV2SwapHelper"]
815
- }
816
- });
817
- } catch (err) {
818
- console.log("err", err);
819
- }
820
- }
821
- }
822
- };
823
-
824
- await deployContracts();
825
-
826
- if (isPerformUpgrade) {
827
- console.log("deployed contracts", { totalGas, dao, release });
828
- if (isTest === false) await pressAnyKey();
829
- await voteProtocolUpgrade(release);
830
- if (isTest === false) await pressAnyKey();
831
- console.log("voted contracts", { totalGas });
832
- isMainnet && (await performUpgrade(release));
833
- !isMainnet && (await performUpgradeFuse(release));
834
- console.log("upgraded contracts", { totalGas });
835
- }
836
- if (isMainnet && !isTest && !isCoverage) {
837
- await verifyContracts(release);
838
- }
839
-
840
- await releaser(release, networkName);
841
- return release;
842
- // await proveNewRep();
843
- };
844
- if (network.name !== "hardhat" && process.argv[1].includes("upgradeToV2.ts")) {
845
- main(name, false)
846
- .catch(e => {
847
- console.log(e);
848
- throw e;
849
- })
850
- .finally(() => {
851
- console.log({ totalGas, gasUsage });
852
- });
853
- }