@gooddollar/goodprotocol 1.0.29-beta.3 → 1.0.29
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/artifacts/abis/AdminWallet.min.json +1 -1
- package/artifacts/abis/GoodDollarMintBurnWrapper.min.json +1 -1
- package/artifacts/abis/GoodDollarStaking.min.json +1 -1
- package/artifacts/abis/GoodDollarStakingMock.min.json +1 -1
- package/artifacts/abis/IGoodDollar.min.json +1 -1
- package/artifacts/abis/IIdentity.min.json +1 -1
- package/artifacts/abis/UBIScheme.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/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/IFirstClaimPool.dbg.json +1 -1
- package/artifacts/contracts/Interfaces.sol/IGoodDollar.dbg.json +1 -1
- package/artifacts/contracts/Interfaces.sol/IGoodDollar.json +0 -39
- 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/IIdentity.json +0 -51
- package/artifacts/contracts/Interfaces.sol/ILendingPool.dbg.json +1 -1
- package/artifacts/contracts/Interfaces.sol/IMultichainRouter.dbg.json +1 -1
- 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/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 +1 -1
- package/artifacts/contracts/governance/GoodDollarStaking.sol/GoodDollarStaking.json +2 -15
- package/artifacts/contracts/governance/GoodDollarStaking.sol/RewardsMinter.dbg.json +1 -1
- 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 +1 -1
- package/artifacts/contracts/mocks/DistributionBridgeMock.sol/DistributionBridgeMock.json +2 -2
- package/artifacts/contracts/mocks/DistributionHelperTest.sol/DistributionHelperTest.dbg.json +1 -1
- package/artifacts/contracts/mocks/DistributionHelperTest.sol/DistributionHelperTest.json +2 -2
- package/artifacts/contracts/mocks/DistributionHelperTest.sol/DistributionHelperTestHelper.dbg.json +1 -1
- package/artifacts/contracts/mocks/DistributionHelperTest.sol/DistributionHelperTestHelper.json +2 -2
- 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 +1 -1
- package/artifacts/contracts/mocks/GoodDollarStakingMock.sol/GoodDollarStakingMock.json +2 -15
- 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 +1 -1
- package/artifacts/contracts/mocks/MultichainRouterMock.sol/MultichainRouterMock.dbg.json +1 -1
- package/artifacts/contracts/mocks/MultichainRouterMock.sol/MultichainRouterMock.json +2 -2
- package/artifacts/contracts/mocks/OverMintTester.sol/IGoodDollarStakingTest.dbg.json +1 -1
- package/artifacts/contracts/mocks/OverMintTester.sol/OverMintTester.dbg.json +1 -1
- package/artifacts/contracts/mocks/OverMintTester.sol/OverMintTester.json +2 -2
- 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 +1 -1
- 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 +1 -1
- package/artifacts/contracts/reserve/DistributionHelper.sol/DistributionHelper.json +2 -2
- 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 +2 -2
- 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 +1 -1
- package/artifacts/contracts/staking/utils/StakingRewardsFixedAPY.sol/StakingRewardsFixedAPY.dbg.json +1 -1
- package/artifacts/contracts/ubi/UBIScheme.sol/UBIScheme.dbg.json +1 -1
- package/artifacts/contracts/ubi/UBIScheme.sol/UBIScheme.json +22 -15
- package/artifacts/contracts/utils/AdminWallet.sol/AdminWallet.dbg.json +1 -1
- package/artifacts/contracts/utils/AdminWallet.sol/AdminWallet.json +56 -76
- 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 +2 -2
- 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 +1 -1
- package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/GoodDollarMintBurnWrapper.json +2 -16
- package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/IRouter.dbg.json +1 -1
- package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/PausableControl.dbg.json +1 -1
- package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/TokenOperation.dbg.json +1 -1
- package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/TokenOperation.json +2 -2
- package/artifacts/contracts/utils/MultichainBridgeHelper.sol/MultichainBridgeHelper.dbg.json +1 -1
- package/artifacts/contracts/utils/MultichainBridgeHelper.sol/MultichainBridgeHelper.json +2 -2
- 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 +0 -26
- package/contracts/governance/GoodDollarStaking.sol +9 -23
- package/contracts/ubi/UBIScheme.sol +40 -45
- package/contracts/utils/AdminWallet.sol +11 -42
- package/contracts/utils/GoodDollarMintBurnWrapper.sol +3 -13
- package/hardhat.config.ts +7 -21
- package/package.json +2 -3
- package/releases/deploy-settings.json +1 -36
- package/releases/deployment.json +53 -94
- package/scripts/analytics/gdinflow.ts +56 -0
- package/scripts/analytics/tokenInOutStats.ts +50 -0
- package/scripts/deployFullDAO.ts +19 -39
- package/scripts/multichain-deploy/{1_basicdao-deploy.ts → basicdao-deploy.ts} +52 -56
- package/scripts/multichain-deploy/{3_gdSavings-deploy.ts → gdSavings-deploy.ts} +76 -90
- package/scripts/multichain-deploy/helpers.ts +1 -0
- package/scripts/{upgrades → multichain-deploy}/nonubiDistribution-deploy.ts +5 -2
- package/scripts/test/localOldDaoDeploy.ts +3 -10
- package/test/helpers.ts +8 -12
- package/test/ubi/UBIScheme.test.ts +30 -30
- package/test/ubi/UBISchemeCycle.test.ts +7 -9
- package/test/utils/AdminWallet.test.ts +11 -33
- package/types/AdminWallet.ts +113 -124
- package/types/GoodDollarMintBurnWrapper.ts +0 -42
- package/types/GoodDollarStaking.ts +0 -34
- package/types/GoodDollarStakingMock.ts +0 -34
- package/types/IGoodDollar.ts +0 -54
- package/types/IIdentity.ts +0 -75
- package/types/UBIScheme.ts +40 -19
- package/types/factories/AaveStakingFactory__factory.ts +1 -1
- package/types/factories/AdminWallet__factory.ts +55 -75
- package/types/factories/BaseShareFieldV2__factory.ts +1 -1
- package/types/factories/BaseShareField__factory.ts +1 -1
- 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 +1 -1
- package/types/factories/DistributionHelperTestHelper__factory.ts +1 -1
- package/types/factories/DistributionHelperTest__factory.ts +1 -1
- package/types/factories/DistributionHelper__factory.ts +1 -1
- package/types/factories/DonationsStaking__factory.ts +1 -1
- 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 +1 -15
- package/types/factories/GoodDollarStakingMock__factory.ts +1 -14
- package/types/factories/GoodDollarStaking__factory.ts +1 -14
- 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 +1 -1
- package/types/factories/GovernanceStaking__factory.ts +1 -1
- package/types/factories/IGoodDollar__factory.ts +0 -39
- package/types/factories/IIdentity__factory.ts +0 -51
- package/types/factories/InvitesV1__factory.ts +1 -1
- package/types/factories/MultichainBridgeHelper__factory.ts +1 -1
- package/types/factories/MultichainRouterMock__factory.ts +1 -1
- package/types/factories/OverMintTesterRegularStake__factory.ts +1 -1
- package/types/factories/OverMintTester__factory.ts +1 -1
- 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/StakersDistribution__factory.ts +1 -1
- package/types/factories/SwapHelperTest__factory.ts +1 -1
- package/types/factories/UBIScheme__factory.ts +21 -14
- 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 +0 -54
- package/types/index.ts +0 -12
- package/yarn.lock +4 -4
- package/artifacts/abis/Faucet.min.json +0 -1
- package/artifacts/abis/IGovernanceStaking.min.json +0 -1
- package/artifacts/abis/IIdentityV2.min.json +0 -1
- package/artifacts/abis/IdentityV2.min.json +0 -1
- package/artifacts/abis/InvitesV2.min.json +0 -1
- package/artifacts/contracts/Interfaces.sol/IIdentityV2.dbg.json +0 -4
- package/artifacts/contracts/Interfaces.sol/IIdentityV2.json +0 -281
- package/artifacts/contracts/fuseFaucet/Faucet.sol/Faucet.dbg.json +0 -4
- package/artifacts/contracts/fuseFaucet/Faucet.sol/Faucet.json +0 -684
- package/artifacts/contracts/governance/GoodDollarStaking.sol/IGovernanceStaking.dbg.json +0 -4
- package/artifacts/contracts/governance/GoodDollarStaking.sol/IGovernanceStaking.json +0 -24
- package/artifacts/contracts/identity/IdentityV2.sol/IdentityV2.dbg.json +0 -4
- package/artifacts/contracts/identity/IdentityV2.sol/IdentityV2.json +0 -1000
- package/artifacts/contracts/invite/InvitesV2.sol/InvitesV2.dbg.json +0 -4
- package/artifacts/contracts/invite/InvitesV2.sol/InvitesV2.json +0 -586
- package/contracts/fuseFaucet/Faucet.sol +0 -245
- package/contracts/identity/IdentityV2.sol +0 -434
- package/contracts/invite/InvitesV2.sol +0 -316
- package/scripts/multichain-deploy/0_proxyFactory-deploy.ts +0 -45
- package/scripts/multichain-deploy/2_helpers-deploy.ts +0 -143
- package/scripts/multichain-deploy/4_ubi-deploy.ts +0 -121
- package/scripts/multichain-deploy/5_gov-deploy.ts +0 -123
- package/scripts/multichain-deploy/verifyEtherscan.ts +0 -84
- package/scripts/upgrades/identity-upgrade.ts +0 -153
- package/types/Faucet.ts +0 -1014
- package/types/IERC1271.ts +0 -109
- package/types/IGovernanceStaking.ts +0 -98
- package/types/IIdentityV2.ts +0 -526
- package/types/IdentityV2.ts +0 -1612
- package/types/InvitesV2.ts +0 -933
- package/types/factories/Faucet__factory.ts +0 -729
- package/types/factories/IERC1271__factory.ts +0 -47
- package/types/factories/IGovernanceStaking__factory.ts +0 -39
- package/types/factories/IIdentityV2__factory.ts +0 -293
- package/types/factories/IdentityV2__factory.ts +0 -1048
- package/types/factories/InvitesV2__factory.ts +0 -634
package/releases/deployment.json
CHANGED
|
@@ -198,77 +198,74 @@
|
|
|
198
198
|
"FeeFormula": "0x416B5A5e12235De6838D62Fd053e7Ce59E944426"
|
|
199
199
|
},
|
|
200
200
|
"dapptest": {
|
|
201
|
-
"NameService": "
|
|
202
|
-
"GReputation": "
|
|
203
|
-
"CompoundVotingMachine": "
|
|
204
|
-
"ClaimersDistribution": "
|
|
205
|
-
"GovernanceStaking": "
|
|
206
|
-
"UBIScheme": "
|
|
207
|
-
"ProtocolUpgradeFuse": "
|
|
208
|
-
"HomeBridge": "
|
|
209
|
-
"AdminWallet": "
|
|
210
|
-
"Identity": "
|
|
211
|
-
"GoodDollar": "
|
|
212
|
-
"Controller": "
|
|
213
|
-
"Avatar": "
|
|
214
|
-
"FirstClaimPool": "
|
|
215
|
-
"BancorFormula": "
|
|
201
|
+
"NameService": "0x9059f66843F564f7870f7135fB039EB2034a23a3",
|
|
202
|
+
"GReputation": "0x90dE2F86DBdB2110a798326e880c83bc8779d149",
|
|
203
|
+
"CompoundVotingMachine": "0x2EF9f88EEB737655FF01F9b5017f1e3399726AF1",
|
|
204
|
+
"ClaimersDistribution": "0x035A59F228e776Cc396a8F5E1cEF989E235B0035",
|
|
205
|
+
"GovernanceStaking": "0xC65cCB966873969179B6b0bA53D67D14Bbf1204C",
|
|
206
|
+
"UBIScheme": "0xBb02F06762FBc51aD222915e6855f7482a93F9Cd",
|
|
207
|
+
"ProtocolUpgradeFuse": "0xBb976201B607f16dc76586dB8Ca5EF6C50C41c22",
|
|
208
|
+
"HomeBridge": "0x180FAF09AdD6a27554b11a131DCe6f6A3ddF4cBf",
|
|
209
|
+
"AdminWallet": "0xB8357F7f41125d4b24AD052c1b7288BeF5C43446",
|
|
210
|
+
"Identity": "0x63766F0efAa46a86E9055bB46e41ff7bc64CBEA2",
|
|
211
|
+
"GoodDollar": "0x94a9D2532DA2d9153336159907604A01c3E91C11",
|
|
212
|
+
"Controller": "0x0B57Fd12F7A95c322aD176D23765507ce09892Cb",
|
|
213
|
+
"Avatar": "0xf6Ee31185AC05C2b558fF2a561C600AF3E9486dd",
|
|
214
|
+
"FirstClaimPool": "0xC20654dB7F9483f10c91dc94924dC8F04F79bfd5",
|
|
215
|
+
"BancorFormula": "0x6852Adb5Fce1D73c08A9b3Aa7edE9A03437ac2fE",
|
|
216
216
|
"DAI": "0x0000000000000000000000000000000000000000",
|
|
217
217
|
"cDAI": "0x0000000000000000000000000000000000000000",
|
|
218
218
|
"COMP": "0x0000000000000000000000000000000000000000",
|
|
219
219
|
"networkId": 4447,
|
|
220
220
|
"network": "dapptest",
|
|
221
|
-
"FeeFormula": "
|
|
222
|
-
"OneTimePayments": "
|
|
223
|
-
"Invites": "
|
|
224
|
-
"FuseFaucet": "
|
|
225
|
-
"ProxyFactory": "
|
|
226
|
-
"Faucet": "0x7bEf5612eC11446539C55ffD43B625b3472Cb7df",
|
|
227
|
-
"GoodDollarMintBurnWrapper": "0x214a2cCD52eC9c1A0e0E4719C3c5115aa297A9c5",
|
|
228
|
-
"GoodDollarStaking": "0x29be9D4e2aEe72C6Edbd6231f276A544296cc4F9"
|
|
221
|
+
"FeeFormula": "0x24ef01de6baE76eE73Da210940A296F739d87952",
|
|
222
|
+
"OneTimePayments": "0xB10982193B39Eda3428d6AaeBbd7986f2A2Baa1a",
|
|
223
|
+
"Invites": "0x74156A1F9736307b7AD34e3691f3A5B54A0B3Eb8",
|
|
224
|
+
"FuseFaucet": "0x0Db32f0b116773fDD78C2e1b5E6609CC502e6784",
|
|
225
|
+
"ProxyFactory": "0xCD8a1C3ba11CF5ECfa6267617243239504a98d90"
|
|
229
226
|
},
|
|
230
227
|
"dapptest-mainnet": {
|
|
231
|
-
"NameService": "
|
|
232
|
-
"GReputation": "
|
|
233
|
-
"CompoundVotingMachine": "
|
|
234
|
-
"GoodMarketMaker": "
|
|
235
|
-
"GoodReserveCDai": "
|
|
236
|
-
"ExchangeHelper": "
|
|
237
|
-
"GoodFundManager": "
|
|
238
|
-
"StakersDistribution": "
|
|
239
|
-
"ProtocolUpgrade": "
|
|
240
|
-
"CompoundStakingFactory": "
|
|
241
|
-
"AaveStakingFactory": "
|
|
242
|
-
"ForeignBridge": "
|
|
243
|
-
"Contribution": "
|
|
228
|
+
"NameService": "0xe528aaCA8E7cD3ce503bB4a2dEadFD4088229E1F",
|
|
229
|
+
"GReputation": "0x77423AE3ce64482ef3BB601a2EA42cf30349735A",
|
|
230
|
+
"CompoundVotingMachine": "0x6804DB9596c651A1CA24bBB821712A8899932d76",
|
|
231
|
+
"GoodMarketMaker": "0xa36ADAE77B1f6f87eD60aafEF9c080c38Ca30D0F",
|
|
232
|
+
"GoodReserveCDai": "0x411CEb987F801CdEa5a301a0CCfa4a5Df37f3f7F",
|
|
233
|
+
"ExchangeHelper": "0x1333788523bEA7C7cBdd0684Bd1ee75E940fF0Eb",
|
|
234
|
+
"GoodFundManager": "0x50589243cb1d8eEF751f4BAb253Aabef6e434c0d",
|
|
235
|
+
"StakersDistribution": "0x214c3C71191AB9bD868a5f408A61c540c787662F",
|
|
236
|
+
"ProtocolUpgrade": "0x1Fb0D426927Dab092Def63b73E1397b3F29E7b33",
|
|
237
|
+
"CompoundStakingFactory": "0xe4FEed16F54b4244C174b408Ba3B5F1f19DD1E4D",
|
|
238
|
+
"AaveStakingFactory": "0xe7213b68DC25bf30bC7f1DE9BAead075c66979F9",
|
|
239
|
+
"ForeignBridge": "0x570ADc5880D778aE5935f199aa590091586CDf75",
|
|
240
|
+
"Contribution": "0x24F2D7c50357C7B1156Ca85945D3A901c88651cB",
|
|
244
241
|
"StakingContracts": [
|
|
245
242
|
[
|
|
246
|
-
"
|
|
243
|
+
"0xc782Ee4B0d6204Ff77471884bB95d2D2f8D60fE6",
|
|
247
244
|
13888
|
|
248
245
|
]
|
|
249
246
|
],
|
|
250
|
-
"DonationsStaking": "
|
|
251
|
-
"Identity": "
|
|
252
|
-
"GoodDollar": "
|
|
253
|
-
"Controller": "
|
|
254
|
-
"Avatar": "
|
|
247
|
+
"DonationsStaking": "0x4bfd12E943f25621d4FA368Ca7a5c0E7F6488000",
|
|
248
|
+
"Identity": "0xb2377aAE57F2072F52FBc38696BE573af2ce5bd9",
|
|
249
|
+
"GoodDollar": "0x5Bbaf48c102373B55079F941c40822C96E715d62",
|
|
250
|
+
"Controller": "0x67d49FAF26CA6A34D483B6BDFA45824EdA64D509",
|
|
251
|
+
"Avatar": "0xE9ED26a450aC15ea88b5801E5940B58F2f778b03",
|
|
255
252
|
"FirstClaimPool": "0xe3963EF7CC3044B64842d0AAe7F2Bf1543D341Ec",
|
|
256
|
-
"BancorFormula": "
|
|
257
|
-
"DAI": "
|
|
258
|
-
"cDAI": "
|
|
259
|
-
"COMP": "
|
|
253
|
+
"BancorFormula": "0x30474Ce2DE03045B8D0AE76F8a30DbfC8f000cea",
|
|
254
|
+
"DAI": "0xadf7b0f46EB35C748438F3e215F064E01cc7f5dF",
|
|
255
|
+
"cDAI": "0x0037272a7048132b10Dd8970AC964Bab2fDB3F62",
|
|
256
|
+
"COMP": "0xE8E9B139c6477D4EaD599bE5f2bB9335533D14f7",
|
|
260
257
|
"networkId": 4447,
|
|
261
258
|
"network": "dapptest-mainnet",
|
|
262
|
-
"FeeFormula": "
|
|
259
|
+
"FeeFormula": "0x8B87065fdfe4A130108E50f74ae7F85cD20A5967",
|
|
263
260
|
"ProxyFactory": "0xF47e3B0A1952A81F1afc41172762CB7CE8700133",
|
|
264
|
-
"UniswapV2SwapHelper": "
|
|
265
|
-
"ETHUsdOracle": "
|
|
266
|
-
"DAIEthOracle": "
|
|
267
|
-
"DAIUsdOracle": "
|
|
268
|
-
"COMPUsdOracle": "
|
|
269
|
-
"USDCUsdOracle": "
|
|
270
|
-
"AAVEUsdOracle": "
|
|
271
|
-
"GasPriceOracle": "
|
|
261
|
+
"UniswapV2SwapHelper": "0xB4059a6808Af368A69d12FBbD104Bb6B9c37e629",
|
|
262
|
+
"ETHUsdOracle": "0x79613D7834Ad35EE8dC3F9298030eaADc2A8c250",
|
|
263
|
+
"DAIEthOracle": "0x6397866132887b206EEA19f910730443E71a8CfB",
|
|
264
|
+
"DAIUsdOracle": "0xC2E1FC63cE06C279c5De18D7119C7cA123B42C1c",
|
|
265
|
+
"COMPUsdOracle": "0x9301981F27950e6546033EADD046C86754263f2D",
|
|
266
|
+
"USDCUsdOracle": "0x89Be7D874a17cD0295B2d86436a920593b5f4480",
|
|
267
|
+
"AAVEUsdOracle": "0xDFF3455E08AB33B1599D1c5B5A1D65de63d3FCd0",
|
|
268
|
+
"GasPriceOracle": "0xFAE6fA2097792Edfd7429A282F21ec2D955279D9"
|
|
272
269
|
},
|
|
273
270
|
"staging-mainnet": {
|
|
274
271
|
"NameService": "0xC87FAb8A8CDD346079ca6177e47408Ba18066104",
|
|
@@ -336,7 +333,7 @@
|
|
|
336
333
|
"cDAI": "0x0000000000000000000000000000000000000000",
|
|
337
334
|
"COMP": "0x0000000000000000000000000000000000000000",
|
|
338
335
|
"GoodDollarMintBurnWrapper": "0x08CaFF2331040c9998a91B50eEee85c4AE953ece",
|
|
339
|
-
"GoodDollarStaking": "
|
|
336
|
+
"GoodDollarStaking": "0x66846F27F86f02b079e9176C7aCc10Cc32d839b2"
|
|
340
337
|
},
|
|
341
338
|
"test": {
|
|
342
339
|
"ProxyFactory": "0x36dE29DB57062A583436Ae071e141404dFE2311C",
|
|
@@ -555,7 +552,6 @@
|
|
|
555
552
|
"production-celo": {
|
|
556
553
|
"ProxyFactory": "0x99C22e78A579e2176311c736C4c9F0b0D5A47806",
|
|
557
554
|
"GoodDollar": "0xf2283840cE37DAe0a06B40a9A80603977f36fA3F",
|
|
558
|
-
"FeeFormula": "0xb25de92ce16127ebf6659a7a30a9f395c7bbf182",
|
|
559
555
|
"Avatar": "0xCD5e8a81B1e02c1837A674f87dF327C14f4e5748",
|
|
560
556
|
"Controller": "0x3D0bacBdC06A28971855275D511e6249bE67112d",
|
|
561
557
|
"Identity": "0x96B81f82A29e78C5ba9E2034Ce8490fd641a24eb",
|
|
@@ -566,42 +562,5 @@
|
|
|
566
562
|
"networkId": 42220,
|
|
567
563
|
"GoodDollarMintBurnWrapper": "0x5566b6E4962BA83e05a426Ad89031ec18e9CadD3",
|
|
568
564
|
"MultichainRouter": "0xf27Ee99622C3C9b264583dACB2cCE056e194494f"
|
|
569
|
-
},
|
|
570
|
-
"development-celo": {
|
|
571
|
-
"ProxyFactory": "0xA441cd89b0964B51d23201d65E037DA7aF8F74E9",
|
|
572
|
-
"GoodDollar": "0xAB89A70d1Af04ED8badf915Ba1f5b28E9F322624",
|
|
573
|
-
"Avatar": "0xE0e3BFb1A1850bdFe36ED1563CC2abB6A8B6De78",
|
|
574
|
-
"Controller": "0x6717A1948328C8eCCb5C933Fae90e0631C2486fE",
|
|
575
|
-
"Identity": "0xec97ee6d70C626044224998192B96fEF05949De1",
|
|
576
|
-
"NameService": "0x266E5a0931E52229CC241376bC701Ab6199Aec4D",
|
|
577
|
-
"GReputation": "0x6614823763EAd52aCc4952b9634624439B738683",
|
|
578
|
-
"AdminWallet": "0xb7b543bfd9e2E0AD1d0aA68f56c883Dd377E3D24",
|
|
579
|
-
"Faucet": "0x256AFcfEcB5C7f62CE46b54492Bb8ac38163672f",
|
|
580
|
-
"Invites": "0xdC8F0da3f29A3C419a8EEf36665ba2a3EF737B8f",
|
|
581
|
-
"GoodDollarMintBurnWrapper": "0x3fa553a5a044D5c4f5C70878148568410305f953",
|
|
582
|
-
"GoodDollarStaking": "0xCfa54Ad5a00b0AAd3873B4E269Feb331e6293682",
|
|
583
|
-
"UBIScheme": "0x2d42e6220af2485d1e6E5B4d3661A74671AA9a79",
|
|
584
|
-
"ClaimersDistribution": "0x80018e6Dd79f6B892Fca6b592746136a3aa5ef6d",
|
|
585
|
-
"CompoundVotingMachine": "0x00e44d746F3931cAB775099F4C6451f893BB9378"
|
|
586
|
-
},
|
|
587
|
-
"staging-celo": {
|
|
588
|
-
"ProxyFactory": "0x7e8292481EA8EbEb49e486B7e99c00C50fBa2689",
|
|
589
|
-
"GoodDollar": "0x33265D74abd5ae87cA02A4Fb0C30B7405C8b0682",
|
|
590
|
-
"Avatar": "0x2FD18f9de3F581Ca492A485D2b32E361EeAE2e63",
|
|
591
|
-
"Controller": "0xa229BdD05436362484b10586dAa79a316e3080C5",
|
|
592
|
-
"Identity": "0xc82d50c667F389906aCA4B72D577fA56Bf7F8910",
|
|
593
|
-
"NameService": "0x8d0b621796445454180e7DD25f96B1782848338B",
|
|
594
|
-
"GReputation": "0x759a03326df90b740f6b8b6D31e12a3F95D64C28",
|
|
595
|
-
"FeeFormula": "0xcf08461E5bAd9C508D482329Eae0f1b4c4D4c489",
|
|
596
|
-
"DAOCreator": "0xA614d2641c21FEa4c73A2D6e71C6ad341349808B",
|
|
597
|
-
"AddFounders": "0x558fA360988601601ac410678963Bf785156076D",
|
|
598
|
-
"AdminWallet": "0x822590F8baf606b1e18dC1FA8Ca39D5C66C20981",
|
|
599
|
-
"Faucet": "0x9803B5811260Bfd1F5b0b0c9eC9aD4bF96D7ea94",
|
|
600
|
-
"Invites": "0x4E094c2e35e57c90667AbD6D8FE25CE63F4ae00B",
|
|
601
|
-
"GoodDollarMintBurnWrapper": "0x156Fd9563973EFB94a297B76CFac32CdC92a8d1A",
|
|
602
|
-
"GoodDollarStaking": "0xDcB36664440937E4f11002C2471a456AEeD9b7DC",
|
|
603
|
-
"UBIScheme": "0x04f2Cf8865e2ddfEf0047FdfA7A1b05ade614288",
|
|
604
|
-
"ClaimersDistribution": "0x83186CE77ef296BA6561096447938AE05D1F026e",
|
|
605
|
-
"CompoundVotingMachine": "0xEdde78b850a08B6b8AB3E84f61cD6dC70Cc7f156"
|
|
606
565
|
}
|
|
607
566
|
}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { maxBy, range, sortBy, uniq, sum, flatten, countBy } from "lodash";
|
|
2
|
+
import fetch from "node-fetch";
|
|
3
|
+
import PromisePool from "async-promise-pool";
|
|
4
|
+
import fs from "fs";
|
|
5
|
+
import { ethers } from "hardhat";
|
|
6
|
+
import { keccak256 } from "web3-utils";
|
|
7
|
+
|
|
8
|
+
const main = async () => {
|
|
9
|
+
const uniques = {};
|
|
10
|
+
let addresses = [];
|
|
11
|
+
let token = "0x495d133B938596C9984d462F007B676bDc57eCEC";
|
|
12
|
+
let startblock = 18710000;
|
|
13
|
+
let stepSize = 5000;
|
|
14
|
+
for (const address of addresses) {
|
|
15
|
+
let result = [];
|
|
16
|
+
let curPage = 1;
|
|
17
|
+
let maxResult;
|
|
18
|
+
let reachedStartBlock = false;
|
|
19
|
+
do {
|
|
20
|
+
const pages = range(curPage, curPage + 5, 1);
|
|
21
|
+
curPage += 5;
|
|
22
|
+
const ps = pages.map(p => {
|
|
23
|
+
const url = `https://explorer.fuse.io/api?module=account&action=tokentx&address=${address}&contractaddress=${token}&page=${p}&offset=${stepSize}`;
|
|
24
|
+
console.log({ url });
|
|
25
|
+
return fetch(url)
|
|
26
|
+
.then(_ => _.json())
|
|
27
|
+
.then(_ => _.result);
|
|
28
|
+
});
|
|
29
|
+
|
|
30
|
+
const results = await Promise.all(ps);
|
|
31
|
+
result = result.concat(...results);
|
|
32
|
+
maxResult = maxBy(results, "length");
|
|
33
|
+
reachedStartBlock = result.find(_ => Number(_.blockNumber) <= startblock);
|
|
34
|
+
maxResult && console.log(maxResult.length, result.length);
|
|
35
|
+
} while (maxResult.length === stepSize && !reachedStartBlock);
|
|
36
|
+
const incomingTxs = result
|
|
37
|
+
.filter(
|
|
38
|
+
_ =>
|
|
39
|
+
[
|
|
40
|
+
"0xca2f09c3ccfd7ad5cb9276918bd1868f2b922ea0",
|
|
41
|
+
"0xd253a5203817225e9768c05e5996d642fb96ba86"
|
|
42
|
+
].includes(_.from) === false
|
|
43
|
+
)
|
|
44
|
+
.filter(_ => _.to === address.toLowerCase());
|
|
45
|
+
const totalEarned = sum(incomingTxs.map(_ => Number(_.value))) / 100;
|
|
46
|
+
const senders = uniq(incomingTxs.map(_ => _.from));
|
|
47
|
+
console.log({ address, totalEarned, uniq: senders.length, senders });
|
|
48
|
+
uniques[address] = senders;
|
|
49
|
+
}
|
|
50
|
+
const intersection = countBy(flatten(Object.values(uniques)), _ => _);
|
|
51
|
+
console.log(sortBy(Object.entries(intersection), _ => _[1]).reverse());
|
|
52
|
+
console.log(JSON.stringify(Object.keys(intersection).map(_ => keccak256(_))));
|
|
53
|
+
console.log(JSON.stringify(addresses.map(_ => keccak256(_))));
|
|
54
|
+
};
|
|
55
|
+
|
|
56
|
+
main().catch(e => console.log(e));
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { maxBy, range, sortBy } from "lodash";
|
|
2
|
+
import fetch from "node-fetch";
|
|
3
|
+
import PromisePool from "async-promise-pool";
|
|
4
|
+
import fs from "fs";
|
|
5
|
+
import { ethers } from "hardhat";
|
|
6
|
+
|
|
7
|
+
const main = async () => {
|
|
8
|
+
let address = "0xCa2F09c3ccFD7aD5cB9276918Bd1868f2b922ea0";
|
|
9
|
+
let token = "0x495d133B938596C9984d462F007B676bDc57eCEC";
|
|
10
|
+
let startblock = 14710000;
|
|
11
|
+
let stepSize = 5000;
|
|
12
|
+
let result = [];
|
|
13
|
+
let incoming = 0;
|
|
14
|
+
let outgoing = 0;
|
|
15
|
+
let ins = [];
|
|
16
|
+
let curPage = 1;
|
|
17
|
+
let maxResult;
|
|
18
|
+
let reachedStartBlock = false;
|
|
19
|
+
do {
|
|
20
|
+
const pages = range(curPage, curPage + 5, 1);
|
|
21
|
+
curPage += 5;
|
|
22
|
+
const ps = pages.map(p => {
|
|
23
|
+
const url = `https://explorer.fuse.io/api?module=account&action=tokentx&address=${address}&contractaddress=${token}&page=${p}&offset=${stepSize}`;
|
|
24
|
+
console.log({ url });
|
|
25
|
+
return fetch(url)
|
|
26
|
+
.then(_ => _.json())
|
|
27
|
+
.then(_ => _.result);
|
|
28
|
+
});
|
|
29
|
+
|
|
30
|
+
const results = await Promise.all(ps);
|
|
31
|
+
result = result.concat(...results);
|
|
32
|
+
maxResult = maxBy(results, "length");
|
|
33
|
+
reachedStartBlock = result.find(_ => Number(_.blockNumber) <= startblock);
|
|
34
|
+
maxResult && console.log(maxResult.length, result.length);
|
|
35
|
+
} while (maxResult.length === stepSize && !reachedStartBlock);
|
|
36
|
+
result.forEach(r => {
|
|
37
|
+
if (r.from === address.toLowerCase()) outgoing += Number(r.value);
|
|
38
|
+
else {
|
|
39
|
+
incoming += Number(r.value);
|
|
40
|
+
ins.push(r);
|
|
41
|
+
}
|
|
42
|
+
});
|
|
43
|
+
fs.writeFileSync(
|
|
44
|
+
"tokenInOut.json",
|
|
45
|
+
JSON.stringify({ incoming, outgoing, ins })
|
|
46
|
+
);
|
|
47
|
+
|
|
48
|
+
};
|
|
49
|
+
|
|
50
|
+
main().catch(e => console.log(e));
|
package/scripts/deployFullDAO.ts
CHANGED
|
@@ -6,11 +6,13 @@ import { network, ethers, upgrades } from "hardhat";
|
|
|
6
6
|
import { Contract } from "ethers";
|
|
7
7
|
import { range } from "lodash";
|
|
8
8
|
import DAOCreatorABI from "@gooddollar/goodcontracts/build/contracts/DaoCreatorGoodDollar.json";
|
|
9
|
+
import IdentityABI from "@gooddollar/goodcontracts/build/contracts/Identity.json";
|
|
9
10
|
import FeeFormulaABI from "@gooddollar/goodcontracts/build/contracts/FeeFormula.json";
|
|
10
11
|
import AddFoundersABI from "@gooddollar/goodcontracts/build/contracts/AddFoundersGoodDollar.json";
|
|
11
12
|
import ContributionCalculation from "@gooddollar/goodcontracts/stakingModel/build/contracts/ContributionCalculation.json";
|
|
12
13
|
import FirstClaimPool from "@gooddollar/goodcontracts/stakingModel/build/contracts/FirstClaimPool.json";
|
|
13
14
|
import BridgeMock from "@gooddollar/goodcontracts/stakingModel/build/contracts/BridgeMock.json";
|
|
15
|
+
import AdminWalletABI from "@gooddollar/goodcontracts/build/contracts/AdminWallet.json";
|
|
14
16
|
import OTPABI from "@gooddollar/goodcontracts/build/contracts/OneTimePayments.json";
|
|
15
17
|
import HomeBridgeABI from "@gooddollar/goodcontracts/build/contracts/DeployHomeBridge.json";
|
|
16
18
|
import ForeignBridgeABI from "@gooddollar/goodcontracts/build/contracts/DeployForeignBridge.json";
|
|
@@ -63,14 +65,11 @@ export const createDAO = async () => {
|
|
|
63
65
|
root
|
|
64
66
|
);
|
|
65
67
|
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
const IdentityFactory = await ethers.getContractFactory("IdentityV2");
|
|
73
|
-
|
|
68
|
+
const IdentityFactory = new ethers.ContractFactory(
|
|
69
|
+
IdentityABI.abi,
|
|
70
|
+
IdentityABI.bytecode,
|
|
71
|
+
root
|
|
72
|
+
);
|
|
74
73
|
const FeeFormulaFactory = new ethers.ContractFactory(
|
|
75
74
|
FeeFormulaABI.abi,
|
|
76
75
|
FeeFormulaABI.bytecode,
|
|
@@ -96,15 +95,9 @@ export const createDAO = async () => {
|
|
|
96
95
|
// "0x6F1BAbfF5E119d61F0c6d8653d84E8B284B87091"
|
|
97
96
|
// );
|
|
98
97
|
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
const Identity = await upgrades.deployProxy(
|
|
104
|
-
IdentityFactory,
|
|
105
|
-
[root.address, ethers.constants.AddressZero],
|
|
106
|
-
{ kind: "uups" }
|
|
107
|
-
);
|
|
98
|
+
const Identity = (await IdentityFactory.deploy().then(
|
|
99
|
+
printDeploy
|
|
100
|
+
)) as Contract;
|
|
108
101
|
// const Identity = await ethers.getContractAt(
|
|
109
102
|
// IdentityABI.abi,
|
|
110
103
|
// release.Identity
|
|
@@ -118,8 +111,8 @@ export const createDAO = async () => {
|
|
|
118
111
|
printDeploy
|
|
119
112
|
)) as Contract;
|
|
120
113
|
|
|
121
|
-
|
|
122
|
-
|
|
114
|
+
await Identity.setAuthenticationPeriod(365).then(printDeploy);
|
|
115
|
+
console.log("setAuthPeriod");
|
|
123
116
|
await daoCreator
|
|
124
117
|
.forgeOrg(
|
|
125
118
|
"GoodDollar",
|
|
@@ -151,7 +144,7 @@ export const createDAO = async () => {
|
|
|
151
144
|
// root
|
|
152
145
|
// );
|
|
153
146
|
|
|
154
|
-
|
|
147
|
+
await Identity.setAvatar(Avatar.address).then(printDeploy);
|
|
155
148
|
|
|
156
149
|
console.log("Done deploying DAO, setting schemes permissions");
|
|
157
150
|
|
|
@@ -208,7 +201,9 @@ export const createDAO = async () => {
|
|
|
208
201
|
gd
|
|
209
202
|
);
|
|
210
203
|
schemes.push(sidechain.OneTimePayments.address);
|
|
204
|
+
const adminWallet = await deployAdminWallet(Identity.address);
|
|
211
205
|
Object.entries(sidechain).forEach(([k, v]) => (release[k] = v.address));
|
|
206
|
+
release["AdminWallet"] = adminWallet.address;
|
|
212
207
|
}
|
|
213
208
|
|
|
214
209
|
await releaser(release, network.name);
|
|
@@ -247,17 +242,7 @@ export const createDAO = async () => {
|
|
|
247
242
|
UpgradeScheme: ethers.constants.AddressZero
|
|
248
243
|
};
|
|
249
244
|
|
|
250
|
-
console.log("deploying v2...");
|
|
251
245
|
const v2 = await deployV2(network.name, false, olddao);
|
|
252
|
-
console.log("deploying adminWallet...");
|
|
253
|
-
const adminWallet = await deployAdminWallet(Identity.address, v2.NameService);
|
|
254
|
-
console.log("setting up identity:", {
|
|
255
|
-
ns: v2.NameService,
|
|
256
|
-
identity: Identity.address
|
|
257
|
-
});
|
|
258
|
-
await Identity.initDAO(v2.NameService);
|
|
259
|
-
release["AdminWallet"] = adminWallet.address;
|
|
260
|
-
|
|
261
246
|
release = { ...v2, ...release };
|
|
262
247
|
await releaser(release, network.name);
|
|
263
248
|
// await pressAnyKey();
|
|
@@ -344,7 +329,6 @@ const deployBridge = async (Avatar, gd, setSchemes, isMainnet) => {
|
|
|
344
329
|
};
|
|
345
330
|
|
|
346
331
|
const deployMainnet = async (Avatar, Identity) => {
|
|
347
|
-
console.log("deploying mainnet...");
|
|
348
332
|
const [root] = await ethers.getSigners();
|
|
349
333
|
|
|
350
334
|
const cdaiFactory = await ethers.getContractFactory("cDAIMock");
|
|
@@ -431,7 +415,6 @@ export const deploySidechain = async (
|
|
|
431
415
|
identity,
|
|
432
416
|
gd
|
|
433
417
|
) => {
|
|
434
|
-
console.log("deploying sidechain...");
|
|
435
418
|
const root = (await ethers.getSigners())[0];
|
|
436
419
|
const fcFactory = new ethers.ContractFactory(
|
|
437
420
|
FirstClaimPool.abi,
|
|
@@ -519,7 +502,7 @@ export const deploySidechain = async (
|
|
|
519
502
|
};
|
|
520
503
|
};
|
|
521
504
|
|
|
522
|
-
const deployAdminWallet = async
|
|
505
|
+
const deployAdminWallet = async identity => {
|
|
523
506
|
const root = (await ethers.getSigners())[0];
|
|
524
507
|
const hdNode = ethers.utils.HDNode.fromMnemonic(process.env.ADMIN_MNEMONIC);
|
|
525
508
|
const admins = range(0, 50).map(i =>
|
|
@@ -529,9 +512,8 @@ const deployAdminWallet = async (identity, ns) => {
|
|
|
529
512
|
const adminWallet = (await upgrades
|
|
530
513
|
.deployProxy(await ethers.getContractFactory("AdminWallet"), [
|
|
531
514
|
admins.slice(0, 20).map(_ => _.address),
|
|
532
|
-
ns,
|
|
533
515
|
root.address,
|
|
534
|
-
|
|
516
|
+
identity
|
|
535
517
|
])
|
|
536
518
|
.then(printDeploy)) as Contract;
|
|
537
519
|
|
|
@@ -548,10 +530,8 @@ const deployAdminWallet = async (identity, ns) => {
|
|
|
548
530
|
// )
|
|
549
531
|
// .then(printDeploy)) as Contract;
|
|
550
532
|
|
|
551
|
-
const id = await ethers.getContractAt("
|
|
552
|
-
await id
|
|
553
|
-
.grantRole(await id.IDENTITY_ADMIN_ROLE(), adminWallet.address)
|
|
554
|
-
.then(printDeploy);
|
|
533
|
+
const id = await ethers.getContractAt("IIdentity", identity);
|
|
534
|
+
await id.addIdentityAdmin(adminWallet.address).then(printDeploy);
|
|
555
535
|
await root
|
|
556
536
|
.sendTransaction({
|
|
557
537
|
to: adminWallet.address,
|
|
@@ -6,19 +6,21 @@
|
|
|
6
6
|
*/
|
|
7
7
|
import { network, ethers, upgrades, run } from "hardhat";
|
|
8
8
|
import { Contract } from "ethers";
|
|
9
|
-
import { defaultsDeep } from "lodash";
|
|
10
9
|
// import DAOCreatorABI from "@gooddollar/goodcontracts/build/contracts/DaoCreatorGoodDollar.json";
|
|
11
10
|
import DAOCreatorABI from "../../../GoodBootstrap/packages/contracts/build/contracts/DaoCreatorGoodDollarWithRep.json";
|
|
12
11
|
// import IdentityABI from "@gooddollar/goodcontracts/build/contracts/Identity.json";
|
|
12
|
+
import IdentityABI from "../../../GoodBootstrap/packages/contracts/build/contracts/IdentityWithOwner.json";
|
|
13
13
|
import FeeFormulaABI from "@gooddollar/goodcontracts/build/contracts/FeeFormula.json";
|
|
14
|
-
import AddFoundersABI from "@gooddollar/goodcontracts/build/contracts/AddFoundersGoodDollarWithRep.json";
|
|
14
|
+
import AddFoundersABI from "@gooddollar/goodcontracts/contracts/build/contracts/AddFoundersGoodDollarWithRep.json";
|
|
15
15
|
|
|
16
16
|
import { deployDeterministic } from "./helpers";
|
|
17
|
-
import releaser from "
|
|
17
|
+
import releaser from "../../scripts/releaser";
|
|
18
18
|
import ProtocolSettings from "../../releases/deploy-settings.json";
|
|
19
19
|
import dao from "../../releases/deployment.json";
|
|
20
20
|
import { TransactionResponse } from "@ethersproject/providers";
|
|
21
21
|
|
|
22
|
+
const { name } = network;
|
|
23
|
+
|
|
22
24
|
const printDeploy = async (
|
|
23
25
|
c: Contract | TransactionResponse
|
|
24
26
|
): Promise<Contract | TransactionResponse> => {
|
|
@@ -34,30 +36,22 @@ const printDeploy = async (
|
|
|
34
36
|
};
|
|
35
37
|
|
|
36
38
|
export const createDAO = async () => {
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
ProtocolSettings["default"]
|
|
41
|
-
);
|
|
42
|
-
|
|
43
|
-
let release: { [key: string]: any } = dao[network.name];
|
|
39
|
+
const fusedao = dao[network.name.split("-")[0]];
|
|
40
|
+
const protocolSettings = ProtocolSettings["production"];
|
|
41
|
+
let release: { [key: string]: any } = {};
|
|
44
42
|
|
|
45
|
-
let [root] = await ethers.getSigners();
|
|
46
|
-
const daoOwner = protocolSettings.guardiansSafe || root.address;
|
|
47
|
-
if (!daoOwner) throw new Error("missing DAO_OWNER owner in env");
|
|
43
|
+
let [root, ...signers] = await ethers.getSigners();
|
|
48
44
|
//generic call permissions
|
|
49
45
|
let schemeMock = root;
|
|
50
46
|
const isMainnet = network.name.includes("main");
|
|
51
47
|
|
|
52
48
|
console.log("got signers:", {
|
|
53
49
|
network,
|
|
54
|
-
daoOwner,
|
|
55
50
|
root: root.address,
|
|
56
51
|
schemeMock: schemeMock.address,
|
|
57
52
|
balance: await ethers.provider
|
|
58
53
|
.getBalance(root.address)
|
|
59
|
-
.then(_ => _.toString())
|
|
60
|
-
release
|
|
54
|
+
.then(_ => _.toString())
|
|
61
55
|
});
|
|
62
56
|
|
|
63
57
|
if (network.name.includes("production")) {
|
|
@@ -77,6 +71,11 @@ export const createDAO = async () => {
|
|
|
77
71
|
root
|
|
78
72
|
);
|
|
79
73
|
|
|
74
|
+
const IdentityFactory = new ethers.ContractFactory(
|
|
75
|
+
IdentityABI.abi,
|
|
76
|
+
IdentityABI.bytecode,
|
|
77
|
+
root
|
|
78
|
+
);
|
|
80
79
|
const FeeFormulaFactory = new ethers.ContractFactory(
|
|
81
80
|
FeeFormulaABI.abi,
|
|
82
81
|
FeeFormulaABI.bytecode,
|
|
@@ -91,27 +90,24 @@ export const createDAO = async () => {
|
|
|
91
90
|
const AddFounders = (await AddFoundersFactory.deploy().then(
|
|
92
91
|
printDeploy
|
|
93
92
|
)) as Contract;
|
|
93
|
+
// const AddFounders = await ethers.getContractAt(
|
|
94
|
+
// AddFoundersABI.abi,
|
|
95
|
+
// "0x6F1BAbfF5E119d61F0c6d8653d84E8B284B87091"
|
|
96
|
+
// );
|
|
94
97
|
|
|
95
|
-
const proxyFactory = await ethers.getContractAt(
|
|
96
|
-
"ProxyFactory1967",
|
|
97
|
-
release.ProxyFactory
|
|
98
|
-
);
|
|
99
|
-
const salt = ethers.BigNumber.from(
|
|
100
|
-
ethers.utils.keccak256(ethers.utils.toUtf8Bytes("NameService"))
|
|
101
|
-
);
|
|
102
|
-
const nameserviceFutureAddress = await proxyFactory[
|
|
103
|
-
"getDeploymentAddress(uint256,address)"
|
|
104
|
-
](salt, root.address);
|
|
105
|
-
console.log("deploying identity", { nameserviceFutureAddress });
|
|
106
98
|
const Identity = (await deployDeterministic(
|
|
107
99
|
{
|
|
108
|
-
name: "
|
|
109
|
-
|
|
110
|
-
isUpgradeable: true
|
|
100
|
+
name: "Identity",
|
|
101
|
+
factory: IdentityFactory
|
|
111
102
|
},
|
|
112
|
-
[
|
|
103
|
+
[root.address]
|
|
113
104
|
).then(printDeploy)) as Contract;
|
|
114
105
|
|
|
106
|
+
// const Identity = await ethers.getContractAt(
|
|
107
|
+
// IdentityABI.abi,
|
|
108
|
+
// release.Identity
|
|
109
|
+
// );
|
|
110
|
+
|
|
115
111
|
const daoCreator = await DAOCreatorFactory.deploy(AddFounders.address);
|
|
116
112
|
|
|
117
113
|
const FeeFormula = (await deployDeterministic(
|
|
@@ -133,8 +129,8 @@ export const createDAO = async () => {
|
|
|
133
129
|
]
|
|
134
130
|
).then(printDeploy)) as Contract;
|
|
135
131
|
|
|
136
|
-
|
|
137
|
-
|
|
132
|
+
console.log("setting identity auth period");
|
|
133
|
+
await Identity.setAuthenticationPeriod(365).then(printDeploy);
|
|
138
134
|
|
|
139
135
|
console.log("creating dao");
|
|
140
136
|
await daoCreator
|
|
@@ -160,9 +156,20 @@ export const createDAO = async () => {
|
|
|
160
156
|
root
|
|
161
157
|
);
|
|
162
158
|
|
|
159
|
+
// const Avatar = new ethers.Contract(
|
|
160
|
+
// release.Avatar,
|
|
161
|
+
// [
|
|
162
|
+
// "function owner() view returns (address)",
|
|
163
|
+
// "function nativeToken() view returns (address)"
|
|
164
|
+
// ],
|
|
165
|
+
// root
|
|
166
|
+
// );
|
|
167
|
+
|
|
168
|
+
await Identity.setAvatar(Avatar.address).then(printDeploy);
|
|
169
|
+
|
|
163
170
|
console.log("Done deploying DAO, setting schemes permissions");
|
|
164
171
|
|
|
165
|
-
let schemes = [
|
|
172
|
+
let schemes = [process.env.DAO_OWNER, Identity.address];
|
|
166
173
|
|
|
167
174
|
const gd = await Avatar.nativeToken();
|
|
168
175
|
|
|
@@ -184,30 +191,24 @@ export const createDAO = async () => {
|
|
|
184
191
|
{ name: "NameService", isUpgradeable: true },
|
|
185
192
|
[
|
|
186
193
|
controller,
|
|
187
|
-
["CONTROLLER", "AVATAR", "IDENTITY", "GOODDOLLAR"
|
|
194
|
+
["CONTROLLER", "AVATAR", "IDENTITY", "GOODDOLLAR"].map(_ =>
|
|
188
195
|
ethers.utils.keccak256(ethers.utils.toUtf8Bytes(_))
|
|
189
196
|
),
|
|
190
|
-
[controller, Avatar.address, Identity.address, gd
|
|
197
|
+
[controller, Avatar.address, Identity.address, gd]
|
|
191
198
|
]
|
|
192
199
|
);
|
|
193
200
|
|
|
194
|
-
console.log("GRep nameservice:");
|
|
195
201
|
await (await GReputation.updateDAO(NameService.address)).wait();
|
|
196
|
-
console.log("
|
|
197
|
-
|
|
198
|
-
await Identity.initDAO(NameService.address).then(printDeploy);
|
|
199
|
-
|
|
202
|
+
console.log("GRep nameservice:");
|
|
200
203
|
//verifications
|
|
201
204
|
const Controller = await ethers.getContractAt("Controller", controller);
|
|
202
205
|
const GoodDollar = await ethers.getContractAt("IGoodDollar", gd);
|
|
203
206
|
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
await GoodDollar.renounceMinter().then(printDeploy);
|
|
207
|
-
}
|
|
207
|
+
await GoodDollar.renounceMinter().then(printDeploy);
|
|
208
|
+
await Identity.transferOwnership(process.env.DAO_OWNER).then(printDeploy);
|
|
208
209
|
|
|
209
210
|
const daoOwnerDaoPermissions = await Controller.getSchemePermissions(
|
|
210
|
-
|
|
211
|
+
process.env.DAO_OWNER,
|
|
211
212
|
Avatar.address
|
|
212
213
|
);
|
|
213
214
|
|
|
@@ -222,10 +223,8 @@ export const createDAO = async () => {
|
|
|
222
223
|
GReputation.MINTER_ROLE(),
|
|
223
224
|
Avatar.address
|
|
224
225
|
);
|
|
225
|
-
const daoOwnerIsIdentityOwner =
|
|
226
|
-
|
|
227
|
-
daoOwner
|
|
228
|
-
);
|
|
226
|
+
const daoOwnerIsIdentityOwner =
|
|
227
|
+
process.env.DAO_OWNER === (await Identity.owner());
|
|
229
228
|
|
|
230
229
|
//try to modify DAO -> should not succeed
|
|
231
230
|
await (await GReputation.updateDAO(ethers.constants.AddressZero)).wait();
|
|
@@ -244,21 +243,18 @@ export const createDAO = async () => {
|
|
|
244
243
|
});
|
|
245
244
|
|
|
246
245
|
release = {
|
|
247
|
-
|
|
246
|
+
ProxyFactory: "0x99C22e78A579e2176311c736C4c9F0b0D5A47806",
|
|
248
247
|
GoodDollar: gd,
|
|
249
248
|
Avatar: Avatar.address,
|
|
250
249
|
Controller: controller,
|
|
251
250
|
Identity: Identity.address,
|
|
252
251
|
NameService: NameService.address,
|
|
253
|
-
GReputation: GReputation.address
|
|
254
|
-
FeeFormula: FeeFormula.address,
|
|
255
|
-
DAOCreator: daoCreator.address,
|
|
256
|
-
AddFounders: AddFounders.address
|
|
252
|
+
GReputation: GReputation.address
|
|
257
253
|
};
|
|
258
254
|
await releaser(release, network.name, "deployment", false);
|
|
259
255
|
};
|
|
260
256
|
|
|
261
|
-
export const main = async () => {
|
|
257
|
+
export const main = async (networkName = name) => {
|
|
262
258
|
await createDAO().catch(console.log);
|
|
263
259
|
};
|
|
264
260
|
main();
|