tx · AyBz2yRxPtmeC6CtQ3YV7Mq35JXe4YEqm9nNZS8ArPzj

3PAi1ePLQrYrY3jj9omBtT6isMkZsapbmks:  -0.01400000 Waves

2021.11.23 16:44 [2868790] smart account 3PAi1ePLQrYrY3jj9omBtT6isMkZsapbmks > SELF 0.00000000 Waves

{ "type": 13, "id": "AyBz2yRxPtmeC6CtQ3YV7Mq35JXe4YEqm9nNZS8ArPzj", "fee": 1400000, "feeAssetId": null, "timestamp": 1637675097571, "version": 2, "chainId": 87, "sender": "3PAi1ePLQrYrY3jj9omBtT6isMkZsapbmks", "senderPublicKey": "XrNmTusDFaLSz3wAjmdfcyC5h6uYyVbpdh18758UpFv", "proofs": [ "XCiNS2Ahr9hq144guDNHkX8FHW6Hyduq7SKZdGTuMFCeVFHzN5fWdvuTTKTtxeCyNiEu5YDXA2LYgpdgg9vJn7V" ], "script": "base64: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", "height": 2868790, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 6GLTj1pyKvXJPfNuMPjSJ3gc9cVQNHVrFPbhNxmBakvU Next: 8jDN5UuSTFW391zpgc5WXELpQ8xZpQQdzE5LfHMc4fd2 Diff:
OldNewDifferences
7474 else if ((tryGetInteger("global_artAmount") > artefactsLimit))
7575 then throw("SOLDOUT!!! Hurray!")
7676 else {
77- let artefactsAmount = tryGetInteger("global_artAmount")
7877 let firstPayment = value(i.payments[0])
7978 if ((firstPayment.assetId != eggsAssetId))
8079 then throw(("You can attach only EGG tokens with the following asset id: " + toBase58String(eggsAssetId)))
8180 else if ((eggsNeeded > firstPayment.amount))
8281 then throw(("To hatch a duck you currently need the following amount of EGGlets: " + toString(eggsNeeded)))
83- else [StringEntry((((toString(i.caller) + "_") + toBase58String(i.transactionId)) + "_status"), "started"), IntegerEntry((((toString(i.caller) + "_") + toBase58String(i.transactionId)) + "_finishHeight"), (height + 2)), IntegerEntry("global_artAmount", (artefactsAmount + 1))]
82+ else [StringEntry((((toString(i.caller) + "_") + toBase58String(i.transactionId)) + "_status"), "started"), IntegerEntry((((toString(i.caller) + "_") + toBase58String(i.transactionId)) + "_finishHeight"), (height + 2)), IntegerEntry("global_artAmount", (tryGetInteger("global_artAmount") + 1))]
8483 }
8584
8685
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let eggsAssetId = base58'3v7zGkeHS6KrsvmTRzEzvCxm5cdzkCtM7z5cM6efcjCB'
55
66 let eggsNeeded = (2 * 100000000)
77
88 let artefactsLimit = 300
99
1010 let artefacts = ["ART-LAKE", "ART-HOUSE", "ART-BIGHOUSE", "ART-FIXGENE", "ART-FREEGENE", "ART-MIRROR", "ART-POMP", "ART-CAPE", "ART-HAT", "ART-CUSTOMDUCK"]
1111
1212 func tryGetString (key) = match getString(this, key) {
1313 case a: String =>
1414 a
1515 case _ =>
1616 ""
1717 }
1818
1919
2020 func tryGetInteger (key) = match getInteger(this, key) {
2121 case a: Int =>
2222 a
2323 case _ =>
2424 0
2525 }
2626
2727
2828 func getRandomNumber (variants,txId,finishHeight,offset) = {
2929 let randomSeedBlock = value(blockInfoByHeight((finishHeight - 1)))
3030 let randomHash = sha256((txId + value(randomSeedBlock.vrf)))
3131 (toInt(randomHash, (offset * 8)) % variants)
3232 }
3333
3434
3535 func getRandomArtefact (boxId,h) = {
3636 let randomNumber = getRandomNumber(100, boxId, h, 0)
3737 if ((98 >= randomNumber))
3838 then {
3939 let artefactNum = (randomNumber / 11)
4040 artefacts[artefactNum]
4141 }
4242 else artefacts[99]
4343 }
4444
4545
4646 @Callable(i)
4747 func preInit () = [IntegerEntry("static_ART-LAKE_farmingSlots", 200), IntegerEntry("static_ART-LAKE_farmingBoost", 2), IntegerEntry("static_ART-HOUSE_farmingSlots", 4), IntegerEntry("static_ART-HOUSE_farmingBoost", 30), IntegerEntry("static_ART-BIGHOUSE_farmingSlots", 10), IntegerEntry("static_ART-BIGHOUSE_farmingBoost", 15)]
4848
4949
5050
5151 @Callable(i)
5252 func issueArtefact (type,receiver) = if ((i.caller == this))
5353 then {
5454 let txIdStr = toBase58String(i.transactionId)
5555 let address = Address(fromBase58String(receiver))
5656 let artefact = Issue(type, "NFT artefact of Waves Ducks game. Drop #1.", 1, 0, false, unit, 0)
5757 let artefactId = calculateAssetId(artefact)
5858 [artefact, StringEntry((("artefact_" + toBase58String(artefactId)) + "_type"), type), ScriptTransfer(address, 1, artefactId)]
5959 }
6060 else throw("admin only")
6161
6262
6363
6464 @Callable(i)
6565 func setLock (n) = if ((i.caller == this))
6666 then [IntegerEntry("global_locked", n)]
6767 else throw("admin only")
6868
6969
7070
7171 @Callable(i)
7272 func buyArtefact () = if ((tryGetInteger("global_locked") > 0))
7373 then throw("contract is temporarily locked")
7474 else if ((tryGetInteger("global_artAmount") > artefactsLimit))
7575 then throw("SOLDOUT!!! Hurray!")
7676 else {
77- let artefactsAmount = tryGetInteger("global_artAmount")
7877 let firstPayment = value(i.payments[0])
7978 if ((firstPayment.assetId != eggsAssetId))
8079 then throw(("You can attach only EGG tokens with the following asset id: " + toBase58String(eggsAssetId)))
8180 else if ((eggsNeeded > firstPayment.amount))
8281 then throw(("To hatch a duck you currently need the following amount of EGGlets: " + toString(eggsNeeded)))
83- else [StringEntry((((toString(i.caller) + "_") + toBase58String(i.transactionId)) + "_status"), "started"), IntegerEntry((((toString(i.caller) + "_") + toBase58String(i.transactionId)) + "_finishHeight"), (height + 2)), IntegerEntry("global_artAmount", (artefactsAmount + 1))]
82+ else [StringEntry((((toString(i.caller) + "_") + toBase58String(i.transactionId)) + "_status"), "started"), IntegerEntry((((toString(i.caller) + "_") + toBase58String(i.transactionId)) + "_finishHeight"), (height + 2)), IntegerEntry("global_artAmount", (tryGetInteger("global_artAmount") + 1))]
8483 }
8584
8685
8786
8887 @Callable(i)
8988 func claimArtefact (boxIdStr) = {
9089 let txId = fromBase58String(boxIdStr)
9190 let statusKey = (((toString(i.caller) + "_") + boxIdStr) + "_status")
9291 let heightKey = (((toString(i.caller) + "_") + boxIdStr) + "_finishHeight")
9392 if ((getStringValue(statusKey) != "started"))
9493 then throw("claimed already")
9594 else if ((getIntegerValue(heightKey) > height))
9695 then throw("you cannot claim yet")
9796 else {
9897 let artType = getRandomArtefact(txId, getIntegerValue(heightKey))
9998 let asset = Issue(artType, "Artefact of Waves Ducks metaverse.", 1, 0, false, unit, getIntegerValue(heightKey))
10099 let assetId = calculateAssetId(asset)
101100 [StringEntry(statusKey, artType), StringEntry((((toString(i.caller) + "_") + boxIdStr) + "_artefactId"), toBase58String(assetId)), StringEntry((toBase58String(assetId) + "_type"), artType), asset, ScriptTransfer(i.caller, 1, assetId)]
102101 }
103102 }
104103
105104
106105 @Verifier(tx)
107106 func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
108107

github/deemru/w8io/3ef1775 
51.78 ms