2022.05.11 16:23 [3112548] smart account 3PEktVux2RhchSN63DsDo4b4mz4QqzKSeDv > SELF 0.00000000 Waves

{ "type": 13, "id": "5DpstjBTVhVkf8ZbDGgQpxtAbLETsR8CvrWbm9j8pqn7", "fee": 1400000, "feeAssetId": null, "timestamp": 1652275410550, "version": 2, "chainId": 87, "sender": "3PEktVux2RhchSN63DsDo4b4mz4QqzKSeDv", "senderPublicKey": "EBHsV7TQYm4qS2V7iZXEXwcbUdEYQyCSLEdY2AMvLPns", "proofs": [ "3JVbJazyEeA9e8FHMCLvCciionc4R3NCLHnQeczbL4vGbpXQ69AnRdVmYHmYMd1qy1ExXxgru9Mzb8678kce2hNC" ], "script": "base64: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ZW1wb3JhcmlseSBsb2NrZWQDCQEAAAACIT0AAAACCAUAAAABaQAAAAZjYWxsZXIJAQAAABNnZXRTd29wUHJvbW9BZGRyZXNzAAAAAAkAAAIAAAABAgAAABFQZXJuaXNzaW9uIGRlbmllZAQAAAAQdG90YWxEdWNrc0Ftb3VudAkBAAAADXRyeUdldEludGVnZXIAAAABAgAAAAxkdWNrc19hbW91bnQEAAAACmVnZ3NOZWVkZWQJAQAAABVjb3VudEVnZ3NOZWVkZWRBbW91bnQAAAABBQAAABB0b3RhbER1Y2tzQW1vdW50CQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAABRnZXRIYXRjaGluZ1N0YXR1c0tleQAAAAIFAAAAB2FkZHJlc3MIBQAAAAFpAAAADXRyYW5zYWN0aW9uSWQFAAAAD0hhdGNoaW5nU3RhcnRlZAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkBAAAAGmdldEhhdGNoaW5nRmluaXNoSGVpZ2h0S2V5AAAAAgUAAAAHYWRkcmVzcwgFAAAAAWkAAAANdHJhbnNhY3Rpb25JZAkAAGQAAAACBQAAAAZoZWlnaHQFAAAAEGRlbGF5Rm9ySGF0Y2hpbmcJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAICAAAADGR1Y2tzX2Ftb3VudAkAAGQAAAACBQAAABB0b3RhbER1Y2tzQW1vdW50AAAAAAAAAAABCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACAgAAABBkdWNrc19sYXN0X3ByaWNlCQAAaQAAAAIFAAAACmVnZ3NOZWVkZWQAAAAAAAAPQkAJAARMAAAAAgkBAAAADEJvb2xlYW5FbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAloYXRjaGluZ18JAAJYAAAAAQgFAAAAAWkAAAANdHJhbnNhY3Rpb25JZAIAAAAGX3Byb21vBgUAAAADbmlsAAAAAWkBAAAAEmZpbmlzaER1Y2tIYXRjaGluZwAAAAEAAAAHdHhJZFN0cgQAAAAEdHhJZAkAAlkAAAABBQAAAAd0eElkU3RyBAAAABFoYXRjaGluZ1N0YXR1c0tleQkBAAAAFGdldEhhdGNoaW5nU3RhdHVzS2V5AAAAAgkABCUA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bnRlZ2VyRW50cnkAAAACCQEAAAAPZ2V0RHVja1N0YXRzS2V5AAAAAQUAAAAHZHVja0dlbgUAAAAGYW1vdW50CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAGc3RhdHNfBQAAAAdmYXJtR2VuAgAAAAlfcXVhbnRpdHkJAABkAAAAAgkBAAAADXRyeUdldEludGVnZXIAAAABCQABLAAAAAIJAAEsAAAAAgIAAAAGc3RhdHNfBQAAAAdmYXJtR2VuAgAAAAlfcXVhbnRpdHkAAAAAAAAAAAEJAARMAAAAAgUAAAAFYXNzZXQJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwgFAAAAAWkAAAAGY2FsbGVyAAAAAAAAAAABBQAAAAdhc3NldElkBQAAAANuaWwAAAABaQEAAAANaXNzdWVGcmVlRHVjawAAAAIAAAAHYWRkcmVzcwAAAAd0eElkU3RyAwkBAAAAAiE9AAAAAggFAAAAAWkAAAAGY2FsbGVyCQEAAAARZ2V0UmViaXJ0aEFkZHJlc3MAAAAACQAAAgAAAAECAAAADHJlYmlydGggb25seQQAAAAEdHhJZAkAAlkAAAABBQAAAAd0eElkU3RyBAAAABFoYXRjaGluZ1N0YXR1c0tleQkBAAAAFGdldEhhdGNoaW5nU3RhdHVzS2V5AAAAAgUAAAAHYWRkcmVzcwUAAAAEdHhJZAQAAAAPZmluaXNoSGVpZ2h0S2V5CQEAAAAaZ2V0SGF0Y2hpbmdGaW5pc2hIZWlnaHRLZXkAAAACBQAAAAdhZGRyZXNzBQAAAAR0eElkBAAAABB0b3RhbER1Y2tzQW1vdW50CQEAAAANdHJ5R2V0SW50ZWdlcgAAAAECAAAADGR1Y2tzX2Ftb3VudAQAAAAKZWdnc05lZWRlZAkBAAAAFWNvdW50RWdnc05lZWRlZEFtb3VudAAAAAEFAAAAEHRvdGFsRHVja3NBbW91bnQEAAAACyR0MDkyMTc5MzAyCQEAAAANZ2V0UmFuZG9tTmFtZQAAAAIFAAAABHR4SWQJAABkAAAAAgkBAAAABXZhbHVlAAAAAQkAA+kAAAABBQAAAAR0eElkAAAAAAAAAAABBAAAAAdkdWNrR2VuCAUAAAALJHQwOTIxNzkzMDIAAAACXzEEAAAAB2Zhcm1HZW4IBQAAAAskdDA5MjE3OTMwMgAAAAJfMgQAAAALZGVzY3JpcHRpb24JAAEsAAAAAgkAASwAAAACAgAAAA57Imdlbm90eXBlIjogIgUAAAAHZHVja0dlbgIAAAAZIiwgImNyb3NzYnJlZWRpbmciOiB0cnVlfQQAAAAFYXNzZXQJAARDAAAABwUAAAAHZHVja0dlbgUAAAALZGVzY3JpcHRpb24AAAAAAAAAAAEAAAAAAAAAAAAHBQAAAAR1bml0BQAAAAZoZWlnaHQEAAAAB2Fzc2V0SWQJAAQ4AAAAAQUAAAAFYXNzZXQEAAAABmFtb3VudAkAAGQAAAACCQEAAAANdHJ5R2V0SW50ZWdlcgAAAAEJAQAAAA9nZXREdWNrU3RhdHNLZXkAAAABBQAAAAdkdWNrR2VuAAAAAAAAAAABBAAAAAlkdWNrSWRLZXkJAQAAAAxnZXREdWNrSWRLZXkAAAACBQAAAAdhZGRyZXNzBQAAAAR0eElkCQAFFAAAAAIJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAABpnZXRIYXRjaGluZ0ZpbmlzaEhlaWdodEtleQAAAAIFAAAAB2FkZHJlc3MFAAAABHR4SWQFAAAABmhlaWdodAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgIAAAAMZHVja3NfYW1vdW50CQAAZAAAAAIFAAAAEHRvdGFsRHVja3NBbW91bnQAAAAAAAAAAAEJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAICAAAAEGR1Y2tzX2xhc3RfcHJpY2UJAABpAAAAAgUAAAAKZWdnc05lZWRlZAAAAAAAAA9CQAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACBQAAABFoYXRjaGluZ1N0YXR1c0tleQUAAAAQSGF0Y2hpbmdGaW5pc2hlZAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACBQAAAAlkdWNrSWRLZXkJAAJYAAAAAQUAAAAHYXNzZXRJZAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQACWAAAAAEFAAAAB2Fzc2V0SWQFAAAACWR1Y2tJZEtleQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkBAAAAD2dldER1Y2tTdGF0c0tleQAAAAEFAAAAB2R1Y2tHZW4FAAAABmFtb3VudAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACCQABLAAAAAICAAAABnN0YXRzXwUAAAAHZmFybUdlbgIAAAAJX3F1YW50aXR5CQAAZAAAAAIJAQAAAA10cnlHZXRJbnRlZ2VyAAAAAQkAASwAAAACCQABLAAAAAICAAAABnN0YXRzXwUAAAAHZmFybUdlbgIAAAAJX3F1YW50aXR5AAAAAAAAAAABCQAETAAAAAIFAAAABWFzc2V0CQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMJAQAAAAV2YWx1ZQAAAAEJAAQmAAAAAQUAAAAHYWRkcmVzcwAAAAAAAAAAAQUAAAAHYXNzZXRJZAUAAAADbmlsCQACWAAAAAEFAAAAB2Fzc2V0SWQAAAABaQEAAAAMaXNzdWVKYWNrcG90AAAAAwAAAAdhZGRyZXNzAAAAB3R4SWRTdHIAAAADZ2VuAwMJAQAAAAIhPQAAAAIIBQAAAAFpAAAABmNhbGxlcgkBAAAAEWdldFJlYmlydGhBZGRyZXNzAAAAAAkBAAAAAiE9AAAAAggFAAAAAWkAAAAGY2FsbGVyBQAAAAR0aGlzBwkAAAIAAAABAgAAABVhZG1pbiBvciByZWJpcnRoIG9ubHkEAAAABHR4SWQJAAJZAAAAAQUAAAAHdHhJZFN0cgQAAAARaGF0Y2hpbmdTdGF0dXNLZXkJAQAAABRnZXRIYXRjaGluZ1N0YXR1c0tleQAAAAIFAAAAB2FkZHJlc3MFAAAABHR4SWQEAAAAD2ZpbmlzaEhlaWdodEtleQkBAAAAGmdldEhhdGNoaW5nRmluaXNoSGVpZ2h0S2V5AAAAAgUAAAAHYWRkcmVzcwUAAAAEdHhJZAQAAAAQdG90YWxEdWNrc0Ftb3VudAkBAAAADXRyeUdldEludGVnZXIAAAABAgAAAAxkdWNrc19hbW91bnQEAAAACmVnZ3NOZWVkZWQJAQAAABVjb3VudEVnZ3NOZWVkZWRBbW91bnQAAAABBQAAABB0b3RhbER1Y2tzQW1vdW50BAAAAA0kdDAxMDc1MTEwODAzCQAFFAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAVEVUNLLQUAAAADZ2VuAgAAAAMtSlUCAAAABDhXLUoEAAAAB2R1Y2tHZW4IBQAAAA0kdDAxMDc1MTEwODAzAAAAAl8xBAAAAAdmYXJtR2VuCAUAAAANJHQwMTA3NTExMDgwMwAAAAJfMgQAAAALZGVzY3JpcHRpb24JAAEsAAAAAgkAASwAAAACAgAAAA57Imdlbm90eXBlIjogIgUAAAAHZHVja0dlbgIAAAAZIiwgImNyb3NzYnJlZWRpbmciOiB0cnVlfQQAAAAFYXNzZXQJAARDAAAABwUAAAAHZHVja0dlbgUAAAALZGVzY3JpcHRpb24AAAAAAAAAAAEAAAAAAAAAAAAHBQAAAAR1bml0BQAAAAZoZWlnaHQEAAAAB2Fzc2V0SWQJAAQ4AAAAAQUAAAAFYXNzZXQEAAAACWR1Y2tJZEtleQkBAAAADGdldER1Y2tJZEtleQAAAAIFAAAAB2FkZHJlc3MFAAAABHR4SWQJAAUUAAAAAgkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkBAAAAGmdldEhhdGNoaW5nRmluaXNoSGVpZ2h0S2V5AAAAAgUAAAAHYWRkcmVzcwUAAAAEdHhJZAUAAAAGaGVpZ2h0CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACAgAAAAxkdWNrc19hbW91bnQJAABkAAAAAgUAAAAQdG90YWxEdWNrc0Ftb3VudAAAAAAAAAAAAQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgIAAAAQZHVja3NfbGFzdF9wcmljZQkAAGkAAAACBQAAAAplZ2dzTmVlZGVkAAAAAAAAD0JACQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIFAAAAEWhhdGNoaW5nU3RhdHVzS2V5BQAAABBIYXRjaGluZ0ZpbmlzaGVkCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIFAAAACWR1Y2tJZEtleQkAAlgAAAABBQAAAAdhc3NldElkCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAAJYAAAAAQUAAAAHYXNzZXRJZAUAAAAJZHVja0lkS2V5CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAAPZ2V0RHVja1N0YXRzS2V5AAAAAQUAAAAHZHVja0dlbgkAAGQAAAACCQEAAAANdHJ5R2V0SW50ZWdlcgAAAAEJAQAAAA9nZXREdWNrU3RhdHNLZXkAAAABBQAAAAdkdWNrR2VuAAAAAAAAAAABCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAGc3RhdHNfBQAAAAdmYXJtR2VuAgAAAAlfcXVhbnRpdHkJAABkAAAAAgkBAAAADXRyeUdldEludGVnZXIAAAABCQABLAAAAAIJAAEsAAAAAgIAAAAGc3RhdHNfBQAAAAdmYXJtR2VuAgAAAAlfcXVhbnRpdHkAAAAAAAAAAAEJAARMAAAAAgUAAAAFYXNzZXQJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwkBAAAABXZhbHVlAAAAAQkABCYAAAABBQAAAAdhZGRyZXNzAAAAAAAAAAABBQAAAAdhc3NldElkBQAAAANuaWwJAAJYAAAAAQUAAAAHYXNzZXRJZAAAAAFpAQAAAAxyZWR1Y2VSYXJpdHkAAAACAAAAB2Fzc2V0SWQAAAAEZkdlbgQAAAAFYXNzZXQJAAJZAAAAAQUAAAAHYXNzZXRJZAMDCQEAAAACIT0AAAACCAUAAAABaQAAAAZjYWxsZXIJAQAAABFnZXRSZWJpcnRoQWRkcmVzcwAAAAAJAQAAAAIhPQAAAAIIBQAAAAFpAAAABmNhbGxlcgUAAAAEdGhpcwcJAAACAAAAAQIAAAAVYWRtaW4gb3IgcmViaXJ0aCBvbmx5BAAAAAdkdWNrR2VuCAkBAAAABXZhbHVlAAAAAQkAA+wAAAABBQAAAAVhc3NldAAAAARuYW1lBAAAAAZsZXR0ZXIJAQAAAAl0YWtlUmlnaHQAAAACCQABLwAAAAIFAAAAB2R1Y2tHZW4AAAAAAAAAAAYAAAAAAAAAAAEEAAAAB2Zhcm1HZW4JAAEsAAAAAgkAASwAAAACAgAAAAE4BQAAAAZsZXR0ZXICAAAAAi1HCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAAPZ2V0RHVja1N0YXRzS2V5AAAAAQUAAAAHZHVja0dlbgkAAGUAAAACCQEAAAANdHJ5R2V0SW50ZWdlcgAAAAEJAQAAAA9nZXREdWNrU3RhdHNLZXkAAAABBQAAAAdkdWNrR2VuAAAAAAAAAAABCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAGc3RhdHNfBQAAAAdmYXJtR2VuAgAAAAlfcXVhbnRpdHkJAABlAAAAAgkBAAAADXRyeUdldEludGVnZXIAAAABCQABLAAAAAIJAAEsAAAAAgIAAAAGc3RhdHNfBQAAAAdmYXJtR2VuAgAAAAlfcXVhbnRpdHkAAAAAAAAAAAEFAAAAA25pbAAAAAEAAAACdHgBAAAABnZlcmlmeQAAAAAJAAH0AAAAAwgFAAAAAnR4AAAACWJvZHlCeXRlcwkAAZEAAAACCAUAAAACdHgAAAAGcHJvb2ZzAAAAAAAAAAAACAUAAAACdHgAAAAPc2VuZGVyUHVibGljS2V5VBAhTQ==", "height": 3112548, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 7HbhscT1Asfa75kZm4gu9Bj3cLidrcmsoYrCGJ1vPeUK Next: J3xPMQWatEWFMMfie3TUrHNY4stbftnAafcr6Z6Zy25h Diff:
OldNewDifferences
9191 func getRandomName (txId,hatchingFinishHeight) = {
9292 let jackpotRandom = getRandomNumber(500, txId, hatchingFinishHeight, 0)
9393 if (if ((5 > jackpotRandom))
94- then (wasUniqueBorn("DUCK-WWZETKIN-JU") == 0)
94+ then (wasUniqueBorn("DUCK-WWPUZZLE-JU") == 0)
9595 else false)
96- then $Tuple2("DUCK-WWZETKIN-JU", "1E1I1K1N1T1U2W1Z-J")
97- else if (if ((10 > jackpotRandom))
98- then (wasUniqueBorn("DUCK-WWWWMARG-JU") == 0)
99- else false)
100- then $Tuple2("DUCK-WWWWMARG-JU", "1A1G1M1R4W-J")
101- else if (if ((15 > jackpotRandom))
102- then (wasUniqueBorn("DUCK-WWWDAISY-JU") == 0)
103- else false)
104- then $Tuple2("DUCK-WWWDAISY-JU", "1A1D1I1S3W1Y-J")
105- else {
106- let typeRandom = getRandomNumber(4, txId, hatchingFinishHeight, 0)
107- let colorRandom = getRandomNumber(4, txId, hatchingFinishHeight, 1)
108- let color = if ((colorRandom == 0))
109- then "Y"
110- else if ((colorRandom == 1))
111- then "G"
112- else if ((colorRandom == 2))
113- then "B"
114- else "R"
115- if ((typeRandom == 0))
116- then $Tuple2(("DUCK-HHHHHHHH-G" + color), "8H-G")
117- else if ((typeRandom == 1))
118- then $Tuple2(("DUCK-GGGGGGGG-G" + color), "8G-G")
119- else if ((typeRandom == 2))
120- then $Tuple2(("DUCK-IIIIIIII-G" + color), "8I-G")
121- else $Tuple2(("DUCK-KKKKKKKK-G" + color), "8K-G")
122- }
96+ then $Tuple2("DUCK-WWPUZZLE-JU", "1E1L1P1U2W2Z-J")
97+ else {
98+ let typeRandom = getRandomNumber(4, txId, hatchingFinishHeight, 0)
99+ let colorRandom = getRandomNumber(4, txId, hatchingFinishHeight, 1)
100+ let color = if ((colorRandom == 0))
101+ then "Y"
102+ else if ((colorRandom == 1))
103+ then "G"
104+ else if ((colorRandom == 2))
105+ then "B"
106+ else "R"
107+ if ((typeRandom == 0))
108+ then $Tuple2(("DUCK-HHHHHHHH-G" + color), "8H-G")
109+ else if ((typeRandom == 1))
110+ then $Tuple2(("DUCK-GGGGGGGG-G" + color), "8G-G")
111+ else if ((typeRandom == 2))
112+ then $Tuple2(("DUCK-IIIIIIII-G" + color), "8I-G")
113+ else $Tuple2(("DUCK-KKKKKKKK-G" + color), "8K-G")
114+ }
123115 }
124116
125117
216208 else if ((hatchingFinishHeight > height))
217209 then throw((((("Hatching is not finished yet " + toString((hatchingFinishHeight - height))) + " blocks remaining, it will take around ") + toString((hatchingFinishHeight - height))) + " minutes"))
218210 else {
219- let $t081748240 = getRandomName(txId, hatchingFinishHeight)
220- let duckGen = $t081748240._1
221- let farmGen = $t081748240._2
211+ let $t079167982 = getRandomName(txId, hatchingFinishHeight)
212+ let duckGen = $t079167982._1
213+ let farmGen = $t079167982._2
222214 let description = (("{\"genotype\": \"" + duckGen) + "\", \"crossbreeding\": true}")
223215 let asset = Issue(duckGen, description, 1, 0, false, unit, hatchingFinishHeight)
224216 let assetId = calculateAssetId(asset)
238230 let finishHeightKey = getHatchingFinishHeightKey(address, txId)
239231 let totalDucksAmount = tryGetInteger("ducks_amount")
240232 let eggsNeeded = countEggsNeededAmount(totalDucksAmount)
241- let $t094759560 = getRandomName(txId, (value(transactionHeightById(txId)) + 1))
242- let duckGen = $t094759560._1
243- let farmGen = $t094759560._2
233+ let $t092179302 = getRandomName(txId, (value(transactionHeightById(txId)) + 1))
234+ let duckGen = $t092179302._1
235+ let farmGen = $t092179302._2
244236 let description = (("{\"genotype\": \"" + duckGen) + "\", \"crossbreeding\": true}")
245237 let asset = Issue(duckGen, description, 1, 0, false, unit, height)
246238 let assetId = calculateAssetId(asset)
262254 let finishHeightKey = getHatchingFinishHeightKey(address, txId)
263255 let totalDucksAmount = tryGetInteger("ducks_amount")
264256 let eggsNeeded = countEggsNeededAmount(totalDucksAmount)
265- let $t01100911061 = $Tuple2((("DUCK-" + gen) + "-JU"), "8W-J")
266- let duckGen = $t01100911061._1
267- let farmGen = $t01100911061._2
257+ let $t01075110803 = $Tuple2((("DUCK-" + gen) + "-JU"), "8W-J")
258+ let duckGen = $t01075110803._1
259+ let farmGen = $t01075110803._2
268260 let description = (("{\"genotype\": \"" + duckGen) + "\", \"crossbreeding\": true}")
269261 let asset = Issue(duckGen, description, 1, 0, false, unit, height)
270262 let assetId = calculateAssetId(asset)
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 getOracle () = Address(fromBase58String(tryGetString("static_oracleAddress")))
1616
1717
1818 func getEggAssetId () = fromBase58String(tryGetStringExternal(getOracle(), "static_eggAssetId"))
1919
2020
2121 func getRebirthAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), "static_rebirthAddress")))
2222
2323
2424 func getSwopPromoAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), "static_swopPromoAddress")))
2525
2626
2727 func getBabyDuckAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), "static_babyDuckAddress")))
2828
2929
3030 func getRefContractAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), "static_refContractAddress")))
3131
3232
3333 let delayForHatching = 2
3434
3535 let typesAmount = 10
3636
3737 let RefererReward = 5
3838
3939 let HatchingStarted = "HATCHING_STARTED"
4040
4141 let HatchingFinished = "HATCHING_FINISHED"
4242
4343 func isLocked () = {
4444 let masterAddress = Address(base58'3PEPftf2kWZDmAaWBjs6BUJa9957kiA2PkU')
4545 match getInteger(masterAddress, "egglock") {
4646 case b: Int =>
4747 b
4848 case _ =>
4949 0
5050 }
5151 }
5252
5353
5454 func getHatchingStatusKey (address,txId) = (((address + "_") + toBase58String(txId)) + "_status")
5555
5656
5757 func getHatchingFinishHeightKey (address,txId) = (((address + "_") + toBase58String(txId)) + "_fh")
5858
5959
6060 func getDuckIdKey (address,txId) = (((address + "_") + toBase58String(txId)) + "_di")
6161
6262
6363 func getDuckStatsKey (genString) = (("stats_" + genString) + "_amount")
6464
6565
6666 func tryGetInteger (key) = {
6767 let val = match getInteger(this, key) {
6868 case b: Int =>
6969 b
7070 case _ =>
7171 0
7272 }
7373 val
7474 }
7575
7676
7777 let discountCoefficient = tryGetInteger("discountCoefficient")
7878
7979 let saleCoefficient = tryGetInteger("saleCoefficient")
8080
8181 func getRandomNumber (variants,txId,hatchingFinishHeight,offset) = {
8282 let randomSeedBlock = value(blockInfoByHeight((hatchingFinishHeight - 1)))
8383 let randomHash = sha256((txId + value(randomSeedBlock.vrf)))
8484 (toInt(randomHash, (offset * 8)) % variants)
8585 }
8686
8787
8888 func wasUniqueBorn (gen) = tryGetInteger(getDuckStatsKey(gen))
8989
9090
9191 func getRandomName (txId,hatchingFinishHeight) = {
9292 let jackpotRandom = getRandomNumber(500, txId, hatchingFinishHeight, 0)
9393 if (if ((5 > jackpotRandom))
94- then (wasUniqueBorn("DUCK-WWZETKIN-JU") == 0)
94+ then (wasUniqueBorn("DUCK-WWPUZZLE-JU") == 0)
9595 else false)
96- then $Tuple2("DUCK-WWZETKIN-JU", "1E1I1K1N1T1U2W1Z-J")
97- else if (if ((10 > jackpotRandom))
98- then (wasUniqueBorn("DUCK-WWWWMARG-JU") == 0)
99- else false)
100- then $Tuple2("DUCK-WWWWMARG-JU", "1A1G1M1R4W-J")
101- else if (if ((15 > jackpotRandom))
102- then (wasUniqueBorn("DUCK-WWWDAISY-JU") == 0)
103- else false)
104- then $Tuple2("DUCK-WWWDAISY-JU", "1A1D1I1S3W1Y-J")
105- else {
106- let typeRandom = getRandomNumber(4, txId, hatchingFinishHeight, 0)
107- let colorRandom = getRandomNumber(4, txId, hatchingFinishHeight, 1)
108- let color = if ((colorRandom == 0))
109- then "Y"
110- else if ((colorRandom == 1))
111- then "G"
112- else if ((colorRandom == 2))
113- then "B"
114- else "R"
115- if ((typeRandom == 0))
116- then $Tuple2(("DUCK-HHHHHHHH-G" + color), "8H-G")
117- else if ((typeRandom == 1))
118- then $Tuple2(("DUCK-GGGGGGGG-G" + color), "8G-G")
119- else if ((typeRandom == 2))
120- then $Tuple2(("DUCK-IIIIIIII-G" + color), "8I-G")
121- else $Tuple2(("DUCK-KKKKKKKK-G" + color), "8K-G")
122- }
96+ then $Tuple2("DUCK-WWPUZZLE-JU", "1E1L1P1U2W2Z-J")
97+ else {
98+ let typeRandom = getRandomNumber(4, txId, hatchingFinishHeight, 0)
99+ let colorRandom = getRandomNumber(4, txId, hatchingFinishHeight, 1)
100+ let color = if ((colorRandom == 0))
101+ then "Y"
102+ else if ((colorRandom == 1))
103+ then "G"
104+ else if ((colorRandom == 2))
105+ then "B"
106+ else "R"
107+ if ((typeRandom == 0))
108+ then $Tuple2(("DUCK-HHHHHHHH-G" + color), "8H-G")
109+ else if ((typeRandom == 1))
110+ then $Tuple2(("DUCK-GGGGGGGG-G" + color), "8G-G")
111+ else if ((typeRandom == 2))
112+ then $Tuple2(("DUCK-IIIIIIII-G" + color), "8I-G")
113+ else $Tuple2(("DUCK-KKKKKKKK-G" + color), "8K-G")
114+ }
123115 }
124116
125117
126118 func countEggsNeededAmount (totalDucksAmount) = {
127119 let n = totalDucksAmount
128120 let g = discountCoefficient
129121 let s = saleCoefficient
130122 let t = typesAmount
131123 let price = pow((100 + ((n * g) / (10 * t))), 2, 5, 1, 2, DOWN)
132124 if ((saleCoefficient == 0))
133125 then (price * 1000000)
134126 else (((price * 1000000) / 100) * (100 - saleCoefficient))
135127 }
136128
137129
138130 @Callable(i)
139131 func configureOracle (oracle) = if ((i.caller != this))
140132 then throw("admin only")
141133 else [StringEntry("static_oracleAddress", oracle)]
142134
143135
144136
145137 @Callable(i)
146138 func setDiscount (val) = if ((i.caller != this))
147139 then throw("admin_only")
148140 else [IntegerEntry("discountCoefficient", val)]
149141
150142
151143
152144 @Callable(i)
153145 func setSale (val) = if ((i.caller != this))
154146 then throw("admin_only")
155147 else [IntegerEntry("saleCoefficient", val)]
156148
157149
158150
159151 @Callable(i)
160152 func startDuckHatching (refererAddress) = if ((isLocked() > 0))
161153 then throw("EGG operations are temporarily locked")
162154 else {
163155 let totalDucksAmount = tryGetInteger("ducks_amount")
164156 let eggsNeeded = countEggsNeededAmount(totalDucksAmount)
165157 let firstPayment = value(i.payments[0])
166158 let results = [StringEntry(getHatchingStatusKey(toString(i.originCaller), i.transactionId), HatchingStarted), IntegerEntry(getHatchingFinishHeightKey(toString(i.originCaller), i.transactionId), (height + delayForHatching)), IntegerEntry("ducks_amount", (totalDucksAmount + 1)), IntegerEntry("ducks_last_price", (eggsNeeded / 1000000))]
167159 if ((i.caller == getBabyDuckAddress()))
168160 then (results ++ [BooleanEntry((("hatching_" + toBase58String(i.transactionId)) + "_babyDuck"), true)])
169161 else if ((firstPayment.assetId != getEggAssetId()))
170162 then throw(("You can attach only EGG tokens with the following asset id: " + toBase58String(getEggAssetId())))
171163 else if ((eggsNeeded > firstPayment.amount))
172164 then throw(("To hatch a duck you currently need the following amount of EGGlets: " + toString(eggsNeeded)))
173165 else {
174166 let refererReward = fraction(eggsNeeded, RefererReward, 100)
175167 let refCall = invoke(getRefContractAddress(), "refPayment", [refererAddress], [AttachedPayment(getEggAssetId(), refererReward)])
176168 if ((refCall == refCall))
177169 then (results ++ [ScriptTransfer(i.caller, (firstPayment.amount - eggsNeeded), getEggAssetId())])
178170 else throw("Strict value is not equal to itself.")
179171 }
180172 }
181173
182174
183175
184176 @Callable(i)
185177 func startDuckHatchingForAddress (address) = if ((isLocked() > 0))
186178 then throw("EGG operations are temporarily locked")
187179 else if ((i.caller != getSwopPromoAddress()))
188180 then throw("Pernission denied")
189181 else {
190182 let totalDucksAmount = tryGetInteger("ducks_amount")
191183 let eggsNeeded = countEggsNeededAmount(totalDucksAmount)
192184 [StringEntry(getHatchingStatusKey(address, i.transactionId), HatchingStarted), IntegerEntry(getHatchingFinishHeightKey(address, i.transactionId), (height + delayForHatching)), IntegerEntry("ducks_amount", (totalDucksAmount + 1)), IntegerEntry("ducks_last_price", (eggsNeeded / 1000000)), BooleanEntry((("hatching_" + toBase58String(i.transactionId)) + "_promo"), true)]
193185 }
194186
195187
196188
197189 @Callable(i)
198190 func finishDuckHatching (txIdStr) = {
199191 let txId = fromBase58String(txIdStr)
200192 let hatchingStatusKey = getHatchingStatusKey(toString(i.caller), txId)
201193 let finishHeightKey = getHatchingFinishHeightKey(toString(i.caller), txId)
202194 let duckIdKey = getDuckIdKey(toString(i.caller), txId)
203195 let duckFromBaby = match getBoolean((("hatching_" + txIdStr) + "_babyDuck")) {
204196 case t: Boolean =>
205197 t
206198 case _ =>
207199 false
208200 }
209201 let hatchingTxStatus = getStringValue(this, hatchingStatusKey)
210202 let hatchingFinishHeight = getIntegerValue(this, finishHeightKey)
211203 if ((hatchingTxStatus == HatchingFinished))
212204 then {
213205 let duckId = getStringValue(this, getDuckIdKey(toString(i.caller), txId))
214206 throw(("The duck was hatched and claimed already, here is the folowing: " + duckId))
215207 }
216208 else if ((hatchingFinishHeight > height))
217209 then throw((((("Hatching is not finished yet " + toString((hatchingFinishHeight - height))) + " blocks remaining, it will take around ") + toString((hatchingFinishHeight - height))) + " minutes"))
218210 else {
219- let $t081748240 = getRandomName(txId, hatchingFinishHeight)
220- let duckGen = $t081748240._1
221- let farmGen = $t081748240._2
211+ let $t079167982 = getRandomName(txId, hatchingFinishHeight)
212+ let duckGen = $t079167982._1
213+ let farmGen = $t079167982._2
222214 let description = (("{\"genotype\": \"" + duckGen) + "\", \"crossbreeding\": true}")
223215 let asset = Issue(duckGen, description, 1, 0, false, unit, hatchingFinishHeight)
224216 let assetId = calculateAssetId(asset)
225217 let amount = (tryGetInteger(getDuckStatsKey(duckGen)) + 1)
226218 [StringEntry(hatchingStatusKey, HatchingFinished), StringEntry(duckIdKey, toBase58String(assetId)), StringEntry(toBase58String(assetId), duckIdKey), BooleanEntry((("duck_" + toBase58String(assetId)) + "_grown"), duckFromBaby), IntegerEntry(getDuckStatsKey(duckGen), amount), IntegerEntry((("stats_" + farmGen) + "_quantity"), (tryGetInteger((("stats_" + farmGen) + "_quantity")) + 1)), asset, ScriptTransfer(i.caller, 1, assetId)]
227219 }
228220 }
229221
230222
231223
232224 @Callable(i)
233225 func issueFreeDuck (address,txIdStr) = if ((i.caller != getRebirthAddress()))
234226 then throw("rebirth only")
235227 else {
236228 let txId = fromBase58String(txIdStr)
237229 let hatchingStatusKey = getHatchingStatusKey(address, txId)
238230 let finishHeightKey = getHatchingFinishHeightKey(address, txId)
239231 let totalDucksAmount = tryGetInteger("ducks_amount")
240232 let eggsNeeded = countEggsNeededAmount(totalDucksAmount)
241- let $t094759560 = getRandomName(txId, (value(transactionHeightById(txId)) + 1))
242- let duckGen = $t094759560._1
243- let farmGen = $t094759560._2
233+ let $t092179302 = getRandomName(txId, (value(transactionHeightById(txId)) + 1))
234+ let duckGen = $t092179302._1
235+ let farmGen = $t092179302._2
244236 let description = (("{\"genotype\": \"" + duckGen) + "\", \"crossbreeding\": true}")
245237 let asset = Issue(duckGen, description, 1, 0, false, unit, height)
246238 let assetId = calculateAssetId(asset)
247239 let amount = (tryGetInteger(getDuckStatsKey(duckGen)) + 1)
248240 let duckIdKey = getDuckIdKey(address, txId)
249241 $Tuple2([IntegerEntry(getHatchingFinishHeightKey(address, txId), height), IntegerEntry("ducks_amount", (totalDucksAmount + 1)), IntegerEntry("ducks_last_price", (eggsNeeded / 1000000)), StringEntry(hatchingStatusKey, HatchingFinished), StringEntry(duckIdKey, toBase58String(assetId)), StringEntry(toBase58String(assetId), duckIdKey), IntegerEntry(getDuckStatsKey(duckGen), amount), IntegerEntry((("stats_" + farmGen) + "_quantity"), (tryGetInteger((("stats_" + farmGen) + "_quantity")) + 1)), asset, ScriptTransfer(value(addressFromString(address)), 1, assetId)], toBase58String(assetId))
250242 }
251243
252244
253245
254246 @Callable(i)
255247 func issueJackpot (address,txIdStr,gen) = if (if ((i.caller != getRebirthAddress()))
256248 then (i.caller != this)
257249 else false)
258250 then throw("admin or rebirth only")
259251 else {
260252 let txId = fromBase58String(txIdStr)
261253 let hatchingStatusKey = getHatchingStatusKey(address, txId)
262254 let finishHeightKey = getHatchingFinishHeightKey(address, txId)
263255 let totalDucksAmount = tryGetInteger("ducks_amount")
264256 let eggsNeeded = countEggsNeededAmount(totalDucksAmount)
265- let $t01100911061 = $Tuple2((("DUCK-" + gen) + "-JU"), "8W-J")
266- let duckGen = $t01100911061._1
267- let farmGen = $t01100911061._2
257+ let $t01075110803 = $Tuple2((("DUCK-" + gen) + "-JU"), "8W-J")
258+ let duckGen = $t01075110803._1
259+ let farmGen = $t01075110803._2
268260 let description = (("{\"genotype\": \"" + duckGen) + "\", \"crossbreeding\": true}")
269261 let asset = Issue(duckGen, description, 1, 0, false, unit, height)
270262 let assetId = calculateAssetId(asset)
271263 let duckIdKey = getDuckIdKey(address, txId)
272264 $Tuple2([IntegerEntry(getHatchingFinishHeightKey(address, txId), height), IntegerEntry("ducks_amount", (totalDucksAmount + 1)), IntegerEntry("ducks_last_price", (eggsNeeded / 1000000)), StringEntry(hatchingStatusKey, HatchingFinished), StringEntry(duckIdKey, toBase58String(assetId)), StringEntry(toBase58String(assetId), duckIdKey), IntegerEntry(getDuckStatsKey(duckGen), (tryGetInteger(getDuckStatsKey(duckGen)) + 1)), IntegerEntry((("stats_" + farmGen) + "_quantity"), (tryGetInteger((("stats_" + farmGen) + "_quantity")) + 1)), asset, ScriptTransfer(value(addressFromString(address)), 1, assetId)], toBase58String(assetId))
273265 }
274266
275267
276268
277269 @Callable(i)
278270 func reduceRarity (assetId,fGen) = {
279271 let asset = fromBase58String(assetId)
280272 if (if ((i.caller != getRebirthAddress()))
281273 then (i.caller != this)
282274 else false)
283275 then throw("admin or rebirth only")
284276 else {
285277 let duckGen = value(assetInfo(asset)).name
286278 let letter = takeRight(take(duckGen, 6), 1)
287279 let farmGen = (("8" + letter) + "-G")
288280 [IntegerEntry(getDuckStatsKey(duckGen), (tryGetInteger(getDuckStatsKey(duckGen)) - 1)), IntegerEntry((("stats_" + farmGen) + "_quantity"), (tryGetInteger((("stats_" + farmGen) + "_quantity")) - 1))]
289281 }
290282 }
291283
292284
293285 @Verifier(tx)
294286 func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
295287

github/deemru/w8io/786bc32 
71.41 ms