@gooddollar/goodprotocol 1.0.18 → 1.0.19-beta.2

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 (164) hide show
  1. package/artifacts/abis/GReputation.min.json +1 -1
  2. package/artifacts/abis/GoodAaveStaking.min.json +1 -1
  3. package/artifacts/abis/GoodAaveStakingV2.min.json +1 -1
  4. package/artifacts/abis/GoodCompoundStaking.min.json +1 -1
  5. package/artifacts/abis/GoodCompoundStakingTest.min.json +1 -1
  6. package/artifacts/abis/GoodCompoundStakingV2.min.json +1 -1
  7. package/artifacts/abis/UpgradableMock3.min.json +1 -0
  8. package/artifacts/abis/UpgradableMock4.min.json +1 -0
  9. package/artifacts/contracts/DAOStackInterfaces.sol/Avatar.dbg.json +1 -1
  10. package/artifacts/contracts/DAOStackInterfaces.sol/Controller.dbg.json +1 -1
  11. package/artifacts/contracts/DAOStackInterfaces.sol/GlobalConstraintInterface.dbg.json +1 -1
  12. package/artifacts/contracts/DAOStackInterfaces.sol/IntVoteInterface.dbg.json +1 -1
  13. package/artifacts/contracts/DAOStackInterfaces.sol/ReputationInterface.dbg.json +1 -1
  14. package/artifacts/contracts/DAOStackInterfaces.sol/SchemeRegistrar.dbg.json +1 -1
  15. package/artifacts/contracts/Interfaces.sol/AggregatorV3Interface.dbg.json +1 -1
  16. package/artifacts/contracts/Interfaces.sol/ERC20.dbg.json +1 -1
  17. package/artifacts/contracts/Interfaces.sol/IAaveIncentivesController.dbg.json +1 -1
  18. package/artifacts/contracts/Interfaces.sol/IAdminWallet.dbg.json +1 -1
  19. package/artifacts/contracts/Interfaces.sol/IDonationStaking.dbg.json +1 -1
  20. package/artifacts/contracts/Interfaces.sol/IERC2917.dbg.json +1 -1
  21. package/artifacts/contracts/Interfaces.sol/IFirstClaimPool.dbg.json +1 -1
  22. package/artifacts/contracts/Interfaces.sol/IGoodDollar.dbg.json +1 -1
  23. package/artifacts/contracts/Interfaces.sol/IGoodStaking.dbg.json +1 -1
  24. package/artifacts/contracts/Interfaces.sol/IHasRouter.dbg.json +1 -1
  25. package/artifacts/contracts/Interfaces.sol/IIdentity.dbg.json +1 -1
  26. package/artifacts/contracts/Interfaces.sol/ILendingPool.dbg.json +1 -1
  27. package/artifacts/contracts/Interfaces.sol/INameService.dbg.json +1 -1
  28. package/artifacts/contracts/Interfaces.sol/IUBIScheme.dbg.json +1 -1
  29. package/artifacts/contracts/Interfaces.sol/ProxyAdmin.dbg.json +1 -1
  30. package/artifacts/contracts/Interfaces.sol/Reserve.dbg.json +1 -1
  31. package/artifacts/contracts/Interfaces.sol/Staking.dbg.json +1 -1
  32. package/artifacts/contracts/Interfaces.sol/Uniswap.dbg.json +1 -1
  33. package/artifacts/contracts/Interfaces.sol/UniswapFactory.dbg.json +1 -1
  34. package/artifacts/contracts/Interfaces.sol/UniswapPair.dbg.json +1 -1
  35. package/artifacts/contracts/Interfaces.sol/cERC20.dbg.json +1 -1
  36. package/artifacts/contracts/governance/ClaimersDistribution.sol/ClaimersDistribution.dbg.json +1 -1
  37. package/artifacts/contracts/governance/ClaimersDistribution.sol/ClaimersDistribution.json +2 -2
  38. package/artifacts/contracts/governance/CompoundVotingMachine.sol/CompoundVotingMachine.dbg.json +1 -1
  39. package/artifacts/contracts/governance/GReputation.sol/GReputation.dbg.json +1 -1
  40. package/artifacts/contracts/governance/GReputation.sol/GReputation.json +15 -2
  41. package/artifacts/contracts/governance/GovernanceStaking.sol/GovernanceStaking.dbg.json +1 -1
  42. package/artifacts/contracts/governance/MultiBaseGovernanceShareField.sol/MultiBaseGovernanceShareField.dbg.json +1 -1
  43. package/artifacts/contracts/governance/Reputation.sol/Reputation.dbg.json +1 -1
  44. package/artifacts/contracts/governance/Reputation.sol/Reputation.json +2 -2
  45. package/artifacts/contracts/governance/StakersDistribution.sol/StakersDistribution.dbg.json +1 -1
  46. package/artifacts/contracts/governance/StakersDistribution.sol/StakersDistribution.json +2 -2
  47. package/artifacts/contracts/mocks/AaveMock.sol/AaveMock.dbg.json +1 -1
  48. package/artifacts/contracts/mocks/AaveUSDMockOracle.sol/AaveUSDMockOracle.dbg.json +1 -1
  49. package/artifacts/contracts/mocks/BatUSDMockOracle.sol/BatUSDMockOracle.dbg.json +1 -1
  50. package/artifacts/contracts/mocks/CompUsdMockOracle.sol/CompUSDMockOracle.dbg.json +1 -1
  51. package/artifacts/contracts/mocks/DAIMock.sol/DAIMock.dbg.json +1 -1
  52. package/artifacts/contracts/mocks/DaiEthPriceMockOracle.sol/DaiEthPriceMockOracle.dbg.json +1 -1
  53. package/artifacts/contracts/mocks/DecimalsMock.sol/DecimalsMock.dbg.json +1 -1
  54. package/artifacts/contracts/mocks/EthUSDMockOracle.sol/EthUSDMockOracle.dbg.json +1 -1
  55. package/artifacts/contracts/mocks/GasPriceMockOracle.sol/GasPriceMockOracle.dbg.json +1 -1
  56. package/artifacts/contracts/mocks/GoodCompoundStakingTest.sol/GoodCompoundStakingTest.dbg.json +1 -1
  57. package/artifacts/contracts/mocks/GoodCompoundStakingTest.sol/GoodCompoundStakingTest.json +6 -6
  58. package/artifacts/contracts/mocks/GoodFundManagerTest.sol/GoodFundManagerTest.dbg.json +1 -1
  59. package/artifacts/contracts/mocks/IncentiveControllerMock.sol/IncentiveControllerMock.dbg.json +1 -1
  60. package/artifacts/contracts/mocks/LendingPoolMock.sol/LendingPoolMock.dbg.json +1 -1
  61. package/artifacts/contracts/mocks/OverMintTester.sol/OverMintTester.dbg.json +1 -1
  62. package/artifacts/contracts/mocks/OverMintTesterRegularStake.sol/OverMintTesterRegularStake.dbg.json +1 -1
  63. package/artifacts/contracts/mocks/OverMintTesterRegularStake.sol/OverMintTesterRegularStake.json +2 -2
  64. package/artifacts/contracts/mocks/SixteenDecimalsTokenMock.sol/SixteenDecimalsTokenMock.dbg.json +1 -1
  65. package/artifacts/contracts/mocks/SwapHelperTest.sol/SwapHelperTest.dbg.json +1 -1
  66. package/artifacts/contracts/mocks/TwentyDecimalsTokenMock.sol/TwentyDecimalsTokenMock.dbg.json +1 -1
  67. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock.dbg.json +1 -1
  68. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock.json +2 -2
  69. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock2.dbg.json +1 -1
  70. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock2.json +2 -2
  71. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock3.dbg.json +4 -0
  72. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock3.json +172 -0
  73. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock4.dbg.json +4 -0
  74. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock4.json +172 -0
  75. package/artifacts/contracts/mocks/UsdcMock.sol/USDCMock.dbg.json +1 -1
  76. package/artifacts/contracts/mocks/cBATMock.sol/cBATMock.dbg.json +1 -1
  77. package/artifacts/contracts/mocks/cDAILowWorthMock.sol/cDAILowWorthMock.dbg.json +1 -1
  78. package/artifacts/contracts/mocks/cDAIMock.sol/cDAIMock.dbg.json +1 -1
  79. package/artifacts/contracts/mocks/cDAINonMintableMock.sol/cDAINonMintableMock.dbg.json +1 -1
  80. package/artifacts/contracts/mocks/cDecimalsMock.sol/cDecimalsMock.dbg.json +1 -1
  81. package/artifacts/contracts/mocks/cSDTMock.sol/cSDTMock.dbg.json +1 -1
  82. package/artifacts/contracts/mocks/cUSDCMock.sol/cUSDCMock.dbg.json +1 -1
  83. package/artifacts/contracts/reserve/ExchangeHelper.sol/ExchangeHelper.dbg.json +1 -1
  84. package/artifacts/contracts/reserve/GoodMarketMaker.sol/GoodMarketMaker.dbg.json +1 -1
  85. package/artifacts/contracts/reserve/GoodReserveCDai.sol/ContributionCalc.dbg.json +1 -1
  86. package/artifacts/contracts/reserve/GoodReserveCDai.sol/GoodReserveCDai.dbg.json +1 -1
  87. package/artifacts/contracts/staking/BaseShareField.sol/BaseShareField.dbg.json +1 -1
  88. package/artifacts/contracts/staking/BaseShareFieldV2.sol/BaseShareFieldV2.dbg.json +1 -1
  89. package/artifacts/contracts/staking/DonationsStaking.sol/DonationsStaking.dbg.json +1 -1
  90. package/artifacts/contracts/staking/DonationsStaking.sol/DonationsStaking.json +2 -2
  91. package/artifacts/contracts/staking/GoodFundManager.sol/GoodFundManager.dbg.json +1 -1
  92. package/artifacts/contracts/staking/SimpleStaking.sol/SimpleStaking.dbg.json +1 -1
  93. package/artifacts/contracts/staking/SimpleStakingV2.sol/SimpleStakingV2.dbg.json +1 -1
  94. package/artifacts/contracts/staking/UniswapV2SwapHelper.sol/UniswapV2SwapHelper.dbg.json +1 -1
  95. package/artifacts/contracts/staking/aave/AaveStakingFactory.sol/AaveStakingFactory.dbg.json +1 -1
  96. package/artifacts/contracts/staking/aave/AaveStakingFactory.sol/AaveStakingFactory.json +2 -2
  97. package/artifacts/contracts/staking/aave/GoodAaveStaking.sol/GoodAaveStaking.dbg.json +1 -1
  98. package/artifacts/contracts/staking/aave/GoodAaveStaking.sol/GoodAaveStaking.json +3 -3
  99. package/artifacts/contracts/staking/aave/GoodAaveStakingV2.sol/GoodAaveStakingV2.dbg.json +1 -1
  100. package/artifacts/contracts/staking/aave/GoodAaveStakingV2.sol/GoodAaveStakingV2.json +3 -3
  101. package/artifacts/contracts/staking/compound/CompoundStakingFactory.sol/CompoundStakingFactory.dbg.json +1 -1
  102. package/artifacts/contracts/staking/compound/CompoundStakingFactory.sol/CompoundStakingFactory.json +2 -2
  103. package/artifacts/contracts/staking/compound/GoodCompoundStaking.sol/GoodCompoundStaking.dbg.json +1 -1
  104. package/artifacts/contracts/staking/compound/GoodCompoundStaking.sol/GoodCompoundStaking.json +4 -4
  105. package/artifacts/contracts/staking/compound/GoodCompoundStakingV2.sol/GoodCompoundStakingV2.dbg.json +1 -1
  106. package/artifacts/contracts/staking/compound/GoodCompoundStakingV2.sol/GoodCompoundStakingV2.json +4 -4
  107. package/artifacts/contracts/ubi/UBIScheme.sol/UBIScheme.dbg.json +1 -1
  108. package/artifacts/contracts/ubi/UBIScheme.sol/UBIScheme.json +2 -2
  109. package/artifacts/contracts/utils/BancorFormula.sol/BancorFormula.dbg.json +1 -1
  110. package/artifacts/contracts/utils/BulkProof.sol/BulkProof.dbg.json +1 -1
  111. package/artifacts/contracts/utils/BulkProof.sol/BulkProof.json +2 -2
  112. package/artifacts/contracts/utils/DAOContract.sol/DAOContract.dbg.json +1 -1
  113. package/artifacts/contracts/utils/DAOUpgradeableContract.sol/DAOUpgradeableContract.dbg.json +1 -1
  114. package/artifacts/contracts/utils/DSMath.sol/DSMath.dbg.json +1 -1
  115. package/artifacts/contracts/utils/DataTypes.sol/DataTypes.dbg.json +1 -1
  116. package/artifacts/contracts/utils/MultiCall.sol/Multicall.dbg.json +1 -1
  117. package/artifacts/contracts/utils/NameService.sol/NameService.dbg.json +1 -1
  118. package/artifacts/contracts/utils/ProtocolUpgrade.sol/OldMarketMaker.dbg.json +1 -1
  119. package/artifacts/contracts/utils/ProtocolUpgrade.sol/ProtocolUpgrade.dbg.json +1 -1
  120. package/artifacts/contracts/utils/ProtocolUpgradeFuse.sol/ProtocolUpgradeFuse.dbg.json +1 -1
  121. package/artifacts/contracts/utils/ProtocolUpgradeFuseRecover.sol/ProtocolUpgradeFuseRecover.dbg.json +1 -1
  122. package/artifacts/contracts/utils/ProtocolUpgradeRecover.sol/ProtocolUpgradeRecover.dbg.json +1 -1
  123. package/artifacts/contracts/utils/ProxyFactory1967.sol/ERC1967Proxy.dbg.json +1 -1
  124. package/artifacts/contracts/utils/ProxyFactory1967.sol/ProxyFactory1967.dbg.json +1 -1
  125. package/artifacts/contracts/utils/ReputationTestHelper.sol/ReputationTestHelper.dbg.json +1 -1
  126. package/artifacts/contracts/utils/ReputationTestHelper.sol/ReputationTestHelper.json +2 -2
  127. package/contracts/governance/GReputation.sol +8 -0
  128. package/contracts/governance/Reputation.sol +5 -3
  129. package/contracts/mocks/UpgradableMocks.sol +18 -0
  130. package/contracts/staking/SimpleStaking.sol +2 -1
  131. package/contracts/staking/SimpleStakingV2.sol +2 -1
  132. package/hardhat.config.ts +63 -8
  133. package/package.json +7 -5
  134. package/releases/deployment.json +11 -0
  135. package/scripts/multichain-deploy/basicdao-deploy.ts +256 -0
  136. package/scripts/multichain-deploy/helpers.ts +96 -0
  137. package/test/governance/ClaimersDistribution.test.ts +6 -6
  138. package/test/governance/CompoundVotingMachine.daoscheme.ts +14 -1
  139. package/test/governance/CompoundVotingMachine.guardian.test.ts +11 -1
  140. package/test/governance/GReputation.test.ts +32 -1
  141. package/test/governance/StakersDistribution.test.ts +62 -1
  142. package/test/helpers.ts +15 -0
  143. package/test/reserve/GoodMarketMaker.test.ts +11 -0
  144. package/test/reserve/GoodReserveCDai.gdx.test.ts +23 -8
  145. package/test/reserve/GoodReserveCDai.test.ts +37 -2
  146. package/test/staking/CompoundStakingFactory.test.ts +31 -0
  147. package/test/staking/DonationsStaking.test.ts +99 -2
  148. package/test/staking/GoodAaveStakingFactory.test.ts +36 -1
  149. package/test/staking/SimpleDAIStaking.test.ts +52 -2
  150. package/test/staking/StakingRewards.test.ts +38 -0
  151. package/test/staking/UsdcAaveStaking.test.ts +45 -19
  152. package/test/ubi/UBIScheme.test.ts +68 -0
  153. package/test/utils/DAOUpgradeableContract.test.ts +47 -0
  154. package/test/utils/NameService.test.ts +50 -55
  155. package/test/utils/ProxyFactory.test.ts +17 -0
  156. package/yarn.lock +607 -119
  157. package/artifacts/abis/FuseFaucet.min.json +0 -1
  158. package/artifacts/abis/InvitesV1.min.json +0 -1
  159. package/artifacts/contracts/unaudited-foundation/FuseFaucet.sol/FuseFaucet.dbg.json +0 -4
  160. package/artifacts/contracts/unaudited-foundation/FuseFaucet.sol/FuseFaucet.json +0 -200
  161. package/artifacts/contracts/unaudited-foundation/InvitesV1.sol/InvitesV1.dbg.json +0 -4
  162. package/artifacts/contracts/unaudited-foundation/InvitesV1.sol/InvitesV1.json +0 -486
  163. package/contracts/unaudited-foundation/FuseFaucet.sol +0 -120
  164. package/contracts/unaudited-foundation/InvitesV1.sol +0 -304
@@ -1,486 +0,0 @@
1
- {
2
- "_format": "hh-sol-artifact-1",
3
- "contractName": "InvitesV1",
4
- "sourceName": "contracts/unaudited-foundation/InvitesV1.sol",
5
- "abi": [
6
- {
7
- "anonymous": false,
8
- "inputs": [
9
- {
10
- "indexed": true,
11
- "internalType": "address",
12
- "name": "inviter",
13
- "type": "address"
14
- },
15
- {
16
- "indexed": true,
17
- "internalType": "address",
18
- "name": "invitee",
19
- "type": "address"
20
- }
21
- ],
22
- "name": "InviteeJoined",
23
- "type": "event"
24
- },
25
- {
26
- "anonymous": false,
27
- "inputs": [
28
- {
29
- "indexed": true,
30
- "internalType": "address",
31
- "name": "inviter",
32
- "type": "address"
33
- },
34
- {
35
- "indexed": true,
36
- "internalType": "address",
37
- "name": "invitee",
38
- "type": "address"
39
- },
40
- {
41
- "indexed": false,
42
- "internalType": "uint256",
43
- "name": "bountyPaid",
44
- "type": "uint256"
45
- },
46
- {
47
- "indexed": false,
48
- "internalType": "uint256",
49
- "name": "inviterLevel",
50
- "type": "uint256"
51
- },
52
- {
53
- "indexed": false,
54
- "internalType": "bool",
55
- "name": "earnedLevel",
56
- "type": "bool"
57
- }
58
- ],
59
- "name": "InviterBounty",
60
- "type": "event"
61
- },
62
- {
63
- "inputs": [],
64
- "name": "active",
65
- "outputs": [
66
- {
67
- "internalType": "bool",
68
- "name": "",
69
- "type": "bool"
70
- }
71
- ],
72
- "stateMutability": "view",
73
- "type": "function"
74
- },
75
- {
76
- "inputs": [],
77
- "name": "avatar",
78
- "outputs": [
79
- {
80
- "internalType": "address payable",
81
- "name": "",
82
- "type": "address"
83
- }
84
- ],
85
- "stateMutability": "view",
86
- "type": "function"
87
- },
88
- {
89
- "inputs": [
90
- {
91
- "internalType": "address",
92
- "name": "_invitee",
93
- "type": "address"
94
- }
95
- ],
96
- "name": "bountyFor",
97
- "outputs": [],
98
- "stateMutability": "nonpayable",
99
- "type": "function"
100
- },
101
- {
102
- "inputs": [
103
- {
104
- "internalType": "address",
105
- "name": "_invitee",
106
- "type": "address"
107
- }
108
- ],
109
- "name": "canCollectBountyFor",
110
- "outputs": [
111
- {
112
- "internalType": "bool",
113
- "name": "",
114
- "type": "bool"
115
- }
116
- ],
117
- "stateMutability": "view",
118
- "type": "function"
119
- },
120
- {
121
- "inputs": [
122
- {
123
- "internalType": "bytes32",
124
- "name": "",
125
- "type": "bytes32"
126
- }
127
- ],
128
- "name": "codeToUser",
129
- "outputs": [
130
- {
131
- "internalType": "address",
132
- "name": "",
133
- "type": "address"
134
- }
135
- ],
136
- "stateMutability": "view",
137
- "type": "function"
138
- },
139
- {
140
- "inputs": [],
141
- "name": "collectBounties",
142
- "outputs": [],
143
- "stateMutability": "nonpayable",
144
- "type": "function"
145
- },
146
- {
147
- "inputs": [],
148
- "name": "end",
149
- "outputs": [],
150
- "stateMutability": "nonpayable",
151
- "type": "function"
152
- },
153
- {
154
- "inputs": [
155
- {
156
- "internalType": "address",
157
- "name": "_inviter",
158
- "type": "address"
159
- }
160
- ],
161
- "name": "getInvitees",
162
- "outputs": [
163
- {
164
- "internalType": "address[]",
165
- "name": "",
166
- "type": "address[]"
167
- }
168
- ],
169
- "stateMutability": "view",
170
- "type": "function"
171
- },
172
- {
173
- "inputs": [
174
- {
175
- "internalType": "address",
176
- "name": "_inviter",
177
- "type": "address"
178
- }
179
- ],
180
- "name": "getPendingBounties",
181
- "outputs": [
182
- {
183
- "internalType": "uint256",
184
- "name": "",
185
- "type": "uint256"
186
- }
187
- ],
188
- "stateMutability": "view",
189
- "type": "function"
190
- },
191
- {
192
- "inputs": [
193
- {
194
- "internalType": "address",
195
- "name": "_inviter",
196
- "type": "address"
197
- }
198
- ],
199
- "name": "getPendingInvitees",
200
- "outputs": [
201
- {
202
- "internalType": "address[]",
203
- "name": "",
204
- "type": "address[]"
205
- }
206
- ],
207
- "stateMutability": "view",
208
- "type": "function"
209
- },
210
- {
211
- "inputs": [],
212
- "name": "goodDollar",
213
- "outputs": [
214
- {
215
- "internalType": "contract cERC20",
216
- "name": "",
217
- "type": "address"
218
- }
219
- ],
220
- "stateMutability": "view",
221
- "type": "function"
222
- },
223
- {
224
- "inputs": [],
225
- "name": "identity",
226
- "outputs": [
227
- {
228
- "internalType": "contract IIdentity",
229
- "name": "",
230
- "type": "address"
231
- }
232
- ],
233
- "stateMutability": "view",
234
- "type": "function"
235
- },
236
- {
237
- "inputs": [
238
- {
239
- "internalType": "address payable",
240
- "name": "_avatar",
241
- "type": "address"
242
- },
243
- {
244
- "internalType": "address",
245
- "name": "_identity",
246
- "type": "address"
247
- },
248
- {
249
- "internalType": "address",
250
- "name": "_gd",
251
- "type": "address"
252
- },
253
- {
254
- "internalType": "uint256",
255
- "name": "level0Bounty",
256
- "type": "uint256"
257
- }
258
- ],
259
- "name": "initialize",
260
- "outputs": [],
261
- "stateMutability": "nonpayable",
262
- "type": "function"
263
- },
264
- {
265
- "inputs": [
266
- {
267
- "internalType": "bytes32",
268
- "name": "_myCode",
269
- "type": "bytes32"
270
- },
271
- {
272
- "internalType": "bytes32",
273
- "name": "_inviterCode",
274
- "type": "bytes32"
275
- }
276
- ],
277
- "name": "join",
278
- "outputs": [],
279
- "stateMutability": "nonpayable",
280
- "type": "function"
281
- },
282
- {
283
- "inputs": [],
284
- "name": "levelExpirationEnabled",
285
- "outputs": [
286
- {
287
- "internalType": "bool",
288
- "name": "",
289
- "type": "bool"
290
- }
291
- ],
292
- "stateMutability": "view",
293
- "type": "function"
294
- },
295
- {
296
- "inputs": [
297
- {
298
- "internalType": "uint256",
299
- "name": "",
300
- "type": "uint256"
301
- }
302
- ],
303
- "name": "levels",
304
- "outputs": [
305
- {
306
- "internalType": "uint256",
307
- "name": "toNext",
308
- "type": "uint256"
309
- },
310
- {
311
- "internalType": "uint256",
312
- "name": "bounty",
313
- "type": "uint256"
314
- },
315
- {
316
- "internalType": "uint256",
317
- "name": "daysToComplete",
318
- "type": "uint256"
319
- }
320
- ],
321
- "stateMutability": "view",
322
- "type": "function"
323
- },
324
- {
325
- "inputs": [],
326
- "name": "owner",
327
- "outputs": [
328
- {
329
- "internalType": "address",
330
- "name": "",
331
- "type": "address"
332
- }
333
- ],
334
- "stateMutability": "view",
335
- "type": "function"
336
- },
337
- {
338
- "inputs": [
339
- {
340
- "internalType": "bool",
341
- "name": "_active",
342
- "type": "bool"
343
- }
344
- ],
345
- "name": "setActive",
346
- "outputs": [],
347
- "stateMutability": "nonpayable",
348
- "type": "function"
349
- },
350
- {
351
- "inputs": [
352
- {
353
- "internalType": "uint256",
354
- "name": "_lvl",
355
- "type": "uint256"
356
- },
357
- {
358
- "internalType": "uint256",
359
- "name": "_toNext",
360
- "type": "uint256"
361
- },
362
- {
363
- "internalType": "uint256",
364
- "name": "_bounty",
365
- "type": "uint256"
366
- },
367
- {
368
- "internalType": "uint256",
369
- "name": "_daysToComplete",
370
- "type": "uint256"
371
- }
372
- ],
373
- "name": "setLevel",
374
- "outputs": [],
375
- "stateMutability": "nonpayable",
376
- "type": "function"
377
- },
378
- {
379
- "inputs": [
380
- {
381
- "internalType": "bool",
382
- "name": "_isEnabled",
383
- "type": "bool"
384
- }
385
- ],
386
- "name": "setLevelExpirationEnabled",
387
- "outputs": [],
388
- "stateMutability": "nonpayable",
389
- "type": "function"
390
- },
391
- {
392
- "inputs": [],
393
- "name": "stats",
394
- "outputs": [
395
- {
396
- "internalType": "uint256",
397
- "name": "totalApprovedInvites",
398
- "type": "uint256"
399
- },
400
- {
401
- "internalType": "uint256",
402
- "name": "totalBountiesPaid",
403
- "type": "uint256"
404
- },
405
- {
406
- "internalType": "uint256",
407
- "name": "totalInvited",
408
- "type": "uint256"
409
- }
410
- ],
411
- "stateMutability": "view",
412
- "type": "function"
413
- },
414
- {
415
- "inputs": [
416
- {
417
- "internalType": "address",
418
- "name": "",
419
- "type": "address"
420
- }
421
- ],
422
- "name": "users",
423
- "outputs": [
424
- {
425
- "internalType": "address",
426
- "name": "invitedBy",
427
- "type": "address"
428
- },
429
- {
430
- "internalType": "bytes32",
431
- "name": "inviteCode",
432
- "type": "bytes32"
433
- },
434
- {
435
- "internalType": "bool",
436
- "name": "bountyPaid",
437
- "type": "bool"
438
- },
439
- {
440
- "internalType": "uint256",
441
- "name": "level",
442
- "type": "uint256"
443
- },
444
- {
445
- "internalType": "uint256",
446
- "name": "levelStarted",
447
- "type": "uint256"
448
- },
449
- {
450
- "internalType": "uint256",
451
- "name": "totalApprovedInvites",
452
- "type": "uint256"
453
- },
454
- {
455
- "internalType": "uint256",
456
- "name": "totalEarned",
457
- "type": "uint256"
458
- },
459
- {
460
- "internalType": "uint256",
461
- "name": "joinedAt",
462
- "type": "uint256"
463
- }
464
- ],
465
- "stateMutability": "view",
466
- "type": "function"
467
- },
468
- {
469
- "inputs": [],
470
- "name": "version",
471
- "outputs": [
472
- {
473
- "internalType": "string",
474
- "name": "",
475
- "type": "string"
476
- }
477
- ],
478
- "stateMutability": "pure",
479
- "type": "function"
480
- }
481
- ],
482
- "bytecode": "0x608060405234801561001057600080fd5b506118c5806100206000396000f3fe608060405234801561001057600080fd5b506004361061011d5760003560e01c806302fb0c5e14610122578063119e5bf31461014b57806321132aad1461016b5780632c159a1a1461018057806341155d5e1461019357806354fd4d50146101b45780635aef7de6146101db5780635b419a65146101ee5780636d619ef8146102015780638da5cb5b14610214578063a1df6fd314610227578063a87430ba14610234578063acec338a146102e0578063af6346b0146102f3578063b2596a67146102fb578063b6567cd514610345578063b9fb2d1814610358578063ba6f56801461036b578063cf756fdf14610394578063d80528ae146103a7578063e951a3aa146103b9578063e9881a5e146103d9578063efbe1c1c146103ec575b600080fd5b60075461013690600160a01b900460ff1681565b60405190151581526020015b60405180910390f35b60075461015e906001600160a01b031681565b6040516101429190611548565b61017e61017936600461156a565b6103f4565b005b60065461015e906001600160a01b031681565b6101a66101a136600461159c565b61044f565b604051908152602001610142565b60408051808201825260058152640312e342e360dc1b6020820152905161014291906115b9565b60035461015e906001600160a01b031681565b61017e6101fc36600461160e565b61051c565b61013661020f36600461159c565b61075c565b60055461015e906001600160a01b031681565b6010546101369060ff1681565b61029561024236600461159c565b6002602081905260009182526040909120805460018201549282015460058301546006840154600785015460088601546009909601546001600160a01b03909516969560ff909416949293919290919088565b604080516001600160a01b0390991689526020890197909752941515958701959095526060860192909252608085015260a084015260c083019190915260e082015261010001610142565b61017e6102ee36600461156a565b610928565b61017e610985565b61032a610309366004611630565b60046020526000908152604090208054600182015460029092015490919083565b60408051938452602084019290925290820152606001610142565b61017e61035336600461159c565b610b1e565b61017e610366366004611649565b610b95565b61015e610379366004611630565b6001602052600090815260409020546001600160a01b031681565b61017e6103a236600461167b565b610bf4565b600854600954600a5461032a92919083565b6103cc6103c736600461159c565b610d38565b60405161014291906116cc565b6103cc6103e736600461159c565b610f23565b61017e610f9c565b6005546001600160a01b031633148061041757506003546001600160a01b031633145b61043c5760405162461bcd60e51b815260040161043390611719565b60405180910390fd5b6010805460ff1916911515919091179055565b6001600160a01b0381166000908152600260209081526040808320600401805482518185028101850190935280835284938301828280156104b957602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161049b575b505050505090506000805b8251811015610514576104ef8382815181106104e2576104e2611765565b602002602001015161075c565b1561050257816104fe81611791565b9250505b8061050c81611791565b9150506104c4565b509392505050565b600754600160a01b900460ff1661053257600080fd5b3360009081526002602090815260408083208584526001909252909120546001600160a01b0316158061057b57506000838152600160205260409020546001600160a01b031633145b6105c45760405162461bcd60e51b815260206004820152601a602482015279696e7669746520636f646520616c726561647920696e2075736560301b6044820152606401610433565b600082815260016020819052604090912054908201546001600160a01b0390911690158061060d575081546001600160a01b031615801561060d57506001600160a01b03811615155b61064f5760405162461bcd60e51b81526020600482015260136024820152721d5cd95c88185b1c9958591e481a9bda5b9959606a1b6044820152606401610433565b600182015461068d5760018083018590554260068401819055600984015560008581526020919091526040902080546001600160a01b031916331790555b6001600160a01b038116156107205781546001600160a01b0382166001600160a01b031991821681178455600090815260026020908152604082206003810180546001818101835591855283852001805486163390811790915560048301805480840182559086529385209093018054909516909217909355600a8054919290916107199084906117ac565b9091555050505b60405133906001600160a01b038316907fd8c638d8979e2ba5dba1f0d66246ee4b1c54b838f0e0a2b601365345eb23b05190600090a350505050565b6001600160a01b03808216600090815260026020818152604080842080549095168452808420600581015485526004909252832090910154601054929392849060ff16151560011480156107b05750600082115b80156107e257506107df620151806107d98560060154876009015461114790919063ffffffff16565b9061115a565b82105b600285015490915060ff16158015610803575083546001600160a01b031615155b801561088a5750600654604051633af32abf60e01b81526001600160a01b0390911690633af32abf9061083a908990600401611548565b60206040518083038186803b15801561085257600080fd5b505afa158015610866573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061088a91906117c4565b801561091457506006548454604051633af32abf60e01b81526001600160a01b0392831692633af32abf926108c492911690600401611548565b60206040518083038186803b1580156108dc57600080fd5b505afa1580156108f0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061091491906117c4565b801561091e575080155b9695505050505050565b6005546001600160a01b031633148061094b57506003546001600160a01b031633145b6109675760405162461bcd60e51b815260040161043390611719565b60078054911515600160a01b0260ff60a01b19909216919091179055565b600754600160a01b900460ff1661099b57600080fd5b336000908152600260205260408120905b6004820154811015610b1a57620530205a10156109c7575050565b60008260040182815481106109de576109de611765565b6000918252602090912001546001600160a01b031690506109fe8161075c565b15610a0c57610a0c81611166565b6001600160a01b0381166000908152600260208190526040909120015460ff1615610b075760048301548290610a44906001906117e1565b1115610ad157600483018054610a5c906001906117e1565b81548110610a6c57610a6c611765565b6000918252602090912001546004840180546001600160a01b039092169184908110610a9a57610a9a611765565b600091825260209091200180546001600160a01b0319166001600160a01b039290921691909117905581610acd816117f8565b9250505b82600401805480610ae457610ae461180f565b600082815260209020810160001990810180546001600160a01b03191690550190555b5080610b1281611791565b9150506109ac565b5050565b600754600160a01b900460ff16610b3457600080fd5b610b3d8161075c565b610b895760405162461bcd60e51b815260206004820181905260248201527f75736572206e6f7420656c6c6967626c6520666f7220626f756e7479207965746044820152606401610433565b610b9281611166565b50565b6005546001600160a01b0316331480610bb857506003546001600160a01b031633145b610bd45760405162461bcd60e51b815260040161043390611719565b600093845260046020526040909320918255600282019290925560010155565b600054610100900460ff1680610c0d575060005460ff16155b610c705760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610433565b600054610100900460ff16158015610c92576000805461ffff19166101011790555b60058054336001600160a01b0319918216179091556006805482166001600160a01b0387811691909117909155600780546000805260046020527f17ef568e3e12ab5b9c7254a8d58478811de00f9e6eb34345acd53bf8fd09d3ed869055600160a01b6001600160a81b031990911687841617179055600380549092169087161790556010805460ff191690558015610d31576000805461ff00191690555b5050505050565b6001600160a01b0381166000908152600260209081526040808320600401805482518185028101850190935280835260609493830182828015610da457602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610d86575b5050505050905060008060005b8351811015610e1e5760026000858381518110610dd057610dd0611765565b6020908102919091018101516001600160a01b031682528101919091526040016000206002015460ff16610e0c5781610e0881611791565b9250505b80610e1681611791565b915050610db1565b506000816001600160401b03811115610e3957610e39611825565b604051908082528060200260200182016040528015610e62578160200160208202803683370190505b50905060005b8451811015610f195760026000868381518110610e8757610e87611765565b6020908102919091018101516001600160a01b031682528101919091526040016000206002015460ff16610f0757848181518110610ec757610ec7611765565b6020026020010151828581518110610ee157610ee1611765565b6001600160a01b039092166020928302919091019091015283610f0381611791565b9450505b80610f1181611791565b915050610e68565b5095945050505050565b6001600160a01b038116600090815260026020908152604091829020600301805483518184028101840190945280845260609392830182828015610f9057602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610f72575b50505050509050919050565b6005546001600160a01b0316331480610fbf57506003546001600160a01b031633145b610fdb5760405162461bcd60e51b815260040161043390611719565b600754600160a01b900460ff16610ff157600080fd5b6007546040516370a0823160e01b81526000916001600160a01b0316906370a0823190611022903090600401611548565b60206040518083038186803b15801561103a57600080fd5b505afa15801561104e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611072919061183b565b60075460035460405163a9059cbb60e01b81529293506001600160a01b039182169263a9059cbb926110aa9216908590600401611854565b602060405180830381600087803b1580156110c457600080fd5b505af11580156110d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110fc91906117c4565b506003546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015611136573d6000803e3d6000fd5b50506007805460ff60a01b19169055565b600061115382846117e1565b9392505050565b6000611153828461186d565b6001600160a01b038181166000908152600260208181526040808420805460099091015495168085528185206005908101548652600484528286208351608081018552815481526001820154958101959095529485015484840152825160a08101938490529196959492606085019291600385019182845b8154815260200190600101908083116111de575050505050815250509050600080826040015111801561122b57506001600160a01b03841660009081526002602052604090206006015483115b801561126957506001600160a01b0384166000908152600260205260409020600601546112629062015180906107d9908690611147565b8260400151105b6001600160a01b038087166000908152600260208190526040808320909101805460ff1916600190811790915592881682528120600701805493945091926112b29084906117ac565b90915550506020808301516001600160a01b03861660009081526002909252604082206008018054919290916112e99084906117ac565b909155505060088054600191906000906113049084906117ac565b90915550506020820151600980546000906113209084906117ac565b9091555050815160009015801590611354575082516001600160a01b03861660009081526002602052604090206007015410155b801561135e575081155b156113b7576001600160a01b038516600090815260026020526040812060050180546001929061138f9084906117ac565b9091555050506001600160a01b03841660009081526002602052604090204260069091015560015b600754602084015160405163a9059cbb60e01b81526001600160a01b039092169163a9059cbb916113ed91899190600401611854565b602060405180830381600087803b15801561140757600080fd5b505af115801561141b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061143f91906117c4565b5060075460208401516001600160a01b039091169063a9059cbb90889061146790600261115a565b6040518363ffffffff1660e01b8152600401611484929190611854565b602060405180830381600087803b15801561149e57600080fd5b505af11580156114b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114d691906117c4565b506020838101516001600160a01b038781166000818152600285526040908190206005015481519485529484019490945284151583850152925190891692917f6081787cd1bd02ab1576c52f03e8710d792d460e7881c3155d77d23893f3768b919081900360600190a3505050505050565b6001600160a01b0391909116815260200190565b8015158114610b9257600080fd5b60006020828403121561157c57600080fd5b81356111538161155c565b6001600160a01b0381168114610b9257600080fd5b6000602082840312156115ae57600080fd5b813561115381611587565b600060208083528351808285015260005b818110156115e6578581018301518582016040015282016115ca565b818111156115f8576000604083870101525b50601f01601f1916929092016040019392505050565b6000806040838503121561162157600080fd5b50508035926020909101359150565b60006020828403121561164257600080fd5b5035919050565b6000806000806080858703121561165f57600080fd5b5050823594602084013594506040840135936060013592509050565b6000806000806080858703121561169157600080fd5b843561169c81611587565b935060208501356116ac81611587565b925060408501356116bc81611587565b9396929550929360600135925050565b6020808252825182820181905260009190848201906040850190845b8181101561170d5783516001600160a01b0316835292840192918401916001016116e8565b50909695505050505050565b6020808252602c908201527f4f6e6c79206f776e6572206f72206176617461722063616e20706572666f726d60408201526b103a3434b99030b1ba34b7b760a11b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006000198214156117a5576117a561177b565b5060010190565b600082198211156117bf576117bf61177b565b500190565b6000602082840312156117d657600080fd5b81516111538161155c565b6000828210156117f3576117f361177b565b500390565b6000816118075761180761177b565b506000190190565b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b60006020828403121561184d57600080fd5b5051919050565b6001600160a01b03929092168252602082015260400190565b60008261188a57634e487b7160e01b600052601260045260246000fd5b50049056fea26469706673582212207945720f583c6fde24d584c738f4379e4f1c998b9f67c4c5e4a61d09a8b8624864736f6c63430008080033",
483
- "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061011d5760003560e01c806302fb0c5e14610122578063119e5bf31461014b57806321132aad1461016b5780632c159a1a1461018057806341155d5e1461019357806354fd4d50146101b45780635aef7de6146101db5780635b419a65146101ee5780636d619ef8146102015780638da5cb5b14610214578063a1df6fd314610227578063a87430ba14610234578063acec338a146102e0578063af6346b0146102f3578063b2596a67146102fb578063b6567cd514610345578063b9fb2d1814610358578063ba6f56801461036b578063cf756fdf14610394578063d80528ae146103a7578063e951a3aa146103b9578063e9881a5e146103d9578063efbe1c1c146103ec575b600080fd5b60075461013690600160a01b900460ff1681565b60405190151581526020015b60405180910390f35b60075461015e906001600160a01b031681565b6040516101429190611548565b61017e61017936600461156a565b6103f4565b005b60065461015e906001600160a01b031681565b6101a66101a136600461159c565b61044f565b604051908152602001610142565b60408051808201825260058152640312e342e360dc1b6020820152905161014291906115b9565b60035461015e906001600160a01b031681565b61017e6101fc36600461160e565b61051c565b61013661020f36600461159c565b61075c565b60055461015e906001600160a01b031681565b6010546101369060ff1681565b61029561024236600461159c565b6002602081905260009182526040909120805460018201549282015460058301546006840154600785015460088601546009909601546001600160a01b03909516969560ff909416949293919290919088565b604080516001600160a01b0390991689526020890197909752941515958701959095526060860192909252608085015260a084015260c083019190915260e082015261010001610142565b61017e6102ee36600461156a565b610928565b61017e610985565b61032a610309366004611630565b60046020526000908152604090208054600182015460029092015490919083565b60408051938452602084019290925290820152606001610142565b61017e61035336600461159c565b610b1e565b61017e610366366004611649565b610b95565b61015e610379366004611630565b6001602052600090815260409020546001600160a01b031681565b61017e6103a236600461167b565b610bf4565b600854600954600a5461032a92919083565b6103cc6103c736600461159c565b610d38565b60405161014291906116cc565b6103cc6103e736600461159c565b610f23565b61017e610f9c565b6005546001600160a01b031633148061041757506003546001600160a01b031633145b61043c5760405162461bcd60e51b815260040161043390611719565b60405180910390fd5b6010805460ff1916911515919091179055565b6001600160a01b0381166000908152600260209081526040808320600401805482518185028101850190935280835284938301828280156104b957602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161049b575b505050505090506000805b8251811015610514576104ef8382815181106104e2576104e2611765565b602002602001015161075c565b1561050257816104fe81611791565b9250505b8061050c81611791565b9150506104c4565b509392505050565b600754600160a01b900460ff1661053257600080fd5b3360009081526002602090815260408083208584526001909252909120546001600160a01b0316158061057b57506000838152600160205260409020546001600160a01b031633145b6105c45760405162461bcd60e51b815260206004820152601a602482015279696e7669746520636f646520616c726561647920696e2075736560301b6044820152606401610433565b600082815260016020819052604090912054908201546001600160a01b0390911690158061060d575081546001600160a01b031615801561060d57506001600160a01b03811615155b61064f5760405162461bcd60e51b81526020600482015260136024820152721d5cd95c88185b1c9958591e481a9bda5b9959606a1b6044820152606401610433565b600182015461068d5760018083018590554260068401819055600984015560008581526020919091526040902080546001600160a01b031916331790555b6001600160a01b038116156107205781546001600160a01b0382166001600160a01b031991821681178455600090815260026020908152604082206003810180546001818101835591855283852001805486163390811790915560048301805480840182559086529385209093018054909516909217909355600a8054919290916107199084906117ac565b9091555050505b60405133906001600160a01b038316907fd8c638d8979e2ba5dba1f0d66246ee4b1c54b838f0e0a2b601365345eb23b05190600090a350505050565b6001600160a01b03808216600090815260026020818152604080842080549095168452808420600581015485526004909252832090910154601054929392849060ff16151560011480156107b05750600082115b80156107e257506107df620151806107d98560060154876009015461114790919063ffffffff16565b9061115a565b82105b600285015490915060ff16158015610803575083546001600160a01b031615155b801561088a5750600654604051633af32abf60e01b81526001600160a01b0390911690633af32abf9061083a908990600401611548565b60206040518083038186803b15801561085257600080fd5b505afa158015610866573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061088a91906117c4565b801561091457506006548454604051633af32abf60e01b81526001600160a01b0392831692633af32abf926108c492911690600401611548565b60206040518083038186803b1580156108dc57600080fd5b505afa1580156108f0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061091491906117c4565b801561091e575080155b9695505050505050565b6005546001600160a01b031633148061094b57506003546001600160a01b031633145b6109675760405162461bcd60e51b815260040161043390611719565b60078054911515600160a01b0260ff60a01b19909216919091179055565b600754600160a01b900460ff1661099b57600080fd5b336000908152600260205260408120905b6004820154811015610b1a57620530205a10156109c7575050565b60008260040182815481106109de576109de611765565b6000918252602090912001546001600160a01b031690506109fe8161075c565b15610a0c57610a0c81611166565b6001600160a01b0381166000908152600260208190526040909120015460ff1615610b075760048301548290610a44906001906117e1565b1115610ad157600483018054610a5c906001906117e1565b81548110610a6c57610a6c611765565b6000918252602090912001546004840180546001600160a01b039092169184908110610a9a57610a9a611765565b600091825260209091200180546001600160a01b0319166001600160a01b039290921691909117905581610acd816117f8565b9250505b82600401805480610ae457610ae461180f565b600082815260209020810160001990810180546001600160a01b03191690550190555b5080610b1281611791565b9150506109ac565b5050565b600754600160a01b900460ff16610b3457600080fd5b610b3d8161075c565b610b895760405162461bcd60e51b815260206004820181905260248201527f75736572206e6f7420656c6c6967626c6520666f7220626f756e7479207965746044820152606401610433565b610b9281611166565b50565b6005546001600160a01b0316331480610bb857506003546001600160a01b031633145b610bd45760405162461bcd60e51b815260040161043390611719565b600093845260046020526040909320918255600282019290925560010155565b600054610100900460ff1680610c0d575060005460ff16155b610c705760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610433565b600054610100900460ff16158015610c92576000805461ffff19166101011790555b60058054336001600160a01b0319918216179091556006805482166001600160a01b0387811691909117909155600780546000805260046020527f17ef568e3e12ab5b9c7254a8d58478811de00f9e6eb34345acd53bf8fd09d3ed869055600160a01b6001600160a81b031990911687841617179055600380549092169087161790556010805460ff191690558015610d31576000805461ff00191690555b5050505050565b6001600160a01b0381166000908152600260209081526040808320600401805482518185028101850190935280835260609493830182828015610da457602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610d86575b5050505050905060008060005b8351811015610e1e5760026000858381518110610dd057610dd0611765565b6020908102919091018101516001600160a01b031682528101919091526040016000206002015460ff16610e0c5781610e0881611791565b9250505b80610e1681611791565b915050610db1565b506000816001600160401b03811115610e3957610e39611825565b604051908082528060200260200182016040528015610e62578160200160208202803683370190505b50905060005b8451811015610f195760026000868381518110610e8757610e87611765565b6020908102919091018101516001600160a01b031682528101919091526040016000206002015460ff16610f0757848181518110610ec757610ec7611765565b6020026020010151828581518110610ee157610ee1611765565b6001600160a01b039092166020928302919091019091015283610f0381611791565b9450505b80610f1181611791565b915050610e68565b5095945050505050565b6001600160a01b038116600090815260026020908152604091829020600301805483518184028101840190945280845260609392830182828015610f9057602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610f72575b50505050509050919050565b6005546001600160a01b0316331480610fbf57506003546001600160a01b031633145b610fdb5760405162461bcd60e51b815260040161043390611719565b600754600160a01b900460ff16610ff157600080fd5b6007546040516370a0823160e01b81526000916001600160a01b0316906370a0823190611022903090600401611548565b60206040518083038186803b15801561103a57600080fd5b505afa15801561104e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611072919061183b565b60075460035460405163a9059cbb60e01b81529293506001600160a01b039182169263a9059cbb926110aa9216908590600401611854565b602060405180830381600087803b1580156110c457600080fd5b505af11580156110d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110fc91906117c4565b506003546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015611136573d6000803e3d6000fd5b50506007805460ff60a01b19169055565b600061115382846117e1565b9392505050565b6000611153828461186d565b6001600160a01b038181166000908152600260208181526040808420805460099091015495168085528185206005908101548652600484528286208351608081018552815481526001820154958101959095529485015484840152825160a08101938490529196959492606085019291600385019182845b8154815260200190600101908083116111de575050505050815250509050600080826040015111801561122b57506001600160a01b03841660009081526002602052604090206006015483115b801561126957506001600160a01b0384166000908152600260205260409020600601546112629062015180906107d9908690611147565b8260400151105b6001600160a01b038087166000908152600260208190526040808320909101805460ff1916600190811790915592881682528120600701805493945091926112b29084906117ac565b90915550506020808301516001600160a01b03861660009081526002909252604082206008018054919290916112e99084906117ac565b909155505060088054600191906000906113049084906117ac565b90915550506020820151600980546000906113209084906117ac565b9091555050815160009015801590611354575082516001600160a01b03861660009081526002602052604090206007015410155b801561135e575081155b156113b7576001600160a01b038516600090815260026020526040812060050180546001929061138f9084906117ac565b9091555050506001600160a01b03841660009081526002602052604090204260069091015560015b600754602084015160405163a9059cbb60e01b81526001600160a01b039092169163a9059cbb916113ed91899190600401611854565b602060405180830381600087803b15801561140757600080fd5b505af115801561141b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061143f91906117c4565b5060075460208401516001600160a01b039091169063a9059cbb90889061146790600261115a565b6040518363ffffffff1660e01b8152600401611484929190611854565b602060405180830381600087803b15801561149e57600080fd5b505af11580156114b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114d691906117c4565b506020838101516001600160a01b038781166000818152600285526040908190206005015481519485529484019490945284151583850152925190891692917f6081787cd1bd02ab1576c52f03e8710d792d460e7881c3155d77d23893f3768b919081900360600190a3505050505050565b6001600160a01b0391909116815260200190565b8015158114610b9257600080fd5b60006020828403121561157c57600080fd5b81356111538161155c565b6001600160a01b0381168114610b9257600080fd5b6000602082840312156115ae57600080fd5b813561115381611587565b600060208083528351808285015260005b818110156115e6578581018301518582016040015282016115ca565b818111156115f8576000604083870101525b50601f01601f1916929092016040019392505050565b6000806040838503121561162157600080fd5b50508035926020909101359150565b60006020828403121561164257600080fd5b5035919050565b6000806000806080858703121561165f57600080fd5b5050823594602084013594506040840135936060013592509050565b6000806000806080858703121561169157600080fd5b843561169c81611587565b935060208501356116ac81611587565b925060408501356116bc81611587565b9396929550929360600135925050565b6020808252825182820181905260009190848201906040850190845b8181101561170d5783516001600160a01b0316835292840192918401916001016116e8565b50909695505050505050565b6020808252602c908201527f4f6e6c79206f776e6572206f72206176617461722063616e20706572666f726d60408201526b103a3434b99030b1ba34b7b760a11b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006000198214156117a5576117a561177b565b5060010190565b600082198211156117bf576117bf61177b565b500190565b6000602082840312156117d657600080fd5b81516111538161155c565b6000828210156117f3576117f361177b565b500390565b6000816118075761180761177b565b506000190190565b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b60006020828403121561184d57600080fd5b5051919050565b6001600160a01b03929092168252602082015260400190565b60008261188a57634e487b7160e01b600052601260045260246000fd5b50049056fea26469706673582212207945720f583c6fde24d584c738f4379e4f1c998b9f67c4c5e4a61d09a8b8624864736f6c63430008080033",
484
- "linkReferences": {},
485
- "deployedLinkReferences": {}
486
- }
@@ -1,120 +0,0 @@
1
- //SPDX-License-Identifier: MIT
2
-
3
- pragma solidity >=0.6.0;
4
-
5
- pragma experimental ABIEncoderV2;
6
-
7
- import "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol";
8
- import "../Interfaces.sol";
9
-
10
- /**
11
- * @title DonationStaking contract that receives funds in ETH/DAI
12
- * and stake them in the SimpleStaking contract
13
- */
14
- contract FuseFaucet is Initializable {
15
- event WalletTopped(address indexed user, uint256 amount);
16
-
17
- uint256 public perDayRoughLimit;
18
- uint256 public toppingAmount;
19
- uint256 public gasRefund;
20
- uint256 public startTime;
21
- uint256 public currentDay;
22
-
23
- IIdentity public identity;
24
-
25
- mapping(uint256 => mapping(address => uint256)) public toppings;
26
- mapping(address => bool) public notFirstTime;
27
-
28
- function initialize(address _identity) public initializer {
29
- toppingAmount = 1000000 * 1e9; //1M gwei
30
- gasRefund = 131350 * 1e9; //100K gwei
31
- perDayRoughLimit = 2 * toppingAmount;
32
- startTime = block.timestamp;
33
- identity = IIdentity(_identity);
34
- }
35
-
36
- modifier reimburseGas() {
37
- _;
38
- payable(msg.sender).transfer(gasRefund);
39
- }
40
-
41
- receive() external payable {}
42
-
43
- modifier toppingLimit(address _user) {
44
- setDay();
45
- require(
46
- address(_user).balance < toppingAmount / 2,
47
- "User balance above minimum"
48
- );
49
-
50
- require(
51
- toppings[currentDay][_user] < perDayRoughLimit,
52
- "User wallet has been topped too many times today"
53
- );
54
-
55
- require(
56
- identity.isWhitelisted(_user) || notFirstTime[_user] == false,
57
- "User not whitelisted or not first time"
58
- );
59
-
60
- uint256 weekTotal = 0;
61
- for (
62
- int256 i = int256(currentDay);
63
- i >= 0 && i > int256(currentDay) - 7;
64
- i--
65
- ) {
66
- weekTotal += toppings[uint256(i)][_user];
67
- }
68
- require(
69
- weekTotal < perDayRoughLimit * 3,
70
- "User wallet has been topped too many times this week"
71
- );
72
- _;
73
- }
74
-
75
- /* @dev Internal function that sets current day
76
- */
77
- function setDay() internal {
78
- currentDay = (block.timestamp - startTime) / 1 days;
79
- }
80
-
81
- function canTop(address _user) public view returns (bool) {
82
- uint256 _currentDay = (block.timestamp - startTime) / 1 days;
83
- bool can = address(_user).balance < toppingAmount / 2 &&
84
- toppings[_currentDay][_user] < perDayRoughLimit &&
85
- (identity.isWhitelisted(_user) || notFirstTime[_user] == false);
86
-
87
- uint256 weekTotal = 0;
88
- for (
89
- int256 i = int256(_currentDay);
90
- i >= 0 && i > int256(_currentDay) - 7;
91
- i--
92
- ) {
93
- weekTotal += toppings[uint256(i)][_user];
94
- }
95
-
96
- can = can && weekTotal < perDayRoughLimit * 3;
97
- return can;
98
- }
99
-
100
- /* @dev Function to top given address with amount of G$ given in constructor
101
- * can only be done by admin the amount of times specified in constructor per day
102
- * @param _user The address to transfer to
103
- */
104
- function topWallet(address payable _user)
105
- public
106
- reimburseGas
107
- toppingLimit(_user)
108
- {
109
- _topWallet(_user);
110
- }
111
-
112
- function _topWallet(address payable _wallet) internal {
113
- require(toppingAmount > address(_wallet).balance);
114
- uint256 toTop = toppingAmount - address(_wallet).balance;
115
- toppings[currentDay][_wallet] += toTop;
116
- notFirstTime[_wallet] = true;
117
- _wallet.transfer(toTop);
118
- emit WalletTopped(_wallet, toTop);
119
- }
120
- }