tx · ATxTzkL75zTDrUFwiTKKWdjxxPVnxWUL3BWMgsb9mxJp

3P7C5CUc6XzpJqmDaeUNZ1by1XSCyA2VKnv:  -0.05000000 Waves

2021.05.10 21:33 [2584605] smart account 3P7C5CUc6XzpJqmDaeUNZ1by1XSCyA2VKnv > SELF 0.00000000 Waves

{ "type": 13, "id": "ATxTzkL75zTDrUFwiTKKWdjxxPVnxWUL3BWMgsb9mxJp", "fee": 5000000, "feeAssetId": null, "timestamp": 1620671588287, "version": 2, "chainId": 87, "sender": "3P7C5CUc6XzpJqmDaeUNZ1by1XSCyA2VKnv", "senderPublicKey": "GbHvAsyeDc5Uth6me7pfBMXnGff8LSoppzXkdjw7etww", "proofs": [ "eL9HpsJVP1oer7FzutXFFBEWER3uNQKTbqFzh3sQrGcUhu9rHV46S5UidN2c6hB6LeTWLWGRx7BGbdSe22yXhQg" ], "script": "base64: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", "height": 2584605, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: D9pSfcikpvaiPze4bBXs44v8zn9NZse5HcLDCNdnoHX8 Next: none Diff:
OldNewDifferences
118118 then true
119119 else (tryGetInteger((("asset_" + secondAssetId) + "_children")) > 0))
120120 then throw("One duck can be used for breeding only once in its lifetime.")
121- else [StringEntry(getDuckParentKey(i.transactionId, 1), firstAssetId), IntegerEntry((("asset_" + firstAssetId) + "_children"), 1), IntegerEntry((("asset_" + secondAssetId) + "_children"), 1), StringEntry(((("account_" + toString(i.caller)) + "_tx_") + toBase58String(i.transactionId)), "started"), StringEntry(getDuckParentKey(i.transactionId, 2), secondAssetId), StringEntry(getProcessStatusKey(toString(i.caller), i.transactionId), HatchingStarted), IntegerEntry(getProcessFinishHeightKey(toString(i.caller), i.transactionId), (height + delayForHatching))]
121+ else [StringEntry(getDuckParentKey(i.transactionId, 1), firstAssetId), IntegerEntry((("asset_" + firstAssetId) + "_children"), 1), IntegerEntry((("asset_" + secondAssetId) + "_children"), 1), StringEntry(((("account_" + toString(i.caller)) + "_tx_") + toBase58String(i.transactionId)), "started"), StringEntry(getDuckParentKey(i.transactionId, 2), secondAssetId), StringEntry(getProcessStatusKey(toString(i.caller), i.transactionId), HatchingStarted), IntegerEntry(getProcessFinishHeightKey(toString(i.caller), i.transactionId), (height + delayForHatching)), ScriptTransfer(i.caller, 1, fromBase58String(firstAssetId)), ScriptTransfer(i.caller, 1, fromBase58String(secondAssetId))]
122122 }
123123
124124
144144 let asset = Issue(duckGen, description, 1, 0, false, unit, processFinishHeight)
145145 let assetId = calculateAssetId(asset)
146146 let amount = (tryGetInteger(getDuckStatsKey(duckGen)) + 1)
147- let parent1Id = tryGetString(getDuckParentKey(txId, 1))
148- let parent2Id = tryGetString(getDuckParentKey(txId, 2))
149-[StringEntry(processStatusKey, HatchingFinished), StringEntry(duckIdKey, toBase58String(assetId)), StringEntry(((("account_" + toString(i.caller)) + "_tx_") + toBase58String(i.transactionId)), "finished"), StringEntry(toBase58String(assetId), duckIdKey), IntegerEntry(getDuckStatsKey(duckGen), amount), asset, ScriptTransfer(i.caller, 1, assetId), ScriptTransfer(i.caller, 1, fromBase58String(parent1Id)), ScriptTransfer(i.caller, 1, fromBase58String(parent2Id))]
147+[StringEntry(processStatusKey, HatchingFinished), StringEntry(duckIdKey, toBase58String(assetId)), StringEntry(((("account_" + toString(i.caller)) + "_tx_") + toBase58String(i.transactionId)), "finished"), StringEntry(toBase58String(assetId), duckIdKey), IntegerEntry(getDuckStatsKey(duckGen), amount), asset, ScriptTransfer(i.caller, 1, assetId)]
150148 }
151149 }
152150
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 4 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let delayForHatching = 0
55
66 let HatchingStarted = "BREEDING_STARTED"
77
88 let HatchingFinished = "BREEDING_FINISHED"
99
1010 let incubatorAddress = base58'3PACKMArmh4BAEawStYmpcU62aiNTBJKvNh'
1111
1212 let Generations = ["G", "H", "I", "K", "L"]
1313
1414 func getProcessStatusKey (address,txId) = (((address + "_") + toBase58String(txId)) + "_status")
1515
1616
1717 func getProcessFinishHeightKey (address,txId) = (((address + "_") + toBase58String(txId)) + "_fh")
1818
1919
2020 func getDuckParentKey (txId,parentNum) = ((("inittx_" + toBase58String(txId)) + "_parent") + toString(parentNum))
2121
2222
2323 func getDuckIdKey (address,txId) = (((address + "_") + toBase58String(txId)) + "_di")
2424
2525
2626 func getDuckStatsKey (genString) = (("stats_" + genString) + "_amount")
2727
2828
2929 func tryGetInteger (key) = {
3030 let val = match getInteger(this, key) {
3131 case b: Int =>
3232 b
3333 case _ =>
3434 0
3535 }
3636 val
3737 }
3838
3939
4040 func tryGetString (key) = {
4141 let val = match getString(this, key) {
4242 case b: String =>
4343 b
4444 case _ =>
4545 ""
4646 }
4747 val
4848 }
4949
5050
5151 func determineGeneration (g1,g2) = {
5252 let gIndex = max([value(indexOf(Generations, g1)), value(indexOf(Generations, g2))])
5353 Generations[(gIndex + 1)]
5454 }
5555
5656
5757 func getRandomNumber (variants,txId,hatchingFinishHeight,offset) = {
5858 let randomSeedBlock = value(blockInfoByHeight(hatchingFinishHeight))
5959 (toInt((txId + value(randomSeedBlock.vrf)), offset) % variants)
6060 }
6161
6262
6363 func getRandomGen (gen1,gen2,step,txId,hatchingFinishHeight) = {
6464 let randomNum = getRandomNumber(2, txId, hatchingFinishHeight, step)
6565 let gen = if ((randomNum == 0))
6666 then gen1
6767 else gen2
6868 gen
6969 }
7070
7171
7272 func generateDuck (txId,hatchingFinishHeight) = {
7373 let colorRandom = getRandomNumber(4, txId, hatchingFinishHeight, 30)
7474 let color = if ((colorRandom == 0))
7575 then "Y"
7676 else if ((colorRandom == 1))
7777 then "G"
7878 else if ((colorRandom == 2))
7979 then "B"
8080 else "R"
8181 let parent1Id = fromBase58String(tryGetString(getDuckParentKey(txId, 1)))
8282 let parent2Id = fromBase58String(tryGetString(getDuckParentKey(txId, 2)))
8383 let parent1Gen = split(value(assetInfo(parent1Id)).name, "")
8484 let parent2Gen = split(value(assetInfo(parent2Id)).name, "")
8585 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)
8686 gen
8787 }
8888
8989
9090 func checkAssetInIncubator (assetId) = {
9191 let result = match getString(Address(incubatorAddress), assetId) {
9292 case b: String =>
9393 true
9494 case _ =>
9595 false
9696 }
9797 let result2 = match getString(this, assetId) {
9898 case c: String =>
9999 true
100100 case _ =>
101101 false
102102 }
103103 if (result)
104104 then true
105105 else result2
106106 }
107107
108108
109109 @Callable(i)
110110 func startDuckBreeding () = {
111111 let firstAssetId = toBase58String(value(value(i.payments[0]).assetId))
112112 let secondAssetId = toBase58String(value(value(i.payments[1]).assetId))
113113 if (!(if (checkAssetInIncubator(firstAssetId))
114114 then checkAssetInIncubator(secondAssetId)
115115 else false))
116116 then throw("You need to attach 2 NFT-ducks.")
117117 else if (if ((tryGetInteger((("asset_" + firstAssetId) + "_children")) > 0))
118118 then true
119119 else (tryGetInteger((("asset_" + secondAssetId) + "_children")) > 0))
120120 then throw("One duck can be used for breeding only once in its lifetime.")
121- else [StringEntry(getDuckParentKey(i.transactionId, 1), firstAssetId), IntegerEntry((("asset_" + firstAssetId) + "_children"), 1), IntegerEntry((("asset_" + secondAssetId) + "_children"), 1), StringEntry(((("account_" + toString(i.caller)) + "_tx_") + toBase58String(i.transactionId)), "started"), StringEntry(getDuckParentKey(i.transactionId, 2), secondAssetId), StringEntry(getProcessStatusKey(toString(i.caller), i.transactionId), HatchingStarted), IntegerEntry(getProcessFinishHeightKey(toString(i.caller), i.transactionId), (height + delayForHatching))]
121+ else [StringEntry(getDuckParentKey(i.transactionId, 1), firstAssetId), IntegerEntry((("asset_" + firstAssetId) + "_children"), 1), IntegerEntry((("asset_" + secondAssetId) + "_children"), 1), StringEntry(((("account_" + toString(i.caller)) + "_tx_") + toBase58String(i.transactionId)), "started"), StringEntry(getDuckParentKey(i.transactionId, 2), secondAssetId), StringEntry(getProcessStatusKey(toString(i.caller), i.transactionId), HatchingStarted), IntegerEntry(getProcessFinishHeightKey(toString(i.caller), i.transactionId), (height + delayForHatching)), ScriptTransfer(i.caller, 1, fromBase58String(firstAssetId)), ScriptTransfer(i.caller, 1, fromBase58String(secondAssetId))]
122122 }
123123
124124
125125
126126 @Callable(i)
127127 func finishDuckHatching (txIdStr) = {
128128 let txId = fromBase58String(txIdStr)
129129 let processStatusKey = getProcessStatusKey(toString(i.caller), txId)
130130 let finishHeightKey = getProcessFinishHeightKey(toString(i.caller), txId)
131131 let duckIdKey = getDuckIdKey(toString(i.caller), txId)
132132 let processTxStatus = getStringValue(this, processStatusKey)
133133 let processFinishHeight = getIntegerValue(this, finishHeightKey)
134134 if ((processTxStatus == HatchingFinished))
135135 then {
136136 let duckId = getStringValue(this, getDuckIdKey(toString(i.caller), txId))
137137 throw(("The duck was breeded and claimed already, here is the folowing: " + duckId))
138138 }
139139 else if ((processFinishHeight > height))
140140 then throw((((("Breeding is not finished yet " + toString((processFinishHeight - height))) + " blocks remaining, it will take around ") + toString((processFinishHeight - height))) + " minutes"))
141141 else {
142142 let duckGen = generateDuck(txId, processFinishHeight)
143143 let description = (("{\"genotype\": \"" + duckGen) + "\", \"crossbreeding\": true}")
144144 let asset = Issue(duckGen, description, 1, 0, false, unit, processFinishHeight)
145145 let assetId = calculateAssetId(asset)
146146 let amount = (tryGetInteger(getDuckStatsKey(duckGen)) + 1)
147- let parent1Id = tryGetString(getDuckParentKey(txId, 1))
148- let parent2Id = tryGetString(getDuckParentKey(txId, 2))
149-[StringEntry(processStatusKey, HatchingFinished), StringEntry(duckIdKey, toBase58String(assetId)), StringEntry(((("account_" + toString(i.caller)) + "_tx_") + toBase58String(i.transactionId)), "finished"), StringEntry(toBase58String(assetId), duckIdKey), IntegerEntry(getDuckStatsKey(duckGen), amount), asset, ScriptTransfer(i.caller, 1, assetId), ScriptTransfer(i.caller, 1, fromBase58String(parent1Id)), ScriptTransfer(i.caller, 1, fromBase58String(parent2Id))]
147+[StringEntry(processStatusKey, HatchingFinished), StringEntry(duckIdKey, toBase58String(assetId)), StringEntry(((("account_" + toString(i.caller)) + "_tx_") + toBase58String(i.transactionId)), "finished"), StringEntry(toBase58String(assetId), duckIdKey), IntegerEntry(getDuckStatsKey(duckGen), amount), asset, ScriptTransfer(i.caller, 1, assetId)]
150148 }
151149 }
152150
153151
154152 @Verifier(tx)
155153 func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
156154

github/deemru/w8io/3ef1775 
39.50 ms