tx · Ba3JoG1WYmpTLfNWfX3ZUWu6EV7ND9i2UbEFQWVghNQ8

3PAi1ePLQrYrY3jj9omBtT6isMkZsapbmks:  -0.01400000 Waves

2021.11.23 11:48 [2868492] smart account 3PAi1ePLQrYrY3jj9omBtT6isMkZsapbmks > SELF 0.00000000 Waves

{ "type": 13, "id": "Ba3JoG1WYmpTLfNWfX3ZUWu6EV7ND9i2UbEFQWVghNQ8", "fee": 1400000, "feeAssetId": null, "timestamp": 1637657309238, "version": 2, "chainId": 87, "sender": "3PAi1ePLQrYrY3jj9omBtT6isMkZsapbmks", "senderPublicKey": "XrNmTusDFaLSz3wAjmdfcyC5h6uYyVbpdh18758UpFv", "proofs": [ "5VFNQheBahvy36tzvtyQwRz9i54vVt7YJ1wVcYx5A2DjRCr2aNfSMocnzgcPFUHo5pM1BBTfJTYjZdri3baHiSNs" ], "script": "base64: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", "height": 2868492, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: EQjLnZPb3YWo9jNG5GXNC7TCBSPGoHritrzqFaMLNTjt Next: AfgZTcG7VN4kfTrbFus2J6yms7uP1kaUvPspGSEqu5P4 Diff:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4+let eggsAssetId = base58'3v7zGkeHS6KrsvmTRzEzvCxm5cdzkCtM7z5cM6efcjCB'
5+
6+let eggsNeeded = (2 * 100000000)
7+
48 let artefacts = ["ART-LAKE", "ART-HOUSE", "ART-BIGHOUSE", "ART-FIXGENE", "ART-FREEGENE", "ART-MIRROR", "ART-CUSTOMDUCK"]
9+
10+func tryGetString (key) = match getString(this, key) {
11+ case a: String =>
12+ a
13+ case _ =>
14+ ""
15+}
16+
17+
18+func tryGetInteger (key) = match getInteger(this, key) {
19+ case a: Int =>
20+ a
21+ case _ =>
22+ 0
23+}
24+
25+
26+func getRandomArtefact (bosId,h) = "ART-LAKE"
27+
528
629 @Callable(i)
730 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)]
1841 }
1942
2043
44+
45+@Callable(i)
46+func setLock (n) = if ((i.caller == this))
47+ then [IntegerEntry("global_locked", n)]
48+ else throw("admin only")
49+
50+
51+
52+@Callable(i)
53+func buyArtefact (refererAddress) = if ((tryGetInteger("global_locked") > 0))
54+ then throw("contract is temporarily locked")
55+ else {
56+ let artefactsAmount = tryGetInteger("artefacts_amount")
57+ let firstPayment = value(i.payments[0])
58+ if ((firstPayment.assetId != eggsAssetId))
59+ then throw(("You can attach only EGG tokens with the following asset id: " + toBase58String(eggsAssetId)))
60+ else if ((eggsNeeded > firstPayment.amount))
61+ then throw(("To hatch a duck you currently need the following amount of EGGlets: " + toString(eggsNeeded)))
62+ else [StringEntry((((toString(i.caller) + "_") + toBase58String(i.transactionId)) + "_status"), "started"), IntegerEntry((((toString(i.caller) + "_") + toBase58String(i.transactionId)) + "_finishHeight"), (height + 2)), IntegerEntry("artefacts_amount", (artefactsAmount + 1))]
63+ }
64+
65+
66+
67+@Callable(i)
68+func claimArtefact (boxIdStr) = {
69+ let txId = fromBase58String(boxIdStr)
70+ let statusKey = (((toString(i.caller) + "_") + boxIdStr) + "_status")
71+ let heightKey = (((toString(i.caller) + "_") + boxIdStr) + "_finishHeight")
72+ if ((getStringValue(statusKey) != "started"))
73+ then throw("claimed already")
74+ else if ((getIntegerValue(heightKey) > height))
75+ then throw("you cannot claim yet")
76+ else {
77+ let artType = getRandomArtefact(txId, getIntegerValue(heightKey))
78+ let asset = Issue(artType, "Artefact of Waves Ducks metaverse.", 1, 0, false, unit, getIntegerValue(heightKey))
79+ let assetId = calculateAssetId(asset)
80+[StringEntry(statusKey, artType), StringEntry((((toString(i.caller) + "_") + boxIdStr) + "_artefactId"), toBase58String(assetId)), asset, ScriptTransfer(i.caller, 1, assetId)]
81+ }
82+ }
83+
84+
2185 @Verifier(tx)
2286 func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
2387
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4+let eggsAssetId = base58'3v7zGkeHS6KrsvmTRzEzvCxm5cdzkCtM7z5cM6efcjCB'
5+
6+let eggsNeeded = (2 * 100000000)
7+
48 let artefacts = ["ART-LAKE", "ART-HOUSE", "ART-BIGHOUSE", "ART-FIXGENE", "ART-FREEGENE", "ART-MIRROR", "ART-CUSTOMDUCK"]
9+
10+func tryGetString (key) = match getString(this, key) {
11+ case a: String =>
12+ a
13+ case _ =>
14+ ""
15+}
16+
17+
18+func tryGetInteger (key) = match getInteger(this, key) {
19+ case a: Int =>
20+ a
21+ case _ =>
22+ 0
23+}
24+
25+
26+func getRandomArtefact (bosId,h) = "ART-LAKE"
27+
528
629 @Callable(i)
730 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)]
831
932
1033
1134 @Callable(i)
1235 func issueArtefact (type,receiver) = {
1336 let txIdStr = toBase58String(i.transactionId)
1437 let address = Address(fromBase58String(receiver))
1538 let artefact = Issue(type, "NFT artefact of Waves Ducks game. Drop #1.", 1, 0, false, unit, 0)
1639 let artefactId = calculateAssetId(artefact)
1740 [artefact, StringEntry((("artefact_" + toBase58String(artefactId)) + "_type"), type), ScriptTransfer(address, 1, artefactId)]
1841 }
1942
2043
44+
45+@Callable(i)
46+func setLock (n) = if ((i.caller == this))
47+ then [IntegerEntry("global_locked", n)]
48+ else throw("admin only")
49+
50+
51+
52+@Callable(i)
53+func buyArtefact (refererAddress) = if ((tryGetInteger("global_locked") > 0))
54+ then throw("contract is temporarily locked")
55+ else {
56+ let artefactsAmount = tryGetInteger("artefacts_amount")
57+ let firstPayment = value(i.payments[0])
58+ if ((firstPayment.assetId != eggsAssetId))
59+ then throw(("You can attach only EGG tokens with the following asset id: " + toBase58String(eggsAssetId)))
60+ else if ((eggsNeeded > firstPayment.amount))
61+ then throw(("To hatch a duck you currently need the following amount of EGGlets: " + toString(eggsNeeded)))
62+ else [StringEntry((((toString(i.caller) + "_") + toBase58String(i.transactionId)) + "_status"), "started"), IntegerEntry((((toString(i.caller) + "_") + toBase58String(i.transactionId)) + "_finishHeight"), (height + 2)), IntegerEntry("artefacts_amount", (artefactsAmount + 1))]
63+ }
64+
65+
66+
67+@Callable(i)
68+func claimArtefact (boxIdStr) = {
69+ let txId = fromBase58String(boxIdStr)
70+ let statusKey = (((toString(i.caller) + "_") + boxIdStr) + "_status")
71+ let heightKey = (((toString(i.caller) + "_") + boxIdStr) + "_finishHeight")
72+ if ((getStringValue(statusKey) != "started"))
73+ then throw("claimed already")
74+ else if ((getIntegerValue(heightKey) > height))
75+ then throw("you cannot claim yet")
76+ else {
77+ let artType = getRandomArtefact(txId, getIntegerValue(heightKey))
78+ let asset = Issue(artType, "Artefact of Waves Ducks metaverse.", 1, 0, false, unit, getIntegerValue(heightKey))
79+ let assetId = calculateAssetId(asset)
80+[StringEntry(statusKey, artType), StringEntry((((toString(i.caller) + "_") + boxIdStr) + "_artefactId"), toBase58String(assetId)), asset, ScriptTransfer(i.caller, 1, assetId)]
81+ }
82+ }
83+
84+
2185 @Verifier(tx)
2286 func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
2387

github/deemru/w8io/6500d08 
41.36 ms