@gooddollar/goodprotocol 2.0.25-beta.7 → 2.0.25-beta.9

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 (189) hide show
  1. package/artifacts/abis/BulkWhitelist.min.json +1 -0
  2. package/artifacts/abis/LastauthReduction.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/Interfaces.sol/AggregatorV3Interface.dbg.json +1 -1
  10. package/artifacts/contracts/Interfaces.sol/ERC20.dbg.json +1 -1
  11. package/artifacts/contracts/Interfaces.sol/IAaveIncentivesController.dbg.json +1 -1
  12. package/artifacts/contracts/Interfaces.sol/IAdminWallet.dbg.json +1 -1
  13. package/artifacts/contracts/Interfaces.sol/IDonationStaking.dbg.json +1 -1
  14. package/artifacts/contracts/Interfaces.sol/IERC2917.dbg.json +1 -1
  15. package/artifacts/contracts/Interfaces.sol/IFirstClaimPool.dbg.json +1 -1
  16. package/artifacts/contracts/Interfaces.sol/IGoodDollar.dbg.json +1 -1
  17. package/artifacts/contracts/Interfaces.sol/IGoodStaking.dbg.json +1 -1
  18. package/artifacts/contracts/Interfaces.sol/IHasRouter.dbg.json +1 -1
  19. package/artifacts/contracts/Interfaces.sol/IIdentity.dbg.json +1 -1
  20. package/artifacts/contracts/Interfaces.sol/IIdentityV2.dbg.json +1 -1
  21. package/artifacts/contracts/Interfaces.sol/ILendingPool.dbg.json +1 -1
  22. package/artifacts/contracts/Interfaces.sol/IMultichainRouter.dbg.json +1 -1
  23. package/artifacts/contracts/Interfaces.sol/INameService.dbg.json +1 -1
  24. package/artifacts/contracts/Interfaces.sol/IUBIScheme.dbg.json +1 -1
  25. package/artifacts/contracts/Interfaces.sol/ProxyAdmin.dbg.json +1 -1
  26. package/artifacts/contracts/Interfaces.sol/Reserve.dbg.json +1 -1
  27. package/artifacts/contracts/Interfaces.sol/Staking.dbg.json +1 -1
  28. package/artifacts/contracts/Interfaces.sol/Uniswap.dbg.json +1 -1
  29. package/artifacts/contracts/Interfaces.sol/UniswapFactory.dbg.json +1 -1
  30. package/artifacts/contracts/Interfaces.sol/UniswapPair.dbg.json +1 -1
  31. package/artifacts/contracts/Interfaces.sol/cERC20.dbg.json +1 -1
  32. package/artifacts/contracts/fuseFaucet/Faucet.sol/Faucet.dbg.json +1 -1
  33. package/artifacts/contracts/fuseFaucet/FuseFaucet.sol/FuseFaucet.dbg.json +1 -1
  34. package/artifacts/contracts/fuseFaucet/FuseFaucetV2.sol/FuseFaucetV2.dbg.json +1 -1
  35. package/artifacts/contracts/governance/ClaimersDistribution.sol/ClaimersDistribution.dbg.json +1 -1
  36. package/artifacts/contracts/governance/CompoundVotingMachine.sol/CompoundVotingMachine.dbg.json +1 -1
  37. package/artifacts/contracts/governance/GReputation.sol/GReputation.dbg.json +1 -1
  38. package/artifacts/contracts/governance/GoodDollarStaking.sol/GoodDollarStaking.dbg.json +1 -1
  39. package/artifacts/contracts/governance/GoodDollarStaking.sol/IGovernanceStaking.dbg.json +1 -1
  40. package/artifacts/contracts/governance/GoodDollarStaking.sol/IStakingUpgrade.dbg.json +1 -1
  41. package/artifacts/contracts/governance/GoodDollarStaking.sol/RewardsMinter.dbg.json +1 -1
  42. package/artifacts/contracts/governance/GovernanceStaking.sol/GovernanceStaking.dbg.json +1 -1
  43. package/artifacts/contracts/governance/MultiBaseGovernanceShareField.sol/MultiBaseGovernanceShareField.dbg.json +1 -1
  44. package/artifacts/contracts/governance/Reputation.sol/Reputation.dbg.json +1 -1
  45. package/artifacts/contracts/governance/StakersDistribution.sol/StakersDistribution.dbg.json +1 -1
  46. package/artifacts/contracts/identity/IdentityV2.sol/IdentityV2.dbg.json +1 -1
  47. package/artifacts/contracts/invite/InvitesFuseV2.sol/InvitesFuseV2.dbg.json +1 -1
  48. package/artifacts/contracts/invite/InvitesV1.sol/InvitesV1.dbg.json +1 -1
  49. package/artifacts/contracts/invite/InvitesV2.sol/InvitesV2.dbg.json +1 -1
  50. package/artifacts/contracts/invite/OneTimeReward.sol/OneTimeReward.dbg.json +1 -1
  51. package/artifacts/contracts/mocks/AaveMock.sol/AaveMock.dbg.json +1 -1
  52. package/artifacts/contracts/mocks/AaveUSDMockOracle.sol/AaveUSDMockOracle.dbg.json +1 -1
  53. package/artifacts/contracts/mocks/BatUSDMockOracle.sol/BatUSDMockOracle.dbg.json +1 -1
  54. package/artifacts/contracts/mocks/CompUsdMockOracle.sol/CompUSDMockOracle.dbg.json +1 -1
  55. package/artifacts/contracts/mocks/DAIMock.sol/DAIMock.dbg.json +1 -1
  56. package/artifacts/contracts/mocks/DaiEthPriceMockOracle.sol/DaiEthPriceMockOracle.dbg.json +1 -1
  57. package/artifacts/contracts/mocks/DecimalsMock.sol/DecimalsMock.dbg.json +1 -1
  58. package/artifacts/contracts/mocks/DistributionBridgeMock.sol/DistributionBridgeMock.dbg.json +1 -1
  59. package/artifacts/contracts/mocks/DistributionHelperTest.sol/DistributionHelperTest.dbg.json +1 -1
  60. package/artifacts/contracts/mocks/DistributionHelperTest.sol/DistributionHelperTestHelper.dbg.json +1 -1
  61. package/artifacts/contracts/mocks/EthUSDMockOracle.sol/EthUSDMockOracle.dbg.json +1 -1
  62. package/artifacts/contracts/mocks/FeesFormularMock.sol/FeesFormulaMock.dbg.json +1 -1
  63. package/artifacts/contracts/mocks/GasPriceMockOracle.sol/GasPriceMockOracle.dbg.json +1 -1
  64. package/artifacts/contracts/mocks/GoodCompoundStakingTest.sol/GoodCompoundStakingTest.dbg.json +1 -1
  65. package/artifacts/contracts/mocks/GoodDollarStakingMock.sol/GoodDollarStakingMock.dbg.json +1 -1
  66. package/artifacts/contracts/mocks/GoodFundManagerTest.sol/GoodFundManagerTest.dbg.json +1 -1
  67. package/artifacts/contracts/mocks/IdentityMock.sol/IdentityMock.dbg.json +1 -1
  68. package/artifacts/contracts/mocks/IncentiveControllerMock.sol/IncentiveControllerMock.dbg.json +1 -1
  69. package/artifacts/contracts/mocks/LendingPoolMock.sol/LendingPoolMock.dbg.json +1 -1
  70. package/artifacts/contracts/mocks/MultichainRouterMock.sol/IWrapper.dbg.json +1 -1
  71. package/artifacts/contracts/mocks/MultichainRouterMock.sol/MultichainRouterMock.dbg.json +1 -1
  72. package/artifacts/contracts/mocks/OverMintTester.sol/IGoodDollarStakingTest.dbg.json +1 -1
  73. package/artifacts/contracts/mocks/OverMintTester.sol/OverMintTester.dbg.json +1 -1
  74. package/artifacts/contracts/mocks/OverMintTesterRegularStake.sol/OverMintTesterRegularStake.dbg.json +1 -1
  75. package/artifacts/contracts/mocks/PayableMock.sol/PayableMock.dbg.json +1 -1
  76. package/artifacts/contracts/mocks/SixteenDecimalsTokenMock.sol/SixteenDecimalsTokenMock.dbg.json +1 -1
  77. package/artifacts/contracts/mocks/StakingMockFixedAPY.sol/StakingMockFixedAPY.dbg.json +1 -1
  78. package/artifacts/contracts/mocks/SwapHelperTest.sol/SwapHelperTest.dbg.json +1 -1
  79. package/artifacts/contracts/mocks/TwentyDecimalsTokenMock.sol/TwentyDecimalsTokenMock.dbg.json +1 -1
  80. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock.dbg.json +1 -1
  81. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock2.dbg.json +1 -1
  82. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock3.dbg.json +1 -1
  83. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock4.dbg.json +1 -1
  84. package/artifacts/contracts/mocks/UsdcMock.sol/USDCMock.dbg.json +1 -1
  85. package/artifacts/contracts/mocks/cBATMock.sol/cBATMock.dbg.json +1 -1
  86. package/artifacts/contracts/mocks/cDAILowWorthMock.sol/cDAILowWorthMock.dbg.json +1 -1
  87. package/artifacts/contracts/mocks/cDAIMock.sol/cDAIMock.dbg.json +1 -1
  88. package/artifacts/contracts/mocks/cDAINonMintableMock.sol/cDAINonMintableMock.dbg.json +1 -1
  89. package/artifacts/contracts/mocks/cDecimalsMock.sol/cDecimalsMock.dbg.json +1 -1
  90. package/artifacts/contracts/mocks/cSDTMock.sol/cSDTMock.dbg.json +1 -1
  91. package/artifacts/contracts/mocks/cUSDCMock.sol/cUSDCMock.dbg.json +1 -1
  92. package/artifacts/contracts/reserve/DistributionHelper.sol/DistributionHelper.dbg.json +1 -1
  93. package/artifacts/contracts/reserve/ExchangeHelper.sol/ExchangeHelper.dbg.json +1 -1
  94. package/artifacts/contracts/reserve/GoodMarketMaker.sol/GoodMarketMaker.dbg.json +1 -1
  95. package/artifacts/contracts/reserve/GoodReserveCDai.sol/ContributionCalc.dbg.json +1 -1
  96. package/artifacts/contracts/reserve/GoodReserveCDai.sol/GoodReserveCDai.dbg.json +1 -1
  97. package/artifacts/contracts/staking/BaseShareField.sol/BaseShareField.dbg.json +1 -1
  98. package/artifacts/contracts/staking/BaseShareFieldV2.sol/BaseShareFieldV2.dbg.json +1 -1
  99. package/artifacts/contracts/staking/DonationsStaking.sol/DonationsStaking.dbg.json +1 -1
  100. package/artifacts/contracts/staking/FuseStakingV3.sol/FuseStakingV3.dbg.json +1 -1
  101. package/artifacts/contracts/staking/FuseStakingV3.sol/IConsensus.dbg.json +1 -1
  102. package/artifacts/contracts/staking/FuseStakingV3.sol/PegSwap.dbg.json +1 -1
  103. package/artifacts/contracts/staking/GoodFundManager.sol/GoodFundManager.dbg.json +1 -1
  104. package/artifacts/contracts/staking/SimpleStaking.sol/SimpleStaking.dbg.json +1 -1
  105. package/artifacts/contracts/staking/SimpleStakingV2.sol/SimpleStakingV2.dbg.json +1 -1
  106. package/artifacts/contracts/staking/UniswapV2SwapHelper.sol/UniswapV2SwapHelper.dbg.json +1 -1
  107. package/artifacts/contracts/staking/aave/AaveStakingFactory.sol/AaveStakingFactory.dbg.json +1 -1
  108. package/artifacts/contracts/staking/aave/GoodAaveStaking.sol/GoodAaveStaking.dbg.json +1 -1
  109. package/artifacts/contracts/staking/aave/GoodAaveStakingV2.sol/GoodAaveStakingV2.dbg.json +1 -1
  110. package/artifacts/contracts/staking/compound/CompoundStakingFactory.sol/CompoundStakingFactory.dbg.json +1 -1
  111. package/artifacts/contracts/staking/compound/GoodCompoundStaking.sol/GoodCompoundStaking.dbg.json +1 -1
  112. package/artifacts/contracts/staking/compound/GoodCompoundStakingV2.sol/GoodCompoundStakingV2.dbg.json +1 -1
  113. package/artifacts/contracts/staking/utils/Math64X64.sol/Math64x64.dbg.json +1 -1
  114. package/artifacts/contracts/staking/utils/StakingRewardsFixedAPY.sol/StakingRewardsFixedAPY.dbg.json +1 -1
  115. package/artifacts/contracts/token/ERC20PresetMinterPauserUpgradeable.sol/ERC20PresetMinterPauserUpgradeable.dbg.json +1 -1
  116. package/artifacts/contracts/token/ERC677.sol/ERC677.dbg.json +1 -1
  117. package/artifacts/contracts/token/ERC677.sol/ERC677Receiver.dbg.json +1 -1
  118. package/artifacts/contracts/token/GoodDollar.sol/GoodDollar.dbg.json +1 -1
  119. package/artifacts/contracts/token/IFeesFormula.sol/IFeesFormula.dbg.json +1 -1
  120. package/artifacts/contracts/token/MultichainFeeFormula.sol/MultichainFeeFormula.dbg.json +1 -1
  121. package/artifacts/contracts/token/superfluid/ERC20Permit.sol/ERC20Permit.dbg.json +1 -1
  122. package/artifacts/contracts/token/superfluid/ERC20Permit.sol/SelfApprove.dbg.json +1 -1
  123. package/artifacts/contracts/token/superfluid/ISuperGoodDollar.sol/IGoodDollarCustom.dbg.json +1 -1
  124. package/artifacts/contracts/token/superfluid/ISuperGoodDollar.sol/ISuperGoodDollar.dbg.json +1 -1
  125. package/artifacts/contracts/token/superfluid/ISuperToken.sol/ISuperToken.dbg.json +1 -1
  126. package/artifacts/contracts/token/superfluid/SuperGoodDollar.sol/SuperGoodDollar.dbg.json +1 -1
  127. package/artifacts/contracts/token/superfluid/SuperToken.sol/SuperToken.dbg.json +1 -1
  128. package/artifacts/contracts/token/superfluid/SuperfluidToken.sol/SuperfluidToken.dbg.json +1 -1
  129. package/artifacts/contracts/token/superfluid/UUPSProxiable.sol/UUPSProxiable.dbg.json +1 -1
  130. package/artifacts/contracts/token/superfluid/UUPSProxy.sol/Proxy.dbg.json +1 -1
  131. package/artifacts/contracts/token/superfluid/UUPSProxy.sol/UUPSProxy.dbg.json +1 -1
  132. package/artifacts/contracts/token/superfluid/UUPSProxy.sol/UUPSUtils.dbg.json +1 -1
  133. package/artifacts/contracts/ubi/UBIScheme.sol/UBIScheme.dbg.json +1 -1
  134. package/artifacts/contracts/ubi/UBISchemeV2.sol/UBISchemeV2.dbg.json +1 -1
  135. package/artifacts/contracts/utils/AdminWallet.sol/AdminWallet.dbg.json +1 -1
  136. package/artifacts/contracts/utils/AdminWalletFuse.sol/AdminWalletFuse.dbg.json +1 -1
  137. package/artifacts/contracts/utils/BancorFormula.sol/BancorFormula.dbg.json +1 -1
  138. package/artifacts/contracts/utils/BulkProof.sol/BulkProof.dbg.json +1 -1
  139. package/artifacts/contracts/utils/BulkWhitelist.sol/BulkWhitelist.dbg.json +4 -0
  140. package/artifacts/contracts/utils/BulkWhitelist.sol/BulkWhitelist.json +67 -0
  141. package/artifacts/contracts/utils/BuyAndBridgeHelper.sol/BuyAndBridgeHelper.dbg.json +1 -1
  142. package/artifacts/contracts/utils/BuyGDClone.sol/BuyGDClone.dbg.json +1 -1
  143. package/artifacts/contracts/utils/BuyGDClone.sol/BuyGDCloneFactory.dbg.json +1 -1
  144. package/artifacts/contracts/utils/BuyGDClone.sol/DonateGDClone.dbg.json +1 -1
  145. package/artifacts/contracts/utils/BuyGDClone.sol/IQuoterV2.dbg.json +1 -1
  146. package/artifacts/contracts/utils/BuyGDClone.sol/ISwapRouter.dbg.json +1 -1
  147. package/artifacts/contracts/utils/DAOContract.sol/DAOContract.dbg.json +1 -1
  148. package/artifacts/contracts/utils/DAOUpgradeableContract.sol/DAOUpgradeableContract.dbg.json +1 -1
  149. package/artifacts/contracts/utils/DSMath.sol/DSMath.dbg.json +1 -1
  150. package/artifacts/contracts/utils/DataTypes.sol/DataTypes.dbg.json +1 -1
  151. package/artifacts/contracts/utils/GDFaucet.sol/GDFaucet.dbg.json +1 -1
  152. package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/GoodDollarMintBurnWrapper.dbg.json +1 -1
  153. package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/IRouter.dbg.json +1 -1
  154. package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/PausableControl.dbg.json +1 -1
  155. package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/TokenOperation.dbg.json +1 -1
  156. package/artifacts/contracts/utils/IdentityFix.sol/IdentityFix.dbg.json +1 -1
  157. package/artifacts/contracts/utils/LastauthReduction.sol/LastauthReduction.dbg.json +4 -0
  158. package/artifacts/contracts/utils/LastauthReduction.sol/LastauthReduction.json +81 -0
  159. package/artifacts/contracts/utils/MultiCall.sol/Multicall.dbg.json +1 -1
  160. package/artifacts/contracts/utils/MultichainBridgeHelper.sol/MultichainBridgeHelper.dbg.json +1 -1
  161. package/artifacts/contracts/utils/NameService.sol/NameService.dbg.json +1 -1
  162. package/artifacts/contracts/utils/OneTimePayments.sol/OneTimePayments.dbg.json +1 -1
  163. package/artifacts/contracts/utils/OneTimePaymentsV2.sol/OneTimePaymentsV2.dbg.json +1 -1
  164. package/artifacts/contracts/utils/ProtocolUpgrade.sol/OldMarketMaker.dbg.json +1 -1
  165. package/artifacts/contracts/utils/ProtocolUpgrade.sol/ProtocolUpgrade.dbg.json +1 -1
  166. package/artifacts/contracts/utils/ProtocolUpgradeFuse.sol/ProtocolUpgradeFuse.dbg.json +1 -1
  167. package/artifacts/contracts/utils/ProtocolUpgradeFuseRecover.sol/ProtocolUpgradeFuseRecover.dbg.json +1 -1
  168. package/artifacts/contracts/utils/ProtocolUpgradeRecover.sol/ProtocolUpgradeRecover.dbg.json +1 -1
  169. package/artifacts/contracts/utils/ProxyFactory1967.sol/ERC1967Proxy.dbg.json +1 -1
  170. package/artifacts/contracts/utils/ProxyFactory1967.sol/ProxyFactory1967.dbg.json +1 -1
  171. package/artifacts/contracts/utils/ReputationTestHelper.sol/ReputationTestHelper.dbg.json +1 -1
  172. package/contracts/utils/BulkWhitelist.sol +51 -0
  173. package/contracts/utils/LastauthReduction.sol +92 -0
  174. package/package.json +15 -17
  175. package/releases/deployment.json +611 -599
  176. package/scripts/analytics/activeStakers.ts +25 -0
  177. package/scripts/analytics/activeUsersCount.ts +80 -26
  178. package/scripts/analytics/activeWalletsStats.ts +138 -18
  179. package/scripts/fv.ts +135 -16
  180. package/scripts/proposals/identityAuthPeriod.ts +229 -0
  181. package/scripts/utils.ts +25 -1
  182. package/types/contracts/utils/BulkWhitelist.ts +153 -0
  183. package/types/contracts/utils/LastauthReduction.ts +168 -0
  184. package/types/contracts/utils/index.ts +2 -0
  185. package/types/factories/contracts/utils/BulkWhitelist__factory.ts +123 -0
  186. package/types/factories/contracts/utils/LastauthReduction__factory.ts +134 -0
  187. package/types/factories/contracts/utils/index.ts +2 -0
  188. package/types/hardhat.d.ts +18 -0
  189. package/types/index.ts +4 -0
@@ -0,0 +1,229 @@
1
+ /***
2
+ * Bring UBI distribution to a temporary working state
3
+ * Celo:
4
+ * - upgrade bridge to be able to prevent UBI bridge transfers as result of the hack
5
+ * - mark unexecuted bridge transfers as executed
6
+ * - set UBI with new cycle params
7
+ * - unpause ubi contract
8
+ * Fuse:
9
+ * - withdraw ubi to avatar and bridge ubi to contract on celo
10
+ * - burn excess UBI tokens
11
+ * - set UBI with new cycle params
12
+ * - unpause ubi contract
13
+ * Mainnet:
14
+ * - withdraw excess UBI from bridge to avatar
15
+ * - burn excess UBI from bridge
16
+ *
17
+ */
18
+
19
+ import { network, ethers } from "hardhat";
20
+ import { defaultsDeep, last } from "lodash";
21
+ import prompt from "prompt";
22
+
23
+ import { executeViaGuardian, executeViaSafe, verifyProductionSigner } from "../multichain-deploy/helpers";
24
+
25
+ import ProtocolSettings from "../../releases/deploy-settings.json";
26
+
27
+ import dao from "../../releases/deployment.json";
28
+ let { name: networkName } = network;
29
+
30
+ export const upgradeCelo = async () => {
31
+ const isProduction = networkName.includes("production");
32
+ let [root, ...signers] = await ethers.getSigners();
33
+
34
+ if (isProduction) verifyProductionSigner(root);
35
+
36
+ let guardian = root;
37
+
38
+ //simulate produciton on fork
39
+ if (network.name === "hardhat" || network.name === "fork" || network.name === "localhost") {
40
+ networkName = "production-celo";
41
+ }
42
+
43
+ let release: { [key: string]: any } = dao[networkName];
44
+ let protocolSettings = defaultsDeep({}, ProtocolSettings[networkName], ProtocolSettings["default"]);
45
+
46
+ //simulate on fork, make sure safe has enough eth to simulate txs
47
+ if (network.name === "hardhat" || network.name === "fork" || network.name === "localhost") {
48
+ guardian = await ethers.getImpersonatedSigner(protocolSettings.guardiansSafe);
49
+
50
+ await root.sendTransaction({
51
+ value: ethers.constants.WeiPerEther.mul(3),
52
+ to: protocolSettings.guardiansSafe
53
+ });
54
+ }
55
+
56
+ const rootBalance = await ethers.provider.getBalance(root.address).then(_ => _.toString());
57
+ const guardianBalance = await ethers.provider.getBalance(guardian.address).then(_ => _.toString());
58
+
59
+
60
+ console.log("got signers:", {
61
+ networkName,
62
+ root: root.address,
63
+ guardian: guardian.address,
64
+ balance: rootBalance,
65
+ guardianBalance: guardianBalance
66
+ });
67
+
68
+ const reducerContract = await ethers.deployContract("LastauthReduction", [release.NameService])
69
+ console.log("executing proposals");
70
+
71
+ const proposalContracts = [
72
+ release.Controller,
73
+ ];
74
+
75
+ const proposalEthValues = proposalContracts.map(_ => 0);
76
+
77
+ const proposalFunctionSignatures = [
78
+ "registerScheme(address,bytes32,bytes4,address)", //make sure mpb is a registered scheme so it can mint G$ tokens
79
+ ];
80
+
81
+ const proposalFunctionInputs = [
82
+ ethers.utils.defaultAbiCoder.encode(["address", "bytes32", "bytes4", "address"], [reducerContract.address, ethers.constants.HashZero, "0x0000001f", release.Avatar]),
83
+ ];
84
+
85
+ if (isProduction) {
86
+ await executeViaSafe(
87
+ proposalContracts,
88
+ proposalEthValues,
89
+ proposalFunctionSignatures,
90
+ proposalFunctionInputs,
91
+ protocolSettings.guardiansSafe,
92
+ "celo"
93
+ );
94
+ } else {
95
+ //simulation or dev envs
96
+ await executeViaGuardian(
97
+ proposalContracts,
98
+ proposalEthValues,
99
+ proposalFunctionSignatures,
100
+ proposalFunctionInputs,
101
+ guardian,
102
+ networkName
103
+ );
104
+ }
105
+
106
+ //perform sanity checks on fork, for production we need to wait until everything executed
107
+ if (!isProduction) {
108
+ try {
109
+ while (true) {
110
+ await reducerContract.reduce()
111
+ let id = await ethers.getContractAt("IdentityV2", release.Identity);
112
+ console.log("authperiod", await id.authenticationPeriod());
113
+ }
114
+ } catch (error) {
115
+ console.log("reduce reverted:", error)
116
+ }
117
+
118
+ }
119
+ };
120
+
121
+ export const upgradeFuse = async () => {
122
+ const isProduction = networkName.includes("production");
123
+
124
+ let [root] = await ethers.getSigners();
125
+
126
+ //simulate produciton on fork
127
+ if (network.name === "hardhat" || network.name === "fork" || network.name === "localhost") {
128
+ networkName = "production";
129
+ }
130
+
131
+ let networkEnv = networkName.split("-")[0];
132
+
133
+
134
+ if (networkEnv === "fuse") networkEnv = "development";
135
+
136
+ let release: { [key: string]: any } = dao[networkEnv];
137
+
138
+ let guardian = root;
139
+ console.log({ networkEnv })
140
+ //simulate on fork, make sure safe has enough eth to simulate txs
141
+ if (network.name === "hardhat" || network.name === "localhost" || network.name === "fork") {
142
+ guardian = await ethers.getImpersonatedSigner(release.GuardiansSafe);
143
+
144
+ await root.sendTransaction({
145
+ value: ethers.constants.WeiPerEther.mul(3),
146
+ to: guardian.address
147
+ });
148
+ }
149
+
150
+
151
+ console.log({
152
+ networkEnv,
153
+ guardian: guardian.address,
154
+ isProduction,
155
+ avatarBalance: await ethers.provider.getBalance(root.address).then(_ => _.toString())
156
+ });
157
+
158
+ const reducerContract = await ethers.deployContract("LastauthReduction", [release.NameService])
159
+
160
+ const proposalContracts = [
161
+ release.Controller,
162
+ ];
163
+
164
+ const proposalEthValues = proposalContracts.map(_ => 0);
165
+
166
+ const proposalFunctionSignatures = [
167
+ "registerScheme(address,bytes32,bytes4,address)", //make sure mpb is a registered scheme so it can mint G$ tokens
168
+ ];
169
+
170
+ const proposalFunctionInputs = [
171
+ ethers.utils.defaultAbiCoder.encode(["address", "bytes32", "bytes4", "address"], [reducerContract.address, ethers.constants.HashZero, "0x0000001f", release.Avatar]),
172
+ ];
173
+
174
+ if (isProduction) {
175
+ await executeViaSafe(
176
+ proposalContracts,
177
+ proposalEthValues,
178
+ proposalFunctionSignatures,
179
+ proposalFunctionInputs,
180
+ release.GuardiansSafe,
181
+ "fuse"
182
+ );
183
+ } else {
184
+ //simulation or dev envs
185
+ await executeViaGuardian(
186
+ proposalContracts,
187
+ proposalEthValues,
188
+ proposalFunctionSignatures,
189
+ proposalFunctionInputs,
190
+ guardian,
191
+ networkName
192
+ );
193
+ }
194
+
195
+ //perform sanity checks on fork, for production we need to wait until everything executed
196
+ if (!isProduction) {
197
+ try {
198
+ while (true) {
199
+ await reducerContract.reduce()
200
+ let id = await ethers.getContractAt("IdentityV2", release.Identity);
201
+ let idOld = await ethers.getContractAt("IdentityV2", release.IdentityOld);
202
+
203
+ console.log("authperiod", await id.authenticationPeriod(), await idOld.authenticationPeriod());
204
+ }
205
+ } catch (error) {
206
+ console.log("reduce reverted:", error)
207
+ }
208
+ }
209
+
210
+
211
+ };
212
+
213
+
214
+ export const main = async () => {
215
+ prompt.start();
216
+ const { network } = await prompt.get(["network"]);
217
+
218
+ console.log("running step:", { network });
219
+ switch (network) {
220
+ case "celo":
221
+ await upgradeCelo();
222
+ break;
223
+ case "fuse":
224
+ await upgradeFuse();
225
+ break;
226
+ }
227
+ };
228
+
229
+ main().catch(console.log);
package/scripts/utils.ts CHANGED
@@ -13,6 +13,17 @@ export const bulkIsWhitelisted = async (accounts: Array<String>) => {
13
13
  const whitelisted = accounts.filter((v, i) => result[i]);
14
14
  return whitelisted;
15
15
  };
16
+ export const bulkIsWhitelistedFuse = async (accounts: Array<String>) => {
17
+ setMulticallAddress(122, "0x3CE6158b7278Bf6792e014FA7B4f3c6c46fe9410");
18
+ setMulticallAddress(42220, "0x75F59534dd892c1f8a7B172D639FA854D529ada3");
19
+ const provider = new ethers.providers.JsonRpcProvider("https://rpc.fuse.io");
20
+ const ethcallProvider = new Provider(provider, 122);
21
+ const identityContract = new Contract("0x2F9C28de9e6d44b71B91b8BA337A5D82e308E7BE", Identity.abi);
22
+ const calls = accounts.map(d => identityContract.isWhitelisted(d));
23
+ const result = await ethcallProvider.all(calls);
24
+ const whitelisted = accounts.filter((v, i) => result[i]);
25
+ return whitelisted;
26
+ };
16
27
 
17
28
  export const bulkLastAuth = async (accounts: Array<String>) => {
18
29
  setMulticallAddress(122, "0x3CE6158b7278Bf6792e014FA7B4f3c6c46fe9410");
@@ -22,5 +33,18 @@ export const bulkLastAuth = async (accounts: Array<String>) => {
22
33
  const identityContract = new Contract("0x2F9C28de9e6d44b71B91b8BA337A5D82e308E7BE", Identity.abi);
23
34
  const calls = accounts.map(d => identityContract.lastAuthenticated(d));
24
35
  const result = await ethcallProvider.all(calls);
25
- return Object.fromEntries(accounts.map((v, i) => [v, parseInt(result[i])]));
36
+ // console.log({ result });
37
+ const whitelisted = accounts.filter((v, i) => parseInt(result[i]));
38
+ return whitelisted;
39
+ };
40
+
41
+ export const bulkGetLastAuth = async (accounts: Array<String>) => {
42
+ setMulticallAddress(122, "0x3CE6158b7278Bf6792e014FA7B4f3c6c46fe9410");
43
+ setMulticallAddress(42220, "0x75F59534dd892c1f8a7B172D639FA854D529ada3");
44
+ const celoProvider = new ethers.providers.JsonRpcProvider("https://forno.celo.org");
45
+ const ethcallProvider = new Provider(celoProvider, 42220);
46
+ const identityContract = new Contract("0xC361A6E67822a0EDc17D899227dd9FC50BD62F42", Identity.abi);
47
+ const calls = accounts.map(d => identityContract.lastAuthenticated(d));
48
+ const result = await ethcallProvider.all(calls);
49
+ return result;
26
50
  };
@@ -0,0 +1,153 @@
1
+ /* Autogenerated file. Do not edit manually. */
2
+ /* tslint:disable */
3
+ /* eslint-disable */
4
+ import type {
5
+ BaseContract,
6
+ BigNumber,
7
+ BigNumberish,
8
+ BytesLike,
9
+ CallOverrides,
10
+ ContractTransaction,
11
+ Overrides,
12
+ PopulatedTransaction,
13
+ Signer,
14
+ utils,
15
+ } from "ethers";
16
+ import type { FunctionFragment, Result } from "@ethersproject/abi";
17
+ import type { Listener, Provider } from "@ethersproject/providers";
18
+ import type {
19
+ TypedEventFilter,
20
+ TypedEvent,
21
+ TypedListener,
22
+ OnEvent,
23
+ } from "../../common";
24
+
25
+ export interface BulkWhitelistInterface extends utils.Interface {
26
+ functions: {
27
+ "removeWhitelisted(address[])": FunctionFragment;
28
+ "whitelist(address[],string[],uint256[],uint256[])": FunctionFragment;
29
+ };
30
+
31
+ getFunction(
32
+ nameOrSignatureOrTopic: "removeWhitelisted" | "whitelist"
33
+ ): FunctionFragment;
34
+
35
+ encodeFunctionData(
36
+ functionFragment: "removeWhitelisted",
37
+ values: [string[]]
38
+ ): string;
39
+ encodeFunctionData(
40
+ functionFragment: "whitelist",
41
+ values: [string[], string[], BigNumberish[], BigNumberish[]]
42
+ ): string;
43
+
44
+ decodeFunctionResult(
45
+ functionFragment: "removeWhitelisted",
46
+ data: BytesLike
47
+ ): Result;
48
+ decodeFunctionResult(functionFragment: "whitelist", data: BytesLike): Result;
49
+
50
+ events: {};
51
+ }
52
+
53
+ export interface BulkWhitelist extends BaseContract {
54
+ connect(signerOrProvider: Signer | Provider | string): this;
55
+ attach(addressOrName: string): this;
56
+ deployed(): Promise<this>;
57
+
58
+ interface: BulkWhitelistInterface;
59
+
60
+ queryFilter<TEvent extends TypedEvent>(
61
+ event: TypedEventFilter<TEvent>,
62
+ fromBlockOrBlockhash?: string | number | undefined,
63
+ toBlock?: string | number | undefined
64
+ ): Promise<Array<TEvent>>;
65
+
66
+ listeners<TEvent extends TypedEvent>(
67
+ eventFilter?: TypedEventFilter<TEvent>
68
+ ): Array<TypedListener<TEvent>>;
69
+ listeners(eventName?: string): Array<Listener>;
70
+ removeAllListeners<TEvent extends TypedEvent>(
71
+ eventFilter: TypedEventFilter<TEvent>
72
+ ): this;
73
+ removeAllListeners(eventName?: string): this;
74
+ off: OnEvent<this>;
75
+ on: OnEvent<this>;
76
+ once: OnEvent<this>;
77
+ removeListener: OnEvent<this>;
78
+
79
+ functions: {
80
+ removeWhitelisted(
81
+ _user: string[],
82
+ overrides?: Overrides & { from?: string }
83
+ ): Promise<ContractTransaction>;
84
+
85
+ whitelist(
86
+ _user: string[],
87
+ _did: string[],
88
+ orgChain: BigNumberish[],
89
+ dateAuthenticated: BigNumberish[],
90
+ overrides?: Overrides & { from?: string }
91
+ ): Promise<ContractTransaction>;
92
+ };
93
+
94
+ removeWhitelisted(
95
+ _user: string[],
96
+ overrides?: Overrides & { from?: string }
97
+ ): Promise<ContractTransaction>;
98
+
99
+ whitelist(
100
+ _user: string[],
101
+ _did: string[],
102
+ orgChain: BigNumberish[],
103
+ dateAuthenticated: BigNumberish[],
104
+ overrides?: Overrides & { from?: string }
105
+ ): Promise<ContractTransaction>;
106
+
107
+ callStatic: {
108
+ removeWhitelisted(
109
+ _user: string[],
110
+ overrides?: CallOverrides
111
+ ): Promise<void>;
112
+
113
+ whitelist(
114
+ _user: string[],
115
+ _did: string[],
116
+ orgChain: BigNumberish[],
117
+ dateAuthenticated: BigNumberish[],
118
+ overrides?: CallOverrides
119
+ ): Promise<void>;
120
+ };
121
+
122
+ filters: {};
123
+
124
+ estimateGas: {
125
+ removeWhitelisted(
126
+ _user: string[],
127
+ overrides?: Overrides & { from?: string }
128
+ ): Promise<BigNumber>;
129
+
130
+ whitelist(
131
+ _user: string[],
132
+ _did: string[],
133
+ orgChain: BigNumberish[],
134
+ dateAuthenticated: BigNumberish[],
135
+ overrides?: Overrides & { from?: string }
136
+ ): Promise<BigNumber>;
137
+ };
138
+
139
+ populateTransaction: {
140
+ removeWhitelisted(
141
+ _user: string[],
142
+ overrides?: Overrides & { from?: string }
143
+ ): Promise<PopulatedTransaction>;
144
+
145
+ whitelist(
146
+ _user: string[],
147
+ _did: string[],
148
+ orgChain: BigNumberish[],
149
+ dateAuthenticated: BigNumberish[],
150
+ overrides?: Overrides & { from?: string }
151
+ ): Promise<PopulatedTransaction>;
152
+ };
153
+ }
@@ -0,0 +1,168 @@
1
+ /* Autogenerated file. Do not edit manually. */
2
+ /* tslint:disable */
3
+ /* eslint-disable */
4
+ import type {
5
+ BaseContract,
6
+ BigNumber,
7
+ BytesLike,
8
+ CallOverrides,
9
+ ContractTransaction,
10
+ Overrides,
11
+ PopulatedTransaction,
12
+ Signer,
13
+ utils,
14
+ } from "ethers";
15
+ import type { FunctionFragment, Result } from "@ethersproject/abi";
16
+ import type { Listener, Provider } from "@ethersproject/providers";
17
+ import type {
18
+ TypedEventFilter,
19
+ TypedEvent,
20
+ TypedListener,
21
+ OnEvent,
22
+ } from "../../common";
23
+
24
+ export interface LastauthReductionInterface extends utils.Interface {
25
+ functions: {
26
+ "finalPeriod()": FunctionFragment;
27
+ "manager()": FunctionFragment;
28
+ "reduce()": FunctionFragment;
29
+ "reduceByDays()": FunctionFragment;
30
+ "startingPeriodDays()": FunctionFragment;
31
+ };
32
+
33
+ getFunction(
34
+ nameOrSignatureOrTopic:
35
+ | "finalPeriod"
36
+ | "manager"
37
+ | "reduce"
38
+ | "reduceByDays"
39
+ | "startingPeriodDays"
40
+ ): FunctionFragment;
41
+
42
+ encodeFunctionData(
43
+ functionFragment: "finalPeriod",
44
+ values?: undefined
45
+ ): string;
46
+ encodeFunctionData(functionFragment: "manager", values?: undefined): string;
47
+ encodeFunctionData(functionFragment: "reduce", values?: undefined): string;
48
+ encodeFunctionData(
49
+ functionFragment: "reduceByDays",
50
+ values?: undefined
51
+ ): string;
52
+ encodeFunctionData(
53
+ functionFragment: "startingPeriodDays",
54
+ values?: undefined
55
+ ): string;
56
+
57
+ decodeFunctionResult(
58
+ functionFragment: "finalPeriod",
59
+ data: BytesLike
60
+ ): Result;
61
+ decodeFunctionResult(functionFragment: "manager", data: BytesLike): Result;
62
+ decodeFunctionResult(functionFragment: "reduce", data: BytesLike): Result;
63
+ decodeFunctionResult(
64
+ functionFragment: "reduceByDays",
65
+ data: BytesLike
66
+ ): Result;
67
+ decodeFunctionResult(
68
+ functionFragment: "startingPeriodDays",
69
+ data: BytesLike
70
+ ): Result;
71
+
72
+ events: {};
73
+ }
74
+
75
+ export interface LastauthReduction extends BaseContract {
76
+ connect(signerOrProvider: Signer | Provider | string): this;
77
+ attach(addressOrName: string): this;
78
+ deployed(): Promise<this>;
79
+
80
+ interface: LastauthReductionInterface;
81
+
82
+ queryFilter<TEvent extends TypedEvent>(
83
+ event: TypedEventFilter<TEvent>,
84
+ fromBlockOrBlockhash?: string | number | undefined,
85
+ toBlock?: string | number | undefined
86
+ ): Promise<Array<TEvent>>;
87
+
88
+ listeners<TEvent extends TypedEvent>(
89
+ eventFilter?: TypedEventFilter<TEvent>
90
+ ): Array<TypedListener<TEvent>>;
91
+ listeners(eventName?: string): Array<Listener>;
92
+ removeAllListeners<TEvent extends TypedEvent>(
93
+ eventFilter: TypedEventFilter<TEvent>
94
+ ): this;
95
+ removeAllListeners(eventName?: string): this;
96
+ off: OnEvent<this>;
97
+ on: OnEvent<this>;
98
+ once: OnEvent<this>;
99
+ removeListener: OnEvent<this>;
100
+
101
+ functions: {
102
+ finalPeriod(overrides?: CallOverrides): Promise<[BigNumber]>;
103
+
104
+ manager(overrides?: CallOverrides): Promise<[string]>;
105
+
106
+ reduce(
107
+ overrides?: Overrides & { from?: string }
108
+ ): Promise<ContractTransaction>;
109
+
110
+ reduceByDays(overrides?: CallOverrides): Promise<[BigNumber]>;
111
+
112
+ startingPeriodDays(overrides?: CallOverrides): Promise<[BigNumber]>;
113
+ };
114
+
115
+ finalPeriod(overrides?: CallOverrides): Promise<BigNumber>;
116
+
117
+ manager(overrides?: CallOverrides): Promise<string>;
118
+
119
+ reduce(
120
+ overrides?: Overrides & { from?: string }
121
+ ): Promise<ContractTransaction>;
122
+
123
+ reduceByDays(overrides?: CallOverrides): Promise<BigNumber>;
124
+
125
+ startingPeriodDays(overrides?: CallOverrides): Promise<BigNumber>;
126
+
127
+ callStatic: {
128
+ finalPeriod(overrides?: CallOverrides): Promise<BigNumber>;
129
+
130
+ manager(overrides?: CallOverrides): Promise<string>;
131
+
132
+ reduce(overrides?: CallOverrides): Promise<void>;
133
+
134
+ reduceByDays(overrides?: CallOverrides): Promise<BigNumber>;
135
+
136
+ startingPeriodDays(overrides?: CallOverrides): Promise<BigNumber>;
137
+ };
138
+
139
+ filters: {};
140
+
141
+ estimateGas: {
142
+ finalPeriod(overrides?: CallOverrides): Promise<BigNumber>;
143
+
144
+ manager(overrides?: CallOverrides): Promise<BigNumber>;
145
+
146
+ reduce(overrides?: Overrides & { from?: string }): Promise<BigNumber>;
147
+
148
+ reduceByDays(overrides?: CallOverrides): Promise<BigNumber>;
149
+
150
+ startingPeriodDays(overrides?: CallOverrides): Promise<BigNumber>;
151
+ };
152
+
153
+ populateTransaction: {
154
+ finalPeriod(overrides?: CallOverrides): Promise<PopulatedTransaction>;
155
+
156
+ manager(overrides?: CallOverrides): Promise<PopulatedTransaction>;
157
+
158
+ reduce(
159
+ overrides?: Overrides & { from?: string }
160
+ ): Promise<PopulatedTransaction>;
161
+
162
+ reduceByDays(overrides?: CallOverrides): Promise<PopulatedTransaction>;
163
+
164
+ startingPeriodDays(
165
+ overrides?: CallOverrides
166
+ ): Promise<PopulatedTransaction>;
167
+ };
168
+ }
@@ -14,11 +14,13 @@ export type { proxyFactory1967Sol };
14
14
  export type { AdminWallet } from "./AdminWallet";
15
15
  export type { AdminWalletFuse } from "./AdminWalletFuse";
16
16
  export type { BancorFormula } from "./BancorFormula";
17
+ export type { BulkWhitelist } from "./BulkWhitelist";
17
18
  export type { BuyAndBridgeHelper } from "./BuyAndBridgeHelper";
18
19
  export type { DAOContract } from "./DAOContract";
19
20
  export type { DAOUpgradeableContract } from "./DAOUpgradeableContract";
20
21
  export type { GDFaucet } from "./GDFaucet";
21
22
  export type { IdentityFix } from "./IdentityFix";
23
+ export type { LastauthReduction } from "./LastauthReduction";
22
24
  export type { MultichainBridgeHelper } from "./MultichainBridgeHelper";
23
25
  export type { NameService } from "./NameService";
24
26
  export type { OneTimePayments } from "./OneTimePayments";