@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.
- package/artifacts/abis/BulkProof.min.json +1 -1
- package/artifacts/abis/DistributionBridgeMock.min.json +1 -0
- package/artifacts/abis/DistributionHelper.min.json +1 -0
- package/artifacts/abis/DistributionHelperTest.min.json +1 -0
- package/artifacts/abis/DistributionHelperTestHelper.min.json +1 -0
- package/artifacts/abis/ERC20.min.json +1 -1
- package/artifacts/abis/GoodDollarMintBurnWrapper.min.json +1 -0
- package/artifacts/abis/GoodDollarStaking.min.json +1 -0
- package/artifacts/abis/GoodDollarStakingMock.min.json +1 -0
- package/artifacts/abis/GoodReserveCDai.min.json +1 -1
- package/artifacts/abis/IERC2917.min.json +1 -1
- package/artifacts/abis/IGoodDollarStakingTest.min.json +1 -0
- package/artifacts/abis/IMultichainRouter.min.json +1 -0
- package/artifacts/abis/IRouter.min.json +1 -0
- package/artifacts/abis/IWrapper.min.json +1 -0
- package/artifacts/abis/Math64x64.min.json +1 -0
- package/artifacts/abis/MultichainBridgeHelper.min.json +1 -0
- package/artifacts/abis/MultichainRouterMock.min.json +1 -0
- package/artifacts/abis/OverMintTester.min.json +1 -1
- package/artifacts/abis/PausableControl.min.json +1 -0
- package/artifacts/abis/RewardsMinter.min.json +1 -0
- package/artifacts/abis/StakingMockFixedAPY.min.json +1 -0
- package/artifacts/abis/StakingRewardsFixedAPY.min.json +1 -0
- package/artifacts/abis/TokenOperation.min.json +1 -0
- package/artifacts/abis/cERC20.min.json +1 -1
- package/artifacts/contracts/DAOStackInterfaces.sol/Avatar.dbg.json +1 -1
- package/artifacts/contracts/DAOStackInterfaces.sol/Controller.dbg.json +1 -1
- package/artifacts/contracts/DAOStackInterfaces.sol/GlobalConstraintInterface.dbg.json +1 -1
- package/artifacts/contracts/DAOStackInterfaces.sol/IntVoteInterface.dbg.json +1 -1
- package/artifacts/contracts/DAOStackInterfaces.sol/ReputationInterface.dbg.json +1 -1
- package/artifacts/contracts/DAOStackInterfaces.sol/SchemeRegistrar.dbg.json +1 -1
- package/artifacts/contracts/Interfaces.sol/AggregatorV3Interface.dbg.json +1 -1
- package/artifacts/contracts/Interfaces.sol/ERC20.dbg.json +1 -1
- package/artifacts/contracts/Interfaces.sol/ERC20.json +13 -0
- package/artifacts/contracts/Interfaces.sol/IAaveIncentivesController.dbg.json +1 -1
- package/artifacts/contracts/Interfaces.sol/IAdminWallet.dbg.json +1 -1
- package/artifacts/contracts/Interfaces.sol/IDonationStaking.dbg.json +1 -1
- package/artifacts/contracts/Interfaces.sol/IERC2917.dbg.json +1 -1
- package/artifacts/contracts/Interfaces.sol/IERC2917.json +13 -0
- package/artifacts/contracts/Interfaces.sol/IFirstClaimPool.dbg.json +1 -1
- package/artifacts/contracts/Interfaces.sol/IGoodDollar.dbg.json +1 -1
- package/artifacts/contracts/Interfaces.sol/IGoodStaking.dbg.json +1 -1
- package/artifacts/contracts/Interfaces.sol/IHasRouter.dbg.json +1 -1
- package/artifacts/contracts/Interfaces.sol/IIdentity.dbg.json +1 -1
- package/artifacts/contracts/Interfaces.sol/ILendingPool.dbg.json +1 -1
- package/artifacts/contracts/Interfaces.sol/IMultichainRouter.dbg.json +4 -0
- package/artifacts/contracts/Interfaces.sol/IMultichainRouter.json +67 -0
- package/artifacts/contracts/Interfaces.sol/INameService.dbg.json +1 -1
- package/artifacts/contracts/Interfaces.sol/IUBIScheme.dbg.json +1 -1
- package/artifacts/contracts/Interfaces.sol/ProxyAdmin.dbg.json +1 -1
- package/artifacts/contracts/Interfaces.sol/Reserve.dbg.json +1 -1
- package/artifacts/contracts/Interfaces.sol/Staking.dbg.json +1 -1
- package/artifacts/contracts/Interfaces.sol/Uniswap.dbg.json +1 -1
- package/artifacts/contracts/Interfaces.sol/UniswapFactory.dbg.json +1 -1
- package/artifacts/contracts/Interfaces.sol/UniswapPair.dbg.json +1 -1
- package/artifacts/contracts/Interfaces.sol/cERC20.dbg.json +1 -1
- package/artifacts/contracts/Interfaces.sol/cERC20.json +13 -0
- package/artifacts/contracts/fuseFaucet/FuseFaucet.sol/FuseFaucet.dbg.json +1 -1
- package/artifacts/contracts/fuseFaucet/FuseFaucet.sol/FuseFaucet.json +2 -2
- package/artifacts/contracts/governance/ClaimersDistribution.sol/ClaimersDistribution.dbg.json +1 -1
- package/artifacts/contracts/governance/ClaimersDistribution.sol/ClaimersDistribution.json +2 -2
- package/artifacts/contracts/governance/CompoundVotingMachine.sol/CompoundVotingMachine.dbg.json +1 -1
- package/artifacts/contracts/governance/CompoundVotingMachine.sol/CompoundVotingMachine.json +2 -2
- package/artifacts/contracts/governance/GReputation.sol/GReputation.dbg.json +1 -1
- package/artifacts/contracts/governance/GReputation.sol/GReputation.json +2 -2
- package/artifacts/contracts/governance/GoodDollarStaking.sol/GoodDollarStaking.dbg.json +4 -0
- package/artifacts/contracts/governance/GoodDollarStaking.sol/GoodDollarStaking.json +1322 -0
- package/artifacts/contracts/governance/GoodDollarStaking.sol/RewardsMinter.dbg.json +4 -0
- package/artifacts/contracts/governance/GoodDollarStaking.sol/RewardsMinter.json +35 -0
- package/artifacts/contracts/governance/GovernanceStaking.sol/GovernanceStaking.dbg.json +1 -1
- package/artifacts/contracts/governance/GovernanceStaking.sol/GovernanceStaking.json +2 -2
- package/artifacts/contracts/governance/MultiBaseGovernanceShareField.sol/MultiBaseGovernanceShareField.dbg.json +1 -1
- package/artifacts/contracts/governance/Reputation.sol/Reputation.dbg.json +1 -1
- package/artifacts/contracts/governance/Reputation.sol/Reputation.json +2 -2
- package/artifacts/contracts/governance/StakersDistribution.sol/StakersDistribution.dbg.json +1 -1
- package/artifacts/contracts/governance/StakersDistribution.sol/StakersDistribution.json +2 -2
- package/artifacts/contracts/invite/InvitesV1.sol/InvitesV1.dbg.json +1 -1
- package/artifacts/contracts/invite/InvitesV1.sol/InvitesV1.json +2 -2
- package/artifacts/contracts/mocks/AaveMock.sol/AaveMock.dbg.json +1 -1
- package/artifacts/contracts/mocks/DAIMock.sol/DAIMock.dbg.json +1 -1
- package/artifacts/contracts/mocks/DecimalsMock.sol/DecimalsMock.dbg.json +1 -1
- package/artifacts/contracts/mocks/DistributionBridgeMock.sol/DistributionBridgeMock.dbg.json +4 -0
- package/artifacts/contracts/mocks/DistributionBridgeMock.sol/DistributionBridgeMock.json +152 -0
- package/artifacts/contracts/mocks/DistributionHelperTest.sol/DistributionHelperTest.dbg.json +4 -0
- package/artifacts/contracts/mocks/DistributionHelperTest.sol/DistributionHelperTest.json +662 -0
- package/artifacts/contracts/mocks/DistributionHelperTest.sol/DistributionHelperTestHelper.dbg.json +4 -0
- package/artifacts/contracts/mocks/DistributionHelperTest.sol/DistributionHelperTestHelper.json +680 -0
- package/artifacts/contracts/mocks/GoodCompoundStakingTest.sol/GoodCompoundStakingTest.dbg.json +1 -1
- package/artifacts/contracts/mocks/GoodCompoundStakingTest.sol/GoodCompoundStakingTest.json +2 -2
- package/artifacts/contracts/mocks/GoodDollarStakingMock.sol/GoodDollarStakingMock.dbg.json +4 -0
- package/artifacts/contracts/mocks/GoodDollarStakingMock.sol/GoodDollarStakingMock.json +1322 -0
- package/artifacts/contracts/mocks/GoodFundManagerTest.sol/GoodFundManagerTest.dbg.json +1 -1
- package/artifacts/contracts/mocks/GoodFundManagerTest.sol/GoodFundManagerTest.json +2 -2
- package/artifacts/contracts/mocks/IncentiveControllerMock.sol/IncentiveControllerMock.dbg.json +1 -1
- package/artifacts/contracts/mocks/LendingPoolMock.sol/LendingPoolMock.dbg.json +1 -1
- package/artifacts/contracts/mocks/MultichainRouterMock.sol/IWrapper.dbg.json +4 -0
- package/artifacts/contracts/mocks/MultichainRouterMock.sol/IWrapper.json +59 -0
- package/artifacts/contracts/mocks/MultichainRouterMock.sol/MultichainRouterMock.dbg.json +4 -0
- package/artifacts/contracts/mocks/MultichainRouterMock.sol/MultichainRouterMock.json +81 -0
- package/artifacts/contracts/mocks/OverMintTester.sol/IGoodDollarStakingTest.dbg.json +4 -0
- package/artifacts/contracts/mocks/OverMintTester.sol/IGoodDollarStakingTest.json +49 -0
- package/artifacts/contracts/mocks/OverMintTester.sol/OverMintTester.dbg.json +1 -1
- package/artifacts/contracts/mocks/OverMintTester.sol/OverMintTester.json +4 -4
- package/artifacts/contracts/mocks/OverMintTesterRegularStake.sol/OverMintTesterRegularStake.dbg.json +1 -1
- package/artifacts/contracts/mocks/OverMintTesterRegularStake.sol/OverMintTesterRegularStake.json +2 -2
- package/artifacts/contracts/mocks/SixteenDecimalsTokenMock.sol/SixteenDecimalsTokenMock.dbg.json +1 -1
- package/artifacts/contracts/mocks/StakingMockFixedAPY.sol/StakingMockFixedAPY.dbg.json +4 -0
- package/artifacts/contracts/mocks/StakingMockFixedAPY.sol/StakingMockFixedAPY.json +682 -0
- package/artifacts/contracts/mocks/SwapHelperTest.sol/SwapHelperTest.dbg.json +1 -1
- package/artifacts/contracts/mocks/SwapHelperTest.sol/SwapHelperTest.json +2 -2
- package/artifacts/contracts/mocks/TwentyDecimalsTokenMock.sol/TwentyDecimalsTokenMock.dbg.json +1 -1
- package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock.dbg.json +1 -1
- package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock.json +2 -2
- package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock2.dbg.json +1 -1
- package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock2.json +2 -2
- package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock3.dbg.json +1 -1
- package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock3.json +2 -2
- package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock4.dbg.json +1 -1
- package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock4.json +2 -2
- package/artifacts/contracts/mocks/UsdcMock.sol/USDCMock.dbg.json +1 -1
- package/artifacts/contracts/mocks/cBATMock.sol/cBATMock.dbg.json +1 -1
- package/artifacts/contracts/mocks/cDAILowWorthMock.sol/cDAILowWorthMock.dbg.json +1 -1
- package/artifacts/contracts/mocks/cDAIMock.sol/cDAIMock.dbg.json +1 -1
- package/artifacts/contracts/mocks/cDAINonMintableMock.sol/cDAINonMintableMock.dbg.json +1 -1
- package/artifacts/contracts/mocks/cDecimalsMock.sol/cDecimalsMock.dbg.json +1 -1
- package/artifacts/contracts/mocks/cSDTMock.sol/cSDTMock.dbg.json +1 -1
- package/artifacts/contracts/mocks/cUSDCMock.sol/cUSDCMock.dbg.json +1 -1
- package/artifacts/contracts/reserve/DistributionHelper.sol/DistributionHelper.dbg.json +4 -0
- package/artifacts/contracts/reserve/DistributionHelper.sol/DistributionHelper.json +662 -0
- package/artifacts/contracts/reserve/ExchangeHelper.sol/ExchangeHelper.dbg.json +1 -1
- package/artifacts/contracts/reserve/ExchangeHelper.sol/ExchangeHelper.json +2 -2
- package/artifacts/contracts/reserve/GoodMarketMaker.sol/GoodMarketMaker.dbg.json +1 -1
- package/artifacts/contracts/reserve/GoodMarketMaker.sol/GoodMarketMaker.json +2 -2
- package/artifacts/contracts/reserve/GoodReserveCDai.sol/ContributionCalc.dbg.json +1 -1
- package/artifacts/contracts/reserve/GoodReserveCDai.sol/GoodReserveCDai.dbg.json +1 -1
- package/artifacts/contracts/reserve/GoodReserveCDai.sol/GoodReserveCDai.json +75 -35
- package/artifacts/contracts/staking/BaseShareField.sol/BaseShareField.dbg.json +1 -1
- package/artifacts/contracts/staking/BaseShareField.sol/BaseShareField.json +2 -2
- package/artifacts/contracts/staking/BaseShareFieldV2.sol/BaseShareFieldV2.dbg.json +1 -1
- package/artifacts/contracts/staking/BaseShareFieldV2.sol/BaseShareFieldV2.json +2 -2
- package/artifacts/contracts/staking/DonationsStaking.sol/DonationsStaking.dbg.json +1 -1
- package/artifacts/contracts/staking/DonationsStaking.sol/DonationsStaking.json +2 -2
- package/artifacts/contracts/staking/FuseStakingV3.sol/FuseStakingV3.dbg.json +1 -1
- package/artifacts/contracts/staking/FuseStakingV3.sol/FuseStakingV3.json +2 -2
- package/artifacts/contracts/staking/FuseStakingV3.sol/IConsensus.dbg.json +1 -1
- package/artifacts/contracts/staking/FuseStakingV3.sol/PegSwap.dbg.json +1 -1
- package/artifacts/contracts/staking/GoodFundManager.sol/GoodFundManager.dbg.json +1 -1
- package/artifacts/contracts/staking/GoodFundManager.sol/GoodFundManager.json +2 -2
- package/artifacts/contracts/staking/SimpleStaking.sol/SimpleStaking.dbg.json +1 -1
- package/artifacts/contracts/staking/SimpleStakingV2.sol/SimpleStakingV2.dbg.json +1 -1
- package/artifacts/contracts/staking/UniswapV2SwapHelper.sol/UniswapV2SwapHelper.dbg.json +1 -1
- package/artifacts/contracts/staking/UniswapV2SwapHelper.sol/UniswapV2SwapHelper.json +2 -2
- package/artifacts/contracts/staking/aave/AaveStakingFactory.sol/AaveStakingFactory.dbg.json +1 -1
- package/artifacts/contracts/staking/aave/AaveStakingFactory.sol/AaveStakingFactory.json +2 -2
- package/artifacts/contracts/staking/aave/GoodAaveStaking.sol/GoodAaveStaking.dbg.json +1 -1
- package/artifacts/contracts/staking/aave/GoodAaveStaking.sol/GoodAaveStaking.json +2 -2
- package/artifacts/contracts/staking/aave/GoodAaveStakingV2.sol/GoodAaveStakingV2.dbg.json +1 -1
- package/artifacts/contracts/staking/aave/GoodAaveStakingV2.sol/GoodAaveStakingV2.json +2 -2
- package/artifacts/contracts/staking/compound/CompoundStakingFactory.sol/CompoundStakingFactory.dbg.json +1 -1
- package/artifacts/contracts/staking/compound/CompoundStakingFactory.sol/CompoundStakingFactory.json +2 -2
- package/artifacts/contracts/staking/compound/GoodCompoundStaking.sol/GoodCompoundStaking.dbg.json +1 -1
- package/artifacts/contracts/staking/compound/GoodCompoundStaking.sol/GoodCompoundStaking.json +2 -2
- package/artifacts/contracts/staking/compound/GoodCompoundStakingV2.sol/GoodCompoundStakingV2.dbg.json +1 -1
- package/artifacts/contracts/staking/compound/GoodCompoundStakingV2.sol/GoodCompoundStakingV2.json +2 -2
- package/artifacts/contracts/staking/utils/Math64X64.sol/Math64x64.dbg.json +4 -0
- package/artifacts/contracts/staking/utils/Math64X64.sol/Math64x64.json +10 -0
- package/artifacts/contracts/staking/utils/StakingRewardsFixedAPY.sol/StakingRewardsFixedAPY.dbg.json +4 -0
- package/artifacts/contracts/staking/utils/StakingRewardsFixedAPY.sol/StakingRewardsFixedAPY.json +268 -0
- package/artifacts/contracts/ubi/UBIScheme.sol/UBIScheme.dbg.json +1 -1
- package/artifacts/contracts/ubi/UBIScheme.sol/UBIScheme.json +2 -2
- package/artifacts/contracts/utils/AdminWallet.sol/AdminWallet.dbg.json +1 -1
- package/artifacts/contracts/utils/AdminWallet.sol/AdminWallet.json +2 -2
- package/artifacts/contracts/utils/BancorFormula.sol/BancorFormula.dbg.json +1 -1
- package/artifacts/contracts/utils/BulkProof.sol/BulkProof.dbg.json +1 -1
- package/artifacts/contracts/utils/BulkProof.sol/BulkProof.json +3 -34
- package/artifacts/contracts/utils/DAOContract.sol/DAOContract.dbg.json +1 -1
- package/artifacts/contracts/utils/DAOContract.sol/DAOContract.json +2 -2
- package/artifacts/contracts/utils/DAOUpgradeableContract.sol/DAOUpgradeableContract.dbg.json +1 -1
- package/artifacts/contracts/utils/DAOUpgradeableContract.sol/DAOUpgradeableContract.json +2 -2
- package/artifacts/contracts/utils/DSMath.sol/DSMath.dbg.json +1 -1
- package/artifacts/contracts/utils/DataTypes.sol/DataTypes.dbg.json +1 -1
- package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/GoodDollarMintBurnWrapper.dbg.json +4 -0
- package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/GoodDollarMintBurnWrapper.json +1263 -0
- package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/IRouter.dbg.json +4 -0
- package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/IRouter.json +59 -0
- package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/PausableControl.dbg.json +4 -0
- package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/PausableControl.json +69 -0
- package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/TokenOperation.dbg.json +4 -0
- package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/TokenOperation.json +10 -0
- package/artifacts/contracts/utils/MultichainBridgeHelper.sol/MultichainBridgeHelper.dbg.json +4 -0
- package/artifacts/contracts/utils/MultichainBridgeHelper.sol/MultichainBridgeHelper.json +79 -0
- package/artifacts/contracts/utils/NameService.sol/NameService.dbg.json +1 -1
- package/artifacts/contracts/utils/ProtocolUpgrade.sol/OldMarketMaker.dbg.json +1 -1
- package/artifacts/contracts/utils/ProtocolUpgrade.sol/ProtocolUpgrade.dbg.json +1 -1
- package/artifacts/contracts/utils/ProtocolUpgrade.sol/ProtocolUpgrade.json +2 -2
- package/artifacts/contracts/utils/ProtocolUpgradeFuse.sol/ProtocolUpgradeFuse.dbg.json +1 -1
- package/artifacts/contracts/utils/ProtocolUpgradeFuse.sol/ProtocolUpgradeFuse.json +2 -2
- package/artifacts/contracts/utils/ProtocolUpgradeFuseRecover.sol/ProtocolUpgradeFuseRecover.dbg.json +1 -1
- package/artifacts/contracts/utils/ProtocolUpgradeFuseRecover.sol/ProtocolUpgradeFuseRecover.json +2 -2
- package/artifacts/contracts/utils/ProtocolUpgradeRecover.sol/ProtocolUpgradeRecover.dbg.json +1 -1
- package/artifacts/contracts/utils/ProtocolUpgradeRecover.sol/ProtocolUpgradeRecover.json +2 -2
- package/artifacts/contracts/utils/ProxyFactory1967.sol/ERC1967Proxy.dbg.json +1 -1
- package/artifacts/contracts/utils/ProxyFactory1967.sol/ProxyFactory1967.dbg.json +1 -1
- package/artifacts/contracts/utils/ReputationTestHelper.sol/ReputationTestHelper.dbg.json +1 -1
- package/artifacts/contracts/utils/ReputationTestHelper.sol/ReputationTestHelper.json +2 -2
- package/contracts/Interfaces.sol +20 -0
- package/contracts/governance/GoodDollarStaking.sol +510 -0
- package/contracts/governance/MultiBaseGovernanceShareField.sol +1 -0
- package/contracts/mocks/DistributionBridgeMock.sol +50 -0
- package/contracts/mocks/DistributionHelperTest.sol +22 -0
- package/contracts/mocks/GoodDollarStakingMock.sol +24 -0
- package/contracts/mocks/MultichainRouterMock.sol +38 -0
- package/contracts/mocks/OverMintTester.sol +39 -25
- package/contracts/mocks/StakingMockFixedAPY.sol +78 -0
- package/contracts/reserve/DistributionHelper.sol +142 -0
- package/contracts/reserve/GoodReserveCDai.sol +95 -41
- package/contracts/staking/utils/Math64X64.sol +268 -0
- package/contracts/staking/utils/StakingRewardsFixedAPY.sol +336 -0
- package/contracts/utils/BulkProof.sol +10 -10
- package/contracts/utils/GoodDollarMintBurnWrapper.sol +638 -0
- package/contracts/utils/MultichainBridgeHelper.sol +39 -0
- package/hardhat.config.ts +5 -3
- package/package.json +7 -4
- package/patches/@openzeppelin+hardhat-upgrades+1.7.0.patch.depracate +67 -0
- package/releases/deployment.json +10 -3
- package/releases/olddao.json +1 -1
- package/scripts/analytics/activeUsersCount.ts +65 -0
- package/scripts/analytics/activeWalletsStats.ts +150 -0
- package/scripts/analytics/claimIncidentStats.ts +117 -0
- package/scripts/analytics/faucetStats.ts +103 -0
- package/scripts/analytics/goodHolders.ts +50 -0
- package/scripts/{misc → analytics}/goodgiveback.ts +0 -0
- package/scripts/governance/airdropCalculation.ts +1 -0
- package/scripts/multichain-deploy/basicdao-deploy.ts +20 -5
- package/scripts/multichain-deploy/gdSavings-deploy.ts +232 -0
- package/scripts/multichain-deploy/helpers.ts +73 -8
- package/scripts/multichain-deploy/multichainWrapper-deploy.ts +56 -0
- package/scripts/multichain-deploy/nonubiDistribution-deploy.ts +170 -0
- package/scripts/voltageswaps.ts +47 -0
- package/test/governance/ClaimersDistribution.test.ts +1 -1
- package/test/governance/GoodDollarStaking.gd.test.ts +559 -0
- package/test/governance/GoodDollarStaking.good.test.ts +998 -0
- package/test/governance/GovernanceStaking.test.ts +43 -0
- package/test/helpers.ts +9 -12
- package/test/reserve/DistributionHelper.test.ts +394 -0
- package/test/reserve/GoodReserveCDai.distribution.test.ts +296 -0
- package/test/reserve/GoodReserveCDai.gdx.test.ts +21 -16
- package/test/reserve/GoodReserveCDai.pause.test.ts +116 -0
- package/test/staking/StakingRewardsFixedAPY.test.ts +900 -0
- package/test/utils/AdminWallet.test.ts +35 -6
- package/test/utils/GoodDollarMintBurnWrapper.test.ts +796 -0
- package/tsconfig.json +4 -9
- package/types/AccessControl.ts +361 -0
- package/types/CERC20.ts +25 -0
- package/types/DistributionBridgeMock.ts +251 -0
- package/types/DistributionHelper.ts +908 -0
- package/types/DistributionHelperTest.ts +909 -0
- package/types/DistributionHelperTestHelper.ts +945 -0
- package/types/ERC165.ts +104 -0
- package/types/ERC20.ts +101 -49
- package/types/GoodDollarMintBurnWrapper.ts +1806 -0
- package/types/GoodDollarStaking.ts +1855 -0
- package/types/GoodDollarStakingMock.ts +1855 -0
- package/types/GoodReserveCDai.ts +90 -55
- package/types/IAccessControl.ts +306 -0
- package/types/IERC165.ts +104 -0
- package/types/IERC20.ts +300 -0
- package/types/IERC20Metadata.ts +339 -0
- package/types/IERC2917.ts +25 -0
- package/types/IGoodDollarStakingTest.ts +160 -0
- package/types/IMultichainRouter.ts +166 -0
- package/types/IRouter.ts +143 -0
- package/types/IWrapper.ts +143 -0
- package/types/MultichainBridgeHelper.ts +170 -0
- package/types/MultichainRouterMock.ts +141 -0
- package/types/Pausable.ts +103 -0
- package/types/PausableControl.ts +125 -0
- package/types/{BulkProof.ts → RewardsMinter.ts} +24 -28
- package/types/StakingMockFixedAPY.ts +995 -0
- package/types/StakingRewardsFixedAPY.ts +428 -0
- package/types/factories/AaveStakingFactory__factory.ts +1 -1
- package/types/factories/AccessControl__factory.ts +227 -0
- package/types/factories/AdminWallet__factory.ts +1 -1
- package/types/factories/BaseShareFieldV2__factory.ts +1 -1
- package/types/factories/BaseShareField__factory.ts +1 -1
- package/types/factories/CERC20__factory.ts +13 -0
- package/types/factories/ClaimersDistribution__factory.ts +1 -1
- package/types/factories/CompoundStakingFactory__factory.ts +1 -1
- package/types/factories/CompoundVotingMachine__factory.ts +1 -1
- package/types/factories/DAOContract__factory.ts +1 -1
- package/types/factories/DAOUpgradeableContract__factory.ts +1 -1
- package/types/factories/DistributionBridgeMock__factory.ts +207 -0
- package/types/factories/DistributionHelperTestHelper__factory.ts +737 -0
- package/types/factories/DistributionHelperTest__factory.ts +717 -0
- package/types/factories/DistributionHelper__factory.ts +713 -0
- package/types/factories/DonationsStaking__factory.ts +1 -1
- package/types/factories/ERC165__factory.ts +39 -0
- package/types/factories/ERC20__factory.ts +13 -0
- package/types/factories/ExchangeHelper__factory.ts +1 -1
- package/types/factories/FuseFaucet__factory.ts +1 -1
- package/types/factories/FuseStakingV3__factory.ts +1 -1
- package/types/factories/GReputation__factory.ts +1 -1
- package/types/factories/GoodAaveStakingV2__factory.ts +1 -1
- package/types/factories/GoodAaveStaking__factory.ts +1 -1
- package/types/factories/GoodCompoundStakingTest__factory.ts +1 -1
- package/types/factories/GoodCompoundStakingV2__factory.ts +1 -1
- package/types/factories/GoodCompoundStaking__factory.ts +1 -1
- package/types/factories/GoodDollarMintBurnWrapper__factory.ts +1318 -0
- package/types/factories/GoodDollarStakingMock__factory.ts +1404 -0
- package/types/factories/GoodDollarStaking__factory.ts +1400 -0
- package/types/factories/GoodFundManagerTest__factory.ts +1 -1
- package/types/factories/GoodFundManager__factory.ts +1 -1
- package/types/factories/GoodMarketMaker__factory.ts +1 -1
- package/types/factories/GoodReserveCDai__factory.ts +74 -34
- package/types/factories/GovernanceStaking__factory.ts +1 -1
- package/types/factories/IAccessControl__factory.ts +198 -0
- package/types/factories/IERC165__factory.ts +42 -0
- package/types/factories/IERC20Metadata__factory.ts +248 -0
- package/types/factories/IERC20__factory.ts +203 -0
- package/types/factories/IERC2917__factory.ts +13 -0
- package/types/factories/IGoodDollarStakingTest__factory.ts +68 -0
- package/types/factories/IMultichainRouter__factory.ts +82 -0
- package/types/factories/IRouter__factory.ts +71 -0
- package/types/factories/IWrapper__factory.ts +71 -0
- package/types/factories/InvitesV1__factory.ts +1 -1
- package/types/factories/MultichainBridgeHelper__factory.ts +134 -0
- package/types/factories/MultichainRouterMock__factory.ts +141 -0
- package/types/factories/OverMintTesterRegularStake__factory.ts +1 -1
- package/types/factories/OverMintTester__factory.ts +3 -3
- package/types/factories/PausableControl__factory.ts +84 -0
- package/types/factories/Pausable__factory.ts +62 -0
- package/types/factories/ProtocolUpgradeFuseRecover__factory.ts +1 -1
- package/types/factories/ProtocolUpgradeFuse__factory.ts +1 -1
- package/types/factories/ProtocolUpgradeRecover__factory.ts +1 -1
- package/types/factories/ProtocolUpgrade__factory.ts +1 -1
- package/types/factories/ReputationTestHelper__factory.ts +1 -1
- package/types/factories/Reputation__factory.ts +1 -1
- package/types/factories/RewardsMinter__factory.ts +47 -0
- package/types/factories/StakersDistribution__factory.ts +1 -1
- package/types/factories/StakingMockFixedAPY__factory.ts +745 -0
- package/types/factories/StakingRewardsFixedAPY__factory.ts +287 -0
- package/types/factories/SwapHelperTest__factory.ts +1 -1
- package/types/factories/UBIScheme__factory.ts +1 -1
- package/types/factories/UniswapV2SwapHelper__factory.ts +1 -1
- package/types/factories/UpgradableMock2__factory.ts +1 -1
- package/types/factories/UpgradableMock3__factory.ts +1 -1
- package/types/factories/UpgradableMock4__factory.ts +1 -1
- package/types/factories/UpgradableMock__factory.ts +1 -1
- package/types/hardhat.d.ts +225 -9
- package/types/index.ts +50 -4
- package/yarn.lock +180 -104
- 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.
|
|
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.
|
|
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": "^
|
|
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),
|
package/releases/deployment.json
CHANGED
|
@@ -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
|
}
|
package/releases/olddao.json
CHANGED
|
@@ -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));
|