@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,474 +0,0 @@
1
- /***
2
- * Mainnet:
3
- * FIXES:
4
- * - prevent hacked funds burnFrom
5
- * - set GOOD rewards to 0
6
- * - prevent untrusted contracts in goodfundmanager
7
- * - use bonding curve for actual cDAI balance (prevent the "buy" instead of "transferTo" used in hack to trick reserve into minting UBI from interest)
8
- * - set exit contribution to 10%
9
- * - disable gdx
10
- * - fix reserve calculations of expansion/currentprice
11
- * - add requirement of guardians to approve on-chain proposals
12
- * - reserve should not trust exchange helper
13
- * - resere should not trust fundmanager for its starting balance
14
- *
15
- * PLAN:
16
- * - pause staking
17
- * - prevent fusebridge usage
18
- * - set GOOD rewards to 0
19
- * - blacklist hacked accounts to prevent burn (transfer already blocked done via tax)
20
- * - withdraw funds from fuse
21
- * - transfer to MPB bridge
22
- * - upgrade reserve
23
- * - set new reserve ratio, supply(minus hacked funds) and reserve
24
- * - set contribution to 10%
25
- * - unpause reserve
26
- * - upgrade exchangeHelper
27
- * - upgrade goodfundmanager
28
- * - upgrade governance
29
- * - unpause reserve
30
- * - unpause goodfundmanager
31
- * - switch fuse distribution to use lz bridge insted of deprecated fuse bridge
32
- *
33
- *
34
- * Fuse:
35
- * PLAN:
36
- * - prevent old fuse bridge usage
37
- * - upgrade governance
38
- *
39
- **/
40
-
41
- import { network, ethers } from "hardhat";
42
- import { reset, time } from "@nomicfoundation/hardhat-network-helpers";
43
- import { defaultsDeep, last } from "lodash";
44
- import prompt from "prompt";
45
- // import mpbDeployments from "@gooddollar/bridge-contracts/release/mpb.json"
46
-
47
- import { executeViaGuardian, executeViaSafe, verifyProductionSigner } from "../multichain-deploy/helpers";
48
-
49
- import ProtocolSettings from "../../releases/deploy-settings.json";
50
-
51
- import dao from "../../releases/deployment.json";
52
- import {
53
- ExchangeHelper,
54
- FuseOldBridgeKill,
55
- GoodFundManager,
56
- GoodMarketMaker,
57
- GoodReserveCDai,
58
- IGoodDollar,
59
- ReserveRestore
60
- } from "../../types";
61
- let { name: networkName } = network;
62
-
63
- const isSimulation = network.name === "hardhat" || network.name === "fork" || network.name === "localhost";
64
-
65
- // hacker and hacked multichain bridge accounts
66
- const LOCKED_ACCOUNTS = [
67
- "0xeC577447D314cf1e443e9f4488216651450DBE7c",
68
- "0xD17652350Cfd2A37bA2f947C910987a3B1A1c60d",
69
- "0x6738fA889fF31F82d9Fe8862ec025dbE318f3Fde"
70
- ];
71
- const INITIAL_DAI = ethers.utils.parseEther("100000"); // 100k
72
- // reserve funder (goodlabs safe)
73
- const funder = "0xF0652a820dd39EC956659E0018Da022132f2f40a";
74
-
75
- export const upgradeMainnet = async network => {
76
- const isProduction = networkName.includes("production");
77
- let [root, ...signers] = await ethers.getSigners();
78
-
79
- if (isProduction) verifyProductionSigner(root);
80
-
81
- let guardian = root;
82
-
83
- //simulate produciton on fork
84
- if (isSimulation) {
85
- networkName = "production-mainnet";
86
- }
87
-
88
- let release: { [key: string]: any } = dao[networkName];
89
- let protocolSettings = defaultsDeep({}, ProtocolSettings[networkName], ProtocolSettings["default"]);
90
-
91
- //simulate on fork, make sure safe has enough eth to simulate txs
92
- if (isSimulation) {
93
- await reset("https://eth.drpc.org");
94
- guardian = await ethers.getImpersonatedSigner(protocolSettings.guardiansSafe);
95
-
96
- await root.sendTransaction({
97
- value: ethers.utils.parseEther("1"),
98
- to: protocolSettings.guardiansSafe
99
- });
100
- }
101
-
102
- const rootBalance = await ethers.provider.getBalance(root.address).then(_ => _.toString());
103
- const guardianBalance = await ethers.provider.getBalance(guardian.address).then(_ => _.toString());
104
-
105
- console.log("got signers:", {
106
- networkName,
107
- root: root.address,
108
- guardian: guardian.address,
109
- balance: rootBalance,
110
- guardianBalance: guardianBalance
111
- });
112
-
113
- const reserveImpl = await ethers.deployContract("GoodReserveCDai");
114
- const goodFundManagerImpl = await ethers.deployContract("GoodFundManager");
115
- const exchangeHelperImpl = await ethers.deployContract("ExchangeHelper");
116
- const stakersDistImpl = await ethers.deployContract("StakersDistribution");
117
- const govImpl = await ethers.deployContract("CompoundVotingMachine");
118
- const distHelperImplt = await ethers.deployContract("DistributionHelper");
119
- const marketMakerImpl = await ethers.deployContract("GoodMarketMaker");
120
- const upgradeImpl = (await ethers.deployContract("ReserveRestore", [release.NameService])) as ReserveRestore;
121
-
122
- const gd = (await ethers.getContractAt("IGoodDollar", release.GoodDollar)) as IGoodDollar;
123
-
124
- // test blacklisting to prevent burn by hacker
125
- if (isSimulation) {
126
- const locked = await ethers.getImpersonatedSigner(LOCKED_ACCOUNTS[0]);
127
- const tx = await gd
128
- .connect(locked)
129
- .burn("10")
130
- .then(_ => _.wait())
131
- .then(_ => _.status)
132
- .catch(e => e);
133
-
134
- console.log("Burn tx before:", tx);
135
-
136
- const funderSigner = await ethers.getImpersonatedSigner(funder);
137
- const dai = await ethers.getContractAt("IGoodDollar", release.DAI);
138
- await dai.connect(funderSigner).approve(upgradeImpl.address, ethers.utils.parseEther("200000"));
139
- const whale = await ethers.getImpersonatedSigner("0xa359Fc83C48277EedF375a5b6DC9Ec7D093aD3f2");
140
- await dai.connect(whale).transfer(root.address, ethers.utils.parseEther("100000"));
141
-
142
- const lockedFunds = await Promise.all(LOCKED_ACCOUNTS.map(_ => gd.balanceOf(_)));
143
- const totalLocked = lockedFunds.reduce((acc, cur) => acc.add(cur), ethers.constants.Zero);
144
- console.log({ totalLocked });
145
- }
146
-
147
- const startSupply = await gd.totalSupply();
148
-
149
- console.log("executing proposals");
150
-
151
- const proposalContracts = [
152
- release.StakingContractsV3[0][0], // pause staking
153
- release.StakingContractsV3[1][0], // pause staking
154
- release.StakersDistribution, //set GOOD rewards to 0
155
- release.GoodReserveCDai, //expansion ratio
156
- release.ForeignBridge, // prevent from using
157
- release.Identity, // set locked G$ accounts as blacklisted so cant do burn from
158
- release.Identity, // set locked G$ accounts as blacklisted so cant do burn from
159
- release.Identity, // set locked G$ accounts as blacklisted so cant do burnfrom
160
- release.ForeignBridge, // claim bridge tokens to mpb bridge
161
- release.GoodReserveCDai, //upgrade reserve
162
- release.GoodFundManager, //upgrade fundmanager
163
- release.ExchangeHelper, //upgrade exchangehelper
164
- release.DistributionHelper, //upgrade disthelper
165
- release.StakersDistribution, //upgrade stakers dist
166
- release.GoodMarketMaker, //upgrade mm
167
- release.CompoundVotingMachine, // upgrade gov
168
- release.DistributionHelper, // switch to lz bridge for fuse
169
- release.ExchangeHelper, // activate upgrade changes
170
- release.Controller,
171
- // upgradeImpl.address,
172
- release.GoodReserveCDai
173
- ];
174
-
175
- const proposalEthValues = proposalContracts.map(_ => 0);
176
-
177
- const proposalFunctionSignatures = [
178
- "pause(bool)",
179
- "pause(bool)",
180
- "setMonthlyReputationDistribution(uint256)",
181
- "setReserveRatioDailyExpansion(uint256,uint256)",
182
- "setExecutionDailyLimit(uint256)", // set limit to 0 so old bridge cant be used
183
- "addBlacklisted(address)",
184
- "addBlacklisted(address)",
185
- "addBlacklisted(address)",
186
- "claimTokens(address,address)",
187
- "upgradeTo(address)",
188
- "upgradeTo(address)",
189
- "upgradeTo(address)",
190
- "upgradeTo(address)",
191
- "upgradeTo(address)",
192
- "upgradeTo(address)",
193
- "upgradeTo(address)",
194
- "addOrUpdateRecipient((uint32,uint32,address,uint8))",
195
- "setAddresses()",
196
- "registerScheme(address,bytes32,bytes4,address)", // give upgrade contract permissions
197
- "grantRole(bytes32,address)"
198
- ];
199
-
200
- const proposalFunctionInputs = [
201
- ethers.utils.defaultAbiCoder.encode(["bool"], [true]),
202
- ethers.utils.defaultAbiCoder.encode(["bool"], [true]),
203
- ethers.utils.defaultAbiCoder.encode(["uint256"], [0]),
204
- ethers.utils.defaultAbiCoder.encode(["uint256", "uint256"], [999711382710978, 1e15]),
205
- ethers.utils.defaultAbiCoder.encode(["uint256"], [0]),
206
- ethers.utils.defaultAbiCoder.encode(["address"], [LOCKED_ACCOUNTS[0]]),
207
- ethers.utils.defaultAbiCoder.encode(["address"], [LOCKED_ACCOUNTS[1]]),
208
- ethers.utils.defaultAbiCoder.encode(["address"], [LOCKED_ACCOUNTS[2]]),
209
- ethers.utils.defaultAbiCoder.encode(["address", "address"], [release.GoodDollar, release.MpbBridge]),
210
- ethers.utils.defaultAbiCoder.encode(["address"], [reserveImpl.address]),
211
- ethers.utils.defaultAbiCoder.encode(["address"], [goodFundManagerImpl.address]),
212
- ethers.utils.defaultAbiCoder.encode(["address"], [exchangeHelperImpl.address]),
213
- ethers.utils.defaultAbiCoder.encode(["address"], [distHelperImplt.address]),
214
- ethers.utils.defaultAbiCoder.encode(["address"], [stakersDistImpl.address]),
215
- ethers.utils.defaultAbiCoder.encode(["address"], [marketMakerImpl.address]),
216
- ethers.utils.defaultAbiCoder.encode(["address"], [govImpl.address]),
217
- ethers.utils.defaultAbiCoder.encode(
218
- ["uint32", "uint32", "address", "uint8"],
219
- [1000, 122, dao["production"].UBIScheme, 1] //10% chainId 122 ubischeme 1-lz bridge
220
- ),
221
- "0x", //setAddresses
222
- ethers.utils.defaultAbiCoder.encode(
223
- ["address", "bytes32", "bytes4", "address"],
224
- [
225
- upgradeImpl.address, //scheme
226
- ethers.constants.HashZero, //paramshash
227
- "0x000000f1", //permissions - minimal
228
- release.Avatar
229
- ]
230
- ),
231
- ethers.utils.defaultAbiCoder.encode(
232
- ["bytes32", "address"],
233
- [
234
- "0x65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a", //pauser role
235
- release.Avatar
236
- ]
237
- )
238
- ];
239
-
240
- if (isProduction) {
241
- await executeViaSafe(
242
- proposalContracts,
243
- proposalEthValues,
244
- proposalFunctionSignatures,
245
- proposalFunctionInputs,
246
- protocolSettings.guardiansSafe,
247
- "mainnet"
248
- );
249
- } else {
250
- //simulation or dev envs
251
- await executeViaGuardian(
252
- proposalContracts,
253
- proposalEthValues,
254
- proposalFunctionSignatures,
255
- proposalFunctionInputs,
256
- guardian,
257
- networkName
258
- );
259
- }
260
-
261
- if (isSimulation) {
262
- await mainnetPostChecks(upgradeImpl);
263
- }
264
- };
265
-
266
- const mainnetPostChecks = async (upgradeImpl: ReserveRestore) => {
267
- networkName = "production-mainnet";
268
- let release: { [key: string]: any } = dao[networkName];
269
-
270
- let [root, ...signers] = await ethers.getSigners();
271
- const gd = await ethers.getContractAt("IGoodDollar", release.GoodDollar);
272
-
273
- //execute the reserve initialization
274
- (await upgradeImpl.upgrade(funder, INITIAL_DAI)).wait();
275
-
276
- const locked = await ethers.getImpersonatedSigner(LOCKED_ACCOUNTS[0]);
277
- const tx = await gd
278
- .connect(locked)
279
- .burn("10", { maxFeePerGas: 30e9, maxPriorityFeePerGas: 1e9, gasLimit: 200000 })
280
- .then(_ => _.wait())
281
- .then(_ => _.status)
282
- .catch(e => e);
283
- console.log("Burn tx after should fail:", tx);
284
-
285
- const dai = await ethers.getContractAt("IGoodDollar", release.DAI);
286
- const cdai = await ethers.getContractAt("IGoodDollar", release.cDAI);
287
- const reserve = (await ethers.getContractAt("GoodReserveCDai", release.GoodReserveCDai)) as GoodReserveCDai;
288
- const mm = (await ethers.getContractAt("GoodMarketMaker", release.GoodMarketMaker)) as GoodMarketMaker;
289
- const newExpansion = await mm.reserveRatioDailyExpansion();
290
- console.log(
291
- "new expansion set:",
292
- newExpansion,
293
- newExpansion.mul(1e15).div(ethers.utils.parseEther("1000000000")).toNumber() / 1e15 === 0.999711382710978
294
- );
295
- console.log(
296
- "discount should be disabled:",
297
- await reserve.discountDisabled(),
298
- " gdx should be disabled:",
299
- await reserve.gdxDisabled()
300
- );
301
- const resereState = await mm.reserveTokens(release.cDAI);
302
- console.log({ resereState });
303
- const finalSupply = await gd.totalSupply();
304
- const distHelper = await ethers.getContractAt("DistributionHelper", release.DistributionHelper);
305
- const result = await distHelper.calcGDToSell(1e9);
306
- console.log("how much G$ to sell to cover distribution fees out of 1M:", result.toNumber() / 100);
307
- const [cdaiPriceBefore, daiPriceBefore] = await (
308
- await Promise.all([reserve.currentPrice(), reserve.currentPriceDAI()])
309
- ).map(_ => _.toNumber());
310
- console.log({ cdaiPriceBefore, daiPriceBefore });
311
- const dex = (await ethers.getContractAt("ExchangeHelper", release.ExchangeHelper)) as ExchangeHelper;
312
- await dai.approve(dex.address, ethers.utils.parseEther("10000"));
313
- await dex.buy([release.DAI], ethers.utils.parseEther("10000"), 0, 0, root.address);
314
- // check g$ prices
315
- const [cdaiPriceAfter, daiPriceAfter] = await (
316
- await Promise.all([reserve.currentPrice(), reserve.currentPriceDAI()])
317
- ).map(_ => _.toNumber());
318
- console.log("prices after buying form reserve with 10k DAI", { cdaiPriceAfter, daiPriceAfter });
319
- await gd.approve(dex.address, await gd.balanceOf(root.address));
320
- await dex.sell([release.DAI], await gd.balanceOf(root.address), 0, 0, root.address);
321
- const daiBalanceAfterSell = await dai.balanceOf(root.address);
322
- // expect a 10% sell fee
323
- console.log("expect 10% sell fee (selling 10K gets only 9K of dai, balance should be ~99K):", {
324
- daiBalanceAfterSell
325
- });
326
- const cdaiReserveBalance = await cdai.balanceOf(reserve.address);
327
- console.log({ cdaiReserveBalance });
328
-
329
- const [mpbBalance, fuseBalance] = await Promise.all([
330
- gd.balanceOf(release.MpbBridge),
331
- gd.balanceOf(release.ForeignBridge)
332
- ]);
333
- console.log("fuse bridge should have 0 balance and Mpb should be >6B", { mpbBalance, fuseBalance });
334
- const gfm = (await ethers.getContractAt("GoodFundManager", release.GoodFundManager)) as GoodFundManager;
335
- const stakingContracts = await gfm.callStatic.calcSortedContracts();
336
- console.log({ stakingContracts });
337
- const interesTX = await (
338
- await gfm.collectInterest(
339
- stakingContracts.map(_ => _[0]),
340
- false
341
- )
342
- ).wait();
343
- const ubiEvents = last(await reserve.queryFilter(reserve.filters.UBIMinted(), -1));
344
- console.log(
345
- "collectinterest gfm events:",
346
- interesTX.events?.find(_ => _.event === "FundsTransferred")
347
- );
348
- console.log("ubiEvents after collect interest:", ubiEvents);
349
- // check expansion after some time
350
- await time.increase(365 * 60 * 60 * 24);
351
- const gdSupplyBeforeExpansion = await gd.totalSupply();
352
- const reserveStateBeforeYearExpansion = await mm.reserveTokens(release.cDAI);
353
-
354
- const expansionTX = await (await gfm.collectInterest([], false)).wait();
355
- const ubiExpansionEvents = last(await reserve.queryFilter(reserve.filters.UBIMinted(), -1));
356
- console.log(
357
- "gfm events after 1 year expansion:",
358
- expansionTX.events?.filter(_ => _.event === "FundsTransferred")
359
- );
360
- console.log("ubiEvents after 1 year expansion:", ubiExpansionEvents);
361
- const reserveStateAfterYearExpansion = await mm.reserveTokens(release.cDAI);
362
- const gdSupplyAfterExpansion = await gd.totalSupply();
363
- console.log({
364
- reserveStateAfterYearExpansion,
365
- gdSupplyAfterExpansion,
366
- gdSupplyBeforeExpansion,
367
- reserveStateBeforeYearExpansion
368
- });
369
-
370
- //execute the reserve initialization
371
- await (await upgradeImpl.donate(funder, INITIAL_DAI)).wait();
372
- const [cdaiPriceAfterDonation, daiPriceAfterDonation] = await (
373
- await Promise.all([reserve.currentPrice(), reserve.currentPriceDAI()])
374
- ).map(_ => _.toNumber());
375
- console.log("price after dai donation:", { cdaiPriceAfterDonation, daiPriceAfterDonation });
376
- const reserveStateAfterDonation = await mm.reserveTokens(release.cDAI);
377
- console.log({ reserveStateAfterDonation });
378
-
379
- await (await upgradeImpl.end()).wait();
380
- };
381
- export const upgradeFuse = async network => {
382
- let [root] = await ethers.getSigners();
383
-
384
- const isProduction = networkName.includes("production");
385
-
386
- let networkEnv = networkName.split("-")[0];
387
- if (isSimulation) networkEnv = "production";
388
-
389
- let release: { [key: string]: any } = dao[networkEnv];
390
-
391
- let guardian = root;
392
- //simulate on fork, make sure safe has enough eth to simulate txs
393
- if (isSimulation) {
394
- await reset("https://fuse.liquify.com");
395
- guardian = await ethers.getImpersonatedSigner(release.GuardiansSafe);
396
-
397
- await root.sendTransaction({ value: ethers.constants.WeiPerEther.mul(3), to: guardian.address });
398
- }
399
-
400
- const gd = (await ethers.getContractAt("IGoodDollar", release.GoodDollar)) as IGoodDollar;
401
-
402
- const isMinter = await gd.isMinter(release.HomeBridge);
403
-
404
- console.log({ networkEnv, guardian: guardian.address, isSimulation, isProduction, isMinter });
405
-
406
- const govImpl = await ethers.deployContract("CompoundVotingMachine");
407
- const killBridge = (await ethers.deployContract("FuseOldBridgeKill")) as FuseOldBridgeKill;
408
-
409
- const proposalContracts = [
410
- release.HomeBridge, // prevent from using by upgrading to empty contract and removing minting rights
411
- release.CompoundVotingMachine //upgrade gov
412
- ];
413
-
414
- const proposalEthValues = proposalContracts.map(_ => 0);
415
-
416
- const proposalFunctionSignatures = [
417
- "upgradeToAndCall(uint256,address,bytes)", // upgrade and call end
418
- "upgradeTo(address)"
419
- ];
420
-
421
- const proposalFunctionInputs = [
422
- ethers.utils.defaultAbiCoder.encode(
423
- ["uint256", "address", "bytes"],
424
- [2, killBridge.address, killBridge.interface.encodeFunctionData("end")]
425
- ),
426
- ethers.utils.defaultAbiCoder.encode(["address"], [govImpl.address])
427
- ];
428
-
429
- if (isProduction) {
430
- await executeViaSafe(
431
- proposalContracts,
432
- proposalEthValues,
433
- proposalFunctionSignatures,
434
- proposalFunctionInputs,
435
- release.GuardiansSafe,
436
- "fuse"
437
- );
438
- } else {
439
- await executeViaGuardian(
440
- proposalContracts,
441
- proposalEthValues,
442
- proposalFunctionSignatures,
443
- proposalFunctionInputs,
444
- guardian,
445
- networkEnv
446
- );
447
- }
448
-
449
- if (isSimulation) {
450
- const isMinter = await gd.isMinter(release.HomeBridge);
451
- console.log("Fuse bridge scheme registration check:", isMinter ? "Failed" : "Success");
452
- }
453
- };
454
-
455
- export const main = async () => {
456
- prompt.start();
457
- const { network } = await prompt.get(["network"]);
458
-
459
- console.log("running step:", { network });
460
- const chain = last(network.split("-"));
461
- switch (chain) {
462
- case "mainnet":
463
- // await mainnetPostChecks()
464
- await upgradeMainnet(network);
465
-
466
- break;
467
- case "fuse":
468
- await upgradeFuse(network);
469
-
470
- break;
471
- }
472
- };
473
-
474
- main().catch(console.log);
@@ -1,180 +0,0 @@
1
- /***
2
- * Upgrade dist helper to have better axelar base fee
3
- * Update the axelarbasefee
4
- * Send UBI G$s to the bridge for liquidity
5
- */
6
-
7
- import { network, ethers } from "hardhat";
8
- import { Contract } from "ethers";
9
- import { defaultsDeep } from "lodash";
10
- import prompt from "prompt";
11
- import { reset } from "@nomicfoundation/hardhat-network-helpers";
12
-
13
- import {
14
- printDeploy,
15
- executeViaGuardian,
16
- executeViaSafe,
17
- verifyProductionSigner
18
- } from "../multichain-deploy/helpers";
19
-
20
- import ProtocolSettings from "../../releases/deploy-settings.json";
21
-
22
- import dao from "../../releases/deployment.json";
23
- import { verifyContract } from "../multichain-deploy/helpers";
24
- import { IStaticOracle } from "../../types";
25
- let { name: networkName } = network;
26
-
27
- export const upgrade = async () => {
28
- const isProduction = networkName.includes("production");
29
- let [root, ...signers] = await ethers.getSigners();
30
-
31
- // if (isProduction) verifyProductionSigner(root);
32
-
33
- let guardian = root;
34
-
35
- //simulate produciton on fork
36
- if (
37
- network.name === "localhost" ||
38
- network.name === "hardhat" ||
39
- network.name === "fork"
40
- ) {
41
- networkName = "production-mainnet";
42
- }
43
-
44
- let release: { [key: string]: any } = dao[networkName];
45
- let protocolSettings = defaultsDeep(
46
- {},
47
- ProtocolSettings[networkName],
48
- ProtocolSettings["default"]
49
- );
50
-
51
- //simulate on fork, make sure safe has enough eth to simulate txs
52
- if (
53
- network.name === "localhost" ||
54
- network.name === "hardhat" ||
55
- network.name === "fork"
56
- ) {
57
- guardian = await ethers.getImpersonatedSigner(
58
- protocolSettings.guardiansSafe
59
- );
60
- networkName = "production-mainnet";
61
-
62
- await root.sendTransaction({
63
- value: ethers.constants.WeiPerEther.mul(3),
64
- to: protocolSettings.guardiansSafe
65
- });
66
- }
67
-
68
- const rootBalance = await ethers.provider
69
- .getBalance(root.address)
70
- .then(_ => _.toString());
71
- const guardianBalance = await ethers.provider
72
- .getBalance(guardian.address)
73
- .then(_ => _.toString());
74
-
75
- const gd = await ethers.getContractAt("IGoodDollar", release["GoodDollar"]);
76
-
77
- const NEWBRIDGE = "0xa3247276DbCC76Dd7705273f766eB3E8a5ecF4a5";
78
- const GUARDIANS_BALANCE = await gd.balanceOf(protocolSettings.guardiansSafe);
79
-
80
- if (GUARDIANS_BALANCE.eq(0)) throw new Error("guardian has no G$ balance");
81
-
82
- const bridgeDeployed = await ethers.provider
83
- .getCode(NEWBRIDGE)
84
- .then(_ => _ != "0x");
85
- if (!bridgeDeployed) throw new Error("bridge not deployed yet");
86
-
87
- console.log("got signers:", {
88
- networkName,
89
- root: root.address,
90
- guardian: guardian.address,
91
- balance: rootBalance,
92
- guardianBalance: guardianBalance
93
- });
94
-
95
- console.log("executing proposals");
96
-
97
- const proposalContracts = [
98
- release.DistributionHelper, //controller -> upgrade disthelper
99
- release.DistributionHelper, //update axelar fee
100
- protocolSettings.guardiansSafe + "_" + release.GoodDollar //transfer G$s from guardians to bridge
101
- ];
102
-
103
- const proposalEthValues = proposalContracts.map(_ => 0);
104
-
105
- const proposalFunctionSignatures = [
106
- "upgradeTo(address)", //upgrade disthelper
107
- "setFeeSettings((uint128,uint128,uint128,uint128,uint128,uint8))",
108
- "transfer(address,uint256)" // transfer G$s from guardians to bridge
109
- ];
110
-
111
- const proposalFunctionInputs = [
112
- ethers.utils.defaultAbiCoder.encode(
113
- ["address"],
114
- ["0xa339B7F4E95A93d2c6569cb139AD034C3b9cAA77"]
115
- ),
116
- //uint128 axelarBaseFeeUSD;uint128 bridgeExecuteGas;uint128 targetChainGasPrice;uint128 maxFee;uint128 minBalanceForFees;uint8 percentageToSellForFee;
117
- //0.2 AXL base fee, 400000 bridge execute, 5 gwei gas price, 5e15 eth max fee, min balance 1e16, percentage 5%
118
- ethers.utils.defaultAbiCoder.encode(
119
- ["uint128", "uint128", "uint128", "uint128", "uint128", "uint8"],
120
- [
121
- "200000000000000000",
122
- "400000",
123
- "5000000000",
124
- "5000000000000000",
125
- "10000000000000000",
126
- "5"
127
- ]
128
- ),
129
- ethers.utils.defaultAbiCoder.encode(
130
- ["address", "uint256"],
131
- [NEWBRIDGE, GUARDIANS_BALANCE] // transfer G$ to bridge
132
- )
133
- ];
134
-
135
- if (isProduction) {
136
- await executeViaSafe(
137
- proposalContracts,
138
- proposalEthValues,
139
- proposalFunctionSignatures,
140
- proposalFunctionInputs,
141
- protocolSettings.guardiansSafe,
142
- "mainnet"
143
- );
144
- } else {
145
- //simulation or dev envs
146
- await executeViaGuardian(
147
- proposalContracts,
148
- proposalEthValues,
149
- proposalFunctionSignatures,
150
- proposalFunctionInputs,
151
- guardian,
152
- networkName
153
- );
154
- }
155
-
156
- //perform sanity checks on fork, for production we need to wait until everything executed
157
- if (!isProduction) {
158
- let fm = await ethers.getContractAt(
159
- "GoodFundManager",
160
- release.GoodFundManager
161
- );
162
- let dh = await ethers.getContractAt(
163
- "DistributionHelper",
164
- release.DistributionHelper
165
- );
166
-
167
- console.log(
168
- "gd balances: guardians:",
169
- await gd.balanceOf(guardian.address),
170
- " bridge:",
171
- await gd.balanceOf(NEWBRIDGE)
172
- );
173
- }
174
- };
175
-
176
- export const main = async () => {
177
- await upgrade();
178
- };
179
-
180
- main().catch(console.log);