tx · C16UUBTTGYW79iKdJCTmSAeLcMgmVejhCywdhvus7oSb

3P8yE1KVorsZvcw4ZoBACupLKHS7NHT8Gh1:  -0.01400000 Waves

2021.05.25 21:04 [2606198] smart account 3P8yE1KVorsZvcw4ZoBACupLKHS7NHT8Gh1 > SELF 0.00000000 Waves

{ "type": 13, "id": "C16UUBTTGYW79iKdJCTmSAeLcMgmVejhCywdhvus7oSb", "fee": 1400000, "feeAssetId": null, "timestamp": 1621965875787, "version": 2, "chainId": 87, "sender": "3P8yE1KVorsZvcw4ZoBACupLKHS7NHT8Gh1", "senderPublicKey": "KhhNHwEfzTSs8NZUMVx8dktYYnK1kerDpeWzgxiMyQ5", "proofs": [ "61VomrzBoqvEe5rzwUELQ2ocTRZnchkWuy3ZtrM2tsL32LSiju1qq9xVsuDEsF2e4kdUtgRN9AvxQd5Q1EBzB8Bh" ], "script": "base64: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cmVlZGVkOiAFAAAADWJyZWVkZWRTdGF0dXMJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAAEGdldER1Y2tQYXJlbnRLZXkAAAACCAUAAAABaQAAAA10cmFuc2FjdGlvbklkAAAAAAAAAAABBQAAAAxmaXJzdEFzc2V0SWQJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAAEGdldER1Y2tQYXJlbnRLZXkAAAACCAUAAAABaQAAAA10cmFuc2FjdGlvbklkAAAAAAAAAAACBQAAAA1zZWNvbmRBc3NldElkCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAABNnZXRQcm9jZXNzU3RhdHVzS2V5AAAAAgkABCUAAAABCAUAAAABaQAAAAZjYWxsZXIIBQAAAAFpAAAADXRyYW5zYWN0aW9uSWQFAAAAD0hhdGNoaW5nU3RhcnRlZAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkBAAAAGWdldFByb2Nlc3NGaW5pc2hIZWlnaHRLZXkAAAACCQAEJQAAAAEIBQAAAAFpAAAABmNhbGxlcggFAAAAAWkAAAANdHJhbnNhY3Rpb25JZAkAAGQAAAACBQAAAAZoZWlnaHQFAAAAEGRlbGF5Rm9ySGF0Y2hpbmcFAAAAA25pbAAAAAFpAQAAABJmaW5pc2hEdWNrSGF0Y2hpbmcAAAABAAAAB3R4SWRTdHIEAAAABHR4SWQJAAJZAAAAAQUAAAAHdHhJZFN0cgQAAAAQcHJvY2Vzc1N0YXR1c0tleQkBAAAAE2dldFByb2Nlc3NTdGF0dXNLZXkAAAACCQAEJQAAAAEIBQAAAAFpAAAABmNhbGxlcgUAAAAEdHhJZAQAAAAPZmluaXNoSGVpZ2h0S2V5CQEAAAAZZ2V0UHJvY2Vzc0ZpbmlzaEhlaWdodEtleQAAAAIJAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyBQAAAAR0eElkBAAAAAlkdWNrSWRLZXkJAQAAAAxnZXREdWNrSWRLZXkAAAACCQAEJQAAAAEIBQAAAAFpAAAABmNhbGxlcgUAAAAEdHhJZAQAAAAPcHJvY2Vzc1R4U3RhdHVzCQEAAAARQGV4dHJOYXRpdmUoMTA1MykAAAACBQAAAAR0aGlzBQAA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", "height": 2606198, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 8kpU53m8w8VHprgyH9ewpFaACkE9gJokaxdSEhgNuSvJ Next: GqHwKVHfmbgvUcagrjYkMwodbNpoPpSEsw8KeKtgRa3r Diff:
OldNewDifferences
77
88 let HatchingFinished = "BREEDING_FINISHED"
99
10-let incubatorAddress = base58'3PACKMArmh4BAEawStYmpcU62aiNTBJKvNh'
10+let incubatorAddress = base58'3PEktVux2RhchSN63DsDo4b4mz4QqzKSeDv'
1111
1212 let MaxGeneration = 2
1313
14-let Generations = ["G", "H", "I", "K", "L"]
14+let Generations = ["G", "H", "I", "K", "L", "M"]
1515
1616 func getProcessStatusKey (address,txId) = (((address + "_") + toBase58String(txId)) + "_status")
1717
112112 func canBeBreeded (asset1Id,asset2Id) = {
113113 let asset1Gen = split(value(assetInfo(asset1Id)).name, "")
114114 let asset2Gen = split(value(assetInfo(asset2Id)).name, "")
115- if (if ((value(indexOf(Generations, asset1Gen[14])) >= MaxGeneration))
116- then true
117- else (value(indexOf(Generations, asset2Gen[14])) >= MaxGeneration))
118- then (("you can only breed ducks with generation " + Generations[(MaxGeneration - 1)]) + " and lower")
119- else "true"
115+ throw(((((("DEBUG:" + toString(value(indexOf(Generations, asset1Gen[14])))) + ", ") + toString(MaxGeneration)) + ", ") + toString(value(indexOf(Generations, asset2Gen[14])))))
120116 }
121117
122118
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 4 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let delayForHatching = 2
55
66 let HatchingStarted = "BREEDING_STARTED"
77
88 let HatchingFinished = "BREEDING_FINISHED"
99
10-let incubatorAddress = base58'3PACKMArmh4BAEawStYmpcU62aiNTBJKvNh'
10+let incubatorAddress = base58'3PEktVux2RhchSN63DsDo4b4mz4QqzKSeDv'
1111
1212 let MaxGeneration = 2
1313
14-let Generations = ["G", "H", "I", "K", "L"]
14+let Generations = ["G", "H", "I", "K", "L", "M"]
1515
1616 func getProcessStatusKey (address,txId) = (((address + "_") + toBase58String(txId)) + "_status")
1717
1818
1919 func getProcessFinishHeightKey (address,txId) = (((address + "_") + toBase58String(txId)) + "_fh")
2020
2121
2222 func getDuckParentKey (txId,parentNum) = ((("inittx_" + toBase58String(txId)) + "_parent") + toString(parentNum))
2323
2424
2525 func getDuckIdKey (address,txId) = (((address + "_") + toBase58String(txId)) + "_di")
2626
2727
2828 func getDuckStatsKey (genString) = (("stats_" + genString) + "_amount")
2929
3030
3131 func tryGetInteger (key) = {
3232 let val = match getInteger(this, key) {
3333 case b: Int =>
3434 b
3535 case _ =>
3636 0
3737 }
3838 val
3939 }
4040
4141
4242 func tryGetString (key) = {
4343 let val = match getString(this, key) {
4444 case b: String =>
4545 b
4646 case _ =>
4747 ""
4848 }
4949 val
5050 }
5151
5252
5353 func determineGeneration (g1,g2) = {
5454 let gIndex = max([value(indexOf(Generations, g1)), value(indexOf(Generations, g2))])
5555 Generations[(gIndex + 1)]
5656 }
5757
5858
5959 func getRandomNumber (variants,txId,hatchingFinishHeight,offset) = {
6060 let randomSeedBlock = value(blockInfoByHeight((hatchingFinishHeight - 1)))
6161 let randomHash = sha256((txId + value(randomSeedBlock.vrf)))
6262 (toInt(randomHash, offset) % variants)
6363 }
6464
6565
6666 func getRandomGen (gen1,gen2,step,txId,hatchingFinishHeight) = {
6767 let randomNum = getRandomNumber(2, txId, hatchingFinishHeight, step)
6868 let gen = if ((randomNum == 0))
6969 then gen1
7070 else gen2
7171 gen
7272 }
7373
7474
7575 func generateDuck (txId,hatchingFinishHeight) = {
7676 let colorRandom = getRandomNumber(4, txId, hatchingFinishHeight, 11)
7777 let color = if ((colorRandom == 0))
7878 then "Y"
7979 else if ((colorRandom == 1))
8080 then "G"
8181 else if ((colorRandom == 2))
8282 then "B"
8383 else "R"
8484 let parent1Id = fromBase58String(tryGetString(getDuckParentKey(txId, 1)))
8585 let parent2Id = fromBase58String(tryGetString(getDuckParentKey(txId, 2)))
8686 let parent1Gen = split(value(assetInfo(parent1Id)).name, "")
8787 let parent2Gen = split(value(assetInfo(parent2Id)).name, "")
8888 let gen = ((((((((((("DUCK-" + getRandomGen(parent1Gen[5], parent2Gen[5], 0, txId, hatchingFinishHeight)) + getRandomGen(parent1Gen[6], parent2Gen[6], 1, txId, hatchingFinishHeight)) + getRandomGen(parent1Gen[7], parent2Gen[7], 2, txId, hatchingFinishHeight)) + getRandomGen(parent1Gen[8], parent2Gen[8], 3, txId, hatchingFinishHeight)) + getRandomGen(parent1Gen[9], parent2Gen[9], 4, txId, hatchingFinishHeight)) + getRandomGen(parent1Gen[10], parent2Gen[10], 5, txId, hatchingFinishHeight)) + getRandomGen(parent1Gen[11], parent2Gen[12], 6, txId, hatchingFinishHeight)) + getRandomGen(parent1Gen[12], parent2Gen[12], 7, txId, hatchingFinishHeight)) + "-") + determineGeneration(parent1Gen[14], parent2Gen[14])) + color)
8989 gen
9090 }
9191
9292
9393 func checkAssetInIncubator (assetId) = {
9494 let result = match getString(Address(incubatorAddress), assetId) {
9595 case b: String =>
9696 true
9797 case _ =>
9898 false
9999 }
100100 let result2 = match getString(this, assetId) {
101101 case c: String =>
102102 true
103103 case _ =>
104104 false
105105 }
106106 if (result)
107107 then true
108108 else result2
109109 }
110110
111111
112112 func canBeBreeded (asset1Id,asset2Id) = {
113113 let asset1Gen = split(value(assetInfo(asset1Id)).name, "")
114114 let asset2Gen = split(value(assetInfo(asset2Id)).name, "")
115- if (if ((value(indexOf(Generations, asset1Gen[14])) >= MaxGeneration))
116- then true
117- else (value(indexOf(Generations, asset2Gen[14])) >= MaxGeneration))
118- then (("you can only breed ducks with generation " + Generations[(MaxGeneration - 1)]) + " and lower")
119- else "true"
115+ throw(((((("DEBUG:" + toString(value(indexOf(Generations, asset1Gen[14])))) + ", ") + toString(MaxGeneration)) + ", ") + toString(value(indexOf(Generations, asset2Gen[14])))))
120116 }
121117
122118
123119 @Callable(i)
124120 func startDuckBreeding () = {
125121 let firstAssetId = toBase58String(value(value(i.payments[0]).assetId))
126122 let secondAssetId = toBase58String(value(value(i.payments[1]).assetId))
127123 if (!(if (checkAssetInIncubator(firstAssetId))
128124 then checkAssetInIncubator(secondAssetId)
129125 else false))
130126 then throw("You need to attach 2 valid NFT-ducks.")
131127 else if (if ((tryGetInteger((("asset_" + firstAssetId) + "_children")) > 0))
132128 then true
133129 else (tryGetInteger((("asset_" + secondAssetId) + "_children")) > 0))
134130 then throw("One duck can be used for breeding only once in its lifetime.")
135131 else {
136132 let breededStatus = canBeBreeded(fromBase58String(firstAssetId), fromBase58String(firstAssetId))
137133 if ((breededStatus != "true"))
138134 then throw(("These ducks cannot be breeded: " + breededStatus))
139135 else [StringEntry(getDuckParentKey(i.transactionId, 1), firstAssetId), StringEntry(getDuckParentKey(i.transactionId, 2), secondAssetId), StringEntry(getProcessStatusKey(toString(i.caller), i.transactionId), HatchingStarted), IntegerEntry(getProcessFinishHeightKey(toString(i.caller), i.transactionId), (height + delayForHatching))]
140136 }
141137 }
142138
143139
144140
145141 @Callable(i)
146142 func finishDuckHatching (txIdStr) = {
147143 let txId = fromBase58String(txIdStr)
148144 let processStatusKey = getProcessStatusKey(toString(i.caller), txId)
149145 let finishHeightKey = getProcessFinishHeightKey(toString(i.caller), txId)
150146 let duckIdKey = getDuckIdKey(toString(i.caller), txId)
151147 let processTxStatus = getStringValue(this, processStatusKey)
152148 let processFinishHeight = getIntegerValue(this, finishHeightKey)
153149 if ((processTxStatus == HatchingFinished))
154150 then {
155151 let duckId = getStringValue(this, getDuckIdKey(toString(i.caller), txId))
156152 throw(("The duck was breeded and claimed already, here is the folowing: " + duckId))
157153 }
158154 else if ((processFinishHeight > height))
159155 then throw((((("Breeding is not finished yet " + toString((processFinishHeight - height))) + " blocks remaining, it will take around ") + toString((processFinishHeight - height))) + " minutes"))
160156 else {
161157 let duckGen = generateDuck(txId, processFinishHeight)
162158 let description = (("{\"genotype\": \"" + duckGen) + "\", \"crossbreeding\": true}")
163159 let asset = Issue(duckGen, description, 1, 0, false, unit, processFinishHeight)
164160 let assetId = calculateAssetId(asset)
165161 let amount = (tryGetInteger(getDuckStatsKey(duckGen)) + 1)
166162 let parent1Id = tryGetString(getDuckParentKey(txId, 1))
167163 let parent2Id = tryGetString(getDuckParentKey(txId, 2))
168164 [StringEntry(processStatusKey, HatchingFinished), StringEntry(duckIdKey, toBase58String(assetId)), StringEntry(toBase58String(assetId), duckIdKey), IntegerEntry(getDuckStatsKey(duckGen), amount), IntegerEntry((("asset_" + parent1Id) + "_children"), 1), IntegerEntry((("asset_" + parent2Id) + "_children"), 1), asset, ScriptTransfer(i.caller, 1, assetId), ScriptTransfer(i.caller, 1, fromBase58String(parent1Id)), ScriptTransfer(i.caller, 1, fromBase58String(parent2Id))]
169165 }
170166 }
171167
172168
173169 @Verifier(tx)
174170 func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
175171

github/deemru/w8io/873ac7e 
66.93 ms