@gooddollar/goodprotocol 2.0.25-beta.1 → 2.0.25-beta.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (182) hide show
  1. package/artifacts/abis/FuseStakingV3.min.json +1 -1
  2. package/artifacts/abis/InvitesV2.min.json +1 -1
  3. package/artifacts/contracts/DAOStackInterfaces.sol/Avatar.dbg.json +1 -1
  4. package/artifacts/contracts/DAOStackInterfaces.sol/Controller.dbg.json +1 -1
  5. package/artifacts/contracts/DAOStackInterfaces.sol/GlobalConstraintInterface.dbg.json +1 -1
  6. package/artifacts/contracts/DAOStackInterfaces.sol/IntVoteInterface.dbg.json +1 -1
  7. package/artifacts/contracts/DAOStackInterfaces.sol/ReputationInterface.dbg.json +1 -1
  8. package/artifacts/contracts/DAOStackInterfaces.sol/SchemeRegistrar.dbg.json +1 -1
  9. package/artifacts/contracts/Interfaces.sol/AggregatorV3Interface.dbg.json +1 -1
  10. package/artifacts/contracts/Interfaces.sol/ERC20.dbg.json +1 -1
  11. package/artifacts/contracts/Interfaces.sol/IAaveIncentivesController.dbg.json +1 -1
  12. package/artifacts/contracts/Interfaces.sol/IAdminWallet.dbg.json +1 -1
  13. package/artifacts/contracts/Interfaces.sol/IDonationStaking.dbg.json +1 -1
  14. package/artifacts/contracts/Interfaces.sol/IERC2917.dbg.json +1 -1
  15. package/artifacts/contracts/Interfaces.sol/IFirstClaimPool.dbg.json +1 -1
  16. package/artifacts/contracts/Interfaces.sol/IGoodDollar.dbg.json +1 -1
  17. package/artifacts/contracts/Interfaces.sol/IGoodStaking.dbg.json +1 -1
  18. package/artifacts/contracts/Interfaces.sol/IHasRouter.dbg.json +1 -1
  19. package/artifacts/contracts/Interfaces.sol/IIdentity.dbg.json +1 -1
  20. package/artifacts/contracts/Interfaces.sol/IIdentityV2.dbg.json +1 -1
  21. package/artifacts/contracts/Interfaces.sol/ILendingPool.dbg.json +1 -1
  22. package/artifacts/contracts/Interfaces.sol/IMultichainRouter.dbg.json +1 -1
  23. package/artifacts/contracts/Interfaces.sol/INameService.dbg.json +1 -1
  24. package/artifacts/contracts/Interfaces.sol/IUBIScheme.dbg.json +1 -1
  25. package/artifacts/contracts/Interfaces.sol/ProxyAdmin.dbg.json +1 -1
  26. package/artifacts/contracts/Interfaces.sol/Reserve.dbg.json +1 -1
  27. package/artifacts/contracts/Interfaces.sol/Staking.dbg.json +1 -1
  28. package/artifacts/contracts/Interfaces.sol/Uniswap.dbg.json +1 -1
  29. package/artifacts/contracts/Interfaces.sol/UniswapFactory.dbg.json +1 -1
  30. package/artifacts/contracts/Interfaces.sol/UniswapPair.dbg.json +1 -1
  31. package/artifacts/contracts/Interfaces.sol/cERC20.dbg.json +1 -1
  32. package/artifacts/contracts/fuseFaucet/Faucet.sol/Faucet.dbg.json +1 -1
  33. package/artifacts/contracts/fuseFaucet/FuseFaucet.sol/FuseFaucet.dbg.json +1 -1
  34. package/artifacts/contracts/fuseFaucet/FuseFaucetV2.sol/FuseFaucetV2.dbg.json +1 -1
  35. package/artifacts/contracts/governance/ClaimersDistribution.sol/ClaimersDistribution.dbg.json +1 -1
  36. package/artifacts/contracts/governance/CompoundVotingMachine.sol/CompoundVotingMachine.dbg.json +1 -1
  37. package/artifacts/contracts/governance/GReputation.sol/GReputation.dbg.json +1 -1
  38. package/artifacts/contracts/governance/GoodDollarStaking.sol/GoodDollarStaking.dbg.json +1 -1
  39. package/artifacts/contracts/governance/GoodDollarStaking.sol/IGovernanceStaking.dbg.json +1 -1
  40. package/artifacts/contracts/governance/GoodDollarStaking.sol/IStakingUpgrade.dbg.json +1 -1
  41. package/artifacts/contracts/governance/GoodDollarStaking.sol/RewardsMinter.dbg.json +1 -1
  42. package/artifacts/contracts/governance/GovernanceStaking.sol/GovernanceStaking.dbg.json +1 -1
  43. package/artifacts/contracts/governance/MultiBaseGovernanceShareField.sol/MultiBaseGovernanceShareField.dbg.json +1 -1
  44. package/artifacts/contracts/governance/Reputation.sol/Reputation.dbg.json +1 -1
  45. package/artifacts/contracts/governance/StakersDistribution.sol/StakersDistribution.dbg.json +1 -1
  46. package/artifacts/contracts/identity/IdentityV2.sol/IdentityV2.dbg.json +1 -1
  47. package/artifacts/contracts/invite/InvitesFuseV2.sol/InvitesFuseV2.dbg.json +1 -1
  48. package/artifacts/contracts/invite/InvitesV1.sol/InvitesV1.dbg.json +1 -1
  49. package/artifacts/contracts/invite/InvitesV2.sol/InvitesV2.dbg.json +1 -1
  50. package/artifacts/contracts/invite/InvitesV2.sol/InvitesV2.json +15 -2
  51. package/artifacts/contracts/mocks/AaveMock.sol/AaveMock.dbg.json +1 -1
  52. package/artifacts/contracts/mocks/AaveUSDMockOracle.sol/AaveUSDMockOracle.dbg.json +1 -1
  53. package/artifacts/contracts/mocks/BatUSDMockOracle.sol/BatUSDMockOracle.dbg.json +1 -1
  54. package/artifacts/contracts/mocks/CompUsdMockOracle.sol/CompUSDMockOracle.dbg.json +1 -1
  55. package/artifacts/contracts/mocks/DAIMock.sol/DAIMock.dbg.json +1 -1
  56. package/artifacts/contracts/mocks/DaiEthPriceMockOracle.sol/DaiEthPriceMockOracle.dbg.json +1 -1
  57. package/artifacts/contracts/mocks/DecimalsMock.sol/DecimalsMock.dbg.json +1 -1
  58. package/artifacts/contracts/mocks/DistributionBridgeMock.sol/DistributionBridgeMock.dbg.json +1 -1
  59. package/artifacts/contracts/mocks/DistributionHelperTest.sol/DistributionHelperTest.dbg.json +1 -1
  60. package/artifacts/contracts/mocks/DistributionHelperTest.sol/DistributionHelperTestHelper.dbg.json +1 -1
  61. package/artifacts/contracts/mocks/EthUSDMockOracle.sol/EthUSDMockOracle.dbg.json +1 -1
  62. package/artifacts/contracts/mocks/FeesFormularMock.sol/FeesFormulaMock.dbg.json +1 -1
  63. package/artifacts/contracts/mocks/GasPriceMockOracle.sol/GasPriceMockOracle.dbg.json +1 -1
  64. package/artifacts/contracts/mocks/GoodCompoundStakingTest.sol/GoodCompoundStakingTest.dbg.json +1 -1
  65. package/artifacts/contracts/mocks/GoodDollarStakingMock.sol/GoodDollarStakingMock.dbg.json +1 -1
  66. package/artifacts/contracts/mocks/GoodFundManagerTest.sol/GoodFundManagerTest.dbg.json +1 -1
  67. package/artifacts/contracts/mocks/IdentityMock.sol/IdentityMock.dbg.json +1 -1
  68. package/artifacts/contracts/mocks/IncentiveControllerMock.sol/IncentiveControllerMock.dbg.json +1 -1
  69. package/artifacts/contracts/mocks/LendingPoolMock.sol/LendingPoolMock.dbg.json +1 -1
  70. package/artifacts/contracts/mocks/MultichainRouterMock.sol/IWrapper.dbg.json +1 -1
  71. package/artifacts/contracts/mocks/MultichainRouterMock.sol/MultichainRouterMock.dbg.json +1 -1
  72. package/artifacts/contracts/mocks/OverMintTester.sol/IGoodDollarStakingTest.dbg.json +1 -1
  73. package/artifacts/contracts/mocks/OverMintTester.sol/OverMintTester.dbg.json +1 -1
  74. package/artifacts/contracts/mocks/OverMintTesterRegularStake.sol/OverMintTesterRegularStake.dbg.json +1 -1
  75. package/artifacts/contracts/mocks/PayableMock.sol/PayableMock.dbg.json +1 -1
  76. package/artifacts/contracts/mocks/SixteenDecimalsTokenMock.sol/SixteenDecimalsTokenMock.dbg.json +1 -1
  77. package/artifacts/contracts/mocks/StakingMockFixedAPY.sol/StakingMockFixedAPY.dbg.json +1 -1
  78. package/artifacts/contracts/mocks/SwapHelperTest.sol/SwapHelperTest.dbg.json +1 -1
  79. package/artifacts/contracts/mocks/TwentyDecimalsTokenMock.sol/TwentyDecimalsTokenMock.dbg.json +1 -1
  80. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock.dbg.json +1 -1
  81. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock2.dbg.json +1 -1
  82. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock3.dbg.json +1 -1
  83. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock4.dbg.json +1 -1
  84. package/artifacts/contracts/mocks/UsdcMock.sol/USDCMock.dbg.json +1 -1
  85. package/artifacts/contracts/mocks/cBATMock.sol/cBATMock.dbg.json +1 -1
  86. package/artifacts/contracts/mocks/cDAILowWorthMock.sol/cDAILowWorthMock.dbg.json +1 -1
  87. package/artifacts/contracts/mocks/cDAIMock.sol/cDAIMock.dbg.json +1 -1
  88. package/artifacts/contracts/mocks/cDAINonMintableMock.sol/cDAINonMintableMock.dbg.json +1 -1
  89. package/artifacts/contracts/mocks/cDecimalsMock.sol/cDecimalsMock.dbg.json +1 -1
  90. package/artifacts/contracts/mocks/cSDTMock.sol/cSDTMock.dbg.json +1 -1
  91. package/artifacts/contracts/mocks/cUSDCMock.sol/cUSDCMock.dbg.json +1 -1
  92. package/artifacts/contracts/reserve/DistributionHelper.sol/DistributionHelper.dbg.json +1 -1
  93. package/artifacts/contracts/reserve/ExchangeHelper.sol/ExchangeHelper.dbg.json +1 -1
  94. package/artifacts/contracts/reserve/GoodMarketMaker.sol/GoodMarketMaker.dbg.json +1 -1
  95. package/artifacts/contracts/reserve/GoodReserveCDai.sol/ContributionCalc.dbg.json +1 -1
  96. package/artifacts/contracts/reserve/GoodReserveCDai.sol/GoodReserveCDai.dbg.json +1 -1
  97. package/artifacts/contracts/staking/BaseShareField.sol/BaseShareField.dbg.json +1 -1
  98. package/artifacts/contracts/staking/BaseShareFieldV2.sol/BaseShareFieldV2.dbg.json +1 -1
  99. package/artifacts/contracts/staking/DonationsStaking.sol/DonationsStaking.dbg.json +1 -1
  100. package/artifacts/contracts/staking/FuseStakingV3.sol/FuseStakingV3.dbg.json +1 -1
  101. package/artifacts/contracts/staking/FuseStakingV3.sol/FuseStakingV3.json +7 -2
  102. package/artifacts/contracts/staking/FuseStakingV3.sol/IConsensus.dbg.json +1 -1
  103. package/artifacts/contracts/staking/FuseStakingV3.sol/PegSwap.dbg.json +1 -1
  104. package/artifacts/contracts/staking/GoodFundManager.sol/GoodFundManager.dbg.json +1 -1
  105. package/artifacts/contracts/staking/SimpleStaking.sol/SimpleStaking.dbg.json +1 -1
  106. package/artifacts/contracts/staking/SimpleStakingV2.sol/SimpleStakingV2.dbg.json +1 -1
  107. package/artifacts/contracts/staking/UniswapV2SwapHelper.sol/UniswapV2SwapHelper.dbg.json +1 -1
  108. package/artifacts/contracts/staking/aave/AaveStakingFactory.sol/AaveStakingFactory.dbg.json +1 -1
  109. package/artifacts/contracts/staking/aave/GoodAaveStaking.sol/GoodAaveStaking.dbg.json +1 -1
  110. package/artifacts/contracts/staking/aave/GoodAaveStakingV2.sol/GoodAaveStakingV2.dbg.json +1 -1
  111. package/artifacts/contracts/staking/compound/CompoundStakingFactory.sol/CompoundStakingFactory.dbg.json +1 -1
  112. package/artifacts/contracts/staking/compound/GoodCompoundStaking.sol/GoodCompoundStaking.dbg.json +1 -1
  113. package/artifacts/contracts/staking/compound/GoodCompoundStakingV2.sol/GoodCompoundStakingV2.dbg.json +1 -1
  114. package/artifacts/contracts/staking/utils/Math64X64.sol/Math64x64.dbg.json +1 -1
  115. package/artifacts/contracts/staking/utils/StakingRewardsFixedAPY.sol/StakingRewardsFixedAPY.dbg.json +1 -1
  116. package/artifacts/contracts/token/ERC20PresetMinterPauserUpgradeable.sol/ERC20PresetMinterPauserUpgradeable.dbg.json +1 -1
  117. package/artifacts/contracts/token/ERC677.sol/ERC677.dbg.json +1 -1
  118. package/artifacts/contracts/token/ERC677.sol/ERC677Receiver.dbg.json +1 -1
  119. package/artifacts/contracts/token/GoodDollar.sol/GoodDollar.dbg.json +1 -1
  120. package/artifacts/contracts/token/IFeesFormula.sol/IFeesFormula.dbg.json +1 -1
  121. package/artifacts/contracts/token/MultichainFeeFormula.sol/MultichainFeeFormula.dbg.json +1 -1
  122. package/artifacts/contracts/token/superfluid/ERC20Permit.sol/ERC20Permit.dbg.json +1 -1
  123. package/artifacts/contracts/token/superfluid/ERC20Permit.sol/SelfApprove.dbg.json +1 -1
  124. package/artifacts/contracts/token/superfluid/ISuperGoodDollar.sol/IGoodDollarCustom.dbg.json +1 -1
  125. package/artifacts/contracts/token/superfluid/ISuperGoodDollar.sol/ISuperGoodDollar.dbg.json +1 -1
  126. package/artifacts/contracts/token/superfluid/ISuperToken.sol/ISuperToken.dbg.json +1 -1
  127. package/artifacts/contracts/token/superfluid/SuperGoodDollar.sol/SuperGoodDollar.dbg.json +1 -1
  128. package/artifacts/contracts/token/superfluid/SuperToken.sol/SuperToken.dbg.json +1 -1
  129. package/artifacts/contracts/token/superfluid/SuperfluidToken.sol/SuperfluidToken.dbg.json +1 -1
  130. package/artifacts/contracts/token/superfluid/UUPSProxiable.sol/UUPSProxiable.dbg.json +1 -1
  131. package/artifacts/contracts/token/superfluid/UUPSProxy.sol/Proxy.dbg.json +1 -1
  132. package/artifacts/contracts/token/superfluid/UUPSProxy.sol/UUPSProxy.dbg.json +1 -1
  133. package/artifacts/contracts/token/superfluid/UUPSProxy.sol/UUPSUtils.dbg.json +1 -1
  134. package/artifacts/contracts/ubi/UBIScheme.sol/UBIScheme.dbg.json +1 -1
  135. package/artifacts/contracts/ubi/UBISchemeV2.sol/UBISchemeV2.dbg.json +1 -1
  136. package/artifacts/contracts/utils/AdminWallet.sol/AdminWallet.dbg.json +1 -1
  137. package/artifacts/contracts/utils/AdminWalletFuse.sol/AdminWalletFuse.dbg.json +1 -1
  138. package/artifacts/contracts/utils/BancorFormula.sol/BancorFormula.dbg.json +1 -1
  139. package/artifacts/contracts/utils/BulkProof.sol/BulkProof.dbg.json +1 -1
  140. package/artifacts/contracts/utils/BuyAndBridgeHelper.sol/BuyAndBridgeHelper.dbg.json +1 -1
  141. package/artifacts/contracts/utils/BuyGDClone.sol/BuyGDClone.dbg.json +1 -1
  142. package/artifacts/contracts/utils/BuyGDClone.sol/BuyGDCloneFactory.dbg.json +1 -1
  143. package/artifacts/contracts/utils/BuyGDClone.sol/DonateGDClone.dbg.json +1 -1
  144. package/artifacts/contracts/utils/BuyGDClone.sol/IQuoterV2.dbg.json +1 -1
  145. package/artifacts/contracts/utils/BuyGDClone.sol/ISwapRouter.dbg.json +1 -1
  146. package/artifacts/contracts/utils/DAOContract.sol/DAOContract.dbg.json +1 -1
  147. package/artifacts/contracts/utils/DAOUpgradeableContract.sol/DAOUpgradeableContract.dbg.json +1 -1
  148. package/artifacts/contracts/utils/DSMath.sol/DSMath.dbg.json +1 -1
  149. package/artifacts/contracts/utils/DataTypes.sol/DataTypes.dbg.json +1 -1
  150. package/artifacts/contracts/utils/GDFaucet.sol/GDFaucet.dbg.json +1 -1
  151. package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/GoodDollarMintBurnWrapper.dbg.json +1 -1
  152. package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/IRouter.dbg.json +1 -1
  153. package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/PausableControl.dbg.json +1 -1
  154. package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/TokenOperation.dbg.json +1 -1
  155. package/artifacts/contracts/utils/IdentityFix.sol/IdentityFix.dbg.json +1 -1
  156. package/artifacts/contracts/utils/MultiCall.sol/Multicall.dbg.json +1 -1
  157. package/artifacts/contracts/utils/MultichainBridgeHelper.sol/MultichainBridgeHelper.dbg.json +1 -1
  158. package/artifacts/contracts/utils/NameService.sol/NameService.dbg.json +1 -1
  159. package/artifacts/contracts/utils/OneTimePayments.sol/OneTimePayments.dbg.json +1 -1
  160. package/artifacts/contracts/utils/OneTimePaymentsV2.sol/OneTimePaymentsV2.dbg.json +1 -1
  161. package/artifacts/contracts/utils/ProtocolUpgrade.sol/OldMarketMaker.dbg.json +1 -1
  162. package/artifacts/contracts/utils/ProtocolUpgrade.sol/ProtocolUpgrade.dbg.json +1 -1
  163. package/artifacts/contracts/utils/ProtocolUpgradeFuse.sol/ProtocolUpgradeFuse.dbg.json +1 -1
  164. package/artifacts/contracts/utils/ProtocolUpgradeFuseRecover.sol/ProtocolUpgradeFuseRecover.dbg.json +1 -1
  165. package/artifacts/contracts/utils/ProtocolUpgradeRecover.sol/ProtocolUpgradeRecover.dbg.json +1 -1
  166. package/artifacts/contracts/utils/ProxyFactory1967.sol/ERC1967Proxy.dbg.json +1 -1
  167. package/artifacts/contracts/utils/ProxyFactory1967.sol/ProxyFactory1967.dbg.json +1 -1
  168. package/artifacts/contracts/utils/ReputationTestHelper.sol/ReputationTestHelper.dbg.json +1 -1
  169. package/contracts/invite/InvitesV2.sol +41 -4
  170. package/contracts/staking/FuseStakingV3.sol +4 -2
  171. package/dist/test-sdk/deploySuperGoodDollar.js +1 -1
  172. package/package.json +3 -2
  173. package/scripts/analytics/activeWalletsStats.ts +51 -38
  174. package/scripts/analytics/checkBridgeBalances.ts +442 -0
  175. package/test/invite/InvitesV2.test.ts +139 -271
  176. package/test/staking/FuseStaking.test.ts +23 -54
  177. package/types/contracts/invite/InvitesV2.ts +32 -0
  178. package/types/contracts/staking/FuseStakingV3.sol/FuseStakingV3.ts +7 -2
  179. package/types/factories/contracts/invite/InvitesV2__factory.ts +14 -1
  180. package/types/factories/contracts/staking/FuseStakingV3.sol/FuseStakingV3__factory.ts +6 -1
  181. package/contracts/utils/.DS_Store +0 -0
  182. package/yarn.lock +0 -23715
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/250e0e5f569484176bef8db7b83ccdd5.json"
3
+ "buildInfo": "../../../build-info/7d837badf1942dab0a721d9b668225ce.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/250e0e5f569484176bef8db7b83ccdd5.json"
3
+ "buildInfo": "../../../build-info/7d837badf1942dab0a721d9b668225ce.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/250e0e5f569484176bef8db7b83ccdd5.json"
3
+ "buildInfo": "../../../build-info/7d837badf1942dab0a721d9b668225ce.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/250e0e5f569484176bef8db7b83ccdd5.json"
3
+ "buildInfo": "../../../build-info/7d837badf1942dab0a721d9b668225ce.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/250e0e5f569484176bef8db7b83ccdd5.json"
3
+ "buildInfo": "../../../build-info/7d837badf1942dab0a721d9b668225ce.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/250e0e5f569484176bef8db7b83ccdd5.json"
3
+ "buildInfo": "../../../build-info/7d837badf1942dab0a721d9b668225ce.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/250e0e5f569484176bef8db7b83ccdd5.json"
3
+ "buildInfo": "../../../build-info/7d837badf1942dab0a721d9b668225ce.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/250e0e5f569484176bef8db7b83ccdd5.json"
3
+ "buildInfo": "../../../build-info/7d837badf1942dab0a721d9b668225ce.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/250e0e5f569484176bef8db7b83ccdd5.json"
3
+ "buildInfo": "../../../build-info/7d837badf1942dab0a721d9b668225ce.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/250e0e5f569484176bef8db7b83ccdd5.json"
3
+ "buildInfo": "../../../build-info/7d837badf1942dab0a721d9b668225ce.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/250e0e5f569484176bef8db7b83ccdd5.json"
3
+ "buildInfo": "../../../build-info/7d837badf1942dab0a721d9b668225ce.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/250e0e5f569484176bef8db7b83ccdd5.json"
3
+ "buildInfo": "../../../build-info/7d837badf1942dab0a721d9b668225ce.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/250e0e5f569484176bef8db7b83ccdd5.json"
3
+ "buildInfo": "../../../build-info/7d837badf1942dab0a721d9b668225ce.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/250e0e5f569484176bef8db7b83ccdd5.json"
3
+ "buildInfo": "../../../build-info/7d837badf1942dab0a721d9b668225ce.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/250e0e5f569484176bef8db7b83ccdd5.json"
3
+ "buildInfo": "../../../build-info/7d837badf1942dab0a721d9b668225ce.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/250e0e5f569484176bef8db7b83ccdd5.json"
3
+ "buildInfo": "../../../build-info/7d837badf1942dab0a721d9b668225ce.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/250e0e5f569484176bef8db7b83ccdd5.json"
3
+ "buildInfo": "../../../build-info/7d837badf1942dab0a721d9b668225ce.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/250e0e5f569484176bef8db7b83ccdd5.json"
3
+ "buildInfo": "../../../build-info/7d837badf1942dab0a721d9b668225ce.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/250e0e5f569484176bef8db7b83ccdd5.json"
3
+ "buildInfo": "../../../build-info/7d837badf1942dab0a721d9b668225ce.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/250e0e5f569484176bef8db7b83ccdd5.json"
3
+ "buildInfo": "../../../build-info/7d837badf1942dab0a721d9b668225ce.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/250e0e5f569484176bef8db7b83ccdd5.json"
3
+ "buildInfo": "../../../build-info/7d837badf1942dab0a721d9b668225ce.json"
4
4
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/250e0e5f569484176bef8db7b83ccdd5.json"
3
+ "buildInfo": "../../../build-info/7d837badf1942dab0a721d9b668225ce.json"
4
4
  }
@@ -57,6 +57,8 @@ contract InvitesV2 is DAOUpgradeableContract {
57
57
 
58
58
  bool public levelExpirationEnabled;
59
59
 
60
+ bytes32 private campaignCode;
61
+
60
62
  event InviteeJoined(address indexed inviter, address indexed invitee);
61
63
  event InviterBounty(
62
64
  address indexed inviter,
@@ -125,8 +127,10 @@ contract InvitesV2 is DAOUpgradeableContract {
125
127
  address inviter = codeToUser[_inviterCode];
126
128
  //allow user to set inviter if doesnt have one
127
129
  require(
128
- user.inviteCode == 0x0 ||
129
- (user.invitedBy == address(0) && inviter != address(0)),
130
+ !user.bountyPaid &&
131
+ (user.inviteCode == 0x0 ||
132
+ (user.invitedBy == address(0) && inviter != address(0)) ||
133
+ (campaignCode != 0x0 && campaignCode == _inviterCode)),
130
134
  "user already joined"
131
135
  );
132
136
  if (user.inviteCode == 0x0) {
@@ -144,7 +148,12 @@ contract InvitesV2 is DAOUpgradeableContract {
144
148
  user.bountyAtJoin = levels[users[inviter].level].bounty;
145
149
  }
146
150
 
147
- if (canCollectBountyFor(msg.sender)) {
151
+ /** support special campaign code without inviter */
152
+ if (_inviterCode == campaignCode && campaignCode != 0x0) {
153
+ stats.totalInvited += 1;
154
+ user.bountyAtJoin = levels[0].bounty;
155
+ _bountyForCampaign(msg.sender);
156
+ } else if (canCollectBountyFor(msg.sender)) {
148
157
  _bountyFor(msg.sender, true);
149
158
  }
150
159
  emit InviteeJoined(inviter, msg.sender);
@@ -287,6 +296,29 @@ contract InvitesV2 is DAOUpgradeableContract {
287
296
  return bountyToPay;
288
297
  }
289
298
 
299
+ function _bountyForCampaign(
300
+ address _invitee
301
+ ) internal returns (uint256 bounty) {
302
+ require(
303
+ !users[_invitee].bountyPaid &&
304
+ getIdentity().isWhitelisted(_invitee) &&
305
+ _whitelistedOnChainOrDefault(_invitee) == _chainId(),
306
+ "not eligble"
307
+ );
308
+
309
+ uint256 joinedAt = users[_invitee].joinedAt;
310
+ uint256 bountyToPay = users[_invitee].bountyAtJoin;
311
+
312
+ users[_invitee].bountyPaid = true;
313
+ stats.totalApprovedInvites += 1;
314
+ stats.totalBountiesPaid += bountyToPay;
315
+
316
+ goodDollar.transfer(_invitee, bountyToPay); //pay invitee half the bounty
317
+ emit InviterBounty(address(0), _invitee, bountyToPay, 0, false);
318
+
319
+ return bountyToPay;
320
+ }
321
+
290
322
  /**
291
323
  @dev collect bounties for invitees by msg.sender that are now whitelisted
292
324
  */
@@ -322,6 +354,10 @@ contract InvitesV2 is DAOUpgradeableContract {
322
354
  active = _active;
323
355
  }
324
356
 
357
+ function setCampaignCode(bytes32 _code) public ownerOrAvatar {
358
+ campaignCode = _code;
359
+ }
360
+
325
361
  function end() public ownerOrAvatar isActive {
326
362
  uint256 gdBalance = goodDollar.balanceOf(address(this));
327
363
  goodDollar.transfer(msg.sender, gdBalance);
@@ -346,8 +382,9 @@ contract InvitesV2 is DAOUpgradeableContract {
346
382
  * 2 uses uups upgradeable - not compatible upgrade for v1
347
383
  * 2.1 prevent multichain claims
348
384
  * 2.2 record bounty at join time
385
+ * 2.3 support campaignCode
349
386
  */
350
387
  function version() public pure returns (string memory) {
351
- return "2.2";
388
+ return "2.3";
352
389
  }
353
390
  }
@@ -103,7 +103,7 @@ contract FuseStakingV3 is Initializable, OwnableUpgradeable {
103
103
  validators.push(address(0xcb876A393F05a6677a8a029f1C6D7603B416C0A6));
104
104
  stakeBackRatio = 33333; //%33
105
105
  communityPoolRatio = 33333; //%33
106
- maxSlippageRatio = 3000; //3%
106
+ maxSlippageRatio = 600; //0.6%
107
107
  keeperFeeRatio = 30; //0.03%
108
108
  RATIO_BASE = 100000; //100%
109
109
  uniswap = Uniswap(
@@ -146,10 +146,12 @@ contract FuseStakingV3 is Initializable, OwnableUpgradeable {
146
146
 
147
147
  function updateSettings(
148
148
  uint256 _stakeBackRatio,
149
- uint256 _communityPoolRatio
149
+ uint256 _communityPoolRatio,
150
+ uint256 _maxSlippageRatio
150
151
  ) external onlyGuardian {
151
152
  communityPoolRatio = _communityPoolRatio;
152
153
  stakeBackRatio = _stakeBackRatio;
154
+ maxSlippageRatio = _maxSlippageRatio;
153
155
  }
154
156
 
155
157
  function stake() public payable returns (bool) {
@@ -31,7 +31,7 @@ const deploySuperGoodDollar = async (signer, sfContracts, tokenArgs = []) => {
31
31
  const initializeArgs = [
32
32
  "GoodDollar",
33
33
  "G$",
34
- 0,
34
+ 0, // cap
35
35
  FeeFormula.address,
36
36
  idProxy.address,
37
37
  hardhat_1.ethers.constants.AddressZero,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gooddollar/goodprotocol",
3
- "version": "2.0.25-beta.1",
3
+ "version": "2.0.25-beta.3",
4
4
  "description": "GoodDollar Protocol",
5
5
  "engines": {
6
6
  "node": ">=16.x"
@@ -106,6 +106,7 @@
106
106
  "chai": "*",
107
107
  "coveralls": "*",
108
108
  "dotenv": "*",
109
+ "ethereum-block-by-date": "^1.4.9",
109
110
  "ethereum-waffle": "3",
110
111
  "ethers": "^5.7.2",
111
112
  "ethers-eip712": "*",
@@ -132,7 +133,7 @@
132
133
  "ts-generator": "^0.1.1",
133
134
  "ts-node": "^10.9.1",
134
135
  "typechain": "^8.3.1",
135
- "typescript": "^5.2.2"
136
+ "typescript": "^5.3.3"
136
137
  },
137
138
  "packageManager": "yarn@3.6.0",
138
139
  "resolutions": {
@@ -8,31 +8,10 @@ import { ethers } from "hardhat";
8
8
  * can be used to create stats about active users and how much G$ isnt active
9
9
  */
10
10
  const main = async (chain = "fuse") => {
11
- let result = [];
12
- let balances = {};
13
- let curPage = 1;
14
- let maxResult;
15
11
  const explorer = chain === "fuse" ? "https://explorer.fuse.io" : "https://explorer.celo.org";
16
12
  const subgraph = chain === "fuse" ? "https://api.thegraph.com/subgraphs/name/gooddollar/gooddollarfuse" : "https://";
17
- do {
18
- const pages = range(curPage, curPage + 5, 1);
19
- curPage += 5;
20
- const ps = pages.map(p =>
21
- fetch(
22
- `https://explorer.fuse.io/api?module=token&action=getTokenHolders&contractaddress=0x495d133B938596C9984d462F007B676bDc57eCEC&page=${p}&offset=10000`
23
- )
24
- .then(_ => _.json())
25
- .then(_ => _.result)
26
- );
27
- const results = await Promise.all(ps);
28
- result = result.concat(...results);
29
- maxResult = maxBy(results, "length");
30
- console.log(maxResult.length, result.length);
31
- } while (maxResult.length === 10000);
32
- result.forEach(r => (balances[r.address.toLowerCase()] = { balance: r.value, lastSeen: 0 }));
33
- fs.writeFileSync("activeWalletsBalances.json", JSON.stringify(balances));
34
13
 
35
- // balances = JSON.parse(fs.readFileSync("activeWalletsBalances.json").toString());
14
+ const balances = await getFuseBalances();
36
15
 
37
16
  const EPOCH = 60 * 60 * 6;
38
17
  const pool = new PromisePool({ concurrency: 30 });
@@ -92,22 +71,21 @@ const main = async (chain = "fuse") => {
92
71
  // console.log({ lastUsed });
93
72
  };
94
73
 
74
+ /** Convert a 2D array into a CSV string
75
+ */
76
+ function arrayToCsv(data) {
77
+ return data
78
+ .map(
79
+ row =>
80
+ row
81
+ .map(String) // convert every value to String
82
+ .map(v => v.replaceAll('"', '""')) // escape double colons
83
+ .map(v => `"${v}"`) // quote it
84
+ .join(",") // comma-separated
85
+ )
86
+ .join("\r\n"); // rows starting on new lines
87
+ }
95
88
  const etl = async () => {
96
- /** Convert a 2D array into a CSV string
97
- */
98
- function arrayToCsv(data) {
99
- return data
100
- .map(
101
- row =>
102
- row
103
- .map(String) // convert every value to String
104
- .map(v => v.replaceAll('"', '""')) // escape double colons
105
- .map(v => `"${v}"`) // quote it
106
- .join(",") // comma-separated
107
- )
108
- .join("\r\n"); // rows starting on new lines
109
- }
110
-
111
89
  const balances = JSON.parse(fs.readFileSync("activeWalletsLastUsed.json").toString());
112
90
 
113
91
  let result = [];
@@ -135,6 +113,40 @@ const etl = async () => {
135
113
  fs.writeFileSync("activeWalletsLastUsed.csv", arrayToCsv(sortBy(result, _ => -Number(_[1]))));
136
114
  };
137
115
 
116
+ const getFuseBalances = async (refetch = true) => {
117
+ if (refetch === false) {
118
+ const balances = JSON.parse(fs.readFileSync("activeWalletsBalances.json").toString());
119
+ const rows = Object.entries(balances).filter(_ => Number(_[1].balance) > 10000000);
120
+ const sorted = sortBy(rows, _ => -Number(_[1].balance));
121
+ sorted.forEach(_ => (_[1].balance = Number(_[1].balance) / 100));
122
+ console.log(arrayToCsv(sorted.slice(0, 20).map(_ => [_[0], _[1].balance])));
123
+ return balances;
124
+ }
125
+ let result = [];
126
+ let balances = {};
127
+ let curPage = 1;
128
+ let maxResult;
129
+
130
+ do {
131
+ const pages = range(curPage, curPage + 5, 1);
132
+ curPage += 5;
133
+ const ps = pages.map(p =>
134
+ fetch(
135
+ `https://explorer.fuse.io/api?module=token&action=getTokenHolders&contractaddress=0x495d133B938596C9984d462F007B676bDc57eCEC&page=${p}&offset=10000`
136
+ )
137
+ .then(_ => _.json())
138
+ .then(_ => _.result)
139
+ );
140
+ const results = await Promise.all(ps);
141
+ result = result.concat(...results);
142
+ maxResult = maxBy(results, "length");
143
+ console.log(maxResult.length, result.length);
144
+ } while (maxResult.length === 10000);
145
+ result.forEach(r => (balances[r.address.toLowerCase()] = { balance: r.value, lastSeen: 0 }));
146
+ fs.writeFileSync("activeWalletsBalances.json", JSON.stringify(balances));
147
+ return balances;
148
+ };
149
+
138
150
  const fundsByLastSeen = async () => {
139
151
  const balances = JSON.parse(fs.readFileSync("activeWalletsLastUsed.json").toString());
140
152
  let total1Year = 0;
@@ -163,6 +175,7 @@ const fundsByLastSeen = async () => {
163
175
 
164
176
  console.log({ total, total1Year, total2Year });
165
177
  };
178
+ getFuseBalances(false).catch(e => console.log(e));
166
179
  // main().catch(e => console.log(e));
167
180
  // etl();
168
- fundsByLastSeen();
181
+ // fundsByLastSeen();