@gooddollar/goodprotocol 2.0.34-beta.2 → 2.0.34-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/artifacts/abis/GenericDistributionHelper.min.json +1 -0
- package/artifacts/abis/INonfungiblePositionManager.min.json +1 -0
- package/artifacts/abis/IUniswapV3Pool.min.json +1 -0
- package/artifacts/abis/UBISchemeV2.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/IQuoter.sol/IQuoterV2.dbg.json +4 -0
- package/artifacts/contracts/IQuoter.sol/IQuoterV2.json +211 -0
- package/artifacts/contracts/IUniswapV3.sol/INonfungiblePositionManager.dbg.json +4 -0
- package/artifacts/contracts/IUniswapV3.sol/INonfungiblePositionManager.json +102 -0
- package/artifacts/contracts/IUniswapV3.sol/IUniswapV3Pool.dbg.json +4 -0
- package/artifacts/contracts/IUniswapV3.sol/IUniswapV3Pool.json +93 -0
- 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/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/IIdentityV2.dbg.json +1 -1
- 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/IQuoterV2.dbg.json +1 -1
- package/artifacts/contracts/Interfaces.sol/ISwapRouter.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/MentoInterfaces.sol/IBancorExchangeProvider.dbg.json +1 -1
- package/artifacts/contracts/MentoInterfaces.sol/IBroker.dbg.json +1 -1
- package/artifacts/contracts/MentoInterfaces.sol/IGoodDollarExchangeProvider.dbg.json +1 -1
- package/artifacts/contracts/MentoInterfaces.sol/IGoodDollarExpansionController.dbg.json +1 -1
- package/artifacts/contracts/MentoInterfaces.sol/IMentoReserve.dbg.json +1 -1
- package/artifacts/contracts/MentoInterfaces.sol/ITradingLimits.dbg.json +1 -1
- package/artifacts/contracts/fuseFaucet/Faucet.sol/Faucet.dbg.json +1 -1
- package/artifacts/contracts/fuseFaucet/FuseFaucet.sol/FuseFaucet.dbg.json +1 -1
- package/artifacts/contracts/fuseFaucet/FuseFaucetV2.sol/FuseFaucetV2.dbg.json +1 -1
- package/artifacts/contracts/fuseFaucet/SuperfluidFacuet.sol/SuperfluidFaucet.dbg.json +1 -1
- package/artifacts/contracts/governance/ClaimersDistribution.sol/ClaimersDistribution.dbg.json +1 -1
- package/artifacts/contracts/governance/CompoundVotingMachine.sol/CompoundVotingMachine.dbg.json +1 -1
- package/artifacts/contracts/governance/GReputation.sol/GReputation.dbg.json +1 -1
- package/artifacts/contracts/governance/GoodDollarStaking.sol/GoodDollarStaking.dbg.json +1 -1
- package/artifacts/contracts/governance/GoodDollarStaking.sol/IGovernanceStaking.dbg.json +1 -1
- package/artifacts/contracts/governance/GoodDollarStaking.sol/IStakingUpgrade.dbg.json +1 -1
- 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/MultiBaseGovernanceShareField.sol/MultiBaseGovernanceShareField.dbg.json +1 -1
- package/artifacts/contracts/governance/Reputation.sol/Reputation.dbg.json +1 -1
- package/artifacts/contracts/governance/StakersDistribution.sol/StakersDistribution.dbg.json +1 -1
- package/artifacts/contracts/identity/IdentityV2.sol/IdentityV2.dbg.json +1 -1
- package/artifacts/contracts/identity/IdentityV3.sol/IdentityV3.dbg.json +1 -1
- package/artifacts/contracts/invite/InvitesFuseV2.sol/InvitesFuseV2.dbg.json +1 -1
- package/artifacts/contracts/invite/InvitesV1.sol/InvitesV1.dbg.json +1 -1
- package/artifacts/contracts/invite/InvitesV2.sol/InvitesV2.dbg.json +1 -1
- package/artifacts/contracts/invite/OneTimeReward.sol/OneTimeReward.dbg.json +1 -1
- package/artifacts/contracts/mocks/AaveMock.sol/AaveMock.dbg.json +1 -1
- package/artifacts/contracts/mocks/AaveUSDMockOracle.sol/AaveUSDMockOracle.dbg.json +1 -1
- package/artifacts/contracts/mocks/BatUSDMockOracle.sol/BatUSDMockOracle.dbg.json +1 -1
- package/artifacts/contracts/mocks/CeloDistributionHelperTest.sol/CeloDistributionHelperTest.dbg.json +1 -1
- package/artifacts/contracts/mocks/CeloDistributionHelperTest.sol/CeloDistributionHelperTestHelper.dbg.json +1 -1
- package/artifacts/contracts/mocks/CompUsdMockOracle.sol/CompUSDMockOracle.dbg.json +1 -1
- package/artifacts/contracts/mocks/DAIMock.sol/DAIMock.dbg.json +1 -1
- package/artifacts/contracts/mocks/DaiEthPriceMockOracle.sol/DaiEthPriceMockOracle.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/DistributionHelperTest.sol/DistributionHelperTest.dbg.json +1 -1
- package/artifacts/contracts/mocks/DistributionHelperTest.sol/DistributionHelperTestHelper.dbg.json +1 -1
- package/artifacts/contracts/mocks/EthUSDMockOracle.sol/EthUSDMockOracle.dbg.json +1 -1
- package/artifacts/contracts/mocks/FeesFormularMock.sol/FeesFormulaMock.dbg.json +1 -1
- package/artifacts/contracts/mocks/GasPriceMockOracle.sol/GasPriceMockOracle.dbg.json +1 -1
- package/artifacts/contracts/mocks/GoodCompoundStakingTest.sol/GoodCompoundStakingTest.dbg.json +1 -1
- package/artifacts/contracts/mocks/GoodDollarStakingMock.sol/GoodDollarStakingMock.dbg.json +1 -1
- package/artifacts/contracts/mocks/GoodFundManagerTest.sol/GoodFundManagerTest.dbg.json +1 -1
- package/artifacts/contracts/mocks/IdentityMock.sol/IdentityMock.dbg.json +1 -1
- 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/OverMintTester.sol/IGoodDollarStakingTest.dbg.json +1 -1
- package/artifacts/contracts/mocks/OverMintTester.sol/OverMintTester.dbg.json +1 -1
- package/artifacts/contracts/mocks/OverMintTesterRegularStake.sol/OverMintTesterRegularStake.dbg.json +1 -1
- package/artifacts/contracts/mocks/PayableMock.sol/PayableMock.dbg.json +1 -1
- 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/TwentyDecimalsTokenMock.sol/TwentyDecimalsTokenMock.dbg.json +1 -1
- package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock.dbg.json +1 -1
- package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock2.dbg.json +1 -1
- package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock3.dbg.json +1 -1
- package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock4.dbg.json +1 -1
- 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/CeloDistributionHelper.sol/CeloDistributionHelper.dbg.json +1 -1
- package/artifacts/contracts/reserve/DistributionHelper.sol/DistributionHelper.dbg.json +1 -1
- package/artifacts/contracts/reserve/ExchangeHelper.sol/ExchangeHelper.dbg.json +1 -1
- package/artifacts/contracts/reserve/GenericDistributionHelper.sol/GenericDistributionHelper.dbg.json +4 -0
- package/artifacts/contracts/reserve/GenericDistributionHelper.sol/GenericDistributionHelper.json +931 -0
- package/artifacts/contracts/reserve/GoodMarketMaker.sol/GoodMarketMaker.dbg.json +1 -1
- 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/staking/BaseShareField.sol/BaseShareField.dbg.json +1 -1
- package/artifacts/contracts/staking/BaseShareFieldV2.sol/BaseShareFieldV2.dbg.json +1 -1
- package/artifacts/contracts/staking/DonationsStaking.sol/DonationsStaking.dbg.json +1 -1
- package/artifacts/contracts/staking/FuseStakingV3.sol/FuseStakingV3.dbg.json +1 -1
- 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/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/aave/AaveStakingFactory.sol/AaveStakingFactory.dbg.json +1 -1
- package/artifacts/contracts/staking/aave/GoodAaveStaking.sol/GoodAaveStaking.dbg.json +1 -1
- package/artifacts/contracts/staking/aave/GoodAaveStakingV2.sol/GoodAaveStakingV2.dbg.json +1 -1
- package/artifacts/contracts/staking/compound/CompoundStakingFactory.sol/CompoundStakingFactory.dbg.json +1 -1
- package/artifacts/contracts/staking/compound/GoodCompoundStaking.sol/GoodCompoundStaking.dbg.json +1 -1
- package/artifacts/contracts/staking/compound/GoodCompoundStakingV2.sol/GoodCompoundStakingV2.dbg.json +1 -1
- 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/token/ERC20PresetMinterPauserUpgradeable.sol/ERC20PresetMinterPauserUpgradeable.dbg.json +1 -1
- package/artifacts/contracts/token/ERC677.sol/ERC677.dbg.json +1 -1
- package/artifacts/contracts/token/ERC677.sol/ERC677Receiver.dbg.json +1 -1
- package/artifacts/contracts/token/GoodDollar.sol/GoodDollar.dbg.json +1 -1
- package/artifacts/contracts/token/GoodDollar2.sol/GoodDollar2.dbg.json +1 -1
- package/artifacts/contracts/token/IFeesFormula.sol/IFeesFormula.dbg.json +1 -1
- package/artifacts/contracts/token/MultichainFeeFormula.sol/MultichainFeeFormula.dbg.json +1 -1
- package/artifacts/contracts/token/superfluid/ERC20Permit.sol/ERC20Permit.dbg.json +1 -1
- package/artifacts/contracts/token/superfluid/ERC20Permit.sol/SelfApprove.dbg.json +1 -1
- package/artifacts/contracts/token/superfluid/ISuperGoodDollar.sol/IGoodDollarCustom.dbg.json +1 -1
- package/artifacts/contracts/token/superfluid/ISuperGoodDollar.sol/ISuperGoodDollar.dbg.json +1 -1
- package/artifacts/contracts/token/superfluid/ISuperToken.sol/ISuperToken.dbg.json +1 -1
- package/artifacts/contracts/token/superfluid/SuperGoodDollar.sol/SuperGoodDollar.dbg.json +1 -1
- package/artifacts/contracts/token/superfluid/SuperToken.sol/SuperToken.dbg.json +1 -1
- package/artifacts/contracts/token/superfluid/SuperfluidToken.sol/SuperfluidToken.dbg.json +1 -1
- package/artifacts/contracts/token/superfluid/UUPSProxiable.sol/UUPSProxiable.dbg.json +1 -1
- package/artifacts/contracts/token/superfluid/UUPSProxy.sol/Proxy.dbg.json +1 -1
- package/artifacts/contracts/token/superfluid/UUPSProxy.sol/UUPSProxy.dbg.json +1 -1
- package/artifacts/contracts/token/superfluid/UUPSProxy.sol/UUPSUtils.dbg.json +1 -1
- package/artifacts/contracts/ubi/UBIScheme.sol/UBIScheme.dbg.json +1 -1
- package/artifacts/contracts/ubi/UBISchemeV2.sol/UBISchemeV2.dbg.json +1 -1
- package/artifacts/contracts/ubi/UBISchemeV2.sol/UBISchemeV2.json +7 -2
- package/artifacts/contracts/utils/AdminWallet.sol/AdminWallet.dbg.json +1 -1
- package/artifacts/contracts/utils/AdminWalletFuse.sol/AdminWalletFuse.dbg.json +1 -1
- 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/BulkWhitelist.sol/BulkWhitelist.dbg.json +1 -1
- package/artifacts/contracts/utils/BuyAndBridgeHelper.sol/BuyAndBridgeHelper.dbg.json +1 -1
- package/artifacts/contracts/utils/BuyFromReserveHelper.sol/BuyFromReserveHelper.dbg.json +1 -1
- package/artifacts/contracts/utils/BuyGDClone.sol/BuyGDClone.dbg.json +1 -1
- package/artifacts/contracts/utils/BuyGDClone.sol/BuyGDCloneFactory.dbg.json +1 -1
- package/artifacts/contracts/utils/BuyGDClone.sol/DonateGDClone.dbg.json +1 -1
- package/artifacts/contracts/utils/DAOContract.sol/DAOContract.dbg.json +1 -1
- package/artifacts/contracts/utils/DAOUpgradeableContract.sol/DAOUpgradeableContract.dbg.json +1 -1
- 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/FuseOldBridgeKill.sol/EternalStorage.dbg.json +1 -1
- package/artifacts/contracts/utils/FuseOldBridgeKill.sol/FuseOldBridgeKill.dbg.json +1 -1
- package/artifacts/contracts/utils/FuseOldBridgeKill.sol/IUpgradeabilityOwnerStorage.dbg.json +1 -1
- package/artifacts/contracts/utils/FuseOldBridgeKill.sol/Initializable.dbg.json +1 -1
- package/artifacts/contracts/utils/FuseOldBridgeKill.sol/Ownable.dbg.json +1 -1
- package/artifacts/contracts/utils/FuseOldBridgeKill.sol/Upgradeable.dbg.json +1 -1
- package/artifacts/contracts/utils/GDFaucet.sol/GDFaucet.dbg.json +1 -1
- package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/GoodDollarMintBurnWrapper.dbg.json +1 -1
- 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/IdentityFix.sol/IdentityFix.dbg.json +1 -1
- package/artifacts/contracts/utils/LastauthReduction.sol/LastauthReduction.dbg.json +1 -1
- package/artifacts/contracts/utils/MultiCall.sol/Multicall.dbg.json +1 -1
- package/artifacts/contracts/utils/MultichainBridgeHelper.sol/MultichainBridgeHelper.dbg.json +1 -1
- package/artifacts/contracts/utils/NameService.sol/NameService.dbg.json +1 -1
- package/artifacts/contracts/utils/OneTimePayments.sol/OneTimePayments.dbg.json +1 -1
- package/artifacts/contracts/utils/OneTimePaymentsV2.sol/OneTimePaymentsV2.dbg.json +1 -1
- package/artifacts/contracts/utils/ProtoclUpgradeV4Mento.sol/MentoExchange.dbg.json +1 -1
- package/artifacts/contracts/utils/ProtoclUpgradeV4Mento.sol/ProtocolUpgradeV4Mento.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/ProtocolUpgradeFuse.sol/ProtocolUpgradeFuse.dbg.json +1 -1
- package/artifacts/contracts/utils/ProtocolUpgradeFuseRecover.sol/ProtocolUpgradeFuseRecover.dbg.json +1 -1
- package/artifacts/contracts/utils/ProtocolUpgradeRecover.sol/ProtocolUpgradeRecover.dbg.json +1 -1
- 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/ReserveRestore.sol/ReserveRestore.dbg.json +1 -1
- package/contracts/IQuoter.sol +108 -0
- package/contracts/IUniswapV3.sol +51 -0
- package/contracts/reserve/GenericDistributionHelper.sol +319 -0
- package/contracts/ubi/UBISchemeV2.sol +8 -4
- package/contracts/utils/ProxyFactory1967.sol +16 -18
- package/dist/artifacts/contracts/identity/IdentityV2.sol/IdentityV2.json +2 -2
- package/dist/artifacts/contracts/token/superfluid/SuperGoodDollar.sol/SuperGoodDollar.json +179 -186
- package/dist/artifacts/contracts/token/superfluid/UUPSProxy.sol/UUPSProxy.json +2 -2
- package/dist/artifacts/contracts/utils/ProxyFactory1967.sol/ERC1967Proxy.json +2 -2
- package/dist/test-sdk/deploySuperGoodDollar.d.ts +1 -1
- package/dist/test-sdk/deploySuperGoodDollar.js +4 -8
- package/dist/test-sdk/index.js +1 -5
- package/hardhat.config.ts +14 -6
- package/package.json +1 -1
- package/releases/deploy-settings.json +15 -2
- package/releases/deployment.json +66 -45
- package/releases/olddao.json +1 -1
- package/scripts/fv.ts +19 -1
- package/scripts/multichain-deploy/0_proxyFactory-deploy.ts +4 -3
- package/scripts/multichain-deploy/1_basicdao-deploy.ts +18 -9
- package/scripts/multichain-deploy/4_ubi-deploy.ts +1 -1
- package/scripts/multichain-deploy/8_disthelper-deploy.ts +152 -0
- package/scripts/multichain-deploy/createUniswapTestPools.ts +163 -0
- package/scripts/multichain-deploy/fulldeploy.sh +17 -17
- package/scripts/multichain-deploy/helpers.ts +76 -6
- package/scripts/multichain-deploy/verify.ts +41 -0
- package/scripts/proposals/gip-25-xdc-upgrade.ts +438 -0
- package/test/helpers.ts +1 -1
- package/test/ubi/UBISchemeV2.test.ts +35 -108
- package/types/@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.ts +108 -0
- package/types/@openzeppelin/contracts/proxy/ERC1967/index.ts +1 -0
- package/types/@uniswap/index.ts +2 -0
- package/types/@uniswap/v2-periphery/contracts/index.ts +5 -0
- package/types/@uniswap/v2-periphery/contracts/interfaces/IWETH.ts +159 -0
- package/types/@uniswap/v2-periphery/contracts/interfaces/index.ts +4 -0
- package/types/@uniswap/v2-periphery/index.ts +5 -0
- package/types/contracts/IQuoter.sol/IQuoterV2.ts +297 -0
- package/types/contracts/IQuoter.sol/index.ts +4 -0
- package/types/contracts/IUniswapV3.sol/INonfungiblePositionManager.ts +151 -0
- package/types/contracts/IUniswapV3.sol/IUniswapV3Factory.ts +155 -0
- package/types/contracts/IUniswapV3.sol/IUniswapV3Pool.ts +179 -0
- package/types/contracts/IUniswapV3.sol/index.ts +5 -0
- package/types/contracts/Interfaces.sol/AToken.ts +81 -0
- package/types/contracts/Interfaces.sol/IAaveIncentivesControllerV3.ts +156 -0
- package/types/contracts/Interfaces.sol/ILendingPoolV3.ts +254 -0
- package/types/contracts/fuseFaucet/SuperfluidBaseFacuet.sol/EthDistributor.ts +648 -0
- package/types/contracts/fuseFaucet/SuperfluidBaseFacuet.sol/EthDistributorUpgradeable.ts +843 -0
- package/types/contracts/fuseFaucet/SuperfluidBaseFacuet.sol/index.ts +4 -0
- package/types/contracts/index.ts +4 -0
- package/types/contracts/mocks/CeloDistributionHelperTest.sol/DistributionHelperTestHelper.ts +1252 -0
- package/types/contracts/reserve/GenericDistributionHelper copy.sol/GenericDistributionHelper.ts +1247 -0
- package/types/contracts/reserve/GenericDistributionHelper copy.sol/index.ts +4 -0
- package/types/contracts/reserve/GenericDistributionHelper.ts +1304 -0
- package/types/contracts/reserve/GoodReserveADai.ts +2212 -0
- package/types/contracts/reserve/index.ts +1 -0
- package/types/contracts/staking/aave/GoodAave3StakingV2.sol/GoodAaveStakingV2.ts +1808 -0
- package/types/contracts/staking/aave/GoodAave3StakingV2.sol/index.ts +4 -0
- package/types/contracts/token/GoodDollar18.ts +1871 -0
- package/types/contracts/ubi/UBISchemeV2.ts +14 -3
- package/types/contracts/utils/BuyGDClone.sol/IQuoterV2.ts +184 -0
- package/types/contracts/utils/BuyGDClone.sol/ISwapRouter.ts +306 -0
- package/types/contracts/utils/FuseOldBridgeKill.sol/BasicAMBErc677ToErc677.ts +108 -0
- package/types/contracts/utils/ProtocolUpgradeV4Mento.sol/MentoExchange.ts +81 -0
- package/types/contracts/utils/ProtocolUpgradeV4Mento.sol/ProtocolUpgradeV4Mento.ts +161 -0
- package/types/contracts/utils/ProtocolUpgradeV4Mento.sol/index.ts +5 -0
- package/types/contracts/utils/ReserveRestore.sol/MentoExchange.ts +81 -0
- package/types/contracts/utils/ReserveRestore.sol/ReserveRestore.ts +112 -0
- package/types/contracts/utils/ReserveRestore.sol/index.ts +5 -0
- package/types/factories/@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy__factory.ts +146 -0
- package/types/factories/@openzeppelin/contracts/proxy/ERC1967/index.ts +1 -0
- package/types/factories/@uniswap/index.ts +1 -0
- package/types/factories/@uniswap/v2-periphery/contracts/index.ts +4 -0
- package/types/factories/@uniswap/v2-periphery/contracts/interfaces/IWETH__factory.ts +67 -0
- package/types/factories/@uniswap/v2-periphery/contracts/interfaces/index.ts +4 -0
- package/types/factories/@uniswap/v2-periphery/index.ts +4 -0
- package/types/factories/contracts/IQuoter.sol/IQuoterV2__factory.ts +226 -0
- package/types/factories/contracts/IQuoter.sol/index.ts +4 -0
- package/types/factories/contracts/IUniswapV3.sol/INonfungiblePositionManager__factory.ts +121 -0
- package/types/factories/contracts/IUniswapV3.sol/IUniswapV3Factory__factory.ts +84 -0
- package/types/factories/contracts/IUniswapV3.sol/IUniswapV3Pool__factory.ts +108 -0
- package/types/factories/contracts/IUniswapV3.sol/index.ts +5 -0
- package/types/factories/contracts/Interfaces.sol/AToken__factory.ts +36 -0
- package/types/factories/contracts/Interfaces.sol/IAaveIncentivesControllerV3__factory.ts +88 -0
- package/types/factories/contracts/Interfaces.sol/ILendingPoolV3__factory.ts +186 -0
- package/types/factories/contracts/fuseFaucet/SuperfluidBaseFacuet.sol/EthDistributorUpgradeable__factory.ts +572 -0
- package/types/factories/contracts/fuseFaucet/SuperfluidBaseFacuet.sol/EthDistributor__factory.ts +482 -0
- package/types/factories/contracts/fuseFaucet/SuperfluidBaseFacuet.sol/index.ts +4 -0
- package/types/factories/contracts/index.ts +2 -0
- package/types/factories/contracts/mocks/CeloDistributionHelperTest.sol/DistributionHelperTestHelper__factory.ts +929 -0
- package/types/factories/contracts/reserve/GenericDistributionHelper copy.sol/GenericDistributionHelper__factory.ts +935 -0
- package/types/factories/contracts/reserve/GenericDistributionHelper copy.sol/index.ts +4 -0
- package/types/factories/contracts/reserve/GenericDistributionHelper__factory.ts +987 -0
- package/types/factories/contracts/reserve/GoodReserveADai__factory.ts +1502 -0
- package/types/factories/contracts/reserve/index.ts +1 -0
- package/types/factories/contracts/staking/aave/GoodAave3StakingV2.sol/GoodAaveStakingV2__factory.ts +1240 -0
- package/types/factories/contracts/staking/aave/GoodAave3StakingV2.sol/index.ts +4 -0
- package/types/factories/contracts/token/GoodDollar18__factory.ts +1257 -0
- package/types/factories/contracts/ubi/UBISchemeV2__factory.ts +6 -1
- package/types/factories/contracts/utils/BuyGDClone.sol/IQuoterV2__factory.ts +126 -0
- package/types/factories/contracts/utils/BuyGDClone.sol/ISwapRouter__factory.ts +220 -0
- package/types/factories/contracts/utils/FuseOldBridgeKill.sol/BasicAMBErc677ToErc677__factory.ts +86 -0
- package/types/factories/contracts/utils/ProtocolUpgradeV4Mento.sol/MentoExchange__factory.ts +39 -0
- package/types/factories/contracts/utils/ProtocolUpgradeV4Mento.sol/ProtocolUpgradeV4Mento__factory.ts +152 -0
- package/types/factories/contracts/utils/ProtocolUpgradeV4Mento.sol/index.ts +5 -0
- package/types/factories/contracts/utils/ProxyFactory1967.sol/ERC1967Proxy__factory.ts +1 -1
- package/types/factories/contracts/utils/ProxyFactory1967.sol/ProxyFactory1967__factory.ts +1 -1
- package/types/factories/contracts/utils/ReserveRestore.sol/MentoExchange__factory.ts +39 -0
- package/types/factories/contracts/utils/ReserveRestore.sol/ReserveRestore__factory.ts +95 -0
- package/types/factories/contracts/utils/ReserveRestore.sol/index.ts +5 -0
- package/types/hardhat.d.ts +54 -0
- package/types/index.ts +10 -2
|
@@ -0,0 +1,319 @@
|
|
|
1
|
+
// SPDX-License-Identifier: MIT
|
|
2
|
+
|
|
3
|
+
pragma solidity >=0.8;
|
|
4
|
+
|
|
5
|
+
import "@openzeppelin/contracts-upgradeable/access/AccessControlEnumerableUpgradeable.sol";
|
|
6
|
+
import "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol";
|
|
7
|
+
import "@mean-finance/uniswap-v3-oracle/solidity/interfaces/IStaticOracle.sol";
|
|
8
|
+
import "@gooddollar/bridge-contracts/contracts/messagePassingBridge/IMessagePassingBridge.sol";
|
|
9
|
+
import "@uniswap/v2-periphery/contracts/interfaces/IWETH.sol";
|
|
10
|
+
|
|
11
|
+
import "../utils/DAOUpgradeableContract.sol";
|
|
12
|
+
|
|
13
|
+
// import "hardhat/console.sol";
|
|
14
|
+
|
|
15
|
+
/***
|
|
16
|
+
* @dev DistributionHelper receives funds and distributes them to recipients
|
|
17
|
+
* recipients can be on other blockchains and get their funds via fuse/multichain bridge
|
|
18
|
+
* accounts with ADMIN_ROLE can update the recipients, defaults to Avatar
|
|
19
|
+
*/
|
|
20
|
+
contract GenericDistributionHelper is
|
|
21
|
+
DAOUpgradeableContract,
|
|
22
|
+
AccessControlEnumerableUpgradeable
|
|
23
|
+
{
|
|
24
|
+
error FEE_LIMIT(uint256 fee);
|
|
25
|
+
error INVALID_CHAINID();
|
|
26
|
+
|
|
27
|
+
bytes32 public constant GUARDIAN_ROLE = keccak256("GUARDIAN_ROLE");
|
|
28
|
+
|
|
29
|
+
enum TransferType {
|
|
30
|
+
LayerZeroBridge,
|
|
31
|
+
Transfer,
|
|
32
|
+
TransferAndCall
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
struct DistributionRecipient {
|
|
36
|
+
uint32 bps; //share out of each distribution
|
|
37
|
+
uint32 chainId; //for multichain bridge
|
|
38
|
+
address addr; //recipient address
|
|
39
|
+
TransferType transferType;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
struct FeeSettings {
|
|
43
|
+
uint128 maxFee;
|
|
44
|
+
uint128 minBalanceForFees;
|
|
45
|
+
uint8 percentageToSellForFee;
|
|
46
|
+
uint8 maxSlippage;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
DistributionRecipient[] public distributionRecipients;
|
|
50
|
+
|
|
51
|
+
IMessagePassingBridge private _unused_mpbBridge;
|
|
52
|
+
FeeSettings public feeSettings;
|
|
53
|
+
IStaticOracle public STATIC_ORACLE;
|
|
54
|
+
ISwapRouter public ROUTER;
|
|
55
|
+
|
|
56
|
+
address public gasToken;
|
|
57
|
+
|
|
58
|
+
address public reserveToken;
|
|
59
|
+
|
|
60
|
+
event Distribution(
|
|
61
|
+
uint256 distributed,
|
|
62
|
+
uint256 startingBalance,
|
|
63
|
+
uint256 incomingAmount,
|
|
64
|
+
DistributionRecipient[] distributionRecipients,
|
|
65
|
+
uint256 gdSoldForGas,
|
|
66
|
+
uint256 nativeBoughtForGas
|
|
67
|
+
);
|
|
68
|
+
event RecipientUpdated(DistributionRecipient recipient, uint256 index);
|
|
69
|
+
event RecipientAdded(DistributionRecipient recipient, uint256 index);
|
|
70
|
+
event BuyNativeFailed(
|
|
71
|
+
string reason,
|
|
72
|
+
uint256 amountToSell,
|
|
73
|
+
uint256 amountOutMinimum
|
|
74
|
+
);
|
|
75
|
+
|
|
76
|
+
receive() external payable {}
|
|
77
|
+
|
|
78
|
+
function initialize(
|
|
79
|
+
INameService _ns,
|
|
80
|
+
IStaticOracle _oracle,
|
|
81
|
+
address _gasToken, //weth
|
|
82
|
+
address _reserveToken,
|
|
83
|
+
ISwapRouter _router,
|
|
84
|
+
FeeSettings memory _feeData
|
|
85
|
+
) external initializer {
|
|
86
|
+
__AccessControlEnumerable_init();
|
|
87
|
+
setDAO(_ns);
|
|
88
|
+
_setupRole(DEFAULT_ADMIN_ROLE, avatar); //this needs to happen after setDAO for avatar to be non empty
|
|
89
|
+
_setupRole(GUARDIAN_ROLE, avatar);
|
|
90
|
+
STATIC_ORACLE = _oracle;
|
|
91
|
+
ROUTER = _router;
|
|
92
|
+
feeSettings = _feeData;
|
|
93
|
+
gasToken = _gasToken;
|
|
94
|
+
_setReserveToken(_reserveToken);
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
function getBridge() public view returns (IMessagePassingBridge) {
|
|
98
|
+
return IMessagePassingBridge(nameService.getAddress("MPBBRIDGE_CONTRACT"));
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
function setReserveToken(
|
|
102
|
+
address _reserveToken
|
|
103
|
+
) public onlyRole(GUARDIAN_ROLE) {
|
|
104
|
+
_setReserveToken(_reserveToken);
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
function _setReserveToken(address _reserveToken) internal {
|
|
108
|
+
uint24[] memory fees = new uint24[](1);
|
|
109
|
+
fees[0] = 100;
|
|
110
|
+
reserveToken = _reserveToken;
|
|
111
|
+
STATIC_ORACLE.prepareSpecificFeeTiersWithTimePeriod(
|
|
112
|
+
reserveToken,
|
|
113
|
+
address(nativeToken()),
|
|
114
|
+
fees,
|
|
115
|
+
60
|
|
116
|
+
);
|
|
117
|
+
STATIC_ORACLE.prepareSpecificFeeTiersWithTimePeriod(
|
|
118
|
+
reserveToken,
|
|
119
|
+
gasToken,
|
|
120
|
+
fees,
|
|
121
|
+
60
|
|
122
|
+
);
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
function setFeeSettings(
|
|
126
|
+
FeeSettings memory _feeData
|
|
127
|
+
) external onlyRole(GUARDIAN_ROLE) {
|
|
128
|
+
feeSettings = _feeData;
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
/**
|
|
132
|
+
* @notice this is usually called by reserve, but can be called by anyone anytime to trigger distribution
|
|
133
|
+
* @param _amount how much was sent, informational only
|
|
134
|
+
*/
|
|
135
|
+
function onDistribution(uint256 _amount) external virtual {
|
|
136
|
+
//we consider the actual balance and not _amount
|
|
137
|
+
uint256 toDistribute = nativeToken().balanceOf(address(this));
|
|
138
|
+
if (toDistribute == 0) return;
|
|
139
|
+
|
|
140
|
+
uint256 boughtNative;
|
|
141
|
+
uint256 gdToSellForFee;
|
|
142
|
+
uint256 minReceived;
|
|
143
|
+
if (address(this).balance < feeSettings.minBalanceForFees) {
|
|
144
|
+
gdToSellForFee =
|
|
145
|
+
(toDistribute * feeSettings.percentageToSellForFee) /
|
|
146
|
+
100;
|
|
147
|
+
(gdToSellForFee, minReceived) = calcGDToSell(gdToSellForFee);
|
|
148
|
+
toDistribute -= gdToSellForFee;
|
|
149
|
+
boughtNative = buyNativeWithGD(gdToSellForFee, minReceived);
|
|
150
|
+
|
|
151
|
+
//try to unwrap to native
|
|
152
|
+
try IWETH(gasToken).withdraw(boughtNative) {
|
|
153
|
+
// success
|
|
154
|
+
} catch Error(string memory reason) {
|
|
155
|
+
emit BuyNativeFailed(reason, boughtNative, 0);
|
|
156
|
+
} catch {
|
|
157
|
+
emit BuyNativeFailed("WETH withdraw failed", boughtNative, 0);
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
uint256 totalDistributed;
|
|
162
|
+
for (uint256 i = 0; i < distributionRecipients.length; i++) {
|
|
163
|
+
DistributionRecipient storage r = distributionRecipients[i];
|
|
164
|
+
if (r.bps > 0) {
|
|
165
|
+
uint256 toTransfer = (toDistribute * r.bps) / 10000;
|
|
166
|
+
totalDistributed += toTransfer;
|
|
167
|
+
if (toTransfer > 0) distribute(r, toTransfer);
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
emit Distribution(
|
|
172
|
+
totalDistributed,
|
|
173
|
+
toDistribute,
|
|
174
|
+
_amount,
|
|
175
|
+
distributionRecipients,
|
|
176
|
+
gdToSellForFee,
|
|
177
|
+
boughtNative
|
|
178
|
+
);
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
/**
|
|
182
|
+
* @notice add or update a recipient details, if address exists it will update, otherwise add
|
|
183
|
+
* to "remove" set recipient bps to 0. only ADMIN_ROLE can call this.
|
|
184
|
+
*/
|
|
185
|
+
function addOrUpdateRecipient(
|
|
186
|
+
DistributionRecipient memory _recipient
|
|
187
|
+
) external onlyRole(DEFAULT_ADMIN_ROLE) {
|
|
188
|
+
if (
|
|
189
|
+
_recipient.transferType != TransferType.LayerZeroBridge &&
|
|
190
|
+
_recipient.chainId != block.chainid
|
|
191
|
+
) {
|
|
192
|
+
revert INVALID_CHAINID();
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
for (uint256 i = 0; i < distributionRecipients.length; i++) {
|
|
196
|
+
if (distributionRecipients[i].addr == _recipient.addr) {
|
|
197
|
+
distributionRecipients[i] = _recipient;
|
|
198
|
+
emit RecipientUpdated(_recipient, i);
|
|
199
|
+
return;
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
//if reached here then add new one
|
|
203
|
+
emit RecipientAdded(_recipient, distributionRecipients.length);
|
|
204
|
+
distributionRecipients.push(_recipient);
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
/**
|
|
208
|
+
* @notice internal function that takes care of sending the G$s according to the transfer type
|
|
209
|
+
* @param _recipient data about the recipient
|
|
210
|
+
* @param _amount how much to send
|
|
211
|
+
*/
|
|
212
|
+
function distribute(
|
|
213
|
+
DistributionRecipient storage _recipient,
|
|
214
|
+
uint256 _amount
|
|
215
|
+
) internal {
|
|
216
|
+
if (_recipient.transferType == TransferType.LayerZeroBridge) {
|
|
217
|
+
nativeToken().approve(address(getBridge()), _amount);
|
|
218
|
+
(uint256 lzFee, ) = ILayerZeroFeeEstimator(address(getBridge()))
|
|
219
|
+
.estimateSendFee(
|
|
220
|
+
getBridge().toLzChainId(_recipient.chainId),
|
|
221
|
+
address(this),
|
|
222
|
+
_recipient.addr,
|
|
223
|
+
_amount,
|
|
224
|
+
false,
|
|
225
|
+
abi.encodePacked(uint16(1), uint256(400000)) // 400k gas to execute bridge at target chain
|
|
226
|
+
);
|
|
227
|
+
if (lzFee > feeSettings.maxFee || lzFee > address(this).balance)
|
|
228
|
+
revert FEE_LIMIT(lzFee);
|
|
229
|
+
|
|
230
|
+
getBridge().bridgeToWithLz{ value: lzFee }(
|
|
231
|
+
_recipient.addr,
|
|
232
|
+
_recipient.chainId,
|
|
233
|
+
_amount,
|
|
234
|
+
""
|
|
235
|
+
);
|
|
236
|
+
} else if (_recipient.transferType == TransferType.TransferAndCall) {
|
|
237
|
+
nativeToken().transferAndCall(_recipient.addr, _amount, "");
|
|
238
|
+
} else if (_recipient.transferType == TransferType.Transfer) {
|
|
239
|
+
nativeToken().transfer(_recipient.addr, _amount);
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
function calcGDToSell(
|
|
244
|
+
uint256 maxAmountToSell
|
|
245
|
+
) public view returns (uint256 gdToSell, uint256 minReceived) {
|
|
246
|
+
uint24[] memory fees = new uint24[](1);
|
|
247
|
+
fees[0] = 100;
|
|
248
|
+
uint256 nativeToBuy = feeSettings.minBalanceForFees *
|
|
249
|
+
3 -
|
|
250
|
+
address(this).balance;
|
|
251
|
+
(uint256 nativeValueInUSD, ) = STATIC_ORACLE
|
|
252
|
+
.quoteSpecificFeeTiersWithTimePeriod(
|
|
253
|
+
uint128(nativeToBuy),
|
|
254
|
+
gasToken,
|
|
255
|
+
reserveToken,
|
|
256
|
+
fees,
|
|
257
|
+
60 //last 1 minute
|
|
258
|
+
);
|
|
259
|
+
|
|
260
|
+
(gdToSell, ) = STATIC_ORACLE.quoteSpecificFeeTiersWithTimePeriod(
|
|
261
|
+
uint128(nativeValueInUSD),
|
|
262
|
+
reserveToken,
|
|
263
|
+
address(nativeToken()),
|
|
264
|
+
fees,
|
|
265
|
+
60 //last 1 minute
|
|
266
|
+
);
|
|
267
|
+
|
|
268
|
+
minReceived = nativeToBuy;
|
|
269
|
+
if (gdToSell > maxAmountToSell) {
|
|
270
|
+
gdToSell = maxAmountToSell;
|
|
271
|
+
|
|
272
|
+
fees[0] = 100;
|
|
273
|
+
// gdToSell = (nativeValueInUSD * 1e18) / gdPriceInUSD; // mul by 1e18 so result is in 18 decimals
|
|
274
|
+
(uint256 minReceivedCUSD, ) = STATIC_ORACLE
|
|
275
|
+
.quoteSpecificFeeTiersWithTimePeriod(
|
|
276
|
+
uint128(gdToSell),
|
|
277
|
+
address(nativeToken()),
|
|
278
|
+
reserveToken,
|
|
279
|
+
fees,
|
|
280
|
+
60 //last 1 minute
|
|
281
|
+
);
|
|
282
|
+
|
|
283
|
+
(minReceived, ) = STATIC_ORACLE.quoteSpecificFeeTiersWithTimePeriod(
|
|
284
|
+
uint128(minReceivedCUSD),
|
|
285
|
+
reserveToken,
|
|
286
|
+
gasToken,
|
|
287
|
+
fees,
|
|
288
|
+
60 //last 1 minute
|
|
289
|
+
);
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
|
|
293
|
+
function buyNativeWithGD(
|
|
294
|
+
uint256 amountToSell,
|
|
295
|
+
uint256 minReceived
|
|
296
|
+
) internal returns (uint256 nativeBought) {
|
|
297
|
+
ERC20(nativeToken()).approve(address(ROUTER), amountToSell);
|
|
298
|
+
uint256 amountOutMinimum = (minReceived * (100 - feeSettings.maxSlippage)) /
|
|
299
|
+
100; // 5% slippage
|
|
300
|
+
ISwapRouter.ExactInputParams memory params = ISwapRouter.ExactInputParams({
|
|
301
|
+
path: abi.encodePacked(
|
|
302
|
+
nativeToken(),
|
|
303
|
+
uint24(100),
|
|
304
|
+
reserveToken,
|
|
305
|
+
uint24(100),
|
|
306
|
+
gasToken
|
|
307
|
+
),
|
|
308
|
+
recipient: address(this),
|
|
309
|
+
amountIn: amountToSell,
|
|
310
|
+
amountOutMinimum: amountOutMinimum
|
|
311
|
+
});
|
|
312
|
+
try ROUTER.exactInput(params) returns (uint256 amountOut) {
|
|
313
|
+
return amountOut;
|
|
314
|
+
} catch Error(string memory reason) {
|
|
315
|
+
emit BuyNativeFailed(reason, amountToSell, amountOutMinimum);
|
|
316
|
+
return 0;
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
}
|
|
@@ -130,13 +130,16 @@ contract UBISchemeV2 is DAOUpgradeableContract {
|
|
|
130
130
|
* @dev Constructor
|
|
131
131
|
* @param _ns the DAO
|
|
132
132
|
*/
|
|
133
|
-
function initialize(
|
|
133
|
+
function initialize(
|
|
134
|
+
INameService _ns,
|
|
135
|
+
uint256 _minActiveUsers
|
|
136
|
+
) public initializer {
|
|
134
137
|
setDAO(_ns);
|
|
135
138
|
shouldWithdrawFromDAO = false;
|
|
136
139
|
cycleLength = 30; //30 days
|
|
137
140
|
periodStart = (block.timestamp / (1 days)) * 1 days - 12 hours; //set start time to GMT noon
|
|
138
141
|
startOfCycle = periodStart;
|
|
139
|
-
minActiveUsers =
|
|
142
|
+
minActiveUsers = _minActiveUsers;
|
|
140
143
|
reserveFactor = 10500;
|
|
141
144
|
}
|
|
142
145
|
|
|
@@ -266,7 +269,7 @@ contract UBISchemeV2 is DAOUpgradeableContract {
|
|
|
266
269
|
dailyCyclePool /
|
|
267
270
|
max((prevDayClaimers * reserveFactor) / 10000, minActiveUsers);
|
|
268
271
|
//update minActiveUsers as claimers grow
|
|
269
|
-
minActiveUsers =
|
|
272
|
+
minActiveUsers = (prevDayClaimers + minActiveUsers * 29) / 30; //smooth it a bit
|
|
270
273
|
|
|
271
274
|
emit UBICalculated(currentDay, dailyUbi, block.number);
|
|
272
275
|
}
|
|
@@ -344,7 +347,8 @@ contract UBISchemeV2 is DAOUpgradeableContract {
|
|
|
344
347
|
bool shouldStartEarlyCycle = currentDayInCycle() + 1 >=
|
|
345
348
|
currentCycleLength ||
|
|
346
349
|
nextDailyPool > (dailyCyclePool * 105) / 100 ||
|
|
347
|
-
currentBalance <
|
|
350
|
+
currentBalance <
|
|
351
|
+
(dailyCyclePool * (cycleLength - currentDayInCycle() - 1));
|
|
348
352
|
|
|
349
353
|
uint256 _dailyCyclePool = dailyCyclePool;
|
|
350
354
|
uint256 _dailyUbi;
|
|
@@ -46,10 +46,10 @@ contract ProxyFactory1967 {
|
|
|
46
46
|
contractCodeHash = keccak256(type(ERC1967Proxy).creationCode);
|
|
47
47
|
}
|
|
48
48
|
|
|
49
|
-
function deployMinimal(
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
{
|
|
49
|
+
function deployMinimal(
|
|
50
|
+
address _logic,
|
|
51
|
+
bytes memory _data
|
|
52
|
+
) public returns (address proxy) {
|
|
53
53
|
// Adapted from https://github.com/optionality/clone-factory/blob/32782f82dfc5a00d103a7e61a17a5dedbd1e8e9d/contracts/CloneFactory.sol
|
|
54
54
|
bytes20 targetBytes = bytes20(_logic);
|
|
55
55
|
assembly {
|
|
@@ -82,20 +82,19 @@ contract ProxyFactory1967 {
|
|
|
82
82
|
return _deployProxy(_salt, _logic, _data, msg.sender);
|
|
83
83
|
}
|
|
84
84
|
|
|
85
|
-
function deployCode(
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
{
|
|
85
|
+
function deployCode(
|
|
86
|
+
uint256 _salt,
|
|
87
|
+
bytes calldata _bytecode
|
|
88
|
+
) external returns (address) {
|
|
89
89
|
address addr = _deployCode(_salt, msg.sender, _bytecode);
|
|
90
90
|
emit ContractCreated(addr);
|
|
91
91
|
return addr;
|
|
92
92
|
}
|
|
93
93
|
|
|
94
|
-
function getDeploymentAddress(
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
{
|
|
94
|
+
function getDeploymentAddress(
|
|
95
|
+
uint256 _salt,
|
|
96
|
+
address _sender
|
|
97
|
+
) public view returns (address) {
|
|
99
98
|
return getDeploymentAddress(_salt, _sender, contractCodeHash);
|
|
100
99
|
}
|
|
101
100
|
|
|
@@ -146,11 +145,10 @@ contract ProxyFactory1967 {
|
|
|
146
145
|
return addr;
|
|
147
146
|
}
|
|
148
147
|
|
|
149
|
-
function _getSalt(
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
{
|
|
148
|
+
function _getSalt(
|
|
149
|
+
uint256 _salt,
|
|
150
|
+
address _sender
|
|
151
|
+
) internal pure returns (bytes32) {
|
|
154
152
|
return keccak256(abi.encodePacked(_salt, _sender));
|
|
155
153
|
}
|
|
156
154
|
}
|