@gooddollar/goodprotocol 1.0.30-beta.2 → 1.0.30-beta.3
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/README.md +25 -0
- package/artifacts/abis/AaveMock.min.json +1 -1
- package/artifacts/abis/AaveStakingFactory.min.json +1 -1
- package/artifacts/abis/AdminWallet.min.json +1 -1
- package/artifacts/abis/BuyAndBridgeHelper.min.json +1 -0
- package/artifacts/abis/ClaimersDistribution.min.json +1 -1
- package/artifacts/abis/CompoundStakingFactory.min.json +1 -1
- package/artifacts/abis/CompoundVotingMachine.min.json +1 -1
- package/artifacts/abis/DAIMock.min.json +1 -1
- package/artifacts/abis/DAOUpgradeableContract.min.json +1 -1
- package/artifacts/abis/DecimalsMock.min.json +1 -1
- package/artifacts/abis/DistributionHelper.min.json +1 -1
- package/artifacts/abis/DistributionHelperTest.min.json +1 -1
- package/artifacts/abis/DistributionHelperTestHelper.min.json +1 -1
- package/artifacts/abis/DonationsStaking.min.json +1 -1
- package/artifacts/abis/ERC20Permit.min.json +1 -0
- package/artifacts/abis/ERC20PresetMinterPauserUpgradeable.min.json +1 -0
- package/artifacts/abis/ERC677.min.json +1 -0
- package/artifacts/abis/ERC677Receiver.min.json +1 -0
- package/artifacts/abis/ExchangeHelper.min.json +1 -1
- package/artifacts/abis/Faucet.min.json +1 -0
- package/artifacts/abis/FeesFormulaMock.min.json +1 -0
- package/artifacts/abis/FuseFaucet.min.json +1 -1
- package/artifacts/abis/FuseStakingV3.min.json +1 -1
- package/artifacts/abis/GReputation.min.json +1 -1
- package/artifacts/abis/GoodAaveStaking.min.json +1 -1
- package/artifacts/abis/GoodAaveStakingV2.min.json +1 -1
- package/artifacts/abis/GoodCompoundStaking.min.json +1 -1
- package/artifacts/abis/GoodCompoundStakingTest.min.json +1 -1
- package/artifacts/abis/GoodCompoundStakingV2.min.json +1 -1
- package/artifacts/abis/GoodDollar.min.json +1 -0
- 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/GoodFundManager.min.json +1 -1
- package/artifacts/abis/GoodFundManagerTest.min.json +1 -1
- package/artifacts/abis/GoodMarketMaker.min.json +1 -1
- package/artifacts/abis/GoodReserveCDai.min.json +1 -1
- package/artifacts/abis/GovernanceStaking.min.json +1 -1
- package/artifacts/abis/IFeesFormula.min.json +1 -0
- package/artifacts/abis/IGoodDollar.min.json +1 -1
- package/artifacts/abis/IGoodDollarCustom.min.json +1 -0
- package/artifacts/abis/IGovernanceStaking.min.json +1 -0
- package/artifacts/abis/IIdentity.min.json +1 -1
- package/artifacts/abis/IIdentityV2.min.json +1 -0
- package/artifacts/abis/IStakingUpgrade.min.json +1 -0
- package/artifacts/abis/ISuperGoodDollar.min.json +1 -0
- package/artifacts/abis/IdentityMock.min.json +1 -0
- package/artifacts/abis/IdentityV2.min.json +1 -0
- package/artifacts/abis/InvitesV1.min.json +1 -1
- package/artifacts/abis/InvitesV2.min.json +1 -0
- package/artifacts/abis/LendingPoolMock.min.json +1 -1
- package/artifacts/abis/NameService.min.json +1 -1
- package/artifacts/abis/PayableMock.min.json +1 -0
- package/artifacts/abis/Proxy.min.json +1 -0
- package/artifacts/abis/Reputation.min.json +1 -1
- package/artifacts/abis/SelfApprove.min.json +1 -0
- package/artifacts/abis/SimpleStaking.min.json +1 -1
- package/artifacts/abis/SimpleStakingV2.min.json +1 -1
- package/artifacts/abis/SixteenDecimalsTokenMock.min.json +1 -1
- package/artifacts/abis/StakersDistribution.min.json +1 -1
- package/artifacts/abis/SuperGoodDollar.min.json +1 -0
- package/artifacts/abis/SuperToken.min.json +1 -0
- package/artifacts/abis/SuperfluidToken.min.json +1 -0
- package/artifacts/abis/TwentyDecimalsTokenMock.min.json +1 -1
- package/artifacts/abis/UBIScheme.min.json +1 -1
- package/artifacts/abis/USDCMock.min.json +1 -1
- package/artifacts/abis/UUPSProxiable.min.json +1 -0
- package/artifacts/abis/UUPSProxy.min.json +1 -0
- package/artifacts/abis/UUPSUtils.min.json +1 -0
- package/artifacts/abis/UpgradableMock.min.json +1 -1
- package/artifacts/abis/UpgradableMock2.min.json +1 -1
- package/artifacts/abis/UpgradableMock3.min.json +1 -1
- package/artifacts/abis/UpgradableMock4.min.json +1 -1
- package/artifacts/abis/cBATMock.min.json +1 -1
- package/artifacts/abis/cDAILowWorthMock.min.json +1 -1
- package/artifacts/abis/cDAIMock.min.json +1 -1
- package/artifacts/abis/cDAINonMintableMock.min.json +1 -1
- package/artifacts/abis/cDecimalsMock.min.json +1 -1
- package/artifacts/abis/cSDTMock.min.json +1 -1
- package/artifacts/abis/cUSDCMock.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 +184 -0
- 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 +70 -0
- package/artifacts/contracts/Interfaces.sol/IIdentityV2.dbg.json +4 -0
- package/artifacts/contracts/Interfaces.sol/IIdentityV2.json +300 -0
- 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/Faucet.sol/Faucet.dbg.json +4 -0
- package/artifacts/contracts/fuseFaucet/Faucet.sol/Faucet.json +736 -0
- package/artifacts/contracts/fuseFaucet/FuseFaucet.sol/FuseFaucet.dbg.json +1 -1
- package/artifacts/contracts/fuseFaucet/FuseFaucet.sol/FuseFaucet.json +15 -2
- package/artifacts/contracts/governance/ClaimersDistribution.sol/ClaimersDistribution.dbg.json +1 -1
- package/artifacts/contracts/governance/ClaimersDistribution.sol/ClaimersDistribution.json +28 -2
- package/artifacts/contracts/governance/CompoundVotingMachine.sol/CompoundVotingMachine.dbg.json +1 -1
- package/artifacts/contracts/governance/CompoundVotingMachine.sol/CompoundVotingMachine.json +28 -2
- package/artifacts/contracts/governance/GReputation.sol/GReputation.dbg.json +1 -1
- package/artifacts/contracts/governance/GReputation.sol/GReputation.json +78 -3
- package/artifacts/contracts/governance/GoodDollarStaking.sol/GoodDollarStaking.dbg.json +1 -1
- package/artifacts/contracts/governance/GoodDollarStaking.sol/GoodDollarStaking.json +71 -2
- package/artifacts/contracts/governance/GoodDollarStaking.sol/IGovernanceStaking.dbg.json +4 -0
- package/artifacts/contracts/governance/GoodDollarStaking.sol/IGovernanceStaking.json +24 -0
- package/artifacts/contracts/governance/GoodDollarStaking.sol/IStakingUpgrade.dbg.json +4 -0
- package/artifacts/contracts/governance/GoodDollarStaking.sol/IStakingUpgrade.json +35 -0
- 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 +31 -5
- 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 +28 -2
- package/artifacts/contracts/governance/StakersDistribution.sol/StakersDistribution.dbg.json +1 -1
- package/artifacts/contracts/governance/StakersDistribution.sol/StakersDistribution.json +28 -2
- package/artifacts/contracts/identity/IdentityV2.sol/IdentityV2.dbg.json +4 -0
- package/artifacts/contracts/identity/IdentityV2.sol/IdentityV2.json +1081 -0
- package/artifacts/contracts/invite/InvitesV1.sol/InvitesV1.dbg.json +1 -1
- package/artifacts/contracts/invite/InvitesV1.sol/InvitesV1.json +15 -2
- package/artifacts/contracts/invite/InvitesV2.sol/InvitesV2.dbg.json +4 -0
- package/artifacts/contracts/invite/InvitesV2.sol/InvitesV2.json +640 -0
- package/artifacts/contracts/mocks/AaveMock.sol/AaveMock.dbg.json +1 -1
- package/artifacts/contracts/mocks/AaveMock.sol/AaveMock.json +18 -5
- package/artifacts/contracts/mocks/AaveUSDMockOracle.sol/AaveUSDMockOracle.dbg.json +1 -1
- package/artifacts/contracts/mocks/AaveUSDMockOracle.sol/AaveUSDMockOracle.json +2 -2
- package/artifacts/contracts/mocks/BatUSDMockOracle.sol/BatUSDMockOracle.dbg.json +1 -1
- package/artifacts/contracts/mocks/BatUSDMockOracle.sol/BatUSDMockOracle.json +2 -2
- package/artifacts/contracts/mocks/CompUsdMockOracle.sol/CompUSDMockOracle.dbg.json +1 -1
- package/artifacts/contracts/mocks/CompUsdMockOracle.sol/CompUSDMockOracle.json +2 -2
- package/artifacts/contracts/mocks/DAIMock.sol/DAIMock.dbg.json +1 -1
- package/artifacts/contracts/mocks/DAIMock.sol/DAIMock.json +18 -5
- package/artifacts/contracts/mocks/DaiEthPriceMockOracle.sol/DaiEthPriceMockOracle.dbg.json +1 -1
- package/artifacts/contracts/mocks/DaiEthPriceMockOracle.sol/DaiEthPriceMockOracle.json +2 -2
- package/artifacts/contracts/mocks/DecimalsMock.sol/DecimalsMock.dbg.json +1 -1
- package/artifacts/contracts/mocks/DecimalsMock.sol/DecimalsMock.json +18 -5
- 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 +35 -2
- package/artifacts/contracts/mocks/DistributionHelperTest.sol/DistributionHelperTestHelper.dbg.json +1 -1
- package/artifacts/contracts/mocks/DistributionHelperTest.sol/DistributionHelperTestHelper.json +35 -2
- package/artifacts/contracts/mocks/EthUSDMockOracle.sol/EthUSDMockOracle.dbg.json +1 -1
- package/artifacts/contracts/mocks/EthUSDMockOracle.sol/EthUSDMockOracle.json +2 -2
- package/artifacts/contracts/mocks/FeesFormularMock.sol/FeesFormulaMock.dbg.json +4 -0
- package/artifacts/contracts/mocks/FeesFormularMock.sol/FeesFormulaMock.json +69 -0
- package/artifacts/contracts/mocks/GasPriceMockOracle.sol/GasPriceMockOracle.dbg.json +1 -1
- package/artifacts/contracts/mocks/GasPriceMockOracle.sol/GasPriceMockOracle.json +2 -2
- package/artifacts/contracts/mocks/GoodCompoundStakingTest.sol/GoodCompoundStakingTest.dbg.json +1 -1
- package/artifacts/contracts/mocks/GoodCompoundStakingTest.sol/GoodCompoundStakingTest.json +22 -9
- package/artifacts/contracts/mocks/GoodDollarStakingMock.sol/GoodDollarStakingMock.dbg.json +1 -1
- package/artifacts/contracts/mocks/GoodDollarStakingMock.sol/GoodDollarStakingMock.json +95 -2
- package/artifacts/contracts/mocks/GoodFundManagerTest.sol/GoodFundManagerTest.dbg.json +1 -1
- package/artifacts/contracts/mocks/GoodFundManagerTest.sol/GoodFundManagerTest.json +28 -2
- package/artifacts/contracts/mocks/IdentityMock.sol/IdentityMock.dbg.json +4 -0
- package/artifacts/contracts/mocks/IdentityMock.sol/IdentityMock.json +277 -0
- package/artifacts/contracts/mocks/IncentiveControllerMock.sol/IncentiveControllerMock.dbg.json +1 -1
- package/artifacts/contracts/mocks/IncentiveControllerMock.sol/IncentiveControllerMock.json +2 -2
- package/artifacts/contracts/mocks/LendingPoolMock.sol/LendingPoolMock.dbg.json +1 -1
- package/artifacts/contracts/mocks/LendingPoolMock.sol/LendingPoolMock.json +18 -5
- 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/PayableMock.sol/PayableMock.dbg.json +4 -0
- package/artifacts/contracts/mocks/PayableMock.sol/PayableMock.json +18 -0
- package/artifacts/contracts/mocks/SixteenDecimalsTokenMock.sol/SixteenDecimalsTokenMock.dbg.json +1 -1
- package/artifacts/contracts/mocks/SixteenDecimalsTokenMock.sol/SixteenDecimalsTokenMock.json +18 -5
- package/artifacts/contracts/mocks/StakingMockFixedAPY.sol/StakingMockFixedAPY.dbg.json +1 -1
- package/artifacts/contracts/mocks/StakingMockFixedAPY.sol/StakingMockFixedAPY.json +2 -2
- 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/TwentyDecimalsTokenMock.sol/TwentyDecimalsTokenMock.json +18 -5
- package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock.dbg.json +1 -1
- package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock.json +28 -2
- package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock2.dbg.json +1 -1
- package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock2.json +28 -2
- package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock3.dbg.json +1 -1
- package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock3.json +28 -2
- package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock4.dbg.json +1 -1
- package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock4.json +28 -2
- package/artifacts/contracts/mocks/UsdcMock.sol/USDCMock.dbg.json +1 -1
- package/artifacts/contracts/mocks/UsdcMock.sol/USDCMock.json +18 -5
- package/artifacts/contracts/mocks/cBATMock.sol/cBATMock.dbg.json +1 -1
- package/artifacts/contracts/mocks/cBATMock.sol/cBATMock.json +18 -5
- package/artifacts/contracts/mocks/cDAILowWorthMock.sol/cDAILowWorthMock.dbg.json +1 -1
- package/artifacts/contracts/mocks/cDAILowWorthMock.sol/cDAILowWorthMock.json +18 -5
- package/artifacts/contracts/mocks/cDAIMock.sol/cDAIMock.dbg.json +1 -1
- package/artifacts/contracts/mocks/cDAIMock.sol/cDAIMock.json +18 -5
- package/artifacts/contracts/mocks/cDAINonMintableMock.sol/cDAINonMintableMock.dbg.json +1 -1
- package/artifacts/contracts/mocks/cDAINonMintableMock.sol/cDAINonMintableMock.json +18 -5
- package/artifacts/contracts/mocks/cDecimalsMock.sol/cDecimalsMock.dbg.json +1 -1
- package/artifacts/contracts/mocks/cDecimalsMock.sol/cDecimalsMock.json +18 -5
- package/artifacts/contracts/mocks/cSDTMock.sol/cSDTMock.dbg.json +1 -1
- package/artifacts/contracts/mocks/cSDTMock.sol/cSDTMock.json +18 -5
- package/artifacts/contracts/mocks/cUSDCMock.sol/cUSDCMock.dbg.json +1 -1
- package/artifacts/contracts/mocks/cUSDCMock.sol/cUSDCMock.json +18 -5
- package/artifacts/contracts/reserve/DistributionHelper.sol/DistributionHelper.dbg.json +1 -1
- package/artifacts/contracts/reserve/DistributionHelper.sol/DistributionHelper.json +35 -2
- package/artifacts/contracts/reserve/ExchangeHelper.sol/ExchangeHelper.dbg.json +1 -1
- package/artifacts/contracts/reserve/ExchangeHelper.sol/ExchangeHelper.json +28 -2
- package/artifacts/contracts/reserve/GoodMarketMaker.sol/GoodMarketMaker.dbg.json +1 -1
- package/artifacts/contracts/reserve/GoodMarketMaker.sol/GoodMarketMaker.json +28 -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 +37 -5
- 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 +32 -6
- package/artifacts/contracts/staking/FuseStakingV3.sol/FuseStakingV3.dbg.json +1 -1
- package/artifacts/contracts/staking/FuseStakingV3.sol/FuseStakingV3.json +44 -83
- 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 +28 -2
- package/artifacts/contracts/staking/SimpleStaking.sol/SimpleStaking.dbg.json +1 -1
- package/artifacts/contracts/staking/SimpleStaking.sol/SimpleStaking.json +16 -3
- package/artifacts/contracts/staking/SimpleStakingV2.sol/SimpleStakingV2.dbg.json +1 -1
- package/artifacts/contracts/staking/SimpleStakingV2.sol/SimpleStakingV2.json +16 -3
- 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 +3 -3
- package/artifacts/contracts/staking/aave/GoodAaveStaking.sol/GoodAaveStaking.dbg.json +1 -1
- package/artifacts/contracts/staking/aave/GoodAaveStaking.sol/GoodAaveStaking.json +20 -7
- package/artifacts/contracts/staking/aave/GoodAaveStakingV2.sol/GoodAaveStakingV2.dbg.json +1 -1
- package/artifacts/contracts/staking/aave/GoodAaveStakingV2.sol/GoodAaveStakingV2.json +20 -7
- package/artifacts/contracts/staking/compound/CompoundStakingFactory.sol/CompoundStakingFactory.dbg.json +1 -1
- package/artifacts/contracts/staking/compound/CompoundStakingFactory.sol/CompoundStakingFactory.json +4 -4
- package/artifacts/contracts/staking/compound/GoodCompoundStaking.sol/GoodCompoundStaking.dbg.json +1 -1
- package/artifacts/contracts/staking/compound/GoodCompoundStaking.sol/GoodCompoundStaking.json +22 -9
- package/artifacts/contracts/staking/compound/GoodCompoundStakingV2.sol/GoodCompoundStakingV2.dbg.json +1 -1
- package/artifacts/contracts/staking/compound/GoodCompoundStakingV2.sol/GoodCompoundStakingV2.json +22 -9
- package/artifacts/contracts/staking/utils/Math64X64.sol/Math64x64.dbg.json +1 -1
- package/artifacts/contracts/staking/utils/Math64X64.sol/Math64x64.json +2 -2
- package/artifacts/contracts/staking/utils/StakingRewardsFixedAPY.sol/StakingRewardsFixedAPY.dbg.json +1 -1
- package/artifacts/contracts/token/ERC20PresetMinterPauserUpgradeable.sol/ERC20PresetMinterPauserUpgradeable.dbg.json +4 -0
- package/artifacts/contracts/token/ERC20PresetMinterPauserUpgradeable.sol/ERC20PresetMinterPauserUpgradeable.json +768 -0
- package/artifacts/contracts/token/ERC677.sol/ERC677.dbg.json +4 -0
- package/artifacts/contracts/token/ERC677.sol/ERC677.json +66 -0
- package/artifacts/contracts/token/ERC677.sol/ERC677Receiver.dbg.json +4 -0
- package/artifacts/contracts/token/ERC677.sol/ERC677Receiver.json +40 -0
- package/artifacts/contracts/token/FeesFormula.sol/IFeesFormula.dbg.json +4 -0
- package/artifacts/contracts/token/FeesFormula.sol/IFeesFormula.json +45 -0
- package/artifacts/contracts/token/GoodDollar.sol/GoodDollar.dbg.json +4 -0
- package/artifacts/contracts/token/GoodDollar.sol/GoodDollar.json +1206 -0
- package/artifacts/contracts/token/superfluid/ERC20Permit.sol/ERC20Permit.dbg.json +4 -0
- package/artifacts/contracts/token/superfluid/ERC20Permit.sol/ERC20Permit.json +99 -0
- package/artifacts/contracts/token/superfluid/ERC20Permit.sol/SelfApprove.dbg.json +4 -0
- package/artifacts/contracts/token/superfluid/ERC20Permit.sol/SelfApprove.json +34 -0
- package/artifacts/contracts/token/superfluid/ISuperGoodDollar.sol/IGoodDollarCustom.dbg.json +4 -0
- package/artifacts/contracts/token/superfluid/ISuperGoodDollar.sol/IGoodDollarCustom.json +355 -0
- package/artifacts/contracts/token/superfluid/ISuperGoodDollar.sol/ISuperGoodDollar.dbg.json +4 -0
- package/artifacts/contracts/token/superfluid/ISuperGoodDollar.sol/ISuperGoodDollar.json +2132 -0
- package/artifacts/contracts/token/superfluid/SuperGoodDollar.sol/SuperGoodDollar.dbg.json +4 -0
- package/artifacts/contracts/token/superfluid/SuperGoodDollar.sol/SuperGoodDollar.json +2590 -0
- package/artifacts/contracts/token/superfluid/SuperToken.sol/SuperToken.dbg.json +4 -0
- package/artifacts/contracts/token/superfluid/SuperToken.sol/SuperToken.json +1759 -0
- package/artifacts/contracts/token/superfluid/SuperfluidToken.sol/SuperfluidToken.dbg.json +4 -0
- package/artifacts/contracts/token/superfluid/SuperfluidToken.sol/SuperfluidToken.json +682 -0
- package/artifacts/contracts/token/superfluid/UUPSProxiable.sol/UUPSProxiable.dbg.json +4 -0
- package/artifacts/contracts/token/superfluid/UUPSProxiable.sol/UUPSProxiable.json +89 -0
- package/artifacts/contracts/token/superfluid/UUPSProxy.sol/Proxy.dbg.json +4 -0
- package/artifacts/contracts/token/superfluid/UUPSProxy.sol/Proxy.json +19 -0
- package/artifacts/contracts/token/superfluid/UUPSProxy.sol/UUPSProxy.dbg.json +4 -0
- package/artifacts/contracts/token/superfluid/UUPSProxy.sol/UUPSProxy.json +32 -0
- package/artifacts/contracts/token/superfluid/UUPSProxy.sol/UUPSUtils.dbg.json +4 -0
- package/artifacts/contracts/token/superfluid/UUPSProxy.sol/UUPSUtils.json +10 -0
- package/artifacts/contracts/ubi/UBIScheme.sol/UBIScheme.dbg.json +1 -1
- package/artifacts/contracts/ubi/UBIScheme.sol/UBIScheme.json +41 -22
- package/artifacts/contracts/utils/AdminWallet.sol/AdminWallet.dbg.json +1 -1
- package/artifacts/contracts/utils/AdminWallet.sol/AdminWallet.json +94 -48
- package/artifacts/contracts/utils/BancorFormula.sol/BancorFormula.dbg.json +1 -1
- package/artifacts/contracts/utils/BancorFormula.sol/BancorFormula.json +2 -2
- 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/BuyAndBridgeHelper.sol/BuyAndBridgeHelper.dbg.json +4 -0
- package/artifacts/contracts/utils/BuyAndBridgeHelper.sol/BuyAndBridgeHelper.json +184 -0
- 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 +28 -2
- package/artifacts/contracts/utils/DSMath.sol/DSMath.dbg.json +1 -1
- package/artifacts/contracts/utils/DSMath.sol/DSMath.json +2 -2
- package/artifacts/contracts/utils/DataTypes.sol/DataTypes.dbg.json +1 -1
- package/artifacts/contracts/utils/DataTypes.sol/DataTypes.json +2 -2
- package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/GoodDollarMintBurnWrapper.dbg.json +1 -1
- package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/GoodDollarMintBurnWrapper.json +35 -2
- 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/MultiCall.sol/Multicall.dbg.json +1 -1
- package/artifacts/contracts/utils/MultiCall.sol/Multicall.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/NameService.sol/NameService.json +28 -2
- 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/ERC1967Proxy.json +2 -2
- package/artifacts/contracts/utils/ProxyFactory1967.sol/ProxyFactory1967.dbg.json +1 -1
- package/artifacts/contracts/utils/ProxyFactory1967.sol/ProxyFactory1967.json +2 -2
- 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 +57 -3
- package/contracts/fuseFaucet/Faucet.sol +258 -0
- package/contracts/fuseFaucet/FuseFaucet.sol +1 -2
- package/contracts/governance/GReputation.sol +104 -16
- package/contracts/governance/GoodDollarStaking.sol +139 -53
- package/contracts/governance/GovernanceStaking.sol +2 -2
- package/contracts/identity/IdentityV2.sol +559 -0
- package/contracts/invite/InvitesV1.sol +6 -24
- package/contracts/invite/InvitesV2.sol +338 -0
- package/contracts/mocks/AaveMock.sol +1 -1
- package/contracts/mocks/DAIMock.sol +1 -1
- package/contracts/mocks/DecimalsMock.sol +1 -1
- package/contracts/mocks/FeesFormularMock.sol +21 -0
- package/contracts/mocks/GoodDollarStakingMock.sol +16 -0
- package/contracts/mocks/GoodFundManagerTest.sol +1 -1
- package/contracts/mocks/IdentityMock.sol +58 -0
- package/contracts/mocks/LendingPoolMock.sol +1 -1
- package/contracts/mocks/PayableMock.sol +3 -0
- package/contracts/mocks/SixteenDecimalsTokenMock.sol +1 -6
- package/contracts/mocks/TwentyDecimalsTokenMock.sol +1 -6
- package/contracts/mocks/UpgradableMocks.sol +5 -3
- package/contracts/mocks/UsdcMock.sol +1 -6
- package/contracts/mocks/cBATMock.sol +7 -12
- package/contracts/mocks/cDAILowWorthMock.sol +8 -12
- package/contracts/mocks/cDAIMock.sol +1 -1
- package/contracts/mocks/cDAINonMintableMock.sol +7 -12
- package/contracts/mocks/cDecimalsMock.sol +1 -1
- package/contracts/mocks/cSDTMock.sol +3 -3
- package/contracts/mocks/cUSDCMock.sol +5 -5
- package/contracts/reserve/DistributionHelper.sol +5 -1
- package/contracts/reserve/GoodReserveCDai.sol +15 -5
- package/contracts/staking/FuseStakingV3.sol +42 -112
- package/contracts/staking/GoodFundManager.sol +2 -2
- package/contracts/token/ERC20PresetMinterPauserUpgradeable.sol +140 -0
- package/contracts/token/ERC677.sol +74 -0
- package/contracts/token/FeesFormula.sol +10 -0
- package/contracts/token/GoodDollar.sol +234 -0
- package/contracts/token/superfluid/ERC20Permit.sol +101 -0
- package/contracts/token/superfluid/ISuperGoodDollar.sol +84 -0
- package/contracts/token/superfluid/SuperGoodDollar.sol +348 -0
- package/contracts/token/superfluid/SuperToken.sol +712 -0
- package/contracts/token/superfluid/SuperfluidToken.sol +402 -0
- package/contracts/token/superfluid/UUPSProxiable.sol +55 -0
- package/contracts/token/superfluid/UUPSProxy.sol +153 -0
- package/contracts/ubi/UBIScheme.sol +88 -68
- package/contracts/utils/AdminWallet.sol +42 -11
- package/contracts/utils/BuyAndBridgeHelper.sol +108 -0
- package/contracts/utils/GoodDollarMintBurnWrapper.sol +19 -1
- package/hardhat.config.ts +60 -9
- package/package.json +19 -10
- package/releases/deploy-settings.json +47 -3
- package/releases/deployment.json +67 -196
- package/scripts/analytics/activeWalletsStats.ts +4 -0
- package/scripts/analytics/gdinflow.ts +3 -0
- package/scripts/analytics/p2pTxs.ts +582 -0
- package/scripts/analytics/tokenInOutStats.ts +3 -1
- package/scripts/deployFullDAO.ts +39 -19
- package/scripts/deployGnosisSafe.ts +21 -21
- package/scripts/gdx/gdxAirdropCalculation.ts +11 -12
- package/scripts/governance/airdropCalculationRecover.ts +43 -33
- package/scripts/governance/airdropCalculationSorted.ts +438 -0
- package/scripts/governance/goodCheckpointSorted.ts +377 -0
- package/scripts/multichain-deploy/0_proxyFactory-deploy.ts +100 -0
- package/scripts/multichain-deploy/{basicdao-deploy.ts → 1_basicdao-deploy.ts} +123 -93
- package/scripts/multichain-deploy/2_helpers-deploy.ts +152 -0
- package/scripts/multichain-deploy/{gdSavings-deploy.ts → 3_gdSavings-deploy.ts} +106 -76
- package/scripts/multichain-deploy/4_ubi-deploy.ts +147 -0
- package/scripts/multichain-deploy/5_gov-deploy.ts +147 -0
- package/scripts/multichain-deploy/fulldeploy.sh +26 -0
- package/scripts/multichain-deploy/helpers.ts +205 -7
- package/scripts/multichain-deploy/verifyEtherscan.ts +197 -0
- package/scripts/staking/stakersGdRewardsCalculation.ts +57 -46
- package/scripts/test/localOldDaoDeploy.ts +10 -3
- package/scripts/upgradeToV3/v3-fix.ts +120 -0
- package/scripts/upgradeToV3/v3-upgrade.ts +219 -0
- package/scripts/upgrades/celo-deploy.ts +6 -0
- package/scripts/upgrades/identity-upgrade.ts +153 -0
- package/scripts/{multichain-deploy → upgrades}/nonubiDistribution-deploy.ts +2 -5
- package/scripts/upgrades/transferDaoToGuardians.ts +80 -0
- package/test/faucet/Faucet.test.ts +184 -0
- package/test/{FuseFaucet.test.ts → faucet/FuseFaucet.test.ts} +4 -3
- package/test/governance/ClaimersDistribution.test.ts +58 -6
- package/test/governance/CompoundVotingMachine.castvote.test.ts +3 -3
- package/test/governance/CompoundVotingMachine.crossblockchain.ts +3 -2
- package/test/governance/CompoundVotingMachine.daoscheme.ts +8 -10
- package/test/governance/CompoundVotingMachine.delegate.test.ts +4 -5
- package/test/governance/CompoundVotingMachine.guardian.test.ts +5 -11
- package/test/governance/CompoundVotingMachine.propose.test.ts +3 -2
- package/test/governance/CompoundVotingMachine.state.test.ts +3 -2
- package/test/governance/GReputation.test.ts +78 -32
- package/test/governance/GReputation.v2merkle.test.ts +186 -0
- package/test/governance/GoodDollarStaking.gd.test.ts +83 -1
- package/test/governance/GoodDollarStaking.good.test.ts +2 -1
- package/test/governance/GovernanceStaking.test.ts +4 -4
- package/test/governance/Reputation.test.ts +2 -1
- package/test/governance/StakersDistribution.test.ts +26 -13
- package/test/helpers.ts +145 -52
- package/test/identity/IdentityV2.test.ts +539 -0
- package/test/{InvitesV1.test.ts → invite/InvitesV1.test.ts} +10 -5
- package/test/invite/InvitesV2.test.ts +499 -0
- package/test/reserve/DistributionHelper.test.ts +2 -1
- package/test/reserve/GoodMarketMaker.test.ts +20 -19
- package/test/reserve/GoodReserveCDai.cap.test.ts +8 -1
- package/test/reserve/GoodReserveCDai.distribution.test.ts +2 -1
- package/test/reserve/GoodReserveCDai.gdx.test.ts +2 -2
- package/test/reserve/GoodReserveCDai.pause.test.ts +2 -1
- package/test/reserve/GoodReserveCDai.test.ts +14 -38
- package/test/reserve/GoodReserveCDai.uniswap.test.ts +21 -19
- package/test/staking/CompoundStakingFactory.test.ts +8 -5
- package/test/staking/DifferentStakingTokens.test.ts +3 -2
- package/test/staking/DonationsStaking.test.ts +33 -24
- package/test/staking/FuseStaking.test.ts +11 -13
- package/test/staking/GoodAaveStakingFactory.test.ts +36 -31
- package/test/staking/SimpleDAIStaking.test.ts +13 -19
- package/test/staking/StakingRewards.test.ts +32 -32
- package/test/staking/StakingRewardsFixedAPY.test.ts +2 -1
- package/test/staking/SwapHelper.test.ts +20 -17
- package/test/staking/UsdcAaveStaking.test.ts +36 -33
- package/test/token/GoodDollar.test.ts +342 -0
- package/test/token/SuperGoodDollar.test.ts +422 -0
- package/test/ubi/UBIScheme.e2e.test.ts +6 -5
- package/test/ubi/UBIScheme.test.ts +37 -36
- package/test/ubi/UBISchemeCycle.test.ts +11 -8
- package/test/utils/AdminWallet.test.ts +34 -11
- package/test/utils/BuyAndBridgeHelper.test.ts +249 -0
- package/test/utils/DAOUpgradeableContract.test.ts +3 -2
- package/test/utils/GoodDollarMintBurnWrapper.test.ts +3 -2
- package/test/utils/NameService.test.ts +37 -21
- package/test/utils/ProtocolUpgrade.test.ts +1 -1
- package/test/utils/ProxyFactory.test.ts +12 -10
- package/truffle-config.js +13 -4
- package/types/AaveMock.ts +24 -15
- package/types/AccessControlEnumerableUpgradeable.ts +9 -0
- package/types/AccessControlUpgradeable.ts +9 -0
- package/types/AdminWallet.ts +149 -110
- package/types/BuyAndBridgeHelper.ts +279 -0
- package/types/CBATMock.ts +24 -15
- package/types/CDAILowWorthMock.ts +24 -15
- package/types/CDAIMock.ts +24 -15
- package/types/CDAINonMintableMock.ts +24 -15
- package/types/CDecimalsMock.ts +24 -15
- package/types/CSDTMock.ts +24 -15
- package/types/CUSDCMock.ts +24 -15
- package/types/ClaimersDistribution.ts +28 -0
- package/types/CompoundVotingMachine.ts +28 -0
- package/types/ContextUpgradeable.ts +77 -0
- package/types/DAIMock.ts +24 -15
- package/types/DAOUpgradeableContract.ts +28 -0
- package/types/DecimalsMock.ts +24 -15
- package/types/DistributionHelper.ts +55 -0
- package/types/DistributionHelperTest.ts +55 -0
- package/types/DistributionHelperTestHelper.ts +55 -0
- package/types/DonationsStaking.ts +28 -0
- package/types/EIP712Upgradeable.ts +77 -0
- package/types/ERC165Upgradeable.ts +13 -2
- package/types/ERC1967UpgradeUpgradeable.ts +9 -0
- package/types/ERC20BurnableUpgradeable.ts +24 -15
- package/types/ERC20PausableUpgradeable.ts +24 -15
- package/types/ERC20Permit.ts +186 -0
- package/types/ERC20PermitUpgradeable.ts +531 -0
- package/types/ERC20PresetMinterPauserUpgradeable.ts +129 -16
- package/types/ERC20Upgradeable.ts +24 -15
- package/types/ERC20WithTokenInfo.ts +339 -0
- package/types/ERC677.ts +131 -0
- package/types/ERC677Receiver.ts +115 -0
- package/types/EventsEmitter.ts +88 -0
- package/types/ExchangeHelper.ts +28 -0
- package/types/Faucet.ts +1107 -0
- package/types/FeesFormulaMock.ts +130 -0
- package/types/FuseFaucet.ts +9 -0
- package/types/FuseStakingV3.ts +75 -208
- package/types/GReputation.ts +103 -4
- package/types/GoodAaveStaking.ts +24 -15
- package/types/GoodAaveStakingV2.ts +24 -15
- package/types/GoodCompoundStaking.ts +24 -15
- package/types/GoodCompoundStakingTest.ts +24 -15
- package/types/GoodCompoundStakingV2.ts +24 -15
- package/types/GoodDollar.ts +1733 -0
- package/types/GoodDollarMintBurnWrapper.ts +55 -0
- package/types/GoodDollarStaking.ts +92 -0
- package/types/GoodDollarStakingMock.ts +131 -0
- package/types/GoodFundManager.ts +28 -0
- package/types/GoodFundManagerTest.ts +28 -0
- package/types/GoodMarketMaker.ts +28 -0
- package/types/GoodReserveCDai.ts +55 -21
- package/types/GovernanceStaking.ts +43 -15
- package/types/IERC1271Upgradeable.ts +109 -0
- package/types/IERC1820Registry.ts +398 -0
- package/types/IERC1822ProxiableUpgradeable.ts +90 -0
- package/types/IERC20MetadataUpgradeable.ts +15 -15
- package/types/IERC20Permit.ts +175 -0
- package/types/IERC20PermitUpgradeable.ts +176 -0
- package/types/IERC20Upgradeable.ts +15 -15
- package/types/IERC777.ts +586 -0
- package/types/IERC777Recipient.ts +130 -0
- package/types/IERC777Sender.ts +130 -0
- package/types/IFeesFormula.ts +111 -0
- package/types/IGoodDollar.ts +304 -7
- package/types/IGoodDollarCustom.ts +618 -0
- package/types/IGovernanceStaking.ts +98 -0
- package/types/IIdentity.ts +106 -0
- package/types/IIdentityV2.ts +557 -0
- package/types/IStakingUpgrade.ts +110 -0
- package/types/ISuperAgreement.ts +151 -0
- package/types/ISuperApp.ts +410 -0
- package/types/ISuperGoodDollar.ts +3029 -0
- package/types/ISuperToken.ts +2326 -0
- package/types/ISuperTokenFactory.ts +415 -0
- package/types/ISuperfluid.ts +1565 -0
- package/types/ISuperfluidGovernance.ts +455 -0
- package/types/ISuperfluidToken.ts +951 -0
- package/types/IdentityMock.ts +493 -0
- package/types/IdentityV2.ts +1743 -0
- package/types/Initializable.ts +77 -0
- package/types/InvitesV1.ts +9 -0
- package/types/InvitesV2.ts +1015 -0
- package/types/LendingPoolMock.ts +24 -15
- package/types/NameService.ts +28 -0
- package/types/OwnableUpgradeable.ts +9 -0
- package/types/PausableUpgradeable.ts +9 -0
- package/types/PayableMock.ts +92 -0
- package/types/ReentrancyGuardUpgradeable.ts +78 -0
- package/types/Reputation.ts +28 -0
- package/types/SelfApprove.ts +115 -0
- package/types/SimpleStaking.ts +24 -15
- package/types/SimpleStakingV2.ts +24 -15
- package/types/SixteenDecimalsTokenMock.ts +24 -15
- package/types/StakersDistribution.ts +28 -0
- package/types/SuperGoodDollar.ts +3632 -0
- package/types/SuperToken.ts +2434 -0
- package/types/SuperfluidToken.ts +951 -0
- package/types/TokenInfo.ts +109 -0
- package/types/TwentyDecimalsTokenMock.ts +24 -15
- package/types/UBIScheme.ts +47 -40
- package/types/USDCMock.ts +24 -15
- package/types/UUPSProxiable.ts +183 -0
- package/types/UUPSProxy.ts +105 -0
- package/types/UUPSUpgradeable.ts +28 -0
- package/types/UpgradableMock.ts +28 -0
- package/types/UpgradableMock2.ts +28 -0
- package/types/UpgradableMock3.ts +28 -0
- package/types/UpgradableMock4.ts +28 -0
- package/types/factories/AaveMock__factory.ts +17 -4
- package/types/factories/AaveStakingFactory__factory.ts +1 -1
- package/types/factories/AaveUSDMockOracle__factory.ts +1 -1
- package/types/factories/AccessControlEnumerableUpgradeable__factory.ts +13 -0
- package/types/factories/AccessControlUpgradeable__factory.ts +13 -0
- package/types/factories/AdminWallet__factory.ts +93 -47
- package/types/factories/BancorFormula__factory.ts +1 -1
- package/types/factories/BaseShareFieldV2__factory.ts +1 -1
- package/types/factories/BaseShareField__factory.ts +1 -1
- package/types/factories/BatUSDMockOracle__factory.ts +1 -1
- package/types/factories/BuyAndBridgeHelper__factory.ts +237 -0
- package/types/factories/CBATMock__factory.ts +17 -4
- package/types/factories/CDAILowWorthMock__factory.ts +17 -4
- package/types/factories/CDAIMock__factory.ts +17 -4
- package/types/factories/CDAINonMintableMock__factory.ts +17 -4
- package/types/factories/CDecimalsMock__factory.ts +17 -4
- package/types/factories/CSDTMock__factory.ts +17 -4
- package/types/factories/CUSDCMock__factory.ts +17 -4
- package/types/factories/ClaimersDistribution__factory.ts +27 -1
- package/types/factories/CompUSDMockOracle__factory.ts +1 -1
- package/types/factories/CompoundStakingFactory__factory.ts +1 -1
- package/types/factories/CompoundVotingMachine__factory.ts +27 -1
- package/types/factories/ContextUpgradeable__factory.ts +39 -0
- package/types/factories/DAIMock__factory.ts +17 -4
- package/types/factories/DAOContract__factory.ts +1 -1
- package/types/factories/DAOUpgradeableContract__factory.ts +27 -1
- package/types/factories/DaiEthPriceMockOracle__factory.ts +1 -1
- package/types/factories/DecimalsMock__factory.ts +17 -4
- package/types/factories/DistributionBridgeMock__factory.ts +1 -1
- package/types/factories/DistributionHelperTestHelper__factory.ts +34 -1
- package/types/factories/DistributionHelperTest__factory.ts +34 -1
- package/types/factories/DistributionHelper__factory.ts +34 -1
- package/types/factories/DonationsStaking__factory.ts +27 -1
- package/types/factories/EIP712Upgradeable__factory.ts +39 -0
- package/types/factories/ERC165Upgradeable__factory.ts +13 -0
- package/types/factories/ERC1967Proxy__factory.ts +1 -1
- package/types/factories/ERC1967UpgradeUpgradeable__factory.ts +13 -0
- package/types/factories/ERC20BurnableUpgradeable__factory.ts +16 -3
- package/types/factories/ERC20PausableUpgradeable__factory.ts +16 -3
- package/types/factories/ERC20PermitUpgradeable__factory.ts +388 -0
- package/types/factories/ERC20Permit__factory.ts +111 -0
- package/types/factories/ERC20PresetMinterPauserUpgradeable__factory.ts +99 -5
- package/types/factories/ERC20Upgradeable__factory.ts +17 -4
- package/types/factories/ERC20WithTokenInfo__factory.ts +248 -0
- package/types/factories/ERC677Receiver__factory.ts +55 -0
- package/types/factories/ERC677__factory.ts +75 -0
- package/types/factories/EthUSDMockOracle__factory.ts +1 -1
- package/types/factories/EventsEmitter__factory.ts +84 -0
- package/types/factories/ExchangeHelper__factory.ts +27 -1
- package/types/factories/Faucet__factory.ts +781 -0
- package/types/factories/FeesFormulaMock__factory.ts +132 -0
- package/types/factories/FuseFaucet__factory.ts +14 -1
- package/types/factories/FuseStakingV3__factory.ts +43 -82
- package/types/factories/GReputation__factory.ts +77 -2
- package/types/factories/GasPriceMockOracle__factory.ts +1 -1
- package/types/factories/GoodAaveStakingV2__factory.ts +17 -4
- package/types/factories/GoodAaveStaking__factory.ts +17 -4
- package/types/factories/GoodCompoundStakingTest__factory.ts +17 -4
- package/types/factories/GoodCompoundStakingV2__factory.ts +17 -4
- package/types/factories/GoodCompoundStaking__factory.ts +17 -4
- package/types/factories/GoodDollarMintBurnWrapper__factory.ts +34 -1
- package/types/factories/GoodDollarStakingMock__factory.ts +94 -1
- package/types/factories/GoodDollarStaking__factory.ts +70 -1
- package/types/factories/GoodDollar__factory.ts +1254 -0
- package/types/factories/GoodFundManagerTest__factory.ts +27 -1
- package/types/factories/GoodFundManager__factory.ts +27 -1
- package/types/factories/GoodMarketMaker__factory.ts +27 -1
- package/types/factories/GoodReserveCDai__factory.ts +36 -4
- package/types/factories/GovernanceStaking__factory.ts +30 -4
- package/types/factories/IERC1271Upgradeable__factory.ts +50 -0
- package/types/factories/IERC1820Registry__factory.ts +239 -0
- package/types/factories/IERC1822ProxiableUpgradeable__factory.ts +43 -0
- package/types/factories/IERC20MetadataUpgradeable__factory.ts +3 -3
- package/types/factories/IERC20PermitUpgradeable__factory.ts +105 -0
- package/types/factories/IERC20Permit__factory.ts +98 -0
- package/types/factories/IERC20Upgradeable__factory.ts +3 -3
- package/types/factories/IERC777Recipient__factory.ts +64 -0
- package/types/factories/IERC777Sender__factory.ts +61 -0
- package/types/factories/IERC777__factory.ts +414 -0
- package/types/factories/IFeesFormula__factory.ts +57 -0
- package/types/factories/IGoodDollarCustom__factory.ts +370 -0
- package/types/factories/IGoodDollar__factory.ts +184 -0
- package/types/factories/IGovernanceStaking__factory.ts +39 -0
- package/types/factories/IIdentityV2__factory.ts +312 -0
- package/types/factories/IIdentity__factory.ts +70 -0
- package/types/factories/IStakingUpgrade__factory.ts +50 -0
- package/types/factories/ISuperAgreement__factory.ts +78 -0
- package/types/factories/ISuperApp__factory.ts +272 -0
- package/types/factories/ISuperGoodDollar__factory.ts +2147 -0
- package/types/factories/ISuperTokenFactory__factory.ts +271 -0
- package/types/factories/ISuperToken__factory.ts +1682 -0
- package/types/factories/ISuperfluidGovernance__factory.ts +264 -0
- package/types/factories/ISuperfluidToken__factory.ts +697 -0
- package/types/factories/ISuperfluid__factory.ts +1143 -0
- package/types/factories/IdentityMock__factory.ts +327 -0
- package/types/factories/IdentityV2__factory.ts +1129 -0
- package/types/factories/IncentiveControllerMock__factory.ts +1 -1
- package/types/factories/Initializable__factory.ts +36 -0
- package/types/factories/InvitesV1__factory.ts +14 -1
- package/types/factories/InvitesV2__factory.ts +688 -0
- package/types/factories/LendingPoolMock__factory.ts +17 -4
- package/types/factories/Multicall__factory.ts +1 -1
- package/types/factories/MultichainBridgeHelper__factory.ts +1 -1
- package/types/factories/MultichainRouterMock__factory.ts +1 -1
- package/types/factories/NameService__factory.ts +27 -1
- package/types/factories/OverMintTesterRegularStake__factory.ts +1 -1
- package/types/factories/OverMintTester__factory.ts +1 -1
- package/types/factories/OwnableUpgradeable__factory.ts +13 -0
- package/types/factories/PausableUpgradeable__factory.ts +13 -0
- package/types/factories/PayableMock__factory.ts +66 -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/ProxyFactory1967__factory.ts +1 -1
- package/types/factories/ReentrancyGuardUpgradeable__factory.ts +43 -0
- package/types/factories/ReputationTestHelper__factory.ts +1 -1
- package/types/factories/Reputation__factory.ts +27 -1
- package/types/factories/SelfApprove__factory.ts +46 -0
- package/types/factories/SimpleStakingV2__factory.ts +16 -3
- package/types/factories/SimpleStaking__factory.ts +16 -3
- package/types/factories/SixteenDecimalsTokenMock__factory.ts +17 -4
- package/types/factories/StakersDistribution__factory.ts +27 -1
- package/types/factories/StakingMockFixedAPY__factory.ts +1 -1
- package/types/factories/SuperGoodDollar__factory.ts +2643 -0
- package/types/factories/SuperToken__factory.ts +1809 -0
- package/types/factories/SuperfluidToken__factory.ts +697 -0
- package/types/factories/SwapHelperTest__factory.ts +1 -1
- package/types/factories/TokenInfo__factory.ts +62 -0
- package/types/factories/TwentyDecimalsTokenMock__factory.ts +17 -4
- package/types/factories/UBIScheme__factory.ts +40 -21
- package/types/factories/USDCMock__factory.ts +17 -4
- package/types/factories/UUPSProxiable__factory.ts +101 -0
- package/types/factories/UUPSProxy__factory.ts +80 -0
- package/types/factories/UUPSUpgradeable__factory.ts +26 -0
- package/types/factories/UniswapV2SwapHelper__factory.ts +1 -1
- package/types/factories/UpgradableMock2__factory.ts +27 -1
- package/types/factories/UpgradableMock3__factory.ts +27 -1
- package/types/factories/UpgradableMock4__factory.ts +27 -1
- package/types/factories/UpgradableMock__factory.ts +27 -1
- package/types/hardhat.d.ts +432 -0
- package/types/index.ts +92 -0
- package/yarn.lock +2348 -864
|
@@ -0,0 +1,258 @@
|
|
|
1
|
+
//SPDX-License-Identifier: MIT
|
|
2
|
+
|
|
3
|
+
pragma solidity >=0.8.0;
|
|
4
|
+
|
|
5
|
+
import "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol";
|
|
6
|
+
import "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol";
|
|
7
|
+
import "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol";
|
|
8
|
+
import "../Interfaces.sol";
|
|
9
|
+
import "../utils/NameService.sol";
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* @title FuseFaucet contract that can top up users wallets
|
|
13
|
+
*/
|
|
14
|
+
contract Faucet is Initializable, UUPSUpgradeable, AccessControlUpgradeable {
|
|
15
|
+
bytes32 public constant RELAYER_ROLE = keccak256("relayer");
|
|
16
|
+
|
|
17
|
+
event WalletTopped(
|
|
18
|
+
address indexed account, //address topped
|
|
19
|
+
uint256 amount,
|
|
20
|
+
address whitelistedRoot, //if account is connected to a whitelisted account, this will be it
|
|
21
|
+
address indexed relayerOrWhitelisted //the sender of the tx
|
|
22
|
+
);
|
|
23
|
+
|
|
24
|
+
uint256 public perDayRoughLimit;
|
|
25
|
+
uint256 public toppingAmount;
|
|
26
|
+
uint256 public gasRefund;
|
|
27
|
+
uint256 public startTime;
|
|
28
|
+
uint256 public currentDay;
|
|
29
|
+
|
|
30
|
+
NameService public nameService;
|
|
31
|
+
|
|
32
|
+
mapping(uint256 => mapping(address => uint256)) public toppings;
|
|
33
|
+
mapping(address => bool) public notFirstTime;
|
|
34
|
+
|
|
35
|
+
struct Wallet {
|
|
36
|
+
uint128 lastDayTopped;
|
|
37
|
+
uint32 dailyToppingCount;
|
|
38
|
+
uint128[7] lastWeekToppings;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
mapping(address => Wallet) public wallets;
|
|
42
|
+
uint32 public maxDailyToppings;
|
|
43
|
+
uint64 public gasPrice;
|
|
44
|
+
uint32 public maxPerWeekMultiplier;
|
|
45
|
+
uint32 public maxSwapAmount;
|
|
46
|
+
address public goodDollar_unused; //kept because of upgrades
|
|
47
|
+
uint64 public maxDailyNewWallets;
|
|
48
|
+
uint64 public dailyNewWalletsCount;
|
|
49
|
+
|
|
50
|
+
function initialize(
|
|
51
|
+
NameService _ns,
|
|
52
|
+
uint64 _gasPrice,
|
|
53
|
+
address relayer,
|
|
54
|
+
address owner
|
|
55
|
+
) public initializer {
|
|
56
|
+
__AccessControl_init_unchained();
|
|
57
|
+
_setupRole(DEFAULT_ADMIN_ROLE, owner);
|
|
58
|
+
if (relayer != address(0)) _setupRole(RELAYER_ROLE, relayer);
|
|
59
|
+
gasPrice = _gasPrice;
|
|
60
|
+
setToppingAmount(600000 * gasPrice); //0.6M gwei
|
|
61
|
+
maxDailyToppings = 3;
|
|
62
|
+
startTime = block.timestamp;
|
|
63
|
+
nameService = _ns;
|
|
64
|
+
maxPerWeekMultiplier = 2;
|
|
65
|
+
maxSwapAmount = 1000;
|
|
66
|
+
maxDailyNewWallets = 5000;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
function _authorizeUpgrade(address newImplementation)
|
|
70
|
+
internal
|
|
71
|
+
override
|
|
72
|
+
onlyRole(DEFAULT_ADMIN_ROLE)
|
|
73
|
+
{}
|
|
74
|
+
|
|
75
|
+
function getIdentity() public view returns (IIdentityV2) {
|
|
76
|
+
return IIdentityV2(nameService.getAddress("IDENTITY"));
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
function upgrade() public {
|
|
80
|
+
if (maxDailyNewWallets == 0) maxDailyNewWallets = 5000;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
modifier reimburseGas() {
|
|
84
|
+
uint256 _gasRefund = gasleft();
|
|
85
|
+
_;
|
|
86
|
+
_gasRefund = _gasRefund - gasleft() + 42000;
|
|
87
|
+
payable(msg.sender).transfer(_gasRefund * gasPrice); //gas price assumed 1e9 = 1gwei
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
receive() external payable {}
|
|
91
|
+
|
|
92
|
+
/*
|
|
93
|
+
* only whitelisted account or relayer can top non whitelisted accounts
|
|
94
|
+
* if target account is whitelisted anyone can top it
|
|
95
|
+
*/
|
|
96
|
+
modifier onlyAuthorized(address toTop) {
|
|
97
|
+
require(
|
|
98
|
+
getIdentity().getWhitelistedRoot(toTop) != address(0) ||
|
|
99
|
+
getIdentity().getWhitelistedRoot(msg.sender) != address(0) ||
|
|
100
|
+
hasRole(RELAYER_ROLE, msg.sender),
|
|
101
|
+
"not authorized"
|
|
102
|
+
);
|
|
103
|
+
_;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
modifier toppingLimit(address _user) {
|
|
107
|
+
//switch wallet to the account we do the accounting for
|
|
108
|
+
address whitelistedRoot = getIdentity().getWhitelistedRoot(_user);
|
|
109
|
+
_user = whitelistedRoot == address(0) ? _user : payable(whitelistedRoot);
|
|
110
|
+
|
|
111
|
+
uint256 prevDay = currentDay;
|
|
112
|
+
|
|
113
|
+
setDay();
|
|
114
|
+
if (currentDay != prevDay) dailyNewWalletsCount = 0;
|
|
115
|
+
|
|
116
|
+
require(
|
|
117
|
+
wallets[_user].lastDayTopped != uint128(currentDay) ||
|
|
118
|
+
wallets[_user].dailyToppingCount < maxDailyToppings,
|
|
119
|
+
"max daily toppings"
|
|
120
|
+
);
|
|
121
|
+
|
|
122
|
+
require(
|
|
123
|
+
(notFirstTime[_user] == false &&
|
|
124
|
+
dailyNewWalletsCount < maxDailyNewWallets) ||
|
|
125
|
+
whitelistedRoot != address(0),
|
|
126
|
+
"User not whitelisted or not first time"
|
|
127
|
+
);
|
|
128
|
+
|
|
129
|
+
//reset inactive days
|
|
130
|
+
uint256 dayOfWeek = currentDay % 7;
|
|
131
|
+
uint256 dayDiff = (currentDay - wallets[_user].lastDayTopped);
|
|
132
|
+
dayDiff = dayDiff > 7 ? 7 : dayDiff;
|
|
133
|
+
dayDiff = dayDiff > dayOfWeek ? dayOfWeek + 1 : dayDiff;
|
|
134
|
+
for (uint256 day = dayOfWeek + 1 - dayDiff; day <= dayOfWeek; day++) {
|
|
135
|
+
wallets[_user].lastWeekToppings[day] = 0;
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
uint128 weekTotal = 0;
|
|
139
|
+
for (uint256 i = 0; i <= dayOfWeek; i++) {
|
|
140
|
+
weekTotal += wallets[_user].lastWeekToppings[uint256(i)];
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
require(
|
|
144
|
+
weekTotal < perDayRoughLimit * maxPerWeekMultiplier,
|
|
145
|
+
"User wallet has been topped too many times this week"
|
|
146
|
+
);
|
|
147
|
+
_;
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
/* @dev Internal function that sets current day
|
|
151
|
+
*/
|
|
152
|
+
function setDay() internal {
|
|
153
|
+
currentDay = (block.timestamp - startTime) / 1 days;
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
function canTop(address _user) external view returns (bool) {
|
|
157
|
+
if (toppingAmount < address(_user).balance) return false;
|
|
158
|
+
|
|
159
|
+
address whitelistedRoot = getIdentity().getWhitelistedRoot(_user);
|
|
160
|
+
_user = whitelistedRoot == address(0) ? _user : whitelistedRoot;
|
|
161
|
+
|
|
162
|
+
uint256 _currentDay = (block.timestamp - startTime) / 1 days;
|
|
163
|
+
bool can = (wallets[_user].lastDayTopped != uint128(_currentDay) ||
|
|
164
|
+
wallets[_user].dailyToppingCount < 3) &&
|
|
165
|
+
((notFirstTime[_user] == false &&
|
|
166
|
+
dailyNewWalletsCount < maxDailyNewWallets) ||
|
|
167
|
+
whitelistedRoot != address(0));
|
|
168
|
+
|
|
169
|
+
uint128[7] memory lastWeekToppings = wallets[_user].lastWeekToppings;
|
|
170
|
+
//reset inactive days
|
|
171
|
+
uint256 dayOfWeek = _currentDay % 7;
|
|
172
|
+
uint256 dayDiff = (_currentDay - wallets[_user].lastDayTopped);
|
|
173
|
+
dayDiff = dayDiff > 7 ? 7 : dayDiff;
|
|
174
|
+
dayDiff = dayDiff > dayOfWeek ? dayOfWeek + 1 : dayDiff;
|
|
175
|
+
|
|
176
|
+
for (uint256 day = dayOfWeek + 1 - dayDiff; day <= dayOfWeek; day++) {
|
|
177
|
+
lastWeekToppings[day] = 0;
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
uint128 weekTotal = 0;
|
|
181
|
+
for (uint256 i = 0; i <= dayOfWeek; i++) {
|
|
182
|
+
weekTotal += lastWeekToppings[uint256(i)];
|
|
183
|
+
}
|
|
184
|
+
can = can && weekTotal < perDayRoughLimit * maxPerWeekMultiplier;
|
|
185
|
+
return can;
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
/* @dev Function to top given address with amount of G$ given in constructor
|
|
189
|
+
* can only be done by admin the amount of times specified in constructor per day
|
|
190
|
+
* @param _user The address to transfer to
|
|
191
|
+
*/
|
|
192
|
+
function topWallet(address payable _user)
|
|
193
|
+
public
|
|
194
|
+
reimburseGas
|
|
195
|
+
toppingLimit(_user)
|
|
196
|
+
onlyAuthorized(_user)
|
|
197
|
+
{
|
|
198
|
+
_topWallet(_user);
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
function _topWallet(address payable _wallet) internal {
|
|
202
|
+
address payable target = _wallet;
|
|
203
|
+
|
|
204
|
+
//switch wallet to the account we do the accounting for
|
|
205
|
+
address whitelistedRoot = getIdentity().getWhitelistedRoot(_wallet);
|
|
206
|
+
_wallet = whitelistedRoot == address(0)
|
|
207
|
+
? _wallet
|
|
208
|
+
: payable(whitelistedRoot);
|
|
209
|
+
|
|
210
|
+
require(toppingAmount > address(_wallet).balance);
|
|
211
|
+
uint256 toTop = toppingAmount - address(_wallet).balance;
|
|
212
|
+
|
|
213
|
+
uint256 dayOfWeek = currentDay % 7;
|
|
214
|
+
|
|
215
|
+
if (wallets[_wallet].lastDayTopped == uint128(currentDay))
|
|
216
|
+
wallets[_wallet].dailyToppingCount += 1;
|
|
217
|
+
else wallets[_wallet].dailyToppingCount = 1;
|
|
218
|
+
wallets[_wallet].lastDayTopped = uint128(currentDay);
|
|
219
|
+
wallets[_wallet].lastWeekToppings[dayOfWeek] += uint128(toTop);
|
|
220
|
+
|
|
221
|
+
if (notFirstTime[_wallet] == false && whitelistedRoot == address(0)) {
|
|
222
|
+
dailyNewWalletsCount++;
|
|
223
|
+
}
|
|
224
|
+
notFirstTime[_wallet] = true;
|
|
225
|
+
|
|
226
|
+
target.transfer(toTop);
|
|
227
|
+
emit WalletTopped(target, toTop, whitelistedRoot, msg.sender);
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
function onTokenTransfer(
|
|
231
|
+
address payable _from,
|
|
232
|
+
uint256 amount,
|
|
233
|
+
bytes calldata data
|
|
234
|
+
) external returns (bool) {
|
|
235
|
+
require(amount <= maxSwapAmount, "slippage");
|
|
236
|
+
address uniswapLike = abi.decode(data, (address));
|
|
237
|
+
Uniswap uniswap = Uniswap(uniswapLike);
|
|
238
|
+
address[] memory path = new address[](2);
|
|
239
|
+
path[0] = address(msg.sender);
|
|
240
|
+
path[1] = uniswap.WETH();
|
|
241
|
+
|
|
242
|
+
cERC20(msg.sender).approve(address(uniswapLike), type(uint256).max);
|
|
243
|
+
uniswap.swapExactTokensForETH(amount, 0, path, _from, block.timestamp);
|
|
244
|
+
return true;
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
function setToppingAmount(uint256 _amount)
|
|
248
|
+
public
|
|
249
|
+
onlyRole(DEFAULT_ADMIN_ROLE)
|
|
250
|
+
{
|
|
251
|
+
toppingAmount = _amount;
|
|
252
|
+
perDayRoughLimit = 2 * toppingAmount;
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
function setGasPrice(uint64 _price) external onlyRole(DEFAULT_ADMIN_ROLE) {
|
|
256
|
+
gasPrice = _price;
|
|
257
|
+
}
|
|
258
|
+
}
|
|
@@ -6,8 +6,7 @@ import "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol";
|
|
|
6
6
|
import "../Interfaces.sol";
|
|
7
7
|
|
|
8
8
|
/**
|
|
9
|
-
* @title
|
|
10
|
-
* and stake them in the SimpleStaking contract
|
|
9
|
+
* @title FuseFaucet contract that can top up users wallets
|
|
11
10
|
*/
|
|
12
11
|
contract FuseFaucet is Initializable {
|
|
13
12
|
event WalletTopped(address indexed user, uint256 amount);
|
|
@@ -11,6 +11,8 @@ import "../Interfaces.sol";
|
|
|
11
11
|
* to return the current reputation token.
|
|
12
12
|
* The DAO avatar will be the owner of this reputation token and not the Controller.
|
|
13
13
|
* Minting by the DAO will be done using controller.genericCall and not via controller.mintReputation
|
|
14
|
+
*
|
|
15
|
+
* V2 fixes merkle tree bug
|
|
14
16
|
*/
|
|
15
17
|
contract GReputation is Reputation {
|
|
16
18
|
bytes32 public constant ROOT_STATE = keccak256("rootState");
|
|
@@ -99,25 +101,36 @@ contract GReputation is Reputation {
|
|
|
99
101
|
|
|
100
102
|
function _canMint() internal view override {
|
|
101
103
|
require(
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
104
|
+
hasRole(MINTER_ROLE, _msgSender()) ||
|
|
105
|
+
(address(nameService) != address(0) &&
|
|
106
|
+
(_msgSender() == nameService.getAddress("GDAO_CLAIMERS") ||
|
|
107
|
+
_msgSender() == nameService.getAddress("GDAO_STAKING") ||
|
|
108
|
+
_msgSender() == nameService.getAddress("GDAO_STAKERS"))),
|
|
106
109
|
"GReputation: need minter role or be GDAO contract"
|
|
107
110
|
);
|
|
108
111
|
}
|
|
109
112
|
|
|
110
|
-
/// @notice internal function that overrides Reputation.sol with consideration to delegation
|
|
111
|
-
/// @param _user the address to mint for
|
|
112
|
-
/// @param _amount the amount of rep to mint
|
|
113
|
-
/// @return the actual amount minted
|
|
114
113
|
function _mint(address _user, uint256 _amount)
|
|
115
114
|
internal
|
|
116
115
|
override
|
|
117
116
|
returns (uint256)
|
|
118
117
|
{
|
|
118
|
+
return _mint(_user, _amount, false);
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
/// @notice internal function that overrides Reputation.sol with consideration to delegation
|
|
122
|
+
/// @param _user the address to mint for
|
|
123
|
+
/// @param _amount the amount of rep to mint
|
|
124
|
+
/// @return the actual amount minted
|
|
125
|
+
function _mint(
|
|
126
|
+
address _user,
|
|
127
|
+
uint256 _amount,
|
|
128
|
+
bool ignoreRepTarget
|
|
129
|
+
) internal returns (uint256) {
|
|
119
130
|
address repTarget = reputationRecipients[_user];
|
|
120
|
-
repTarget = repTarget != address(0)
|
|
131
|
+
repTarget = ignoreRepTarget == false && repTarget != address(0)
|
|
132
|
+
? repTarget
|
|
133
|
+
: _user;
|
|
121
134
|
|
|
122
135
|
super._mint(repTarget, _amount);
|
|
123
136
|
|
|
@@ -368,24 +381,75 @@ contract GReputation is Reputation {
|
|
|
368
381
|
}
|
|
369
382
|
|
|
370
383
|
/**
|
|
371
|
-
* @notice prove user balance in a specific blockchain state hash
|
|
384
|
+
* @notice prove user balance in a specific blockchain state hash, uses new sorted pairs trees and double hash for preimage attack mitigation
|
|
372
385
|
* @dev "rootState" is a special state that can be supplied once, and actually mints reputation on the current blockchain
|
|
373
386
|
* we use non sorted merkle tree, as sorting while preparing merkle tree is heavy
|
|
374
387
|
* @param _id the string id of the blockchain we supply proof for
|
|
375
388
|
* @param _user the user to prove his balance
|
|
376
389
|
* @param _balance the balance we are prooving
|
|
377
390
|
* @param _proof array of byte32 with proof data (currently merkle tree path)
|
|
378
|
-
* @param _nodeIndex index of node in the tree (for unsorted merkle tree proof)
|
|
379
|
-
|
|
380
391
|
* @return true if proof is valid
|
|
381
392
|
*/
|
|
382
393
|
function proveBalanceOfAtBlockchain(
|
|
394
|
+
string memory _id,
|
|
395
|
+
address _user,
|
|
396
|
+
uint256 _balance,
|
|
397
|
+
bytes32[] memory _proof
|
|
398
|
+
) public returns (bool) {
|
|
399
|
+
return
|
|
400
|
+
_proveBalanceOfAtBlockchain(
|
|
401
|
+
_id,
|
|
402
|
+
_user,
|
|
403
|
+
_balance,
|
|
404
|
+
_proof,
|
|
405
|
+
new bool[](0),
|
|
406
|
+
0,
|
|
407
|
+
false
|
|
408
|
+
);
|
|
409
|
+
}
|
|
410
|
+
|
|
411
|
+
/**
|
|
412
|
+
* DEPRECATED: future state hashes will be with sorted pairs and with double hash leaf values
|
|
413
|
+
* @notice prove user balance in a specific blockchain state hash
|
|
414
|
+
* @dev "rootState" is a special state that can be supplied once, and actually mints reputation on the current blockchain
|
|
415
|
+
* we use non sorted merkle tree, as sorting while preparing merkle tree is heavy
|
|
416
|
+
* @param _id the string id of the blockchain we supply proof for
|
|
417
|
+
* @param _user the user to prove his balance
|
|
418
|
+
* @param _balance the balance we are prooving
|
|
419
|
+
* @param _proof array of byte32 with proof data (currently merkle tree path)
|
|
420
|
+
* @param _isRightNode array of bool with indication if should be hashed on right or left
|
|
421
|
+
* @param _nodeIndex index of node in the tree (for unsorted merkle tree proof)
|
|
422
|
+
* @return true if proof is valid
|
|
423
|
+
*/
|
|
424
|
+
function proveBalanceOfAtBlockchainLegacy(
|
|
383
425
|
string memory _id,
|
|
384
426
|
address _user,
|
|
385
427
|
uint256 _balance,
|
|
386
428
|
bytes32[] memory _proof,
|
|
429
|
+
bool[] memory _isRightNode,
|
|
387
430
|
uint256 _nodeIndex
|
|
388
431
|
) public returns (bool) {
|
|
432
|
+
return
|
|
433
|
+
_proveBalanceOfAtBlockchain(
|
|
434
|
+
_id,
|
|
435
|
+
_user,
|
|
436
|
+
_balance,
|
|
437
|
+
_proof,
|
|
438
|
+
_isRightNode,
|
|
439
|
+
_nodeIndex,
|
|
440
|
+
true
|
|
441
|
+
);
|
|
442
|
+
}
|
|
443
|
+
|
|
444
|
+
function _proveBalanceOfAtBlockchain(
|
|
445
|
+
string memory _id,
|
|
446
|
+
address _user,
|
|
447
|
+
uint256 _balance,
|
|
448
|
+
bytes32[] memory _proof,
|
|
449
|
+
bool[] memory _isRightNode,
|
|
450
|
+
uint256 _nodeIndex,
|
|
451
|
+
bool legacy
|
|
452
|
+
) internal returns (bool) {
|
|
389
453
|
bytes32 idHash = keccak256(bytes(_id));
|
|
390
454
|
require(
|
|
391
455
|
blockchainStates[idHash].length > 0,
|
|
@@ -402,11 +466,17 @@ contract GReputation is Reputation {
|
|
|
402
466
|
);
|
|
403
467
|
|
|
404
468
|
bytes32 leafHash = keccak256(abi.encode(_user, _balance));
|
|
469
|
+
//v2 double hash fix to prevent preimage attack
|
|
470
|
+
if (legacy == false) {
|
|
471
|
+
leafHash = keccak256(abi.encode(leafHash));
|
|
472
|
+
}
|
|
405
473
|
bool isProofValid = checkProofOrdered(
|
|
406
474
|
_proof,
|
|
475
|
+
_isRightNode,
|
|
407
476
|
stateHash,
|
|
408
477
|
leafHash,
|
|
409
|
-
_nodeIndex
|
|
478
|
+
_nodeIndex,
|
|
479
|
+
legacy == false
|
|
410
480
|
);
|
|
411
481
|
|
|
412
482
|
require(isProofValid, "invalid merkle proof");
|
|
@@ -414,7 +484,10 @@ contract GReputation is Reputation {
|
|
|
414
484
|
//if initiial state then set real balance
|
|
415
485
|
if (idHash == ROOT_STATE) {
|
|
416
486
|
uint256 curTotalSupply = totalSupplyLocalAt(block.number);
|
|
417
|
-
|
|
487
|
+
// on proof for ROOT_HASH we force to ignore the repTarget, so it is the same wallet address receiving the reputation (prevent double voting power on snapshot)
|
|
488
|
+
// also it should behave the same as blockchain sync proof which also doesnt use repTarget, but updates the same address as in the proof
|
|
489
|
+
_mint(_user, _balance, true);
|
|
490
|
+
|
|
418
491
|
updateValueAtNow(totalSupplyHistory, curTotalSupply); // we undo the totalsupply, as we alredy set the totalsupply of the airdrop
|
|
419
492
|
}
|
|
420
493
|
|
|
@@ -544,9 +617,11 @@ contract GReputation is Reputation {
|
|
|
544
617
|
*/
|
|
545
618
|
function checkProofOrdered(
|
|
546
619
|
bytes32[] memory _proof,
|
|
620
|
+
bool[] memory _isRightNode,
|
|
547
621
|
bytes32 _root,
|
|
548
622
|
bytes32 _hash,
|
|
549
|
-
uint256 _index
|
|
623
|
+
uint256 _index,
|
|
624
|
+
bool sorted
|
|
550
625
|
) public pure returns (bool) {
|
|
551
626
|
// use the index to determine the node ordering
|
|
552
627
|
// index ranges 1 to n
|
|
@@ -558,6 +633,16 @@ contract GReputation is Reputation {
|
|
|
558
633
|
for (uint256 j = 0; j < _proof.length; j++) {
|
|
559
634
|
proofElement = _proof[j];
|
|
560
635
|
|
|
636
|
+
// for new sorted format
|
|
637
|
+
if (sorted) {
|
|
638
|
+
computedHash = proofElement < computedHash
|
|
639
|
+
? keccak256(abi.encodePacked(proofElement, computedHash))
|
|
640
|
+
: keccak256(abi.encodePacked(computedHash, proofElement));
|
|
641
|
+
continue;
|
|
642
|
+
}
|
|
643
|
+
|
|
644
|
+
// start of legacy format for the first GOOD airdrop
|
|
645
|
+
|
|
561
646
|
// calculate remaining elements in proof
|
|
562
647
|
remaining = _proof.length - j;
|
|
563
648
|
|
|
@@ -568,7 +653,10 @@ contract GReputation is Reputation {
|
|
|
568
653
|
_index = _index / 2 + 1;
|
|
569
654
|
}
|
|
570
655
|
|
|
571
|
-
if (
|
|
656
|
+
if (
|
|
657
|
+
(_isRightNode.length > 0 && _isRightNode[j] == false) ||
|
|
658
|
+
(_isRightNode.length == 0 && _index % 2 == 0)
|
|
659
|
+
) {
|
|
572
660
|
computedHash = keccak256(abi.encodePacked(proofElement, computedHash));
|
|
573
661
|
_index = _index / 2;
|
|
574
662
|
} else {
|