@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,403 @@
|
|
|
1
|
+
// SPDX-License-Identifier: AGPLv3
|
|
2
|
+
pragma solidity >=0.8;
|
|
3
|
+
|
|
4
|
+
import { ISuperfluid } from "@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluid.sol";
|
|
5
|
+
import { ISuperAgreement } from "@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperAgreement.sol";
|
|
6
|
+
import { ISuperfluidGovernance } from "@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluidGovernance.sol";
|
|
7
|
+
import { ISuperfluidToken } from "@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluidToken.sol";
|
|
8
|
+
|
|
9
|
+
import { SafeCast } from "@openzeppelin/contracts/utils/math/SafeCast.sol";
|
|
10
|
+
import { EventsEmitter } from "@superfluid-finance/ethereum-contracts/contracts/libs/EventsEmitter.sol";
|
|
11
|
+
import { FixedSizeData } from "@superfluid-finance/ethereum-contracts/contracts/libs/FixedSizeData.sol";
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* @title Superfluid's token implementation
|
|
15
|
+
*
|
|
16
|
+
* @author Superfluid
|
|
17
|
+
* @dev Modified for SuperGoodDollar
|
|
18
|
+
* 1. made createAgreement public and virtual
|
|
19
|
+
* 2. added allowHostOperations to disable host actions by G$ governance in case of security issues
|
|
20
|
+
*/
|
|
21
|
+
abstract contract SuperfluidToken is ISuperfluidToken {
|
|
22
|
+
bytes32 private constant _REWARD_ADDRESS_CONFIG_KEY =
|
|
23
|
+
keccak256("org.superfluid-finance.superfluid.rewardAddress");
|
|
24
|
+
|
|
25
|
+
using SafeCast for uint256;
|
|
26
|
+
using SafeCast for int256;
|
|
27
|
+
|
|
28
|
+
/// @dev Superfluid contract
|
|
29
|
+
ISuperfluid internal immutable _host;
|
|
30
|
+
|
|
31
|
+
/// @dev Active agreement bitmap
|
|
32
|
+
mapping(address => uint256) internal _inactiveAgreementBitmap;
|
|
33
|
+
|
|
34
|
+
/// @dev Shared Settled balance for the account
|
|
35
|
+
mapping(address => int256) internal _sharedSettledBalances;
|
|
36
|
+
|
|
37
|
+
/// @dev Total supply
|
|
38
|
+
uint256 internal _totalSupply;
|
|
39
|
+
|
|
40
|
+
// NOTE: for future compatibility, these are reserved solidity slots
|
|
41
|
+
// The sub-class of SuperfluidToken solidity slot will start after _reserve13
|
|
42
|
+
uint256 internal _reserve4;
|
|
43
|
+
uint256 private _reserve5;
|
|
44
|
+
uint256 private _reserve6;
|
|
45
|
+
uint256 private _reserve7;
|
|
46
|
+
uint256 private _reserve8;
|
|
47
|
+
uint256 private _reserve9;
|
|
48
|
+
uint256 private _reserve10;
|
|
49
|
+
uint256 private _reserve11;
|
|
50
|
+
uint256 private _reserve12;
|
|
51
|
+
uint256 internal _reserve13;
|
|
52
|
+
|
|
53
|
+
constructor(ISuperfluid host) {
|
|
54
|
+
_host = host;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
/// @dev ISuperfluidToken.getHost implementation
|
|
58
|
+
function getHost()
|
|
59
|
+
external
|
|
60
|
+
view
|
|
61
|
+
override(ISuperfluidToken)
|
|
62
|
+
returns (address host)
|
|
63
|
+
{
|
|
64
|
+
return address(_host);
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
/**************************************************************************
|
|
68
|
+
* Real-time balance functions
|
|
69
|
+
*************************************************************************/
|
|
70
|
+
|
|
71
|
+
/// @dev ISuperfluidToken.realtimeBalanceOf implementation
|
|
72
|
+
function realtimeBalanceOf(address account, uint256 timestamp)
|
|
73
|
+
public
|
|
74
|
+
view
|
|
75
|
+
override
|
|
76
|
+
returns (
|
|
77
|
+
int256 availableBalance,
|
|
78
|
+
uint256 deposit,
|
|
79
|
+
uint256 owedDeposit
|
|
80
|
+
)
|
|
81
|
+
{
|
|
82
|
+
availableBalance = _sharedSettledBalances[account];
|
|
83
|
+
ISuperAgreement[] memory activeAgreements = getAccountActiveAgreements(
|
|
84
|
+
account
|
|
85
|
+
);
|
|
86
|
+
for (uint256 i = 0; i < activeAgreements.length; ++i) {
|
|
87
|
+
(
|
|
88
|
+
int256 agreementDynamicBalance,
|
|
89
|
+
uint256 agreementDeposit,
|
|
90
|
+
uint256 agreementOwedDeposit
|
|
91
|
+
) = activeAgreements[i].realtimeBalanceOf(this, account, timestamp);
|
|
92
|
+
deposit = deposit + agreementDeposit;
|
|
93
|
+
owedDeposit = owedDeposit + agreementOwedDeposit;
|
|
94
|
+
// 1. Available Balance = Dynamic Balance - Max(0, Deposit - OwedDeposit)
|
|
95
|
+
// 2. Deposit should not be shared between agreements
|
|
96
|
+
availableBalance =
|
|
97
|
+
availableBalance +
|
|
98
|
+
agreementDynamicBalance -
|
|
99
|
+
(
|
|
100
|
+
agreementDeposit > agreementOwedDeposit
|
|
101
|
+
? (agreementDeposit - agreementOwedDeposit)
|
|
102
|
+
: 0
|
|
103
|
+
).toInt256();
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
/// @dev ISuperfluidToken.realtimeBalanceOfNow implementation
|
|
108
|
+
function realtimeBalanceOfNow(address account)
|
|
109
|
+
public
|
|
110
|
+
view
|
|
111
|
+
override
|
|
112
|
+
returns (
|
|
113
|
+
int256 availableBalance,
|
|
114
|
+
uint256 deposit,
|
|
115
|
+
uint256 owedDeposit,
|
|
116
|
+
uint256 timestamp
|
|
117
|
+
)
|
|
118
|
+
{
|
|
119
|
+
timestamp = _host.getNow();
|
|
120
|
+
(availableBalance, deposit, owedDeposit) = realtimeBalanceOf(
|
|
121
|
+
account,
|
|
122
|
+
timestamp
|
|
123
|
+
);
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
function isAccountCritical(address account, uint256 timestamp)
|
|
127
|
+
public
|
|
128
|
+
view
|
|
129
|
+
override
|
|
130
|
+
returns (bool isCritical)
|
|
131
|
+
{
|
|
132
|
+
(int256 availableBalance, , ) = realtimeBalanceOf(account, timestamp);
|
|
133
|
+
return availableBalance < 0;
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
function isAccountCriticalNow(address account)
|
|
137
|
+
external
|
|
138
|
+
view
|
|
139
|
+
override
|
|
140
|
+
returns (bool isCritical)
|
|
141
|
+
{
|
|
142
|
+
return isAccountCritical(account, _host.getNow());
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
function isAccountSolvent(address account, uint256 timestamp)
|
|
146
|
+
public
|
|
147
|
+
view
|
|
148
|
+
override
|
|
149
|
+
returns (bool isSolvent)
|
|
150
|
+
{
|
|
151
|
+
(
|
|
152
|
+
int256 availableBalance,
|
|
153
|
+
uint256 deposit,
|
|
154
|
+
uint256 owedDeposit
|
|
155
|
+
) = realtimeBalanceOf(account, timestamp);
|
|
156
|
+
// Available Balance = Realtime Balance - Max(0, Deposit - OwedDeposit)
|
|
157
|
+
int256 realtimeBalance = availableBalance +
|
|
158
|
+
(deposit > owedDeposit ? (deposit - owedDeposit) : 0).toInt256();
|
|
159
|
+
return realtimeBalance >= 0;
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
function isAccountSolventNow(address account)
|
|
163
|
+
external
|
|
164
|
+
view
|
|
165
|
+
override
|
|
166
|
+
returns (bool isSolvent)
|
|
167
|
+
{
|
|
168
|
+
return isAccountSolvent(account, _host.getNow());
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
/// @dev ISuperfluidToken.getAccountActiveAgreements implementation
|
|
172
|
+
function getAccountActiveAgreements(address account)
|
|
173
|
+
public
|
|
174
|
+
view
|
|
175
|
+
override
|
|
176
|
+
returns (ISuperAgreement[] memory)
|
|
177
|
+
{
|
|
178
|
+
return _host.mapAgreementClasses(~_inactiveAgreementBitmap[account]);
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
/**************************************************************************
|
|
182
|
+
* Token implementation helpers
|
|
183
|
+
*************************************************************************/
|
|
184
|
+
|
|
185
|
+
function _mint(address account, uint256 amount) internal {
|
|
186
|
+
_sharedSettledBalances[account] =
|
|
187
|
+
_sharedSettledBalances[account] +
|
|
188
|
+
amount.toInt256();
|
|
189
|
+
_totalSupply = _totalSupply + amount;
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
function _burn(address account, uint256 amount) internal {
|
|
193
|
+
(int256 availableBalance, , ) = realtimeBalanceOf(account, _host.getNow());
|
|
194
|
+
if (availableBalance < amount.toInt256()) {
|
|
195
|
+
revert SF_TOKEN_BURN_INSUFFICIENT_BALANCE();
|
|
196
|
+
}
|
|
197
|
+
_sharedSettledBalances[account] =
|
|
198
|
+
_sharedSettledBalances[account] -
|
|
199
|
+
amount.toInt256();
|
|
200
|
+
_totalSupply = _totalSupply - amount;
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
function _move(
|
|
204
|
+
address from,
|
|
205
|
+
address to,
|
|
206
|
+
int256 amount
|
|
207
|
+
) internal {
|
|
208
|
+
(int256 availableBalance, , ) = realtimeBalanceOf(from, _host.getNow());
|
|
209
|
+
if (availableBalance < amount) {
|
|
210
|
+
revert SF_TOKEN_MOVE_INSUFFICIENT_BALANCE();
|
|
211
|
+
}
|
|
212
|
+
_sharedSettledBalances[from] = _sharedSettledBalances[from] - amount;
|
|
213
|
+
_sharedSettledBalances[to] = _sharedSettledBalances[to] + amount;
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
function _getRewardAccount() internal view returns (address rewardAccount) {
|
|
217
|
+
ISuperfluidGovernance gov = _host.getGovernance();
|
|
218
|
+
rewardAccount = gov.getConfigAsAddress(
|
|
219
|
+
_host,
|
|
220
|
+
this,
|
|
221
|
+
_REWARD_ADDRESS_CONFIG_KEY
|
|
222
|
+
);
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
/**************************************************************************
|
|
226
|
+
* Super Agreement hosting functions
|
|
227
|
+
*************************************************************************/
|
|
228
|
+
|
|
229
|
+
/// @dev ISuperfluidToken.createAgreement implementation
|
|
230
|
+
function createAgreement(bytes32 id, bytes32[] calldata data)
|
|
231
|
+
public
|
|
232
|
+
virtual
|
|
233
|
+
override
|
|
234
|
+
{
|
|
235
|
+
address agreementClass = msg.sender;
|
|
236
|
+
bytes32 slot = keccak256(abi.encode("AgreementData", agreementClass, id));
|
|
237
|
+
if (FixedSizeData.hasData(slot, data.length)) {
|
|
238
|
+
revert SF_TOKEN_AGREEMENT_ALREADY_EXISTS();
|
|
239
|
+
}
|
|
240
|
+
FixedSizeData.storeData(slot, data);
|
|
241
|
+
emit AgreementCreated(agreementClass, id, data);
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
/// @dev ISuperfluidToken.getAgreementData implementation
|
|
245
|
+
function getAgreementData(
|
|
246
|
+
address agreementClass,
|
|
247
|
+
bytes32 id,
|
|
248
|
+
uint256 dataLength
|
|
249
|
+
) external view override returns (bytes32[] memory data) {
|
|
250
|
+
bytes32 slot = keccak256(abi.encode("AgreementData", agreementClass, id));
|
|
251
|
+
data = FixedSizeData.loadData(slot, dataLength);
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
/// @dev ISuperfluidToken.updateAgreementData implementation
|
|
255
|
+
function updateAgreementData(bytes32 id, bytes32[] calldata data)
|
|
256
|
+
external
|
|
257
|
+
override
|
|
258
|
+
{
|
|
259
|
+
address agreementClass = msg.sender;
|
|
260
|
+
bytes32 slot = keccak256(abi.encode("AgreementData", agreementClass, id));
|
|
261
|
+
FixedSizeData.storeData(slot, data);
|
|
262
|
+
emit AgreementUpdated(msg.sender, id, data);
|
|
263
|
+
}
|
|
264
|
+
|
|
265
|
+
/// @dev ISuperfluidToken.terminateAgreement implementation
|
|
266
|
+
function terminateAgreement(bytes32 id, uint256 dataLength)
|
|
267
|
+
external
|
|
268
|
+
override
|
|
269
|
+
{
|
|
270
|
+
address agreementClass = msg.sender;
|
|
271
|
+
bytes32 slot = keccak256(abi.encode("AgreementData", agreementClass, id));
|
|
272
|
+
if (!FixedSizeData.hasData(slot, dataLength)) {
|
|
273
|
+
revert SF_TOKEN_AGREEMENT_DOES_NOT_EXIST();
|
|
274
|
+
}
|
|
275
|
+
FixedSizeData.eraseData(slot, dataLength);
|
|
276
|
+
emit AgreementTerminated(msg.sender, id);
|
|
277
|
+
}
|
|
278
|
+
|
|
279
|
+
/// @dev ISuperfluidToken.updateAgreementState implementation
|
|
280
|
+
function updateAgreementStateSlot(
|
|
281
|
+
address account,
|
|
282
|
+
uint256 slotId,
|
|
283
|
+
bytes32[] calldata slotData
|
|
284
|
+
) external override {
|
|
285
|
+
bytes32 slot = keccak256(
|
|
286
|
+
abi.encode("AgreementState", msg.sender, account, slotId)
|
|
287
|
+
);
|
|
288
|
+
FixedSizeData.storeData(slot, slotData);
|
|
289
|
+
emit AgreementStateUpdated(msg.sender, account, slotId);
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
/// @dev ISuperfluidToken.getAgreementState implementation
|
|
293
|
+
function getAgreementStateSlot(
|
|
294
|
+
address agreementClass,
|
|
295
|
+
address account,
|
|
296
|
+
uint256 slotId,
|
|
297
|
+
uint256 dataLength
|
|
298
|
+
) external view override returns (bytes32[] memory slotData) {
|
|
299
|
+
bytes32 slot = keccak256(
|
|
300
|
+
abi.encode("AgreementState", agreementClass, account, slotId)
|
|
301
|
+
);
|
|
302
|
+
slotData = FixedSizeData.loadData(slot, dataLength);
|
|
303
|
+
}
|
|
304
|
+
|
|
305
|
+
/// @dev ISuperfluidToken.settleBalance implementation
|
|
306
|
+
function settleBalance(address account, int256 delta)
|
|
307
|
+
external
|
|
308
|
+
override
|
|
309
|
+
onlyAgreement
|
|
310
|
+
{
|
|
311
|
+
_sharedSettledBalances[account] = _sharedSettledBalances[account] + delta;
|
|
312
|
+
}
|
|
313
|
+
|
|
314
|
+
/// @dev ISuperfluidToken.makeLiquidationPayoutsV2 implementation
|
|
315
|
+
function makeLiquidationPayoutsV2(
|
|
316
|
+
bytes32 id,
|
|
317
|
+
bytes memory liquidationTypeData,
|
|
318
|
+
address liquidatorAccount, // the address executing the liquidation
|
|
319
|
+
bool useDefaultRewardAccount, // Whether or not the default reward account receives the rewardAmount
|
|
320
|
+
address targetAccount, // Account to be liquidated
|
|
321
|
+
uint256 rewardAmount, // The amount the rewarded account will receive
|
|
322
|
+
int256 targetAccountBalanceDelta // The delta amount the target account balance should change by
|
|
323
|
+
) external override onlyAgreement {
|
|
324
|
+
address rewardAccount = _getRewardAccount();
|
|
325
|
+
|
|
326
|
+
// we set the rewardAccount to the user who executed the liquidation if
|
|
327
|
+
// no rewardAccount is set (aka. ANARCHY MODE - should not occur in reality, for testing purposes)
|
|
328
|
+
if (rewardAccount == address(0)) {
|
|
329
|
+
rewardAccount = liquidatorAccount;
|
|
330
|
+
}
|
|
331
|
+
|
|
332
|
+
address rewardAmountReceiver = useDefaultRewardAccount
|
|
333
|
+
? rewardAccount
|
|
334
|
+
: liquidatorAccount;
|
|
335
|
+
|
|
336
|
+
if (targetAccountBalanceDelta <= 0) {
|
|
337
|
+
// LIKELY BRANCH: target account pays penalty to rewarded account
|
|
338
|
+
assert(rewardAmount.toInt256() == -targetAccountBalanceDelta);
|
|
339
|
+
|
|
340
|
+
_sharedSettledBalances[rewardAmountReceiver] += rewardAmount.toInt256();
|
|
341
|
+
_sharedSettledBalances[targetAccount] += targetAccountBalanceDelta;
|
|
342
|
+
EventsEmitter.emitTransfer(
|
|
343
|
+
targetAccount,
|
|
344
|
+
rewardAmountReceiver,
|
|
345
|
+
rewardAmount
|
|
346
|
+
);
|
|
347
|
+
} else {
|
|
348
|
+
// LESS LIKELY BRANCH: target account is bailed out
|
|
349
|
+
// NOTE: useDefaultRewardAccount being true is undefined behavior
|
|
350
|
+
// because the default reward account isn't receiving the rewardAmount by default
|
|
351
|
+
assert(!useDefaultRewardAccount);
|
|
352
|
+
_sharedSettledBalances[rewardAccount] -= (rewardAmount.toInt256() +
|
|
353
|
+
targetAccountBalanceDelta);
|
|
354
|
+
_sharedSettledBalances[liquidatorAccount] += rewardAmount.toInt256();
|
|
355
|
+
_sharedSettledBalances[targetAccount] += targetAccountBalanceDelta;
|
|
356
|
+
EventsEmitter.emitTransfer(
|
|
357
|
+
rewardAccount,
|
|
358
|
+
liquidatorAccount,
|
|
359
|
+
rewardAmount
|
|
360
|
+
);
|
|
361
|
+
EventsEmitter.emitTransfer(
|
|
362
|
+
rewardAccount,
|
|
363
|
+
targetAccount,
|
|
364
|
+
uint256(targetAccountBalanceDelta)
|
|
365
|
+
);
|
|
366
|
+
}
|
|
367
|
+
|
|
368
|
+
emit AgreementLiquidatedV2(
|
|
369
|
+
msg.sender,
|
|
370
|
+
id,
|
|
371
|
+
liquidatorAccount,
|
|
372
|
+
targetAccount,
|
|
373
|
+
rewardAmountReceiver,
|
|
374
|
+
rewardAmount,
|
|
375
|
+
targetAccountBalanceDelta,
|
|
376
|
+
liquidationTypeData
|
|
377
|
+
);
|
|
378
|
+
}
|
|
379
|
+
|
|
380
|
+
function allowHostOperations()
|
|
381
|
+
internal
|
|
382
|
+
view
|
|
383
|
+
virtual
|
|
384
|
+
returns (bool hostEnabled);
|
|
385
|
+
|
|
386
|
+
/**************************************************************************
|
|
387
|
+
* Modifiers
|
|
388
|
+
*************************************************************************/
|
|
389
|
+
|
|
390
|
+
modifier onlyAgreement() {
|
|
391
|
+
if (!_host.isAgreementClassListed(ISuperAgreement(msg.sender))) {
|
|
392
|
+
revert SF_TOKEN_ONLY_LISTED_AGREEMENT();
|
|
393
|
+
}
|
|
394
|
+
_;
|
|
395
|
+
}
|
|
396
|
+
|
|
397
|
+
modifier onlyHost() {
|
|
398
|
+
if (address(_host) != msg.sender || allowHostOperations() == false) {
|
|
399
|
+
revert SF_TOKEN_ONLY_HOST();
|
|
400
|
+
}
|
|
401
|
+
_;
|
|
402
|
+
}
|
|
403
|
+
}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
// SPDX-License-Identifier: MIT
|
|
2
|
+
pragma solidity >=0.8;
|
|
3
|
+
|
|
4
|
+
import { UUPSUtils } from "@superfluid-finance/ethereum-contracts/contracts/upgradability/UUPSUtils.sol";
|
|
5
|
+
import { Initializable } from "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol";
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* @title UUPS (Universal Upgradeable Proxy Standard) Proxiable contract.
|
|
9
|
+
* @dev Modified for SuperGoodDollar
|
|
10
|
+
* 1. use upgradeable Initializable for compatability with usage of other openzep upgradeablaes contracts
|
|
11
|
+
*/
|
|
12
|
+
abstract contract UUPSProxiable is Initializable {
|
|
13
|
+
/**
|
|
14
|
+
* @dev Get current implementation code address.
|
|
15
|
+
*/
|
|
16
|
+
function getCodeAddress() public view returns (address codeAddress) {
|
|
17
|
+
return UUPSUtils.implementation();
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
function updateCode(address newAddress) external virtual;
|
|
21
|
+
|
|
22
|
+
// allows to mark logic contracts as initialized in order to reduce the attack surface
|
|
23
|
+
// solhint-disable-next-line no-empty-blocks
|
|
24
|
+
function castrate() external initializer {}
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* @dev Proxiable UUID marker function, this would help to avoid wrong logic
|
|
28
|
+
* contract to be used for upgrading.
|
|
29
|
+
*
|
|
30
|
+
* NOTE: The semantics of the UUID deviates from the actual UUPS standard,
|
|
31
|
+
* where it is equivalent of _IMPLEMENTATION_SLOT.
|
|
32
|
+
*/
|
|
33
|
+
function proxiableUUID() public view virtual returns (bytes32);
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* @dev Update code address function.
|
|
37
|
+
* It is internal, so the derived contract could setup its own permission logic.
|
|
38
|
+
*/
|
|
39
|
+
function _updateCodeAddress(address newAddress) internal {
|
|
40
|
+
// require UUPSProxy.initializeProxy first
|
|
41
|
+
require(
|
|
42
|
+
UUPSUtils.implementation() != address(0),
|
|
43
|
+
"UUPSProxiable: not upgradable"
|
|
44
|
+
);
|
|
45
|
+
require(
|
|
46
|
+
proxiableUUID() == UUPSProxiable(newAddress).proxiableUUID(),
|
|
47
|
+
"UUPSProxiable: not compatible logic"
|
|
48
|
+
);
|
|
49
|
+
require(address(this) != newAddress, "UUPSProxiable: proxy loop");
|
|
50
|
+
UUPSUtils.setImplementation(newAddress);
|
|
51
|
+
emit CodeUpdated(proxiableUUID(), newAddress);
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
event CodeUpdated(bytes32 uuid, address codeAddress);
|
|
55
|
+
}
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
// Sources flattened with hardhat v2.12.4 https://hardhat.org
|
|
2
|
+
|
|
3
|
+
// File contracts/upgradability/UUPSUtils.sol
|
|
4
|
+
|
|
5
|
+
// SPDX-License-Identifier: AGPLv3
|
|
6
|
+
pragma solidity 0.8.16;
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* @title UUPS (Universal Upgradeable Proxy Standard) Shared Library
|
|
10
|
+
*/
|
|
11
|
+
library UUPSUtils {
|
|
12
|
+
/**
|
|
13
|
+
* @dev Implementation slot constant.
|
|
14
|
+
* Using https://eips.ethereum.org/EIPS/eip-1967 standard
|
|
15
|
+
* Storage slot 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc
|
|
16
|
+
* (obtained as bytes32(uint256(keccak256('eip1967.proxy.implementation')) - 1)).
|
|
17
|
+
*/
|
|
18
|
+
bytes32 internal constant _IMPLEMENTATION_SLOT =
|
|
19
|
+
0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;
|
|
20
|
+
|
|
21
|
+
/// @dev Get implementation address.
|
|
22
|
+
function implementation() internal view returns (address impl) {
|
|
23
|
+
assembly {
|
|
24
|
+
// solium-disable-line
|
|
25
|
+
impl := sload(_IMPLEMENTATION_SLOT)
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
/// @dev Set new implementation address.
|
|
30
|
+
function setImplementation(address codeAddress) internal {
|
|
31
|
+
assembly {
|
|
32
|
+
// solium-disable-line
|
|
33
|
+
sstore(_IMPLEMENTATION_SLOT, codeAddress)
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
// File @openzeppelin/contracts/proxy/Proxy.sol@v4.8.0
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* @dev This abstract contract provides a fallback function that delegates all calls to another contract using the EVM
|
|
42
|
+
* instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to
|
|
43
|
+
* be specified by overriding the virtual {_implementation} function.
|
|
44
|
+
*
|
|
45
|
+
* Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a
|
|
46
|
+
* different contract through the {_delegate} function.
|
|
47
|
+
*
|
|
48
|
+
* The success and return data of the delegated call will be returned back to the caller of the proxy.
|
|
49
|
+
*/
|
|
50
|
+
abstract contract Proxy {
|
|
51
|
+
/**
|
|
52
|
+
* @dev Delegates the current call to `implementation`.
|
|
53
|
+
*
|
|
54
|
+
* This function does not return to its internal call site, it will return directly to the external caller.
|
|
55
|
+
*/
|
|
56
|
+
function _delegate(address implementation) internal virtual {
|
|
57
|
+
assembly {
|
|
58
|
+
// Copy msg.data. We take full control of memory in this inline assembly
|
|
59
|
+
// block because it will not return to Solidity code. We overwrite the
|
|
60
|
+
// Solidity scratch pad at memory position 0.
|
|
61
|
+
calldatacopy(0, 0, calldatasize())
|
|
62
|
+
|
|
63
|
+
// Call the implementation.
|
|
64
|
+
// out and outsize are 0 because we don't know the size yet.
|
|
65
|
+
let result := delegatecall(gas(), implementation, 0, calldatasize(), 0, 0)
|
|
66
|
+
|
|
67
|
+
// Copy the returned data.
|
|
68
|
+
returndatacopy(0, 0, returndatasize())
|
|
69
|
+
|
|
70
|
+
switch result
|
|
71
|
+
// delegatecall returns 0 on error.
|
|
72
|
+
case 0 {
|
|
73
|
+
revert(0, returndatasize())
|
|
74
|
+
}
|
|
75
|
+
default {
|
|
76
|
+
return(0, returndatasize())
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
/**
|
|
82
|
+
* @dev This is a virtual function that should be overridden so it returns the address to which the fallback function
|
|
83
|
+
* and {_fallback} should delegate.
|
|
84
|
+
*/
|
|
85
|
+
function _implementation() internal view virtual returns (address);
|
|
86
|
+
|
|
87
|
+
/**
|
|
88
|
+
* @dev Delegates the current call to the address returned by `_implementation()`.
|
|
89
|
+
*
|
|
90
|
+
* This function does not return to its internal call site, it will return directly to the external caller.
|
|
91
|
+
*/
|
|
92
|
+
function _fallback() internal virtual {
|
|
93
|
+
_beforeFallback();
|
|
94
|
+
_delegate(_implementation());
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
/**
|
|
98
|
+
* @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if no other
|
|
99
|
+
* function in the contract matches the call data.
|
|
100
|
+
*/
|
|
101
|
+
fallback() external payable virtual {
|
|
102
|
+
_fallback();
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
/**
|
|
106
|
+
* @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if call data
|
|
107
|
+
* is empty.
|
|
108
|
+
*/
|
|
109
|
+
receive() external payable virtual {
|
|
110
|
+
_fallback();
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
/**
|
|
114
|
+
* @dev Hook that is called before falling back to the implementation. Can happen as part of a manual `_fallback`
|
|
115
|
+
* call, or as part of the Solidity `fallback` or `receive` functions.
|
|
116
|
+
*
|
|
117
|
+
* If overridden should call `super._beforeFallback()`.
|
|
118
|
+
*/
|
|
119
|
+
function _beforeFallback() internal virtual {}
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
// File contracts/upgradability/UUPSProxy.sol
|
|
123
|
+
|
|
124
|
+
/**
|
|
125
|
+
* @title UUPS (Universal Upgradeable Proxy Standard) Proxy
|
|
126
|
+
*
|
|
127
|
+
* NOTE:
|
|
128
|
+
* - Compliant with [Universal Upgradeable Proxy Standard](https://eips.ethereum.org/EIPS/eip-1822)
|
|
129
|
+
* - Compiiant with [Standard Proxy Storage Slots](https://eips.ethereum.org/EIPS/eip-1967)
|
|
130
|
+
* - Implements delegation of calls to other contracts, with proper forwarding of
|
|
131
|
+
* return values and bubbling of failures.
|
|
132
|
+
* - It defines a fallback function that delegates all calls to the implementation.
|
|
133
|
+
*/
|
|
134
|
+
contract UUPSProxy is Proxy {
|
|
135
|
+
/**
|
|
136
|
+
* @dev Proxy initialization function.
|
|
137
|
+
* This should only be called once and it is permission-less.
|
|
138
|
+
* @param initialAddress Initial logic contract code address to be used.
|
|
139
|
+
*/
|
|
140
|
+
function initializeProxy(address initialAddress) external {
|
|
141
|
+
require(initialAddress != address(0), "UUPSProxy: zero address");
|
|
142
|
+
require(
|
|
143
|
+
UUPSUtils.implementation() == address(0),
|
|
144
|
+
"UUPSProxy: already initialized"
|
|
145
|
+
);
|
|
146
|
+
UUPSUtils.setImplementation(initialAddress);
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
/// @dev Proxy._implementation implementation
|
|
150
|
+
function _implementation() internal view virtual override returns (address) {
|
|
151
|
+
return UUPSUtils.implementation();
|
|
152
|
+
}
|
|
153
|
+
}
|