tx · DL2dv4wiSKpTn7AfqGiN1zGohxwQvRYwx6WPnVc6t2MU

3PAETTtuW7aSiyKtn9GuML3RgtV1xdq1mQW:  -0.02800000 Waves

2022.08.11 18:53 [3245515] smart account 3PAETTtuW7aSiyKtn9GuML3RgtV1xdq1mQW > SELF 0.00000000 Waves

{ "type": 13, "id": "DL2dv4wiSKpTn7AfqGiN1zGohxwQvRYwx6WPnVc6t2MU", "fee": 2800000, "feeAssetId": null, "timestamp": 1660233201800, "version": 2, "chainId": 87, "sender": "3PAETTtuW7aSiyKtn9GuML3RgtV1xdq1mQW", "senderPublicKey": "DSNxHVyf38CbPoz2oSJ1b4FWqRvqFsAphCzdtrPeWPHa", "proofs": [ "4Jxw19H7s8oTofk3HMNmQAuMfmRRovtwimRyPWF1pRpz6FFNUqSExXXZEc5cnPdE4CVPeQAzT9wwHESR3WkTQhvL" ], "script": "base64:AAIFAAAAAAAAAC0IAhIDCgEIEgASBAoCCAgSBAoCCAgSABIAEgMKAQgSAwoBCBIDCgEIEgMKAQgAAAAqAAAAAApwZXJjaFByaWNlCQAAaAAAAAIAAAAAAAAAAGQAAAAAAAAPQkAAAAAABXNjYWxlAAAAAAAAACcQAAAAAAZzY2FsZTIAAAAAAAAPQkABAAAAFHRyeUdldFN0cmluZ0V4dGVybmFsAAAAAgAAAAdhZGRyZXNzAAAAA2tleQQAAAAHJG1hdGNoMAkABB0AAAACBQAAAAdhZGRyZXNzBQAAAANrZXkDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAABlN0cmluZwQAAAABYQUAAAAHJG1hdGNoMAUAAAABYQIAAAAAAQAAAAx0cnlHZXRTdHJpbmcAAAABAAAAA2tleQkBAAAAFHRyeUdldFN0cmluZ0V4dGVybmFsAAAAAgUAAAAEdGhpcwUAAAADa2V5AQAAAAlnZXRPcmFjbGUAAAAACQEAAAAHQWRkcmVzcwAAAAEJAAJZAAAAAQkBAAAADHRyeUdldFN0cmluZwAAAAECAAAAFHN0YXRpY19vcmFjbGVBZGRyZXNzAQAAAA1nZXRFZ2dBc3NldElkAAAAAAkAAlkAAAABCQEAAAAUdHJ5R2V0U3RyaW5nRXh0ZXJuYWwAAAACCQEAAAAJZ2V0T3JhY2xlAAAAAAIAAAARc3RhdGljX2VnZ0Fzc2V0SWQBAAAAE2dldEluY3ViYXRvckFkZHJlc3MAAAAACQEAAAAHQWRkcmVzcwAAAAEJAAJZAAAAAQkBAAAAFHRyeUdldFN0cmluZ0V4dGVybmFsAAAAAgkBAAAACWdldE9yYWNsZQAAAAACAAAAF3N0YXRpY19pbmN1YmF0b3JBZGRyZXNzAQAAABFnZXRSZWJpcnRoQWRkcmVzcwAAAAAJAQAAAAdBZGRyZXNzAAAAAQkAAlkAAAABCQEAAAAUdHJ5R2V0U3RyaW5nRXh0ZXJuYWwAAAACCQEAAAAJZ2V0T3JhY2xlAAAAAAIAAAAVc3RhdGljX3JlYmlydGhBZGRyZXNzAQAAABNnZXRTd29wUHJvbW9BZGRyZXNzAAAAAAkBAAAAB0FkZHJlc3MAAAABCQACWQAAAAEJAQAAABR0cnlHZXRTdHJpbmdFeHRlcm5hbAAAAAIJAQAAAAlnZXRPcmFjbGUAAAAAAgAAABdzdGF0aWNfc3dvcFByb21vQWRkcmVzcwEAAAARZ2V0QnJlZWRlckFkZHJlc3MAAAAACQEAAAAHQWRkcmVzcwAAAAEJAAJZAAAAAQkBAAAAFHRyeUdldFN0cmluZ0V4dGVybmFsAAAAAgkBAAAACWdldE9yYWNsZQAAAAACAAAAFXN0YXRpY19icmVlZGVyQWRkcmVzcwEAAAAVZ2V0UmVmQ29udHJhY3RBZGRyZXNzAAAAAAkBAAAAB0FkZHJlc3MAAAABCQACWQAAAAEJAQAAABR0cnlHZXRTdHJpbmdFeHRlcm5hbAAAAAIJAQAAAAlnZXRPcmFjbGUAAAAAAgAAABlzdGF0aWNfcmVmQ29udHJhY3RBZGRyZXNzAQAAAA9nZXRJdGVtc0FkZHJlc3MAAAAACQEAAAAHQWRkcmVzcwAAAAEJAAJZAAAAAQkBAAAAFHRyeUdldFN0cmluZ0V4dGVybmFsAAAAAgkBAAAACWdldE9yYWNsZQAAAAACAAAAE3N0YXRpY19pdGVtc0FkZHJlc3MBAAAAEmdldE1ldGFyYWNlQWRkcmVzcwAAAAAJAQAAAAdBZGRyZXNzAAAAAQkAAlkAAAABCQEAAAAUdHJ5R2V0U3RyaW5nRXh0ZXJuYWwAAAACCQEAAAAJZ2V0T3JhY2xlAAAAAAIAAAAWc3RhdGljX21ldGFSYWNlQWRkcmVzcwEAAAAUZ2V0QWNjQm9vc3RlckFkZHJlc3MAAAAACQEAAAAHQWRkcmVzcwAAAAEJAAJZAAAAAQkBAAAAFHRyeUdldFN0cmluZ0V4dGVybmFsAAAAAgkBAAAACWdldE9yYWNsZQAAAAACAAAAGHN0YXRpY19hY2NCb29zdGVyQWRkcmVzcwEAAAAPZ2V0UHJveHlTdGFraW5nAAAAAAkBAAAAFHRyeUdldFN0cmluZ0V4dGVybmFsAAAAAgkBAAAACWdldE9yYWNsZQAAAAACAAAAHHN0YXRpY19wcm94eVN0YWtpbmdDb250cmFjdHMBAAAADmdldE1haW50ZW5hbmNlAAAAAAkBAAAAFHRyeUdldFN0cmluZ0V4dGVybmFsAAAAAgkBAAAACWdldE9yYWNsZQAAAAACAAAAEnN0YXRpY19tYWludGVuYW5jZQEAAAASZ2V0Q2ZNYXN0ZXJB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YWxfbGFzdENoZWNrSW50ZXJlc3QEAAAAFnByZXZpb3VzSW50ZXJlc3RIZWlnaHQJAQAAAA10cnlHZXRJbnRlZ2VyAAAAAQIAAAAddG90YWxfbGFzdENoZWNrSW50ZXJlc3RIZWlnaHQEAAAAEXRvdGFsRmFybWluZ1Bvd2VyCQEAAAANdHJ5R2V0SW50ZWdlcgAAAAECAAAAEnRvdGFsX2Zhcm1pbmdQb3dlcgkBAAAADGNhbGNJbnRlcmVzdAAAAAMFAAAAEHByZXZpb3VzSW50ZXJlc3QFAAAAFnByZXZpb3VzSW50ZXJlc3RIZWlnaHQFAAAAEXRvdGFsRmFybWluZ1Bvd2VyAwkBAAAAAiE9AAAAAgkBAAAADXRyeUdldEludGVnZXIAAAABAgAAABF0b3RhbF9zdGFydEhlaWdodAAAAAAAAAAAAAkBAAAADXRyeUdldEludGVnZXIAAAABAgAAABd0b3RhbF9sYXN0Q2hlY2tJbnRlcmVzdAkAAAIAAAABAgAAABxmYXJtaW5nIGlzIG5vdCBsYXVuY2hlZCwgeWV0AQAAABRjYWxjQXNzZXRSZXdhcmREZWx0YQAAAAMAAAAHYWRkcmVzcwAAAAdhc3NldElkAAAAEWFzc2V0RmFybWluZ1Bvd2VyBAAAABZsYXN0Q2hlY2tBc3NldEludGVyZXN0CQEAAAANdHJ5R2V0SW50ZWdlcgAAAAEJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAIYWRkcmVzc18FAAAAB2FkZHJlc3MCAAAAB19hc3NldF8FAAAAB2Fzc2V0SWQCAAAAEl9sYXN0Q2hlY2tJbnRlcmVzdAQAAAAPY3VycmVudEludGVyZXN0CQEAAAASZ2V0Q3VycmVudEludGVyZXN0AAAAAAkAAGgAAAACBQAAABFhc3NldEZhcm1pbmdQb3dlcgkAAGUAAAACBQAAAA9jdXJyZW50SW50ZXJlc3QFAAAAFmxhc3RDaGVja0Fzc2V0SW50ZXJlc3QBAAAAFGFkZEFzc2V0SWRUb0dlbkVudHJ5AAAAAgAAAAdhc3NldElkAAAACGFzc2V0R2VuBAAAAAxjdXJyZW50VmFsdWUJAQAAAAx0cnlHZXRTdHJpbmcAAAABCQABLAAAAAIJAAEsAAAAAgIAAAAHYXNzZXRzXwUAAAAIYXNzZXRHZW4CAAAAB19sb2NrZWQDCQAAAAAAAAIFAAAADGN1cnJlbnRWYWx1ZQIAAAAABQAAAAdhc3NldElkCQABLAAAAAIJAAEsAAAAAgUAAAAMY3VycmVudFZhbHVlAgAAAAEsBQAAAAdhc3NldElkAQAAAA5nZXRTdGFrZVJlc3VsdAAAAAQAAAAHYWRkcmVzcwAAAAdhc3NldElkAAAAEWFzc2V0RmFybWluZ1Bvd2VyAAAACHVuc3Rha2VyBAAAAAVhc3NldAkAAlgAAAABBQAAAAdhc3NldElkCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACAgAAABJ0b3RhbF9mYXJtaW5nUG93ZXIJAABkAAAAAgkBAAAADXRyeUdldEludGVnZXIAAAABAgAAABJ0b3RhbF9mYXJtaW5nUG93ZXIFAAAAEWFzc2V0RmFybWluZ1Bvd2VyCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACAgAAABd0b3RhbF9sYXN0Q2hlY2tJbnRlcmVzdAkBAAAAEmdldEN1cnJlbnRJbnRlcmVzdAAAAAAJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAICAAAAHXRvdGFsX2xhc3RDaGVja0ludGVyZXN0SGVpZ2h0BQAAAAZoZWlnaHQJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkAASwAAAACCQABLAAAAAICAAAABmFzc2V0XwUAAAAFYXNzZXQCAAAABl9vd25lcgUAAAAHYWRkcmVzcwkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAhhZGRyZXNzXwUAAAAHYWRkcmVzcwIAAAAHX2Fzc2V0XwUAAAAFYXNzZXQCAAAADV9mYXJtaW5nUG93ZXIFAAAAEWFzc2V0RmFybWluZ1Bvd2VyCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAACGFkZHJlc3NfBQAAAAdhZGRyZXNzAgAAAAdfYXNzZXRfBQAAAAVhc3NldAIAAAASX2xhc3RDaGVja0ludGVyZXN0CQEAAAASZ2V0Q3Vy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IHlvdXIgZmFybWluZyByZXdhcmRzIHRpbGwgdGhlIGVuZCBvZiBEdWNrU3F1aWQgZ2FtZS4gUXVhY2sgaW4gcGVhY2UhBAAAAAdhc3NldElkCQACWQAAAAEFAAAABWFzc2V0BAAAAAdhZGRyZXNzAwkBAAAAEGlzUHJveHlTdGFraW5nU2MAAAABCQAEJQAAAAEIBQAAAAFpAAAABmNhbGxlcgUAAAADYWRkCQAEJQAAAAEIBQAAAAFpAAAABmNhbGxlcgQAAAAIdW5zdGFrZXIJAQAAAAx0cnlHZXRTdHJpbmcAAAABCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAACGFkZHJlc3NfBQAAAAdhZGRyZXNzAgAAAAdfYXNzZXRfBQAAAAVhc3NldAIAAAAJX3Vuc3Rha2VyBAAAABFhc3NldEZhcm1pbmdQb3dlcgkBAAAAHWdldExhc3RLbm93bkFzc2V0RmFybWluZ1Bvd2VyAAAAAgUAAAAHYWRkcmVzcwUAAAAFYXNzZXQEAAAAEGFzc2V0UmV3YXJkRGVsdGEJAQAAABRjYWxjQXNzZXRSZXdhcmREZWx0YQAAAAMFAAAAB2FkZHJlc3MFAAAABWFzc2V0BQAAABFhc3NldEZhcm1pbmdQb3dlcgQAAAAMZmFybWVkQW1vdW50CQAAZAAAAAIFAAAAEGFzc2V0UmV3YXJkRGVsdGEJAQAAAA10cnlHZXRJbnRlZ2VyAAAAAQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAhhZGRyZXNzXwUAAAAHYWRkcmVzcwIAAAAHX2Fzc2V0XwUAAAAFYXNzZXQCAAAAFl9sYXN0Q2hlY2tGYXJtZWRBbW91bnQEAAAAD3dpdGhkcmF3bkFtb3VudAkBAAAADXRyeUdldEludGVnZXIAAAABCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAACGFkZHJlc3NfBQAAAAdhZGRyZXNzAgAAAAdfYXNzZXRfBQAAAAVhc3NldAIAAAAQX3dpdGhkcmF3bkFtb3VudAQAAAAGcmV3YXJkCQAAaQAAAAIJAABlAAAAAgUAAAAMZmFybWVkQW1vdW50BQAAAA93aXRoZHJhd25BbW91bnQJAABoAAAAAgUAAAAFc2Nh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c3NldElkCQACWQAAAAEFAAAABWFzc2V0BAAAAAVjb2xvcgkBAAAADHRyeUdldFN0cmluZwAAAAEJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAIYWRkcmVzc18FAAAAB2FkZHJlc3MCAAAAB19hc3NldF8FAAAABWFzc2V0AgAAAAtfcGVyY2hDb2xvcgQAAAARYXNzZXRGYXJtaW5nUG93ZXIJAQAAAB1nZXRMYXN0S25vd25Bc3NldEZhcm1pbmdQb3dlcgAAAAIFAAAAB2FkZHJlc3MFAAAABWFzc2V0BAAAABBhc3NldFJld2FyZERlbHRhCQEAAAAUY2FsY0Fzc2V0UmV3YXJkRGVsdGEAAAADBQAAAAdhZGRyZXNzBQAAAAVhc3NldAUAAAARYXNzZXRGYXJtaW5nUG93ZXIEAAAADGZhcm1lZEFtb3VudAkAAGQAAAACBQAAABBhc3NldFJld2FyZERlbHRhCQEAAAANdHJ5R2V0SW50ZWdlcgAAAAEJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAIYWRkcmVzc18FAAAAB2FkZHJlc3MCAAAAB19hc3NldF8FAAAABWFzc2V0AgAAABZfbGFzdENoZWNrRmFybWVkQW1vdW50BAAAAA93aXRoZHJhd25BbW91bnQJAQAAAA10cnlHZXRJbnRlZ2VyAAAAAQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAhhZGRyZXNzXwUAAAAHYWRkcmVzcwIAAAAHX2Fzc2V0XwUAAAAFYXNzZXQCAAAAEF93aXRoZHJhd25BbW91bnQEAAAABnJld2FyZAkAAGkAAAACCQAAZQAAAAIFAAAADGZhcm1lZEFtb3VudAUAAAAPd2l0aGRyYXduQW1vdW50CQAAaAAAAAIFAAAABXNjYWxlAAAAAAAAAABkBAAAAAh1bnN0YWtlcgkBAAAADHRyeUdldFN0cmluZwAAAAEJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAIYWRkcmVzc18FAAAAB2FkZHJlc3MCAAAAB19hc3NldF8FAAAABWFzc2V0AgAAAAlfdW5zdGFrZXIDAwkBAAAAAiE9AAAAAgUAAAAIdW5zdGFrZXICAAAAAAkB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", "height": 3245515, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: BFaf1NheFD6ryoDkHSKJTRVnaKmWuQDE7xjNAEcf7PSJ Next: 9q1UyeJh7rjLNPqs6mhcRGkQw9b9TmWfLvSDoWUNcF5W Diff:
OldNewDifferences
245245 then throw("you need to set color properly")
246246 else {
247247 let exactPrice = calculatePerchPrice(toString(i.caller))
248- let amountPaidByCoupons = asInt(invoke(getCouponsAddress(), "useCoupons", [exactPrice], nil))
249- if ((amountPaidByCoupons == amountPaidByCoupons))
248+ let leftToPay = if ((i.originCaller == i.caller))
250249 then {
251- let leftToPay = (exactPrice - amountPaidByCoupons)
252- let payment = if ((leftToPay != 0))
253- then {
254- let firstPayment = value(i.payments[0])
255- if ((firstPayment.assetId != getEggAssetId()))
256- then throw(("FBP: You can attach only EGG tokens with the following asset id: " + toBase58String(getEggAssetId())))
257- else if ((firstPayment.amount != leftToPay))
258- then throw(((("FBP: To buy a perch you currently need the following amount of EGGlets: " + toString(leftToPay)) + " ") + toString(i.caller)))
259- else {
260- let refererRewardForPerch = fraction(leftToPay, RefererReward, 100)
261- let refCall = invoke(getRefContractAddress(), "refPayment", [refererAddress], [AttachedPayment(getEggAssetId(), refererRewardForPerch)])
262- if ((refCall == refCall))
263- then {
264- let burnCall = invoke(getBurnAddress(), "burnAttachedPayments", nil, [AttachedPayment(getEggAssetId(), (leftToPay - refererRewardForPerch))])
265- if ((burnCall == burnCall))
266- then leftToPay
267- else throw("Strict value is not equal to itself.")
268- }
250+ let amountPaidByCoupons = asInt(invoke(getCouponsAddress(), "useCoupons", [exactPrice], nil))
251+ if ((amountPaidByCoupons == amountPaidByCoupons))
252+ then (exactPrice - amountPaidByCoupons)
253+ else throw("Strict value is not equal to itself.")
254+ }
255+ else exactPrice
256+ let payment = if ((leftToPay != 0))
257+ then {
258+ let firstPayment = value(i.payments[0])
259+ if ((firstPayment.assetId != getEggAssetId()))
260+ then throw(("FBP: You can attach only EGG tokens with the following asset id: " + toBase58String(getEggAssetId())))
261+ else if ((firstPayment.amount != leftToPay))
262+ then throw(((("FBP: To buy a perch you currently need the following amount of EGGlets: " + toString(leftToPay)) + " ") + toString(i.caller)))
263+ else {
264+ let refererRewardForPerch = fraction(leftToPay, RefererReward, 100)
265+ let refCall = invoke(getRefContractAddress(), "refPayment", [refererAddress], [AttachedPayment(getEggAssetId(), refererRewardForPerch)])
266+ if ((refCall == refCall))
267+ then {
268+ let burnCall = invoke(getBurnAddress(), "burnAttachedPayments", nil, [AttachedPayment(getEggAssetId(), (leftToPay - refererRewardForPerch))])
269+ if ((burnCall == burnCall))
270+ then leftToPay
269271 else throw("Strict value is not equal to itself.")
270272 }
271- }
272- else 0
273- if ((payment == payment))
274- then {
275- let perchAmountKey = ((("address_" + toString(i.caller)) + "_perchesAvailable_") + color)
276- let perchAmount = tryGetInteger(perchAmountKey)
273+ else throw("Strict value is not equal to itself.")
274+ }
275+ }
276+ else 0
277+ if ((payment == payment))
278+ then {
279+ let perchAmountKey = ((("address_" + toString(i.caller)) + "_perchesAvailable_") + color)
280+ let perchAmount = tryGetInteger(perchAmountKey)
277281 [IntegerEntry(perchAmountKey, (perchAmount + 1))]
278- }
279- else throw("Strict value is not equal to itself.")
280282 }
281283 else throw("Strict value is not equal to itself.")
282284 }
325327 else if ((0 >= availablePerches))
326328 then throw(("no perches available for the color " + color))
327329 else {
328- let $t01149011563 = getAssetFarmingPower(assetId, address)
329- let assetGen = $t01149011563._1
330- let assetFarmingPower = $t01149011563._2
330+ let $t01158811661 = getAssetFarmingPower(assetId, address)
331+ let assetGen = $t01158811661._1
332+ let assetFarmingPower = $t01158811661._2
331333 (getStakeResult(address, assetId, assetFarmingPower, realCaller) ++ [IntegerEntry(((("address_" + address) + "_perchesAvailable_") + color), (availablePerches - 1))])
332334 }
333335 }
351353 if ((pmt.amount != 1))
352354 then throw("NFT is not attached")
353355 else {
354- let $t01218712260 = getAssetFarmingPower(assetId, address)
355- let assetGen = $t01218712260._1
356- let assetFarmingPower = $t01218712260._2
356+ let $t01228512358 = getAssetFarmingPower(assetId, address)
357+ let assetGen = $t01228512358._1
358+ let assetFarmingPower = $t01228512358._2
357359 let asset = toBase58String(assetId)
358360 let realCaller = toString(i.caller)
359361 (getStakeResult(address, assetId, assetFarmingPower, realCaller) ++ [BooleanEntry((((("address_" + address) + "_asset_") + asset) + "_without_perch"), true)])
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let perchPrice = (100 * 1000000)
55
66 let scale = 10000
77
88 let scale2 = 1000000
99
1010 func tryGetStringExternal (address,key) = match getString(address, key) {
1111 case a: String =>
1212 a
1313 case _ =>
1414 ""
1515 }
1616
1717
1818 func tryGetString (key) = tryGetStringExternal(this, key)
1919
2020
2121 func getOracle () = Address(fromBase58String(tryGetString("static_oracleAddress")))
2222
2323
2424 func getEggAssetId () = fromBase58String(tryGetStringExternal(getOracle(), "static_eggAssetId"))
2525
2626
2727 func getIncubatorAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), "static_incubatorAddress")))
2828
2929
3030 func getRebirthAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), "static_rebirthAddress")))
3131
3232
3333 func getSwopPromoAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), "static_swopPromoAddress")))
3434
3535
3636 func getBreederAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), "static_breederAddress")))
3737
3838
3939 func getRefContractAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), "static_refContractAddress")))
4040
4141
4242 func getItemsAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), "static_itemsAddress")))
4343
4444
4545 func getMetaraceAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), "static_metaRaceAddress")))
4646
4747
4848 func getAccBoosterAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), "static_accBoosterAddress")))
4949
5050
5151 func getProxyStaking () = tryGetStringExternal(getOracle(), "static_proxyStakingContracts")
5252
5353
5454 func getMaintenance () = tryGetStringExternal(getOracle(), "static_maintenance")
5555
5656
5757 func getCfMasterAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), "static_cfMasterAddress")))
5858
5959
6060 func getDuckWrapperSc () = Address(fromBase58String(tryGetStringExternal(getOracle(), "static_duckWrapper")))
6161
6262
6363 func getCouponsAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), "static_couponsAddress")))
6464
6565
6666 func getBurnAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), "static_burnAddress")))
6767
6868
6969 let RefererReward = 5
7070
7171 func getRewardPerBlock () = 684
7272
7373
7474 func isLocked () = if ((getMaintenance() != ""))
7575 then throw(getMaintenance())
7676 else 0
7777
7878
7979 func tryGetInteger (key) = match getInteger(this, key) {
8080 case b: Int =>
8181 b
8282 case _ =>
8383 0
8484 }
8585
8686
8787 func tryGetBoolean (key) = match getBoolean(this, key) {
8888 case b: Boolean =>
8989 b
9090 case _ =>
9191 false
9292 }
9393
9494
9595 func isUserBlacklisted (address) = false
9696
9797
9898 func getAssetOrigin (generation) = if ((generation == "G"))
9999 then getIncubatorAddress()
100100 else getBreederAddress()
101101
102102
103103 func getAssetRarity (genotype,generation) = {
104104 let quantity = valueOrErrorMessage(getInteger(getAssetOrigin(generation), (("stats_" + genotype) + "_quantity")), (("stats_" + genotype) + "_quantity not found"))
105105 let power = pow((10000 / quantity), 4, 5, 1, 2, FLOOR)
106106 if ((power > 0))
107107 then power
108108 else 2
109109 }
110110
111111
112112 func asString (value) = match value {
113113 case string: String =>
114114 string
115115 case _ =>
116116 throw("FAS: wrong type, expected: String")
117117 }
118118
119119
120120 func asInt (value) = match value {
121121 case int: Int =>
122122 int
123123 case _ =>
124124 throw("FAI: wrong type, expected: Int")
125125 }
126126
127127
128128 func getAssetFarmingPower (assetId,address) = if (if ((value(assetInfo(assetId)).issuer == getBreederAddress()))
129129 then true
130130 else (value(assetInfo(assetId)).issuer == getIncubatorAddress()))
131131 then {
132132 let farmBoost = asInt(invoke(getItemsAddress(), "calculateFarmingPowerBoost", [toBase58String(assetId), address], nil))
133133 if ((farmBoost == farmBoost))
134134 then {
135135 let assetName = value(assetInfo(assetId)).name
136136 let isJackpot = (takeRight(value(assetName), 1) == "U")
137137 let farmGen = if (isJackpot)
138138 then ""
139139 else asString(invoke(getBreederAddress(), "getGenFromName", [assetName], nil))
140140 if ((farmGen == farmGen))
141141 then {
142142 let rarity = if (isJackpot)
143143 then 100
144144 else {
145145 let generation = take(takeRight(assetName, 2), 1)
146146 getAssetRarity(farmGen, generation)
147147 }
148148 let totalFarmingPower = (rarity + fraction(rarity, farmBoost, 100))
149149 $Tuple2(farmGen, totalFarmingPower)
150150 }
151151 else throw("Strict value is not equal to itself.")
152152 }
153153 else throw("Strict value is not equal to itself.")
154154 }
155155 else throw("not valid NFT")
156156
157157
158158 func getLastKnownAssetFarmingPower (address,assetId) = tryGetInteger((((("address_" + address) + "_asset_") + assetId) + "_farmingPower"))
159159
160160
161161 func getAssetsByGen (gen) = {
162162 let s = tryGetString(("assets_" + gen))
163163 if ((s == ""))
164164 then nil
165165 else split(s, ",")
166166 }
167167
168168
169169 func calcInterest (previousInterest,previousInterestHeight,totalFarmingPower) = (previousInterest + (((scale * getRewardPerBlock()) * (height - previousInterestHeight)) / totalFarmingPower))
170170
171171
172172 func getCurrentInterest () = if ((tryGetInteger("total_farmingPower") > 0))
173173 then {
174174 let previousInterest = tryGetInteger("total_lastCheckInterest")
175175 let previousInterestHeight = tryGetInteger("total_lastCheckInterestHeight")
176176 let totalFarmingPower = tryGetInteger("total_farmingPower")
177177 calcInterest(previousInterest, previousInterestHeight, totalFarmingPower)
178178 }
179179 else if ((tryGetInteger("total_startHeight") != 0))
180180 then tryGetInteger("total_lastCheckInterest")
181181 else throw("farming is not launched, yet")
182182
183183
184184 func calcAssetRewardDelta (address,assetId,assetFarmingPower) = {
185185 let lastCheckAssetInterest = tryGetInteger((((("address_" + address) + "_asset_") + assetId) + "_lastCheckInterest"))
186186 let currentInterest = getCurrentInterest()
187187 (assetFarmingPower * (currentInterest - lastCheckAssetInterest))
188188 }
189189
190190
191191 func addAssetIdToGenEntry (assetId,assetGen) = {
192192 let currentValue = tryGetString((("assets_" + assetGen) + "_locked"))
193193 if ((currentValue == ""))
194194 then assetId
195195 else ((currentValue + ",") + assetId)
196196 }
197197
198198
199199 func getStakeResult (address,assetId,assetFarmingPower,unstaker) = {
200200 let asset = toBase58String(assetId)
201201 [IntegerEntry("total_farmingPower", (tryGetInteger("total_farmingPower") + assetFarmingPower)), IntegerEntry("total_lastCheckInterest", getCurrentInterest()), IntegerEntry("total_lastCheckInterestHeight", height), StringEntry((("asset_" + asset) + "_owner"), address), IntegerEntry((((("address_" + address) + "_asset_") + asset) + "_farmingPower"), assetFarmingPower), IntegerEntry((((("address_" + address) + "_asset_") + asset) + "_lastCheckInterest"), getCurrentInterest()), StringEntry((((("address_" + address) + "_asset_") + asset) + "_unstaker"), unstaker)]
202202 }
203203
204204
205205 func getUnstakeResult (address,assetId,rewardDelta,withdrawnAmount,assetFarmingPower) = {
206206 let asset = toBase58String(assetId)
207207 [IntegerEntry("total_farmingPower", (tryGetInteger("total_farmingPower") - assetFarmingPower)), IntegerEntry("total_lastCheckInterest", getCurrentInterest()), IntegerEntry("total_lastCheckInterestHeight", height), DeleteEntry((("asset_" + asset) + "_owner")), DeleteEntry((((("address_" + address) + "_asset_") + asset) + "_unstaker")), IntegerEntry((((("address_" + address) + "_asset_") + asset) + "_farmingPower"), 0), IntegerEntry((((("address_" + address) + "_asset_") + asset) + "_lastCheckInterest"), getCurrentInterest()), IntegerEntry((((("address_" + address) + "_asset_") + asset) + "_withdrawnAmount"), (tryGetInteger((((("address_" + address) + "_asset_") + asset) + "_withdrawnAmount")) + (withdrawnAmount * scale2))), IntegerEntry((((("address_" + address) + "_asset_") + asset) + "_lastCheckFarmedAmount"), (tryGetInteger((((("address_" + address) + "_asset_") + asset) + "_lastCheckFarmedAmount")) + rewardDelta))]
208208 }
209209
210210
211211 func calculatePerchPrice (address) = {
212212 let hasArtefactStaked = tryGetStringExternal(getAccBoosterAddress(), (("ART-XMISTL_" + address) + "_owner"))
213213 if ((hasArtefactStaked == ""))
214214 then perchPrice
215215 else ((perchPrice / 10) * 9)
216216 }
217217
218218
219219 func isProxyStakingSc (address) = {
220220 let allowedContracts = getProxyStaking()
221221 let allowedContractsList = split(allowedContracts, ";")
222222 (indexOf(allowedContractsList, address) != unit)
223223 }
224224
225225
226226 @Callable(i)
227227 func configureOracle (oracle) = if ((i.caller != this))
228228 then throw("FCO: admin only")
229229 else [StringEntry("static_oracleAddress", oracle)]
230230
231231
232232
233233 @Callable(i)
234234 func init () = if ((i.caller != this))
235235 then throw("FI: admin only")
236236 else [IntegerEntry("total_startHeight", height)]
237237
238238
239239
240240 @Callable(i)
241241 func buyPerch (color,refererAddress) = {
242242 let locked = isLocked()
243243 if ((locked == locked))
244244 then if ((0 > value(indexOf(["B", "R", "G", "Y"], color))))
245245 then throw("you need to set color properly")
246246 else {
247247 let exactPrice = calculatePerchPrice(toString(i.caller))
248- let amountPaidByCoupons = asInt(invoke(getCouponsAddress(), "useCoupons", [exactPrice], nil))
249- if ((amountPaidByCoupons == amountPaidByCoupons))
248+ let leftToPay = if ((i.originCaller == i.caller))
250249 then {
251- let leftToPay = (exactPrice - amountPaidByCoupons)
252- let payment = if ((leftToPay != 0))
253- then {
254- let firstPayment = value(i.payments[0])
255- if ((firstPayment.assetId != getEggAssetId()))
256- then throw(("FBP: You can attach only EGG tokens with the following asset id: " + toBase58String(getEggAssetId())))
257- else if ((firstPayment.amount != leftToPay))
258- then throw(((("FBP: To buy a perch you currently need the following amount of EGGlets: " + toString(leftToPay)) + " ") + toString(i.caller)))
259- else {
260- let refererRewardForPerch = fraction(leftToPay, RefererReward, 100)
261- let refCall = invoke(getRefContractAddress(), "refPayment", [refererAddress], [AttachedPayment(getEggAssetId(), refererRewardForPerch)])
262- if ((refCall == refCall))
263- then {
264- let burnCall = invoke(getBurnAddress(), "burnAttachedPayments", nil, [AttachedPayment(getEggAssetId(), (leftToPay - refererRewardForPerch))])
265- if ((burnCall == burnCall))
266- then leftToPay
267- else throw("Strict value is not equal to itself.")
268- }
250+ let amountPaidByCoupons = asInt(invoke(getCouponsAddress(), "useCoupons", [exactPrice], nil))
251+ if ((amountPaidByCoupons == amountPaidByCoupons))
252+ then (exactPrice - amountPaidByCoupons)
253+ else throw("Strict value is not equal to itself.")
254+ }
255+ else exactPrice
256+ let payment = if ((leftToPay != 0))
257+ then {
258+ let firstPayment = value(i.payments[0])
259+ if ((firstPayment.assetId != getEggAssetId()))
260+ then throw(("FBP: You can attach only EGG tokens with the following asset id: " + toBase58String(getEggAssetId())))
261+ else if ((firstPayment.amount != leftToPay))
262+ then throw(((("FBP: To buy a perch you currently need the following amount of EGGlets: " + toString(leftToPay)) + " ") + toString(i.caller)))
263+ else {
264+ let refererRewardForPerch = fraction(leftToPay, RefererReward, 100)
265+ let refCall = invoke(getRefContractAddress(), "refPayment", [refererAddress], [AttachedPayment(getEggAssetId(), refererRewardForPerch)])
266+ if ((refCall == refCall))
267+ then {
268+ let burnCall = invoke(getBurnAddress(), "burnAttachedPayments", nil, [AttachedPayment(getEggAssetId(), (leftToPay - refererRewardForPerch))])
269+ if ((burnCall == burnCall))
270+ then leftToPay
269271 else throw("Strict value is not equal to itself.")
270272 }
271- }
272- else 0
273- if ((payment == payment))
274- then {
275- let perchAmountKey = ((("address_" + toString(i.caller)) + "_perchesAvailable_") + color)
276- let perchAmount = tryGetInteger(perchAmountKey)
273+ else throw("Strict value is not equal to itself.")
274+ }
275+ }
276+ else 0
277+ if ((payment == payment))
278+ then {
279+ let perchAmountKey = ((("address_" + toString(i.caller)) + "_perchesAvailable_") + color)
280+ let perchAmount = tryGetInteger(perchAmountKey)
277281 [IntegerEntry(perchAmountKey, (perchAmount + 1))]
278- }
279- else throw("Strict value is not equal to itself.")
280282 }
281283 else throw("Strict value is not equal to itself.")
282284 }
283285 else throw("Strict value is not equal to itself.")
284286 }
285287
286288
287289
288290 @Callable(i)
289291 func addFreePerch (address,color) = {
290292 let locked = isLocked()
291293 if ((locked == locked))
292294 then if ((0 > value(indexOf(["B", "R", "G", "Y"], color))))
293295 then throw("you need to set color properly")
294296 else if (if (if ((i.caller != getRebirthAddress()))
295297 then (i.caller != this)
296298 else false)
297299 then (i.caller != getSwopPromoAddress())
298300 else false)
299301 then throw("rebirth and swop promo only")
300302 else {
301303 let perchAmountKey = ((("address_" + address) + "_perchesAvailable_") + color)
302304 let perchAmount = tryGetInteger(perchAmountKey)
303305 $Tuple2([IntegerEntry(perchAmountKey, (perchAmount + 1))], "")
304306 }
305307 else throw("Strict value is not equal to itself.")
306308 }
307309
308310
309311
310312 @Callable(i)
311313 func stakeNFT () = {
312314 let locked = isLocked()
313315 if ((locked == locked))
314316 then {
315317 let pmt = value(i.payments[0])
316318 let assetId = value(value(i.payments[0]).assetId)
317319 let realCaller = toString(i.caller)
318320 let address = if (isProxyStakingSc(toString(i.caller)))
319321 then toString(i.originCaller)
320322 else realCaller
321323 let color = takeRight(value(assetInfo(assetId)).name, 1)
322324 let availablePerches = tryGetInteger(((("address_" + address) + "_perchesAvailable_") + color))
323325 if ((pmt.amount != 1))
324326 then throw("NFT is not attached")
325327 else if ((0 >= availablePerches))
326328 then throw(("no perches available for the color " + color))
327329 else {
328- let $t01149011563 = getAssetFarmingPower(assetId, address)
329- let assetGen = $t01149011563._1
330- let assetFarmingPower = $t01149011563._2
330+ let $t01158811661 = getAssetFarmingPower(assetId, address)
331+ let assetGen = $t01158811661._1
332+ let assetFarmingPower = $t01158811661._2
331333 (getStakeResult(address, assetId, assetFarmingPower, realCaller) ++ [IntegerEntry(((("address_" + address) + "_perchesAvailable_") + color), (availablePerches - 1))])
332334 }
333335 }
334336 else throw("Strict value is not equal to itself.")
335337 }
336338
337339
338340
339341 @Callable(i)
340342 func stakeNFTWithoutPerch () = {
341343 let locked = isLocked()
342344 if ((locked == locked))
343345 then {
344346 let dappToCall = toString(i.caller)
345347 if (!(isProxyStakingSc(dappToCall)))
346348 then throw("FSNWP: Only trusted smart contracts can stake without a perch!")
347349 else {
348350 let pmt = value(i.payments[0])
349351 let assetId = value(value(i.payments[0]).assetId)
350352 let address = toString(i.originCaller)
351353 if ((pmt.amount != 1))
352354 then throw("NFT is not attached")
353355 else {
354- let $t01218712260 = getAssetFarmingPower(assetId, address)
355- let assetGen = $t01218712260._1
356- let assetFarmingPower = $t01218712260._2
356+ let $t01228512358 = getAssetFarmingPower(assetId, address)
357+ let assetGen = $t01228512358._1
358+ let assetFarmingPower = $t01228512358._2
357359 let asset = toBase58String(assetId)
358360 let realCaller = toString(i.caller)
359361 (getStakeResult(address, assetId, assetFarmingPower, realCaller) ++ [BooleanEntry((((("address_" + address) + "_asset_") + asset) + "_without_perch"), true)])
360362 }
361363 }
362364 }
363365 else throw("Strict value is not equal to itself.")
364366 }
365367
366368
367369
368370 @Callable(i)
369371 func unstakeNFT (asset) = {
370372 let locked = isLocked()
371373 if ((locked == locked))
372374 then {
373375 let add = toString(i.originCaller)
374376 if (isUserBlacklisted(add))
375377 then throw("FUN: Ooops, looks like you lost in one of the Ducksquid games! As you already know, any loss has its consequences, so you will be not able to claim your farming rewards till the end of DuckSquid game. Quack in peace!")
376378 else {
377379 let assetId = fromBase58String(asset)
378380 let address = if (isProxyStakingSc(toString(i.caller)))
379381 then add
380382 else toString(i.caller)
381383 let unstaker = tryGetString((((("address_" + address) + "_asset_") + asset) + "_unstaker"))
382384 let assetFarmingPower = getLastKnownAssetFarmingPower(address, asset)
383385 let assetRewardDelta = calcAssetRewardDelta(address, asset, assetFarmingPower)
384386 let farmedAmount = (assetRewardDelta + tryGetInteger((((("address_" + address) + "_asset_") + asset) + "_lastCheckFarmedAmount")))
385387 let withdrawnAmount = tryGetInteger((((("address_" + address) + "_asset_") + asset) + "_withdrawnAmount"))
386388 let reward = ((farmedAmount - withdrawnAmount) / (scale * 100))
387389 let color = takeRight(value(assetInfo(assetId)).name, 1)
388390 let realCaller = toString(i.caller)
389391 if (if ((unstaker != ""))
390392 then (unstaker != realCaller)
391393 else false)
392394 then throw(((((((("FUN: It seems duck was staked throuh a dapp, not directly, please unstake through dapp! " + unstaker) + " ") + realCaller) + " ") + address) + " ") + add))
393395 else if ((0 >= assetFarmingPower))
394396 then throw("FUN: asset not available")
395397 else {
396398 let isWithoutPerch = tryGetBoolean((((("address_" + address) + "_asset_") + asset) + "_without_perch"))
397399 if ((color == "U"))
398400 then throw("FUN: use another function to unstake Jackpot NFT")
399401 else {
400402 let result = getUnstakeResult(address, assetId, assetRewardDelta, reward, assetFarmingPower)
401403 let appendPerches = if (isWithoutPerch)
402404 then [DeleteEntry((((("address_" + address) + "_asset_") + asset) + "_without_perch"))]
403405 else [IntegerEntry(((("address_" + address) + "_perchesAvailable_") + color), (tryGetInteger(((("address_" + address) + "_perchesAvailable_") + color)) + 1))]
404406 $Tuple2(((result ++ [ScriptTransfer(i.caller, (reward * 1000000), getEggAssetId()), ScriptTransfer(i.caller, 1, assetId)]) ++ appendPerches), (reward * 1000000))
405407 }
406408 }
407409 }
408410 }
409411 else throw("Strict value is not equal to itself.")
410412 }
411413
412414
413415
414416 @Callable(i)
415417 func stakeJackpot (color) = {
416418 let locked = isLocked()
417419 if ((locked == locked))
418420 then {
419421 let pmt = value(i.payments[0])
420422 let assetId = value(pmt.assetId)
421423 let realCaller = toString(i.caller)
422424 let address = if (isProxyStakingSc(toString(i.caller)))
423425 then toString(i.originCaller)
424426 else realCaller
425427 let availablePerches = tryGetInteger(((("address_" + address) + "_perchesAvailable_") + color))
426428 let assetIssuer = value(assetInfo(assetId)).issuer
427429 if ((pmt.amount != 1))
428430 then throw("NFT is not attached")
429431 else if (if ((assetIssuer == getIncubatorAddress()))
430432 then true
431433 else (assetIssuer == getBreederAddress()))
432434 then if ((takeRight(value(value(assetInfo(assetId)).name), 1) != "U"))
433435 then throw("jackpot only")
434436 else if ((0 >= availablePerches))
435437 then throw(("FSJ: no perches available for the color " + color))
436438 else {
437439 let farmingPower = getAssetFarmingPower(assetId, address)
438440 (getStakeResult(address, assetId, farmingPower._2, realCaller) ++ [IntegerEntry(((("address_" + address) + "_perchesAvailable_") + color), (availablePerches - 1)), StringEntry((((("address_" + address) + "_asset_") + toBase58String(assetId)) + "_perchColor"), color)])
439441 }
440442 else throw("asset is not valid")
441443 }
442444 else throw("Strict value is not equal to itself.")
443445 }
444446
445447
446448
447449 @Callable(i)
448450 func unstakeJackpot (asset) = {
449451 let locked = isLocked()
450452 if ((locked == locked))
451453 then {
452454 let realCaller = toString(i.caller)
453455 let address = if (isProxyStakingSc(toString(i.caller)))
454456 then toString(i.originCaller)
455457 else realCaller
456458 if (isUserBlacklisted(address))
457459 then throw("FUJ: Ooops, looks like you lost in one of the Ducksquid games! As you already know, any loss has its consequences, so you will be not able to claim your farming rewards till the end of DuckSquid game. Quack in peace!")
458460 else {
459461 let assetId = fromBase58String(asset)
460462 let color = tryGetString((((("address_" + address) + "_asset_") + asset) + "_perchColor"))
461463 let assetFarmingPower = getLastKnownAssetFarmingPower(address, asset)
462464 let assetRewardDelta = calcAssetRewardDelta(address, asset, assetFarmingPower)
463465 let farmedAmount = (assetRewardDelta + tryGetInteger((((("address_" + address) + "_asset_") + asset) + "_lastCheckFarmedAmount")))
464466 let withdrawnAmount = tryGetInteger((((("address_" + address) + "_asset_") + asset) + "_withdrawnAmount"))
465467 let reward = ((farmedAmount - withdrawnAmount) / (scale * 100))
466468 let unstaker = tryGetString((((("address_" + address) + "_asset_") + asset) + "_unstaker"))
467469 if (if ((unstaker != ""))
468470 then (unstaker != realCaller)
469471 else false)
470472 then throw("FUJ: It seems duck was staked throuh a dapp, not directly, please unstake through dapp!")
471473 else if ((takeRight(value(value(assetInfo(assetId)).name), 1) != "U"))
472474 then throw("jackpot only")
473475 else if ((assetFarmingPower > 0))
474476 then {
475477 let result = getUnstakeResult(address, assetId, assetRewardDelta, reward, assetFarmingPower)
476478 let isWithoutPerch = tryGetBoolean((((("address_" + address) + "_asset_") + asset) + "_without_perch"))
477479 let appendPerches = if (isWithoutPerch)
478480 then [DeleteEntry((((("address_" + address) + "_asset_") + asset) + "_without_perch"))]
479481 else [IntegerEntry(((("address_" + address) + "_perchesAvailable_") + color), (tryGetInteger(((("address_" + address) + "_perchesAvailable_") + color)) + 1))]
480482 $Tuple2(((result ++ appendPerches) ++ [ScriptTransfer(i.caller, (reward * 1000000), getEggAssetId()), ScriptTransfer(i.caller, 1, assetId)]), (reward * 1000000))
481483 }
482484 else throw("FUJ: Asset farming power not bigger then 0")
483485 }
484486 }
485487 else throw("Strict value is not equal to itself.")
486488 }
487489
488490
489491
490492 @Callable(i)
491493 func claimReward (asset) = {
492494 let locked = isLocked()
493495 if ((locked == locked))
494496 then {
495497 let address = if ((i.originCaller == getCfMasterAddress()))
496498 then toString(i.caller)
497499 else toString(i.originCaller)
498500 if (isUserBlacklisted(address))
499501 then throw("FCR: Ooops, looks like you lost in one of the Ducksquid games! As you already know, any loss has its consequences, so you will be not able to claim your farming rewards till the end of DuckSquid game. Quack in peace!")
500502 else {
501503 let assetId = fromBase58String(asset)
502504 let assetFarmingPower = getLastKnownAssetFarmingPower(address, asset)
503505 let assetRewardDelta = calcAssetRewardDelta(address, asset, assetFarmingPower)
504506 let farmedAmount = (assetRewardDelta + tryGetInteger((((("address_" + address) + "_asset_") + asset) + "_lastCheckFarmedAmount")))
505507 let withdrawnAmount = tryGetInteger((((("address_" + address) + "_asset_") + asset) + "_withdrawnAmount"))
506508 let reward = ((farmedAmount - withdrawnAmount) / (scale * 100))
507509 if ((0 >= reward))
508510 then throw("FCR: you have no EGGs to withdraw")
509511 else $Tuple2([IntegerEntry((((("address_" + address) + "_asset_") + asset) + "_withdrawnAmount"), (tryGetInteger((((("address_" + address) + "_asset_") + asset) + "_withdrawnAmount")) + (reward * scale2))), ScriptTransfer(Address(fromBase58String(address)), (reward * 1000000), getEggAssetId())], (reward * 1000000))
510512 }
511513 }
512514 else throw("Strict value is not equal to itself.")
513515 }
514516
515517

github/deemru/w8io/0e76f2f 
77.29 ms