tx · FvXWsTFzqev6eUvoZKEi2deYkxZRQz1CHxDRNmKW72FH

3P2q6tfVRAhiZUoydGYwDJPybgDhSAtHGRo:  -0.01400000 Waves

2022.01.24 19:49 [2958395] smart account 3P2q6tfVRAhiZUoydGYwDJPybgDhSAtHGRo > SELF 0.00000000 Waves

{ "type": 13, "id": "FvXWsTFzqev6eUvoZKEi2deYkxZRQz1CHxDRNmKW72FH", "fee": 1400000, "feeAssetId": null, "timestamp": 1643042956002, "version": 2, "chainId": 87, "sender": "3P2q6tfVRAhiZUoydGYwDJPybgDhSAtHGRo", "senderPublicKey": "wY4NwyJskK4UBjW8X3dFzJfPt5SxDCcmf6ysqcho2pB", "proofs": [ "r7PXdbma3gSazg8Qcry2UZ4Ce8Cfvma1eLozZutS3baQGNfjyUbaPDJYnvSYsozM9VuRZV7h6fkoNQ99eL3G3Ex" ], "script": "base64:AAIFAAAAAAAACToIAhIDCgEBEgQKAggBEgMKAQQSABIAEgASAwoBCBIGCgQICAEBEgMKAQgSAwoBCBIECgIICBIDCgEIEgAaDAoBQRIHJG1hdGNoMBoGCgFCEgFiGgsKAUMSBmdldFN0choMCgFEEgdnZXRCb29sGgwKAUUSB2dldFN0ckEaBgoBRhIBYRoGCgFHEgFrGgwKAUgSB2dldEludEEaDAoBSRIHYWRkcmVzcxoXCgFKEhJnZXRNYXJrZXRQcm94eUFkZHIaDQoBSxIIZ2V0RWdnSWQaFAoBTBIPZ2V0U2hhcmVBc3NldElkGgYKAU0SAWkaCwoBThIGYW1vdW50GhEKAU8SDHNoYXJlQXNzZXRJZBoSCgFQEg10b3RhbENvbXBvdW5kGhAKAVESC3RvdGFsU3Rha2VkGhAKAVISC3RvdGFsTG9ja2VkGhYKAVMSEWFtb3VudEZvckNvbXBvdW5kGgkKAVQSBG5hbWUaFQoBVRIQbWluaW11bVRocmVzaG9sZBoQCgFWEgtzaGFyZVRva2VucxoPCgFXEgpzaGFyZVRva2VuGgYKAVgSAXMaDwoBWRIKZWdnQXNzZXRJZBoTCgFaEg50b3RhbExpcXVpZGl0eRoNCgFhEghtQWNjUEtleRoNCgJhQRIHdG9EaXN0choYCgJhQhISdG90YWxGYXJtaW5nUmV3YXJkGhMKAmFDEg1jdXJyZW50Q2VvRmVlGhMKAmFEEg1jZW9GZWVPdmVyYWxsGhEKAmFFEgthbW91bnRUb1BheRoXCgJhRhIRYW1vdW50Q29tcG9udENhbGwaDgoCYUcSCGNvbXBvdW5kGgsKAmFIEgV0b3BVcBoMCgJhSRIGc3VjY2VzGg0KAmFKEgdib29sZWFuGg4KAmFLEghhZGRyZXNzMRoOCgJhTBIIYWRkcmVzczIaEwoCYU0SDWFkZHJlc3MxU2hhcmUaEwoCYU4SDWFkZHJlc3MyU2hhcmUaHAoCYU8SFmN1cnJlbnRDZW9Db2xsZWN0ZWRGZWUaFAoCYVASDmFkZHJlc3MxUmV3YXJkGhQKAmFREg5hZGRyZXNzMlJld2FyZBoPCgJhUhIJYXVjdGlvbklkGg4KAmFTEghmdW5jdGlvbhoNCgJhVBIHYXNzZXRJZBoYCgJhVRISZmFybWluZ0RhcHBBZGRyZXNzGhMKAmFWEg11c3Rha2VkUmV3YXJkGhcKAmFXEhF1bnN0YWtlZFJld2FyZE5vdxoXCgJhWBIRbmV3VW5zdGFrZWRSZXdhcmQaCgoCYVkSBHR4SWQaCAoCYVoSAnR4GhYKAmFhEhB0b3RhbFNoYXJlVG9rZW5zGhcKAmFiEhFzaGFyZVRva2Vuc1RvR2l2ZRoTCgJhYxINc2hhcmVUb2tlbnNJZBoNCgJhZBIHcmVpc3N1ZRoWCgJhZRIQZmFybVBhcnRpY2lwYW50cxoTCgJhZhINa1BhcnRpY2lwYXRlZBoZCgJhZxITYWxyZWFkeVBhcnRpY2lwYXRlZBoZCgJhaBITbmV3RmFybVBhcnRpY2lwYW50cxoJCgJhaRIDaWRzGhEKAmFqEgtmYXJtaW5nRGFwcBoRCgJhaxILY2xhaW1SZXdhcmQaCwoCYWwSBWFjY3VtGgsKAmFtEgVuZnRJZBoMCgJhbhIGaW52UmVzGgkKAmFvEgNpbnQaDAoCYXASBm5mdElkcxoQCgJhcRIKZm9sZFJlc3VsdBoICgJhchICJGwaCAoCYXMSAiRzGgsKAmF0EgUkYWNjMBoLCgJhdRIFJGYwXzEaCAoCYXYSAiRhGggKAmF3EgIkaRoLCgJheBIFJGYwXzIaEwoCYXkSDWNsYWltZWRSZXdhcmQaFAoCYXoSDmZhcm1DZW9GZWVTaXplGg0KAWISCG1BY2NBZGRyGg8KAmJhEglrUmV2ZXJ0ZWQaEAoCYmISCnR4UmV2ZXJ0ZWQaEAoCYmMSCm1pbkJhbGFuY2UaFwoCYmQSEWN1cnJlbnRFZ2dCYWxhbmNlGgwKAmJlEgZyZXN1bHQaDwoCYmYSCWFkZHJlc3NlcxoSCgJiZxIMYWRkcmVzc1BhcnRzGhAKAmJoEgpmaW5kUmV3YXJkGgkKAmJpEgNhY2MaCQoCYmoSA3ZhbBoLCgJiaxIFcGFydHMaDAoCYmwSBnJld2FyZBoMCgJibRIGdmVyaWZ5GhIKAmJuEgxjaGVja1N0YXJ0ZWQaFgoCYm8SEHRvdGFsRWdnU3BlbmRpbmcaDQoCYnASB3BheW1lbnQaCQoCYnESA2ludhoaCgJichIUYWNjZXB0ZWRDYWxsc1N0YWtpbmcaFwoCYnMSEWFjY2VwdGVkQ2FsbHNUaGlzGhYKAmJ0EhBhbGxvd2VkQ29udHJhY3Rz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AAJhdQAAAAIJAQAAAAJhdQAAAAIJAQAAAAJhdQAAAAIJAQAAAAJhdQAAAAIJAQAAAAJhdQAAAAIJAQAAAAJhdQAAAAIJAQAAAAJhdQAAAAIJAQAAAAJhdQAAAAIJAQAAAAJhdQAAAAIJAQAAAAJhdQAAAAIJAQAAAAJhdQAAAAIJAQAAAAJhdQAAAAIJAQAAAAJhdQAAAAIJAQAAAAJhdQAAAAIJAQAAAAJhdQAAAAIJAQAAAAJhdQAAAAIJAQAAAAJhdQAAAAIJAQAAAAJhdQAAAAIJAQAAAAJhdQAAAAIJAQAAAAJhdQAAAAIJAQAAAAJhdQAAAAIJAQAAAAJhdQAAAAIJAQAAAAJhdQAAAAIJAQAAAAJhdQAAAAIJAQAAAAJhdQAAAAIJAQAAAAJhdQAAAAIJAQAAAAJhdQAAAAIJAQAAAAJhdQAAAAIJAQAAAAJhdQAAAAIJAQAAAAJhdQAAAAIJAQAAAAJhdQAAAAIJAQAAAAJhdQAAAAIJAQAAAAJhdQAAAAIJAQAAAAJhdQAAAAIJAQAAAAJhdQAAAAIJAQAAAAJhdQAAAAIJAQAAAAJhdQAAAAIJAQAAAAJhdQAAAAIJAQAAAAJhdQAAAAIJAQAAAAJhdQAAAAIJAQAAAAJhdQAAAAIJAQAAAAJhdQAAAAIJAQAAAAJhdQAAAAIJAQAAAAJhdQAAAAIJAQAAAAJhdQAAAAIJAQAAAAJhdQAAAAIJAQAAAAJhdQAAAAIJAQAAAAJhdQAAAAIJAQAAAAJhdQAAAAIJAQAAAAJhdQAAAAIJAQAAAAJhdQAAAAIJAQAAAAJhdQAAAAIJAQAAAAJhdQAAAAIJAQAAAAJhdQAAAAIJAQAAAAJhdQAAAAIJAQAAAAJhdQAAAAIJAQAAAAJhdQAAAAIJAQAAAAJhdQAAAAIJAQAAAAJhdQAAAAIJAQAAAAJhdQAAAAIJAQAAAAJhdQAAAAIFAAAAAmF0AAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAACAAAAAAAAAAADAAAAAAAAAAAEAAAAAAAAAAAFAAAAAAAAAAAGAAAAAAAAAAAHAAAAAAAAAAAIAAAAAAAAAAAJAAAAAAAAAAAKAAAAAAAAAAALAAAAAAAAAAAMAAAAAAAAAAANAAAAAAAAAAAOAAAAAAAAAAAPAAAAAAAAAAAQAAAAAAAAAAARAAAA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", "height": 2958395, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 33btGCabSpLtfuFWj5dVqvyLM6nhwNAMscVKgncnrkPU Next: 2y9paZLtxf1TTNEBbBSVAXcXwv9nYDiCZLNotjA9S9cT Diff:
OldNewDifferences
4444 let kUnstakedReward = "unstaked_reward"
4545
4646 let kLockedInvestments = "locked_investments"
47+
48+let keyTotalCompound = "total_compound"
49+
50+let keyGlobalStaked = "global_staked"
4751
4852 func getInt (key) = match getInteger(this, key) {
4953 case b: Int =>
9296
9397
9498 func getShareAssetId () = fromBase58String(getStr(kShareAssetId))
99+
100+
101+@Callable(i)
102+func calculateCompoundShareAndIssue (amount) = {
103+ let shareAssetId = getShareAssetId()
104+ let totalCompound = getIntA(stakingAddress, keyTotalCompound)
105+ let totalStaked = getIntA(stakingAddress, keyGlobalStaked)
106+ let totalLocked = (totalStaked + totalCompound)
107+ let amountForCompound = fraction(amount, totalCompound, totalLocked)
108+ $Tuple2([Reissue(shareAssetId, amountForCompound, true)], amountForCompound)
109+ }
110+
95111
96112
97113 @Callable(i)
166182 then throw("_23")
167183 else {
168184 let eggAssetId = getEggId()
185+ let shareAssetId = getShareAssetId()
169186 let farmingDapp = addressFromStringValue(getStrA(mAccAddr, kFarmingDapp))
170187 func claimReward (accum,nftId) = {
171188 let invRes = invoke(farmingDapp, "claimReward", [nftId], nil)
205222 let totalFarmingReward = getInt(kTotalFarmingReward)
206223 let currentCeoFee = getInt(kCeoCollectedFee)
207224 let ceoFeeOverall = getInt(kCeoCollectedFeeOverall)
208- let topUp = reentrantInvoke(stakingAddress, "topUpReward", nil, [AttachedPayment(eggAssetId, (claimedReward - farmCeoFeeSize))])
209- if ((topUp == topUp))
225+ let amountToPay = (claimedReward - farmCeoFeeSize)
226+ let amountCompontCall = invoke(this, "calculateCompoundShareAndIssue", [amountToPay], nil)
227+ if ((amountCompontCall == amountCompontCall))
210228 then {
211- let succes = match topUp {
212- case boolean: Boolean =>
213- boolean
229+ let compound = match amountCompontCall {
230+ case int: Int =>
231+ int
214232 case _ =>
215- throw("Error during topup")
233+ throw("Error during compound calcuations")
216234 }
235+ let topUp = invoke(stakingAddress, "topUpReward", nil, [AttachedPayment(eggAssetId, (amountToPay - compound)), AttachedPayment(shareAssetId, compound)])
236+ if ((topUp == topUp))
237+ then {
238+ let succes = match topUp {
239+ case boolean: Boolean =>
240+ boolean
241+ case _ =>
242+ throw("Error during topup")
243+ }
217244 [IntegerEntry(kTotalFarmingReward, ((totalFarmingReward + claimedReward) - farmCeoFeeSize)), IntegerEntry(kToDistr, ((toDistr + claimedReward) - farmCeoFeeSize)), IntegerEntry(kCeoCollectedFee, (currentCeoFee + farmCeoFeeSize)), IntegerEntry(kCeoCollectedFeeOverall, (ceoFeeOverall + farmCeoFeeSize))]
245+ }
246+ else throw("Strict value is not equal to itself.")
218247 }
219248 else throw("Strict value is not equal to itself.")
220249 }
262291 then throw("Can be called only by the account")
263292 else {
264293 let eggAssetId = getEggId()
294+ let shareAssetId = getShareAssetId()
265295 let farmingDappAddress = addressFromStringValue(getStrA(mAccAddr, "FARMING_DAPP"))
266296 let ustakedReward = invoke(farmingDappAddress, function, [assetId], nil)
267297 if ((ustakedReward == ustakedReward))
276306 let currentCeoFee = getInt(kCeoCollectedFee)
277307 let ceoFeeOverall = getInt(kCeoCollectedFeeOverall)
278308 let farmCeoFeeSize = fraction(unstakedRewardNow, feePercent, 100)
279- let topUp = reentrantInvoke(stakingAddress, "topUpReward", nil, [AttachedPayment(eggAssetId, (unstakedRewardNow - farmCeoFeeSize))])
280- if ((topUp == topUp))
309+ let amountToPay = (unstakedRewardNow - farmCeoFeeSize)
310+ let amountCompontCall = invoke(this, "calculateCompoundShareAndIssue", [amountToPay], nil)
311+ if ((amountCompontCall == amountCompontCall))
281312 then {
282- let succes = match topUp {
283- case boolean: Boolean =>
284- boolean
313+ let compound = match amountCompontCall {
314+ case int: Int =>
315+ int
285316 case _ =>
286- throw("Error during topup")
317+ throw("Error during compound calcuations")
287318 }
319+ let topUp = invoke(stakingAddress, "topUpReward", nil, [AttachedPayment(eggAssetId, (amountToPay - compound)), AttachedPayment(shareAssetId, compound)])
320+ if ((topUp == topUp))
321+ then {
322+ let succes = match topUp {
323+ case boolean: Boolean =>
324+ boolean
325+ case _ =>
326+ throw("Error during topup")
327+ }
288328 [IntegerEntry(kCeoCollectedFee, (currentCeoFee + farmCeoFeeSize)), IntegerEntry(kCeoCollectedFeeOverall, (ceoFeeOverall + farmCeoFeeSize)), IntegerEntry(kUnstakedReward, newUnstakedReward)]
329+ }
330+ else throw("Strict value is not equal to itself.")
289331 }
290332 else throw("Strict value is not equal to itself.")
291333 }
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let mAccPKey = base58'HyXCiJpt1eh1M1zZWDpYzbVW81yZL4XBjiJjGwxZqk2'
55
66 let mAccAddr = addressFromPublicKey(mAccPKey)
77
88 let feePercent = getIntegerValue(mAccAddr, (("f_" + toString(this)) + "_fee"))
99
1010 let stakingAddress = addressFromStringValue(valueOrErrorMessage(getString(mAccAddr, (("f_" + toString(this)) + "_stake_address")), (("f_" + toString(this)) + "_stake_address not defined")))
1111
1212 let kTotalLiquidity = "total_liquidity"
1313
1414 let kInitialized = "INITIALIZED"
1515
1616 let kLiquidityThreshold = "LIQUIDITY_THRESHOLD"
1717
1818 let kFarmParticipants = "farm_participants"
1919
2020 let kTotalShareTokens = "total_share_tokens"
2121
2222 let kShareAssetId = "SHARE_ASSET_ID"
2323
2424 let kIncubatorDapp = "INCUBATOR_DAPP"
2525
2626 let kBreederDapp = "BREEDER_DAPP"
2727
2828 let kFarmingDapp = "FARMING_DAPP"
2929
3030 let kMarketProxyDapp = "MARKETPLACE_PROXY_DAPP"
3131
3232 let kAuctionDapp = "AUCTION_DAPP"
3333
3434 let kLocked = "LOCKED"
3535
3636 let kTotalFarmingReward = "total_farming_reward"
3737
3838 let kCeoCollectedFee = "ceo_collected_fee"
3939
4040 let kCeoCollectedFeeOverall = "ceo_fee_overall"
4141
4242 let kToDistr = "to_distribute"
4343
4444 let kUnstakedReward = "unstaked_reward"
4545
4646 let kLockedInvestments = "locked_investments"
47+
48+let keyTotalCompound = "total_compound"
49+
50+let keyGlobalStaked = "global_staked"
4751
4852 func getInt (key) = match getInteger(this, key) {
4953 case b: Int =>
5054 b
5155 case _ =>
5256 0
5357 }
5458
5559
5660 func getStr (key) = match getString(this, key) {
5761 case b: String =>
5862 b
5963 case _ =>
6064 ""
6165 }
6266
6367
6468 func getBool (key) = match getBoolean(this, key) {
6569 case b: Boolean =>
6670 b
6771 case _ =>
6872 unit
6973 }
7074
7175
7276 func getStrA (a,k) = match getString(a, k) {
7377 case b: String =>
7478 b
7579 case _ =>
7680 ""
7781 }
7882
7983
8084 func getIntA (address,key) = match getInteger(address, key) {
8185 case b: Int =>
8286 b
8387 case _ =>
8488 0
8589 }
8690
8791
8892 func getMarketProxyAddr () = getStrA(mAccAddr, kMarketProxyDapp)
8993
9094
9195 func getEggId () = fromBase58String(getStringValue(mAccAddr, "EGG_ASSET_ID"))
9296
9397
9498 func getShareAssetId () = fromBase58String(getStr(kShareAssetId))
99+
100+
101+@Callable(i)
102+func calculateCompoundShareAndIssue (amount) = {
103+ let shareAssetId = getShareAssetId()
104+ let totalCompound = getIntA(stakingAddress, keyTotalCompound)
105+ let totalStaked = getIntA(stakingAddress, keyGlobalStaked)
106+ let totalLocked = (totalStaked + totalCompound)
107+ let amountForCompound = fraction(amount, totalCompound, totalLocked)
108+ $Tuple2([Reissue(shareAssetId, amountForCompound, true)], amountForCompound)
109+ }
110+
95111
96112
97113 @Callable(i)
98114 func initCollectiveFarm (name,minimumThreshold) = if ((i.callerPublicKey != mAccPKey))
99115 then throw("_1")
100116 else if ((getBool(kInitialized) != unit))
101117 then throw("_2")
102118 else if (if ((i.payments[0].amount != 10000000))
103119 then true
104120 else (i.payments[0].assetId != getEggId()))
105121 then throw("_20")
106122 else {
107123 let shareTokens = 10000000
108124 let shareToken = Issue(name, (("Team token for the \"" + name) + "\" collective farm"), shareTokens, 8, true)
109125 [StringEntry(kShareAssetId, toBase58String(calculateAssetId(shareToken))), BooleanEntry(kInitialized, true), IntegerEntry(kTotalLiquidity, 10), IntegerEntry(kTotalShareTokens, shareTokens), shareToken, ScriptTransfer(i.caller, shareTokens, calculateAssetId(shareToken)), BooleanEntry(kLocked, false), IntegerEntry(kLiquidityThreshold, minimumThreshold)]
110126 }
111127
112128
113129
114130 @Callable(i)
115131 func setLock (s) = if ((i.callerPublicKey != mAccPKey))
116132 then throw("_21")
117133 else [BooleanEntry(kLocked, s)]
118134
119135
120136
121137 @Callable(i)
122138 func lockInvestments () = if ((i.caller != this))
123139 then throw("You cannot lock this contract")
124140 else [BooleanEntry(kLockedInvestments, true)]
125141
126142
127143
128144 @Callable(i)
129145 func unlockInvestments () = if ((i.caller != this))
130146 then throw("You cannot lock this contract")
131147 else [BooleanEntry(kLockedInvestments, false)]
132148
133149
134150
135151 @Callable(i)
136152 func provideLiquidity () = {
137153 let eggAssetId = getEggId()
138154 if ((getBool(kLockedInvestments) == true))
139155 then throw("Contract is locked for investments by it's CEO. Please invest in another collective farm.")
140156 else if ((getBool(kLocked) == true))
141157 then throw("_22")
142158 else if ((i.payments[0].assetId != eggAssetId))
143159 then throw("_4")
144160 else if ((1000000 > i.payments[0].amount))
145161 then throw("Min amount to invest is 0.01 EGG")
146162 else {
147163 let totalLiquidity = getInt(kTotalLiquidity)
148164 let totalShareTokens = getInt(kTotalShareTokens)
149165 let shareTokensToGive = i.payments[0].amount
150166 let shareTokensId = fromBase58String(getStr(kShareAssetId))
151167 let reissue = Reissue(getShareAssetId(), shareTokensToGive, true)
152168 let farmParticipants = getInt(kFarmParticipants)
153169 let kParticipated = (("account_" + toString(i.caller)) + "_participated")
154170 let alreadyParticipated = getBool(kParticipated)
155171 let newFarmParticipants = if ((alreadyParticipated == unit))
156172 then (farmParticipants + 1)
157173 else farmParticipants
158174 $Tuple2([reissue, ScriptTransfer(i.caller, shareTokensToGive, shareTokensId), IntegerEntry(kTotalShareTokens, (totalShareTokens + shareTokensToGive)), IntegerEntry(kTotalLiquidity, (totalLiquidity + (value(i.payments[0].amount) / 1000000))), IntegerEntry(kFarmParticipants, newFarmParticipants), BooleanEntry(kParticipated, true)], shareTokensToGive)
159175 }
160176 }
161177
162178
163179
164180 @Callable(i)
165181 func claimFarmingRewardProxy (ids) = if ((i.callerPublicKey != mAccPKey))
166182 then throw("_23")
167183 else {
168184 let eggAssetId = getEggId()
185+ let shareAssetId = getShareAssetId()
169186 let farmingDapp = addressFromStringValue(getStrA(mAccAddr, kFarmingDapp))
170187 func claimReward (accum,nftId) = {
171188 let invRes = invoke(farmingDapp, "claimReward", [nftId], nil)
172189 if ((invRes == invRes))
173190 then match invRes {
174191 case int: Int =>
175192 (accum + int)
176193 case _ =>
177194 throw("_5")
178195 }
179196 else throw("Strict value is not equal to itself.")
180197 }
181198
182199 let nftIds = split(ids, ";")
183200 let foldResult = {
184201 let $l = nftIds
185202 let $s = size($l)
186203 let $acc0 = 0
187204 func $f0_1 ($a,$i) = if (($i >= $s))
188205 then $a
189206 else claimReward($a, $l[$i])
190207
191208 func $f0_2 ($a,$i) = if (($i >= $s))
192209 then $a
193210 else throw("List size exceeds 10")
194211
195212 $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
196213 }
197214 let claimedReward = match foldResult {
198215 case int: Int =>
199216 int
200217 case _ =>
201218 throw("_6")
202219 }
203220 let farmCeoFeeSize = fraction(claimedReward, feePercent, 100)
204221 let toDistr = getInt(kToDistr)
205222 let totalFarmingReward = getInt(kTotalFarmingReward)
206223 let currentCeoFee = getInt(kCeoCollectedFee)
207224 let ceoFeeOverall = getInt(kCeoCollectedFeeOverall)
208- let topUp = reentrantInvoke(stakingAddress, "topUpReward", nil, [AttachedPayment(eggAssetId, (claimedReward - farmCeoFeeSize))])
209- if ((topUp == topUp))
225+ let amountToPay = (claimedReward - farmCeoFeeSize)
226+ let amountCompontCall = invoke(this, "calculateCompoundShareAndIssue", [amountToPay], nil)
227+ if ((amountCompontCall == amountCompontCall))
210228 then {
211- let succes = match topUp {
212- case boolean: Boolean =>
213- boolean
229+ let compound = match amountCompontCall {
230+ case int: Int =>
231+ int
214232 case _ =>
215- throw("Error during topup")
233+ throw("Error during compound calcuations")
216234 }
235+ let topUp = invoke(stakingAddress, "topUpReward", nil, [AttachedPayment(eggAssetId, (amountToPay - compound)), AttachedPayment(shareAssetId, compound)])
236+ if ((topUp == topUp))
237+ then {
238+ let succes = match topUp {
239+ case boolean: Boolean =>
240+ boolean
241+ case _ =>
242+ throw("Error during topup")
243+ }
217244 [IntegerEntry(kTotalFarmingReward, ((totalFarmingReward + claimedReward) - farmCeoFeeSize)), IntegerEntry(kToDistr, ((toDistr + claimedReward) - farmCeoFeeSize)), IntegerEntry(kCeoCollectedFee, (currentCeoFee + farmCeoFeeSize)), IntegerEntry(kCeoCollectedFeeOverall, (ceoFeeOverall + farmCeoFeeSize))]
245+ }
246+ else throw("Strict value is not equal to itself.")
218247 }
219248 else throw("Strict value is not equal to itself.")
220249 }
221250
222251
223252
224253 @Callable(i)
225254 func claimCeoFee (address1,address2,address1Share,address2Share) = if (((address1Share + address2Share) != 100))
226255 then throw("Sum of shares should be 100")
227256 else if ((getBool(kLocked) == true))
228257 then throw("_22")
229258 else if ((i.caller == this))
230259 then {
231260 let currentCeoCollectedFee = getInt(kCeoCollectedFee)
232261 let address1Reward = if ((address2 == ""))
233262 then currentCeoCollectedFee
234263 else fraction(currentCeoCollectedFee, address1Share, 100)
235264 let address2Reward = if ((address2 == ""))
236265 then 0
237266 else fraction(currentCeoCollectedFee, address2Share, 100)
238267 [ScriptTransfer(addressFromStringValue(address1), address1Reward, getEggId()), ScriptTransfer(addressFromStringValue(address2), address2Reward, getEggId()), IntegerEntry(kCeoCollectedFee, 0)]
239268 }
240269 else throw("Only manager can call the contract")
241270
242271
243272
244273 @Callable(i)
245274 func startLiquidation (auctionId) = throw("_7")
246275
247276
248277
249278 @Callable(i)
250279 func voteForLiquidation (auctionId) = throw("_7")
251280
252281
253282
254283 @Callable(i)
255284 func callUnstakeProxy (function,assetId) = if ((getBool(kLocked) == true))
256285 then throw("Contract is locked now")
257286 else if (if ((function != "unstakeNFT"))
258287 then (function != "unstakeJackpot")
259288 else false)
260289 then throw("Bad function name")
261290 else if ((i.caller != this))
262291 then throw("Can be called only by the account")
263292 else {
264293 let eggAssetId = getEggId()
294+ let shareAssetId = getShareAssetId()
265295 let farmingDappAddress = addressFromStringValue(getStrA(mAccAddr, "FARMING_DAPP"))
266296 let ustakedReward = invoke(farmingDappAddress, function, [assetId], nil)
267297 if ((ustakedReward == ustakedReward))
268298 then {
269299 let unstakedRewardNow = getInt(kUnstakedReward)
270300 let newUnstakedReward = match ustakedReward {
271301 case int: Int =>
272302 (unstakedRewardNow + int)
273303 case _ =>
274304 throw("Error during unstaking")
275305 }
276306 let currentCeoFee = getInt(kCeoCollectedFee)
277307 let ceoFeeOverall = getInt(kCeoCollectedFeeOverall)
278308 let farmCeoFeeSize = fraction(unstakedRewardNow, feePercent, 100)
279- let topUp = reentrantInvoke(stakingAddress, "topUpReward", nil, [AttachedPayment(eggAssetId, (unstakedRewardNow - farmCeoFeeSize))])
280- if ((topUp == topUp))
309+ let amountToPay = (unstakedRewardNow - farmCeoFeeSize)
310+ let amountCompontCall = invoke(this, "calculateCompoundShareAndIssue", [amountToPay], nil)
311+ if ((amountCompontCall == amountCompontCall))
281312 then {
282- let succes = match topUp {
283- case boolean: Boolean =>
284- boolean
313+ let compound = match amountCompontCall {
314+ case int: Int =>
315+ int
285316 case _ =>
286- throw("Error during topup")
317+ throw("Error during compound calcuations")
287318 }
319+ let topUp = invoke(stakingAddress, "topUpReward", nil, [AttachedPayment(eggAssetId, (amountToPay - compound)), AttachedPayment(shareAssetId, compound)])
320+ if ((topUp == topUp))
321+ then {
322+ let succes = match topUp {
323+ case boolean: Boolean =>
324+ boolean
325+ case _ =>
326+ throw("Error during topup")
327+ }
288328 [IntegerEntry(kCeoCollectedFee, (currentCeoFee + farmCeoFeeSize)), IntegerEntry(kCeoCollectedFeeOverall, (ceoFeeOverall + farmCeoFeeSize)), IntegerEntry(kUnstakedReward, newUnstakedReward)]
329+ }
330+ else throw("Strict value is not equal to itself.")
289331 }
290332 else throw("Strict value is not equal to itself.")
291333 }
292334 else throw("Strict value is not equal to itself.")
293335 }
294336
295337
296338
297339 @Callable(i)
298340 func revertTransfer (txId) = if ((getBool(kLocked) == true))
299341 then throw("Contract is locked now")
300342 else if ((i.caller != this))
301343 then throw("Can be called only by the account")
302344 else {
303345 let tx = value(transferTransactionById(fromBase58String(txId)))
304346 let kReverted = ("tx_revert_" + txId)
305347 let txReverted = getBool(kReverted)
306348 let unstakedRewardNow = getInt(kUnstakedReward)
307349 let toDistr = getInt(kToDistr)
308350 let minBalance = (unstakedRewardNow + toDistr)
309351 let currentEggBalance = assetBalance(this, getEggId())
310352 let result = [ScriptTransfer(tx.sender, tx.amount, tx.assetId), BooleanEntry(kReverted, true)]
311353 if ((txReverted == true))
312354 then throw("Tx already reverted")
313355 else if ((tx.recipient != this))
314356 then throw("Tx recipient is another account")
315357 else if ((tx.assetId == getShareAssetId()))
316358 then result
317359 else if ((tx.assetId != getEggId()))
318360 then throw("Transaction is not with EGG or share tokens")
319361 else if ((minBalance > (currentEggBalance - tx.amount)))
320362 then throw("Revert makes balance too low")
321363 else result
322364 }
323365
324366
325367
326368 @Callable(i)
327369 func claimReward () = {
328370 let addresses = getStr("rew1")
329371 let addressParts = split(addresses, ";")
330372 func findReward (acc,val) = {
331373 let parts = value(split(val, "="))
332374 if ((value(parts[0]) == toString(i.caller)))
333375 then (acc + parseIntValue(parts[1]))
334376 else 0
335377 }
336378
337379 let reward = {
338380 let $l = addressParts
339381 let $s = size($l)
340382 let $acc0 = 0
341383 func $f0_1 ($a,$i) = if (($i >= $s))
342384 then $a
343385 else findReward($a, $l[$i])
344386
345387 func $f0_2 ($a,$i) = if (($i >= $s))
346388 then $a
347389 else throw("List size exceeds 83")
348390
349391 $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60), 61), 62), 63), 64), 65), 66), 67), 68), 69), 70), 71), 72), 73), 74), 75), 76), 77), 78), 79), 80), 81), 82), 83)
350392 }
351393 [IntegerEntry("a", reward)]
352394 }
353395
354396
355397 @Verifier(tx)
356398 func verify () = {
357399 let checkStarted = (getInt(kTotalLiquidity) >= getInt(kLiquidityThreshold))
358400 func totalEggSpending (accum,payment) = if ((payment.assetId == getEggId()))
359401 then (accum + payment.amount)
360402 else accum
361403
362404 match tx {
363405 case inv: InvokeScriptTransaction =>
364406 let unstakedRewardNow = getInt(kUnstakedReward)
365407 let toDistr = getInt(kToDistr)
366408 let minBalance = (unstakedRewardNow + toDistr)
367409 let acceptedCallsStaking = ["stakeFarmTokens", "claimReward", "withdrawFarmTokens"]
368410 let acceptedCallsThis = ["callUnstakeProxy", "revertTransfer", "claimCeoFee", "lockInvestments", "unlockInvestments"]
369411 if (if ((inv.function == "unstakeNFT"))
370412 then true
371413 else (inv.function == "unstakeJackpot"))
372414 then throw("You cannot call these functions directly")
373415 else if ((sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey) == false))
374416 then throw("_100")
375417 else if ((checkStarted == false))
376418 then throw("_14")
377419 else if ((getBool(kLocked) == true))
378420 then throw("_22")
379421 else if (if ((inv.fee > 900000))
380422 then true
381423 else (inv.feeAssetId != unit))
382424 then throw("_15")
383425 else if (if ((addressFromRecipient(inv.dApp) != stakingAddress))
384426 then (inv.function == "claimReward")
385427 else false)
386428 then throw("_16")
387429 else if ((size(inv.payments) > 2))
388430 then throw("_17")
389431 else if ((minBalance > ((assetBalance(this, getEggId()) - {
390432 let $l = inv.payments
391433 let $s = size($l)
392434 let $acc0 = 0
393435 func $f0_1 ($a,$i) = if (($i >= $s))
394436 then $a
395437 else totalEggSpending($a, $l[$i])
396438
397439 func $f0_2 ($a,$i) = if (($i >= $s))
398440 then $a
399441 else throw("List size exceeds 3")
400442
401443 $f0_2($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3)
402444 }) * 1000000)))
403445 then throw(("Your minimal balance should be = " + toString(minBalance)))
404446 else if (if ((addressFromRecipient(inv.dApp) == this))
405447 then containsElement(acceptedCallsThis, inv.function)
406448 else false)
407449 then sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
408450 else if (if ((addressFromRecipient(inv.dApp) == addressFromStringValue(getMarketProxyAddr())))
409451 then (inv.function == "callMarketplaceProxy")
410452 else false)
411453 then sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
412454 else if (if ((addressFromRecipient(inv.dApp) == stakingAddress))
413455 then containsElement(acceptedCallsStaking, inv.function)
414456 else false)
415457 then sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
416458 else {
417459 let allowedContracts = getStrA(mAccAddr, "allowed_contracts")
418460 let allowedContractsList = split(allowedContracts, ";")
419461 let dappToCall = toString(addressFromRecipient(inv.dApp))
420462 (indexOf(allowedContractsList, dappToCall) != unit)
421463 }
422464 case ss: SetScriptTransaction =>
423465 sigVerify(tx.bodyBytes, tx.proofs[0], mAccPKey)
424466 case mt: MassTransferTransaction =>
425467 sigVerify(tx.bodyBytes, tx.proofs[0], mAccPKey)
426468 case dt: DataTransaction =>
427469 sigVerify(tx.bodyBytes, tx.proofs[0], mAccPKey)
428470 case _ =>
429471 false
430472 }
431473 }
432474

github/deemru/w8io/3ef1775 
67.26 ms