@gooddollar/goodprotocol 1.0.31-beta.0 → 2.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/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/AdminWalletFuse.min.json +1 -0
- 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/FuseFaucetV2.min.json +1 -0
- 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/InvitesFuseV2.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/fuseFaucet/FuseFaucetV2.sol/FuseFaucetV2.dbg.json +4 -0
- package/artifacts/contracts/fuseFaucet/FuseFaucetV2.sol/FuseFaucetV2.json +480 -0
- 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/InvitesFuseV2.sol/InvitesFuseV2.dbg.json +4 -0
- package/artifacts/contracts/invite/InvitesFuseV2.sol/InvitesFuseV2.json +505 -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 +635 -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 +28 -2
- package/artifacts/contracts/mocks/DistributionHelperTest.sol/DistributionHelperTestHelper.dbg.json +1 -1
- package/artifacts/contracts/mocks/DistributionHelperTest.sol/DistributionHelperTestHelper.json +28 -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 +28 -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 +31 -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 +15 -2
- package/artifacts/contracts/staking/FuseStakingV3.sol/IConsensus.dbg.json +1 -1
- package/artifacts/contracts/staking/FuseStakingV3.sol/PegSwap.dbg.json +1 -1
- package/artifacts/contracts/staking/GoodFundManager.sol/GoodFundManager.dbg.json +1 -1
- package/artifacts/contracts/staking/GoodFundManager.sol/GoodFundManager.json +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 +2627 -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/AdminWalletFuse.sol/AdminWalletFuse.dbg.json +4 -0
- package/artifacts/contracts/utils/AdminWalletFuse.sol/AdminWalletFuse.json +830 -0
- 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/fuseFaucet/FuseFaucetV2.sol +256 -0
- 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/InvitesFuseV2.sol +337 -0
- package/contracts/invite/InvitesV1.sol +6 -24
- package/contracts/invite/InvitesV2.sol +345 -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 +1 -1
- package/contracts/reserve/GoodReserveCDai.sol +1 -1
- 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 +243 -0
- package/contracts/token/superfluid/ERC20Permit.sol +101 -0
- package/contracts/token/superfluid/ISuperGoodDollar.sol +84 -0
- package/contracts/token/superfluid/SuperGoodDollar.sol +401 -0
- package/contracts/token/superfluid/SuperToken.sol +714 -0
- package/contracts/token/superfluid/SuperfluidToken.sol +403 -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/AdminWalletFuse.sol +271 -0
- package/contracts/utils/BuyAndBridgeHelper.sol +108 -0
- package/contracts/utils/GoodDollarMintBurnWrapper.sol +19 -1
- package/contracts/utils/ProxyFactory1967.sol +1 -1
- package/hardhat.config.ts +29 -6
- package/package.json +11 -7
- package/releases/deploy-settings.json +58 -4
- package/releases/deployment.json +65 -231
- package/scripts/deployFullDAO.ts +39 -19
- package/scripts/gdx/gdxAirdropCalculation.ts +10 -11
- 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 +151 -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 +149 -111
- package/scripts/multichain-deploy/verifyEtherscan.ts +197 -0
- 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-defi-ubi-deploy.ts +165 -0
- package/scripts/upgrades/identity-upgrade.ts +109 -0
- package/scripts/upgrades/transferDaoToGuardians.ts +80 -0
- package/test/faucet/Faucet.test.ts +157 -0
- package/test/{FuseFaucet.test.ts → faucet/FuseFaucet.test.ts} +26 -31
- 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 +328 -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 +9 -9
- package/test/staking/GoodAaveStakingFactory.test.ts +36 -31
- package/test/staking/SimpleDAIStaking.test.ts +13 -19
- package/test/staking/StakingRewards.test.ts +19 -16
- 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 +445 -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 +18 -18
- 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/AdminWalletFuse.ts +1268 -0
- 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 +28 -0
- package/types/DistributionHelperTest.ts +28 -0
- package/types/DistributionHelperTestHelper.ts +28 -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/FuseFaucetV2.ts +729 -0
- package/types/FuseStakingV3.ts +9 -0
- 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 +43 -15
- 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/InvitesFuseV2.ts +806 -0
- package/types/InvitesV1.ts +9 -0
- package/types/InvitesV2.ts +1010 -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 +3662 -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/AdminWalletFuse__factory.ts +881 -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 +27 -1
- package/types/factories/DistributionHelperTest__factory.ts +27 -1
- package/types/factories/DistributionHelper__factory.ts +27 -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/FuseFaucetV2__factory.ts +528 -0
- package/types/factories/FuseFaucet__factory.ts +14 -1
- package/types/factories/FuseStakingV3__factory.ts +14 -1
- 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 +30 -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/InvitesFuseV2__factory.ts +553 -0
- package/types/factories/InvitesV1__factory.ts +14 -1
- package/types/factories/InvitesV2__factory.ts +683 -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 +2680 -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 +459 -0
- package/types/index.ts +98 -0
- package/yarn.lock +1251 -306
- package/scripts/multichain-deploy/nonubiDistribution-deploy.ts +0 -170
|
@@ -0,0 +1,714 @@
|
|
|
1
|
+
// SPDX-License-Identifier: MIT
|
|
2
|
+
pragma solidity >=0.8;
|
|
3
|
+
|
|
4
|
+
import { UUPSProxiable } from "./UUPSProxiable.sol";
|
|
5
|
+
|
|
6
|
+
import { ISuperfluid, ISuperfluidGovernance, ISuperToken, ISuperAgreement, IERC20, IERC777, TokenInfo } from "@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluid.sol";
|
|
7
|
+
import { ISuperfluidToken } from "@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluidToken.sol";
|
|
8
|
+
|
|
9
|
+
import { ERC777Helper } from "@superfluid-finance/ethereum-contracts/contracts/libs/ERC777Helper.sol";
|
|
10
|
+
|
|
11
|
+
import { SafeERC20 } from "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
|
|
12
|
+
import { SafeMath } from "@openzeppelin/contracts/utils/math/SafeMath.sol";
|
|
13
|
+
import { SafeCast } from "@openzeppelin/contracts/utils/math/SafeCast.sol";
|
|
14
|
+
import { IERC777Recipient } from "@openzeppelin/contracts/token/ERC777/IERC777Recipient.sol";
|
|
15
|
+
import { IERC777Sender } from "@openzeppelin/contracts/token/ERC777/IERC777Sender.sol";
|
|
16
|
+
import { Address } from "@openzeppelin/contracts/utils/Address.sol";
|
|
17
|
+
|
|
18
|
+
import { SuperfluidToken } from "./SuperfluidToken.sol";
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* @title Superfluid's super token implementation
|
|
22
|
+
*
|
|
23
|
+
* @author Superfluid
|
|
24
|
+
* @dev Modified for SuperGoodDollar
|
|
25
|
+
* 1. made virtual - transfer,_transferFrom,_send,_burn, proxiableuuid, initialize, updateCode
|
|
26
|
+
* 2. removed upgrade/downgrade internal methods, all external/public using _upgrade/_downgrade will revert
|
|
27
|
+
* 3. use modified UUPSProxy with openzep upgradeable Initializable instead of openzep regular Initializable used by superfluid
|
|
28
|
+
* 4. fixed erc777 burn and operator burn to work for puresupertokens
|
|
29
|
+
* 5. removed unused "self" functions
|
|
30
|
+
*/
|
|
31
|
+
contract SuperToken is UUPSProxiable, SuperfluidToken, ISuperToken {
|
|
32
|
+
using SafeMath for uint256;
|
|
33
|
+
using SafeCast for uint256;
|
|
34
|
+
using Address for address;
|
|
35
|
+
using ERC777Helper for ERC777Helper.Operators;
|
|
36
|
+
using SafeERC20 for IERC20;
|
|
37
|
+
|
|
38
|
+
uint8 private constant _STANDARD_DECIMALS = 18;
|
|
39
|
+
|
|
40
|
+
/* WARNING: NEVER RE-ORDER VARIABLES! Including the base contracts.
|
|
41
|
+
Always double-check that new
|
|
42
|
+
variables are added APPEND-ONLY. Re-ordering variables can
|
|
43
|
+
permanently BREAK the deployed proxy contract. */
|
|
44
|
+
|
|
45
|
+
/// @dev The underlying ERC20 token
|
|
46
|
+
IERC20 internal _underlyingToken;
|
|
47
|
+
|
|
48
|
+
/// @dev Decimals of the underlying token
|
|
49
|
+
uint8 internal _underlyingDecimals;
|
|
50
|
+
|
|
51
|
+
/// @dev TokenInfo Name property
|
|
52
|
+
string internal _name;
|
|
53
|
+
|
|
54
|
+
/// @dev TokenInfo Symbol property
|
|
55
|
+
string internal _symbol;
|
|
56
|
+
|
|
57
|
+
/// @dev ERC20 Allowances Storage
|
|
58
|
+
mapping(address => mapping(address => uint256)) internal _allowances;
|
|
59
|
+
|
|
60
|
+
/// @dev ERC777 operators support data
|
|
61
|
+
ERC777Helper.Operators internal _operators;
|
|
62
|
+
|
|
63
|
+
// NOTE: for future compatibility, these are reserved solidity slots
|
|
64
|
+
// The sub-class of SuperToken solidity slot will start after _reserve22
|
|
65
|
+
|
|
66
|
+
// NOTE: Whenever modifying the storage layout here it is important to update the validateStorageLayout
|
|
67
|
+
// function in its respective mock contract to ensure that it doesn't break anything or lead to unexpected
|
|
68
|
+
// behaviors/layout when upgrading
|
|
69
|
+
|
|
70
|
+
uint256 internal _reserve22;
|
|
71
|
+
uint256 private _reserve23;
|
|
72
|
+
uint256 private _reserve24;
|
|
73
|
+
uint256 private _reserve25;
|
|
74
|
+
uint256 private _reserve26;
|
|
75
|
+
uint256 private _reserve27;
|
|
76
|
+
uint256 private _reserve28;
|
|
77
|
+
uint256 private _reserve29;
|
|
78
|
+
uint256 private _reserve30;
|
|
79
|
+
uint256 internal _reserve31;
|
|
80
|
+
|
|
81
|
+
constructor(ISuperfluid host)
|
|
82
|
+
SuperfluidToken(host)
|
|
83
|
+
// solhint-disable-next-line no-empty-blocks
|
|
84
|
+
{
|
|
85
|
+
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
function initialize(
|
|
89
|
+
IERC20 underlyingToken,
|
|
90
|
+
uint8 underlyingDecimals,
|
|
91
|
+
string calldata n,
|
|
92
|
+
string calldata s
|
|
93
|
+
)
|
|
94
|
+
external
|
|
95
|
+
virtual
|
|
96
|
+
override
|
|
97
|
+
initializer // OpenZeppelin Initializable
|
|
98
|
+
{
|
|
99
|
+
_underlyingToken = underlyingToken;
|
|
100
|
+
_underlyingDecimals = underlyingDecimals;
|
|
101
|
+
|
|
102
|
+
_name = n;
|
|
103
|
+
_symbol = s;
|
|
104
|
+
|
|
105
|
+
// register interfaces
|
|
106
|
+
ERC777Helper.register(address(this));
|
|
107
|
+
|
|
108
|
+
// help tools like explorers detect the token contract
|
|
109
|
+
emit Transfer(address(0), address(0), 0);
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
function proxiableUUID() public pure virtual override returns (bytes32) {
|
|
113
|
+
return
|
|
114
|
+
keccak256("org.superfluid-finance.contracts.SuperToken.implementation");
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
function updateCode(address newAddress) external virtual override {
|
|
118
|
+
if (msg.sender != address(_host)) revert SUPER_TOKEN_ONLY_HOST();
|
|
119
|
+
UUPSProxiable._updateCodeAddress(newAddress);
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
/**************************************************************************
|
|
123
|
+
* ERC20 Token Info
|
|
124
|
+
*************************************************************************/
|
|
125
|
+
|
|
126
|
+
function name() external view override returns (string memory) {
|
|
127
|
+
return _name;
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
function symbol() external view override returns (string memory) {
|
|
131
|
+
return _symbol;
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
function decimals() external pure override returns (uint8) {
|
|
135
|
+
return _STANDARD_DECIMALS;
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
/**************************************************************************
|
|
139
|
+
* (private) Token Logics
|
|
140
|
+
*************************************************************************/
|
|
141
|
+
|
|
142
|
+
/**
|
|
143
|
+
* @notice in the original openzeppelin implementation, transfer() and transferFrom()
|
|
144
|
+
* did invoke the send and receive hooks, as required by ERC777.
|
|
145
|
+
* This hooks were removed from super tokens for ERC20 transfers in order to protect
|
|
146
|
+
* interfacing contracts which don't expect invocations of ERC20 transfers to potentially reenter.
|
|
147
|
+
* Interactions relying on ERC777 hooks need to use the ERC777 interface.
|
|
148
|
+
* For more context, see https://github.com/superfluid-finance/protocol-monorepo/wiki/About-ERC-777
|
|
149
|
+
*/
|
|
150
|
+
function _transferFrom(
|
|
151
|
+
address spender,
|
|
152
|
+
address holder,
|
|
153
|
+
address recipient,
|
|
154
|
+
uint256 amount
|
|
155
|
+
) internal virtual returns (bool) {
|
|
156
|
+
if (holder == address(0)) {
|
|
157
|
+
revert SUPER_TOKEN_TRANSFER_FROM_ZERO_ADDRESS();
|
|
158
|
+
}
|
|
159
|
+
if (recipient == address(0)) {
|
|
160
|
+
revert SUPER_TOKEN_TRANSFER_TO_ZERO_ADDRESS();
|
|
161
|
+
}
|
|
162
|
+
address operator = msg.sender;
|
|
163
|
+
|
|
164
|
+
_move(operator, holder, recipient, amount, "", "");
|
|
165
|
+
|
|
166
|
+
if (spender != holder) {
|
|
167
|
+
_approve(
|
|
168
|
+
holder,
|
|
169
|
+
spender,
|
|
170
|
+
_allowances[holder][spender].sub(
|
|
171
|
+
amount,
|
|
172
|
+
"SuperToken: transfer amount exceeds allowance"
|
|
173
|
+
)
|
|
174
|
+
);
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
return true;
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
/**
|
|
181
|
+
* @dev Send tokens
|
|
182
|
+
* @param operator address operator address
|
|
183
|
+
* @param from address token holder address
|
|
184
|
+
* @param to address recipient address
|
|
185
|
+
* @param amount uint256 amount of tokens to transfer
|
|
186
|
+
* @param userData bytes extra information provided by the token holder (if any)
|
|
187
|
+
* @param operatorData bytes extra information provided by the operator (if any)
|
|
188
|
+
* @param requireReceptionAck if true, contract recipients are required to implement ERC777TokensRecipient
|
|
189
|
+
*/
|
|
190
|
+
function _send(
|
|
191
|
+
address operator,
|
|
192
|
+
address from,
|
|
193
|
+
address to,
|
|
194
|
+
uint256 amount,
|
|
195
|
+
bytes memory userData,
|
|
196
|
+
bytes memory operatorData,
|
|
197
|
+
bool requireReceptionAck
|
|
198
|
+
) internal virtual {
|
|
199
|
+
if (from == address(0)) {
|
|
200
|
+
revert SUPER_TOKEN_TRANSFER_FROM_ZERO_ADDRESS();
|
|
201
|
+
}
|
|
202
|
+
if (to == address(0)) {
|
|
203
|
+
revert SUPER_TOKEN_TRANSFER_TO_ZERO_ADDRESS();
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
_callTokensToSend(operator, from, to, amount, userData, operatorData);
|
|
207
|
+
|
|
208
|
+
_move(operator, from, to, amount, userData, operatorData);
|
|
209
|
+
|
|
210
|
+
_callTokensReceived(
|
|
211
|
+
operator,
|
|
212
|
+
from,
|
|
213
|
+
to,
|
|
214
|
+
amount,
|
|
215
|
+
userData,
|
|
216
|
+
operatorData,
|
|
217
|
+
requireReceptionAck
|
|
218
|
+
);
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
function _move(
|
|
222
|
+
address operator,
|
|
223
|
+
address from,
|
|
224
|
+
address to,
|
|
225
|
+
uint256 amount,
|
|
226
|
+
bytes memory userData,
|
|
227
|
+
bytes memory operatorData
|
|
228
|
+
) private {
|
|
229
|
+
SuperfluidToken._move(from, to, amount.toInt256());
|
|
230
|
+
|
|
231
|
+
emit Sent(operator, from, to, amount, userData, operatorData);
|
|
232
|
+
emit Transfer(from, to, amount);
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
/**
|
|
236
|
+
* @dev Creates `amount` tokens and assigns them to `account`, increasing
|
|
237
|
+
* the total supply.
|
|
238
|
+
*
|
|
239
|
+
* If a send hook is registered for `account`, the corresponding function
|
|
240
|
+
* will be called with `operator`, `data` and `operatorData`.
|
|
241
|
+
*
|
|
242
|
+
* See {IERC777Sender} and {IERC777Recipient}.
|
|
243
|
+
*
|
|
244
|
+
* Emits {Minted} and {IERC20-Transfer} events.
|
|
245
|
+
*
|
|
246
|
+
* Requirements
|
|
247
|
+
*
|
|
248
|
+
* - `account` cannot be the zero address.
|
|
249
|
+
* - if `account` is a contract, it must implement the {IERC777Recipient}
|
|
250
|
+
* interface.
|
|
251
|
+
*/
|
|
252
|
+
function _mint(
|
|
253
|
+
address operator,
|
|
254
|
+
address account,
|
|
255
|
+
uint256 amount,
|
|
256
|
+
bool requireReceptionAck,
|
|
257
|
+
bytes memory userData,
|
|
258
|
+
bytes memory operatorData
|
|
259
|
+
) internal {
|
|
260
|
+
if (account == address(0)) {
|
|
261
|
+
revert SUPER_TOKEN_MINT_TO_ZERO_ADDRESS();
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
SuperfluidToken._mint(account, amount);
|
|
265
|
+
|
|
266
|
+
_callTokensReceived(
|
|
267
|
+
operator,
|
|
268
|
+
address(0),
|
|
269
|
+
account,
|
|
270
|
+
amount,
|
|
271
|
+
userData,
|
|
272
|
+
operatorData,
|
|
273
|
+
requireReceptionAck
|
|
274
|
+
);
|
|
275
|
+
|
|
276
|
+
emit Minted(operator, account, amount, userData, operatorData);
|
|
277
|
+
emit Transfer(address(0), account, amount);
|
|
278
|
+
}
|
|
279
|
+
|
|
280
|
+
/**
|
|
281
|
+
* @dev Burn tokens
|
|
282
|
+
* @param from address token holder address
|
|
283
|
+
* @param amount uint256 amount of tokens to burn
|
|
284
|
+
* @param userData bytes extra information provided by the token holder
|
|
285
|
+
* @param operatorData bytes extra information provided by the operator (if any)
|
|
286
|
+
*/
|
|
287
|
+
function _burn(
|
|
288
|
+
address operator,
|
|
289
|
+
address from,
|
|
290
|
+
uint256 amount,
|
|
291
|
+
bytes memory userData,
|
|
292
|
+
bytes memory operatorData
|
|
293
|
+
) internal virtual {
|
|
294
|
+
if (from == address(0)) {
|
|
295
|
+
revert SUPER_TOKEN_BURN_FROM_ZERO_ADDRESS();
|
|
296
|
+
}
|
|
297
|
+
|
|
298
|
+
_callTokensToSend(
|
|
299
|
+
operator,
|
|
300
|
+
from,
|
|
301
|
+
address(0),
|
|
302
|
+
amount,
|
|
303
|
+
userData,
|
|
304
|
+
operatorData
|
|
305
|
+
);
|
|
306
|
+
|
|
307
|
+
SuperfluidToken._burn(from, amount);
|
|
308
|
+
|
|
309
|
+
emit Burned(operator, from, amount, userData, operatorData);
|
|
310
|
+
emit Transfer(from, address(0), amount);
|
|
311
|
+
}
|
|
312
|
+
|
|
313
|
+
/**
|
|
314
|
+
* @notice Sets `amount` as the allowance of `spender` over the `account`s tokens.
|
|
315
|
+
*
|
|
316
|
+
* This is internal function is equivalent to `approve`, and can be used to
|
|
317
|
+
* e.g. set automatic allowances for certain subsystems, etc.
|
|
318
|
+
*
|
|
319
|
+
* Emits an {Approval} event.
|
|
320
|
+
*
|
|
321
|
+
* Requirements:
|
|
322
|
+
*
|
|
323
|
+
* - `account` cannot be the zero address.
|
|
324
|
+
* - `spender` cannot be the zero address.
|
|
325
|
+
*/
|
|
326
|
+
function _approve(
|
|
327
|
+
address account,
|
|
328
|
+
address spender,
|
|
329
|
+
uint256 amount
|
|
330
|
+
) internal {
|
|
331
|
+
if (account == address(0)) {
|
|
332
|
+
revert SUPER_TOKEN_APPROVE_FROM_ZERO_ADDRESS();
|
|
333
|
+
}
|
|
334
|
+
if (spender == address(0)) {
|
|
335
|
+
revert SUPER_TOKEN_APPROVE_TO_ZERO_ADDRESS();
|
|
336
|
+
}
|
|
337
|
+
|
|
338
|
+
_allowances[account][spender] = amount;
|
|
339
|
+
emit Approval(account, spender, amount);
|
|
340
|
+
}
|
|
341
|
+
|
|
342
|
+
/**
|
|
343
|
+
* @dev Call from.tokensToSend() if the interface is registered
|
|
344
|
+
* @param operator address operator requesting the transfer
|
|
345
|
+
* @param from address token holder address
|
|
346
|
+
* @param to address recipient address
|
|
347
|
+
* @param amount uint256 amount of tokens to transfer
|
|
348
|
+
* @param userData bytes extra information provided by the token holder (if any)
|
|
349
|
+
* @param operatorData bytes extra information provided by the operator (if any)
|
|
350
|
+
*/
|
|
351
|
+
function _callTokensToSend(
|
|
352
|
+
address operator,
|
|
353
|
+
address from,
|
|
354
|
+
address to,
|
|
355
|
+
uint256 amount,
|
|
356
|
+
bytes memory userData,
|
|
357
|
+
bytes memory operatorData
|
|
358
|
+
) private {
|
|
359
|
+
address implementer = ERC777Helper
|
|
360
|
+
._ERC1820_REGISTRY
|
|
361
|
+
.getInterfaceImplementer(
|
|
362
|
+
from,
|
|
363
|
+
ERC777Helper._TOKENS_SENDER_INTERFACE_HASH
|
|
364
|
+
);
|
|
365
|
+
if (implementer != address(0)) {
|
|
366
|
+
IERC777Sender(implementer).tokensToSend(
|
|
367
|
+
operator,
|
|
368
|
+
from,
|
|
369
|
+
to,
|
|
370
|
+
amount,
|
|
371
|
+
userData,
|
|
372
|
+
operatorData
|
|
373
|
+
);
|
|
374
|
+
}
|
|
375
|
+
}
|
|
376
|
+
|
|
377
|
+
/**
|
|
378
|
+
* @dev Call to.tokensReceived() if the interface is registered. Reverts if the recipient is a contract but
|
|
379
|
+
* tokensReceived() was not registered for the recipient
|
|
380
|
+
* @param operator address operator requesting the transfer
|
|
381
|
+
* @param from address token holder address
|
|
382
|
+
* @param to address recipient address
|
|
383
|
+
* @param amount uint256 amount of tokens to transfer
|
|
384
|
+
* @param userData bytes extra information provided by the token holder (if any)
|
|
385
|
+
* @param operatorData bytes extra information provided by the operator (if any)
|
|
386
|
+
* @param requireReceptionAck if true, contract recipients are required to implement ERC777TokensRecipient
|
|
387
|
+
*/
|
|
388
|
+
function _callTokensReceived(
|
|
389
|
+
address operator,
|
|
390
|
+
address from,
|
|
391
|
+
address to,
|
|
392
|
+
uint256 amount,
|
|
393
|
+
bytes memory userData,
|
|
394
|
+
bytes memory operatorData,
|
|
395
|
+
bool requireReceptionAck
|
|
396
|
+
) private {
|
|
397
|
+
address implementer = ERC777Helper
|
|
398
|
+
._ERC1820_REGISTRY
|
|
399
|
+
.getInterfaceImplementer(
|
|
400
|
+
to,
|
|
401
|
+
ERC777Helper._TOKENS_RECIPIENT_INTERFACE_HASH
|
|
402
|
+
);
|
|
403
|
+
if (implementer != address(0)) {
|
|
404
|
+
IERC777Recipient(implementer).tokensReceived(
|
|
405
|
+
operator,
|
|
406
|
+
from,
|
|
407
|
+
to,
|
|
408
|
+
amount,
|
|
409
|
+
userData,
|
|
410
|
+
operatorData
|
|
411
|
+
);
|
|
412
|
+
} else if (requireReceptionAck) {
|
|
413
|
+
if (to.isContract()) revert SUPER_TOKEN_NOT_ERC777_TOKENS_RECIPIENT();
|
|
414
|
+
}
|
|
415
|
+
}
|
|
416
|
+
|
|
417
|
+
/**************************************************************************
|
|
418
|
+
* ERC20 Implementations
|
|
419
|
+
*************************************************************************/
|
|
420
|
+
|
|
421
|
+
function totalSupply() public view override returns (uint256) {
|
|
422
|
+
return _totalSupply;
|
|
423
|
+
}
|
|
424
|
+
|
|
425
|
+
function balanceOf(address account)
|
|
426
|
+
public
|
|
427
|
+
view
|
|
428
|
+
override
|
|
429
|
+
returns (uint256 balance)
|
|
430
|
+
{
|
|
431
|
+
// solhint-disable-next-line not-rely-on-time
|
|
432
|
+
(int256 availableBalance, , , ) = super.realtimeBalanceOfNow(account);
|
|
433
|
+
return availableBalance < 0 ? 0 : uint256(availableBalance);
|
|
434
|
+
}
|
|
435
|
+
|
|
436
|
+
function transfer(address recipient, uint256 amount)
|
|
437
|
+
public
|
|
438
|
+
virtual
|
|
439
|
+
override
|
|
440
|
+
returns (bool)
|
|
441
|
+
{
|
|
442
|
+
return _transferFrom(msg.sender, msg.sender, recipient, amount);
|
|
443
|
+
}
|
|
444
|
+
|
|
445
|
+
function allowance(address account, address spender)
|
|
446
|
+
public
|
|
447
|
+
view
|
|
448
|
+
override
|
|
449
|
+
returns (uint256)
|
|
450
|
+
{
|
|
451
|
+
return _allowances[account][spender];
|
|
452
|
+
}
|
|
453
|
+
|
|
454
|
+
function approve(address spender, uint256 amount)
|
|
455
|
+
public
|
|
456
|
+
override
|
|
457
|
+
returns (bool)
|
|
458
|
+
{
|
|
459
|
+
_approve(msg.sender, spender, amount);
|
|
460
|
+
return true;
|
|
461
|
+
}
|
|
462
|
+
|
|
463
|
+
function transferFrom(
|
|
464
|
+
address holder,
|
|
465
|
+
address recipient,
|
|
466
|
+
uint256 amount
|
|
467
|
+
) public override returns (bool) {
|
|
468
|
+
return _transferFrom(msg.sender, holder, recipient, amount);
|
|
469
|
+
}
|
|
470
|
+
|
|
471
|
+
function increaseAllowance(address spender, uint256 addedValue)
|
|
472
|
+
public
|
|
473
|
+
override
|
|
474
|
+
returns (bool)
|
|
475
|
+
{
|
|
476
|
+
_approve(
|
|
477
|
+
msg.sender,
|
|
478
|
+
spender,
|
|
479
|
+
_allowances[msg.sender][spender] + addedValue
|
|
480
|
+
);
|
|
481
|
+
return true;
|
|
482
|
+
}
|
|
483
|
+
|
|
484
|
+
function decreaseAllowance(address spender, uint256 subtractedValue)
|
|
485
|
+
public
|
|
486
|
+
override
|
|
487
|
+
returns (bool)
|
|
488
|
+
{
|
|
489
|
+
_approve(
|
|
490
|
+
msg.sender,
|
|
491
|
+
spender,
|
|
492
|
+
_allowances[msg.sender][spender].sub(
|
|
493
|
+
subtractedValue,
|
|
494
|
+
"SuperToken: decreased allowance below zero"
|
|
495
|
+
)
|
|
496
|
+
);
|
|
497
|
+
return true;
|
|
498
|
+
}
|
|
499
|
+
|
|
500
|
+
/**************************************************************************
|
|
501
|
+
* ERC-777 functions
|
|
502
|
+
*************************************************************************/
|
|
503
|
+
|
|
504
|
+
function granularity() external pure override returns (uint256) {
|
|
505
|
+
return 1;
|
|
506
|
+
}
|
|
507
|
+
|
|
508
|
+
function send(
|
|
509
|
+
address recipient,
|
|
510
|
+
uint256 amount,
|
|
511
|
+
bytes calldata data
|
|
512
|
+
) external override {
|
|
513
|
+
_send(msg.sender, msg.sender, recipient, amount, data, "", true);
|
|
514
|
+
}
|
|
515
|
+
|
|
516
|
+
function burn(uint256 amount, bytes calldata data) external virtual override {
|
|
517
|
+
_burn(msg.sender, msg.sender, amount, data, new bytes(0));
|
|
518
|
+
}
|
|
519
|
+
|
|
520
|
+
function isOperatorFor(address operator, address tokenHolder)
|
|
521
|
+
external
|
|
522
|
+
view
|
|
523
|
+
override
|
|
524
|
+
returns (bool)
|
|
525
|
+
{
|
|
526
|
+
return _operators.isOperatorFor(operator, tokenHolder);
|
|
527
|
+
}
|
|
528
|
+
|
|
529
|
+
function authorizeOperator(address operator) external override {
|
|
530
|
+
address holder = msg.sender;
|
|
531
|
+
_operators.authorizeOperator(holder, operator);
|
|
532
|
+
emit AuthorizedOperator(operator, holder);
|
|
533
|
+
}
|
|
534
|
+
|
|
535
|
+
function revokeOperator(address operator) external override {
|
|
536
|
+
address holder = msg.sender;
|
|
537
|
+
_operators.revokeOperator(holder, operator);
|
|
538
|
+
emit RevokedOperator(operator, holder);
|
|
539
|
+
}
|
|
540
|
+
|
|
541
|
+
function defaultOperators()
|
|
542
|
+
external
|
|
543
|
+
view
|
|
544
|
+
override
|
|
545
|
+
returns (address[] memory)
|
|
546
|
+
{
|
|
547
|
+
return ERC777Helper.defaultOperators(_operators);
|
|
548
|
+
}
|
|
549
|
+
|
|
550
|
+
function operatorSend(
|
|
551
|
+
address sender,
|
|
552
|
+
address recipient,
|
|
553
|
+
uint256 amount,
|
|
554
|
+
bytes calldata data,
|
|
555
|
+
bytes calldata operatorData
|
|
556
|
+
) external override {
|
|
557
|
+
address operator = msg.sender;
|
|
558
|
+
if (!_operators.isOperatorFor(operator, sender))
|
|
559
|
+
revert SUPER_TOKEN_CALLER_IS_NOT_OPERATOR_FOR_HOLDER();
|
|
560
|
+
_send(operator, sender, recipient, amount, data, operatorData, true);
|
|
561
|
+
}
|
|
562
|
+
|
|
563
|
+
function operatorBurn(
|
|
564
|
+
address account,
|
|
565
|
+
uint256 amount,
|
|
566
|
+
bytes calldata data,
|
|
567
|
+
bytes calldata operatorData
|
|
568
|
+
) external override {
|
|
569
|
+
address operator = msg.sender;
|
|
570
|
+
if (!_operators.isOperatorFor(operator, account))
|
|
571
|
+
revert SUPER_TOKEN_CALLER_IS_NOT_OPERATOR_FOR_HOLDER();
|
|
572
|
+
_burn(operator, account, amount, data, operatorData);
|
|
573
|
+
}
|
|
574
|
+
|
|
575
|
+
function _setupDefaultOperators(address[] memory operators) internal {
|
|
576
|
+
_operators.setupDefaultOperators(operators);
|
|
577
|
+
}
|
|
578
|
+
|
|
579
|
+
/**************************************************************************
|
|
580
|
+
* SuperToken custom token functions
|
|
581
|
+
*************************************************************************/
|
|
582
|
+
|
|
583
|
+
/// unused - place holder
|
|
584
|
+
function selfMint(
|
|
585
|
+
address account,
|
|
586
|
+
uint256 amount,
|
|
587
|
+
bytes memory userData
|
|
588
|
+
) external override onlySelf {
|
|
589
|
+
revert();
|
|
590
|
+
}
|
|
591
|
+
|
|
592
|
+
/// unused - place holder
|
|
593
|
+
function selfBurn(
|
|
594
|
+
address account,
|
|
595
|
+
uint256 amount,
|
|
596
|
+
bytes memory userData
|
|
597
|
+
) external override onlySelf {
|
|
598
|
+
revert();
|
|
599
|
+
}
|
|
600
|
+
|
|
601
|
+
/// still used by erc20permit
|
|
602
|
+
function selfApproveFor(
|
|
603
|
+
address account,
|
|
604
|
+
address spender,
|
|
605
|
+
uint256 amount
|
|
606
|
+
) external override onlySelf {
|
|
607
|
+
_approve(account, spender, amount);
|
|
608
|
+
}
|
|
609
|
+
|
|
610
|
+
/// unused - place holder
|
|
611
|
+
function selfTransferFrom(
|
|
612
|
+
address holder,
|
|
613
|
+
address spender,
|
|
614
|
+
address recipient,
|
|
615
|
+
uint256 amount
|
|
616
|
+
) external override onlySelf {
|
|
617
|
+
revert();
|
|
618
|
+
}
|
|
619
|
+
|
|
620
|
+
/**************************************************************************
|
|
621
|
+
* SuperToken extra functions
|
|
622
|
+
*************************************************************************/
|
|
623
|
+
|
|
624
|
+
function transferAll(address recipient) external override {
|
|
625
|
+
_transferFrom(msg.sender, msg.sender, recipient, balanceOf(msg.sender));
|
|
626
|
+
}
|
|
627
|
+
|
|
628
|
+
/**************************************************************************
|
|
629
|
+
* ERC20 wrapping
|
|
630
|
+
*************************************************************************/
|
|
631
|
+
|
|
632
|
+
/// @dev ISuperfluidGovernance.getUnderlyingToken implementation
|
|
633
|
+
function getUnderlyingToken() external view override returns (address) {
|
|
634
|
+
return address(_underlyingToken);
|
|
635
|
+
}
|
|
636
|
+
|
|
637
|
+
/// @dev ISuperToken.upgrade implementation
|
|
638
|
+
function upgrade(uint256 amount) external override {
|
|
639
|
+
//keep only for interface override not required for G$
|
|
640
|
+
revert();
|
|
641
|
+
}
|
|
642
|
+
|
|
643
|
+
/// @dev ISuperToken.upgradeTo implementation
|
|
644
|
+
function upgradeTo(
|
|
645
|
+
address to,
|
|
646
|
+
uint256 amount,
|
|
647
|
+
bytes calldata data
|
|
648
|
+
) external override {
|
|
649
|
+
//keep only for interface override not required for G$
|
|
650
|
+
revert();
|
|
651
|
+
}
|
|
652
|
+
|
|
653
|
+
/// @dev ISuperToken.downgrade implementation
|
|
654
|
+
function downgrade(uint256 amount) external override {
|
|
655
|
+
//keep only for interface override not required for G$
|
|
656
|
+
revert();
|
|
657
|
+
}
|
|
658
|
+
|
|
659
|
+
/**************************************************************************
|
|
660
|
+
* Superfluid Batch Operations
|
|
661
|
+
*************************************************************************/
|
|
662
|
+
|
|
663
|
+
function allowHostOperations()
|
|
664
|
+
internal
|
|
665
|
+
view
|
|
666
|
+
virtual
|
|
667
|
+
override
|
|
668
|
+
returns (bool hostEnabled)
|
|
669
|
+
{
|
|
670
|
+
return true;
|
|
671
|
+
}
|
|
672
|
+
|
|
673
|
+
function operationApprove(
|
|
674
|
+
address account,
|
|
675
|
+
address spender,
|
|
676
|
+
uint256 amount
|
|
677
|
+
) external override onlyHost {
|
|
678
|
+
_approve(account, spender, amount);
|
|
679
|
+
}
|
|
680
|
+
|
|
681
|
+
function operationTransferFrom(
|
|
682
|
+
address account,
|
|
683
|
+
address spender,
|
|
684
|
+
address recipient,
|
|
685
|
+
uint256 amount
|
|
686
|
+
) external override onlyHost {
|
|
687
|
+
_transferFrom(account, spender, recipient, amount);
|
|
688
|
+
}
|
|
689
|
+
|
|
690
|
+
function operationUpgrade(address account, uint256 amount)
|
|
691
|
+
external
|
|
692
|
+
override
|
|
693
|
+
onlyHost
|
|
694
|
+
{
|
|
695
|
+
revert();
|
|
696
|
+
}
|
|
697
|
+
|
|
698
|
+
function operationDowngrade(address account, uint256 amount)
|
|
699
|
+
external
|
|
700
|
+
override
|
|
701
|
+
onlyHost
|
|
702
|
+
{
|
|
703
|
+
revert();
|
|
704
|
+
}
|
|
705
|
+
|
|
706
|
+
/**************************************************************************
|
|
707
|
+
* Modifiers
|
|
708
|
+
*************************************************************************/
|
|
709
|
+
|
|
710
|
+
modifier onlySelf() {
|
|
711
|
+
if (msg.sender != address(this)) revert SUPER_TOKEN_ONLY_SELF();
|
|
712
|
+
_;
|
|
713
|
+
}
|
|
714
|
+
}
|