@gooddollar/goodprotocol 1.0.29-beta.3 → 1.0.29

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 (296) hide show
  1. package/artifacts/abis/AdminWallet.min.json +1 -1
  2. package/artifacts/abis/GoodDollarMintBurnWrapper.min.json +1 -1
  3. package/artifacts/abis/GoodDollarStaking.min.json +1 -1
  4. package/artifacts/abis/GoodDollarStakingMock.min.json +1 -1
  5. package/artifacts/abis/IGoodDollar.min.json +1 -1
  6. package/artifacts/abis/IIdentity.min.json +1 -1
  7. package/artifacts/abis/UBIScheme.min.json +1 -1
  8. package/artifacts/contracts/DAOStackInterfaces.sol/Avatar.dbg.json +1 -1
  9. package/artifacts/contracts/DAOStackInterfaces.sol/Controller.dbg.json +1 -1
  10. package/artifacts/contracts/DAOStackInterfaces.sol/GlobalConstraintInterface.dbg.json +1 -1
  11. package/artifacts/contracts/DAOStackInterfaces.sol/IntVoteInterface.dbg.json +1 -1
  12. package/artifacts/contracts/DAOStackInterfaces.sol/ReputationInterface.dbg.json +1 -1
  13. package/artifacts/contracts/DAOStackInterfaces.sol/SchemeRegistrar.dbg.json +1 -1
  14. package/artifacts/contracts/Interfaces.sol/AggregatorV3Interface.dbg.json +1 -1
  15. package/artifacts/contracts/Interfaces.sol/ERC20.dbg.json +1 -1
  16. package/artifacts/contracts/Interfaces.sol/IAaveIncentivesController.dbg.json +1 -1
  17. package/artifacts/contracts/Interfaces.sol/IAdminWallet.dbg.json +1 -1
  18. package/artifacts/contracts/Interfaces.sol/IDonationStaking.dbg.json +1 -1
  19. package/artifacts/contracts/Interfaces.sol/IERC2917.dbg.json +1 -1
  20. package/artifacts/contracts/Interfaces.sol/IFirstClaimPool.dbg.json +1 -1
  21. package/artifacts/contracts/Interfaces.sol/IGoodDollar.dbg.json +1 -1
  22. package/artifacts/contracts/Interfaces.sol/IGoodDollar.json +0 -39
  23. package/artifacts/contracts/Interfaces.sol/IGoodStaking.dbg.json +1 -1
  24. package/artifacts/contracts/Interfaces.sol/IHasRouter.dbg.json +1 -1
  25. package/artifacts/contracts/Interfaces.sol/IIdentity.dbg.json +1 -1
  26. package/artifacts/contracts/Interfaces.sol/IIdentity.json +0 -51
  27. package/artifacts/contracts/Interfaces.sol/ILendingPool.dbg.json +1 -1
  28. package/artifacts/contracts/Interfaces.sol/IMultichainRouter.dbg.json +1 -1
  29. package/artifacts/contracts/Interfaces.sol/INameService.dbg.json +1 -1
  30. package/artifacts/contracts/Interfaces.sol/IUBIScheme.dbg.json +1 -1
  31. package/artifacts/contracts/Interfaces.sol/ProxyAdmin.dbg.json +1 -1
  32. package/artifacts/contracts/Interfaces.sol/Reserve.dbg.json +1 -1
  33. package/artifacts/contracts/Interfaces.sol/Staking.dbg.json +1 -1
  34. package/artifacts/contracts/Interfaces.sol/Uniswap.dbg.json +1 -1
  35. package/artifacts/contracts/Interfaces.sol/UniswapFactory.dbg.json +1 -1
  36. package/artifacts/contracts/Interfaces.sol/UniswapPair.dbg.json +1 -1
  37. package/artifacts/contracts/Interfaces.sol/cERC20.dbg.json +1 -1
  38. package/artifacts/contracts/fuseFaucet/FuseFaucet.sol/FuseFaucet.dbg.json +1 -1
  39. package/artifacts/contracts/fuseFaucet/FuseFaucet.sol/FuseFaucet.json +2 -2
  40. package/artifacts/contracts/governance/ClaimersDistribution.sol/ClaimersDistribution.dbg.json +1 -1
  41. package/artifacts/contracts/governance/ClaimersDistribution.sol/ClaimersDistribution.json +2 -2
  42. package/artifacts/contracts/governance/CompoundVotingMachine.sol/CompoundVotingMachine.dbg.json +1 -1
  43. package/artifacts/contracts/governance/CompoundVotingMachine.sol/CompoundVotingMachine.json +2 -2
  44. package/artifacts/contracts/governance/GReputation.sol/GReputation.dbg.json +1 -1
  45. package/artifacts/contracts/governance/GReputation.sol/GReputation.json +2 -2
  46. package/artifacts/contracts/governance/GoodDollarStaking.sol/GoodDollarStaking.dbg.json +1 -1
  47. package/artifacts/contracts/governance/GoodDollarStaking.sol/GoodDollarStaking.json +2 -15
  48. package/artifacts/contracts/governance/GoodDollarStaking.sol/RewardsMinter.dbg.json +1 -1
  49. package/artifacts/contracts/governance/GovernanceStaking.sol/GovernanceStaking.dbg.json +1 -1
  50. package/artifacts/contracts/governance/GovernanceStaking.sol/GovernanceStaking.json +2 -2
  51. package/artifacts/contracts/governance/MultiBaseGovernanceShareField.sol/MultiBaseGovernanceShareField.dbg.json +1 -1
  52. package/artifacts/contracts/governance/Reputation.sol/Reputation.dbg.json +1 -1
  53. package/artifacts/contracts/governance/Reputation.sol/Reputation.json +2 -2
  54. package/artifacts/contracts/governance/StakersDistribution.sol/StakersDistribution.dbg.json +1 -1
  55. package/artifacts/contracts/governance/StakersDistribution.sol/StakersDistribution.json +2 -2
  56. package/artifacts/contracts/invite/InvitesV1.sol/InvitesV1.dbg.json +1 -1
  57. package/artifacts/contracts/invite/InvitesV1.sol/InvitesV1.json +2 -2
  58. package/artifacts/contracts/mocks/AaveMock.sol/AaveMock.dbg.json +1 -1
  59. package/artifacts/contracts/mocks/DAIMock.sol/DAIMock.dbg.json +1 -1
  60. package/artifacts/contracts/mocks/DecimalsMock.sol/DecimalsMock.dbg.json +1 -1
  61. package/artifacts/contracts/mocks/DistributionBridgeMock.sol/DistributionBridgeMock.dbg.json +1 -1
  62. package/artifacts/contracts/mocks/DistributionBridgeMock.sol/DistributionBridgeMock.json +2 -2
  63. package/artifacts/contracts/mocks/DistributionHelperTest.sol/DistributionHelperTest.dbg.json +1 -1
  64. package/artifacts/contracts/mocks/DistributionHelperTest.sol/DistributionHelperTest.json +2 -2
  65. package/artifacts/contracts/mocks/DistributionHelperTest.sol/DistributionHelperTestHelper.dbg.json +1 -1
  66. package/artifacts/contracts/mocks/DistributionHelperTest.sol/DistributionHelperTestHelper.json +2 -2
  67. package/artifacts/contracts/mocks/GoodCompoundStakingTest.sol/GoodCompoundStakingTest.dbg.json +1 -1
  68. package/artifacts/contracts/mocks/GoodCompoundStakingTest.sol/GoodCompoundStakingTest.json +2 -2
  69. package/artifacts/contracts/mocks/GoodDollarStakingMock.sol/GoodDollarStakingMock.dbg.json +1 -1
  70. package/artifacts/contracts/mocks/GoodDollarStakingMock.sol/GoodDollarStakingMock.json +2 -15
  71. package/artifacts/contracts/mocks/GoodFundManagerTest.sol/GoodFundManagerTest.dbg.json +1 -1
  72. package/artifacts/contracts/mocks/GoodFundManagerTest.sol/GoodFundManagerTest.json +2 -2
  73. package/artifacts/contracts/mocks/IncentiveControllerMock.sol/IncentiveControllerMock.dbg.json +1 -1
  74. package/artifacts/contracts/mocks/LendingPoolMock.sol/LendingPoolMock.dbg.json +1 -1
  75. package/artifacts/contracts/mocks/MultichainRouterMock.sol/IWrapper.dbg.json +1 -1
  76. package/artifacts/contracts/mocks/MultichainRouterMock.sol/MultichainRouterMock.dbg.json +1 -1
  77. package/artifacts/contracts/mocks/MultichainRouterMock.sol/MultichainRouterMock.json +2 -2
  78. package/artifacts/contracts/mocks/OverMintTester.sol/IGoodDollarStakingTest.dbg.json +1 -1
  79. package/artifacts/contracts/mocks/OverMintTester.sol/OverMintTester.dbg.json +1 -1
  80. package/artifacts/contracts/mocks/OverMintTester.sol/OverMintTester.json +2 -2
  81. package/artifacts/contracts/mocks/OverMintTesterRegularStake.sol/OverMintTesterRegularStake.dbg.json +1 -1
  82. package/artifacts/contracts/mocks/OverMintTesterRegularStake.sol/OverMintTesterRegularStake.json +2 -2
  83. package/artifacts/contracts/mocks/SixteenDecimalsTokenMock.sol/SixteenDecimalsTokenMock.dbg.json +1 -1
  84. package/artifacts/contracts/mocks/StakingMockFixedAPY.sol/StakingMockFixedAPY.dbg.json +1 -1
  85. package/artifacts/contracts/mocks/SwapHelperTest.sol/SwapHelperTest.dbg.json +1 -1
  86. package/artifacts/contracts/mocks/SwapHelperTest.sol/SwapHelperTest.json +2 -2
  87. package/artifacts/contracts/mocks/TwentyDecimalsTokenMock.sol/TwentyDecimalsTokenMock.dbg.json +1 -1
  88. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock.dbg.json +1 -1
  89. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock.json +2 -2
  90. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock2.dbg.json +1 -1
  91. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock2.json +2 -2
  92. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock3.dbg.json +1 -1
  93. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock3.json +2 -2
  94. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock4.dbg.json +1 -1
  95. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock4.json +2 -2
  96. package/artifacts/contracts/mocks/UsdcMock.sol/USDCMock.dbg.json +1 -1
  97. package/artifacts/contracts/mocks/cBATMock.sol/cBATMock.dbg.json +1 -1
  98. package/artifacts/contracts/mocks/cDAILowWorthMock.sol/cDAILowWorthMock.dbg.json +1 -1
  99. package/artifacts/contracts/mocks/cDAIMock.sol/cDAIMock.dbg.json +1 -1
  100. package/artifacts/contracts/mocks/cDAINonMintableMock.sol/cDAINonMintableMock.dbg.json +1 -1
  101. package/artifacts/contracts/mocks/cDecimalsMock.sol/cDecimalsMock.dbg.json +1 -1
  102. package/artifacts/contracts/mocks/cSDTMock.sol/cSDTMock.dbg.json +1 -1
  103. package/artifacts/contracts/mocks/cUSDCMock.sol/cUSDCMock.dbg.json +1 -1
  104. package/artifacts/contracts/reserve/DistributionHelper.sol/DistributionHelper.dbg.json +1 -1
  105. package/artifacts/contracts/reserve/DistributionHelper.sol/DistributionHelper.json +2 -2
  106. package/artifacts/contracts/reserve/ExchangeHelper.sol/ExchangeHelper.dbg.json +1 -1
  107. package/artifacts/contracts/reserve/ExchangeHelper.sol/ExchangeHelper.json +2 -2
  108. package/artifacts/contracts/reserve/GoodMarketMaker.sol/GoodMarketMaker.dbg.json +1 -1
  109. package/artifacts/contracts/reserve/GoodMarketMaker.sol/GoodMarketMaker.json +2 -2
  110. package/artifacts/contracts/reserve/GoodReserveCDai.sol/ContributionCalc.dbg.json +1 -1
  111. package/artifacts/contracts/reserve/GoodReserveCDai.sol/GoodReserveCDai.dbg.json +1 -1
  112. package/artifacts/contracts/reserve/GoodReserveCDai.sol/GoodReserveCDai.json +2 -2
  113. package/artifacts/contracts/staking/BaseShareField.sol/BaseShareField.dbg.json +1 -1
  114. package/artifacts/contracts/staking/BaseShareField.sol/BaseShareField.json +2 -2
  115. package/artifacts/contracts/staking/BaseShareFieldV2.sol/BaseShareFieldV2.dbg.json +1 -1
  116. package/artifacts/contracts/staking/BaseShareFieldV2.sol/BaseShareFieldV2.json +2 -2
  117. package/artifacts/contracts/staking/DonationsStaking.sol/DonationsStaking.dbg.json +1 -1
  118. package/artifacts/contracts/staking/DonationsStaking.sol/DonationsStaking.json +2 -2
  119. package/artifacts/contracts/staking/FuseStakingV3.sol/FuseStakingV3.dbg.json +1 -1
  120. package/artifacts/contracts/staking/FuseStakingV3.sol/FuseStakingV3.json +2 -2
  121. package/artifacts/contracts/staking/FuseStakingV3.sol/IConsensus.dbg.json +1 -1
  122. package/artifacts/contracts/staking/FuseStakingV3.sol/PegSwap.dbg.json +1 -1
  123. package/artifacts/contracts/staking/GoodFundManager.sol/GoodFundManager.dbg.json +1 -1
  124. package/artifacts/contracts/staking/GoodFundManager.sol/GoodFundManager.json +2 -2
  125. package/artifacts/contracts/staking/SimpleStaking.sol/SimpleStaking.dbg.json +1 -1
  126. package/artifacts/contracts/staking/SimpleStakingV2.sol/SimpleStakingV2.dbg.json +1 -1
  127. package/artifacts/contracts/staking/UniswapV2SwapHelper.sol/UniswapV2SwapHelper.dbg.json +1 -1
  128. package/artifacts/contracts/staking/UniswapV2SwapHelper.sol/UniswapV2SwapHelper.json +2 -2
  129. package/artifacts/contracts/staking/aave/AaveStakingFactory.sol/AaveStakingFactory.dbg.json +1 -1
  130. package/artifacts/contracts/staking/aave/AaveStakingFactory.sol/AaveStakingFactory.json +2 -2
  131. package/artifacts/contracts/staking/aave/GoodAaveStaking.sol/GoodAaveStaking.dbg.json +1 -1
  132. package/artifacts/contracts/staking/aave/GoodAaveStaking.sol/GoodAaveStaking.json +2 -2
  133. package/artifacts/contracts/staking/aave/GoodAaveStakingV2.sol/GoodAaveStakingV2.dbg.json +1 -1
  134. package/artifacts/contracts/staking/aave/GoodAaveStakingV2.sol/GoodAaveStakingV2.json +2 -2
  135. package/artifacts/contracts/staking/compound/CompoundStakingFactory.sol/CompoundStakingFactory.dbg.json +1 -1
  136. package/artifacts/contracts/staking/compound/CompoundStakingFactory.sol/CompoundStakingFactory.json +2 -2
  137. package/artifacts/contracts/staking/compound/GoodCompoundStaking.sol/GoodCompoundStaking.dbg.json +1 -1
  138. package/artifacts/contracts/staking/compound/GoodCompoundStaking.sol/GoodCompoundStaking.json +2 -2
  139. package/artifacts/contracts/staking/compound/GoodCompoundStakingV2.sol/GoodCompoundStakingV2.dbg.json +1 -1
  140. package/artifacts/contracts/staking/compound/GoodCompoundStakingV2.sol/GoodCompoundStakingV2.json +2 -2
  141. package/artifacts/contracts/staking/utils/Math64X64.sol/Math64x64.dbg.json +1 -1
  142. package/artifacts/contracts/staking/utils/StakingRewardsFixedAPY.sol/StakingRewardsFixedAPY.dbg.json +1 -1
  143. package/artifacts/contracts/ubi/UBIScheme.sol/UBIScheme.dbg.json +1 -1
  144. package/artifacts/contracts/ubi/UBIScheme.sol/UBIScheme.json +22 -15
  145. package/artifacts/contracts/utils/AdminWallet.sol/AdminWallet.dbg.json +1 -1
  146. package/artifacts/contracts/utils/AdminWallet.sol/AdminWallet.json +56 -76
  147. package/artifacts/contracts/utils/BancorFormula.sol/BancorFormula.dbg.json +1 -1
  148. package/artifacts/contracts/utils/BulkProof.sol/BulkProof.dbg.json +1 -1
  149. package/artifacts/contracts/utils/BulkProof.sol/BulkProof.json +2 -2
  150. package/artifacts/contracts/utils/DAOContract.sol/DAOContract.dbg.json +1 -1
  151. package/artifacts/contracts/utils/DAOContract.sol/DAOContract.json +2 -2
  152. package/artifacts/contracts/utils/DAOUpgradeableContract.sol/DAOUpgradeableContract.dbg.json +1 -1
  153. package/artifacts/contracts/utils/DAOUpgradeableContract.sol/DAOUpgradeableContract.json +2 -2
  154. package/artifacts/contracts/utils/DSMath.sol/DSMath.dbg.json +1 -1
  155. package/artifacts/contracts/utils/DataTypes.sol/DataTypes.dbg.json +1 -1
  156. package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/GoodDollarMintBurnWrapper.dbg.json +1 -1
  157. package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/GoodDollarMintBurnWrapper.json +2 -16
  158. package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/IRouter.dbg.json +1 -1
  159. package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/PausableControl.dbg.json +1 -1
  160. package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/TokenOperation.dbg.json +1 -1
  161. package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/TokenOperation.json +2 -2
  162. package/artifacts/contracts/utils/MultichainBridgeHelper.sol/MultichainBridgeHelper.dbg.json +1 -1
  163. package/artifacts/contracts/utils/MultichainBridgeHelper.sol/MultichainBridgeHelper.json +2 -2
  164. package/artifacts/contracts/utils/NameService.sol/NameService.dbg.json +1 -1
  165. package/artifacts/contracts/utils/ProtocolUpgrade.sol/OldMarketMaker.dbg.json +1 -1
  166. package/artifacts/contracts/utils/ProtocolUpgrade.sol/ProtocolUpgrade.dbg.json +1 -1
  167. package/artifacts/contracts/utils/ProtocolUpgrade.sol/ProtocolUpgrade.json +2 -2
  168. package/artifacts/contracts/utils/ProtocolUpgradeFuse.sol/ProtocolUpgradeFuse.dbg.json +1 -1
  169. package/artifacts/contracts/utils/ProtocolUpgradeFuse.sol/ProtocolUpgradeFuse.json +2 -2
  170. package/artifacts/contracts/utils/ProtocolUpgradeFuseRecover.sol/ProtocolUpgradeFuseRecover.dbg.json +1 -1
  171. package/artifacts/contracts/utils/ProtocolUpgradeFuseRecover.sol/ProtocolUpgradeFuseRecover.json +2 -2
  172. package/artifacts/contracts/utils/ProtocolUpgradeRecover.sol/ProtocolUpgradeRecover.dbg.json +1 -1
  173. package/artifacts/contracts/utils/ProtocolUpgradeRecover.sol/ProtocolUpgradeRecover.json +2 -2
  174. package/artifacts/contracts/utils/ProxyFactory1967.sol/ERC1967Proxy.dbg.json +1 -1
  175. package/artifacts/contracts/utils/ProxyFactory1967.sol/ProxyFactory1967.dbg.json +1 -1
  176. package/artifacts/contracts/utils/ReputationTestHelper.sol/ReputationTestHelper.dbg.json +1 -1
  177. package/artifacts/contracts/utils/ReputationTestHelper.sol/ReputationTestHelper.json +2 -2
  178. package/contracts/Interfaces.sol +0 -26
  179. package/contracts/governance/GoodDollarStaking.sol +9 -23
  180. package/contracts/ubi/UBIScheme.sol +40 -45
  181. package/contracts/utils/AdminWallet.sol +11 -42
  182. package/contracts/utils/GoodDollarMintBurnWrapper.sol +3 -13
  183. package/hardhat.config.ts +7 -21
  184. package/package.json +2 -3
  185. package/releases/deploy-settings.json +1 -36
  186. package/releases/deployment.json +53 -94
  187. package/scripts/analytics/gdinflow.ts +56 -0
  188. package/scripts/analytics/tokenInOutStats.ts +50 -0
  189. package/scripts/deployFullDAO.ts +19 -39
  190. package/scripts/multichain-deploy/{1_basicdao-deploy.ts → basicdao-deploy.ts} +52 -56
  191. package/scripts/multichain-deploy/{3_gdSavings-deploy.ts → gdSavings-deploy.ts} +76 -90
  192. package/scripts/multichain-deploy/helpers.ts +1 -0
  193. package/scripts/{upgrades → multichain-deploy}/nonubiDistribution-deploy.ts +5 -2
  194. package/scripts/test/localOldDaoDeploy.ts +3 -10
  195. package/test/helpers.ts +8 -12
  196. package/test/ubi/UBIScheme.test.ts +30 -30
  197. package/test/ubi/UBISchemeCycle.test.ts +7 -9
  198. package/test/utils/AdminWallet.test.ts +11 -33
  199. package/types/AdminWallet.ts +113 -124
  200. package/types/GoodDollarMintBurnWrapper.ts +0 -42
  201. package/types/GoodDollarStaking.ts +0 -34
  202. package/types/GoodDollarStakingMock.ts +0 -34
  203. package/types/IGoodDollar.ts +0 -54
  204. package/types/IIdentity.ts +0 -75
  205. package/types/UBIScheme.ts +40 -19
  206. package/types/factories/AaveStakingFactory__factory.ts +1 -1
  207. package/types/factories/AdminWallet__factory.ts +55 -75
  208. package/types/factories/BaseShareFieldV2__factory.ts +1 -1
  209. package/types/factories/BaseShareField__factory.ts +1 -1
  210. package/types/factories/ClaimersDistribution__factory.ts +1 -1
  211. package/types/factories/CompoundStakingFactory__factory.ts +1 -1
  212. package/types/factories/CompoundVotingMachine__factory.ts +1 -1
  213. package/types/factories/DAOContract__factory.ts +1 -1
  214. package/types/factories/DAOUpgradeableContract__factory.ts +1 -1
  215. package/types/factories/DistributionBridgeMock__factory.ts +1 -1
  216. package/types/factories/DistributionHelperTestHelper__factory.ts +1 -1
  217. package/types/factories/DistributionHelperTest__factory.ts +1 -1
  218. package/types/factories/DistributionHelper__factory.ts +1 -1
  219. package/types/factories/DonationsStaking__factory.ts +1 -1
  220. package/types/factories/ExchangeHelper__factory.ts +1 -1
  221. package/types/factories/FuseFaucet__factory.ts +1 -1
  222. package/types/factories/FuseStakingV3__factory.ts +1 -1
  223. package/types/factories/GReputation__factory.ts +1 -1
  224. package/types/factories/GoodAaveStakingV2__factory.ts +1 -1
  225. package/types/factories/GoodAaveStaking__factory.ts +1 -1
  226. package/types/factories/GoodCompoundStakingTest__factory.ts +1 -1
  227. package/types/factories/GoodCompoundStakingV2__factory.ts +1 -1
  228. package/types/factories/GoodCompoundStaking__factory.ts +1 -1
  229. package/types/factories/GoodDollarMintBurnWrapper__factory.ts +1 -15
  230. package/types/factories/GoodDollarStakingMock__factory.ts +1 -14
  231. package/types/factories/GoodDollarStaking__factory.ts +1 -14
  232. package/types/factories/GoodFundManagerTest__factory.ts +1 -1
  233. package/types/factories/GoodFundManager__factory.ts +1 -1
  234. package/types/factories/GoodMarketMaker__factory.ts +1 -1
  235. package/types/factories/GoodReserveCDai__factory.ts +1 -1
  236. package/types/factories/GovernanceStaking__factory.ts +1 -1
  237. package/types/factories/IGoodDollar__factory.ts +0 -39
  238. package/types/factories/IIdentity__factory.ts +0 -51
  239. package/types/factories/InvitesV1__factory.ts +1 -1
  240. package/types/factories/MultichainBridgeHelper__factory.ts +1 -1
  241. package/types/factories/MultichainRouterMock__factory.ts +1 -1
  242. package/types/factories/OverMintTesterRegularStake__factory.ts +1 -1
  243. package/types/factories/OverMintTester__factory.ts +1 -1
  244. package/types/factories/ProtocolUpgradeFuseRecover__factory.ts +1 -1
  245. package/types/factories/ProtocolUpgradeFuse__factory.ts +1 -1
  246. package/types/factories/ProtocolUpgradeRecover__factory.ts +1 -1
  247. package/types/factories/ProtocolUpgrade__factory.ts +1 -1
  248. package/types/factories/ReputationTestHelper__factory.ts +1 -1
  249. package/types/factories/Reputation__factory.ts +1 -1
  250. package/types/factories/StakersDistribution__factory.ts +1 -1
  251. package/types/factories/SwapHelperTest__factory.ts +1 -1
  252. package/types/factories/UBIScheme__factory.ts +21 -14
  253. package/types/factories/UniswapV2SwapHelper__factory.ts +1 -1
  254. package/types/factories/UpgradableMock2__factory.ts +1 -1
  255. package/types/factories/UpgradableMock3__factory.ts +1 -1
  256. package/types/factories/UpgradableMock4__factory.ts +1 -1
  257. package/types/factories/UpgradableMock__factory.ts +1 -1
  258. package/types/hardhat.d.ts +0 -54
  259. package/types/index.ts +0 -12
  260. package/yarn.lock +4 -4
  261. package/artifacts/abis/Faucet.min.json +0 -1
  262. package/artifacts/abis/IGovernanceStaking.min.json +0 -1
  263. package/artifacts/abis/IIdentityV2.min.json +0 -1
  264. package/artifacts/abis/IdentityV2.min.json +0 -1
  265. package/artifacts/abis/InvitesV2.min.json +0 -1
  266. package/artifacts/contracts/Interfaces.sol/IIdentityV2.dbg.json +0 -4
  267. package/artifacts/contracts/Interfaces.sol/IIdentityV2.json +0 -281
  268. package/artifacts/contracts/fuseFaucet/Faucet.sol/Faucet.dbg.json +0 -4
  269. package/artifacts/contracts/fuseFaucet/Faucet.sol/Faucet.json +0 -684
  270. package/artifacts/contracts/governance/GoodDollarStaking.sol/IGovernanceStaking.dbg.json +0 -4
  271. package/artifacts/contracts/governance/GoodDollarStaking.sol/IGovernanceStaking.json +0 -24
  272. package/artifacts/contracts/identity/IdentityV2.sol/IdentityV2.dbg.json +0 -4
  273. package/artifacts/contracts/identity/IdentityV2.sol/IdentityV2.json +0 -1000
  274. package/artifacts/contracts/invite/InvitesV2.sol/InvitesV2.dbg.json +0 -4
  275. package/artifacts/contracts/invite/InvitesV2.sol/InvitesV2.json +0 -586
  276. package/contracts/fuseFaucet/Faucet.sol +0 -245
  277. package/contracts/identity/IdentityV2.sol +0 -434
  278. package/contracts/invite/InvitesV2.sol +0 -316
  279. package/scripts/multichain-deploy/0_proxyFactory-deploy.ts +0 -45
  280. package/scripts/multichain-deploy/2_helpers-deploy.ts +0 -143
  281. package/scripts/multichain-deploy/4_ubi-deploy.ts +0 -121
  282. package/scripts/multichain-deploy/5_gov-deploy.ts +0 -123
  283. package/scripts/multichain-deploy/verifyEtherscan.ts +0 -84
  284. package/scripts/upgrades/identity-upgrade.ts +0 -153
  285. package/types/Faucet.ts +0 -1014
  286. package/types/IERC1271.ts +0 -109
  287. package/types/IGovernanceStaking.ts +0 -98
  288. package/types/IIdentityV2.ts +0 -526
  289. package/types/IdentityV2.ts +0 -1612
  290. package/types/InvitesV2.ts +0 -933
  291. package/types/factories/Faucet__factory.ts +0 -729
  292. package/types/factories/IERC1271__factory.ts +0 -47
  293. package/types/factories/IGovernanceStaking__factory.ts +0 -39
  294. package/types/factories/IIdentityV2__factory.ts +0 -293
  295. package/types/factories/IdentityV2__factory.ts +0 -1048
  296. package/types/factories/InvitesV2__factory.ts +0 -634
@@ -198,77 +198,74 @@
198
198
  "FeeFormula": "0x416B5A5e12235De6838D62Fd053e7Ce59E944426"
199
199
  },
200
200
  "dapptest": {
201
- "NameService": "0xb239f127ec7e3972e7D119A28C7133EA2Da1E48B",
202
- "GReputation": "0xB002b01194a459a8177eff2E962455F92ac389cc",
203
- "CompoundVotingMachine": "0xa5cA8E6C1071A32fe951aA5b1c9580624dA91e9d",
204
- "ClaimersDistribution": "0xFb1a81A9907deE3719C6caB552dAD568097eF990",
205
- "GovernanceStaking": "0x8ac87219a0F5639BC01b470F87BA2b26356CB2B9",
206
- "UBIScheme": "0x209C0bD29eBbc2b29cc7D14749B1C0405FBe752c",
207
- "ProtocolUpgradeFuse": "0xdF46e54aAadC1d55198A4a8b4674D7a4c927097A",
208
- "HomeBridge": "0xb932C8342106776E73E39D695F3FFC3A9624eCE0",
209
- "AdminWallet": "0xd9fEc8238711935D6c8d79Bef2B9546ef23FC046",
210
- "Identity": "0xb185E9f6531BA9877741022C92CE858cDCc5760E",
211
- "GoodDollar": "0xd04Fe2BB71024dAae0FB7Eb72983ffE2287EE6c6",
212
- "Controller": "0x2fd807D24be2c4F06Edf4351AF78c4b6984A15c1",
213
- "Avatar": "0x2E571dc3F27343Bcd3c7d69aA213543EE3551812",
214
- "FirstClaimPool": "0x3C1Cb427D20F15563aDa8C249E71db76d7183B6c",
215
- "BancorFormula": "0x0fe4223AD99dF788A6Dcad148eB4086E6389cEB6",
201
+ "NameService": "0x9059f66843F564f7870f7135fB039EB2034a23a3",
202
+ "GReputation": "0x90dE2F86DBdB2110a798326e880c83bc8779d149",
203
+ "CompoundVotingMachine": "0x2EF9f88EEB737655FF01F9b5017f1e3399726AF1",
204
+ "ClaimersDistribution": "0x035A59F228e776Cc396a8F5E1cEF989E235B0035",
205
+ "GovernanceStaking": "0xC65cCB966873969179B6b0bA53D67D14Bbf1204C",
206
+ "UBIScheme": "0xBb02F06762FBc51aD222915e6855f7482a93F9Cd",
207
+ "ProtocolUpgradeFuse": "0xBb976201B607f16dc76586dB8Ca5EF6C50C41c22",
208
+ "HomeBridge": "0x180FAF09AdD6a27554b11a131DCe6f6A3ddF4cBf",
209
+ "AdminWallet": "0xB8357F7f41125d4b24AD052c1b7288BeF5C43446",
210
+ "Identity": "0x63766F0efAa46a86E9055bB46e41ff7bc64CBEA2",
211
+ "GoodDollar": "0x94a9D2532DA2d9153336159907604A01c3E91C11",
212
+ "Controller": "0x0B57Fd12F7A95c322aD176D23765507ce09892Cb",
213
+ "Avatar": "0xf6Ee31185AC05C2b558fF2a561C600AF3E9486dd",
214
+ "FirstClaimPool": "0xC20654dB7F9483f10c91dc94924dC8F04F79bfd5",
215
+ "BancorFormula": "0x6852Adb5Fce1D73c08A9b3Aa7edE9A03437ac2fE",
216
216
  "DAI": "0x0000000000000000000000000000000000000000",
217
217
  "cDAI": "0x0000000000000000000000000000000000000000",
218
218
  "COMP": "0x0000000000000000000000000000000000000000",
219
219
  "networkId": 4447,
220
220
  "network": "dapptest",
221
- "FeeFormula": "0x193521C8934bCF3473453AF4321911E7A89E0E12",
222
- "OneTimePayments": "0x22a9B82A6c3D2BFB68F324B2e8367f346Dd6f32a",
223
- "Invites": "0x547382C0D1b23f707918D3c83A77317B71Aa8470",
224
- "FuseFaucet": "0x7C8BaafA542c57fF9B2B90612bf8aB9E86e22C09",
225
- "ProxyFactory": "0xaC47e91215fb80462139756f43438402998E4A3a",
226
- "Faucet": "0x7bEf5612eC11446539C55ffD43B625b3472Cb7df",
227
- "GoodDollarMintBurnWrapper": "0x214a2cCD52eC9c1A0e0E4719C3c5115aa297A9c5",
228
- "GoodDollarStaking": "0x29be9D4e2aEe72C6Edbd6231f276A544296cc4F9"
221
+ "FeeFormula": "0x24ef01de6baE76eE73Da210940A296F739d87952",
222
+ "OneTimePayments": "0xB10982193B39Eda3428d6AaeBbd7986f2A2Baa1a",
223
+ "Invites": "0x74156A1F9736307b7AD34e3691f3A5B54A0B3Eb8",
224
+ "FuseFaucet": "0x0Db32f0b116773fDD78C2e1b5E6609CC502e6784",
225
+ "ProxyFactory": "0xCD8a1C3ba11CF5ECfa6267617243239504a98d90"
229
226
  },
230
227
  "dapptest-mainnet": {
231
- "NameService": "0xA2c7592B4247006E41E8a0886Db287f6BA3DC049",
232
- "GReputation": "0xEce03a3bCE02D078fE865f3325fd494a6824825F",
233
- "CompoundVotingMachine": "0xb22B8BF2513009a3DE34c660e1E47ad088BE80e3",
234
- "GoodMarketMaker": "0x57397a279Ac60DE40064B1ff19bc81bBB8F9f3bD",
235
- "GoodReserveCDai": "0x142D861B73c5C844DAC197b8d39Aeb2e4A3E71b3",
236
- "ExchangeHelper": "0x0a0007808320f9370320600aeEe6C86215dd4F34",
237
- "GoodFundManager": "0xe72EF6746EB1aD74b75fe7c416569043322AaC5d",
238
- "StakersDistribution": "0xf9AF73432e5c668Cf19fc344eD6F6C43BCf96282",
239
- "ProtocolUpgrade": "0x4951A1C579039EbfCBA0BE33D2cd3A6D30b0f802",
240
- "CompoundStakingFactory": "0xb007167714e2940013EC3bb551584130B7497E22",
241
- "AaveStakingFactory": "0x6b39b761b1b64C8C095BF0e3Bb0c6a74705b4788",
242
- "ForeignBridge": "0xa4E00CB342B36eC9fDc4B50b3d527c3643D4C49e",
243
- "Contribution": "0x2A590C461Db46bca129E8dBe5C3998A8fF402e76",
228
+ "NameService": "0xe528aaCA8E7cD3ce503bB4a2dEadFD4088229E1F",
229
+ "GReputation": "0x77423AE3ce64482ef3BB601a2EA42cf30349735A",
230
+ "CompoundVotingMachine": "0x6804DB9596c651A1CA24bBB821712A8899932d76",
231
+ "GoodMarketMaker": "0xa36ADAE77B1f6f87eD60aafEF9c080c38Ca30D0F",
232
+ "GoodReserveCDai": "0x411CEb987F801CdEa5a301a0CCfa4a5Df37f3f7F",
233
+ "ExchangeHelper": "0x1333788523bEA7C7cBdd0684Bd1ee75E940fF0Eb",
234
+ "GoodFundManager": "0x50589243cb1d8eEF751f4BAb253Aabef6e434c0d",
235
+ "StakersDistribution": "0x214c3C71191AB9bD868a5f408A61c540c787662F",
236
+ "ProtocolUpgrade": "0x1Fb0D426927Dab092Def63b73E1397b3F29E7b33",
237
+ "CompoundStakingFactory": "0xe4FEed16F54b4244C174b408Ba3B5F1f19DD1E4D",
238
+ "AaveStakingFactory": "0xe7213b68DC25bf30bC7f1DE9BAead075c66979F9",
239
+ "ForeignBridge": "0x570ADc5880D778aE5935f199aa590091586CDf75",
240
+ "Contribution": "0x24F2D7c50357C7B1156Ca85945D3A901c88651cB",
244
241
  "StakingContracts": [
245
242
  [
246
- "0x0ACd281Ae4afcfD9Be74F196b3B9577DAcC2ba62",
243
+ "0xc782Ee4B0d6204Ff77471884bB95d2D2f8D60fE6",
247
244
  13888
248
245
  ]
249
246
  ],
250
- "DonationsStaking": "0x2F5557fE53429e50511f836AE65A9E89AEF57e93",
251
- "Identity": "0xA9e6Bfa2BF53dE88FEb19761D9b2eE2e821bF1Bf",
252
- "GoodDollar": "0x74C33AFBa5a1fA6473dadA1b1976b105a4ab391A",
253
- "Controller": "0xe5B6b170AB9a28C516b375465D11D77683A26550",
254
- "Avatar": "0xa5875EdD032eFbe7773084ae23C588daC243bc01",
247
+ "DonationsStaking": "0x4bfd12E943f25621d4FA368Ca7a5c0E7F6488000",
248
+ "Identity": "0xb2377aAE57F2072F52FBc38696BE573af2ce5bd9",
249
+ "GoodDollar": "0x5Bbaf48c102373B55079F941c40822C96E715d62",
250
+ "Controller": "0x67d49FAF26CA6A34D483B6BDFA45824EdA64D509",
251
+ "Avatar": "0xE9ED26a450aC15ea88b5801E5940B58F2f778b03",
255
252
  "FirstClaimPool": "0xe3963EF7CC3044B64842d0AAe7F2Bf1543D341Ec",
256
- "BancorFormula": "0x742489F22807ebB4C36ca6cD95c3e1C044B7B6c8",
257
- "DAI": "0x33E45b187da34826aBCEDA1039231Be46f1b05Af",
258
- "cDAI": "0xA21DDc1f17dF41589BC6A5209292AED2dF61Cc94",
259
- "COMP": "0x0c626FC4A447b01554518550e30600136864640B",
253
+ "BancorFormula": "0x30474Ce2DE03045B8D0AE76F8a30DbfC8f000cea",
254
+ "DAI": "0xadf7b0f46EB35C748438F3e215F064E01cc7f5dF",
255
+ "cDAI": "0x0037272a7048132b10Dd8970AC964Bab2fDB3F62",
256
+ "COMP": "0xE8E9B139c6477D4EaD599bE5f2bB9335533D14f7",
260
257
  "networkId": 4447,
261
258
  "network": "dapptest-mainnet",
262
- "FeeFormula": "0x3fdc08D815cc4ED3B7F69Ee246716f2C8bCD6b07",
259
+ "FeeFormula": "0x8B87065fdfe4A130108E50f74ae7F85cD20A5967",
263
260
  "ProxyFactory": "0xF47e3B0A1952A81F1afc41172762CB7CE8700133",
264
- "UniswapV2SwapHelper": "0x2e8880cAdC08E9B438c6052F5ce3869FBd6cE513",
265
- "ETHUsdOracle": "0x2F54D1563963fC04770E85AF819c89Dc807f6a06",
266
- "DAIEthOracle": "0x158d291D8b47F056751cfF47d1eEcd19FDF9B6f8",
267
- "DAIUsdOracle": "0x70E5370b8981Abc6e14C91F4AcE823954EFC8eA3",
268
- "COMPUsdOracle": "0x9338CA7d556248055f5751d85cDA7aD6eF254433",
269
- "USDCUsdOracle": "0x4000F8820522AC96C4221b299876e3e53bCc8525",
270
- "AAVEUsdOracle": "0x9c65f85425c619A6cB6D29fF8d57ef696323d188",
271
- "GasPriceOracle": "0x7Cf4be31f546c04787886358b9486ca3d62B9acf"
261
+ "UniswapV2SwapHelper": "0xB4059a6808Af368A69d12FBbD104Bb6B9c37e629",
262
+ "ETHUsdOracle": "0x79613D7834Ad35EE8dC3F9298030eaADc2A8c250",
263
+ "DAIEthOracle": "0x6397866132887b206EEA19f910730443E71a8CfB",
264
+ "DAIUsdOracle": "0xC2E1FC63cE06C279c5De18D7119C7cA123B42C1c",
265
+ "COMPUsdOracle": "0x9301981F27950e6546033EADD046C86754263f2D",
266
+ "USDCUsdOracle": "0x89Be7D874a17cD0295B2d86436a920593b5f4480",
267
+ "AAVEUsdOracle": "0xDFF3455E08AB33B1599D1c5B5A1D65de63d3FCd0",
268
+ "GasPriceOracle": "0xFAE6fA2097792Edfd7429A282F21ec2D955279D9"
272
269
  },
273
270
  "staging-mainnet": {
274
271
  "NameService": "0xC87FAb8A8CDD346079ca6177e47408Ba18066104",
@@ -336,7 +333,7 @@
336
333
  "cDAI": "0x0000000000000000000000000000000000000000",
337
334
  "COMP": "0x0000000000000000000000000000000000000000",
338
335
  "GoodDollarMintBurnWrapper": "0x08CaFF2331040c9998a91B50eEee85c4AE953ece",
339
- "GoodDollarStaking": "0xff64BD8b7d730737B39AE831abbc7Afbee13BD8b"
336
+ "GoodDollarStaking": "0x66846F27F86f02b079e9176C7aCc10Cc32d839b2"
340
337
  },
341
338
  "test": {
342
339
  "ProxyFactory": "0x36dE29DB57062A583436Ae071e141404dFE2311C",
@@ -555,7 +552,6 @@
555
552
  "production-celo": {
556
553
  "ProxyFactory": "0x99C22e78A579e2176311c736C4c9F0b0D5A47806",
557
554
  "GoodDollar": "0xf2283840cE37DAe0a06B40a9A80603977f36fA3F",
558
- "FeeFormula": "0xb25de92ce16127ebf6659a7a30a9f395c7bbf182",
559
555
  "Avatar": "0xCD5e8a81B1e02c1837A674f87dF327C14f4e5748",
560
556
  "Controller": "0x3D0bacBdC06A28971855275D511e6249bE67112d",
561
557
  "Identity": "0x96B81f82A29e78C5ba9E2034Ce8490fd641a24eb",
@@ -566,42 +562,5 @@
566
562
  "networkId": 42220,
567
563
  "GoodDollarMintBurnWrapper": "0x5566b6E4962BA83e05a426Ad89031ec18e9CadD3",
568
564
  "MultichainRouter": "0xf27Ee99622C3C9b264583dACB2cCE056e194494f"
569
- },
570
- "development-celo": {
571
- "ProxyFactory": "0xA441cd89b0964B51d23201d65E037DA7aF8F74E9",
572
- "GoodDollar": "0xAB89A70d1Af04ED8badf915Ba1f5b28E9F322624",
573
- "Avatar": "0xE0e3BFb1A1850bdFe36ED1563CC2abB6A8B6De78",
574
- "Controller": "0x6717A1948328C8eCCb5C933Fae90e0631C2486fE",
575
- "Identity": "0xec97ee6d70C626044224998192B96fEF05949De1",
576
- "NameService": "0x266E5a0931E52229CC241376bC701Ab6199Aec4D",
577
- "GReputation": "0x6614823763EAd52aCc4952b9634624439B738683",
578
- "AdminWallet": "0xb7b543bfd9e2E0AD1d0aA68f56c883Dd377E3D24",
579
- "Faucet": "0x256AFcfEcB5C7f62CE46b54492Bb8ac38163672f",
580
- "Invites": "0xdC8F0da3f29A3C419a8EEf36665ba2a3EF737B8f",
581
- "GoodDollarMintBurnWrapper": "0x3fa553a5a044D5c4f5C70878148568410305f953",
582
- "GoodDollarStaking": "0xCfa54Ad5a00b0AAd3873B4E269Feb331e6293682",
583
- "UBIScheme": "0x2d42e6220af2485d1e6E5B4d3661A74671AA9a79",
584
- "ClaimersDistribution": "0x80018e6Dd79f6B892Fca6b592746136a3aa5ef6d",
585
- "CompoundVotingMachine": "0x00e44d746F3931cAB775099F4C6451f893BB9378"
586
- },
587
- "staging-celo": {
588
- "ProxyFactory": "0x7e8292481EA8EbEb49e486B7e99c00C50fBa2689",
589
- "GoodDollar": "0x33265D74abd5ae87cA02A4Fb0C30B7405C8b0682",
590
- "Avatar": "0x2FD18f9de3F581Ca492A485D2b32E361EeAE2e63",
591
- "Controller": "0xa229BdD05436362484b10586dAa79a316e3080C5",
592
- "Identity": "0xc82d50c667F389906aCA4B72D577fA56Bf7F8910",
593
- "NameService": "0x8d0b621796445454180e7DD25f96B1782848338B",
594
- "GReputation": "0x759a03326df90b740f6b8b6D31e12a3F95D64C28",
595
- "FeeFormula": "0xcf08461E5bAd9C508D482329Eae0f1b4c4D4c489",
596
- "DAOCreator": "0xA614d2641c21FEa4c73A2D6e71C6ad341349808B",
597
- "AddFounders": "0x558fA360988601601ac410678963Bf785156076D",
598
- "AdminWallet": "0x822590F8baf606b1e18dC1FA8Ca39D5C66C20981",
599
- "Faucet": "0x9803B5811260Bfd1F5b0b0c9eC9aD4bF96D7ea94",
600
- "Invites": "0x4E094c2e35e57c90667AbD6D8FE25CE63F4ae00B",
601
- "GoodDollarMintBurnWrapper": "0x156Fd9563973EFB94a297B76CFac32CdC92a8d1A",
602
- "GoodDollarStaking": "0xDcB36664440937E4f11002C2471a456AEeD9b7DC",
603
- "UBIScheme": "0x04f2Cf8865e2ddfEf0047FdfA7A1b05ade614288",
604
- "ClaimersDistribution": "0x83186CE77ef296BA6561096447938AE05D1F026e",
605
- "CompoundVotingMachine": "0xEdde78b850a08B6b8AB3E84f61cD6dC70Cc7f156"
606
565
  }
607
566
  }
@@ -0,0 +1,56 @@
1
+ import { maxBy, range, sortBy, uniq, sum, flatten, countBy } from "lodash";
2
+ import fetch from "node-fetch";
3
+ import PromisePool from "async-promise-pool";
4
+ import fs from "fs";
5
+ import { ethers } from "hardhat";
6
+ import { keccak256 } from "web3-utils";
7
+
8
+ const main = async () => {
9
+ const uniques = {};
10
+ let addresses = [];
11
+ let token = "0x495d133B938596C9984d462F007B676bDc57eCEC";
12
+ let startblock = 18710000;
13
+ let stepSize = 5000;
14
+ for (const address of addresses) {
15
+ let result = [];
16
+ let curPage = 1;
17
+ let maxResult;
18
+ let reachedStartBlock = false;
19
+ do {
20
+ const pages = range(curPage, curPage + 5, 1);
21
+ curPage += 5;
22
+ const ps = pages.map(p => {
23
+ const url = `https://explorer.fuse.io/api?module=account&action=tokentx&address=${address}&contractaddress=${token}&page=${p}&offset=${stepSize}`;
24
+ console.log({ url });
25
+ return fetch(url)
26
+ .then(_ => _.json())
27
+ .then(_ => _.result);
28
+ });
29
+
30
+ const results = await Promise.all(ps);
31
+ result = result.concat(...results);
32
+ maxResult = maxBy(results, "length");
33
+ reachedStartBlock = result.find(_ => Number(_.blockNumber) <= startblock);
34
+ maxResult && console.log(maxResult.length, result.length);
35
+ } while (maxResult.length === stepSize && !reachedStartBlock);
36
+ const incomingTxs = result
37
+ .filter(
38
+ _ =>
39
+ [
40
+ "0xca2f09c3ccfd7ad5cb9276918bd1868f2b922ea0",
41
+ "0xd253a5203817225e9768c05e5996d642fb96ba86"
42
+ ].includes(_.from) === false
43
+ )
44
+ .filter(_ => _.to === address.toLowerCase());
45
+ const totalEarned = sum(incomingTxs.map(_ => Number(_.value))) / 100;
46
+ const senders = uniq(incomingTxs.map(_ => _.from));
47
+ console.log({ address, totalEarned, uniq: senders.length, senders });
48
+ uniques[address] = senders;
49
+ }
50
+ const intersection = countBy(flatten(Object.values(uniques)), _ => _);
51
+ console.log(sortBy(Object.entries(intersection), _ => _[1]).reverse());
52
+ console.log(JSON.stringify(Object.keys(intersection).map(_ => keccak256(_))));
53
+ console.log(JSON.stringify(addresses.map(_ => keccak256(_))));
54
+ };
55
+
56
+ main().catch(e => console.log(e));
@@ -0,0 +1,50 @@
1
+ import { maxBy, range, sortBy } from "lodash";
2
+ import fetch from "node-fetch";
3
+ import PromisePool from "async-promise-pool";
4
+ import fs from "fs";
5
+ import { ethers } from "hardhat";
6
+
7
+ const main = async () => {
8
+ let address = "0xCa2F09c3ccFD7aD5cB9276918Bd1868f2b922ea0";
9
+ let token = "0x495d133B938596C9984d462F007B676bDc57eCEC";
10
+ let startblock = 14710000;
11
+ let stepSize = 5000;
12
+ let result = [];
13
+ let incoming = 0;
14
+ let outgoing = 0;
15
+ let ins = [];
16
+ let curPage = 1;
17
+ let maxResult;
18
+ let reachedStartBlock = false;
19
+ do {
20
+ const pages = range(curPage, curPage + 5, 1);
21
+ curPage += 5;
22
+ const ps = pages.map(p => {
23
+ const url = `https://explorer.fuse.io/api?module=account&action=tokentx&address=${address}&contractaddress=${token}&page=${p}&offset=${stepSize}`;
24
+ console.log({ url });
25
+ return fetch(url)
26
+ .then(_ => _.json())
27
+ .then(_ => _.result);
28
+ });
29
+
30
+ const results = await Promise.all(ps);
31
+ result = result.concat(...results);
32
+ maxResult = maxBy(results, "length");
33
+ reachedStartBlock = result.find(_ => Number(_.blockNumber) <= startblock);
34
+ maxResult && console.log(maxResult.length, result.length);
35
+ } while (maxResult.length === stepSize && !reachedStartBlock);
36
+ result.forEach(r => {
37
+ if (r.from === address.toLowerCase()) outgoing += Number(r.value);
38
+ else {
39
+ incoming += Number(r.value);
40
+ ins.push(r);
41
+ }
42
+ });
43
+ fs.writeFileSync(
44
+ "tokenInOut.json",
45
+ JSON.stringify({ incoming, outgoing, ins })
46
+ );
47
+
48
+ };
49
+
50
+ main().catch(e => console.log(e));
@@ -6,11 +6,13 @@ import { network, ethers, upgrades } from "hardhat";
6
6
  import { Contract } from "ethers";
7
7
  import { range } from "lodash";
8
8
  import DAOCreatorABI from "@gooddollar/goodcontracts/build/contracts/DaoCreatorGoodDollar.json";
9
+ import IdentityABI from "@gooddollar/goodcontracts/build/contracts/Identity.json";
9
10
  import FeeFormulaABI from "@gooddollar/goodcontracts/build/contracts/FeeFormula.json";
10
11
  import AddFoundersABI from "@gooddollar/goodcontracts/build/contracts/AddFoundersGoodDollar.json";
11
12
  import ContributionCalculation from "@gooddollar/goodcontracts/stakingModel/build/contracts/ContributionCalculation.json";
12
13
  import FirstClaimPool from "@gooddollar/goodcontracts/stakingModel/build/contracts/FirstClaimPool.json";
13
14
  import BridgeMock from "@gooddollar/goodcontracts/stakingModel/build/contracts/BridgeMock.json";
15
+ import AdminWalletABI from "@gooddollar/goodcontracts/build/contracts/AdminWallet.json";
14
16
  import OTPABI from "@gooddollar/goodcontracts/build/contracts/OneTimePayments.json";
15
17
  import HomeBridgeABI from "@gooddollar/goodcontracts/build/contracts/DeployHomeBridge.json";
16
18
  import ForeignBridgeABI from "@gooddollar/goodcontracts/build/contracts/DeployForeignBridge.json";
@@ -63,14 +65,11 @@ export const createDAO = async () => {
63
65
  root
64
66
  );
65
67
 
66
- // const IdentityFactory = new ethers.ContractFactory(
67
- // IdentityABI.abi,
68
- // IdentityABI.bytecode,
69
- // root
70
- // );
71
-
72
- const IdentityFactory = await ethers.getContractFactory("IdentityV2");
73
-
68
+ const IdentityFactory = new ethers.ContractFactory(
69
+ IdentityABI.abi,
70
+ IdentityABI.bytecode,
71
+ root
72
+ );
74
73
  const FeeFormulaFactory = new ethers.ContractFactory(
75
74
  FeeFormulaABI.abi,
76
75
  FeeFormulaABI.bytecode,
@@ -96,15 +95,9 @@ export const createDAO = async () => {
96
95
  // "0x6F1BAbfF5E119d61F0c6d8653d84E8B284B87091"
97
96
  // );
98
97
 
99
- // const Identity = (await IdentityFactory.deploy().then(
100
- // printDeploy
101
- // )) as Contract;
102
-
103
- const Identity = await upgrades.deployProxy(
104
- IdentityFactory,
105
- [root.address, ethers.constants.AddressZero],
106
- { kind: "uups" }
107
- );
98
+ const Identity = (await IdentityFactory.deploy().then(
99
+ printDeploy
100
+ )) as Contract;
108
101
  // const Identity = await ethers.getContractAt(
109
102
  // IdentityABI.abi,
110
103
  // release.Identity
@@ -118,8 +111,8 @@ export const createDAO = async () => {
118
111
  printDeploy
119
112
  )) as Contract;
120
113
 
121
- // await Identity.setAuthenticationPeriod(365).then(printDeploy);
122
- // console.log("setAuthPeriod");
114
+ await Identity.setAuthenticationPeriod(365).then(printDeploy);
115
+ console.log("setAuthPeriod");
123
116
  await daoCreator
124
117
  .forgeOrg(
125
118
  "GoodDollar",
@@ -151,7 +144,7 @@ export const createDAO = async () => {
151
144
  // root
152
145
  // );
153
146
 
154
- // await Identity.setAvatar(Avatar.address).then(printDeploy);
147
+ await Identity.setAvatar(Avatar.address).then(printDeploy);
155
148
 
156
149
  console.log("Done deploying DAO, setting schemes permissions");
157
150
 
@@ -208,7 +201,9 @@ export const createDAO = async () => {
208
201
  gd
209
202
  );
210
203
  schemes.push(sidechain.OneTimePayments.address);
204
+ const adminWallet = await deployAdminWallet(Identity.address);
211
205
  Object.entries(sidechain).forEach(([k, v]) => (release[k] = v.address));
206
+ release["AdminWallet"] = adminWallet.address;
212
207
  }
213
208
 
214
209
  await releaser(release, network.name);
@@ -247,17 +242,7 @@ export const createDAO = async () => {
247
242
  UpgradeScheme: ethers.constants.AddressZero
248
243
  };
249
244
 
250
- console.log("deploying v2...");
251
245
  const v2 = await deployV2(network.name, false, olddao);
252
- console.log("deploying adminWallet...");
253
- const adminWallet = await deployAdminWallet(Identity.address, v2.NameService);
254
- console.log("setting up identity:", {
255
- ns: v2.NameService,
256
- identity: Identity.address
257
- });
258
- await Identity.initDAO(v2.NameService);
259
- release["AdminWallet"] = adminWallet.address;
260
-
261
246
  release = { ...v2, ...release };
262
247
  await releaser(release, network.name);
263
248
  // await pressAnyKey();
@@ -344,7 +329,6 @@ const deployBridge = async (Avatar, gd, setSchemes, isMainnet) => {
344
329
  };
345
330
 
346
331
  const deployMainnet = async (Avatar, Identity) => {
347
- console.log("deploying mainnet...");
348
332
  const [root] = await ethers.getSigners();
349
333
 
350
334
  const cdaiFactory = await ethers.getContractFactory("cDAIMock");
@@ -431,7 +415,6 @@ export const deploySidechain = async (
431
415
  identity,
432
416
  gd
433
417
  ) => {
434
- console.log("deploying sidechain...");
435
418
  const root = (await ethers.getSigners())[0];
436
419
  const fcFactory = new ethers.ContractFactory(
437
420
  FirstClaimPool.abi,
@@ -519,7 +502,7 @@ export const deploySidechain = async (
519
502
  };
520
503
  };
521
504
 
522
- const deployAdminWallet = async (identity, ns) => {
505
+ const deployAdminWallet = async identity => {
523
506
  const root = (await ethers.getSigners())[0];
524
507
  const hdNode = ethers.utils.HDNode.fromMnemonic(process.env.ADMIN_MNEMONIC);
525
508
  const admins = range(0, 50).map(i =>
@@ -529,9 +512,8 @@ const deployAdminWallet = async (identity, ns) => {
529
512
  const adminWallet = (await upgrades
530
513
  .deployProxy(await ethers.getContractFactory("AdminWallet"), [
531
514
  admins.slice(0, 20).map(_ => _.address),
532
- ns,
533
515
  root.address,
534
- 1e9
516
+ identity
535
517
  ])
536
518
  .then(printDeploy)) as Contract;
537
519
 
@@ -548,10 +530,8 @@ const deployAdminWallet = async (identity, ns) => {
548
530
  // )
549
531
  // .then(printDeploy)) as Contract;
550
532
 
551
- const id = await ethers.getContractAt("IdentityV2", identity);
552
- await id
553
- .grantRole(await id.IDENTITY_ADMIN_ROLE(), adminWallet.address)
554
- .then(printDeploy);
533
+ const id = await ethers.getContractAt("IIdentity", identity);
534
+ await id.addIdentityAdmin(adminWallet.address).then(printDeploy);
555
535
  await root
556
536
  .sendTransaction({
557
537
  to: adminWallet.address,
@@ -6,19 +6,21 @@
6
6
  */
7
7
  import { network, ethers, upgrades, run } from "hardhat";
8
8
  import { Contract } from "ethers";
9
- import { defaultsDeep } from "lodash";
10
9
  // import DAOCreatorABI from "@gooddollar/goodcontracts/build/contracts/DaoCreatorGoodDollar.json";
11
10
  import DAOCreatorABI from "../../../GoodBootstrap/packages/contracts/build/contracts/DaoCreatorGoodDollarWithRep.json";
12
11
  // import IdentityABI from "@gooddollar/goodcontracts/build/contracts/Identity.json";
12
+ import IdentityABI from "../../../GoodBootstrap/packages/contracts/build/contracts/IdentityWithOwner.json";
13
13
  import FeeFormulaABI from "@gooddollar/goodcontracts/build/contracts/FeeFormula.json";
14
- import AddFoundersABI from "@gooddollar/goodcontracts/build/contracts/AddFoundersGoodDollarWithRep.json";
14
+ import AddFoundersABI from "@gooddollar/goodcontracts/contracts/build/contracts/AddFoundersGoodDollarWithRep.json";
15
15
 
16
16
  import { deployDeterministic } from "./helpers";
17
- import releaser from "../releaser";
17
+ import releaser from "../../scripts/releaser";
18
18
  import ProtocolSettings from "../../releases/deploy-settings.json";
19
19
  import dao from "../../releases/deployment.json";
20
20
  import { TransactionResponse } from "@ethersproject/providers";
21
21
 
22
+ const { name } = network;
23
+
22
24
  const printDeploy = async (
23
25
  c: Contract | TransactionResponse
24
26
  ): Promise<Contract | TransactionResponse> => {
@@ -34,30 +36,22 @@ const printDeploy = async (
34
36
  };
35
37
 
36
38
  export const createDAO = async () => {
37
- let protocolSettings = defaultsDeep(
38
- {},
39
- ProtocolSettings[network.name],
40
- ProtocolSettings["default"]
41
- );
42
-
43
- let release: { [key: string]: any } = dao[network.name];
39
+ const fusedao = dao[network.name.split("-")[0]];
40
+ const protocolSettings = ProtocolSettings["production"];
41
+ let release: { [key: string]: any } = {};
44
42
 
45
- let [root] = await ethers.getSigners();
46
- const daoOwner = protocolSettings.guardiansSafe || root.address;
47
- if (!daoOwner) throw new Error("missing DAO_OWNER owner in env");
43
+ let [root, ...signers] = await ethers.getSigners();
48
44
  //generic call permissions
49
45
  let schemeMock = root;
50
46
  const isMainnet = network.name.includes("main");
51
47
 
52
48
  console.log("got signers:", {
53
49
  network,
54
- daoOwner,
55
50
  root: root.address,
56
51
  schemeMock: schemeMock.address,
57
52
  balance: await ethers.provider
58
53
  .getBalance(root.address)
59
- .then(_ => _.toString()),
60
- release
54
+ .then(_ => _.toString())
61
55
  });
62
56
 
63
57
  if (network.name.includes("production")) {
@@ -77,6 +71,11 @@ export const createDAO = async () => {
77
71
  root
78
72
  );
79
73
 
74
+ const IdentityFactory = new ethers.ContractFactory(
75
+ IdentityABI.abi,
76
+ IdentityABI.bytecode,
77
+ root
78
+ );
80
79
  const FeeFormulaFactory = new ethers.ContractFactory(
81
80
  FeeFormulaABI.abi,
82
81
  FeeFormulaABI.bytecode,
@@ -91,27 +90,24 @@ export const createDAO = async () => {
91
90
  const AddFounders = (await AddFoundersFactory.deploy().then(
92
91
  printDeploy
93
92
  )) as Contract;
93
+ // const AddFounders = await ethers.getContractAt(
94
+ // AddFoundersABI.abi,
95
+ // "0x6F1BAbfF5E119d61F0c6d8653d84E8B284B87091"
96
+ // );
94
97
 
95
- const proxyFactory = await ethers.getContractAt(
96
- "ProxyFactory1967",
97
- release.ProxyFactory
98
- );
99
- const salt = ethers.BigNumber.from(
100
- ethers.utils.keccak256(ethers.utils.toUtf8Bytes("NameService"))
101
- );
102
- const nameserviceFutureAddress = await proxyFactory[
103
- "getDeploymentAddress(uint256,address)"
104
- ](salt, root.address);
105
- console.log("deploying identity", { nameserviceFutureAddress });
106
98
  const Identity = (await deployDeterministic(
107
99
  {
108
- name: "IdentityV2",
109
- salt: "Identity",
110
- isUpgradeable: true
100
+ name: "Identity",
101
+ factory: IdentityFactory
111
102
  },
112
- [daoOwner, ethers.constants.AddressZero]
103
+ [root.address]
113
104
  ).then(printDeploy)) as Contract;
114
105
 
106
+ // const Identity = await ethers.getContractAt(
107
+ // IdentityABI.abi,
108
+ // release.Identity
109
+ // );
110
+
115
111
  const daoCreator = await DAOCreatorFactory.deploy(AddFounders.address);
116
112
 
117
113
  const FeeFormula = (await deployDeterministic(
@@ -133,8 +129,8 @@ export const createDAO = async () => {
133
129
  ]
134
130
  ).then(printDeploy)) as Contract;
135
131
 
136
- // console.log("setting identity auth period");
137
- // await Identity.setAuthenticationPeriod(365).then(printDeploy);
132
+ console.log("setting identity auth period");
133
+ await Identity.setAuthenticationPeriod(365).then(printDeploy);
138
134
 
139
135
  console.log("creating dao");
140
136
  await daoCreator
@@ -160,9 +156,20 @@ export const createDAO = async () => {
160
156
  root
161
157
  );
162
158
 
159
+ // const Avatar = new ethers.Contract(
160
+ // release.Avatar,
161
+ // [
162
+ // "function owner() view returns (address)",
163
+ // "function nativeToken() view returns (address)"
164
+ // ],
165
+ // root
166
+ // );
167
+
168
+ await Identity.setAvatar(Avatar.address).then(printDeploy);
169
+
163
170
  console.log("Done deploying DAO, setting schemes permissions");
164
171
 
165
- let schemes = [daoOwner, Identity.address];
172
+ let schemes = [process.env.DAO_OWNER, Identity.address];
166
173
 
167
174
  const gd = await Avatar.nativeToken();
168
175
 
@@ -184,30 +191,24 @@ export const createDAO = async () => {
184
191
  { name: "NameService", isUpgradeable: true },
185
192
  [
186
193
  controller,
187
- ["CONTROLLER", "AVATAR", "IDENTITY", "GOODDOLLAR", "REPUTATION"].map(_ =>
194
+ ["CONTROLLER", "AVATAR", "IDENTITY", "GOODDOLLAR"].map(_ =>
188
195
  ethers.utils.keccak256(ethers.utils.toUtf8Bytes(_))
189
196
  ),
190
- [controller, Avatar.address, Identity.address, gd, GReputation.address]
197
+ [controller, Avatar.address, Identity.address, gd]
191
198
  ]
192
199
  );
193
200
 
194
- console.log("GRep nameservice:");
195
201
  await (await GReputation.updateDAO(NameService.address)).wait();
196
- console.log("Identity nameservice:");
197
-
198
- await Identity.initDAO(NameService.address).then(printDeploy);
199
-
202
+ console.log("GRep nameservice:");
200
203
  //verifications
201
204
  const Controller = await ethers.getContractAt("Controller", controller);
202
205
  const GoodDollar = await ethers.getContractAt("IGoodDollar", gd);
203
206
 
204
- if (network.name.includes("production")) {
205
- console.log("renouncing minting rights on production env");
206
- await GoodDollar.renounceMinter().then(printDeploy);
207
- }
207
+ await GoodDollar.renounceMinter().then(printDeploy);
208
+ await Identity.transferOwnership(process.env.DAO_OWNER).then(printDeploy);
208
209
 
209
210
  const daoOwnerDaoPermissions = await Controller.getSchemePermissions(
210
- daoOwner,
211
+ process.env.DAO_OWNER,
211
212
  Avatar.address
212
213
  );
213
214
 
@@ -222,10 +223,8 @@ export const createDAO = async () => {
222
223
  GReputation.MINTER_ROLE(),
223
224
  Avatar.address
224
225
  );
225
- const daoOwnerIsIdentityOwner = await Identity.hasRole(
226
- ethers.constants.HashZero,
227
- daoOwner
228
- );
226
+ const daoOwnerIsIdentityOwner =
227
+ process.env.DAO_OWNER === (await Identity.owner());
229
228
 
230
229
  //try to modify DAO -> should not succeed
231
230
  await (await GReputation.updateDAO(ethers.constants.AddressZero)).wait();
@@ -244,21 +243,18 @@ export const createDAO = async () => {
244
243
  });
245
244
 
246
245
  release = {
247
- // ProxyFactory: "0x99C22e78A579e2176311c736C4c9F0b0D5A47806",
246
+ ProxyFactory: "0x99C22e78A579e2176311c736C4c9F0b0D5A47806",
248
247
  GoodDollar: gd,
249
248
  Avatar: Avatar.address,
250
249
  Controller: controller,
251
250
  Identity: Identity.address,
252
251
  NameService: NameService.address,
253
- GReputation: GReputation.address,
254
- FeeFormula: FeeFormula.address,
255
- DAOCreator: daoCreator.address,
256
- AddFounders: AddFounders.address
252
+ GReputation: GReputation.address
257
253
  };
258
254
  await releaser(release, network.name, "deployment", false);
259
255
  };
260
256
 
261
- export const main = async () => {
257
+ export const main = async (networkName = name) => {
262
258
  await createDAO().catch(console.log);
263
259
  };
264
260
  main();