tx · Fv5CPNrFRhTFN17G7GNdvuAdEJqyepcfa8UMT3yGzzWy

3PCoF5ZnsQJKAJJCoSqUcVVqJ2Dm4fvn9ar:  -0.01000000 Waves

2022.01.20 15:14 [2952323] smart account 3PCoF5ZnsQJKAJJCoSqUcVVqJ2Dm4fvn9ar > SELF 0.00000000 Waves

{ "type": 13, "id": "Fv5CPNrFRhTFN17G7GNdvuAdEJqyepcfa8UMT3yGzzWy", "fee": 1000000, "feeAssetId": null, "timestamp": 1642680995068, "version": 2, "chainId": 87, "sender": "3PCoF5ZnsQJKAJJCoSqUcVVqJ2Dm4fvn9ar", "senderPublicKey": "2RFPMtHxVSEG1LnET2FGshyhRepA7zJmx6tPwdHeNpJi", "proofs": [ "qWjXC1cnXN4kuyATkC7nxaUddPQUyFyTFtMJuZ8zJif8xVYy2C5HcXwDnvBzh5i2WD2DfVNHvb32Xqr1ToKbco7" ], "script": "base64:AAIFAAAAAAAABMwIAhIGCgQICAEBEgMKAQgSAwoBCBIDCgEIEgQKAggIGgYKAUESAWkaDAoBQhIHYWRkcmVzcxoKCgFDEgVsZXZlbBoNCgFEEghpbnZlc3RlZBoTCgFFEg5pc3N1ZU1hbnRsZU5GVBoQCgFGEgttYW50bGVOZnRJZBoRCgFHEgxrTWFudGxlTGV2ZWwaEgoBSBINa01hbnRsZUV4aXN0cxoRCgFJEgxrTWFudGxlT3duZXIaEgoBShINa01hbnRsZVN0YXR1cxoSCgFLEg1rQXJ0ZWZhY3RUeXBlGhQKAUwSD2tNYW50bGVJbnZlc3RlZBocCgFNEhdrQXJ0ZWZhY3RPd25lckFuZFN0YXR1cxoXCgFOEhJrT25seUFydGVmYWN0TGV2ZWwaEAoBTxILTUFOVExFUFJJQ0UaEQoBUBIMUElDS0FYRVBSSUNFGhEKAVESDGZpcnN0UGF5bWVudBoWCgFSEhF1cGdyYWRlUG9pbnRQcmljZRoRCgFTEgxtYW50bGVFeGlzdHMaEAoBVBILbWFudGxlT3duZXIaGgoBVRIVbWFudGxlQWxyZWFkeUludmVzdGVkGhIKAVYSDXRvdGFsSW52ZXN0ZWQaDQoBVxIIbmV3TGV2ZWwaFgoBWBIRYXR0YWNoZWRBc3NldEluZm8aDgoBWRIJa0R1Y2tMb2NrGhEKAVoSDG1hbnRsZVN0YXR1cxoUCgFhEg9icmVlZGVyQ29udHJhY3QaFwoCYWESEWtBcnRlZmFjdElkQnlUeXBlGhQKAmFiEg5rUHV0T25BcnRlZmFjdBoSCgJhYxIMYXJ0ZWZhY3RUeXBlGh4KAmFkEhhrQXJ0ZWZhY3RJZEJ5VHlwZUFuZER1Y2saGgoCYWUSFGtQdXRPbkFydGVmYWN0U3RhdHVzGggKAmFmEgJ0eBoMCgJhZxIGdmVyaWZ5GhYKAWISEWluY3ViYXRvckNvbnRyYWN0Gg8KAWMSCmVnZ0Fzc2V0SWQaFgoBZBIRc3dvcFByb21vQ29udHJhY3QaDwoBZRIKTUFOVExFTkFNRRoQCgFmEgtQSUNLQVhFTkFNRRoQCgFnEgtUUkFDVE9STkFNRRoPCgFoEgpTVEFUVVNGUkVFGhMKAWkSDlNUQVRVU09DQ1VQSUVEGhAKAWoSC2tleUR1Y2tMb2NrGhIKAWsSDWNh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", "height": 2952323, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 9fDbmmaEdAoBuq6j2pbQJJyKBAZjA6KsNiDQoxhWK1c6 Next: 6J9rp6X3TgvKHn1oSkhwEBbnGRVKwCCijuGbxHeA1CUi Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4-let RewardMantle = "Mantle"
4+let breederContract = base58'3P9REuLBnYBafDqtEu6hfzs2Rv2haSU158y'
55
6-let RewardPerch = "Perch"
6+let incubatorContract = base58'3P6TwNU39Ykkbeqhn5TE4a2736xsA1vXemM'
77
8-let farmingContract = base58'3PAETTtuW7aSiyKtn9GuML3RgtV1xdq1mQW'
8+let eggAssetId = base58'3v7zGkeHS6KrsvmTRzEzvCxm5cdzkCtM7z5cM6efcjCB'
99
10-let gameContract = base58'3PR87TwfWio6HVUScSaHGMnFYkGyaVdFeqT'
10+let swopPromoContract = base58'3P8zG7GNt4JphWXFTG39c2nmNmRRmqs4SEz'
1111
12-func getInt (key) = match getInteger(this, key) {
13- case b: Int =>
14- b
15- case _ =>
16- 0
17-}
12+let MANTLENAME = "mantle"
13+
14+let PICKAXENAME = "pickaxe"
15+
16+let TRACTORNAME = "tractor"
17+
18+let STATUSFREE = "FREE"
19+
20+let STATUSOCCUPIED = "OCCUPIED"
21+
22+func keyDuckLock (callerAddress,duckId) = (((("address_" + callerAddress) + "_duck_") + duckId) + "_status")
1823
1924
20-func getStr (key) = match getString(this, key) {
21- case b: String =>
22- b
23- case _ =>
24- ""
25-}
25+func keyInvestor (callerAddress) = (("address_" + callerAddress) + "_amount")
2626
2727
28-func getBool (key) = match getBoolean(this, key) {
29- case b: Boolean =>
30- b
31- case _ =>
32- false
33-}
28+func keyArtefactInvested (type,artefactId) = (((("artefact_" + type) + "_artefactId_") + artefactId) + "_invested")
3429
3530
36-func getRewardForUser (address) = {
37- let claimed = getBool((("reward_" + address) + "_claimed"))
38- if (claimed)
39- then throw("You already claimed")
40- else $Tuple2(getStr((("reward_" + address) + "_type")), claimed)
31+func keyOnlyArtefactLevel (artefactId) = (("artefactId_" + toBase58String(artefactId)) + "_level")
32+
33+
34+func keyArtefactIdByDuckAndType (type,duckId) = (((("artefact_ " + type) + "_duck_") + toBase58String(duckId)) + "_artefactId")
35+
36+
37+func keyArtefactOwner (type,artefactId) = (((("artefact_ " + type) + "_artefactId_") + toBase58String(artefactId)) + "_owner")
38+
39+
40+func keyArtefactOwnerAndStatus (type,owner,artefactId) = (((((("address_" + owner) + "_artefact_") + type) + "_artefactId_") + toBase58String(artefactId)) + "_status")
41+
42+
43+func keyArtefactStatus (type,artefactId) = (((("artefact_ " + type) + "_artefactId_") + toBase58String(artefactId)) + "_status")
44+
45+
46+func keyArtefactType (artefactId) = (("artefactId_" + toBase58String(artefactId)) + "_type")
47+
48+
49+func keyArtefactLevel (type,owner,artefactId) = (((((("address_" + owner) + "_artefact_") + type) + "_artefactId_") + toBase58String(artefactId)) + "_level")
50+
51+
52+func keyPutOnArtefact (type,owner,duckId,artefactId) = (((((((("address_" + owner) + "_duck_") + duckId) + "_artefact_") + type) + "_artefactId_") + toBase58String(artefactId)) + "_status")
53+
54+
55+func keyArtefactExists (type,artefactId) = ((("artefact_" + type) + "_artefactId_") + toBase58String(artefactId))
56+
57+
58+@Callable(i)
59+func issueFreeMantle (address,type,level,invested) = if (if ((i.caller != this))
60+ then (i.caller != Address(swopPromoContract))
61+ else false)
62+ then throw("Can be called only by admin")
63+ else if ((type != MANTLENAME))
64+ then throw("You can buy only mantles now")
65+ else {
66+ let issueMantleNFT = Issue("DUCK-MANTLE-0", "[Artefact] Mantle NFT for Jeduck", 1, 0, false)
67+ let mantleNftId = calculateAssetId(issueMantleNFT)
68+ let kMantleLevel = keyArtefactLevel(MANTLENAME, address, mantleNftId)
69+ let kMantleExists = keyArtefactExists(MANTLENAME, mantleNftId)
70+ let kMantleOwner = keyArtefactOwner(MANTLENAME, mantleNftId)
71+ let kMantleStatus = keyArtefactStatus(MANTLENAME, mantleNftId)
72+ let kArtefactType = keyArtefactType(mantleNftId)
73+ let kMantleInvested = keyArtefactInvested(MANTLENAME, toBase58String(mantleNftId))
74+ let kArtefactOwnerAndStatus = keyArtefactOwnerAndStatus(MANTLENAME, address, mantleNftId)
75+ let kOnlyArtefactLevel = keyOnlyArtefactLevel(mantleNftId)
76+[IntegerEntry(kMantleLevel, level), IntegerEntry(kMantleInvested, invested), BooleanEntry(kMantleExists, true), StringEntry(kMantleOwner, address), StringEntry(kMantleStatus, STATUSFREE), StringEntry(kArtefactType, MANTLENAME), StringEntry(kArtefactOwnerAndStatus, STATUSFREE), IntegerEntry(kOnlyArtefactLevel, level)]
77+ }
78+
79+
80+
81+@Callable(i)
82+func buyArtefact (type) = {
83+ let MANTLEPRICE = 1000000
84+ let PICKAXEPRICE = 10000000
85+ let firstPayment = value(i.payments[0])
86+ if ((firstPayment.assetId != eggAssetId))
87+ then throw(("You can attach only EGG tokens with the following asset id: " + toBase58String(eggAssetId)))
88+ else if (containsElement([PICKAXENAME, MANTLENAME], type))
89+ then throw("Bad artefact type")
90+ else if (if ((type == MANTLENAME))
91+ then (firstPayment.amount != MANTLEPRICE)
92+ else false)
93+ then throw(("To buy a mantle you currently need the following amount of EGGlets: " + toString(MANTLEPRICE)))
94+ else if (if ((type == PICKAXENAME))
95+ then (firstPayment.amount != PICKAXEPRICE)
96+ else false)
97+ then throw(("To buy a mantle you currently need the following amount of EGGlets: " + toString(PICKAXEPRICE)))
98+ else {
99+ let issueMantleNFT = Issue((("TOOL-" + type) + "-0"), (("[Tool] " + type) + " NFT for Jeduck"), 1, 0, false)
100+ let mantleNftId = calculateAssetId(issueMantleNFT)
101+ let kMantleLevel = keyArtefactLevel(type, toString(i.caller), mantleNftId)
102+ let kMantleExists = keyArtefactExists(type, mantleNftId)
103+ let kMantleOwner = keyArtefactOwner(type, mantleNftId)
104+ let kMantleStatus = keyArtefactStatus(type, mantleNftId)
105+ let kArtefactType = keyArtefactType(mantleNftId)
106+ let kMantleInvested = keyArtefactInvested(type, toBase58String(mantleNftId))
107+ let kArtefactOwnerAndStatus = keyArtefactOwnerAndStatus(type, toString(i.caller), mantleNftId)
108+ let kOnlyArtefactLevel = keyOnlyArtefactLevel(mantleNftId)
109+[IntegerEntry(kMantleLevel, 1), IntegerEntry(kMantleInvested, MANTLEPRICE), BooleanEntry(kMantleExists, true), StringEntry(kMantleOwner, toString(i.caller)), StringEntry(kMantleStatus, STATUSFREE), StringEntry(kArtefactType, MANTLENAME), StringEntry(kArtefactOwnerAndStatus, STATUSFREE), IntegerEntry(kOnlyArtefactLevel, 1)]
110+ }
41111 }
42112
43113
114+
44115 @Callable(i)
45-func claimPerch (color) = {
46- let callerAddress = toString(i.caller)
47- let $t010451110 = getRewardForUser(callerAddress)
48- let rewardType = $t010451110._1
49- let rewardClaimed = $t010451110._2
50- if ((rewardType != RewardPerch))
51- then throw("You don't have perch reward")
116+func upgradeMantle (artefactId) = {
117+ let upgradePointPrice = 1000000
118+ let firstPayment = value(i.payments[0])
119+ if ((firstPayment.assetId != eggAssetId))
120+ then throw(("You can attach only EGG tokens with the following asset id: " + toBase58String(eggAssetId)))
121+ else if ((upgradePointPrice > firstPayment.amount))
122+ then throw(("Minimal payment for upgrading mantle is: " + toString(upgradePointPrice)))
123+ else {
124+ let kMantleExists = keyArtefactExists(MANTLENAME, fromBase58String(artefactId))
125+ let kMantleOwner = keyArtefactOwner(MANTLENAME, fromBase58String(artefactId))
126+ let mantleExists = getBooleanValue(kMantleExists)
127+ let mantleOwner = getStringValue(kMantleOwner)
128+ if (!(mantleExists))
129+ then throw("Mantle with such an ID does not exist")
130+ else if ((mantleOwner != toString(i.originCaller)))
131+ then throw("You're not an owner of the mantle")
132+ else {
133+ let kMantleInvested = keyArtefactInvested(MANTLENAME, artefactId)
134+ let mantleAlreadyInvested = getIntegerValue(kMantleInvested)
135+ let kMantleLevel = keyArtefactLevel(MANTLENAME, toString(i.originCaller), fromBase58String(artefactId))
136+ let kOnlyArtefactLevel = keyOnlyArtefactLevel(fromBase58String(artefactId))
137+ let totalInvested = (mantleAlreadyInvested + firstPayment.amount)
138+ let newLevel = (((10 * pow(totalInvested, 8, 6, 1, 8, HALFUP)) + 100000000) / 100000000)
139+[IntegerEntry(kMantleLevel, newLevel), IntegerEntry(kMantleInvested, totalInvested), IntegerEntry(kOnlyArtefactLevel, newLevel)]
140+ }
141+ }
142+ }
143+
144+
145+
146+@Callable(i)
147+func putOnArtefact (artefactId) = {
148+ let firstPayment = value(i.payments[0])
149+ let attachedAssetInfo = value(assetInfo(value(firstPayment.assetId)))
150+ if (if ((attachedAssetInfo.issuer.bytes != incubatorContract))
151+ then (attachedAssetInfo.issuer.bytes != breederContract)
152+ else false)
153+ then throw("You can attach only DUCKs issued by incubator or breeder ")
52154 else {
53- let freePerch = invoke(Address(farmingContract), "addFreePerch", [callerAddress, color], nil)
54- if ((freePerch == freePerch))
55- then [BooleanEntry((("reward_" + callerAddress) + "_claimed"), true)]
56- else throw("Strict value is not equal to itself.")
155+ let kMantleExists = keyArtefactExists(MANTLENAME, fromBase58String(artefactId))
156+ let kMantleOwner = keyArtefactOwner(MANTLENAME, fromBase58String(artefactId))
157+ let kMantleStatus = keyArtefactStatus(MANTLENAME, fromBase58String(artefactId))
158+ let kArtefactOwnerAndStatus = keyArtefactOwnerAndStatus(MANTLENAME, toString(i.originCaller), fromBase58String(artefactId))
159+ let kDuckLock = keyDuckLock(toString(i.originCaller), toBase58String(value(firstPayment.assetId)))
160+ let mantleExists = getBooleanValue(kMantleExists)
161+ let mantleOwner = getStringValue(kMantleOwner)
162+ let mantleStatus = getStringValue(kMantleStatus)
163+ let kArtefactIdByType = keyArtefactIdByDuckAndType(MANTLENAME, value(firstPayment.assetId))
164+ if (!(mantleExists))
165+ then throw("Mantle with such an ID does not exist")
166+ else if ((mantleOwner != toString(i.originCaller)))
167+ then throw("You're not an owner of the mantle")
168+ else if ((mantleStatus != STATUSFREE))
169+ then throw("Mantle is already used!")
170+ else {
171+ let kPutOnArtefact = keyPutOnArtefact(MANTLENAME, toString(i.originCaller), toBase58String(value(firstPayment.assetId)), fromBase58String(artefactId))
172+[BooleanEntry(kPutOnArtefact, true), StringEntry(kMantleStatus, STATUSOCCUPIED), StringEntry(kArtefactOwnerAndStatus, STATUSOCCUPIED), BooleanEntry(kDuckLock, true), StringEntry(kArtefactIdByType, artefactId)]
173+ }
57174 }
58175 }
59176
60177
61178
62179 @Callable(i)
63-func claimMantle (choise,collectiveFarmAssetId) = {
64- let callerAddress = toString(i.caller)
65- let $t015021567 = getRewardForUser(callerAddress)
66- let rewardType = $t015021567._1
67- let rewardClaimed = $t015021567._2
68- if ((rewardType != RewardMantle))
69- then throw("You don't have mantle reward")
70- else {
71- let res = [BooleanEntry((("reward_" + callerAddress) + "_claimed"), true)]
72- if ((choise == "mantle"))
73- then {
74- let freeMantleIssue = invoke(Address(gameContract), "issueFreeMantle", [toString(i.caller), "mantle", 2, 2000000], nil)
75- if ((freeMantleIssue == freeMantleIssue))
76- then res
77- else throw("Strict value is not equal to itself.")
78- }
79- else (res ++ [ScriptTransfer(i.caller, 4000000, fromBase58String(collectiveFarmAssetId))])
80- }
180+func takeOffArtefact (duckId,artefactType) = {
181+ let kArtefactIdByTypeAndDuck = keyArtefactIdByDuckAndType(artefactType, fromBase58String(duckId))
182+ let artefactId = getStringValue(kArtefactIdByTypeAndDuck)
183+ let kArtefactType = keyArtefactType(fromBase58String(artefactId))
184+ let kPutOnArtefact = keyPutOnArtefact(artefactType, toString(i.originCaller), duckId, fromBase58String(artefactId))
185+ let kPutOnArtefactStatus = getBooleanValue(kPutOnArtefact)
186+ let kArtefactOwnerAndStatus = keyArtefactOwnerAndStatus(artefactType, toString(i.originCaller), fromBase58String(artefactId))
187+ let kDuckLock = keyDuckLock(toString(i.originCaller), duckId)
188+ let kMantleStatus = keyArtefactStatus(artefactType, fromBase58String(artefactId))
189+ if ((kPutOnArtefactStatus != true))
190+ then throw("There is no duck with such parameteres")
191+ else [DeleteEntry(kPutOnArtefact), DeleteEntry(kArtefactIdByTypeAndDuck), DeleteEntry(kDuckLock), StringEntry(kMantleStatus, STATUSFREE), StringEntry(kArtefactOwnerAndStatus, STATUSFREE), ScriptTransfer(i.originCaller, 1, fromBase58String(duckId))]
81192 }
82193
194+
195+@Verifier(tx)
196+func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
83197

github/deemru/w8io/3ef1775 
54.19 ms