@gooddollar/goodprotocol 2.1.4 → 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 (292) hide show
  1. package/artifacts/abis/IdentityV4.min.json +1 -0
  2. package/artifacts/contracts/DAOStackInterfaces.sol/Avatar.dbg.json +1 -1
  3. package/artifacts/contracts/DAOStackInterfaces.sol/Controller.dbg.json +1 -1
  4. package/artifacts/contracts/DAOStackInterfaces.sol/GlobalConstraintInterface.dbg.json +1 -1
  5. package/artifacts/contracts/DAOStackInterfaces.sol/IntVoteInterface.dbg.json +1 -1
  6. package/artifacts/contracts/DAOStackInterfaces.sol/ReputationInterface.dbg.json +1 -1
  7. package/artifacts/contracts/DAOStackInterfaces.sol/SchemeRegistrar.dbg.json +1 -1
  8. package/artifacts/contracts/IUniswapV3.sol/INonfungiblePositionManager.dbg.json +1 -1
  9. package/artifacts/contracts/IUniswapV3.sol/IUniswapV3Pool.dbg.json +1 -1
  10. package/artifacts/contracts/Interfaces.sol/AggregatorV3Interface.dbg.json +1 -1
  11. package/artifacts/contracts/Interfaces.sol/ERC20.dbg.json +1 -1
  12. package/artifacts/contracts/Interfaces.sol/IAaveIncentivesController.dbg.json +1 -1
  13. package/artifacts/contracts/Interfaces.sol/IAdminWallet.dbg.json +1 -1
  14. package/artifacts/contracts/Interfaces.sol/IDonationStaking.dbg.json +1 -1
  15. package/artifacts/contracts/Interfaces.sol/IERC2917.dbg.json +1 -1
  16. package/artifacts/contracts/Interfaces.sol/IFirstClaimPool.dbg.json +1 -1
  17. package/artifacts/contracts/Interfaces.sol/IGoodDollar.dbg.json +1 -1
  18. package/artifacts/contracts/Interfaces.sol/IGoodStaking.dbg.json +1 -1
  19. package/artifacts/contracts/Interfaces.sol/IHasRouter.dbg.json +1 -1
  20. package/artifacts/contracts/Interfaces.sol/IIdentity.dbg.json +1 -1
  21. package/artifacts/contracts/Interfaces.sol/IIdentityV2.dbg.json +1 -1
  22. package/artifacts/contracts/Interfaces.sol/ILendingPool.dbg.json +1 -1
  23. package/artifacts/contracts/Interfaces.sol/IMultichainRouter.dbg.json +1 -1
  24. package/artifacts/contracts/Interfaces.sol/INameService.dbg.json +1 -1
  25. package/artifacts/contracts/Interfaces.sol/IQuoterV2.dbg.json +1 -1
  26. package/artifacts/contracts/Interfaces.sol/ISwapRouter.dbg.json +1 -1
  27. package/artifacts/contracts/Interfaces.sol/IUBIScheme.dbg.json +1 -1
  28. package/artifacts/contracts/Interfaces.sol/ProxyAdmin.dbg.json +1 -1
  29. package/artifacts/contracts/Interfaces.sol/Reserve.dbg.json +1 -1
  30. package/artifacts/contracts/Interfaces.sol/Staking.dbg.json +1 -1
  31. package/artifacts/contracts/Interfaces.sol/Uniswap.dbg.json +1 -1
  32. package/artifacts/contracts/Interfaces.sol/UniswapFactory.dbg.json +1 -1
  33. package/artifacts/contracts/Interfaces.sol/UniswapPair.dbg.json +1 -1
  34. package/artifacts/contracts/Interfaces.sol/cERC20.dbg.json +1 -1
  35. package/artifacts/contracts/MentoInterfaces.sol/IBancorExchangeProvider.dbg.json +1 -1
  36. package/artifacts/contracts/MentoInterfaces.sol/IBroker.dbg.json +1 -1
  37. package/artifacts/contracts/MentoInterfaces.sol/IGoodDollarExchangeProvider.dbg.json +1 -1
  38. package/artifacts/contracts/MentoInterfaces.sol/IGoodDollarExpansionController.dbg.json +1 -1
  39. package/artifacts/contracts/MentoInterfaces.sol/IMentoReserve.dbg.json +1 -1
  40. package/artifacts/contracts/MentoInterfaces.sol/ITradingLimits.dbg.json +1 -1
  41. package/artifacts/contracts/fuseFaucet/Faucet.sol/Faucet.dbg.json +1 -1
  42. package/artifacts/contracts/fuseFaucet/FuseFaucet.sol/FuseFaucet.dbg.json +1 -1
  43. package/artifacts/contracts/fuseFaucet/FuseFaucetV2.sol/FuseFaucetV2.dbg.json +1 -1
  44. package/artifacts/contracts/fuseFaucet/SuperfluidFacuet.sol/SuperfluidFaucet.dbg.json +1 -1
  45. package/artifacts/contracts/governance/ClaimersDistribution.sol/ClaimersDistribution.dbg.json +1 -1
  46. package/artifacts/contracts/governance/CompoundVotingMachine.sol/CompoundVotingMachine.dbg.json +1 -1
  47. package/artifacts/contracts/governance/GReputation.sol/GReputation.dbg.json +1 -1
  48. package/artifacts/contracts/governance/GovernanceStaking.sol/GovernanceStaking.dbg.json +1 -1
  49. package/artifacts/contracts/governance/MultiBaseGovernanceShareField.sol/MultiBaseGovernanceShareField.dbg.json +1 -1
  50. package/artifacts/contracts/governance/Reputation.sol/Reputation.dbg.json +1 -1
  51. package/artifacts/contracts/governance/StakersDistribution.sol/StakersDistribution.dbg.json +1 -1
  52. package/artifacts/contracts/identity/IdentityV2.sol/IdentityV2.dbg.json +1 -1
  53. package/artifacts/contracts/identity/IdentityV3.sol/IdentityV3.dbg.json +1 -1
  54. package/artifacts/contracts/identity/IdentityV3.sol/IdentityV3.json +2 -2
  55. package/artifacts/contracts/identity/IdentityV4.sol/IdentityV4.dbg.json +4 -0
  56. package/artifacts/contracts/identity/IdentityV4.sol/IdentityV4.json +1162 -0
  57. package/artifacts/contracts/invite/InvitesFuseV2.sol/InvitesFuseV2.dbg.json +1 -1
  58. package/artifacts/contracts/invite/InvitesV1.sol/InvitesV1.dbg.json +1 -1
  59. package/artifacts/contracts/invite/InvitesV2.sol/InvitesV2.dbg.json +1 -1
  60. package/artifacts/contracts/invite/OneTimeReward.sol/OneTimeReward.dbg.json +1 -1
  61. package/artifacts/contracts/mocks/AaveMock.sol/AaveMock.dbg.json +1 -1
  62. package/artifacts/contracts/mocks/AaveUSDMockOracle.sol/AaveUSDMockOracle.dbg.json +1 -1
  63. package/artifacts/contracts/mocks/BatUSDMockOracle.sol/BatUSDMockOracle.dbg.json +1 -1
  64. package/artifacts/contracts/mocks/CeloDistributionHelperTest.sol/CeloDistributionHelperTest.dbg.json +1 -1
  65. package/artifacts/contracts/mocks/CeloDistributionHelperTest.sol/CeloDistributionHelperTestHelper.dbg.json +1 -1
  66. package/artifacts/contracts/mocks/CompUsdMockOracle.sol/CompUSDMockOracle.dbg.json +1 -1
  67. package/artifacts/contracts/mocks/DAIMock.sol/DAIMock.dbg.json +1 -1
  68. package/artifacts/contracts/mocks/DaiEthPriceMockOracle.sol/DaiEthPriceMockOracle.dbg.json +1 -1
  69. package/artifacts/contracts/mocks/DecimalsMock.sol/DecimalsMock.dbg.json +1 -1
  70. package/artifacts/contracts/mocks/DistributionHelperTest.sol/DistributionHelperTest.dbg.json +1 -1
  71. package/artifacts/contracts/mocks/DistributionHelperTest.sol/DistributionHelperTestHelper.dbg.json +1 -1
  72. package/artifacts/contracts/mocks/EthUSDMockOracle.sol/EthUSDMockOracle.dbg.json +1 -1
  73. package/artifacts/contracts/mocks/FeesFormularMock.sol/FeesFormulaMock.dbg.json +1 -1
  74. package/artifacts/contracts/mocks/GasPriceMockOracle.sol/GasPriceMockOracle.dbg.json +1 -1
  75. package/artifacts/contracts/mocks/GenericDistributionHelperTest.sol/GenericDistributionHelperTest.dbg.json +1 -1
  76. package/artifacts/contracts/mocks/GenericDistributionHelperTest.sol/GenericDistributionHelperTestHelper.dbg.json +1 -1
  77. package/artifacts/contracts/mocks/GoodCompoundStakingTest.sol/GoodCompoundStakingTest.dbg.json +1 -1
  78. package/artifacts/contracts/mocks/GoodFundManagerTest.sol/GoodFundManagerTest.dbg.json +1 -1
  79. package/artifacts/contracts/mocks/IdentityMock.sol/IdentityMock.dbg.json +1 -1
  80. package/artifacts/contracts/mocks/IncentiveControllerMock.sol/IncentiveControllerMock.dbg.json +1 -1
  81. package/artifacts/contracts/mocks/LendingPoolMock.sol/LendingPoolMock.dbg.json +1 -1
  82. package/artifacts/contracts/mocks/OverMintTester.sol/IGoodDollarStakingTest.dbg.json +1 -1
  83. package/artifacts/contracts/mocks/OverMintTester.sol/OverMintTester.dbg.json +1 -1
  84. package/artifacts/contracts/mocks/OverMintTesterRegularStake.sol/OverMintTesterRegularStake.dbg.json +1 -1
  85. package/artifacts/contracts/mocks/PayableMock.sol/PayableMock.dbg.json +1 -1
  86. package/artifacts/contracts/mocks/SixteenDecimalsTokenMock.sol/SixteenDecimalsTokenMock.dbg.json +1 -1
  87. package/artifacts/contracts/mocks/SwapHelperTest.sol/SwapHelperTest.dbg.json +1 -1
  88. package/artifacts/contracts/mocks/TwentyDecimalsTokenMock.sol/TwentyDecimalsTokenMock.dbg.json +1 -1
  89. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock.dbg.json +1 -1
  90. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock2.dbg.json +1 -1
  91. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock3.dbg.json +1 -1
  92. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock4.dbg.json +1 -1
  93. package/artifacts/contracts/mocks/UsdcMock.sol/USDCMock.dbg.json +1 -1
  94. package/artifacts/contracts/mocks/cBATMock.sol/cBATMock.dbg.json +1 -1
  95. package/artifacts/contracts/mocks/cDAILowWorthMock.sol/cDAILowWorthMock.dbg.json +1 -1
  96. package/artifacts/contracts/mocks/cDAIMock.sol/cDAIMock.dbg.json +1 -1
  97. package/artifacts/contracts/mocks/cDAINonMintableMock.sol/cDAINonMintableMock.dbg.json +1 -1
  98. package/artifacts/contracts/mocks/cDecimalsMock.sol/cDecimalsMock.dbg.json +1 -1
  99. package/artifacts/contracts/mocks/cSDTMock.sol/cSDTMock.dbg.json +1 -1
  100. package/artifacts/contracts/mocks/cUSDCMock.sol/cUSDCMock.dbg.json +1 -1
  101. package/artifacts/contracts/reserve/CeloDistributionHelper.sol/CeloDistributionHelper.dbg.json +1 -1
  102. package/artifacts/contracts/reserve/DistributionHelper.sol/DistributionHelper.dbg.json +1 -1
  103. package/artifacts/contracts/reserve/ExchangeHelper.sol/ExchangeHelper.dbg.json +1 -1
  104. package/artifacts/contracts/reserve/GenericDistributionHelper.sol/GenericDistributionHelper.dbg.json +1 -1
  105. package/artifacts/contracts/reserve/GoodMarketMaker.sol/GoodMarketMaker.dbg.json +1 -1
  106. package/artifacts/contracts/reserve/GoodReserveCDai.sol/ContributionCalc.dbg.json +1 -1
  107. package/artifacts/contracts/reserve/GoodReserveCDai.sol/GoodReserveCDai.dbg.json +1 -1
  108. package/artifacts/contracts/staking/BaseShareField.sol/BaseShareField.dbg.json +1 -1
  109. package/artifacts/contracts/staking/BaseShareFieldV2.sol/BaseShareFieldV2.dbg.json +1 -1
  110. package/artifacts/contracts/staking/DonationsStaking.sol/DonationsStaking.dbg.json +1 -1
  111. package/artifacts/contracts/staking/FuseStakingV3.sol/FuseStakingV3.dbg.json +1 -1
  112. package/artifacts/contracts/staking/FuseStakingV3.sol/IConsensus.dbg.json +1 -1
  113. package/artifacts/contracts/staking/FuseStakingV3.sol/PegSwap.dbg.json +1 -1
  114. package/artifacts/contracts/staking/GoodFundManager.sol/GoodFundManager.dbg.json +1 -1
  115. package/artifacts/contracts/staking/SimpleStaking.sol/SimpleStaking.dbg.json +1 -1
  116. package/artifacts/contracts/staking/SimpleStakingV2.sol/SimpleStakingV2.dbg.json +1 -1
  117. package/artifacts/contracts/staking/UniswapV2SwapHelper.sol/UniswapV2SwapHelper.dbg.json +1 -1
  118. package/artifacts/contracts/staking/aave/AaveStakingFactory.sol/AaveStakingFactory.dbg.json +1 -1
  119. package/artifacts/contracts/staking/aave/GoodAaveStaking.sol/GoodAaveStaking.dbg.json +1 -1
  120. package/artifacts/contracts/staking/aave/GoodAaveStakingV2.sol/GoodAaveStakingV2.dbg.json +1 -1
  121. package/artifacts/contracts/staking/compound/CompoundStakingFactory.sol/CompoundStakingFactory.dbg.json +1 -1
  122. package/artifacts/contracts/staking/compound/GoodCompoundStaking.sol/GoodCompoundStaking.dbg.json +1 -1
  123. package/artifacts/contracts/staking/compound/GoodCompoundStakingV2.sol/GoodCompoundStakingV2.dbg.json +1 -1
  124. package/artifacts/contracts/staking/utils/Math64X64.sol/Math64x64.dbg.json +1 -1
  125. package/artifacts/contracts/token/ERC20PresetMinterPauserUpgradeable.sol/ERC20PresetMinterPauserUpgradeable.dbg.json +1 -1
  126. package/artifacts/contracts/token/ERC677.sol/ERC677.dbg.json +1 -1
  127. package/artifacts/contracts/token/ERC677.sol/ERC677Receiver.dbg.json +1 -1
  128. package/artifacts/contracts/token/GoodDollar.sol/GoodDollar.dbg.json +1 -1
  129. package/artifacts/contracts/token/GoodDollar2.sol/GoodDollar2.dbg.json +1 -1
  130. package/artifacts/contracts/token/IFeesFormula.sol/IFeesFormula.dbg.json +1 -1
  131. package/artifacts/contracts/token/MultichainFeeFormula.sol/MultichainFeeFormula.dbg.json +1 -1
  132. package/artifacts/contracts/token/superfluid/ERC20Permit.sol/ERC20Permit.dbg.json +1 -1
  133. package/artifacts/contracts/token/superfluid/ERC20Permit.sol/SelfApprove.dbg.json +1 -1
  134. package/artifacts/contracts/token/superfluid/ISuperGoodDollar.sol/IGoodDollarCustom.dbg.json +1 -1
  135. package/artifacts/contracts/token/superfluid/ISuperGoodDollar.sol/ISuperGoodDollar.dbg.json +1 -1
  136. package/artifacts/contracts/token/superfluid/ISuperToken.sol/ISuperToken.dbg.json +1 -1
  137. package/artifacts/contracts/token/superfluid/SuperGoodDollar.sol/SuperGoodDollar.dbg.json +1 -1
  138. package/artifacts/contracts/token/superfluid/SuperToken.sol/SuperToken.dbg.json +1 -1
  139. package/artifacts/contracts/token/superfluid/SuperfluidToken.sol/SuperfluidToken.dbg.json +1 -1
  140. package/artifacts/contracts/token/superfluid/UUPSProxiable.sol/UUPSProxiable.dbg.json +1 -1
  141. package/artifacts/contracts/token/superfluid/UUPSProxy.sol/Proxy.dbg.json +1 -1
  142. package/artifacts/contracts/token/superfluid/UUPSProxy.sol/UUPSProxy.dbg.json +1 -1
  143. package/artifacts/contracts/token/superfluid/UUPSProxy.sol/UUPSUtils.dbg.json +1 -1
  144. package/artifacts/contracts/ubi/UBIScheme.sol/UBIScheme.dbg.json +1 -1
  145. package/artifacts/contracts/ubi/UBISchemeV2.sol/UBISchemeV2.dbg.json +1 -1
  146. package/artifacts/contracts/utils/AdminWallet.sol/AdminWallet.dbg.json +1 -1
  147. package/artifacts/contracts/utils/AdminWalletFuse.sol/AdminWalletFuse.dbg.json +1 -1
  148. package/artifacts/contracts/utils/BancorFormula.sol/BancorFormula.dbg.json +1 -1
  149. package/artifacts/contracts/utils/BulkProof.sol/BulkProof.dbg.json +1 -1
  150. package/artifacts/contracts/utils/BulkWhitelist.sol/BulkWhitelist.dbg.json +1 -1
  151. package/artifacts/contracts/utils/BuyAndBridgeHelper.sol/BuyAndBridgeHelper.dbg.json +1 -1
  152. package/artifacts/contracts/utils/BuyFromReserveHelper.sol/BuyFromReserveHelper.dbg.json +1 -1
  153. package/artifacts/contracts/utils/BuyGDClone.sol/BuyGDClone.dbg.json +1 -1
  154. package/artifacts/contracts/utils/BuyGDClone.sol/BuyGDCloneFactory.dbg.json +1 -1
  155. package/artifacts/contracts/utils/BuyGDClone.sol/DonateGDClone.dbg.json +1 -1
  156. package/artifacts/contracts/utils/DAOContract.sol/DAOContract.dbg.json +1 -1
  157. package/artifacts/contracts/utils/DAOUpgradeableContract.sol/DAOUpgradeableContract.dbg.json +1 -1
  158. package/artifacts/contracts/utils/DSMath.sol/DSMath.dbg.json +1 -1
  159. package/artifacts/contracts/utils/DataTypes.sol/DataTypes.dbg.json +1 -1
  160. package/artifacts/contracts/utils/FuseOldBridgeKill.sol/EternalStorage.dbg.json +1 -1
  161. package/artifacts/contracts/utils/FuseOldBridgeKill.sol/FuseOldBridgeKill.dbg.json +1 -1
  162. package/artifacts/contracts/utils/FuseOldBridgeKill.sol/IUpgradeabilityOwnerStorage.dbg.json +1 -1
  163. package/artifacts/contracts/utils/FuseOldBridgeKill.sol/Initializable.dbg.json +1 -1
  164. package/artifacts/contracts/utils/FuseOldBridgeKill.sol/Ownable.dbg.json +1 -1
  165. package/artifacts/contracts/utils/FuseOldBridgeKill.sol/Upgradeable.dbg.json +1 -1
  166. package/artifacts/contracts/utils/GDFaucet.sol/GDFaucet.dbg.json +1 -1
  167. package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/GoodDollarMintBurnWrapper.dbg.json +1 -1
  168. package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/IRouter.dbg.json +1 -1
  169. package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/PausableControl.dbg.json +1 -1
  170. package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/TokenOperation.dbg.json +1 -1
  171. package/artifacts/contracts/utils/IdentityFix.sol/IdentityFix.dbg.json +1 -1
  172. package/artifacts/contracts/utils/MultiCall.sol/Multicall.dbg.json +1 -1
  173. package/artifacts/contracts/utils/MultichainBridgeHelper.sol/MultichainBridgeHelper.dbg.json +1 -1
  174. package/artifacts/contracts/utils/NameService.sol/NameService.dbg.json +1 -1
  175. package/artifacts/contracts/utils/OneTimePayments.sol/OneTimePayments.dbg.json +1 -1
  176. package/artifacts/contracts/utils/OneTimePaymentsV2.sol/OneTimePaymentsV2.dbg.json +1 -1
  177. package/artifacts/contracts/utils/ProtoclUpgradeV4Mento.sol/MentoExchange.dbg.json +1 -1
  178. package/artifacts/contracts/utils/ProtoclUpgradeV4Mento.sol/ProtocolUpgradeV4Mento.dbg.json +1 -1
  179. package/artifacts/contracts/utils/ProtocolUpgrade.sol/OldMarketMaker.dbg.json +1 -1
  180. package/artifacts/contracts/utils/ProtocolUpgrade.sol/ProtocolUpgrade.dbg.json +1 -1
  181. package/artifacts/contracts/utils/ProtocolUpgradeFuse.sol/ProtocolUpgradeFuse.dbg.json +1 -1
  182. package/artifacts/contracts/utils/ProtocolUpgradeFuseRecover.sol/ProtocolUpgradeFuseRecover.dbg.json +1 -1
  183. package/artifacts/contracts/utils/ProtocolUpgradeRecover.sol/ProtocolUpgradeRecover.dbg.json +1 -1
  184. package/artifacts/contracts/utils/ProxyFactory1967.sol/ERC1967Proxy.dbg.json +1 -1
  185. package/artifacts/contracts/utils/ProxyFactory1967.sol/ProxyFactory1967.dbg.json +1 -1
  186. package/artifacts/contracts/utils/ReputationTestHelper.sol/ReputationTestHelper.dbg.json +1 -1
  187. package/contracts/identity/IdentityV3.sol +0 -3
  188. package/contracts/identity/IdentityV4.sol +578 -0
  189. package/hardhat.config.ts +3 -4
  190. package/package.json +8 -4
  191. package/releases/deployment.json +691 -1
  192. package/test/governance/ClaimersDistribution.test.ts +1 -1
  193. package/test/governance/CompoundVotingMachine.castvote.test.ts +30 -30
  194. package/test/helpers.ts +76 -195
  195. package/test/identity/IdentityV3.test.ts +53 -129
  196. package/test/identity/IdentityV4.test.ts +454 -0
  197. package/test/reserve/GenericDistributionHelper.e2e.test.ts +445 -0
  198. package/test/utils/AdminWallet.test.ts +14 -15
  199. package/types/contracts/identity/IdentityV4.ts +2001 -0
  200. package/types/contracts/identity/index.ts +1 -0
  201. package/types/contracts/utils/UpdateReserveRatio.sol/MentoExchange.ts +81 -0
  202. package/types/contracts/utils/UpdateReserveRatio.sol/UpdateReserveRatio.ts +134 -0
  203. package/types/contracts/utils/UpdateReserveRatio.sol/index.ts +5 -0
  204. package/types/contracts/utils/UpdateReserveRatioAfterXDC.sol/UpdateReserveRatioAfterXDC.ts +7 -2
  205. package/types/contracts/utils/index.ts +2 -0
  206. package/types/factories/contracts/identity/IdentityV3__factory.ts +1 -1
  207. package/types/factories/contracts/identity/IdentityV4__factory.ts +1213 -0
  208. package/types/factories/contracts/identity/index.ts +1 -0
  209. package/types/factories/contracts/utils/UpdateReserveRatio.sol/MentoExchange__factory.ts +39 -0
  210. package/types/factories/contracts/utils/UpdateReserveRatio.sol/UpdateReserveRatio__factory.ts +113 -0
  211. package/types/factories/contracts/utils/UpdateReserveRatio.sol/index.ts +5 -0
  212. package/types/factories/contracts/utils/UpdateReserveRatioAfterXDC.sol/UpdateReserveRatioAfterXDC__factory.ts +9 -15
  213. package/types/factories/contracts/utils/index.ts +1 -0
  214. package/types/hardhat.d.ts +27 -0
  215. package/types/index.ts +4 -0
  216. package/scripts/ProxyFactory.json +0 -4425
  217. package/scripts/analytics/activeGDStakers.ts +0 -188
  218. package/scripts/analytics/activeStakers.ts +0 -25
  219. package/scripts/analytics/activeUsersCount.ts +0 -156
  220. package/scripts/analytics/activeWalletsStats.ts +0 -301
  221. package/scripts/analytics/checkActiveWallets.ts +0 -60
  222. package/scripts/analytics/checkBridgeBalances.ts +0 -442
  223. package/scripts/analytics/claimIncidentStats.ts +0 -98
  224. package/scripts/analytics/faucetStats.ts +0 -130
  225. package/scripts/analytics/gdinflow.ts +0 -57
  226. package/scripts/analytics/goodHolders.ts +0 -46
  227. package/scripts/analytics/goodgiveback.ts +0 -64
  228. package/scripts/analytics/p2pTxs.ts +0 -564
  229. package/scripts/analytics/stuckgd.ts +0 -70
  230. package/scripts/analytics/tokenInOutStats.ts +0 -48
  231. package/scripts/analytics/whitelistsyncIssue.ts +0 -87
  232. package/scripts/bulkProof.ts +0 -202
  233. package/scripts/bulkWhitelist.ts +0 -31
  234. package/scripts/deployGnosisSafe.ts +0 -111
  235. package/scripts/fetchOrDeployProxyFactory.ts +0 -46
  236. package/scripts/fv.ts +0 -263
  237. package/scripts/gdx/gdxAirdropCalculation.ts +0 -479
  238. package/scripts/getFounders.ts +0 -32
  239. package/scripts/governance/README.md +0 -70
  240. package/scripts/governance/airdropCalculation.ts +0 -1119
  241. package/scripts/governance/airdropCalculationRecover.ts +0 -416
  242. package/scripts/governance/airdropCalculationSorted.ts +0 -438
  243. package/scripts/governance/goodCheckpointSorted.ts +0 -300
  244. package/scripts/keeper/fishInactive.ts +0 -47
  245. package/scripts/minimize.sh +0 -17
  246. package/scripts/multichain-deploy/0_proxyFactory-deploy.ts +0 -131
  247. package/scripts/multichain-deploy/1_basicdao-deploy.ts +0 -294
  248. package/scripts/multichain-deploy/2_helpers-deploy.ts +0 -152
  249. package/scripts/multichain-deploy/2b_otp-deploy.ts +0 -73
  250. package/scripts/multichain-deploy/3_gdSavings-deploy.ts +0 -190
  251. package/scripts/multichain-deploy/4_ubi-deploy.ts +0 -129
  252. package/scripts/multichain-deploy/5_gov-deploy.ts +0 -179
  253. package/scripts/multichain-deploy/6_testnetFaucet.ts +0 -85
  254. package/scripts/multichain-deploy/7_superfluidfaucet-deploy.ts +0 -123
  255. package/scripts/multichain-deploy/8_disthelper-deploy.ts +0 -152
  256. package/scripts/multichain-deploy/createUniswapTestPools.ts +0 -163
  257. package/scripts/multichain-deploy/flattened/Avatar.sol +0 -913
  258. package/scripts/multichain-deploy/flattened/Controller.sol +0 -1891
  259. package/scripts/multichain-deploy/flattened/FeeFormula.sol +0 -1290
  260. package/scripts/multichain-deploy/fulldeploy.sh +0 -26
  261. package/scripts/multichain-deploy/helpers.ts +0 -647
  262. package/scripts/multichain-deploy/multichainWrapper-deploy.ts +0 -59
  263. package/scripts/multichain-deploy/verifyEtherscan.ts +0 -177
  264. package/scripts/proposals/gip-14_1.ts +0 -251
  265. package/scripts/proposals/gip-15.ts +0 -427
  266. package/scripts/proposals/gip-25-xdc-upgrade-ubi.ts +0 -746
  267. package/scripts/proposals/gips-14_1.md +0 -29
  268. package/scripts/proposals/hack-ubi-recovery.ts +0 -414
  269. package/scripts/proposals/identityAuthPeriod.ts +0 -229
  270. package/scripts/proposals/reserveRestore.ts +0 -474
  271. package/scripts/proposals/updateDistHelper.ts +0 -180
  272. package/scripts/proposals/v4Upgrade.ts +0 -845
  273. package/scripts/releaser.js +0 -24
  274. package/scripts/staking/stakersGdRewardsCalculation.ts +0 -64
  275. package/scripts/upgradeScheme.ts +0 -97
  276. package/scripts/upgradeToV2/upgradeToV2.ts +0 -853
  277. package/scripts/upgradeToV2/upgradeToV2Recover.ts +0 -939
  278. package/scripts/upgradeToV3/v3-fix.ts +0 -120
  279. package/scripts/upgradeToV3/v3-fuse-multichain.ts +0 -117
  280. package/scripts/upgradeToV3/v3-upgrade.ts +0 -219
  281. package/scripts/upgrades/celo-defi-ubi-deploy.ts +0 -184
  282. package/scripts/upgrades/identity-upgrade.ts +0 -126
  283. package/scripts/upgrades/multichain-formula-upgrade.ts +0 -143
  284. package/scripts/upgrades/multichain-temp-fix.ts +0 -129
  285. package/scripts/upgrades/restoreFunds.ts +0 -91
  286. package/scripts/upgrades/superfluid-nft-celo-gas-token.ts +0 -159
  287. package/scripts/upgrades/transferDaoToGuardians.ts +0 -80
  288. package/scripts/upgrades/upgradeAdminWallet.ts +0 -29
  289. package/scripts/upgrades/upgradeFaucet.ts +0 -46
  290. package/scripts/utils.ts +0 -50
  291. package/scripts/verify.ts +0 -67
  292. 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
- }