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

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 (179) hide show
  1. package/artifacts/abis/BulkWhitelist.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/Interfaces.sol/AggregatorV3Interface.dbg.json +1 -1
  9. package/artifacts/contracts/Interfaces.sol/ERC20.dbg.json +1 -1
  10. package/artifacts/contracts/Interfaces.sol/IAaveIncentivesController.dbg.json +1 -1
  11. package/artifacts/contracts/Interfaces.sol/IAdminWallet.dbg.json +1 -1
  12. package/artifacts/contracts/Interfaces.sol/IDonationStaking.dbg.json +1 -1
  13. package/artifacts/contracts/Interfaces.sol/IERC2917.dbg.json +1 -1
  14. package/artifacts/contracts/Interfaces.sol/IFirstClaimPool.dbg.json +1 -1
  15. package/artifacts/contracts/Interfaces.sol/IGoodDollar.dbg.json +1 -1
  16. package/artifacts/contracts/Interfaces.sol/IGoodStaking.dbg.json +1 -1
  17. package/artifacts/contracts/Interfaces.sol/IHasRouter.dbg.json +1 -1
  18. package/artifacts/contracts/Interfaces.sol/IIdentity.dbg.json +1 -1
  19. package/artifacts/contracts/Interfaces.sol/IIdentityV2.dbg.json +1 -1
  20. package/artifacts/contracts/Interfaces.sol/ILendingPool.dbg.json +1 -1
  21. package/artifacts/contracts/Interfaces.sol/IMultichainRouter.dbg.json +1 -1
  22. package/artifacts/contracts/Interfaces.sol/INameService.dbg.json +1 -1
  23. package/artifacts/contracts/Interfaces.sol/IUBIScheme.dbg.json +1 -1
  24. package/artifacts/contracts/Interfaces.sol/ProxyAdmin.dbg.json +1 -1
  25. package/artifacts/contracts/Interfaces.sol/Reserve.dbg.json +1 -1
  26. package/artifacts/contracts/Interfaces.sol/Staking.dbg.json +1 -1
  27. package/artifacts/contracts/Interfaces.sol/Uniswap.dbg.json +1 -1
  28. package/artifacts/contracts/Interfaces.sol/UniswapFactory.dbg.json +1 -1
  29. package/artifacts/contracts/Interfaces.sol/UniswapPair.dbg.json +1 -1
  30. package/artifacts/contracts/Interfaces.sol/cERC20.dbg.json +1 -1
  31. package/artifacts/contracts/fuseFaucet/Faucet.sol/Faucet.dbg.json +1 -1
  32. package/artifacts/contracts/fuseFaucet/FuseFaucet.sol/FuseFaucet.dbg.json +1 -1
  33. package/artifacts/contracts/fuseFaucet/FuseFaucetV2.sol/FuseFaucetV2.dbg.json +1 -1
  34. package/artifacts/contracts/governance/ClaimersDistribution.sol/ClaimersDistribution.dbg.json +1 -1
  35. package/artifacts/contracts/governance/CompoundVotingMachine.sol/CompoundVotingMachine.dbg.json +1 -1
  36. package/artifacts/contracts/governance/GReputation.sol/GReputation.dbg.json +1 -1
  37. package/artifacts/contracts/governance/GoodDollarStaking.sol/GoodDollarStaking.dbg.json +1 -1
  38. package/artifacts/contracts/governance/GoodDollarStaking.sol/IGovernanceStaking.dbg.json +1 -1
  39. package/artifacts/contracts/governance/GoodDollarStaking.sol/IStakingUpgrade.dbg.json +1 -1
  40. package/artifacts/contracts/governance/GoodDollarStaking.sol/RewardsMinter.dbg.json +1 -1
  41. package/artifacts/contracts/governance/GovernanceStaking.sol/GovernanceStaking.dbg.json +1 -1
  42. package/artifacts/contracts/governance/MultiBaseGovernanceShareField.sol/MultiBaseGovernanceShareField.dbg.json +1 -1
  43. package/artifacts/contracts/governance/Reputation.sol/Reputation.dbg.json +1 -1
  44. package/artifacts/contracts/governance/StakersDistribution.sol/StakersDistribution.dbg.json +1 -1
  45. package/artifacts/contracts/identity/IdentityV2.sol/IdentityV2.dbg.json +1 -1
  46. package/artifacts/contracts/invite/InvitesFuseV2.sol/InvitesFuseV2.dbg.json +1 -1
  47. package/artifacts/contracts/invite/InvitesV1.sol/InvitesV1.dbg.json +1 -1
  48. package/artifacts/contracts/invite/InvitesV2.sol/InvitesV2.dbg.json +1 -1
  49. package/artifacts/contracts/invite/OneTimeReward.sol/OneTimeReward.dbg.json +1 -1
  50. package/artifacts/contracts/mocks/AaveMock.sol/AaveMock.dbg.json +1 -1
  51. package/artifacts/contracts/mocks/AaveUSDMockOracle.sol/AaveUSDMockOracle.dbg.json +1 -1
  52. package/artifacts/contracts/mocks/BatUSDMockOracle.sol/BatUSDMockOracle.dbg.json +1 -1
  53. package/artifacts/contracts/mocks/CompUsdMockOracle.sol/CompUSDMockOracle.dbg.json +1 -1
  54. package/artifacts/contracts/mocks/DAIMock.sol/DAIMock.dbg.json +1 -1
  55. package/artifacts/contracts/mocks/DaiEthPriceMockOracle.sol/DaiEthPriceMockOracle.dbg.json +1 -1
  56. package/artifacts/contracts/mocks/DecimalsMock.sol/DecimalsMock.dbg.json +1 -1
  57. package/artifacts/contracts/mocks/DistributionBridgeMock.sol/DistributionBridgeMock.dbg.json +1 -1
  58. package/artifacts/contracts/mocks/DistributionHelperTest.sol/DistributionHelperTest.dbg.json +1 -1
  59. package/artifacts/contracts/mocks/DistributionHelperTest.sol/DistributionHelperTestHelper.dbg.json +1 -1
  60. package/artifacts/contracts/mocks/EthUSDMockOracle.sol/EthUSDMockOracle.dbg.json +1 -1
  61. package/artifacts/contracts/mocks/FeesFormularMock.sol/FeesFormulaMock.dbg.json +1 -1
  62. package/artifacts/contracts/mocks/GasPriceMockOracle.sol/GasPriceMockOracle.dbg.json +1 -1
  63. package/artifacts/contracts/mocks/GoodCompoundStakingTest.sol/GoodCompoundStakingTest.dbg.json +1 -1
  64. package/artifacts/contracts/mocks/GoodDollarStakingMock.sol/GoodDollarStakingMock.dbg.json +1 -1
  65. package/artifacts/contracts/mocks/GoodFundManagerTest.sol/GoodFundManagerTest.dbg.json +1 -1
  66. package/artifacts/contracts/mocks/IdentityMock.sol/IdentityMock.dbg.json +1 -1
  67. package/artifacts/contracts/mocks/IncentiveControllerMock.sol/IncentiveControllerMock.dbg.json +1 -1
  68. package/artifacts/contracts/mocks/LendingPoolMock.sol/LendingPoolMock.dbg.json +1 -1
  69. package/artifacts/contracts/mocks/MultichainRouterMock.sol/IWrapper.dbg.json +1 -1
  70. package/artifacts/contracts/mocks/MultichainRouterMock.sol/MultichainRouterMock.dbg.json +1 -1
  71. package/artifacts/contracts/mocks/OverMintTester.sol/IGoodDollarStakingTest.dbg.json +1 -1
  72. package/artifacts/contracts/mocks/OverMintTester.sol/OverMintTester.dbg.json +1 -1
  73. package/artifacts/contracts/mocks/OverMintTesterRegularStake.sol/OverMintTesterRegularStake.dbg.json +1 -1
  74. package/artifacts/contracts/mocks/PayableMock.sol/PayableMock.dbg.json +1 -1
  75. package/artifacts/contracts/mocks/SixteenDecimalsTokenMock.sol/SixteenDecimalsTokenMock.dbg.json +1 -1
  76. package/artifacts/contracts/mocks/StakingMockFixedAPY.sol/StakingMockFixedAPY.dbg.json +1 -1
  77. package/artifacts/contracts/mocks/SwapHelperTest.sol/SwapHelperTest.dbg.json +1 -1
  78. package/artifacts/contracts/mocks/TwentyDecimalsTokenMock.sol/TwentyDecimalsTokenMock.dbg.json +1 -1
  79. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock.dbg.json +1 -1
  80. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock2.dbg.json +1 -1
  81. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock3.dbg.json +1 -1
  82. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock4.dbg.json +1 -1
  83. package/artifacts/contracts/mocks/UsdcMock.sol/USDCMock.dbg.json +1 -1
  84. package/artifacts/contracts/mocks/cBATMock.sol/cBATMock.dbg.json +1 -1
  85. package/artifacts/contracts/mocks/cDAILowWorthMock.sol/cDAILowWorthMock.dbg.json +1 -1
  86. package/artifacts/contracts/mocks/cDAIMock.sol/cDAIMock.dbg.json +1 -1
  87. package/artifacts/contracts/mocks/cDAINonMintableMock.sol/cDAINonMintableMock.dbg.json +1 -1
  88. package/artifacts/contracts/mocks/cDecimalsMock.sol/cDecimalsMock.dbg.json +1 -1
  89. package/artifacts/contracts/mocks/cSDTMock.sol/cSDTMock.dbg.json +1 -1
  90. package/artifacts/contracts/mocks/cUSDCMock.sol/cUSDCMock.dbg.json +1 -1
  91. package/artifacts/contracts/reserve/DistributionHelper.sol/DistributionHelper.dbg.json +1 -1
  92. package/artifacts/contracts/reserve/ExchangeHelper.sol/ExchangeHelper.dbg.json +1 -1
  93. package/artifacts/contracts/reserve/GoodMarketMaker.sol/GoodMarketMaker.dbg.json +1 -1
  94. package/artifacts/contracts/reserve/GoodReserveCDai.sol/ContributionCalc.dbg.json +1 -1
  95. package/artifacts/contracts/reserve/GoodReserveCDai.sol/GoodReserveCDai.dbg.json +1 -1
  96. package/artifacts/contracts/staking/BaseShareField.sol/BaseShareField.dbg.json +1 -1
  97. package/artifacts/contracts/staking/BaseShareFieldV2.sol/BaseShareFieldV2.dbg.json +1 -1
  98. package/artifacts/contracts/staking/DonationsStaking.sol/DonationsStaking.dbg.json +1 -1
  99. package/artifacts/contracts/staking/FuseStakingV3.sol/FuseStakingV3.dbg.json +1 -1
  100. package/artifacts/contracts/staking/FuseStakingV3.sol/IConsensus.dbg.json +1 -1
  101. package/artifacts/contracts/staking/FuseStakingV3.sol/PegSwap.dbg.json +1 -1
  102. package/artifacts/contracts/staking/GoodFundManager.sol/GoodFundManager.dbg.json +1 -1
  103. package/artifacts/contracts/staking/SimpleStaking.sol/SimpleStaking.dbg.json +1 -1
  104. package/artifacts/contracts/staking/SimpleStakingV2.sol/SimpleStakingV2.dbg.json +1 -1
  105. package/artifacts/contracts/staking/UniswapV2SwapHelper.sol/UniswapV2SwapHelper.dbg.json +1 -1
  106. package/artifacts/contracts/staking/aave/AaveStakingFactory.sol/AaveStakingFactory.dbg.json +1 -1
  107. package/artifacts/contracts/staking/aave/GoodAaveStaking.sol/GoodAaveStaking.dbg.json +1 -1
  108. package/artifacts/contracts/staking/aave/GoodAaveStakingV2.sol/GoodAaveStakingV2.dbg.json +1 -1
  109. package/artifacts/contracts/staking/compound/CompoundStakingFactory.sol/CompoundStakingFactory.dbg.json +1 -1
  110. package/artifacts/contracts/staking/compound/GoodCompoundStaking.sol/GoodCompoundStaking.dbg.json +1 -1
  111. package/artifacts/contracts/staking/compound/GoodCompoundStakingV2.sol/GoodCompoundStakingV2.dbg.json +1 -1
  112. package/artifacts/contracts/staking/utils/Math64X64.sol/Math64x64.dbg.json +1 -1
  113. package/artifacts/contracts/staking/utils/StakingRewardsFixedAPY.sol/StakingRewardsFixedAPY.dbg.json +1 -1
  114. package/artifacts/contracts/token/ERC20PresetMinterPauserUpgradeable.sol/ERC20PresetMinterPauserUpgradeable.dbg.json +1 -1
  115. package/artifacts/contracts/token/ERC677.sol/ERC677.dbg.json +1 -1
  116. package/artifacts/contracts/token/ERC677.sol/ERC677Receiver.dbg.json +1 -1
  117. package/artifacts/contracts/token/GoodDollar.sol/GoodDollar.dbg.json +1 -1
  118. package/artifacts/contracts/token/IFeesFormula.sol/IFeesFormula.dbg.json +1 -1
  119. package/artifacts/contracts/token/MultichainFeeFormula.sol/MultichainFeeFormula.dbg.json +1 -1
  120. package/artifacts/contracts/token/superfluid/ERC20Permit.sol/ERC20Permit.dbg.json +1 -1
  121. package/artifacts/contracts/token/superfluid/ERC20Permit.sol/SelfApprove.dbg.json +1 -1
  122. package/artifacts/contracts/token/superfluid/ISuperGoodDollar.sol/IGoodDollarCustom.dbg.json +1 -1
  123. package/artifacts/contracts/token/superfluid/ISuperGoodDollar.sol/ISuperGoodDollar.dbg.json +1 -1
  124. package/artifacts/contracts/token/superfluid/ISuperToken.sol/ISuperToken.dbg.json +1 -1
  125. package/artifacts/contracts/token/superfluid/SuperGoodDollar.sol/SuperGoodDollar.dbg.json +1 -1
  126. package/artifacts/contracts/token/superfluid/SuperToken.sol/SuperToken.dbg.json +1 -1
  127. package/artifacts/contracts/token/superfluid/SuperfluidToken.sol/SuperfluidToken.dbg.json +1 -1
  128. package/artifacts/contracts/token/superfluid/UUPSProxiable.sol/UUPSProxiable.dbg.json +1 -1
  129. package/artifacts/contracts/token/superfluid/UUPSProxy.sol/Proxy.dbg.json +1 -1
  130. package/artifacts/contracts/token/superfluid/UUPSProxy.sol/UUPSProxy.dbg.json +1 -1
  131. package/artifacts/contracts/token/superfluid/UUPSProxy.sol/UUPSUtils.dbg.json +1 -1
  132. package/artifacts/contracts/ubi/UBIScheme.sol/UBIScheme.dbg.json +1 -1
  133. package/artifacts/contracts/ubi/UBISchemeV2.sol/UBISchemeV2.dbg.json +1 -1
  134. package/artifacts/contracts/utils/AdminWallet.sol/AdminWallet.dbg.json +1 -1
  135. package/artifacts/contracts/utils/AdminWalletFuse.sol/AdminWalletFuse.dbg.json +1 -1
  136. package/artifacts/contracts/utils/BancorFormula.sol/BancorFormula.dbg.json +1 -1
  137. package/artifacts/contracts/utils/BulkProof.sol/BulkProof.dbg.json +1 -1
  138. package/artifacts/contracts/utils/BulkWhitelist.sol/BulkWhitelist.dbg.json +4 -0
  139. package/artifacts/contracts/utils/BulkWhitelist.sol/BulkWhitelist.json +67 -0
  140. package/artifacts/contracts/utils/BuyAndBridgeHelper.sol/BuyAndBridgeHelper.dbg.json +1 -1
  141. package/artifacts/contracts/utils/BuyGDClone.sol/BuyGDClone.dbg.json +1 -1
  142. package/artifacts/contracts/utils/BuyGDClone.sol/BuyGDCloneFactory.dbg.json +1 -1
  143. package/artifacts/contracts/utils/BuyGDClone.sol/DonateGDClone.dbg.json +1 -1
  144. package/artifacts/contracts/utils/BuyGDClone.sol/IQuoterV2.dbg.json +1 -1
  145. package/artifacts/contracts/utils/BuyGDClone.sol/ISwapRouter.dbg.json +1 -1
  146. package/artifacts/contracts/utils/DAOContract.sol/DAOContract.dbg.json +1 -1
  147. package/artifacts/contracts/utils/DAOUpgradeableContract.sol/DAOUpgradeableContract.dbg.json +1 -1
  148. package/artifacts/contracts/utils/DSMath.sol/DSMath.dbg.json +1 -1
  149. package/artifacts/contracts/utils/DataTypes.sol/DataTypes.dbg.json +1 -1
  150. package/artifacts/contracts/utils/GDFaucet.sol/GDFaucet.dbg.json +1 -1
  151. package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/GoodDollarMintBurnWrapper.dbg.json +1 -1
  152. package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/IRouter.dbg.json +1 -1
  153. package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/PausableControl.dbg.json +1 -1
  154. package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/TokenOperation.dbg.json +1 -1
  155. package/artifacts/contracts/utils/IdentityFix.sol/IdentityFix.dbg.json +1 -1
  156. package/artifacts/contracts/utils/MultiCall.sol/Multicall.dbg.json +1 -1
  157. package/artifacts/contracts/utils/MultichainBridgeHelper.sol/MultichainBridgeHelper.dbg.json +1 -1
  158. package/artifacts/contracts/utils/NameService.sol/NameService.dbg.json +1 -1
  159. package/artifacts/contracts/utils/OneTimePayments.sol/OneTimePayments.dbg.json +1 -1
  160. package/artifacts/contracts/utils/OneTimePaymentsV2.sol/OneTimePaymentsV2.dbg.json +1 -1
  161. package/artifacts/contracts/utils/ProtocolUpgrade.sol/OldMarketMaker.dbg.json +1 -1
  162. package/artifacts/contracts/utils/ProtocolUpgrade.sol/ProtocolUpgrade.dbg.json +1 -1
  163. package/artifacts/contracts/utils/ProtocolUpgradeFuse.sol/ProtocolUpgradeFuse.dbg.json +1 -1
  164. package/artifacts/contracts/utils/ProtocolUpgradeFuseRecover.sol/ProtocolUpgradeFuseRecover.dbg.json +1 -1
  165. package/artifacts/contracts/utils/ProtocolUpgradeRecover.sol/ProtocolUpgradeRecover.dbg.json +1 -1
  166. package/artifacts/contracts/utils/ProxyFactory1967.sol/ERC1967Proxy.dbg.json +1 -1
  167. package/artifacts/contracts/utils/ProxyFactory1967.sol/ProxyFactory1967.dbg.json +1 -1
  168. package/artifacts/contracts/utils/ReputationTestHelper.sol/ReputationTestHelper.dbg.json +1 -1
  169. package/contracts/utils/BulkWhitelist.sol +51 -0
  170. package/package.json +1 -1
  171. package/releases/deployment.json +546 -599
  172. package/scripts/fv.ts +134 -17
  173. package/scripts/utils.ts +11 -0
  174. package/types/contracts/utils/BulkWhitelist.ts +153 -0
  175. package/types/contracts/utils/index.ts +1 -0
  176. package/types/factories/contracts/utils/BulkWhitelist__factory.ts +123 -0
  177. package/types/factories/contracts/utils/index.ts +1 -0
  178. package/types/hardhat.d.ts +9 -0
  179. package/types/index.ts +2 -0
package/scripts/fv.ts CHANGED
@@ -1,8 +1,21 @@
1
- import fetch from "cross-fetch";
2
1
  import fs from "fs";
3
2
  import { chunk, uniqBy } from "lodash";
4
- import { bulkIsWhitelisted, bulkLastAuth } from "./utils";
3
+ import delay from "delay";
5
4
 
5
+ import { bulkIsWhitelisted, bulkIsWhitelistedFuse, bulkLastAuth } from "./utils";
6
+
7
+ const fetchImages = async a => {
8
+ const i1 = await fetch("http://localhost:9090/enrollment-3d/" + a[1]).then(_ => _.json());
9
+ const i2 = await fetch("http://localhost:9090/enrollment-3d/" + a[2]).then(_ => _.json());
10
+ if (i1.auditTrailBase64 && i2.auditTrailBase64) {
11
+ fs.writeFileSync("fvimages/" + a.join("_") + "-a.jpg", i1.auditTrailBase64, {
12
+ encoding: "base64"
13
+ });
14
+ fs.writeFileSync("fvimages/" + a.join("_") + "-b.jpg", i2.auditTrailBase64, {
15
+ encoding: "base64"
16
+ });
17
+ } else console.log("not found", a, !!i1.auditTrailBase64, !!i2.auditTrailBase64);
18
+ };
6
19
  //create tunnel to fv server ssh -L 9090:server:8080 -N user@server -i sshkey
7
20
  const main = async () => {
8
21
  const data = JSON.parse(fs.readFileSync("fvtriplets2.txt").toString());
@@ -20,22 +33,125 @@ const main = async () => {
20
33
  return fs.existsSync(key) === false;
21
34
  });
22
35
  console.log({ notfetched });
23
- const ps = notfetched.map(async a => {
24
- const i1 = await fetch("http://localhost:9090/enrollment-3d/" + a[1]).then(_ => _.json());
25
- const i2 = await fetch("http://localhost:9090/enrollment-3d/" + a[2]).then(_ => _.json());
26
- if (i1.auditTrailBase64 && i2.auditTrailBase64) {
27
- fs.writeFileSync("fvimages/" + a.join("_") + "-a.jpg", i1.auditTrailBase64, {
28
- encoding: "base64"
29
- });
30
- fs.writeFileSync("fvimages/" + a.join("_") + "-b.jpg", i2.auditTrailBase64, {
31
- encoding: "base64"
32
- });
33
- } else console.log("not found", a, !!i1.auditTrailBase64, !!i2.auditTrailBase64);
34
- });
36
+ const ps = notfetched.map(fetchImages);
35
37
 
36
38
  await Promise.all(ps);
37
39
  };
38
40
 
41
+ // check which ids have been indexed, if not then make sure they are whitelisted
42
+ const checkIndexedOrDelete = async () => {
43
+ const data = JSON.parse(
44
+ "[" + fs.readFileSync("fvids.json").toString().replace(/\n$/, "").replaceAll(/\n/g, ",\n") + "]"
45
+ );
46
+ const triplets = uniqBy(data, _ => _["wallet"]);
47
+
48
+ const accounts = triplets.map(_ => _["wallet"]);
49
+ console.log("Total accounts:", accounts.length, accounts[0]);
50
+ let whitelisted = [];
51
+ for (let batch of chunk(accounts, 200)) {
52
+ whitelisted.push(...(await bulkIsWhitelistedFuse(batch)));
53
+ }
54
+ const failed = triplets.filter(_ => whitelisted.includes(_["wallet"]) === false);
55
+
56
+ console.log("Total whitelisted:", whitelisted.length);
57
+ console.log("Total not whitelisted:", failed.length);
58
+ let ps = [];
59
+
60
+ ps = [];
61
+ for (let record of triplets) {
62
+ const isEnrolled = fetch("http://localhost:9090/enrollment-3d/" + record["identifier"].slice(0, 42))
63
+ .then(_ => _.json())
64
+ .then(_ => _.success);
65
+ // const isEnrolled = "unknown";
66
+ const isIndexed = fetch("http://localhost:9090/3d-db/get", {
67
+ method: "POST",
68
+ body: JSON.stringify({ identifier: record["identifier"].slice(0, 42), groupName: "GoodDollar" })
69
+ })
70
+ .then(_ => _.json())
71
+ .then(_ => _.success);
72
+
73
+ ps.push(
74
+ Promise.all([isEnrolled, isIndexed]).then(_ => ({
75
+ ...record,
76
+ isEnrolled: _[0],
77
+ isIndexed: _[1],
78
+ isWhitelisted: whitelisted.includes(record.wallet)
79
+ }))
80
+ );
81
+ if (ps.length % 50 === 0) {
82
+ console.log("waiting...", ps.length);
83
+ await Promise.all(ps);
84
+ }
85
+ }
86
+ console.log("waiting...", ps.length);
87
+ const r = await Promise.all(ps);
88
+ const toDelete = r.filter(
89
+ _ => (_.isWhitelisted && (!_.isEnrolled || !_.isIndexed)) || (!_.isWhitelisted && _.isIndexed && !_.isEnrolled)
90
+ );
91
+ const toWhitelist = r.filter(_ => !_.isWhitelisted && _.isEnrolled && _.isIndexed);
92
+
93
+ console.log("toDelete:", toDelete.length);
94
+
95
+ console.log("toWhitelist:", toWhitelist.length);
96
+ fs.writeFileSync("fvIndexedOrEnrolled.json", JSON.stringify(r));
97
+ };
98
+
99
+ const fixInvalidIndexed = async () => {
100
+ const indexedOrEnrolled = JSON.parse(fs.readFileSync("fvIndexedOrEnrolled.json").toString());
101
+ const toDelete = indexedOrEnrolled.filter(
102
+ _ => (_.isWhitelisted && (!_.isEnrolled || !_.isIndexed)) || (!_.isWhitelisted && _.isIndexed && !_.isEnrolled)
103
+ );
104
+ const toWhitelist = indexedOrEnrolled.filter(_ => !_.isWhitelisted && _.isEnrolled && _.isIndexed);
105
+
106
+ console.log("toDelete:", toDelete.length);
107
+
108
+ console.log("toWhitelist:", toWhitelist.length);
109
+
110
+ console.log(toWhitelist);
111
+ return;
112
+ let ps = [];
113
+ for (let record of toWhitelist) {
114
+ ps.push(fetch(`https://goodserver.gooddollar.org/syncWhitelist/${record.wallet}`).then(_ => _.json()));
115
+ if (ps.length > 0 && ps.length % 3 === 0) {
116
+ console.log("waiting...", ps.length);
117
+ await Promise.all(ps).catch(e => console.log(e));
118
+ console.log("waiting 60 seconds for rate limit");
119
+ await delay(50000);
120
+ }
121
+ }
122
+ if (ps.length > 0) {
123
+ console.log("waiting...", ps.length);
124
+ await Promise.all(ps).catch(e => console.log(e));
125
+ }
126
+
127
+ const removeWhitelist = toDelete.filter(_ => _.isWhitelisted).map(_ => _.wallet);
128
+ // removeWhitelist.push(...toWhitelist.map(_ => _.wallet));
129
+ ps = [];
130
+ for (let record of toDelete) {
131
+ if (record.isIndexed) {
132
+ // console.log("removing record from index and queuing for whitelist removal", record.wallet);
133
+ const isIndexed = fetch("http://localhost:9090/3d-db/delete", {
134
+ method: "POST",
135
+ body: JSON.stringify({ identifier: record["identifier"].slice(0, 42), groupName: "GoodDollar" })
136
+ }).then(_ => _.json());
137
+
138
+ ps.push(
139
+ isIndexed.then(_ => {
140
+ if (!_.success) throw new Error(`delete index failed: ${record.wallet}`);
141
+ })
142
+ );
143
+ }
144
+ if (ps.length > 0 && ps.length % 10 === 0) {
145
+ console.log("waiting...", ps.length);
146
+ await Promise.all(ps).catch(e => console.log(e));
147
+ }
148
+ }
149
+ console.log("waiting...", ps.length);
150
+ await Promise.all(ps).catch(e => console.log(e));
151
+ console.log({ removeWhitelist }, removeWhitelist.length);
152
+ fs.writeFileSync("removeWhitelist.json", JSON.stringify(removeWhitelist));
153
+ };
154
+
39
155
  const deleteIdentifiers = async password => {
40
156
  const data = JSON.parse(fs.readFileSync("fvtriplets2.txt").toString());
41
157
  const triplets = uniqBy(chunk(data, 3), _ => _.join("_"));
@@ -89,7 +205,8 @@ const deleteIdentifiers = async password => {
89
205
  const res = await Promise.all(ps);
90
206
  console.log(res);
91
207
  };
92
-
208
+ // checkIndexedOrDelete();
209
+ fixInvalidIndexed();
93
210
  // main();
94
- console.log(process.env.ADMIN_PASSWORD);
95
- deleteIdentifiers(process.env.ADMIN_PASSWORD);
211
+ // console.log(process.env.ADMIN_PASSWORD);
212
+ // deleteIdentifiers(process.env.ADMIN_PASSWORD);
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");
@@ -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
+ }
@@ -14,6 +14,7 @@ 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";
@@ -0,0 +1,123 @@
1
+ /* Autogenerated file. Do not edit manually. */
2
+ /* tslint:disable */
3
+ /* eslint-disable */
4
+ import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers";
5
+ import type { Provider, TransactionRequest } from "@ethersproject/providers";
6
+ import type {
7
+ BulkWhitelist,
8
+ BulkWhitelistInterface,
9
+ } from "../../../contracts/utils/BulkWhitelist";
10
+
11
+ const _abi = [
12
+ {
13
+ inputs: [
14
+ {
15
+ internalType: "contract AdminWallet",
16
+ name: "_adminWallet",
17
+ type: "address",
18
+ },
19
+ ],
20
+ stateMutability: "nonpayable",
21
+ type: "constructor",
22
+ },
23
+ {
24
+ inputs: [
25
+ {
26
+ internalType: "address[]",
27
+ name: "_user",
28
+ type: "address[]",
29
+ },
30
+ ],
31
+ name: "removeWhitelisted",
32
+ outputs: [],
33
+ stateMutability: "nonpayable",
34
+ type: "function",
35
+ },
36
+ {
37
+ inputs: [
38
+ {
39
+ internalType: "address[]",
40
+ name: "_user",
41
+ type: "address[]",
42
+ },
43
+ {
44
+ internalType: "string[]",
45
+ name: "_did",
46
+ type: "string[]",
47
+ },
48
+ {
49
+ internalType: "uint256[]",
50
+ name: "orgChain",
51
+ type: "uint256[]",
52
+ },
53
+ {
54
+ internalType: "uint256[]",
55
+ name: "dateAuthenticated",
56
+ type: "uint256[]",
57
+ },
58
+ ],
59
+ name: "whitelist",
60
+ outputs: [],
61
+ stateMutability: "nonpayable",
62
+ type: "function",
63
+ },
64
+ {
65
+ stateMutability: "payable",
66
+ type: "receive",
67
+ },
68
+ ] as const;
69
+
70
+ const _bytecode =
71
+ "0x608060405234801561001057600080fd5b5060405161085838038061085883398101604081905261002f91610054565b600080546001600160a01b0319166001600160a01b0392909216919091179055610084565b60006020828403121561006657600080fd5b81516001600160a01b038116811461007d57600080fd5b9392505050565b6107c5806100936000396000f3fe60806040526004361061002d5760003560e01c80638732281614610039578063c36b34081461005b57600080fd5b3661003457005b600080fd5b34801561004557600080fd5b50610059610054366004610482565b61007b565b005b34801561006757600080fd5b50610059610076366004610519565b6101e4565b600054604051630935e01b60e21b81526001600160a01b03909116906324d7806c906100ab903390600401610686565b602060405180830381865afa1580156100c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100ec919061069a565b6101115760405162461bcd60e51b8152600401610108906106c3565b60405180910390fd5b60005b81518110156101af5760005482516001600160a01b03909116906378c8cda790849084908110610146576101466106e6565b60200260200101516040518263ffffffff1660e01b815260040161016a9190610686565b600060405180830381600087803b15801561018457600080fd5b505af1158015610198573d6000803e3d6000fd5b5050505080806101a7906106fc565b915050610114565b506040514790339082156108fc029083906000818181858888f193505050501580156101df573d6000803e3d6000fd5b505050565b600054604051630935e01b60e21b81526001600160a01b03909116906324d7806c90610214903390600401610686565b602060405180830381865afa158015610231573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610255919061069a565b6102715760405162461bcd60e51b8152600401610108906106c3565b60005b84518110156103605760005485516001600160a01b039091169063971d902c908790849081106102a6576102a66106e6565b60200260200101518684815181106102c0576102c06106e6565b60200260200101518685815181106102da576102da6106e6565b60200260200101518686815181106102f4576102f46106e6565b60200260200101516040518563ffffffff1660e01b815260040161031b9493929190610723565b600060405180830381600087803b15801561033557600080fd5b505af1158015610349573d6000803e3d6000fd5b505050508080610358906106fc565b915050610274565b506040514790339082156108fc029083906000818181858888f19350505050158015610390573d6000803e3d6000fd5b505050505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b03811182821017156103d6576103d6610398565b604052919050565b60006001600160401b038211156103f7576103f7610398565b5060051b60200190565b600082601f83011261041257600080fd5b81356020610427610422836103de565b6103ae565b82815260059290921b8401810191818101908684111561044657600080fd5b8286015b848110156104775780356001600160a01b038116811461046a5760008081fd5b835291830191830161044a565b509695505050505050565b60006020828403121561049457600080fd5b81356001600160401b038111156104aa57600080fd5b6104b684828501610401565b949350505050565b600082601f8301126104cf57600080fd5b813560206104df610422836103de565b82815260059290921b840181019181810190868411156104fe57600080fd5b8286015b848110156104775780358352918301918301610502565b6000806000806080858703121561052f57600080fd5b84356001600160401b038082111561054657600080fd5b61055288838901610401565b955060209150818701358181111561056957600080fd5b8701601f8101891361057a57600080fd5b8035610588610422826103de565b81815260059190911b8201840190848101908b8311156105a757600080fd5b8584015b83811015610631578035868111156105c257600080fd5b8501603f81018e136105d357600080fd5b87810135878111156105e7576105e7610398565b6105f9601f8201601f19168a016103ae565b8181528f604083850101111561060f5760008081fd5b81604084018b83013760009181018a01919091528452509186019186016105ab565b509750505050604087013591508082111561064b57600080fd5b610657888389016104be565b9350606087013591508082111561066d57600080fd5b5061067a878288016104be565b91505092959194509250565b6001600160a01b0391909116815260200190565b6000602082840312156106ac57600080fd5b815180151581146106bc57600080fd5b9392505050565b6020808252600990820152683737ba1030b236b4b760b91b604082015260600190565b634e487b7160e01b600052603260045260246000fd5b60006001820161071c57634e487b7160e01b600052601160045260246000fd5b5060010190565b60018060a01b038516815260006020608081840152855180608085015260005b8181101561075f5787810183015185820160a001528201610743565b50600060a0828601015260a0601f19601f830116850101925050508360408301528260608301529594505050505056fea264697066735822122009338a754ae59335229e838b9b35c74ccfcc4e1d4c8451709f1fa334edce389464736f6c63430008130033";
72
+
73
+ type BulkWhitelistConstructorParams =
74
+ | [signer?: Signer]
75
+ | ConstructorParameters<typeof ContractFactory>;
76
+
77
+ const isSuperArgs = (
78
+ xs: BulkWhitelistConstructorParams
79
+ ): xs is ConstructorParameters<typeof ContractFactory> => xs.length > 1;
80
+
81
+ export class BulkWhitelist__factory extends ContractFactory {
82
+ constructor(...args: BulkWhitelistConstructorParams) {
83
+ if (isSuperArgs(args)) {
84
+ super(...args);
85
+ } else {
86
+ super(_abi, _bytecode, args[0]);
87
+ }
88
+ }
89
+
90
+ override deploy(
91
+ _adminWallet: string,
92
+ overrides?: Overrides & { from?: string }
93
+ ): Promise<BulkWhitelist> {
94
+ return super.deploy(
95
+ _adminWallet,
96
+ overrides || {}
97
+ ) as Promise<BulkWhitelist>;
98
+ }
99
+ override getDeployTransaction(
100
+ _adminWallet: string,
101
+ overrides?: Overrides & { from?: string }
102
+ ): TransactionRequest {
103
+ return super.getDeployTransaction(_adminWallet, overrides || {});
104
+ }
105
+ override attach(address: string): BulkWhitelist {
106
+ return super.attach(address) as BulkWhitelist;
107
+ }
108
+ override connect(signer: Signer): BulkWhitelist__factory {
109
+ return super.connect(signer) as BulkWhitelist__factory;
110
+ }
111
+
112
+ static readonly bytecode = _bytecode;
113
+ static readonly abi = _abi;
114
+ static createInterface(): BulkWhitelistInterface {
115
+ return new utils.Interface(_abi) as BulkWhitelistInterface;
116
+ }
117
+ static connect(
118
+ address: string,
119
+ signerOrProvider: Signer | Provider
120
+ ): BulkWhitelist {
121
+ return new Contract(address, _abi, signerOrProvider) as BulkWhitelist;
122
+ }
123
+ }
@@ -9,6 +9,7 @@ export * as proxyFactory1967Sol from "./ProxyFactory1967.sol";
9
9
  export { AdminWallet__factory } from "./AdminWallet__factory";
10
10
  export { AdminWalletFuse__factory } from "./AdminWalletFuse__factory";
11
11
  export { BancorFormula__factory } from "./BancorFormula__factory";
12
+ export { BulkWhitelist__factory } from "./BulkWhitelist__factory";
12
13
  export { BuyAndBridgeHelper__factory } from "./BuyAndBridgeHelper__factory";
13
14
  export { DAOContract__factory } from "./DAOContract__factory";
14
15
  export { DAOUpgradeableContract__factory } from "./DAOUpgradeableContract__factory";
@@ -828,6 +828,10 @@ declare module "hardhat/types/runtime" {
828
828
  name: "BancorFormula",
829
829
  signerOrOptions?: ethers.Signer | FactoryOptions
830
830
  ): Promise<Contracts.BancorFormula__factory>;
831
+ getContractFactory(
832
+ name: "BulkWhitelist",
833
+ signerOrOptions?: ethers.Signer | FactoryOptions
834
+ ): Promise<Contracts.BulkWhitelist__factory>;
831
835
  getContractFactory(
832
836
  name: "BuyAndBridgeHelper",
833
837
  signerOrOptions?: ethers.Signer | FactoryOptions
@@ -1953,6 +1957,11 @@ declare module "hardhat/types/runtime" {
1953
1957
  address: string,
1954
1958
  signer?: ethers.Signer
1955
1959
  ): Promise<Contracts.BancorFormula>;
1960
+ getContractAt(
1961
+ name: "BulkWhitelist",
1962
+ address: string,
1963
+ signer?: ethers.Signer
1964
+ ): Promise<Contracts.BulkWhitelist>;
1956
1965
  getContractAt(
1957
1966
  name: "BuyAndBridgeHelper",
1958
1967
  address: string,
package/types/index.ts CHANGED
@@ -410,6 +410,8 @@ export type { AdminWalletFuse } from "./contracts/utils/AdminWalletFuse";
410
410
  export { AdminWalletFuse__factory } from "./factories/contracts/utils/AdminWalletFuse__factory";
411
411
  export type { BancorFormula } from "./contracts/utils/BancorFormula";
412
412
  export { BancorFormula__factory } from "./factories/contracts/utils/BancorFormula__factory";
413
+ export type { BulkWhitelist } from "./contracts/utils/BulkWhitelist";
414
+ export { BulkWhitelist__factory } from "./factories/contracts/utils/BulkWhitelist__factory";
413
415
  export type { BuyAndBridgeHelper } from "./contracts/utils/BuyAndBridgeHelper";
414
416
  export { BuyAndBridgeHelper__factory } from "./factories/contracts/utils/BuyAndBridgeHelper__factory";
415
417
  export type { BuyGDClone } from "./contracts/utils/BuyGDClone.sol/BuyGDClone";