tx · 2miuenrLRNSYyqVDpPsD8NP2w7jdZvfpDHtnvkWXBZop

3PGvfeMaCezvCWyz4RGeoQpmwzrWwv7NLYU:  -0.01400000 Waves

2023.09.11 18:13 [3816654] smart account 3PGvfeMaCezvCWyz4RGeoQpmwzrWwv7NLYU > SELF 0.00000000 Waves

{ "type": 13, "id": "2miuenrLRNSYyqVDpPsD8NP2w7jdZvfpDHtnvkWXBZop", "fee": 1400000, "feeAssetId": null, "timestamp": 1694445266234, "version": 2, "chainId": 87, "sender": "3PGvfeMaCezvCWyz4RGeoQpmwzrWwv7NLYU", "senderPublicKey": "Un4PmpFshNAiDG32eEAyePX7JHvuxkwyMAYYpP4cFtg", "proofs": [ "21z2DDptNnMSVzCXdczKxRaqhPLAXn2h7mhNTFxTxNeRb6LtcjpQrY2VdCMepsArFDW1uNXjTPDFTFu8HnfUSkXP" ], "script": "base64:AAIFAAAAAAAAABYIAhIDCgEIEgMKAQESAwoBCBIDCgEIAAAAHAEAAAAUdHJ5R2V0U3RyaW5nRXh0ZXJuYWwAAAACAAAAB2FkZHJlc3MAAAADa2V5BAAAAAckbWF0Y2gwCQAEHQAAAAIFAAAAB2FkZHJlc3MFAAAAA2tleQMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAGU3RyaW5nBAAAAAFhBQAAAAckbWF0Y2gwBQAAAAFhAgAAAAABAAAADHRyeUdldFN0cmluZwAAAAEAAAADa2V5CQEAAAAUdHJ5R2V0U3RyaW5nRXh0ZXJuYWwAAAACBQAAAAR0aGlzBQAAAANrZXkBAAAAF3N0YXRpY0tleV9vcmFjbGVBZGRyZXNzAAAAAAIAAAAUc3RhdGljX29yYWNsZUFkZHJlc3MBAAAAEnN0YXRpY0tleV9leHRyYUZlZQAAAAACAAAAD3N0YXRpY19leHRyYUZlZQEAAAAXc3RhdGljS2V5X2ZlZUFnZ3JlZ2F0b3IAAAAAAgAAABRzdGF0aWNfZmVlQWdncmVnYXRvcgEAAAAUc3RhdGljS2V5X2VnZ0Fzc2V0SWQAAAAAAgAAABFzdGF0aWNfZWdnQXNzZXRJZAEAAAAcc3RhdGljS2V5X3JlZkNvbnRyYWN0QWRkcmVzcwAAAAACAAAAGXN0YXRpY19yZWZDb250cmFjdEFkZHJlc3MBAAAACWdldE9yYWNsZQAAAAAJAQAAAAdBZGRyZXNzAAAAAQkAAlkAAAABCQEAAAAMdHJ5R2V0U3RyaW5nAAAAAQkBAAAAF3N0YXRpY0tleV9vcmFjbGVBZGRyZXNzAAAAAAEAAAAQZ2V0RmVlQWdncmVnYXRvcgAAAAAJAQAAAAdBZGRyZXNzAAAAAQkAAlkAAAABCQEAAAAUdHJ5R2V0U3RyaW5nRXh0ZXJuYWwAAAACCQEAAAAJZ2V0T3JhY2xlAAAAAAkBAAAAF3N0YXRpY0tleV9mZWVBZ2dyZWdhdG9yAAAAAAEAAAANZ2V0RWdnQXNzZXRJZAAAAAAJAAJZAAAAAQkBAAAAFHRyeUdldFN0cmluZ0V4dGVybmFsAAAAAgkBAAAACWdldE9yYWNsZQAAAAAJAQAAABRzdGF0aWNLZXlfZWdnQXNzZXRJZAAAAAABAAAADmdldEJ1cm5BZGRyZXNzAAAAAAkBAAAAB0FkZHJlc3MAAAABCQACWQAAAAEJAQAAABR0cnlHZXRTdHJpbmdFeHRlcm5hbAAAAAIJAQAAAAlnZXRPcmFjbGUAAAAAAgAAABJzdGF0aWNfYnVybkFkZHJlc3MBAAAAFWdldFJlZkNvbnRyYWN0QWRkcmVzcwAAAAAJAQAAAAdBZGRyZXNzAAAAAQkAAlkAAAABCQEAAAAUdHJ5R2V0U3RyaW5nRXh0ZXJuYWwAAAACCQEAAAAJZ2V0T3JhY2xlAAAAAAkBAAAAHHN0YXRpY0tleV9yZWZDb250cmFjdEFkZHJlc3MAAAAAAQAAABZjaGVja0FkZGl0aW9uYWxQYXltZW50AAAAAQAAAAdwYXltZW50AwkBAAAACWlzRGVmaW5lZAAAAAEIBQAAAAdwYXltZW50AAAAB2Fzc2V0SWQJAAACAAAAAQIAAAAaQkRDQVA6IFBsZWFzZSBhdHRhY2ggd2F2ZXMEAAAACWZlZUFtb3VudAkBAAAAEUBleHRyTmF0aXZlKDEwNTApAAAAAgkBAAAACWdldE9yYWNsZQAAAAAJAQAAABJzdGF0aWNLZXlfZXh0cmFGZWUAAAAAAwkBAAAAAiE9AAAAAggFAAAAB3BheW1lbnQAAAAGYW1vdW50BQAAAAlmZWVBbW91bnQJAAACAAAAAQkAASwAAAACCQABLAAAAAICAAAAHUJEQ0FQOiBQbGVhc2UgYXR0YWNoIGV4YWN0bHkgCQABpAAAAAEFAAAACWZlZUFtb3VudAIAAAATIGFtb3VudCBvZiB3YXZlbGV0cwkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCQEAAAAQZ2V0RmVlQWdncmVnYXRvcgAAAAAFAAAACWZlZUFtb3VudAUAAAAEdW5pdAUAAAADbmlsAAAAABBkZWxheUZvckhhdGNoaW5nAAAAAAAAAAACAAAAAAt0eXBlc0Ftb3VudAAAAAAAAAAABAAAAAAPSGF0Y2hpbmdTdGFydGVkAgAAABBIQVRDSElOR19TVEFSVEVEAAAAABBIYXRjaGluZ0ZpbmlzaGVkAgAAABFIQVRDSElOR19GSU5JU0hFRAEAAAAIaXNMb2NrZWQAAAAABAAAAA1tYXN0ZXJBZGRyZXNzCQEAAAAHQWRkcmVzcwAAAAEBAAAAGgFXiLIGIfCA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YXRjaGluZwAAAAEAAAAOcmVmZXJlckFkZHJlc3MEAAAAC2ZlZVZhbGlkYXRlCQEAAAAWY2hlY2tBZGRpdGlvbmFsUGF5bWVudAAAAAEJAAGRAAAAAggFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAADCQAAAAAAAAIFAAAAC2ZlZVZhbGlkYXRlBQAAAAtmZWVWYWxpZGF0ZQMJAABmAAAAAgkBAAAACGlzTG9ja2VkAAAAAAAAAAAAAAAAAAkAAAIAAAABAgAAACVFR0cgb3BlcmF0aW9ucyBhcmUgdGVtcG9yYXJpbHkgbG9ja2VkBAAAABF0b3RhbFR1cnRsZUFtb3VudAkBAAAADXRyeUdldEludGVnZXIAAAABAgAAAA10dXJ0bGVfYW1vdW50BAAAAAplZ2dzTmVlZGVkCQEAAAAVY291bnRFZ2dzTmVlZGVkQW1vdW50AAAAAQUAAAARdG90YWxUdXJ0bGVBbW91bnQEAAAAB3Jlc3VsdHMJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAAFGdldEhhdGNoaW5nU3RhdHVzS2V5AAAAAgkABCUAAAABCAUAAAABaQAAAAxvcmlnaW5DYWxsZXIIBQAAAAFpAAAADXRyYW5zYWN0aW9uSWQFAAAAD0hhdGNoaW5nU3RhcnRlZAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkBAAAAGmdldEhhdGNoaW5nRmluaXNoSGVpZ2h0S2V5AAAAAgkABCUAAAABCAUAAAABaQAAAAxvcmlnaW5DYWxsZXIIBQAAAAFpAAAADXRyYW5zYWN0aW9uSWQJAABkAAAAAgUAAAAGaGVpZ2h0BQAAABBkZWxheUZvckhhdGNoaW5nCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACAgAAAA10dXJ0bGVfYW1vdW50CQAAZAAAAAIFAAAAEXRvdGFsVHVydGxlQW1vdW50AAAAAAAAAAABCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACAgAAABF0dXJ0bGVfbGFzdF9wcmljZQkAAGkAAAACBQAAAAplZ2dzTmVlZGVkAAAAAAAAFuNgBQAAAANuaWwEAAAACWxlZnRUb1BheQUAAAAKZWdnc05lZWRlZAQAAAAHcGF5bWVudAMJ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aGF0Y2hpbmdTdGF0dXNLZXkJAQAAABRnZXRIYXRjaGluZ1N0YXR1c0tleQAAAAIJAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyBQAAAAR0eElkBAAAAA9maW5pc2hIZWlnaHRLZXkJAQAAABpnZXRIYXRjaGluZ0ZpbmlzaEhlaWdodEtleQAAAAIJAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyBQAAAAR0eElkBAAAAAlUUlRMSWRLZXkJAQAAAAxnZXRUUlRMSWRLZXkAAAACCQAEJQAAAAEIBQAAAAFpAAAABmNhbGxlcgUAAAAEdHhJZAQAAAAQaGF0Y2hpbmdUeFN0YXR1cwkBAAAAEUBleHRyTmF0aXZlKDEwNTMpAAAAAgUAAAAEdGhpcwUAAAARaGF0Y2hpbmdTdGF0dXNLZXkEAAAAFGhhdGNoaW5nRmluaXNoSGVpZ2h0CQEAAAARQGV4dHJOYXRpdmUoMTA1MCkAAAACBQAAAAR0aGlzBQAAAA9maW5pc2hIZWlnaHRLZXkDCQAAAAAAAAIFAAAAEGhhdGNoaW5nVHhTdGF0dXMFAAAAEEhhdGNoaW5nRmluaXNoZWQEAAAABlRSVExJZAkBAAAAEUBleHRyTmF0aXZlKDEwNTMpAAAAAgUAAAAEdGhpcwkBAAAADGdldFRSVExJZEtleQAAAAIJAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyBQAAAAR0eElkCQAAAgAAAAEJAAEsAAAAAgIAAABCVGhlIFR1cnRsZSB3YXMgaGF0Y2hlZCBhbmQgY2xhaW1lZCBhbHJlYWR5LCBoZXJlIGlzIHRoZSBmb2xvd2luZzogBQAAAAZUUlRMSWQDCQAAZgAAAAIFAAAAFGhhdGNoaW5nRmluaXNoSGVpZ2h0BQAAAAZoZWlnaHQJAAACAAAAAQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAB1IYXRjaGluZyBpcyBub3QgZmluaXNoZWQgeWV0IAkAAaQAAAABCQAAZQAAAAIFAAAAFGhhdGNoaW5nRmluaXNoSGVpZ2h0BQAAAAZoZWlnaHQCAAAAJyBibG9ja3MgcmVtYWluaW5nLCBpdCB3aWxsIHRha2UgYXJvdW5kIAkAAaQAAAABCQAAZQAAAAIFAAAAFGhhdGNoaW5nRmluaXNoSGVpZ2h0BQAAAAZoZWlnaHQCAAAACCBtaW51dGVzBAAAAAskdDA3NjIxNzY4NwkBAAAADWdldFJhbmRvbU5hbWUAAAACBQAAAAR0eElkBQAAABRoYXRjaGluZ0ZpbmlzaEhlaWdodAQAAAAHVFJUTEdlbggFAAAACyR0MDc2MjE3Njg3AAAAAl8xBAAAAAdmYXJtR2VuCAUAAAALJHQwNzYyMTc2ODcAAAACXzIEAAAAC2Rlc2NyaXB0aW9uCQABLAAAAAIJAAEsAAAAAgIAAAAOeyJnZW5vdHlwZSI6ICIFAAAAB1RSVExHZW4CAAAAGSIsICJjcm9zc2JyZWVkaW5nIjogdHJ1ZX0EAAAABWFzc2V0CQAEQwAAAAcFAAAAB1RSVExHZW4FAAAAC2Rlc2NyaXB0aW9uAAAAAAAAAAABAAAAAAAAAAAABwUAAAAEdW5pdAUAAAAUaGF0Y2hpbmdGaW5pc2hIZWlnaHQEAAAAB2Fzc2V0SWQJAAQ4AAAAAQUAAAAFYXNzZXQEAAAABmFtb3VudAkAAGQAAAACCQEAAAANdHJ5R2V0SW50ZWdlcgAAAAEJAQAAAA9nZXRUUlRMU3RhdHNLZXkAAAABBQAAAAdUUlRMR2VuAAAAAAAAAAABCQAETgAAAAIJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgUAAAARaGF0Y2hpbmdTdGF0dXNLZXkFAAAAEEhhdGNoaW5nRmluaXNoZWQJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgUAAAAJVFJUTElkS2V5CQACWAAAAAEFAAAAB2Fzc2V0SWQJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkAAlgAAAABBQAAAAdhc3NldElkBQAAAAlUUlRMSWRLZXkJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAAA9nZXRUUlRMU3RhdHNLZXkAAAABBQAAAAdUUlRMR2VuBQAAAAZhbW91bnQJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAZzdGF0c18FAAAAB2Zhcm1HZW4CAAAACV9xdWFudGl0eQkAAGQAAAACCQEAAAANdHJ5R2V0SW50ZWdlcgAAAAEJAAEsAAAAAgkAASwAAAACAgAAAAZzdGF0c18FAAAAB2Zhcm1HZW4CAAAACV9xdWFudGl0eQAAAAAAAAAAAQkABEwAAAACBQAAAAVhc3NldAkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCAUAAAABaQAAAAZjYWxsZXIAAAAAAAAAAAEFAAAAB2Fzc2V0SWQFAAAAA25pbAUAAAALZmVlVmFsaWRhdGUJAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAAAAAQAAAAJ0eAEAAAAGdmVyaWZ5AAAAAAkAAfQAAAADCAUAAAACdHgAAAAJYm9keUJ5dGVzCQABkQAAAAIIBQAAAAJ0eAAAAAZwcm9vZnMAAAAAAAAAAAAIBQAAAAJ0eAAAAA9zZW5kZXJQdWJsaWNLZXn/TrhS", "height": 3816654, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 9vJshap7J3ARJ6oSLirKrPGLWu414sAm8r9dEtYSDjfq Next: 2PJZQNcRpjQerAmFKMPkhXprr1zc78Ep5wzkW6sHdU7j Diff:
OldNewDifferences
104104
105105
106106 func getRandomName (txId,hatchingFinishHeight) = {
107- let typeRandom = getRandomNumber(4, txId, hatchingFinishHeight, 0)
107+ let typeRandom = getRandomNumber(5, txId, hatchingFinishHeight, 0)
108108 let colorRandom = getRandomNumber(4, txId, hatchingFinishHeight, 1)
109109 let color = if ((colorRandom == 0))
110110 then "R"
119119 then $Tuple2(("TRTL-BBBBBBBB-G" + color), "8B-G")
120120 else if ((typeRandom == 2))
121121 then $Tuple2(("TRTL-CCCCCCCC-G" + color), "8C-G")
122- else $Tuple2(("TRTL-DDDDDDDD-G" + color), "8D-G")
122+ else if ((typeRandom == 3))
123+ then $Tuple2(("TRTL-DDDDDDDD-G" + color), "8D-G")
124+ else $Tuple2(("TRTL-EEEEEEEE-G" + color), "8E-G")
123125 }
124126
125127
194196 let refund = if ((size(i.payments) == 2))
195197 then [ScriptTransfer(i.caller, (i.payments[1].amount - leftToPay), getEggAssetId())]
196198 else nil
197- (results ++ refund)
199+ ((results ++ refund) ++ feeValidate)
198200 }
199201 else throw("Strict value is not equal to itself.")
200202 }
222224 else if ((hatchingFinishHeight > height))
223225 then throw((((("Hatching is not finished yet " + toString((hatchingFinishHeight - height))) + " blocks remaining, it will take around ") + toString((hatchingFinishHeight - height))) + " minutes"))
224226 else {
225- let $t075357601 = getRandomName(txId, hatchingFinishHeight)
226- let TRTLGen = $t075357601._1
227- let farmGen = $t075357601._2
227+ let $t076217687 = getRandomName(txId, hatchingFinishHeight)
228+ let TRTLGen = $t076217687._1
229+ let farmGen = $t076217687._2
228230 let description = (("{\"genotype\": \"" + TRTLGen) + "\", \"crossbreeding\": true}")
229231 let asset = Issue(TRTLGen, description, 1, 0, false, unit, hatchingFinishHeight)
230232 let assetId = calculateAssetId(asset)
231233 let amount = (tryGetInteger(getTRTLStatsKey(TRTLGen)) + 1)
232-[StringEntry(hatchingStatusKey, HatchingFinished), StringEntry(TRTLIdKey, toBase58String(assetId)), StringEntry(toBase58String(assetId), TRTLIdKey), IntegerEntry(getTRTLStatsKey(TRTLGen), amount), IntegerEntry((("stats_" + farmGen) + "_quantity"), (tryGetInteger((("stats_" + farmGen) + "_quantity")) + 1)), asset, ScriptTransfer(i.caller, 1, assetId)]
234+ ([StringEntry(hatchingStatusKey, HatchingFinished), StringEntry(TRTLIdKey, toBase58String(assetId)), StringEntry(toBase58String(assetId), TRTLIdKey), IntegerEntry(getTRTLStatsKey(TRTLGen), amount), IntegerEntry((("stats_" + farmGen) + "_quantity"), (tryGetInteger((("stats_" + farmGen) + "_quantity")) + 1)), asset, ScriptTransfer(i.caller, 1, assetId)] ++ feeValidate)
233235 }
234236 }
235237 else throw("Strict value is not equal to itself.")
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 func tryGetStringExternal (address,key) = match getString(address, key) {
55 case a: String =>
66 a
77 case _ =>
88 ""
99 }
1010
1111
1212 func tryGetString (key) = tryGetStringExternal(this, key)
1313
1414
1515 func staticKey_oracleAddress () = "static_oracleAddress"
1616
1717
1818 func staticKey_extraFee () = "static_extraFee"
1919
2020
2121 func staticKey_feeAggregator () = "static_feeAggregator"
2222
2323
2424 func staticKey_eggAssetId () = "static_eggAssetId"
2525
2626
2727 func staticKey_refContractAddress () = "static_refContractAddress"
2828
2929
3030 func getOracle () = Address(fromBase58String(tryGetString(staticKey_oracleAddress())))
3131
3232
3333 func getFeeAggregator () = Address(fromBase58String(tryGetStringExternal(getOracle(), staticKey_feeAggregator())))
3434
3535
3636 func getEggAssetId () = fromBase58String(tryGetStringExternal(getOracle(), staticKey_eggAssetId()))
3737
3838
3939 func getBurnAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), "static_burnAddress")))
4040
4141
4242 func getRefContractAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), staticKey_refContractAddress())))
4343
4444
4545 func checkAdditionalPayment (payment) = if (isDefined(payment.assetId))
4646 then throw("BDCAP: Please attach waves")
4747 else {
4848 let feeAmount = getIntegerValue(getOracle(), staticKey_extraFee())
4949 if ((payment.amount != feeAmount))
5050 then throw((("BDCAP: Please attach exactly " + toString(feeAmount)) + " amount of wavelets"))
5151 else [ScriptTransfer(getFeeAggregator(), feeAmount, unit)]
5252 }
5353
5454
5555 let delayForHatching = 2
5656
5757 let typesAmount = 4
5858
5959 let HatchingStarted = "HATCHING_STARTED"
6060
6161 let HatchingFinished = "HATCHING_FINISHED"
6262
6363 func isLocked () = {
6464 let masterAddress = Address(base58'3PEPftf2kWZDmAaWBjs6BUJa9957kiA2PkU')
6565 match getInteger(masterAddress, "egglock") {
6666 case b: Int =>
6767 b
6868 case _ =>
6969 0
7070 }
7171 }
7272
7373
7474 func getHatchingStatusKey (address,txId) = (((address + "_") + toBase58String(txId)) + "_status")
7575
7676
7777 func getHatchingFinishHeightKey (address,txId) = (((address + "_") + toBase58String(txId)) + "_fh")
7878
7979
8080 func getTRTLIdKey (address,txId) = (((address + "_") + toBase58String(txId)) + "_di")
8181
8282
8383 func getTRTLStatsKey (genString) = (("stats_" + genString) + "_amount")
8484
8585
8686 func tryGetInteger (key) = {
8787 let val = match getInteger(this, key) {
8888 case b: Int =>
8989 b
9090 case _ =>
9191 0
9292 }
9393 val
9494 }
9595
9696
9797 let discountCoefficient = tryGetInteger("discountCoefficient")
9898
9999 func getRandomNumber (variants,txId,hatchingFinishHeight,offset) = {
100100 let randomSeedBlock = value(blockInfoByHeight((hatchingFinishHeight - 1)))
101101 let randomHash = sha256((txId + value(randomSeedBlock.vrf)))
102102 (toInt(randomHash, (offset * 8)) % variants)
103103 }
104104
105105
106106 func getRandomName (txId,hatchingFinishHeight) = {
107- let typeRandom = getRandomNumber(4, txId, hatchingFinishHeight, 0)
107+ let typeRandom = getRandomNumber(5, txId, hatchingFinishHeight, 0)
108108 let colorRandom = getRandomNumber(4, txId, hatchingFinishHeight, 1)
109109 let color = if ((colorRandom == 0))
110110 then "R"
111111 else if ((colorRandom == 1))
112112 then "D"
113113 else if ((colorRandom == 2))
114114 then "S"
115115 else "G"
116116 if ((typeRandom == 0))
117117 then $Tuple2(("TRTL-AAAAAAAA-G" + color), "8A-G")
118118 else if ((typeRandom == 1))
119119 then $Tuple2(("TRTL-BBBBBBBB-G" + color), "8B-G")
120120 else if ((typeRandom == 2))
121121 then $Tuple2(("TRTL-CCCCCCCC-G" + color), "8C-G")
122- else $Tuple2(("TRTL-DDDDDDDD-G" + color), "8D-G")
122+ else if ((typeRandom == 3))
123+ then $Tuple2(("TRTL-DDDDDDDD-G" + color), "8D-G")
124+ else $Tuple2(("TRTL-EEEEEEEE-G" + color), "8E-G")
123125 }
124126
125127
126128 func countEggsNeededAmount (totalTRTLsAmount) = {
127129 let n = totalTRTLsAmount
128130 let g = discountCoefficient
129131 let t = typesAmount
130132 let price = pow((100 + ((n * g) / (10 * t))), 2, 5, 1, 2, DOWN)
131133 (price * 1500000)
132134 }
133135
134136
135137 func asBoolean (value) = match value {
136138 case boolean: Boolean =>
137139 boolean
138140 case _ =>
139141 throw("TI: wrong type, expected: Boolean")
140142 }
141143
142144
143145 @Callable(i)
144146 func configureOracle (oracle) = if ((i.caller != this))
145147 then throw("ICU: admin only")
146148 else [StringEntry("static_oracleAddress", oracle)]
147149
148150
149151
150152 @Callable(i)
151153 func setDiscount (val) = if ((i.caller != this))
152154 then throw("admin_only")
153155 else [IntegerEntry("discountCoefficient", val)]
154156
155157
156158
157159 @Callable(i)
158160 func startTRTLHatching (refererAddress) = {
159161 let feeValidate = checkAdditionalPayment(i.payments[0])
160162 if ((feeValidate == feeValidate))
161163 then if ((isLocked() > 0))
162164 then throw("EGG operations are temporarily locked")
163165 else {
164166 let totalTurtleAmount = tryGetInteger("turtle_amount")
165167 let eggsNeeded = countEggsNeededAmount(totalTurtleAmount)
166168 let results = [StringEntry(getHatchingStatusKey(toString(i.originCaller), i.transactionId), HatchingStarted), IntegerEntry(getHatchingFinishHeightKey(toString(i.originCaller), i.transactionId), (height + delayForHatching)), IntegerEntry("turtle_amount", (totalTurtleAmount + 1)), IntegerEntry("turtle_last_price", (eggsNeeded / 1500000))]
167169 let leftToPay = eggsNeeded
168170 let payment = if ((leftToPay != 0))
169171 then {
170172 let firstPayment = value(i.payments[1])
171173 if ((firstPayment.assetId != getEggAssetId()))
172174 then throw(("TI: You can attach only EGG tokens with the following asset id: " + toBase58String(getEggAssetId())))
173175 else if ((leftToPay > firstPayment.amount))
174176 then throw(((("TI: To buy a beach you currently need the following amount of EGGlets: " + toString(leftToPay)) + " ") + toString(i.caller)))
175177 else {
176178 let refererRewardForbeach = fraction(leftToPay, 5, 100)
177179 let refCall = asBoolean(invoke(getRefContractAddress(), "refPayment", [refererAddress], [AttachedPayment(getEggAssetId(), refererRewardForbeach)]))
178180 if ((refCall == refCall))
179181 then {
180182 let toBurn = if (refCall)
181183 then (leftToPay - refererRewardForbeach)
182184 else leftToPay
183185 let burnCall = invoke(getBurnAddress(), "burnAttachedPayments", nil, [AttachedPayment(getEggAssetId(), toBurn)])
184186 if ((burnCall == burnCall))
185187 then leftToPay
186188 else throw("Strict value is not equal to itself.")
187189 }
188190 else throw("Strict value is not equal to itself.")
189191 }
190192 }
191193 else 0
192194 if ((payment == payment))
193195 then {
194196 let refund = if ((size(i.payments) == 2))
195197 then [ScriptTransfer(i.caller, (i.payments[1].amount - leftToPay), getEggAssetId())]
196198 else nil
197- (results ++ refund)
199+ ((results ++ refund) ++ feeValidate)
198200 }
199201 else throw("Strict value is not equal to itself.")
200202 }
201203 else throw("Strict value is not equal to itself.")
202204 }
203205
204206
205207
206208 @Callable(i)
207209 func finishTRTLHatching (txIdStr) = {
208210 let feeValidate = checkAdditionalPayment(i.payments[0])
209211 if ((feeValidate == feeValidate))
210212 then {
211213 let txId = fromBase58String(txIdStr)
212214 let hatchingStatusKey = getHatchingStatusKey(toString(i.caller), txId)
213215 let finishHeightKey = getHatchingFinishHeightKey(toString(i.caller), txId)
214216 let TRTLIdKey = getTRTLIdKey(toString(i.caller), txId)
215217 let hatchingTxStatus = getStringValue(this, hatchingStatusKey)
216218 let hatchingFinishHeight = getIntegerValue(this, finishHeightKey)
217219 if ((hatchingTxStatus == HatchingFinished))
218220 then {
219221 let TRTLId = getStringValue(this, getTRTLIdKey(toString(i.caller), txId))
220222 throw(("The Turtle was hatched and claimed already, here is the folowing: " + TRTLId))
221223 }
222224 else if ((hatchingFinishHeight > height))
223225 then throw((((("Hatching is not finished yet " + toString((hatchingFinishHeight - height))) + " blocks remaining, it will take around ") + toString((hatchingFinishHeight - height))) + " minutes"))
224226 else {
225- let $t075357601 = getRandomName(txId, hatchingFinishHeight)
226- let TRTLGen = $t075357601._1
227- let farmGen = $t075357601._2
227+ let $t076217687 = getRandomName(txId, hatchingFinishHeight)
228+ let TRTLGen = $t076217687._1
229+ let farmGen = $t076217687._2
228230 let description = (("{\"genotype\": \"" + TRTLGen) + "\", \"crossbreeding\": true}")
229231 let asset = Issue(TRTLGen, description, 1, 0, false, unit, hatchingFinishHeight)
230232 let assetId = calculateAssetId(asset)
231233 let amount = (tryGetInteger(getTRTLStatsKey(TRTLGen)) + 1)
232-[StringEntry(hatchingStatusKey, HatchingFinished), StringEntry(TRTLIdKey, toBase58String(assetId)), StringEntry(toBase58String(assetId), TRTLIdKey), IntegerEntry(getTRTLStatsKey(TRTLGen), amount), IntegerEntry((("stats_" + farmGen) + "_quantity"), (tryGetInteger((("stats_" + farmGen) + "_quantity")) + 1)), asset, ScriptTransfer(i.caller, 1, assetId)]
234+ ([StringEntry(hatchingStatusKey, HatchingFinished), StringEntry(TRTLIdKey, toBase58String(assetId)), StringEntry(toBase58String(assetId), TRTLIdKey), IntegerEntry(getTRTLStatsKey(TRTLGen), amount), IntegerEntry((("stats_" + farmGen) + "_quantity"), (tryGetInteger((("stats_" + farmGen) + "_quantity")) + 1)), asset, ScriptTransfer(i.caller, 1, assetId)] ++ feeValidate)
233235 }
234236 }
235237 else throw("Strict value is not equal to itself.")
236238 }
237239
238240
239241 @Verifier(tx)
240242 func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
241243

github/deemru/w8io/0e76f2f 
56.64 ms