@gooddollar/goodprotocol 1.0.28 → 1.0.29-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (352) hide show
  1. package/artifacts/abis/BulkProof.min.json +1 -1
  2. package/artifacts/abis/DistributionBridgeMock.min.json +1 -0
  3. package/artifacts/abis/DistributionHelper.min.json +1 -0
  4. package/artifacts/abis/DistributionHelperTest.min.json +1 -0
  5. package/artifacts/abis/DistributionHelperTestHelper.min.json +1 -0
  6. package/artifacts/abis/ERC20.min.json +1 -1
  7. package/artifacts/abis/GoodDollarMintBurnWrapper.min.json +1 -0
  8. package/artifacts/abis/GoodDollarStaking.min.json +1 -0
  9. package/artifacts/abis/GoodDollarStakingMock.min.json +1 -0
  10. package/artifacts/abis/GoodReserveCDai.min.json +1 -1
  11. package/artifacts/abis/IERC2917.min.json +1 -1
  12. package/artifacts/abis/IGoodDollarStakingTest.min.json +1 -0
  13. package/artifacts/abis/IMultichainRouter.min.json +1 -0
  14. package/artifacts/abis/IRouter.min.json +1 -0
  15. package/artifacts/abis/IWrapper.min.json +1 -0
  16. package/artifacts/abis/Math64x64.min.json +1 -0
  17. package/artifacts/abis/MultichainBridgeHelper.min.json +1 -0
  18. package/artifacts/abis/MultichainRouterMock.min.json +1 -0
  19. package/artifacts/abis/OverMintTester.min.json +1 -1
  20. package/artifacts/abis/PausableControl.min.json +1 -0
  21. package/artifacts/abis/RewardsMinter.min.json +1 -0
  22. package/artifacts/abis/StakingMockFixedAPY.min.json +1 -0
  23. package/artifacts/abis/StakingRewardsFixedAPY.min.json +1 -0
  24. package/artifacts/abis/TokenOperation.min.json +1 -0
  25. package/artifacts/abis/cERC20.min.json +1 -1
  26. package/artifacts/contracts/DAOStackInterfaces.sol/Avatar.dbg.json +1 -1
  27. package/artifacts/contracts/DAOStackInterfaces.sol/Controller.dbg.json +1 -1
  28. package/artifacts/contracts/DAOStackInterfaces.sol/GlobalConstraintInterface.dbg.json +1 -1
  29. package/artifacts/contracts/DAOStackInterfaces.sol/IntVoteInterface.dbg.json +1 -1
  30. package/artifacts/contracts/DAOStackInterfaces.sol/ReputationInterface.dbg.json +1 -1
  31. package/artifacts/contracts/DAOStackInterfaces.sol/SchemeRegistrar.dbg.json +1 -1
  32. package/artifacts/contracts/Interfaces.sol/AggregatorV3Interface.dbg.json +1 -1
  33. package/artifacts/contracts/Interfaces.sol/ERC20.dbg.json +1 -1
  34. package/artifacts/contracts/Interfaces.sol/ERC20.json +13 -0
  35. package/artifacts/contracts/Interfaces.sol/IAaveIncentivesController.dbg.json +1 -1
  36. package/artifacts/contracts/Interfaces.sol/IAdminWallet.dbg.json +1 -1
  37. package/artifacts/contracts/Interfaces.sol/IDonationStaking.dbg.json +1 -1
  38. package/artifacts/contracts/Interfaces.sol/IERC2917.dbg.json +1 -1
  39. package/artifacts/contracts/Interfaces.sol/IERC2917.json +13 -0
  40. package/artifacts/contracts/Interfaces.sol/IFirstClaimPool.dbg.json +1 -1
  41. package/artifacts/contracts/Interfaces.sol/IGoodDollar.dbg.json +1 -1
  42. package/artifacts/contracts/Interfaces.sol/IGoodStaking.dbg.json +1 -1
  43. package/artifacts/contracts/Interfaces.sol/IHasRouter.dbg.json +1 -1
  44. package/artifacts/contracts/Interfaces.sol/IIdentity.dbg.json +1 -1
  45. package/artifacts/contracts/Interfaces.sol/ILendingPool.dbg.json +1 -1
  46. package/artifacts/contracts/Interfaces.sol/IMultichainRouter.dbg.json +4 -0
  47. package/artifacts/contracts/Interfaces.sol/IMultichainRouter.json +67 -0
  48. package/artifacts/contracts/Interfaces.sol/INameService.dbg.json +1 -1
  49. package/artifacts/contracts/Interfaces.sol/IUBIScheme.dbg.json +1 -1
  50. package/artifacts/contracts/Interfaces.sol/ProxyAdmin.dbg.json +1 -1
  51. package/artifacts/contracts/Interfaces.sol/Reserve.dbg.json +1 -1
  52. package/artifacts/contracts/Interfaces.sol/Staking.dbg.json +1 -1
  53. package/artifacts/contracts/Interfaces.sol/Uniswap.dbg.json +1 -1
  54. package/artifacts/contracts/Interfaces.sol/UniswapFactory.dbg.json +1 -1
  55. package/artifacts/contracts/Interfaces.sol/UniswapPair.dbg.json +1 -1
  56. package/artifacts/contracts/Interfaces.sol/cERC20.dbg.json +1 -1
  57. package/artifacts/contracts/Interfaces.sol/cERC20.json +13 -0
  58. package/artifacts/contracts/fuseFaucet/FuseFaucet.sol/FuseFaucet.dbg.json +1 -1
  59. package/artifacts/contracts/fuseFaucet/FuseFaucet.sol/FuseFaucet.json +2 -2
  60. package/artifacts/contracts/governance/ClaimersDistribution.sol/ClaimersDistribution.dbg.json +1 -1
  61. package/artifacts/contracts/governance/ClaimersDistribution.sol/ClaimersDistribution.json +2 -2
  62. package/artifacts/contracts/governance/CompoundVotingMachine.sol/CompoundVotingMachine.dbg.json +1 -1
  63. package/artifacts/contracts/governance/CompoundVotingMachine.sol/CompoundVotingMachine.json +2 -2
  64. package/artifacts/contracts/governance/GReputation.sol/GReputation.dbg.json +1 -1
  65. package/artifacts/contracts/governance/GReputation.sol/GReputation.json +2 -2
  66. package/artifacts/contracts/governance/GoodDollarStaking.sol/GoodDollarStaking.dbg.json +4 -0
  67. package/artifacts/contracts/governance/GoodDollarStaking.sol/GoodDollarStaking.json +1322 -0
  68. package/artifacts/contracts/governance/GoodDollarStaking.sol/RewardsMinter.dbg.json +4 -0
  69. package/artifacts/contracts/governance/GoodDollarStaking.sol/RewardsMinter.json +35 -0
  70. package/artifacts/contracts/governance/GovernanceStaking.sol/GovernanceStaking.dbg.json +1 -1
  71. package/artifacts/contracts/governance/GovernanceStaking.sol/GovernanceStaking.json +2 -2
  72. package/artifacts/contracts/governance/MultiBaseGovernanceShareField.sol/MultiBaseGovernanceShareField.dbg.json +1 -1
  73. package/artifacts/contracts/governance/Reputation.sol/Reputation.dbg.json +1 -1
  74. package/artifacts/contracts/governance/Reputation.sol/Reputation.json +2 -2
  75. package/artifacts/contracts/governance/StakersDistribution.sol/StakersDistribution.dbg.json +1 -1
  76. package/artifacts/contracts/governance/StakersDistribution.sol/StakersDistribution.json +2 -2
  77. package/artifacts/contracts/invite/InvitesV1.sol/InvitesV1.dbg.json +1 -1
  78. package/artifacts/contracts/invite/InvitesV1.sol/InvitesV1.json +2 -2
  79. package/artifacts/contracts/mocks/AaveMock.sol/AaveMock.dbg.json +1 -1
  80. package/artifacts/contracts/mocks/DAIMock.sol/DAIMock.dbg.json +1 -1
  81. package/artifacts/contracts/mocks/DecimalsMock.sol/DecimalsMock.dbg.json +1 -1
  82. package/artifacts/contracts/mocks/DistributionBridgeMock.sol/DistributionBridgeMock.dbg.json +4 -0
  83. package/artifacts/contracts/mocks/DistributionBridgeMock.sol/DistributionBridgeMock.json +152 -0
  84. package/artifacts/contracts/mocks/DistributionHelperTest.sol/DistributionHelperTest.dbg.json +4 -0
  85. package/artifacts/contracts/mocks/DistributionHelperTest.sol/DistributionHelperTest.json +662 -0
  86. package/artifacts/contracts/mocks/DistributionHelperTest.sol/DistributionHelperTestHelper.dbg.json +4 -0
  87. package/artifacts/contracts/mocks/DistributionHelperTest.sol/DistributionHelperTestHelper.json +680 -0
  88. package/artifacts/contracts/mocks/GoodCompoundStakingTest.sol/GoodCompoundStakingTest.dbg.json +1 -1
  89. package/artifacts/contracts/mocks/GoodCompoundStakingTest.sol/GoodCompoundStakingTest.json +2 -2
  90. package/artifacts/contracts/mocks/GoodDollarStakingMock.sol/GoodDollarStakingMock.dbg.json +4 -0
  91. package/artifacts/contracts/mocks/GoodDollarStakingMock.sol/GoodDollarStakingMock.json +1322 -0
  92. package/artifacts/contracts/mocks/GoodFundManagerTest.sol/GoodFundManagerTest.dbg.json +1 -1
  93. package/artifacts/contracts/mocks/GoodFundManagerTest.sol/GoodFundManagerTest.json +2 -2
  94. package/artifacts/contracts/mocks/IncentiveControllerMock.sol/IncentiveControllerMock.dbg.json +1 -1
  95. package/artifacts/contracts/mocks/LendingPoolMock.sol/LendingPoolMock.dbg.json +1 -1
  96. package/artifacts/contracts/mocks/MultichainRouterMock.sol/IWrapper.dbg.json +4 -0
  97. package/artifacts/contracts/mocks/MultichainRouterMock.sol/IWrapper.json +59 -0
  98. package/artifacts/contracts/mocks/MultichainRouterMock.sol/MultichainRouterMock.dbg.json +4 -0
  99. package/artifacts/contracts/mocks/MultichainRouterMock.sol/MultichainRouterMock.json +81 -0
  100. package/artifacts/contracts/mocks/OverMintTester.sol/IGoodDollarStakingTest.dbg.json +4 -0
  101. package/artifacts/contracts/mocks/OverMintTester.sol/IGoodDollarStakingTest.json +49 -0
  102. package/artifacts/contracts/mocks/OverMintTester.sol/OverMintTester.dbg.json +1 -1
  103. package/artifacts/contracts/mocks/OverMintTester.sol/OverMintTester.json +4 -4
  104. package/artifacts/contracts/mocks/OverMintTesterRegularStake.sol/OverMintTesterRegularStake.dbg.json +1 -1
  105. package/artifacts/contracts/mocks/OverMintTesterRegularStake.sol/OverMintTesterRegularStake.json +2 -2
  106. package/artifacts/contracts/mocks/SixteenDecimalsTokenMock.sol/SixteenDecimalsTokenMock.dbg.json +1 -1
  107. package/artifacts/contracts/mocks/StakingMockFixedAPY.sol/StakingMockFixedAPY.dbg.json +4 -0
  108. package/artifacts/contracts/mocks/StakingMockFixedAPY.sol/StakingMockFixedAPY.json +682 -0
  109. package/artifacts/contracts/mocks/SwapHelperTest.sol/SwapHelperTest.dbg.json +1 -1
  110. package/artifacts/contracts/mocks/SwapHelperTest.sol/SwapHelperTest.json +2 -2
  111. package/artifacts/contracts/mocks/TwentyDecimalsTokenMock.sol/TwentyDecimalsTokenMock.dbg.json +1 -1
  112. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock.dbg.json +1 -1
  113. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock.json +2 -2
  114. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock2.dbg.json +1 -1
  115. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock2.json +2 -2
  116. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock3.dbg.json +1 -1
  117. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock3.json +2 -2
  118. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock4.dbg.json +1 -1
  119. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock4.json +2 -2
  120. package/artifacts/contracts/mocks/UsdcMock.sol/USDCMock.dbg.json +1 -1
  121. package/artifacts/contracts/mocks/cBATMock.sol/cBATMock.dbg.json +1 -1
  122. package/artifacts/contracts/mocks/cDAILowWorthMock.sol/cDAILowWorthMock.dbg.json +1 -1
  123. package/artifacts/contracts/mocks/cDAIMock.sol/cDAIMock.dbg.json +1 -1
  124. package/artifacts/contracts/mocks/cDAINonMintableMock.sol/cDAINonMintableMock.dbg.json +1 -1
  125. package/artifacts/contracts/mocks/cDecimalsMock.sol/cDecimalsMock.dbg.json +1 -1
  126. package/artifacts/contracts/mocks/cSDTMock.sol/cSDTMock.dbg.json +1 -1
  127. package/artifacts/contracts/mocks/cUSDCMock.sol/cUSDCMock.dbg.json +1 -1
  128. package/artifacts/contracts/reserve/DistributionHelper.sol/DistributionHelper.dbg.json +4 -0
  129. package/artifacts/contracts/reserve/DistributionHelper.sol/DistributionHelper.json +662 -0
  130. package/artifacts/contracts/reserve/ExchangeHelper.sol/ExchangeHelper.dbg.json +1 -1
  131. package/artifacts/contracts/reserve/ExchangeHelper.sol/ExchangeHelper.json +2 -2
  132. package/artifacts/contracts/reserve/GoodMarketMaker.sol/GoodMarketMaker.dbg.json +1 -1
  133. package/artifacts/contracts/reserve/GoodMarketMaker.sol/GoodMarketMaker.json +2 -2
  134. package/artifacts/contracts/reserve/GoodReserveCDai.sol/ContributionCalc.dbg.json +1 -1
  135. package/artifacts/contracts/reserve/GoodReserveCDai.sol/GoodReserveCDai.dbg.json +1 -1
  136. package/artifacts/contracts/reserve/GoodReserveCDai.sol/GoodReserveCDai.json +75 -35
  137. package/artifacts/contracts/staking/BaseShareField.sol/BaseShareField.dbg.json +1 -1
  138. package/artifacts/contracts/staking/BaseShareField.sol/BaseShareField.json +2 -2
  139. package/artifacts/contracts/staking/BaseShareFieldV2.sol/BaseShareFieldV2.dbg.json +1 -1
  140. package/artifacts/contracts/staking/BaseShareFieldV2.sol/BaseShareFieldV2.json +2 -2
  141. package/artifacts/contracts/staking/DonationsStaking.sol/DonationsStaking.dbg.json +1 -1
  142. package/artifacts/contracts/staking/DonationsStaking.sol/DonationsStaking.json +2 -2
  143. package/artifacts/contracts/staking/FuseStakingV3.sol/FuseStakingV3.dbg.json +1 -1
  144. package/artifacts/contracts/staking/FuseStakingV3.sol/FuseStakingV3.json +2 -2
  145. package/artifacts/contracts/staking/FuseStakingV3.sol/IConsensus.dbg.json +1 -1
  146. package/artifacts/contracts/staking/FuseStakingV3.sol/PegSwap.dbg.json +1 -1
  147. package/artifacts/contracts/staking/GoodFundManager.sol/GoodFundManager.dbg.json +1 -1
  148. package/artifacts/contracts/staking/GoodFundManager.sol/GoodFundManager.json +2 -2
  149. package/artifacts/contracts/staking/SimpleStaking.sol/SimpleStaking.dbg.json +1 -1
  150. package/artifacts/contracts/staking/SimpleStakingV2.sol/SimpleStakingV2.dbg.json +1 -1
  151. package/artifacts/contracts/staking/UniswapV2SwapHelper.sol/UniswapV2SwapHelper.dbg.json +1 -1
  152. package/artifacts/contracts/staking/UniswapV2SwapHelper.sol/UniswapV2SwapHelper.json +2 -2
  153. package/artifacts/contracts/staking/aave/AaveStakingFactory.sol/AaveStakingFactory.dbg.json +1 -1
  154. package/artifacts/contracts/staking/aave/AaveStakingFactory.sol/AaveStakingFactory.json +2 -2
  155. package/artifacts/contracts/staking/aave/GoodAaveStaking.sol/GoodAaveStaking.dbg.json +1 -1
  156. package/artifacts/contracts/staking/aave/GoodAaveStaking.sol/GoodAaveStaking.json +2 -2
  157. package/artifacts/contracts/staking/aave/GoodAaveStakingV2.sol/GoodAaveStakingV2.dbg.json +1 -1
  158. package/artifacts/contracts/staking/aave/GoodAaveStakingV2.sol/GoodAaveStakingV2.json +2 -2
  159. package/artifacts/contracts/staking/compound/CompoundStakingFactory.sol/CompoundStakingFactory.dbg.json +1 -1
  160. package/artifacts/contracts/staking/compound/CompoundStakingFactory.sol/CompoundStakingFactory.json +2 -2
  161. package/artifacts/contracts/staking/compound/GoodCompoundStaking.sol/GoodCompoundStaking.dbg.json +1 -1
  162. package/artifacts/contracts/staking/compound/GoodCompoundStaking.sol/GoodCompoundStaking.json +2 -2
  163. package/artifacts/contracts/staking/compound/GoodCompoundStakingV2.sol/GoodCompoundStakingV2.dbg.json +1 -1
  164. package/artifacts/contracts/staking/compound/GoodCompoundStakingV2.sol/GoodCompoundStakingV2.json +2 -2
  165. package/artifacts/contracts/staking/utils/Math64X64.sol/Math64x64.dbg.json +4 -0
  166. package/artifacts/contracts/staking/utils/Math64X64.sol/Math64x64.json +10 -0
  167. package/artifacts/contracts/staking/utils/StakingRewardsFixedAPY.sol/StakingRewardsFixedAPY.dbg.json +4 -0
  168. package/artifacts/contracts/staking/utils/StakingRewardsFixedAPY.sol/StakingRewardsFixedAPY.json +268 -0
  169. package/artifacts/contracts/ubi/UBIScheme.sol/UBIScheme.dbg.json +1 -1
  170. package/artifacts/contracts/ubi/UBIScheme.sol/UBIScheme.json +2 -2
  171. package/artifacts/contracts/utils/AdminWallet.sol/AdminWallet.dbg.json +1 -1
  172. package/artifacts/contracts/utils/AdminWallet.sol/AdminWallet.json +2 -2
  173. package/artifacts/contracts/utils/BancorFormula.sol/BancorFormula.dbg.json +1 -1
  174. package/artifacts/contracts/utils/BulkProof.sol/BulkProof.dbg.json +1 -1
  175. package/artifacts/contracts/utils/BulkProof.sol/BulkProof.json +3 -34
  176. package/artifacts/contracts/utils/DAOContract.sol/DAOContract.dbg.json +1 -1
  177. package/artifacts/contracts/utils/DAOContract.sol/DAOContract.json +2 -2
  178. package/artifacts/contracts/utils/DAOUpgradeableContract.sol/DAOUpgradeableContract.dbg.json +1 -1
  179. package/artifacts/contracts/utils/DAOUpgradeableContract.sol/DAOUpgradeableContract.json +2 -2
  180. package/artifacts/contracts/utils/DSMath.sol/DSMath.dbg.json +1 -1
  181. package/artifacts/contracts/utils/DataTypes.sol/DataTypes.dbg.json +1 -1
  182. package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/GoodDollarMintBurnWrapper.dbg.json +4 -0
  183. package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/GoodDollarMintBurnWrapper.json +1263 -0
  184. package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/IRouter.dbg.json +4 -0
  185. package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/IRouter.json +59 -0
  186. package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/PausableControl.dbg.json +4 -0
  187. package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/PausableControl.json +69 -0
  188. package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/TokenOperation.dbg.json +4 -0
  189. package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/TokenOperation.json +10 -0
  190. package/artifacts/contracts/utils/MultichainBridgeHelper.sol/MultichainBridgeHelper.dbg.json +4 -0
  191. package/artifacts/contracts/utils/MultichainBridgeHelper.sol/MultichainBridgeHelper.json +79 -0
  192. package/artifacts/contracts/utils/NameService.sol/NameService.dbg.json +1 -1
  193. package/artifacts/contracts/utils/ProtocolUpgrade.sol/OldMarketMaker.dbg.json +1 -1
  194. package/artifacts/contracts/utils/ProtocolUpgrade.sol/ProtocolUpgrade.dbg.json +1 -1
  195. package/artifacts/contracts/utils/ProtocolUpgrade.sol/ProtocolUpgrade.json +2 -2
  196. package/artifacts/contracts/utils/ProtocolUpgradeFuse.sol/ProtocolUpgradeFuse.dbg.json +1 -1
  197. package/artifacts/contracts/utils/ProtocolUpgradeFuse.sol/ProtocolUpgradeFuse.json +2 -2
  198. package/artifacts/contracts/utils/ProtocolUpgradeFuseRecover.sol/ProtocolUpgradeFuseRecover.dbg.json +1 -1
  199. package/artifacts/contracts/utils/ProtocolUpgradeFuseRecover.sol/ProtocolUpgradeFuseRecover.json +2 -2
  200. package/artifacts/contracts/utils/ProtocolUpgradeRecover.sol/ProtocolUpgradeRecover.dbg.json +1 -1
  201. package/artifacts/contracts/utils/ProtocolUpgradeRecover.sol/ProtocolUpgradeRecover.json +2 -2
  202. package/artifacts/contracts/utils/ProxyFactory1967.sol/ERC1967Proxy.dbg.json +1 -1
  203. package/artifacts/contracts/utils/ProxyFactory1967.sol/ProxyFactory1967.dbg.json +1 -1
  204. package/artifacts/contracts/utils/ReputationTestHelper.sol/ReputationTestHelper.dbg.json +1 -1
  205. package/artifacts/contracts/utils/ReputationTestHelper.sol/ReputationTestHelper.json +2 -2
  206. package/contracts/Interfaces.sol +20 -0
  207. package/contracts/governance/GoodDollarStaking.sol +510 -0
  208. package/contracts/governance/MultiBaseGovernanceShareField.sol +1 -0
  209. package/contracts/mocks/DistributionBridgeMock.sol +50 -0
  210. package/contracts/mocks/DistributionHelperTest.sol +22 -0
  211. package/contracts/mocks/GoodDollarStakingMock.sol +24 -0
  212. package/contracts/mocks/MultichainRouterMock.sol +38 -0
  213. package/contracts/mocks/OverMintTester.sol +39 -25
  214. package/contracts/mocks/StakingMockFixedAPY.sol +78 -0
  215. package/contracts/reserve/DistributionHelper.sol +142 -0
  216. package/contracts/reserve/GoodReserveCDai.sol +95 -41
  217. package/contracts/staking/utils/Math64X64.sol +268 -0
  218. package/contracts/staking/utils/StakingRewardsFixedAPY.sol +336 -0
  219. package/contracts/utils/BulkProof.sol +10 -10
  220. package/contracts/utils/GoodDollarMintBurnWrapper.sol +638 -0
  221. package/contracts/utils/MultichainBridgeHelper.sol +39 -0
  222. package/hardhat.config.ts +5 -3
  223. package/package.json +7 -4
  224. package/patches/@openzeppelin+hardhat-upgrades+1.7.0.patch.depracate +67 -0
  225. package/releases/deployment.json +10 -3
  226. package/releases/olddao.json +1 -1
  227. package/scripts/analytics/activeUsersCount.ts +65 -0
  228. package/scripts/analytics/activeWalletsStats.ts +150 -0
  229. package/scripts/analytics/claimIncidentStats.ts +117 -0
  230. package/scripts/analytics/faucetStats.ts +103 -0
  231. package/scripts/analytics/goodHolders.ts +50 -0
  232. package/scripts/{misc → analytics}/goodgiveback.ts +0 -0
  233. package/scripts/governance/airdropCalculation.ts +1 -0
  234. package/scripts/multichain-deploy/basicdao-deploy.ts +20 -5
  235. package/scripts/multichain-deploy/gdSavings-deploy.ts +232 -0
  236. package/scripts/multichain-deploy/helpers.ts +73 -8
  237. package/scripts/multichain-deploy/multichainWrapper-deploy.ts +56 -0
  238. package/scripts/multichain-deploy/nonubiDistribution-deploy.ts +170 -0
  239. package/scripts/voltageswaps.ts +47 -0
  240. package/test/governance/ClaimersDistribution.test.ts +1 -1
  241. package/test/governance/GoodDollarStaking.gd.test.ts +559 -0
  242. package/test/governance/GoodDollarStaking.good.test.ts +998 -0
  243. package/test/governance/GovernanceStaking.test.ts +43 -0
  244. package/test/helpers.ts +9 -12
  245. package/test/reserve/DistributionHelper.test.ts +394 -0
  246. package/test/reserve/GoodReserveCDai.distribution.test.ts +296 -0
  247. package/test/reserve/GoodReserveCDai.gdx.test.ts +21 -16
  248. package/test/reserve/GoodReserveCDai.pause.test.ts +116 -0
  249. package/test/staking/StakingRewardsFixedAPY.test.ts +900 -0
  250. package/test/utils/AdminWallet.test.ts +35 -6
  251. package/test/utils/GoodDollarMintBurnWrapper.test.ts +796 -0
  252. package/tsconfig.json +4 -9
  253. package/types/AccessControl.ts +361 -0
  254. package/types/CERC20.ts +25 -0
  255. package/types/DistributionBridgeMock.ts +251 -0
  256. package/types/DistributionHelper.ts +908 -0
  257. package/types/DistributionHelperTest.ts +909 -0
  258. package/types/DistributionHelperTestHelper.ts +945 -0
  259. package/types/ERC165.ts +104 -0
  260. package/types/ERC20.ts +101 -49
  261. package/types/GoodDollarMintBurnWrapper.ts +1806 -0
  262. package/types/GoodDollarStaking.ts +1855 -0
  263. package/types/GoodDollarStakingMock.ts +1855 -0
  264. package/types/GoodReserveCDai.ts +90 -55
  265. package/types/IAccessControl.ts +306 -0
  266. package/types/IERC165.ts +104 -0
  267. package/types/IERC20.ts +300 -0
  268. package/types/IERC20Metadata.ts +339 -0
  269. package/types/IERC2917.ts +25 -0
  270. package/types/IGoodDollarStakingTest.ts +160 -0
  271. package/types/IMultichainRouter.ts +166 -0
  272. package/types/IRouter.ts +143 -0
  273. package/types/IWrapper.ts +143 -0
  274. package/types/MultichainBridgeHelper.ts +170 -0
  275. package/types/MultichainRouterMock.ts +141 -0
  276. package/types/Pausable.ts +103 -0
  277. package/types/PausableControl.ts +125 -0
  278. package/types/{BulkProof.ts → RewardsMinter.ts} +24 -28
  279. package/types/StakingMockFixedAPY.ts +995 -0
  280. package/types/StakingRewardsFixedAPY.ts +428 -0
  281. package/types/factories/AaveStakingFactory__factory.ts +1 -1
  282. package/types/factories/AccessControl__factory.ts +227 -0
  283. package/types/factories/AdminWallet__factory.ts +1 -1
  284. package/types/factories/BaseShareFieldV2__factory.ts +1 -1
  285. package/types/factories/BaseShareField__factory.ts +1 -1
  286. package/types/factories/CERC20__factory.ts +13 -0
  287. package/types/factories/ClaimersDistribution__factory.ts +1 -1
  288. package/types/factories/CompoundStakingFactory__factory.ts +1 -1
  289. package/types/factories/CompoundVotingMachine__factory.ts +1 -1
  290. package/types/factories/DAOContract__factory.ts +1 -1
  291. package/types/factories/DAOUpgradeableContract__factory.ts +1 -1
  292. package/types/factories/DistributionBridgeMock__factory.ts +207 -0
  293. package/types/factories/DistributionHelperTestHelper__factory.ts +737 -0
  294. package/types/factories/DistributionHelperTest__factory.ts +717 -0
  295. package/types/factories/DistributionHelper__factory.ts +713 -0
  296. package/types/factories/DonationsStaking__factory.ts +1 -1
  297. package/types/factories/ERC165__factory.ts +39 -0
  298. package/types/factories/ERC20__factory.ts +13 -0
  299. package/types/factories/ExchangeHelper__factory.ts +1 -1
  300. package/types/factories/FuseFaucet__factory.ts +1 -1
  301. package/types/factories/FuseStakingV3__factory.ts +1 -1
  302. package/types/factories/GReputation__factory.ts +1 -1
  303. package/types/factories/GoodAaveStakingV2__factory.ts +1 -1
  304. package/types/factories/GoodAaveStaking__factory.ts +1 -1
  305. package/types/factories/GoodCompoundStakingTest__factory.ts +1 -1
  306. package/types/factories/GoodCompoundStakingV2__factory.ts +1 -1
  307. package/types/factories/GoodCompoundStaking__factory.ts +1 -1
  308. package/types/factories/GoodDollarMintBurnWrapper__factory.ts +1318 -0
  309. package/types/factories/GoodDollarStakingMock__factory.ts +1404 -0
  310. package/types/factories/GoodDollarStaking__factory.ts +1400 -0
  311. package/types/factories/GoodFundManagerTest__factory.ts +1 -1
  312. package/types/factories/GoodFundManager__factory.ts +1 -1
  313. package/types/factories/GoodMarketMaker__factory.ts +1 -1
  314. package/types/factories/GoodReserveCDai__factory.ts +74 -34
  315. package/types/factories/GovernanceStaking__factory.ts +1 -1
  316. package/types/factories/IAccessControl__factory.ts +198 -0
  317. package/types/factories/IERC165__factory.ts +42 -0
  318. package/types/factories/IERC20Metadata__factory.ts +248 -0
  319. package/types/factories/IERC20__factory.ts +203 -0
  320. package/types/factories/IERC2917__factory.ts +13 -0
  321. package/types/factories/IGoodDollarStakingTest__factory.ts +68 -0
  322. package/types/factories/IMultichainRouter__factory.ts +82 -0
  323. package/types/factories/IRouter__factory.ts +71 -0
  324. package/types/factories/IWrapper__factory.ts +71 -0
  325. package/types/factories/InvitesV1__factory.ts +1 -1
  326. package/types/factories/MultichainBridgeHelper__factory.ts +134 -0
  327. package/types/factories/MultichainRouterMock__factory.ts +141 -0
  328. package/types/factories/OverMintTesterRegularStake__factory.ts +1 -1
  329. package/types/factories/OverMintTester__factory.ts +3 -3
  330. package/types/factories/PausableControl__factory.ts +84 -0
  331. package/types/factories/Pausable__factory.ts +62 -0
  332. package/types/factories/ProtocolUpgradeFuseRecover__factory.ts +1 -1
  333. package/types/factories/ProtocolUpgradeFuse__factory.ts +1 -1
  334. package/types/factories/ProtocolUpgradeRecover__factory.ts +1 -1
  335. package/types/factories/ProtocolUpgrade__factory.ts +1 -1
  336. package/types/factories/ReputationTestHelper__factory.ts +1 -1
  337. package/types/factories/Reputation__factory.ts +1 -1
  338. package/types/factories/RewardsMinter__factory.ts +47 -0
  339. package/types/factories/StakersDistribution__factory.ts +1 -1
  340. package/types/factories/StakingMockFixedAPY__factory.ts +745 -0
  341. package/types/factories/StakingRewardsFixedAPY__factory.ts +287 -0
  342. package/types/factories/SwapHelperTest__factory.ts +1 -1
  343. package/types/factories/UBIScheme__factory.ts +1 -1
  344. package/types/factories/UniswapV2SwapHelper__factory.ts +1 -1
  345. package/types/factories/UpgradableMock2__factory.ts +1 -1
  346. package/types/factories/UpgradableMock3__factory.ts +1 -1
  347. package/types/factories/UpgradableMock4__factory.ts +1 -1
  348. package/types/factories/UpgradableMock__factory.ts +1 -1
  349. package/types/hardhat.d.ts +225 -9
  350. package/types/index.ts +50 -4
  351. package/yarn.lock +180 -104
  352. package/types/factories/BulkProof__factory.ts +0 -89
package/package.json CHANGED
@@ -1,11 +1,11 @@
1
1
  {
2
2
  "name": "@gooddollar/goodprotocol",
3
- "version": "1.0.28",
3
+ "version": "1.0.29-beta.1",
4
4
  "description": "GoodDollar Protocol",
5
5
  "scripts": {
6
6
  "build": "scripts/build.sh deploy",
7
7
  "coverage:report": "export COVERALLS_REPO_TOKEN='qiXNelh1HXMAsoPah9yRD2yG2WlqrDfLh' && cat ../coverage/lcov.info coverage/lcov.info | coveralls",
8
- "coverage": "export CODE_COVERAGE=true; hardhat coverage",
8
+ "coverage": "export CODE_COVERAGE=true; hardhat --max-memory 6096 coverage",
9
9
  "minimize": "./scripts/minimize.sh 'artifacts/contracts'",
10
10
  "test": "hardhat test",
11
11
  "test:parallel": "mocha --require hardhat/register --extension ts --recursive --parallel --exit",
@@ -77,6 +77,8 @@
77
77
  "@nomiclabs/hardhat-etherscan": "^3.1.0",
78
78
  "@nomiclabs/hardhat-waffle": "^2.0.3",
79
79
  "@openzeppelin/hardhat-upgrades": "^1.20.0",
80
+ "@swc/core": "^1.2.196",
81
+ "@swc/helpers": "^0.3.16",
80
82
  "@typechain/ethers-v5": "^8.0.2",
81
83
  "@types/mocha": "*",
82
84
  "@types/node": "*",
@@ -102,12 +104,13 @@
102
104
  "mocha-lcov-reporter": "*",
103
105
  "node-fetch": "*",
104
106
  "node-jq": "*",
107
+ "regenerator-runtime": "^0.13.9",
105
108
  "solhint": "*",
106
- "solidity-coverage": "^0.7.17",
109
+ "solidity-coverage": "^0.7.21",
107
110
  "truffle": "^5.3.12",
108
111
  "truffle-hdwallet-provider": "*",
109
112
  "ts-generator": "^0.1.1",
110
- "ts-node": "^9.0.0",
113
+ "ts-node": "^10.8.0",
111
114
  "typechain": "^6.0.2",
112
115
  "typescript": "*"
113
116
  }
@@ -0,0 +1,67 @@
1
+ diff --git a/node_modules/@openzeppelin/hardhat-upgrades/dist/deploy-proxy.d.ts b/node_modules/@openzeppelin/hardhat-upgrades/dist/deploy-proxy.d.ts
2
+ index 2405883..5879166 100644
3
+ --- a/node_modules/@openzeppelin/hardhat-upgrades/dist/deploy-proxy.d.ts
4
+ +++ b/node_modules/@openzeppelin/hardhat-upgrades/dist/deploy-proxy.d.ts
5
+ @@ -7,6 +7,7 @@ export interface DeployFunction {
6
+ }
7
+ export interface DeployOptions extends ValidationOptions {
8
+ initializer?: string | false;
9
+ + proxyFactory?: any;
10
+ }
11
+ export declare function makeDeployProxy(hre: HardhatRuntimeEnvironment): DeployFunction;
12
+ //# sourceMappingURL=deploy-proxy.d.ts.map
13
+
14
+ diff --git a/node_modules/@openzeppelin/hardhat-upgrades/dist/deploy-proxy.js b/node_modules/@openzeppelin/hardhat-upgrades/dist/deploy-proxy.js
15
+ index 8dbb62a..d0761f4 100644
16
+ --- a/node_modules/@openzeppelin/hardhat-upgrades/dist/deploy-proxy.js
17
+ +++ b/node_modules/@openzeppelin/hardhat-upgrades/dist/deploy-proxy.js
18
+ @@ -26,14 +26,15 @@ function makeDeployProxy(hre) {
19
+ let proxyDeployment;
20
+ switch (kind) {
21
+ case 'uups': {
22
+ - const ProxyFactory = await utils_1.getProxyFactory(hre, ImplFactory.signer);
23
+ + const ProxyFactory = await (opts.proxyFactory || utils_1.getProxyFactory(hre, ImplFactory.signer))
24
+ proxyDeployment = Object.assign({ kind }, await utils_1.deploy(ProxyFactory, impl, data));
25
+ break;
26
+ }
27
+ case 'transparent': {
28
+ const AdminFactory = await utils_1.getProxyAdminFactory(hre, ImplFactory.signer);
29
+ const adminAddress = await upgrades_core_1.fetchOrDeployAdmin(provider, () => utils_1.deploy(AdminFactory));
30
+ - const TransparentUpgradeableProxyFactory = await utils_1.getTransparentUpgradeableProxyFactory(hre, ImplFactory.signer);
31
+ + const TransparentUpgradeableProxyFactory = await (opts.proxyFactory || utils_1.getTransparentUpgradeableProxyFactory(hre, ImplFactory.signer))
32
+ +
33
+ proxyDeployment = Object.assign({ kind }, await utils_1.deploy(TransparentUpgradeableProxyFactory, impl, adminAddress, data));
34
+ break;
35
+ }
36
+ diff --git a/node_modules/@openzeppelin/hardhat-upgrades/src/deploy-proxy.ts b/node_modules/@openzeppelin/hardhat-upgrades/src/deploy-proxy.ts
37
+ index c8beb0d..b187875 100644
38
+ --- a/node_modules/@openzeppelin/hardhat-upgrades/src/deploy-proxy.ts
39
+ +++ b/node_modules/@openzeppelin/hardhat-upgrades/src/deploy-proxy.ts
40
+ @@ -25,6 +25,7 @@ export interface DeployFunction {
41
+
42
+ export interface DeployOptions extends ValidationOptions {
43
+ initializer?: string | false;
44
+ + proxyFactory?: any;
45
+ }
46
+
47
+ export function makeDeployProxy(hre: HardhatRuntimeEnvironment): DeployFunction {
48
+ @@ -59,7 +60,8 @@ export function makeDeployProxy(hre: HardhatRuntimeEnvironment): DeployFunction
49
+ let proxyDeployment: Required<ProxyDeployment>;
50
+ switch (kind) {
51
+ case 'uups': {
52
+ - const ProxyFactory = await getProxyFactory(hre, ImplFactory.signer);
53
+ + const ProxyFactory = await (opts.proxyFactory || getProxyFactory(hre, ImplFactory.signer));
54
+ +
55
+ proxyDeployment = Object.assign({ kind }, await deploy(ProxyFactory, impl, data));
56
+ break;
57
+ }
58
+ @@ -67,7 +69,8 @@ export function makeDeployProxy(hre: HardhatRuntimeEnvironment): DeployFunction
59
+ case 'transparent': {
60
+ const AdminFactory = await getProxyAdminFactory(hre, ImplFactory.signer);
61
+ const adminAddress = await fetchOrDeployAdmin(provider, () => deploy(AdminFactory));
62
+ - const TransparentUpgradeableProxyFactory = await getTransparentUpgradeableProxyFactory(hre, ImplFactory.signer);
63
+ + const TransparentUpgradeableProxyFactory = await (opts.proxyFactory || getTransparentUpgradeableProxyFactory(hre, ImplFactory.signer););
64
+ +
65
+ proxyDeployment = Object.assign(
66
+ { kind },
67
+ await deploy(TransparentUpgradeableProxyFactory, impl, adminAddress, data),
@@ -155,7 +155,9 @@
155
155
  "DAI": "0x0000000000000000000000000000000000000000",
156
156
  "cDAI": "0x0000000000000000000000000000000000000000",
157
157
  "COMP": "0x0000000000000000000000000000000000000000",
158
- "ProxyAdmin": "0x0dd5e1869DA5C9C7D7c49364687534bda7fB7020"
158
+ "ProxyAdmin": "0x0dd5e1869DA5C9C7D7c49364687534bda7fB7020",
159
+ "GoodDollarMintBurnWrapper": "0x46cF05f93539F4735Cb0D7b2B1cA6A70fa49510a",
160
+ "GoodDollarStaking": "0x4E44E4a72d9e40D1CabeEf1d10b747d6ACEF48B0"
159
161
  },
160
162
  "fuse-mainnet": {
161
163
  "NameService": "0x3baeEff20Cb02a5b8eF413C611c015E69221663e",
@@ -329,7 +331,9 @@
329
331
  "FeeFormula": "0x05eb1C46bd539Fd2A098b06D83a5bB81E5a58e63",
330
332
  "DAI": "0x0000000000000000000000000000000000000000",
331
333
  "cDAI": "0x0000000000000000000000000000000000000000",
332
- "COMP": "0x0000000000000000000000000000000000000000"
334
+ "COMP": "0x0000000000000000000000000000000000000000",
335
+ "GoodDollarMintBurnWrapper": "0x08CaFF2331040c9998a91B50eEee85c4AE953ece",
336
+ "GoodDollarStaking": "0xff64BD8b7d730737B39AE831abbc7Afbee13BD8b"
333
337
  },
334
338
  "test": {
335
339
  "ProxyFactory": "0x36dE29DB57062A583436Ae071e141404dFE2311C",
@@ -553,7 +557,10 @@
553
557
  "Identity": "0x96B81f82A29e78C5ba9E2034Ce8490fd641a24eb",
554
558
  "NameService": "0x563a80a452264a9e1aa37c6FA0B46D04C3c71b24",
555
559
  "GReputation": "0xAC132ECe25217867E318eA8ff63420C90d5a74A6",
560
+ "GuardiansSafe": "0xC9D09BA972B4EB6Bb7347F2229FB6d50434fFCa6",
556
561
  "network": "production-celo",
557
- "networkId": 42220
562
+ "networkId": 42220,
563
+ "GoodDollarMintBurnWrapper": "0x5566b6E4962BA83e05a426Ad89031ec18e9CadD3",
564
+ "MultichainRouter": "0xf27Ee99622C3C9b264583dACB2cCE056e194494f"
558
565
  }
559
566
  }
@@ -1 +1 @@
1
- {"hardhat":{"Reserve":"0x09635F643e140090A9A8Dcd712eD6285858ceBef","GoodDollar":"0x8e80FFe6Dc044F4A766Afd6e5a8732Fe0977A493","Identity":"0xA51c1fc2f0D1a1b8494Ed1FE312d7C3a78Ed91C0","Avatar":"0x6F1216D1BFe15c98520CA1434FC1d9D57AC95321","Controller":"0xdAD42D43ecE0f6e8da8c2BCbC6A25FF6b3922C58","AbsoluteVote":"0x5f3f1dBD7B74C6B46e8c44f98792A1dAf8d69154","SchemeRegistrar":"0xCD8a1C3ba11CF5ECfa6267617243239504a98d90","UpgradeScheme":"0xb7278A61aa25c888815aFC32Ad3cC52fF24fE575","DAI":"0x5FbDB2315678afecb367f032d93F642f64180aa3","cDAI":"0xDc64a140Aa3E981100a9becA4E685f962f0cF6C9","COMP":"0x9fE46736679d2D9a65F0992F2272dE9f3c7fa6e0","Contribution":"0xa85233C63b9Ee964Add6F2cffe00Fd84eb32338f","DAIStaking":"0xc3e53F4d16Ae77Db1c982e75a937B9f60FE63690","MarketMaker":"0x7a2088a1bFc9d81c55368AE168C2C02570cB814F","UBIScheme":"0x36C02dA8a0983159322a80FFE9F24b1acfF8B570","FirstClaimPool":"0x9d4454B023096f34B160D6B654540c56A1F81688","Bridge":"0x2279B7A0a67DB372996a5FaB50D91eAA73d2eBe6","BancorFormula":"0x0165878A594ca255338adfa4d48449f69242Eb8F","DonationsStaking":"0x84eA74d481Ee0A5332c457a4d796187F6Ba67fEB","UniswapRouter":"0x1429859428C0aBc9C2C47C8Ee9FBaf82cFA0F20f","DAIUsdOracle":"0x1fA02b2d6A771842690194Cf62D91bdd92BfE28d","COMPUsdOracle":"0x04C89607413713Ec9775E14b954286519d836FEf","network":"develop","networkId":4447},"develop-mainnet":{"Reserve":"0x959922bE3CAee4b8Cd9a407cc3ac1C251C2007B1","GoodDollar":"0x9bd03768a7DCc129555dE410FF8E85528A4F88b5","Identity":"0x0165878A594ca255338adfa4d48449f69242Eb8F","Avatar":"0x61c36a8d610163660E21a8b7359e1Cac0C9133e1","Controller":"0x23dB4a08f2272df049a4932a4Cc3A6Dc1002B33E","AbsoluteVote":"0x9E545E3C0baAB3E08CdfD552C960A1050f373042","SchemeRegistrar":"0x1613beB3B2C4f22Ee086B2b38C1476A3cE7f78E8","UpgradeScheme":"0xa82fF9aFd8f496c3d6ac40E2a0F282E47488CFc9","DAI":"0x5FbDB2315678afecb367f032d93F642f64180aa3","cDAI":"0x9fE46736679d2D9a65F0992F2272dE9f3c7fa6e0","COMP":"0xe7f1725E7734CE288F8367e1Bb143E90bb3F0512","USDC":"0x942ED2fa862887Dc698682cc6a86355324F0f01e","Contribution":"0xA51c1fc2f0D1a1b8494Ed1FE312d7C3a78Ed91C0","DAIStaking":"0x68B1D87F95878fE05B998F19b66F4baba5De1aed","MarketMaker":"0x9A676e781A523b5d0C0e43731313A708CB607508","UBIScheme":"0xE6E340D132b5f46d1e472DebcD681B2aBc16e57E","FirstClaimPool":"0x67d269191c92Caf3cD7723F116c85e6E9bf55933","Bridge":"0xDc64a140Aa3E981100a9becA4E685f962f0cF6C9","BancorFormula":"0xCf7Ed3AccA5a467e9e704C703E8D87F634fB0Fc9","DonationsStaking":"0x3Aa5ebB10DC797CAC828524e59A333d0A371443c","UniswapRouter":"0x4826533B4897376654Bb4d4AD88B7faFD0C98528","DAIUsdOracle":"0x9d4454B023096f34B160D6B654540c56A1F81688","COMPUsdOracle":"0x5eb3Bc0a489C5A8288765d2336659EbCA68FCd00","USDCUsdOracle":"0x114e375B6FCC6d6fCb68c7A1d407E652C54F25FB","AAVEUsdOracle":"0x976C214741b4657bd99DFD38a5c0E3ac5C99D903","network":"develop","networkId":4447,"AaveLendingPool":"0x8D81A3DCd17030cD5F23Ac7370e4Efb10D2b3cA4","AaveIncentiveController":"0xcC4c41415fc68B2fBf70102742A83cDe435e0Ca7"},"develop":{"Reserve":"0x162A433068F51e18b7d13932F27e66a3f99E6890","GoodDollar":"0xfa7a32340ea54A3FF70942B33090a8a9A1B50214","Identity":"0xCD8a1C3ba11CF5ECfa6267617243239504a98d90","Avatar":"0x9FA5072032B7a7DCc49533401cec1C47bfcf350d","Controller":"0x37B37064d97eADAcc4d7A0cbC673b5C2932b673c","AbsoluteVote":"0x172076E0166D1F9Cc711C77Adf8488051744980C","SchemeRegistrar":"0xBEc49fA140aCaA83533fB00A2BB19bDdd0290f25","UpgradeScheme":"0x4EE6eCAD1c2Dae9f525404De8555724e3c35d07B","DAI":"0x36C02dA8a0983159322a80FFE9F24b1acfF8B570","cDAI":"0x4c5859f0F772848b2D91F1D83E2Fe57935348029","COMP":"0x809d550fca64d94Bd9F66E60752A544199cfAC3D","USDC":"0x2BB8B93F585B43b06F3d523bf30C203d3B6d4BD4","Contribution":"0xFD471836031dc5108809D173A067e8486B9047A3","DAIStaking":"0x5081a39b8A5f0E35a8D959395a630b68B74Dd30f","MarketMaker":"0x1429859428C0aBc9C2C47C8Ee9FBaf82cFA0F20f","AdminWallet":"0x138A24c2DFD29b2db632a0c9E71E55621f5A745d","UBIScheme":"0x0355B7B8cb128fA5692729Ab3AAa199C1753f726","FirstClaimPool":"0x8198f5d8F8CfFE8f9C413d98a0A55aEB8ab9FbB7","Bridge":"0x5f3f1dBD7B74C6B46e8c44f98792A1dAf8d69154","BancorFormula":"0x1291Be112d480055DaFd8a610b7d1e203891C274","DonationsStaking":"0x1fA02b2d6A771842690194Cf62D91bdd92BfE28d","UniswapRouter":"0x1c85638e118b37167e9298c2268758e058DdfDA0","DAIUsdOracle":"0x49fd2BE640DB2910c2fAb69bB8531Ab6E76127ff","COMPUsdOracle":"0x4631BCAbD6dF18D94796344963cB60d44a4136b6","USDCUsdOracle":"0xc6B407503dE64956Ad3cF5Ab112cA4f56AA13517","AAVEUsdOracle":"0x6A47346e722937B60Df7a1149168c0E76DD6520f","AaveLendingPool":"0xB7ca895F81F20e05A5eb11B05Cbaab3DAe5e23cd","AaveIncentiveController":"0xd0EC100F1252a53322051a95CF05c32f0C174354","network":"develop","networkId":4447},"kovan-mainnet":{"Reserve":"0x7330BbDd9Fc99Cc82bE0078fB643C1DDbF9be03f","GoodDollar":"0x46183b8822BB7Cbf27E10A1acc95DfB3b5f0ec79","Identity":"0xCA95A91238a9fbE2458aaC54Cf00F99eCAB14E0a","Avatar":"0x2cA80e8e6FE46066D432204dFbC902328e912Be6","Controller":"0x3778F359a108F48959562eCfe5CE677050c509D3","AbsoluteVote":"0xFC62b61205a9Df9699D0181896603e57A30Aca28","SchemeRegistrar":"0xaF633Cf595F0695aBa029F210D364e1C4282986e","UpgradeScheme":"0xAC7671a932287a69A5E1115BEde2687436Ebed7e","DAI":"0x4f96fe3b7a6cf9725f59d353f723c1bdb64ca6aa","cDAI":"0xf0d0eb522cfa50b716b3b1604c4f0fa6f04376ad","COMP":"0x61460874a7196d6a22d1ee4922473664b3e95270","Contribution":"0xb8e03cE6bb337A1161ca6E53DE568efBe5650eaF","DAIStaking":"0xd222e5557395c5b62b682Cbfd50567908592703d","MarketMaker":"0xD7cF329519e749B5f3c220e644660c61Acc24DAA","Bridge":"0x26D044e8a7bcD384FeFD22E753229922D6693d0E","BancorFormula":"0x56ca74cd7b31609a8ba666308f089e0d5e2d0584","DonationsStaking":"0xa30F00b4b2d02d1E02f48B645B04E60125dF6D49","network":"kovan-mainnet","networkId":42},"fuse":{"UBIScheme":"0xD85D794b7eb00749763e851EEAE37C5d862B9fb3","FirstClaimPool":"0x6CF223eE3c5f95CF97065de35757247E04EaaAe3","GoodDollar":"0xeE724540706296ebad65aeA2515Efe0949F97Ae6","Reputation":"0x1cb566802E61E7f661183F5d9A14645d7620CC8d","Identity":"0x30e1403C075dB97fD9FE02b114cEbea5acce38b7","Avatar":"0x07B41192DD74172576a443C7B28DDC3dC2CE3074","Controller":"0x903a6Ba8b5A43FBd34a511fB5Cf193CE8dc8907B","AbsoluteVote":"0x2170E9A5b72f143cdf9C2fc93fa9d6A9b67CD632","SchemeRegistrar":"0x7edb872c75e86fE53F828D65ad75B0B5862A0c2b","UpgradeScheme":"0xD142A79BAB57fed1FEed4734dFe33473d707EeCF","AdminWallet":"0xf61e08a98B446856eE3fbD6597D3698a1a138565","UBI":"0xCC9B1382b0Ae9D80E81eCB1863DcE8685a044603","SignupBonus":"0xcdC704D3dEA0FcFD1Cae95dfdCB7883632E171b2","OneTimePayments":"0x94079dF920115c5296Cc06AE6D8F29E077906246","FuseFaucet":"0xEEcc2620fb1EaC08Af5923B4D1D54d4703FBb29B","ProxyAdmin":"0xA74F8Ca91bA870608A909A9685e4a984Bbc068b5","Invites":"0x4218263062854C3953EF61699a85231b524A896a","HomeBridge":"0x628980264f86b20BbF4181f55a35602fEe6B4E6F"},"fuse-mainnet":{"FundManager":"0x6D5e39FC226958Ae60438cDe72E7ac4c46e8182c","DAIStaking":"0x49380979206Ea1E274A93d4912cA0950DE695E81","Reserve":"0xdAF541b3a4E1764D438D13F6D6C31157fec47A5e","MarketMaker":"0x01c5f99574235C5380e4fF9975Df58e387d6f9c4","Contribution":"0xd9dD31139a544Df145cf10cC73e7FC1Db33971Fa","DAI":"0xB5E5D0F8C0cbA267CD3D7035d6AdC8eBA7Df7Cdd","cDAI":"0x6ce27497a64fffb5517aa4aee908b1e7eb63b9ff","MainnetBridge":"0xF4aae0922718116fBeb60b49bbB2A66cbFaAC5E7","UBIScheme":"0xa611cb08E1b6ECdee4a9Db5caD045729de9ea1b1","network":"fuse-mainnet","networkId":3,"ForeignBridge":"0xEE0756A5394721e54A092F9aEbd525DD3A2Ace8d","GoodDollar":"0xd76135e33B9ee4F1bF1D57Ec18bBBC11AFf30941","Reputation":"0x5925F6Bf62147D2b14B85e6dCB979e3D1A81Dbb1","Identity":"0x13973e242C75091E605844F816b9a8E211929559","Avatar":"0xB7D068E9e4235176FA51c5971081117DFE5e7F75","Controller":"0xd6513d7145a208d94E508BAB2E4bE31f6dce5147","AbsoluteVote":"0x57312053C36A226Df13B01089218A5f9951D3f9c","SchemeRegistrar":"0xe1fe3f17c0C3C3333eFC54b07B92639fB765fdcd","UpgradeScheme":"0xAce125eDD5591F33653b856c6C2ADD4CA2Bf64Cd","UBI":"0x0000000000000000000000000000000000000000","SignupBonus":"0x0000000000000000000000000000000000000000","OneTimePayments":"0x0000000000000000000000000000000000000000","HomeBridge":"0x0000000000000000000000000000000000000000","ProxyAdmin":"0xE383e9D08e3e4f76CBb4a6953aF343E7bbcc6e98","DonationsStaking":"0x424e48447c1230544711a96b903C79ef6EB9e14C","COMP":"0xf76d4a441e4ba86a923ce32b89aff89dbccaa075"},"production":{"UBISchemeOld":"0xAACbaaB8571cbECEB46ba85B5981efDB8928545e","UBIScheme":"0xD7aC544F8A570C4d8764c3AAbCF6870CBD960D0D","FirstClaimPool":"0x18BcdF79A724648bF34eb06701be81bD072A2384","GoodDollar":"0x495d133B938596C9984d462F007B676bDc57eCEC","Reputation":"0x0be7C592374EE0bD0CcBFC76Be758a138BcaEc6E","Identity":"0xFa8d865A962ca8456dF331D78806152d3aC5B84F","Avatar":"0xf96dADc6D71113F6500e97590760C924dA1eF70e","Controller":"0xBcE053b99e22158f8B62f4DBFbEdE1f936b2D4e4","AbsoluteVote":"0x795CED99774430DF8902D8699388924a213A5aA6","SchemeRegistrar":"0x12F706FaafCBf8093282Dba0c40eD0D4Eb5CAF54","UpgradeScheme":"0x653c67Be5b3739708e84B61641253822405d78D8","AdminWallet":"0x9F75dAcB77419b87f568d417eBc84346e134144E","UBI":"0x0000000000000000000000000000000000000000","SignupBonus":"0x0000000000000000000000000000000000000000","OneTimePayments":"0xd9Aa86e0Ddb932bD78ab8c71C1B98F83cF610Bd4","HomeBridge":"0xD39021DB018E2CAEadb4B2e6717D31550e7918D0","ForeignBridge":"0x0000000000000000000000000000000000000000","network":"production","networkId":122,"FuseFaucet":"0x01ab5966C1d742Ae0CFF7f14cC0F4D85156e83d9","ProxyAdmin":"0x57179b2A8eB019157b0C3E761cdB26c82C982a3B","Invites":"0xCa2F09c3ccFD7aD5cB9276918Bd1868f2b922ea0","FuseStaking":"0xA199F0C353E25AdF022378B0c208D600f39a6505"},"production-mainnet":{"FundManager":"0xbDFD60f3aE73329D33ebe17d78383DEfd72643Ad","DAIStaking":"0xEa12bB3917cf6aE2FDE97cE4756177703426d41F","Reserve":"0x5C16960F2Eeba27b7de4F1F6e84E616C1977e070","MarketMaker":"0xEDbE438Cd865992fDB72dd252E6055A71b02BE72","Contribution":"0x8eEC64bb6807c0178f96277cCE6a334B4e565E5C","DAI":"0x6B175474E89094C44Da98b954EedeAC495271d0F","cDAI":"0x5d3a536E4D6DbD6114cc1Ead35777bAB948E3643","ForeignBridge":"0xD5D11eE582c8931F336fbcd135e98CEE4DB8CCB0","GoodDollar":"0x67C5870b4A41D4Ebef24d2456547A03F1f3e094B","Reputation":"0xCb4a6aF3b15D64E8f50B3cea54c4f481d9E434C1","Identity":"0x76e76e10Ac308A1D54a00f9df27EdCE4801F288b","Avatar":"0x1ecFD1afb601C406fF0e13c3485f2d75699b6817","Controller":"0x95C0d9dCEA1E243ED696F34CAc5e6559C3c128a3","AbsoluteVote":"0xf6b5F7a885CBc57d739aDBEe76E52A70Bc04D795","SchemeRegistrar":"0x098148534aC15A44CFF52387bA81Ed929589eCAf","UpgradeScheme":"0xF9B357d83BDAD6881feb09d909095872B93203d0","UBI":"0x0000000000000000000000000000000000000000","SignupBonus":"0x0000000000000000000000000000000000000000","OneTimePayments":"0x0000000000000000000000000000000000000000","HomeBridge":"0x0000000000000000000000000000000000000000","network":"production-mainnet","networkId":1,"ProxyAdmin":"0xA2db14C68aB35e620fEA5bF07d65e9bff84c994C","DonationsStaking":"0x93FB057EeC37aBc11D955d1C09e6A0d218F35CfF"},"staging":{"FuseFaucet":"0xDfCb356c9bd420263aC56D7980f409AcE9050896","ProxyAdmin":"0x2Ea4aAA8351CfE63B537E81Cd4a13c435B945C1D","Invites":"0x7d5FC799dE6fB6a30161684f27320BAcAdBf4126","ProxyAdmin2":"0x23D8492444DA663fcb2bDa8cA9A0e84989D1f59e","GoodDollar":"0x100b8fd10ff8DC43fda45E636B4BB1eE6088270a","Reputation":"0x0CA09cA67B42272b83a05346545329DE5B30b398","Identity":"0x104efFcBDddae9cd4813b8A05Ecd6A17BaBfE6d9","Avatar":"0xcA9E4D51bc496F0b661E9fa02d25E4f67Dd88870","Controller":"0x7CBA0778748960145F3E56b3285255064D86709D","AbsoluteVote":"0x7b58A5737440Bc05ca3972fDeFf8ac3bA984536B","SchemeRegistrar":"0x0E79f80809180aB8FAE189D4e76fC814672d9a40","AdminWallet":"0x8b0Ec4aFaEE9974233c29fa52cC5D2493FB81D45","UpgradeScheme":"0xfC9F6F5E3ff7BAAB3fEf82e66f56917D625ba38B","OneTimePayments":"0x2b5Ef42bc3D1BEfCbA20E3233DeDadD2439B8Ac2","HomeBridge":"0x53f6Bd6Da1564f5B00D2069d8E0F316AF859fb99","UBIScheme":"0x57ab55C54ffC3f92544766D683645c8ED03Cc543","FirstClaimPool":"0x1EA5564a28F34107b99dC591f142537404329762","network":"staging","networkId":122},"staging-mainnet":{"GoodDollar":"0x4738C5e91C4F809da21DD0Df4B5aD5f699878C1c","Reputation":"0x49920f0bb0E099755Ad61B5EB23b807aE1B5caFe","Identity":"0xfb5dAF44cd18Db7b96DB3F9c6E411D65fcf4f372","Avatar":"0x3BC91a65f53dACBd2336C04AC060741f70dCd187","Controller":"0x589F7ae100a7dbd80DC512208b7a0F457A041BE6","AbsoluteVote":"0x11e7716de4B5bC9A1dBc93184b27aC2134CA6E42","SchemeRegistrar":"0x4F151834efb18108080716d1467b397FAA87cF66","FundManager":"0x483a044D792b2Ca0373956444c7e7db36b7DBc56","DAIStaking":"0xE6876231d1a5905Abed03E4C613E427b0357ec0b","Reserve":"0x5810950BF9184F286f1C33b2cf80533D2CB274AF","MarketMaker":"0xAE64E29c78056fB221099A1Ece5fB7D91cA27918","Contribution":"0x7cC2CcDA5483e721778C4040B1DbD23B3Ab1B4A5","DAI":"0xB5E5D0F8C0cbA267CD3D7035d6AdC8eBA7Df7Cdd","cDAI":"0x6ce27497a64fffb5517aa4aee908b1e7eb63b9ff","UpgradeScheme":"0xbd879865b649B7605c27cAa6A54e0f6B9Efb74b2","ForeignBridge":"0xEDA39475415f1A2944a467Aa6359CB4C1c3ed50f","COMP":"0xf76d4a441e4ba86a923ce32b89aff89dbccaa075","network":"staging-mainnet","networkId":3},"dapptest":{"Reserve":"0x4AE7ae2ddeb53bE55aC1dF732DB6bd82fE375DBe","FundManager":"0xc8074ACFfa93DC3783e14147734E088babA5bb02","GoodDollar":"0xE96FE3879991d1BBDA70EdC2Dca97d6891884891","Identity":"0x6d824682aA66da4e6738c6f3e16cC15fe9ce6F79","Avatar":"0x671857BCE3F4a5D22C85ee1bed0B683A893AF3C9","Controller":"0x781376b0094C9cA54210fF1A12F437B27239228A","AbsoluteVote":"0x2A7EC1a948C356c3D5cf0b275B0FAa4Df10701D5","SchemeRegistrar":"0x009eb8A8a1B7C4d48C721E47894346477d2f6647","UpgradeScheme":"0x70F804060040bAb7E443b0F4334d356B7a6D4bAc","DAI":"0xd3aAA70197b22116c6732a964edC09C853AaC941","cDAI":"0xdB52E4853b6A40D2972E6797E0BDBDb3eB761966","COMP":"0x72b46c86aA67f2aBa435414f410bb48300C064Bf","USDC":"0x6cA80f28E672632A8c9f1Ec9b7Fff00E70898f5C","Contribution":"0x4417E9B86Be5d09331eF8B5a98Af4589228F476E","DAIStaking":"0xE076341997771AB62fe184d1101BCd78d18053e2","MarketMaker":"0xE8aB4B54E9209522D387343D50e37b7a540056D1","UBIScheme":"0xA4e9C96b5FfA721223a3f360b9d4d25613c37Fc5","FirstClaimPool":"0xe3963EF7CC3044B64842d0AAe7F2Bf1543D341Ec","HomeBridge":"0xe14EbF1e8e8c39C1cf075fe1582f54392C97d8FE","ForeignBridge":"0xe14EbF1e8e8c39C1cf075fe1582f54392C97d8FE","BancorFormula":"0xFb3A7D4cdA276f3Ed98E4ACA2D6318BCd9751859","DonationsStaking":"0x5654740BF119bdC3214485e82D73358E56d7B759","UniswapRouter":"0x18a0503B232224B2f8954ADB2391B623Bc6A8960","DAIUsdOracle":"0xF8D306e484890EaDEB108A02357Cb496204f7716","COMPUsdOracle":"0x492f33E4701D9bd42a133c1b5AB1e4ac8333c590","USDCUsdOracle":"0xe7fA8a2D1DD0Bd3F766e04ccFC50061891A4641e","AAVEUsdOracle":"0x867e1Ccb964654A1074627b0C6557b0ccEb869C4","AaveLendingPool":"0xF758A89A9EbA1F6d74d32d9C00edC78E8e27fC6a","GasPriceOracle":"0x165f39D300c3546Fa8453E183910B042858C012f","DAIEthOracle":"0xddac1165475aC243Ea39915b62Cd0092f24aE931","ETHUsdOracle":"0xc538A445f35dD3b8f49853BDAC9D7DbF90eCcbC4","AaveIncentiveController":"0x51f6983a5f0602b10cA772BFB50EaFfA1822Cb98","AdminWallet":"0x8493F51fA07a9bB978a8AD45f7185A26C1185b9E","OneTimePayments":"0x8be34D7830d446747B95Aa3ace0eaA4FF19b2007","network":"dapptest","networkId":4447},"dapptest-mainnet":{"Reserve":"0x4AE7ae2ddeb53bE55aC1dF732DB6bd82fE375DBe","FundManager":"0xc8074ACFfa93DC3783e14147734E088babA5bb02","GoodDollar":"0xE96FE3879991d1BBDA70EdC2Dca97d6891884891","Identity":"0x6d824682aA66da4e6738c6f3e16cC15fe9ce6F79","Avatar":"0x671857BCE3F4a5D22C85ee1bed0B683A893AF3C9","Controller":"0x781376b0094C9cA54210fF1A12F437B27239228A","AbsoluteVote":"0x2A7EC1a948C356c3D5cf0b275B0FAa4Df10701D5","SchemeRegistrar":"0x009eb8A8a1B7C4d48C721E47894346477d2f6647","UpgradeScheme":"0x70F804060040bAb7E443b0F4334d356B7a6D4bAc","DAI":"0xd3aAA70197b22116c6732a964edC09C853AaC941","cDAI":"0xdB52E4853b6A40D2972E6797E0BDBDb3eB761966","COMP":"0x72b46c86aA67f2aBa435414f410bb48300C064Bf","USDC":"0x6cA80f28E672632A8c9f1Ec9b7Fff00E70898f5C","Contribution":"0x4417E9B86Be5d09331eF8B5a98Af4589228F476E","DAIStaking":"0xE076341997771AB62fe184d1101BCd78d18053e2","MarketMaker":"0xE8aB4B54E9209522D387343D50e37b7a540056D1","UBIScheme":"0xA4e9C96b5FfA721223a3f360b9d4d25613c37Fc5","FirstClaimPool":"0xe3963EF7CC3044B64842d0AAe7F2Bf1543D341Ec","HomeBridge":"0xe14EbF1e8e8c39C1cf075fe1582f54392C97d8FE","ForeignBridge":"0xe14EbF1e8e8c39C1cf075fe1582f54392C97d8FE","BancorFormula":"0xFb3A7D4cdA276f3Ed98E4ACA2D6318BCd9751859","DonationsStaking":"0x5654740BF119bdC3214485e82D73358E56d7B759","UniswapRouter":"0x18a0503B232224B2f8954ADB2391B623Bc6A8960","DAIUsdOracle":"0xF8D306e484890EaDEB108A02357Cb496204f7716","COMPUsdOracle":"0x492f33E4701D9bd42a133c1b5AB1e4ac8333c590","USDCUsdOracle":"0xe7fA8a2D1DD0Bd3F766e04ccFC50061891A4641e","AAVEUsdOracle":"0x867e1Ccb964654A1074627b0C6557b0ccEb869C4","AaveLendingPool":"0xF758A89A9EbA1F6d74d32d9C00edC78E8e27fC6a","GasPriceOracle":"0x165f39D300c3546Fa8453E183910B042858C012f","DAIEthOracle":"0xddac1165475aC243Ea39915b62Cd0092f24aE931","ETHUsdOracle":"0xc538A445f35dD3b8f49853BDAC9D7DbF90eCcbC4","AaveIncentiveController":"0x51f6983a5f0602b10cA772BFB50EaFfA1822Cb98","AdminWallet":"0x8493F51fA07a9bB978a8AD45f7185A26C1185b9E","OneTimePayments":"0x8be34D7830d446747B95Aa3ace0eaA4FF19b2007","network":"dapptest","networkId":4447},"test-mainnet":{"Reserve":"0xB8357F7f41125d4b24AD052c1b7288BeF5C43446","FundManager":"0x80bfecFce361Ed9E00b0E9Bc023E0EACa6917De5","GoodDollar":"0x53DE0F59992D932020ad00CF4ABEe89051F8961d","Identity":"0x66a2BECe75FCE45ddFe2C06216CE9350a4c46498","Avatar":"0xB8FC6cFAb3E190e648aac2d7aB69d466f3674bDB","Controller":"0x86851c91c15A49Ba4a9Cc9859f2d84C47b7aD91d","AbsoluteVote":"0x11Dc91d71c05D82f0232493D814A6AF41a229B4c","SchemeRegistrar":"0xe87fD3Cd67850cA11859c8be9B060E8B0FE9853C","UpgradeScheme":"0xBb976201B607f16dc76586dB8Ca5EF6C50C41c22","DAI":"0x63766F0efAa46a86E9055bB46e41ff7bc64CBEA2","cDAI":"0x24ef01de6baE76eE73Da210940A296F739d87952","COMP":"0x3C3297C2Be0F0C51b604dC0A798cF610d7406De2","USDC":"0x8B8776BEDB1eD89Ab6BD2388bCbef3C579ca53b9","Contribution":"0x770ace66dd84B035F71FfC977448032EE688604d","DAIStaking":"0x604B179ce5607ed63def24D54f3Bce01d6FaC1B6","MarketMaker":"0x7Cf1C7d93Cf18b37FEbb03D02565FBC8887d906C","UBIScheme":"0xB970e0fFd20AA28BeC62b1c0717836310d3fF324","FirstClaimPool":"0x59E0b0C67a8f14BE8C5855C95CdD2ba95a7f2BbB","HomeBridge":"0x9F95c870a4104603630CBEDBbbd56c6465Cc8A58","ForeignBridge":"0x9F95c870a4104603630CBEDBbbd56c6465Cc8A58","BancorFormula":"0x1aaaD333A7d363a8576779B71BF589580cC9D82E","DonationsStaking":"0x980ea9f1a0C36e1E5f3B6BD451bEf8a7Fe661f97","UniswapRouter":"0xef2fEa1e2231c85416d09Dc74ca57eD79884C3A6","DAIUsdOracle":"0x6397866132887b206EEA19f910730443E71a8CfB","COMPUsdOracle":"0x6f3203B069cfb6e408ddFa6040d3FD1f26C22F48","USDCUsdOracle":"0x79613D7834Ad35EE8dC3F9298030eaADc2A8c250","AAVEUsdOracle":"0x743F3Ae880D7357690b5ff6C5f16110d9294F352","AaveLendingPool":"0x1BA1f90A3eB0e59421B54Dbf876119987587C0C3","GasPriceOracle":"0xED2c0B4fAE32e94a8e3A96a2F999A235ef95a746","DAIEthOracle":"0x2B09d54B5cA65dEB169c29c2D3e01cc3Dd214cd3","ETHUsdOracle":"0x57a7b5cD15eA2c64A48104482837519B81a0619a","AaveIncentiveController":"0xFE0730c6426b87BEBE9bf73474B1310F93617822","AdminWallet":"0x30474Ce2DE03045B8D0AE76F8a30DbfC8f000cea","OneTimePayments":"0x6C3c8F75da59F5880D9e60b8f8ae639c2bC2E1DA","network":"test-mainnet","networkId":4447},"test":{"Reserve":"0xA388228A1fA75a5F5844226E2874d7EE4d940256","FundManager":"0xe4FEed16F54b4244C174b408Ba3B5F1f19DD1E4D","GoodDollar":"0x040F0292f908c83BdEcCAE7600344503F2a20691","Identity":"0x473A31861aB89d5D7a78E7efc57ad31d84ED5343","Avatar":"0xB3cbA81d4ce278661E26E2107936A014efc31343","Controller":"0x75B282FdEaEce36C6E9363F30010058c284D9199","AbsoluteVote":"0xD7559ba7a3f22B4055a9e88cBDC0EC1Ffd422af1","SchemeRegistrar":"0xf070f5a2Ddf4d106502235597bd42fd9eDaF7bFE","UpgradeScheme":"0x47834D4241A7A5188A253CC0203AB49D4621a069","DAI":"0xB3a1e45D60f9394bC4327f5Dc46dB56D8a3c3688","cDAI":"0x1f720E7952650ED8Ca142feBD52aCBe8b7A21741","COMP":"0xD83C9f1B0DaFb1992eF92ac62D6509e54AD4eD48","USDC":"0x8E02433C31B51ABe3Ac65908d59eF82ddB52714F","Contribution":"0xB4059a6808Af368A69d12FBbD104Bb6B9c37e629","DAIStaking":"0x73Be4F9bD5323ceEC603149186862c86dDa2BB23","MarketMaker":"0xe7213b68DC25bf30bC7f1DE9BAead075c66979F9","UBIScheme":"0x2C328D592819524F741A88A18572372CCE196782","FirstClaimPool":"0xd3aF095DE5D1419ADabE47a48d6110e37236A97F","HomeBridge":"0xc90C13734D20e27904dF248FB850f50C81CE3642","ForeignBridge":"0xc90C13734D20e27904dF248FB850f50C81CE3642","BancorFormula":"0x0d6e43d4d7944408d9a5A10BC57B4348d61cD764","DonationsStaking":"0x329058C12E8B269BFA0896c8705b427c5Dd26b96","UniswapRouter":"0x8F9DedBD504580f9E966C006dad0E51EA8CC5A00","DAIUsdOracle":"0x36C6262F266386f1011e03a5882A0B6AC6940c95","COMPUsdOracle":"0x60aC4593ecea0B22216218c4D0f27533ebB01CB6","USDCUsdOracle":"0x41dBB528b5662caD3b8183754C0517b409E00Fa8","AAVEUsdOracle":"0xa0945a7aC164287B4e6B8f234337820807074a29","AaveLendingPool":"0x289A06513a4C4d9bF7DBD201c01BA2492fe6e03C","GasPriceOracle":"0x48D662D1D10505f9bf25c993f30c40118A37E7a2","DAIEthOracle":"0x53E447841DD116a640b1983873601Ade94388702","ETHUsdOracle":"0x81B2b28442e743954C8678b0d2e4be396976F561","AaveIncentiveController":"0x426dcD4fa088D7b33797Da0002bF36a669B398D5","AdminWallet":"0x65E001B67f1aD28FF337C4F6e1cA52F31F5Eb9Fd","OneTimePayments":"0x4D5D3FaE9b08a4FA2aEB9Bc0d86E3dB3b3126438","network":"test","networkId":4447}}
1
+ {"hardhat":{"Reserve":"0x09635F643e140090A9A8Dcd712eD6285858ceBef","GoodDollar":"0x8e80FFe6Dc044F4A766Afd6e5a8732Fe0977A493","Identity":"0xA51c1fc2f0D1a1b8494Ed1FE312d7C3a78Ed91C0","Avatar":"0x6F1216D1BFe15c98520CA1434FC1d9D57AC95321","Controller":"0xdAD42D43ecE0f6e8da8c2BCbC6A25FF6b3922C58","AbsoluteVote":"0x5f3f1dBD7B74C6B46e8c44f98792A1dAf8d69154","SchemeRegistrar":"0xCD8a1C3ba11CF5ECfa6267617243239504a98d90","UpgradeScheme":"0xb7278A61aa25c888815aFC32Ad3cC52fF24fE575","DAI":"0x5FbDB2315678afecb367f032d93F642f64180aa3","cDAI":"0xDc64a140Aa3E981100a9becA4E685f962f0cF6C9","COMP":"0x9fE46736679d2D9a65F0992F2272dE9f3c7fa6e0","Contribution":"0xa85233C63b9Ee964Add6F2cffe00Fd84eb32338f","DAIStaking":"0xc3e53F4d16Ae77Db1c982e75a937B9f60FE63690","MarketMaker":"0x7a2088a1bFc9d81c55368AE168C2C02570cB814F","UBIScheme":"0x36C02dA8a0983159322a80FFE9F24b1acfF8B570","FirstClaimPool":"0x9d4454B023096f34B160D6B654540c56A1F81688","Bridge":"0x2279B7A0a67DB372996a5FaB50D91eAA73d2eBe6","BancorFormula":"0x0165878A594ca255338adfa4d48449f69242Eb8F","DonationsStaking":"0x84eA74d481Ee0A5332c457a4d796187F6Ba67fEB","UniswapRouter":"0x1429859428C0aBc9C2C47C8Ee9FBaf82cFA0F20f","DAIUsdOracle":"0x1fA02b2d6A771842690194Cf62D91bdd92BfE28d","COMPUsdOracle":"0x04C89607413713Ec9775E14b954286519d836FEf","network":"develop","networkId":4447},"develop-mainnet":{"Reserve":"0x959922bE3CAee4b8Cd9a407cc3ac1C251C2007B1","GoodDollar":"0x9bd03768a7DCc129555dE410FF8E85528A4F88b5","Identity":"0x0165878A594ca255338adfa4d48449f69242Eb8F","Avatar":"0x61c36a8d610163660E21a8b7359e1Cac0C9133e1","Controller":"0x23dB4a08f2272df049a4932a4Cc3A6Dc1002B33E","AbsoluteVote":"0x9E545E3C0baAB3E08CdfD552C960A1050f373042","SchemeRegistrar":"0x1613beB3B2C4f22Ee086B2b38C1476A3cE7f78E8","UpgradeScheme":"0xa82fF9aFd8f496c3d6ac40E2a0F282E47488CFc9","DAI":"0x5FbDB2315678afecb367f032d93F642f64180aa3","cDAI":"0x9fE46736679d2D9a65F0992F2272dE9f3c7fa6e0","COMP":"0xe7f1725E7734CE288F8367e1Bb143E90bb3F0512","USDC":"0x942ED2fa862887Dc698682cc6a86355324F0f01e","Contribution":"0xA51c1fc2f0D1a1b8494Ed1FE312d7C3a78Ed91C0","DAIStaking":"0x68B1D87F95878fE05B998F19b66F4baba5De1aed","MarketMaker":"0x9A676e781A523b5d0C0e43731313A708CB607508","UBIScheme":"0xE6E340D132b5f46d1e472DebcD681B2aBc16e57E","FirstClaimPool":"0x67d269191c92Caf3cD7723F116c85e6E9bf55933","Bridge":"0xDc64a140Aa3E981100a9becA4E685f962f0cF6C9","BancorFormula":"0xCf7Ed3AccA5a467e9e704C703E8D87F634fB0Fc9","DonationsStaking":"0x3Aa5ebB10DC797CAC828524e59A333d0A371443c","UniswapRouter":"0x4826533B4897376654Bb4d4AD88B7faFD0C98528","DAIUsdOracle":"0x9d4454B023096f34B160D6B654540c56A1F81688","COMPUsdOracle":"0x5eb3Bc0a489C5A8288765d2336659EbCA68FCd00","USDCUsdOracle":"0x114e375B6FCC6d6fCb68c7A1d407E652C54F25FB","AAVEUsdOracle":"0x976C214741b4657bd99DFD38a5c0E3ac5C99D903","network":"develop","networkId":4447,"AaveLendingPool":"0x8D81A3DCd17030cD5F23Ac7370e4Efb10D2b3cA4","AaveIncentiveController":"0xcC4c41415fc68B2fBf70102742A83cDe435e0Ca7"},"develop":{"Reserve":"0x162A433068F51e18b7d13932F27e66a3f99E6890","GoodDollar":"0xfa7a32340ea54A3FF70942B33090a8a9A1B50214","Identity":"0xCD8a1C3ba11CF5ECfa6267617243239504a98d90","Avatar":"0x9FA5072032B7a7DCc49533401cec1C47bfcf350d","Controller":"0x37B37064d97eADAcc4d7A0cbC673b5C2932b673c","AbsoluteVote":"0x172076E0166D1F9Cc711C77Adf8488051744980C","SchemeRegistrar":"0xBEc49fA140aCaA83533fB00A2BB19bDdd0290f25","UpgradeScheme":"0x4EE6eCAD1c2Dae9f525404De8555724e3c35d07B","DAI":"0x36C02dA8a0983159322a80FFE9F24b1acfF8B570","cDAI":"0x4c5859f0F772848b2D91F1D83E2Fe57935348029","COMP":"0x809d550fca64d94Bd9F66E60752A544199cfAC3D","USDC":"0x2BB8B93F585B43b06F3d523bf30C203d3B6d4BD4","Contribution":"0xFD471836031dc5108809D173A067e8486B9047A3","DAIStaking":"0x5081a39b8A5f0E35a8D959395a630b68B74Dd30f","MarketMaker":"0x1429859428C0aBc9C2C47C8Ee9FBaf82cFA0F20f","AdminWallet":"0x138A24c2DFD29b2db632a0c9E71E55621f5A745d","UBIScheme":"0x0355B7B8cb128fA5692729Ab3AAa199C1753f726","FirstClaimPool":"0x8198f5d8F8CfFE8f9C413d98a0A55aEB8ab9FbB7","Bridge":"0x5f3f1dBD7B74C6B46e8c44f98792A1dAf8d69154","BancorFormula":"0x1291Be112d480055DaFd8a610b7d1e203891C274","DonationsStaking":"0x1fA02b2d6A771842690194Cf62D91bdd92BfE28d","UniswapRouter":"0x1c85638e118b37167e9298c2268758e058DdfDA0","DAIUsdOracle":"0x49fd2BE640DB2910c2fAb69bB8531Ab6E76127ff","COMPUsdOracle":"0x4631BCAbD6dF18D94796344963cB60d44a4136b6","USDCUsdOracle":"0xc6B407503dE64956Ad3cF5Ab112cA4f56AA13517","AAVEUsdOracle":"0x6A47346e722937B60Df7a1149168c0E76DD6520f","AaveLendingPool":"0xB7ca895F81F20e05A5eb11B05Cbaab3DAe5e23cd","AaveIncentiveController":"0xd0EC100F1252a53322051a95CF05c32f0C174354","network":"develop","networkId":4447},"kovan-mainnet":{"Reserve":"0x7330BbDd9Fc99Cc82bE0078fB643C1DDbF9be03f","GoodDollar":"0x46183b8822BB7Cbf27E10A1acc95DfB3b5f0ec79","Identity":"0xCA95A91238a9fbE2458aaC54Cf00F99eCAB14E0a","Avatar":"0x2cA80e8e6FE46066D432204dFbC902328e912Be6","Controller":"0x3778F359a108F48959562eCfe5CE677050c509D3","AbsoluteVote":"0xFC62b61205a9Df9699D0181896603e57A30Aca28","SchemeRegistrar":"0xaF633Cf595F0695aBa029F210D364e1C4282986e","UpgradeScheme":"0xAC7671a932287a69A5E1115BEde2687436Ebed7e","DAI":"0x4f96fe3b7a6cf9725f59d353f723c1bdb64ca6aa","cDAI":"0xf0d0eb522cfa50b716b3b1604c4f0fa6f04376ad","COMP":"0x61460874a7196d6a22d1ee4922473664b3e95270","Contribution":"0xb8e03cE6bb337A1161ca6E53DE568efBe5650eaF","DAIStaking":"0xd222e5557395c5b62b682Cbfd50567908592703d","MarketMaker":"0xD7cF329519e749B5f3c220e644660c61Acc24DAA","Bridge":"0x26D044e8a7bcD384FeFD22E753229922D6693d0E","BancorFormula":"0x56ca74cd7b31609a8ba666308f089e0d5e2d0584","DonationsStaking":"0xa30F00b4b2d02d1E02f48B645B04E60125dF6D49","network":"kovan-mainnet","networkId":42},"fuse":{"UBIScheme":"0xD85D794b7eb00749763e851EEAE37C5d862B9fb3","FirstClaimPool":"0x6CF223eE3c5f95CF97065de35757247E04EaaAe3","GoodDollar":"0xeE724540706296ebad65aeA2515Efe0949F97Ae6","Reputation":"0x1cb566802E61E7f661183F5d9A14645d7620CC8d","Identity":"0x30e1403C075dB97fD9FE02b114cEbea5acce38b7","Avatar":"0x07B41192DD74172576a443C7B28DDC3dC2CE3074","Controller":"0x903a6Ba8b5A43FBd34a511fB5Cf193CE8dc8907B","AbsoluteVote":"0x2170E9A5b72f143cdf9C2fc93fa9d6A9b67CD632","SchemeRegistrar":"0x7edb872c75e86fE53F828D65ad75B0B5862A0c2b","UpgradeScheme":"0xD142A79BAB57fed1FEed4734dFe33473d707EeCF","AdminWallet":"0xf61e08a98B446856eE3fbD6597D3698a1a138565","UBI":"0xCC9B1382b0Ae9D80E81eCB1863DcE8685a044603","SignupBonus":"0xcdC704D3dEA0FcFD1Cae95dfdCB7883632E171b2","OneTimePayments":"0x94079dF920115c5296Cc06AE6D8F29E077906246","FuseFaucet":"0xEEcc2620fb1EaC08Af5923B4D1D54d4703FBb29B","ProxyAdmin":"0xA74F8Ca91bA870608A909A9685e4a984Bbc068b5","Invites":"0x4218263062854C3953EF61699a85231b524A896a","HomeBridge":"0x628980264f86b20BbF4181f55a35602fEe6B4E6F"},"fuse-mainnet":{"FundManager":"0x6D5e39FC226958Ae60438cDe72E7ac4c46e8182c","DAIStaking":"0x49380979206Ea1E274A93d4912cA0950DE695E81","Reserve":"0xdAF541b3a4E1764D438D13F6D6C31157fec47A5e","MarketMaker":"0x01c5f99574235C5380e4fF9975Df58e387d6f9c4","Contribution":"0xd9dD31139a544Df145cf10cC73e7FC1Db33971Fa","DAI":"0xB5E5D0F8C0cbA267CD3D7035d6AdC8eBA7Df7Cdd","cDAI":"0x6ce27497a64fffb5517aa4aee908b1e7eb63b9ff","MainnetBridge":"0xF4aae0922718116fBeb60b49bbB2A66cbFaAC5E7","UBIScheme":"0xa611cb08E1b6ECdee4a9Db5caD045729de9ea1b1","network":"fuse-mainnet","networkId":3,"ForeignBridge":"0xEE0756A5394721e54A092F9aEbd525DD3A2Ace8d","GoodDollar":"0xd76135e33B9ee4F1bF1D57Ec18bBBC11AFf30941","Reputation":"0x5925F6Bf62147D2b14B85e6dCB979e3D1A81Dbb1","Identity":"0x13973e242C75091E605844F816b9a8E211929559","Avatar":"0xB7D068E9e4235176FA51c5971081117DFE5e7F75","Controller":"0xd6513d7145a208d94E508BAB2E4bE31f6dce5147","AbsoluteVote":"0x57312053C36A226Df13B01089218A5f9951D3f9c","SchemeRegistrar":"0xe1fe3f17c0C3C3333eFC54b07B92639fB765fdcd","UpgradeScheme":"0xAce125eDD5591F33653b856c6C2ADD4CA2Bf64Cd","UBI":"0x0000000000000000000000000000000000000000","SignupBonus":"0x0000000000000000000000000000000000000000","OneTimePayments":"0x0000000000000000000000000000000000000000","HomeBridge":"0x0000000000000000000000000000000000000000","ProxyAdmin":"0xE383e9D08e3e4f76CBb4a6953aF343E7bbcc6e98","DonationsStaking":"0x424e48447c1230544711a96b903C79ef6EB9e14C","COMP":"0xf76d4a441e4ba86a923ce32b89aff89dbccaa075"},"production":{"UBISchemeOld":"0xAACbaaB8571cbECEB46ba85B5981efDB8928545e","UBIScheme":"0xD7aC544F8A570C4d8764c3AAbCF6870CBD960D0D","FirstClaimPool":"0x18BcdF79A724648bF34eb06701be81bD072A2384","GoodDollar":"0x495d133B938596C9984d462F007B676bDc57eCEC","Reputation":"0x0be7C592374EE0bD0CcBFC76Be758a138BcaEc6E","Identity":"0xFa8d865A962ca8456dF331D78806152d3aC5B84F","Avatar":"0xf96dADc6D71113F6500e97590760C924dA1eF70e","Controller":"0xBcE053b99e22158f8B62f4DBFbEdE1f936b2D4e4","AbsoluteVote":"0x795CED99774430DF8902D8699388924a213A5aA6","SchemeRegistrar":"0x12F706FaafCBf8093282Dba0c40eD0D4Eb5CAF54","UpgradeScheme":"0x653c67Be5b3739708e84B61641253822405d78D8","AdminWallet":"0x9F75dAcB77419b87f568d417eBc84346e134144E","UBI":"0x0000000000000000000000000000000000000000","SignupBonus":"0x0000000000000000000000000000000000000000","OneTimePayments":"0xd9Aa86e0Ddb932bD78ab8c71C1B98F83cF610Bd4","HomeBridge":"0xD39021DB018E2CAEadb4B2e6717D31550e7918D0","ForeignBridge":"0x0000000000000000000000000000000000000000","network":"production","networkId":122,"FuseFaucet":"0x01ab5966C1d742Ae0CFF7f14cC0F4D85156e83d9","ProxyAdmin":"0x57179b2A8eB019157b0C3E761cdB26c82C982a3B","Invites":"0xCa2F09c3ccFD7aD5cB9276918Bd1868f2b922ea0","FuseStaking":"0xA199F0C353E25AdF022378B0c208D600f39a6505"},"production-mainnet":{"FundManager":"0xbDFD60f3aE73329D33ebe17d78383DEfd72643Ad","DAIStaking":"0xEa12bB3917cf6aE2FDE97cE4756177703426d41F","Reserve":"0x5C16960F2Eeba27b7de4F1F6e84E616C1977e070","MarketMaker":"0xEDbE438Cd865992fDB72dd252E6055A71b02BE72","Contribution":"0x8eEC64bb6807c0178f96277cCE6a334B4e565E5C","DAI":"0x6B175474E89094C44Da98b954EedeAC495271d0F","cDAI":"0x5d3a536E4D6DbD6114cc1Ead35777bAB948E3643","ForeignBridge":"0xD5D11eE582c8931F336fbcd135e98CEE4DB8CCB0","GoodDollar":"0x67C5870b4A41D4Ebef24d2456547A03F1f3e094B","Reputation":"0xCb4a6aF3b15D64E8f50B3cea54c4f481d9E434C1","Identity":"0x76e76e10Ac308A1D54a00f9df27EdCE4801F288b","Avatar":"0x1ecFD1afb601C406fF0e13c3485f2d75699b6817","Controller":"0x95C0d9dCEA1E243ED696F34CAc5e6559C3c128a3","AbsoluteVote":"0xf6b5F7a885CBc57d739aDBEe76E52A70Bc04D795","SchemeRegistrar":"0x098148534aC15A44CFF52387bA81Ed929589eCAf","UpgradeScheme":"0xF9B357d83BDAD6881feb09d909095872B93203d0","UBI":"0x0000000000000000000000000000000000000000","SignupBonus":"0x0000000000000000000000000000000000000000","OneTimePayments":"0x0000000000000000000000000000000000000000","HomeBridge":"0x0000000000000000000000000000000000000000","network":"production-mainnet","networkId":1,"ProxyAdmin":"0xA2db14C68aB35e620fEA5bF07d65e9bff84c994C","DonationsStaking":"0x93FB057EeC37aBc11D955d1C09e6A0d218F35CfF"},"staging":{"FuseFaucet":"0xDfCb356c9bd420263aC56D7980f409AcE9050896","ProxyAdmin":"0x2Ea4aAA8351CfE63B537E81Cd4a13c435B945C1D","Invites":"0x7d5FC799dE6fB6a30161684f27320BAcAdBf4126","ProxyAdmin2":"0x23D8492444DA663fcb2bDa8cA9A0e84989D1f59e","GoodDollar":"0x100b8fd10ff8DC43fda45E636B4BB1eE6088270a","Reputation":"0x0CA09cA67B42272b83a05346545329DE5B30b398","Identity":"0x104efFcBDddae9cd4813b8A05Ecd6A17BaBfE6d9","Avatar":"0xcA9E4D51bc496F0b661E9fa02d25E4f67Dd88870","Controller":"0x7CBA0778748960145F3E56b3285255064D86709D","AbsoluteVote":"0x7b58A5737440Bc05ca3972fDeFf8ac3bA984536B","SchemeRegistrar":"0x0E79f80809180aB8FAE189D4e76fC814672d9a40","AdminWallet":"0x8b0Ec4aFaEE9974233c29fa52cC5D2493FB81D45","UpgradeScheme":"0xfC9F6F5E3ff7BAAB3fEf82e66f56917D625ba38B","OneTimePayments":"0x2b5Ef42bc3D1BEfCbA20E3233DeDadD2439B8Ac2","HomeBridge":"0x53f6Bd6Da1564f5B00D2069d8E0F316AF859fb99","UBIScheme":"0x57ab55C54ffC3f92544766D683645c8ED03Cc543","FirstClaimPool":"0x1EA5564a28F34107b99dC591f142537404329762","network":"staging","networkId":122},"staging-mainnet":{"GoodDollar":"0x4738C5e91C4F809da21DD0Df4B5aD5f699878C1c","Reputation":"0x49920f0bb0E099755Ad61B5EB23b807aE1B5caFe","Identity":"0xfb5dAF44cd18Db7b96DB3F9c6E411D65fcf4f372","Avatar":"0x3BC91a65f53dACBd2336C04AC060741f70dCd187","Controller":"0x589F7ae100a7dbd80DC512208b7a0F457A041BE6","AbsoluteVote":"0x11e7716de4B5bC9A1dBc93184b27aC2134CA6E42","SchemeRegistrar":"0x4F151834efb18108080716d1467b397FAA87cF66","FundManager":"0x483a044D792b2Ca0373956444c7e7db36b7DBc56","DAIStaking":"0xE6876231d1a5905Abed03E4C613E427b0357ec0b","Reserve":"0x5810950BF9184F286f1C33b2cf80533D2CB274AF","MarketMaker":"0xAE64E29c78056fB221099A1Ece5fB7D91cA27918","Contribution":"0x7cC2CcDA5483e721778C4040B1DbD23B3Ab1B4A5","DAI":"0xB5E5D0F8C0cbA267CD3D7035d6AdC8eBA7Df7Cdd","cDAI":"0x6ce27497a64fffb5517aa4aee908b1e7eb63b9ff","UpgradeScheme":"0xbd879865b649B7605c27cAa6A54e0f6B9Efb74b2","ForeignBridge":"0xEDA39475415f1A2944a467Aa6359CB4C1c3ed50f","COMP":"0xf76d4a441e4ba86a923ce32b89aff89dbccaa075","network":"staging-mainnet","networkId":3},"dapptest":{"Reserve":"0x4AE7ae2ddeb53bE55aC1dF732DB6bd82fE375DBe","FundManager":"0xc8074ACFfa93DC3783e14147734E088babA5bb02","GoodDollar":"0xE96FE3879991d1BBDA70EdC2Dca97d6891884891","Identity":"0x6d824682aA66da4e6738c6f3e16cC15fe9ce6F79","Avatar":"0x671857BCE3F4a5D22C85ee1bed0B683A893AF3C9","Controller":"0x781376b0094C9cA54210fF1A12F437B27239228A","AbsoluteVote":"0x2A7EC1a948C356c3D5cf0b275B0FAa4Df10701D5","SchemeRegistrar":"0x009eb8A8a1B7C4d48C721E47894346477d2f6647","UpgradeScheme":"0x70F804060040bAb7E443b0F4334d356B7a6D4bAc","DAI":"0xd3aAA70197b22116c6732a964edC09C853AaC941","cDAI":"0xdB52E4853b6A40D2972E6797E0BDBDb3eB761966","COMP":"0x72b46c86aA67f2aBa435414f410bb48300C064Bf","USDC":"0x6cA80f28E672632A8c9f1Ec9b7Fff00E70898f5C","Contribution":"0x4417E9B86Be5d09331eF8B5a98Af4589228F476E","DAIStaking":"0xE076341997771AB62fe184d1101BCd78d18053e2","MarketMaker":"0xE8aB4B54E9209522D387343D50e37b7a540056D1","UBIScheme":"0xA4e9C96b5FfA721223a3f360b9d4d25613c37Fc5","FirstClaimPool":"0xe3963EF7CC3044B64842d0AAe7F2Bf1543D341Ec","HomeBridge":"0xe14EbF1e8e8c39C1cf075fe1582f54392C97d8FE","ForeignBridge":"0xe14EbF1e8e8c39C1cf075fe1582f54392C97d8FE","BancorFormula":"0xFb3A7D4cdA276f3Ed98E4ACA2D6318BCd9751859","DonationsStaking":"0x5654740BF119bdC3214485e82D73358E56d7B759","UniswapRouter":"0x18a0503B232224B2f8954ADB2391B623Bc6A8960","DAIUsdOracle":"0xF8D306e484890EaDEB108A02357Cb496204f7716","COMPUsdOracle":"0x492f33E4701D9bd42a133c1b5AB1e4ac8333c590","USDCUsdOracle":"0xe7fA8a2D1DD0Bd3F766e04ccFC50061891A4641e","AAVEUsdOracle":"0x867e1Ccb964654A1074627b0C6557b0ccEb869C4","AaveLendingPool":"0xF758A89A9EbA1F6d74d32d9C00edC78E8e27fC6a","GasPriceOracle":"0x165f39D300c3546Fa8453E183910B042858C012f","DAIEthOracle":"0xddac1165475aC243Ea39915b62Cd0092f24aE931","ETHUsdOracle":"0xc538A445f35dD3b8f49853BDAC9D7DbF90eCcbC4","AaveIncentiveController":"0x51f6983a5f0602b10cA772BFB50EaFfA1822Cb98","AdminWallet":"0x8493F51fA07a9bB978a8AD45f7185A26C1185b9E","OneTimePayments":"0x8be34D7830d446747B95Aa3ace0eaA4FF19b2007","network":"dapptest","networkId":4447},"dapptest-mainnet":{"Reserve":"0x4AE7ae2ddeb53bE55aC1dF732DB6bd82fE375DBe","FundManager":"0xc8074ACFfa93DC3783e14147734E088babA5bb02","GoodDollar":"0xE96FE3879991d1BBDA70EdC2Dca97d6891884891","Identity":"0x6d824682aA66da4e6738c6f3e16cC15fe9ce6F79","Avatar":"0x671857BCE3F4a5D22C85ee1bed0B683A893AF3C9","Controller":"0x781376b0094C9cA54210fF1A12F437B27239228A","AbsoluteVote":"0x2A7EC1a948C356c3D5cf0b275B0FAa4Df10701D5","SchemeRegistrar":"0x009eb8A8a1B7C4d48C721E47894346477d2f6647","UpgradeScheme":"0x70F804060040bAb7E443b0F4334d356B7a6D4bAc","DAI":"0xd3aAA70197b22116c6732a964edC09C853AaC941","cDAI":"0xdB52E4853b6A40D2972E6797E0BDBDb3eB761966","COMP":"0x72b46c86aA67f2aBa435414f410bb48300C064Bf","USDC":"0x6cA80f28E672632A8c9f1Ec9b7Fff00E70898f5C","Contribution":"0x4417E9B86Be5d09331eF8B5a98Af4589228F476E","DAIStaking":"0xE076341997771AB62fe184d1101BCd78d18053e2","MarketMaker":"0xE8aB4B54E9209522D387343D50e37b7a540056D1","UBIScheme":"0xA4e9C96b5FfA721223a3f360b9d4d25613c37Fc5","FirstClaimPool":"0xe3963EF7CC3044B64842d0AAe7F2Bf1543D341Ec","HomeBridge":"0xe14EbF1e8e8c39C1cf075fe1582f54392C97d8FE","ForeignBridge":"0xe14EbF1e8e8c39C1cf075fe1582f54392C97d8FE","BancorFormula":"0xFb3A7D4cdA276f3Ed98E4ACA2D6318BCd9751859","DonationsStaking":"0x5654740BF119bdC3214485e82D73358E56d7B759","UniswapRouter":"0x18a0503B232224B2f8954ADB2391B623Bc6A8960","DAIUsdOracle":"0xF8D306e484890EaDEB108A02357Cb496204f7716","COMPUsdOracle":"0x492f33E4701D9bd42a133c1b5AB1e4ac8333c590","USDCUsdOracle":"0xe7fA8a2D1DD0Bd3F766e04ccFC50061891A4641e","AAVEUsdOracle":"0x867e1Ccb964654A1074627b0C6557b0ccEb869C4","AaveLendingPool":"0xF758A89A9EbA1F6d74d32d9C00edC78E8e27fC6a","GasPriceOracle":"0x165f39D300c3546Fa8453E183910B042858C012f","DAIEthOracle":"0xddac1165475aC243Ea39915b62Cd0092f24aE931","ETHUsdOracle":"0xc538A445f35dD3b8f49853BDAC9D7DbF90eCcbC4","AaveIncentiveController":"0x51f6983a5f0602b10cA772BFB50EaFfA1822Cb98","AdminWallet":"0x8493F51fA07a9bB978a8AD45f7185A26C1185b9E","OneTimePayments":"0x8be34D7830d446747B95Aa3ace0eaA4FF19b2007","network":"dapptest","networkId":4447},"test-mainnet":{"Reserve":"0x5be5E3995a774B4067785e53200Ec03645C834c6","FundManager":"0xd060c65cA125d9209Ea703136526d6fc3805c833","GoodDollar":"0xbc78D20d67410ef765A9AfBf41D2558fe6F0E8F0","Identity":"0xD7F61C5979BBc9d50B30e7459945726670FFdeA3","Avatar":"0x829a6ea1dDEE4D1deD57A636a1d7dE26bc281e75","Controller":"0x6fB72Ab86E5c03436C0249f8200313594c0A12B1","AbsoluteVote":"0x712e1b726F6149C768fff8572CeA0Bdba23a561B","SchemeRegistrar":"0x2De939A6cC6F53E47f62453029EB62C7e7BE3C8c","UpgradeScheme":"0x36c7b0946e701EA6cE8e101B4C959FF15D0DeE15","DAI":"0xBcA21A2e4c0b2Dc1279a282E6e6d8FaC8d88adAd","cDAI":"0x35BDA1D4f4E4D397d5b81a8cdc7fE183b98F537C","COMP":"0x607c2d79E406a5DC2D1E01b6820dd5a72FbA58C7","USDC":"0xDbB1e2122F297146ea815EA3EFc088854fb2cbaC","Contribution":"0xAd578511086c7b454DAf1f8BFbDCE6ca12dE2497","DAIStaking":"0x7D8Ade77A347Ba6ee34eac0f825Fc37B0A66B268","MarketMaker":"0x526BE3f5A71BFb2Be27fBeb85459F511030b04C2","UBIScheme":"0x502Dcaf7b2a3CE981F1a6c86cc4634b16c7a836f","FirstClaimPool":"0xb3DB53B5173d11C0c096576b52B3686294435B71","HomeBridge":"0x25e67aedBA8aCe016Dd4573df46c50E4F8a97497","ForeignBridge":"0x25e67aedBA8aCe016Dd4573df46c50E4F8a97497","BancorFormula":"0xfC3035f60A3d862E0753eA3D2Eec7679227E8B37","DonationsStaking":"0x67C109F60d55e89907C4d0Ac91103f1A8Ee86E7c","UniswapRouter":"0xD11D98Fe2Be0871E45B459Af22f7dd9FC8c6004d","DAIUsdOracle":"0x0B35E65d024985F51117d6C743F2AE822E70ADfE","COMPUsdOracle":"0xc4b11B176D4194A0175709cac9fEf9DFD40C005A","USDCUsdOracle":"0x86405c109847AdAc4Ad9fe1aE626308D30c7d2dd","AAVEUsdOracle":"0x67da6CA8F829a7A51701Eb3dB2296d349fBC3832","AaveLendingPool":"0x34084eAEbe9Cbc209A85FFe22fa387223CDFB3e8","GasPriceOracle":"0x53F269B876d16F36A3aB0eEC283702e592E51319","DAIEthOracle":"0x0205EE0152C0B67409F808F32D69bf65D4B8304E","ETHUsdOracle":"0xdef31014c9886bd715f4055a140151a7296C0e18","AaveIncentiveController":"0x6e7f85beF7392d9A79C657AE0EdD8CB378379103","AdminWallet":"0xcebe3F283f05A5815C4Af0EEC721692F86e21fD8","OneTimePayments":"0x72325cd72936Cf944BDf0CA6B624C8b1944A80Ab","network":"test-mainnet","networkId":4447},"test":{"Reserve":"0x11e73abC581190B9fe31B804a5877aB5C2754C64","FundManager":"0x60B6Fdb142AFfc43520027efC852C8418a2c436a","GoodDollar":"0xA3E78441e5FeE240167E03Fb9B4569a719340643","Identity":"0xc2837a9Afac387ABe93d49FAE81394892127Cbe5","Avatar":"0xd2B730Fa8FdEeE859ea628A58f186A220531298c","Controller":"0x359980847677b0E7d37cc715d46F62ca8948Dcc1","AbsoluteVote":"0xFE0Ef5a9B7cA4FB1a327f48771cA9b4725063A64","SchemeRegistrar":"0x7B9985adBc2629d3e80C18397837A967399E8EAd","UpgradeScheme":"0x85bdC135Bc56C3707551E9FEa8c5d7e31C82d16a","DAI":"0x050F5F4De07C1298162a675AdA47A5B65bCB32F4","cDAI":"0x776128Ede015F1e4B3FCB9e9365691F412580795","COMP":"0xac81E70942DF7b08238Cb09572b74F400AdE24C1","USDC":"0x112774740cD0D7a3cA68e8F6a7b3d15650821600","Contribution":"0xf16bA2643D03f9f3d6b1e8B66327eC5Fc9b69862","DAIStaking":"0x0c8A72d89AA40B71Ee5F430E89E1681f944DAAc0","MarketMaker":"0x52b6622fa8057b2180E0E87B0da9E3a30093751d","UBIScheme":"0xb8B814Fd019C00888eb34721f87aa82E3f2E1F28","FirstClaimPool":"0x12d73e63281fD1387290D75a66861B5368B4a616","HomeBridge":"0x45534f3e643F6497b562A867EC2D9ABEf94147Fb","ForeignBridge":"0x45534f3e643F6497b562A867EC2D9ABEf94147Fb","BancorFormula":"0x0c41c5af596173c8179c8F4663A8796224ECc31d","DonationsStaking":"0xC2100780F828810bAaeCD3039111006E12B26CF8","UniswapRouter":"0x6863952619b2a5f6556F32Cb05De23CC5d080255","DAIUsdOracle":"0x0C2CbA6148A53F0Aa596a371314cc206B681d0E2","COMPUsdOracle":"0x6Ad76BD51eaa41a125945218aBD920a91Afc633E","USDCUsdOracle":"0xF771D9111454D58D728d731752770B6Bf5Ad35Bf","AAVEUsdOracle":"0x0F9fFED1201De979dBe3A1562463B99bd5e7aB36","AaveLendingPool":"0x2EFBA7923E9A32A4C239BD2f7Da0c5b0e22a909E","GasPriceOracle":"0xe7D757FdeB78A806A72A652ac411738DEbC1670E","DAIEthOracle":"0x1CD1a7E4158Eb444bC55AaE2b89bE7E03a4E6Ae5","ETHUsdOracle":"0xf189e9EBCE19Ca3FC94427e64d4fa64D4118a180","AaveIncentiveController":"0x4Af81C96d19315212358f9E4a774bBcC0390B5f0","AdminWallet":"0x993630d22d60ef03b10DC0d82BEA5Aa71Eb66ea2","OneTimePayments":"0x2476aBF8B523625f548cFAA446324fe61eeD69FC","network":"test","networkId":4447}}
@@ -0,0 +1,65 @@
1
+ import { range, chunk, uniq } from "lodash";
2
+ import { ethers as Ethers } from "hardhat";
3
+ import fetch from "node-fetch";
4
+
5
+ const ONE_DAY = 24 * 60 * 60;
6
+
7
+ const main = async () => {
8
+ const signer = (await Ethers.getSigners())[0];
9
+ console.log("signer:", signer.address);
10
+ const ubiScheme = new Ethers.Contract(
11
+ "0xD7aC544F8A570C4d8764c3AAbCF6870CBD960D0D",
12
+ ["function fishMulti(address[] tofish)"]
13
+ ).connect(signer);
14
+ const twoWeeksAgo = parseInt((Date.now() / 1000).toFixed(0)); //
15
+ //parseInt((Date.now() / 1000).toFixed(0)) - 24 * 60 * 60 * 14;
16
+
17
+ const daysAgo: number[] = range(0, 180, 1);
18
+ let curDay = twoWeeksAgo;
19
+ const allActive = [];
20
+ for (let day of daysAgo) {
21
+ const query = `
22
+ {
23
+ walletStats(first:1000, where: { lastClaimed_lte: ${curDay},lastClaimed_gt: ${
24
+ curDay - ONE_DAY
25
+ } isActiveUser: true }) {
26
+ id
27
+ }
28
+ }
29
+ `;
30
+
31
+ console.log(
32
+ "fetching inactive users since:",
33
+ { curDay, day },
34
+ JSON.stringify({ query })
35
+ );
36
+ const {
37
+ data: { walletStats }
38
+ } = await fetch(
39
+ "https://api.thegraph.com/subgraphs/name/gooddollar/gooddollarfuse",
40
+ {
41
+ method: "post",
42
+ body: JSON.stringify({ query }),
43
+ headers: { "Content-Type": "application/json" }
44
+ }
45
+ ).then(_ => _.json());
46
+
47
+ console.log("got inactive wallets:", walletStats.length);
48
+ if (walletStats) {
49
+ const accounts = walletStats.map(_ => _.id);
50
+ allActive.push(...accounts);
51
+ }
52
+ // for (let tofish of chunk(accounts, 50)) {
53
+ // const tx = await ubiScheme.fishMulti(tofish, { gasLimit: 2000000 });
54
+ // console.log("fishing tx:", tx, tofish);
55
+ // const res = await tx.wait();
56
+ // console.log("fishing tx result:", res);
57
+ // }
58
+
59
+ curDay = curDay - ONE_DAY;
60
+ }
61
+ const unique = uniq(allActive);
62
+ console.log("active claimers:", unique.length);
63
+ };
64
+
65
+ main();
@@ -0,0 +1,150 @@
1
+ import { 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 result = [];
9
+ let balances = {};
10
+ let curPage = 1;
11
+ let maxResult;
12
+ // do {
13
+ // const pages = range(curPage, curPage + 5, 1);
14
+ // curPage += 5;
15
+ // const ps = pages.map(p =>
16
+ // fetch(
17
+ // `https://explorer.fuse.io/api?module=token&action=getTokenHolders&contractaddress=0x495d133B938596C9984d462F007B676bDc57eCEC&page=${p}&offset=10000`
18
+ // )
19
+ // .then(_ => _.json())
20
+ // .then(_ => _.result)
21
+ // );
22
+ // const results = await Promise.all(ps);
23
+ // result = result.concat(...results);
24
+ // maxResult = maxBy(results, "length");
25
+ // console.log(maxResult.length, result.length);
26
+ // } while (maxResult.length === 10000);
27
+ // result.forEach(
28
+ // r => (balances[r.address.toLowerCase()] = { balance: r.value, lastSeen: 0 })
29
+ // );
30
+ // fs.writeFileSync("activeWalletsBalances.json", JSON.stringify(balances));
31
+
32
+ balances = JSON.parse(
33
+ fs.readFileSync("activeWalletsBalances.json").toString()
34
+ );
35
+
36
+ const EPOCH = 60 * 60 * 6;
37
+ const pool = new PromisePool({ concurrency: 30 });
38
+ const lastUsed = {};
39
+ const epochs = range(1596045730, (Date.now() / 1000).toFixed(0), EPOCH);
40
+
41
+ const graphQuery = async (start, skip) => {
42
+ const query = `{
43
+ walletStats(first: 1000 skip:${skip} where: { dateAppeared_gte: ${start} dateAppeared_lt:${
44
+ start + EPOCH
45
+ } }) {
46
+ id
47
+ dateAppeared
48
+ balance
49
+ lastTransactionTo
50
+ lastTransactionFrom
51
+ lastClaimed
52
+ }
53
+ }`;
54
+ // console.log({ query });
55
+ try {
56
+ const { data = {}, errors } = await fetch(
57
+ "https://api.thegraph.com/subgraphs/name/gooddollar/gooddollarfuse",
58
+ {
59
+ method: "POST",
60
+ headers: {
61
+ "Content-Type": "application/json"
62
+ },
63
+ body: JSON.stringify({ query })
64
+ }
65
+ ).then(_ => _.json());
66
+ errors && console.log({ errors });
67
+ if (data?.walletStats?.length === 1000) {
68
+ return data.walletStats.concat(await graphQuery(start, skip + 1000));
69
+ }
70
+ return data.walletStats || [];
71
+ } catch (error) {
72
+ console.log({ query, error });
73
+ return [];
74
+ }
75
+ };
76
+ epochs.forEach(e => {
77
+ pool.add(async () => {
78
+ const walletStats = await graphQuery(e, 0);
79
+ walletStats.forEach(w => {
80
+ balances[w.id.toLowerCase()] = {
81
+ lastSeen: Math.max(
82
+ Number(w.lastClaimed),
83
+ Number(w.lastTransactionFrom),
84
+ Number(w.lastTransactionTo),
85
+ Number(w.dateAppeared)
86
+ ),
87
+ balance: balances[w.id.toLowerCase()]?.balance || w.balance
88
+ };
89
+ });
90
+ console.log({ curDate: e, records: walletStats.length });
91
+ });
92
+ });
93
+
94
+ await pool.all();
95
+ fs.writeFileSync("activeWalletsLastUsed.json", JSON.stringify(balances));
96
+ // console.log({ lastUsed });
97
+ };
98
+
99
+ const etl = async () => {
100
+ /** Convert a 2D array into a CSV string
101
+ */
102
+ function arrayToCsv(data) {
103
+ return data
104
+ .map(
105
+ row =>
106
+ row
107
+ .map(String) // convert every value to String
108
+ .map(v => v.replaceAll('"', '""')) // escape double colons
109
+ .map(v => `"${v}"`) // quote it
110
+ .join(",") // comma-separated
111
+ )
112
+ .join("\r\n"); // rows starting on new lines
113
+ }
114
+
115
+ const balances = JSON.parse(
116
+ fs.readFileSync("activeWalletsLastUsed.json").toString()
117
+ );
118
+
119
+ let result = [];
120
+
121
+ for (let addr in balances) {
122
+ const r = balances[addr];
123
+ if (!r.balance) {
124
+ continue;
125
+ }
126
+ result.push([addr, r.balance / 100, r.lastSeen, false]);
127
+ }
128
+ const top100 = result.slice(0, 100);
129
+ const pool = new PromisePool({ concurrency: 30 });
130
+ const provider = new ethers.providers.JsonRpcBatchProvider(
131
+ "https://rpc.fuse.io"
132
+ );
133
+
134
+ for (let idx in top100) {
135
+ pool.add(async () => {
136
+ const record = top100[idx];
137
+ let isContract =
138
+ (await provider.getCode(record[0]).catch(e => "0x")) !== "0x";
139
+ record[3] = isContract;
140
+ });
141
+ }
142
+ await pool.all();
143
+ console.log({ top100 });
144
+ fs.writeFileSync(
145
+ "activeWalletsLastUsed.csv",
146
+ arrayToCsv(sortBy(result, _ => -Number(_[1])))
147
+ );
148
+ };
149
+ // main().catch(e => console.log(e));
150
+ etl();
@@ -0,0 +1,117 @@
1
+ import { countBy, chunk, difference, flatten, sortBy } from "lodash";
2
+ import fs from "fs";
3
+ import fetch from "node-fetch";
4
+ import { network, ethers, upgrades } from "hardhat";
5
+ import { Contract, Provider, setMulticallAddress } from "ethers-multicall";
6
+ import Identity from "../../artifacts/contracts/Interfaces.sol/IIdentity.json";
7
+
8
+ setMulticallAddress(122, "0x3CE6158b7278Bf6792e014FA7B4f3c6c46fe9410");
9
+ const CLAIM_START_BLOCK = 17896430;
10
+
11
+ const fuseProvider = new ethers.providers.JsonRpcBatchProvider(
12
+ "https://explorer-node.fuse.io/"
13
+ // "https://rpc.fuse.io"
14
+ );
15
+ const ethcallProvider = new Provider(fuseProvider, 122);
16
+
17
+ const GD_FUSE = "0x495d133b938596c9984d462f007b676bdc57ecec";
18
+ const IDENTITY_FUSE = "0xFa8d865A962ca8456dF331D78806152d3aC5B84F";
19
+
20
+ let gd = new ethers.Contract(
21
+ GD_FUSE,
22
+ [
23
+ "event Transfer(address indexed from, address indexed to, uint amount)",
24
+ "function balanceOf(address) view returns(uint256)"
25
+ ],
26
+ fuseProvider
27
+ );
28
+ const gdMulti = new Contract(GD_FUSE, [
29
+ "event Transfer(address indexed from, address indexed to, uint amount)",
30
+ "function balanceOf(address) view returns(uint256)"
31
+ ]);
32
+
33
+ const hasBalanceToRefund = async wallets => {
34
+ const chunks = chunk(wallets, 1000);
35
+ let balances = {};
36
+ for (let batch of chunks) {
37
+ const calls = batch.map(a => gdMulti.balanceOf(a));
38
+ const result = await ethcallProvider.all(calls);
39
+ console.log("batch:", batch.length, calls.length, result.length);
40
+ batch.forEach((d, i) => (balances[d] = result[i]));
41
+ }
42
+ console.log("got balances for:", Object.entries(balances).length);
43
+ const hasBalance = countBy(balances, v => v >= 9622260);
44
+ const noBalance = Object.entries(balances).filter(([k, v]) => v < 9622260);
45
+ console.log({ hasBalance });
46
+ return noBalance.map(_ => _[0]);
47
+ };
48
+
49
+ const hasRefunded = async wallets => {
50
+ const curBlock = (await gd.provider.getBlockNumber()) - 1;
51
+ console.log({ curBlock });
52
+ let toBlock = CLAIM_START_BLOCK + 50000;
53
+ let refunded = [];
54
+ let startBlock = CLAIM_START_BLOCK;
55
+ while (startBlock <= curBlock) {
56
+ const events = await gd.queryFilter(
57
+ gd.filters.Transfer(
58
+ undefined,
59
+ "0xd253A5203817225e9768C05E5996d642fb96bA86"
60
+ ),
61
+ startBlock,
62
+ toBlock
63
+ );
64
+ const accounts = events
65
+ .filter(e => e.args.amount >= 9622260)
66
+ .map(_ => _.args.from.toLowerCase());
67
+ refunded.push(...accounts);
68
+ console.log("has refunded:", {
69
+ startBlock,
70
+ toBlock,
71
+ accounts: accounts.length
72
+ });
73
+ toBlock = Math.min(curBlock, toBlock + 50000);
74
+ startBlock += 50000;
75
+ }
76
+ return refunded;
77
+ };
78
+
79
+ const whereIsTheMoney = async noBalance => {
80
+ let targets = [];
81
+ for (let batch of chunk(noBalance, 100)) {
82
+ const tos = await Promise.all(
83
+ batch.map(async a => {
84
+ const e = await gd.queryFilter(
85
+ gd.filters.Transfer(a),
86
+ CLAIM_START_BLOCK
87
+ );
88
+ const tos = e.filter(_ => _.args.amount > 1000000).map(_ => _.args.to);
89
+ return tos;
90
+ })
91
+ );
92
+ targets.push(...flatten(tos));
93
+ }
94
+ const targetCounter = countBy(targets, _ => _);
95
+ console.log(
96
+ "transfer targets:",
97
+ sortBy(Object.entries(targetCounter), "1").reverse()
98
+ );
99
+ };
100
+ const main = async () => {
101
+ const wallets = JSON.parse(fs.readFileSync("torefund.json").toString()).map(
102
+ _ => _.toLowerCase()
103
+ );
104
+ console.log("Total Claimed:", wallets.length);
105
+ const refunded = await hasRefunded(wallets);
106
+ const notRefunded = difference(wallets, refunded);
107
+ console.log(
108
+ "refunded:",
109
+ refunded.length,
110
+ "not refunded:",
111
+ notRefunded.length
112
+ );
113
+
114
+ const noBalanceToRefund = await hasBalanceToRefund(notRefunded);
115
+ await whereIsTheMoney(noBalanceToRefund);
116
+ };
117
+ main().catch(e => console.log(e));