tx · 54n8eyF4B6HZi5TsK4SrdDq3wRZ853srV5N8AcBQzow7

3PAi1ePLQrYrY3jj9omBtT6isMkZsapbmks:  -0.01400000 Waves

2021.12.17 14:02 [2903152] smart account 3PAi1ePLQrYrY3jj9omBtT6isMkZsapbmks > SELF 0.00000000 Waves

{ "type": 13, "id": "54n8eyF4B6HZi5TsK4SrdDq3wRZ853srV5N8AcBQzow7", "fee": 1400000, "feeAssetId": null, "timestamp": 1639739057507, "version": 2, "chainId": 87, "sender": "3PAi1ePLQrYrY3jj9omBtT6isMkZsapbmks", "senderPublicKey": "XrNmTusDFaLSz3wAjmdfcyC5h6uYyVbpdh18758UpFv", "proofs": [ "56XhnPHRWxXuvtW3HvBdNycymEeEhk9T2hNCs8TE1iy5ZZK3BnNJbjN4KdffJKVN5UfX2Dr5grL2AURTQs1bsYb1" ], "script": "base64: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", "height": 2903152, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: Gudyn2cxVkLaY9vAYYJrHVt2RtWWPWLFe7s2YhE8yzTi Next: AUFYYERCcM1wDYKVutMmXDedjkqBy88fgsCcMQr8ENA7 Diff:
OldNewDifferences
33 {-# CONTENT_TYPE DAPP #-}
44 let eggsAssetId = base58'3v7zGkeHS6KrsvmTRzEzvCxm5cdzkCtM7z5cM6efcjCB'
55
6-let eggsNeeded = (2 * 100000000)
6+let devAddress = base58'3P44yqcpfhPF2iC1nptm2ZJCTaN7VYhz9og'
77
8-let artefactsLimit = 300
8+let eggsNeeded = (3 * 100000000)
99
10-let artefacts = ["ART-LAKE", "ART-HOUSE", "ART-BIGHOUSE", "ART-FIXGENE", "ART-FREEGENE", "ART-MIRROR", "ART-POMP", "ART-CAPE", "ART-HAT", "ART-CUSTOMDUCK"]
10+let artefactsLimit = (301 + 600)
1111
12-func tryGetString (key) = match getString(this, key) {
13- case a: String =>
14- a
15- case _ =>
16- ""
17-}
18-
12+let artefacts = ["ART-XMISTL", "ART-XHAT", "ART-XSCARF", "ART-XSWEATER", "ART-XSOCK", "ART-XTREE"]
1913
2014 func tryGetInteger (key) = match getInteger(this, key) {
2115 case a: Int =>
3428
3529 func getRandomArtefact (boxId,h) = {
3630 let randomNumber = getRandomNumber(100, boxId, h, 0)
37- if ((98 >= randomNumber))
38- then {
39- let artefactNum = (randomNumber / 11)
40-artefacts[artefactNum]
41- }
42- else artefacts[9]
31+ let artefactNum = (randomNumber / 16)
32+ let artefactIndex = if ((artefactNum == 0))
33+ then 0
34+ else (artefactNum - 1)
35+artefacts[artefactIndex]
4336 }
4437
4538
5346 then {
5447 let txIdStr = toBase58String(i.transactionId)
5548 let address = Address(fromBase58String(receiver))
56- let artefact = Issue(type, "NFT artefact of Waves Ducks game. Drop #1.", 1, 0, false, unit, 0)
49+ let artefact = Issue(type, "NFT artefact of Waves Ducks game. Drop #2.", 1, 0, false, unit, 0)
5750 let artefactId = calculateAssetId(artefact)
5851 [artefact, StringEntry((("artefact_" + toBase58String(artefactId)) + "_type"), type), ScriptTransfer(address, 1, artefactId)]
5952 }
6962
7063
7164 @Callable(i)
72-func buyArtefact () = if ((tryGetInteger("global_locked") > 0))
73- then throw("contract is temporarily locked")
74- else if ((tryGetInteger("global_artAmount") > artefactsLimit))
75- then throw("SOLDOUT!!! Hurray!")
76- else {
77- let firstPayment = value(i.payments[0])
78- if ((firstPayment.assetId != eggsAssetId))
79- then throw(("You can attach only EGG tokens with the following asset id: " + toBase58String(eggsAssetId)))
80- else if ((eggsNeeded > firstPayment.amount))
81- then throw(("To hatch a duck you currently need the following amount of EGGlets: " + toString(eggsNeeded)))
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))]
83- }
65+func buyArtefact () = if (true)
66+ then throw("There are no active sales now... ")
67+ else if ((tryGetInteger("global_locked") > 0))
68+ then throw("contract is temporarily locked")
69+ else if ((tryGetInteger("global_artAmount") >= artefactsLimit))
70+ then throw("SOLDOUT!!! Hurray!")
71+ else if (if ((1639605600000 > lastBlock.timestamp))
72+ then (i.caller != Address(devAddress))
73+ else false)
74+ then throw("Too early...")
75+ else {
76+ let firstPayment = value(i.payments[0])
77+ if ((firstPayment.assetId != eggsAssetId))
78+ then throw(("You can attach only EGG tokens with the following asset id: " + toBase58String(eggsAssetId)))
79+ else if ((eggsNeeded > firstPayment.amount))
80+ then throw(("To hatch a duck you currently need the following amount of EGGlets: " + toString(eggsNeeded)))
81+ 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))]
82+ }
83+
84+
85+
86+@Callable(i)
87+func setGlobalArtAmount (newAmount) = if (if ((i.caller == this))
88+ then true
89+ else (i.caller == Address(devAddress)))
90+ then [IntegerEntry("global_artAmount", newAmount)]
91+ else throw("Permission denied")
8492
8593
8694
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let eggsAssetId = base58'3v7zGkeHS6KrsvmTRzEzvCxm5cdzkCtM7z5cM6efcjCB'
55
6-let eggsNeeded = (2 * 100000000)
6+let devAddress = base58'3P44yqcpfhPF2iC1nptm2ZJCTaN7VYhz9og'
77
8-let artefactsLimit = 300
8+let eggsNeeded = (3 * 100000000)
99
10-let artefacts = ["ART-LAKE", "ART-HOUSE", "ART-BIGHOUSE", "ART-FIXGENE", "ART-FREEGENE", "ART-MIRROR", "ART-POMP", "ART-CAPE", "ART-HAT", "ART-CUSTOMDUCK"]
10+let artefactsLimit = (301 + 600)
1111
12-func tryGetString (key) = match getString(this, key) {
13- case a: String =>
14- a
15- case _ =>
16- ""
17-}
18-
12+let artefacts = ["ART-XMISTL", "ART-XHAT", "ART-XSCARF", "ART-XSWEATER", "ART-XSOCK", "ART-XTREE"]
1913
2014 func tryGetInteger (key) = match getInteger(this, key) {
2115 case a: Int =>
2216 a
2317 case _ =>
2418 0
2519 }
2620
2721
2822 func getRandomNumber (variants,txId,finishHeight,offset) = {
2923 let randomSeedBlock = value(blockInfoByHeight((finishHeight - 1)))
3024 let randomHash = sha256((txId + value(randomSeedBlock.vrf)))
3125 (toInt(randomHash, (offset * 8)) % variants)
3226 }
3327
3428
3529 func getRandomArtefact (boxId,h) = {
3630 let randomNumber = getRandomNumber(100, boxId, h, 0)
37- if ((98 >= randomNumber))
38- then {
39- let artefactNum = (randomNumber / 11)
40-artefacts[artefactNum]
41- }
42- else artefacts[9]
31+ let artefactNum = (randomNumber / 16)
32+ let artefactIndex = if ((artefactNum == 0))
33+ then 0
34+ else (artefactNum - 1)
35+artefacts[artefactIndex]
4336 }
4437
4538
4639 @Callable(i)
4740 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)]
4841
4942
5043
5144 @Callable(i)
5245 func issueArtefact (type,receiver) = if ((i.caller == this))
5346 then {
5447 let txIdStr = toBase58String(i.transactionId)
5548 let address = Address(fromBase58String(receiver))
56- let artefact = Issue(type, "NFT artefact of Waves Ducks game. Drop #1.", 1, 0, false, unit, 0)
49+ let artefact = Issue(type, "NFT artefact of Waves Ducks game. Drop #2.", 1, 0, false, unit, 0)
5750 let artefactId = calculateAssetId(artefact)
5851 [artefact, StringEntry((("artefact_" + toBase58String(artefactId)) + "_type"), type), ScriptTransfer(address, 1, artefactId)]
5952 }
6053 else throw("admin only")
6154
6255
6356
6457 @Callable(i)
6558 func setLock (n) = if ((i.caller == this))
6659 then [IntegerEntry("global_locked", n)]
6760 else throw("admin only")
6861
6962
7063
7164 @Callable(i)
72-func buyArtefact () = if ((tryGetInteger("global_locked") > 0))
73- then throw("contract is temporarily locked")
74- else if ((tryGetInteger("global_artAmount") > artefactsLimit))
75- then throw("SOLDOUT!!! Hurray!")
76- else {
77- let firstPayment = value(i.payments[0])
78- if ((firstPayment.assetId != eggsAssetId))
79- then throw(("You can attach only EGG tokens with the following asset id: " + toBase58String(eggsAssetId)))
80- else if ((eggsNeeded > firstPayment.amount))
81- then throw(("To hatch a duck you currently need the following amount of EGGlets: " + toString(eggsNeeded)))
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))]
83- }
65+func buyArtefact () = if (true)
66+ then throw("There are no active sales now... ")
67+ else if ((tryGetInteger("global_locked") > 0))
68+ then throw("contract is temporarily locked")
69+ else if ((tryGetInteger("global_artAmount") >= artefactsLimit))
70+ then throw("SOLDOUT!!! Hurray!")
71+ else if (if ((1639605600000 > lastBlock.timestamp))
72+ then (i.caller != Address(devAddress))
73+ else false)
74+ then throw("Too early...")
75+ else {
76+ let firstPayment = value(i.payments[0])
77+ if ((firstPayment.assetId != eggsAssetId))
78+ then throw(("You can attach only EGG tokens with the following asset id: " + toBase58String(eggsAssetId)))
79+ else if ((eggsNeeded > firstPayment.amount))
80+ then throw(("To hatch a duck you currently need the following amount of EGGlets: " + toString(eggsNeeded)))
81+ 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))]
82+ }
83+
84+
85+
86+@Callable(i)
87+func setGlobalArtAmount (newAmount) = if (if ((i.caller == this))
88+ then true
89+ else (i.caller == Address(devAddress)))
90+ then [IntegerEntry("global_artAmount", newAmount)]
91+ else throw("Permission denied")
8492
8593
8694
8795 @Callable(i)
8896 func claimArtefact (boxIdStr) = {
8997 let txId = fromBase58String(boxIdStr)
9098 let statusKey = (((toString(i.caller) + "_") + boxIdStr) + "_status")
9199 let heightKey = (((toString(i.caller) + "_") + boxIdStr) + "_finishHeight")
92100 if ((getStringValue(statusKey) != "started"))
93101 then throw("claimed already")
94102 else if ((getIntegerValue(heightKey) > height))
95103 then throw("you cannot claim yet")
96104 else {
97105 let artType = getRandomArtefact(txId, getIntegerValue(heightKey))
98106 let asset = Issue(artType, "Artefact of Waves Ducks metaverse.", 1, 0, false, unit, getIntegerValue(heightKey))
99107 let assetId = calculateAssetId(asset)
100108 [StringEntry(statusKey, artType), StringEntry((((toString(i.caller) + "_") + boxIdStr) + "_artefactId"), toBase58String(assetId)), StringEntry((toBase58String(assetId) + "_type"), artType), asset, ScriptTransfer(i.caller, 1, assetId)]
101109 }
102110 }
103111
104112
105113 @Verifier(tx)
106114 func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
107115

github/deemru/w8io/3ef1775 
36.44 ms