tx · DwCeweGd3mEU1mDboT3E3vHBZkfSrKmGUWmnPGY9jsTt

3P5E9xamcWoymiqLx8ZdmR7o4fJSRMGp1WR:  -0.01400000 Waves

2021.12.16 00:51 [2900919] smart account 3P5E9xamcWoymiqLx8ZdmR7o4fJSRMGp1WR > SELF 0.00000000 Waves

{ "type": 13, "id": "DwCeweGd3mEU1mDboT3E3vHBZkfSrKmGUWmnPGY9jsTt", "fee": 1400000, "feeAssetId": null, "timestamp": 1639605139270, "version": 2, "chainId": 87, "sender": "3P5E9xamcWoymiqLx8ZdmR7o4fJSRMGp1WR", "senderPublicKey": "6DknLGEJHLXmZB6ni3tGa8M3gccMMmc3uaaPhvCSuKvM", "proofs": [ "4F8jsiSpmfof3JVYpK2zXBnRdXp9d9ddPd8gA9Vr9pHudtx17uYmwttyQbxGbBV6ZWnD28FexpArFCJ6RzJj79zH" ], "script": "base64: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", "height": 2900919, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 9VE2aCoYLzJa66VFQtvCPwiUKN251CLsHP8YZ9fuobm4 Next: 3K98gbkTFEpRWsPSEVCSTpT7RDrBB6Z1D9NZ5SXNnexh Diff:
OldNewDifferences
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let eggsAssetId = base58'C1iWsKGqLwjHUndiQ7iXpdmPum9PeCDFfyXBdJJosDRS'
5+
6+let devAddress = base58'3P44yqcpfhPF2iC1nptm2ZJCTaN7VYhz9og'
57
68 let eggsNeeded = (3 * 100000000)
79
6264 else if ((tryGetInteger("global_artAmount") >= artefactsLimit))
6365 then throw("SOLDOUT!!! Hurray!")
6466 else if (if ((1639605600000 > lastBlock.timestamp))
65- then (i.caller != Address(base58'3P44yqcpfhPF2iC1nptm2ZJCTaN7VYhz9og'))
67+ then (i.caller != Address(devAddress))
6668 else false)
6769 then throw("Too early...")
6870 else {
7375 then throw(("To hatch a duck you currently need the following amount of EGGlets: " + toString(eggsNeeded)))
7476 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))]
7577 }
78+
79+
80+
81+@Callable(i)
82+func setGlobalArtAmount (newAmount) = if (if ((i.caller == this))
83+ then true
84+ else (i.caller == Address(devAddress)))
85+ then [IntegerEntry("global_artAmount", newAmount)]
86+ else throw("Permission denied")
7687
7788
7889
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let eggsAssetId = base58'C1iWsKGqLwjHUndiQ7iXpdmPum9PeCDFfyXBdJJosDRS'
5+
6+let devAddress = base58'3P44yqcpfhPF2iC1nptm2ZJCTaN7VYhz9og'
57
68 let eggsNeeded = (3 * 100000000)
79
810 let artefactsLimit = (301 + 600)
911
1012 let artefacts = ["ART-XMISTL", "ART-XHAT", "ART-XSCARF", "ART-XSWEATER", "ART-XSOCK", "ART-XTREE"]
1113
1214 func tryGetInteger (key) = match getInteger(this, key) {
1315 case a: Int =>
1416 a
1517 case _ =>
1618 0
1719 }
1820
1921
2022 func getRandomNumber (variants,txId,finishHeight,offset) = {
2123 let randomSeedBlock = value(blockInfoByHeight((finishHeight - 1)))
2224 let randomHash = sha256((txId + value(randomSeedBlock.vrf)))
2325 (toInt(randomHash, (offset * 8)) % variants)
2426 }
2527
2628
2729 func getRandomArtefact (boxId,h) = {
2830 let randomNumber = getRandomNumber(100, boxId, h, 0)
2931 let artefactNum = (randomNumber / size(artefacts))
3032 artefacts[artefactNum]
3133 }
3234
3335
3436 @Callable(i)
3537 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)]
3638
3739
3840
3941 @Callable(i)
4042 func issueArtefact (type,receiver) = if ((i.caller == this))
4143 then {
4244 let txIdStr = toBase58String(i.transactionId)
4345 let address = Address(fromBase58String(receiver))
4446 let artefact = Issue(type, "NFT artefact of Waves Ducks game. Drop #2.", 1, 0, false, unit, 0)
4547 let artefactId = calculateAssetId(artefact)
4648 [artefact, StringEntry((("artefact_" + toBase58String(artefactId)) + "_type"), type), ScriptTransfer(address, 1, artefactId)]
4749 }
4850 else throw("admin only")
4951
5052
5153
5254 @Callable(i)
5355 func setLock (n) = if ((i.caller == this))
5456 then [IntegerEntry("global_locked", n)]
5557 else throw("admin only")
5658
5759
5860
5961 @Callable(i)
6062 func buyArtefact () = if ((tryGetInteger("global_locked") > 0))
6163 then throw("contract is temporarily locked")
6264 else if ((tryGetInteger("global_artAmount") >= artefactsLimit))
6365 then throw("SOLDOUT!!! Hurray!")
6466 else if (if ((1639605600000 > lastBlock.timestamp))
65- then (i.caller != Address(base58'3P44yqcpfhPF2iC1nptm2ZJCTaN7VYhz9og'))
67+ then (i.caller != Address(devAddress))
6668 else false)
6769 then throw("Too early...")
6870 else {
6971 let firstPayment = value(i.payments[0])
7072 if ((firstPayment.assetId != eggsAssetId))
7173 then throw(("You can attach only EGG tokens with the following asset id: " + toBase58String(eggsAssetId)))
7274 else if ((eggsNeeded > firstPayment.amount))
7375 then throw(("To hatch a duck you currently need the following amount of EGGlets: " + toString(eggsNeeded)))
7476 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))]
7577 }
78+
79+
80+
81+@Callable(i)
82+func setGlobalArtAmount (newAmount) = if (if ((i.caller == this))
83+ then true
84+ else (i.caller == Address(devAddress)))
85+ then [IntegerEntry("global_artAmount", newAmount)]
86+ else throw("Permission denied")
7687
7788
7889
7990 @Callable(i)
8091 func claimArtefact (boxIdStr) = {
8192 let txId = fromBase58String(boxIdStr)
8293 let statusKey = (((toString(i.caller) + "_") + boxIdStr) + "_status")
8394 let heightKey = (((toString(i.caller) + "_") + boxIdStr) + "_finishHeight")
8495 if (true)
8596 then throw("Can't claim now, will be avilable on Dec 17")
8697 else if ((getStringValue(statusKey) != "started"))
8798 then throw("claimed already")
8899 else if ((getIntegerValue(heightKey) > height))
89100 then throw("you cannot claim yet")
90101 else {
91102 let artType = getRandomArtefact(txId, getIntegerValue(heightKey))
92103 let asset = Issue(artType, "Artefact of Waves Ducks metaverse.", 1, 0, false, unit, getIntegerValue(heightKey))
93104 let assetId = calculateAssetId(asset)
94105 [StringEntry(statusKey, artType), StringEntry((((toString(i.caller) + "_") + boxIdStr) + "_artefactId"), toBase58String(assetId)), StringEntry((toBase58String(assetId) + "_type"), artType), asset, ScriptTransfer(i.caller, 1, assetId)]
95106 }
96107 }
97108
98109
99110 @Verifier(tx)
100111 func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
101112

github/deemru/w8io/873ac7e 
58.39 ms