tx · FwWtRsoFc4L2SFXQmXp19UaKhe7XKnF2VYo8yi1UBJD3

3Mv3NdReV7kf4VLKLHfDxvuUNomV6BCgSaW:  -0.01300000 Waves

2024.10.03 15:17 [3310661] smart account 3Mv3NdReV7kf4VLKLHfDxvuUNomV6BCgSaW > SELF 0.00000000 Waves

{ "type": 13, "id": "FwWtRsoFc4L2SFXQmXp19UaKhe7XKnF2VYo8yi1UBJD3", "fee": 1300000, "feeAssetId": null, "timestamp": 1727957989696, "version": 2, "chainId": 84, "sender": "3Mv3NdReV7kf4VLKLHfDxvuUNomV6BCgSaW", "senderPublicKey": "uyqob7dEcYnj9AJG6KMEriXxnrUSvc6c8HtLwhbNKw4", "proofs": [ "4mZ55wjriTR4Aei5ogA8QCm9BPtatEnNecwckhtGPCNRnUMLMroVVp86sQt1bzuPuFi1VgVVNRVvzoy6wfzo8Mxr" ], "script": "base64:AAIFAAAAAAAAABYIAhIDCgEIEgASAwoBCBIAEgQKAgEIAAAAFgEAAAAHZ2V0Qm9vbAAAAAEAAAADa2V5BAAAAAckbWF0Y2gwCQAEGwAAAAIFAAAABHRoaXMFAAAAA2tleQMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAHQm9vbGVhbgQAAAABYgUAAAAHJG1hdGNoMAUAAAABYgcBAAAACWlzVGVzdEVudgAAAAAJAQAAAAdnZXRCb29sAAAAAQIAAAAHVEVTVEVOVgEAAAAXc3RhdGljS2V5X29yYWNsZUFkZHJlc3MAAAAAAgAAABRzdGF0aWNfb3JhY2xlQWRkcmVzcwEAAAAWc3RhdGljS2V5X2l0ZW1zQWRkcmVzcwAAAAACAAAAE3N0YXRpY19pdGVtc0FkZHJlc3MBAAAAHnN0YXRpY0tleV9tdXRhbnRGYXJtaW5nQWRkcmVzcwAAAAACAAAAG3N0YXRpY19tdXRhbnRGYXJtaW5nQWRkcmVzcwEAAAASc3RhdGljS2V5X2V4dHJhRmVlAAAAAAIAAAAPc3RhdGljX2V4dHJhRmVlAQAAABdzdGF0aWNLZXlfZmVlQWdncmVnYXRvcgAAAAACAAAAFHN0YXRpY19mZWVBZ2dyZWdhdG9yAQAAABBrZXlVbnN0YWtlSGVpZ2h0AAAAAgAAAAxhcnRlZmFjdE5hbWUAAAAKYXJ0ZWZhY3RJZAkAASwAAAACCQABLAAAAAIJAAEsAAAAAgUAAAAMYXJ0ZWZhY3ROYW1lAgAAAAFfBQAAAAphcnRlZmFjdElkAgAAAA9fdW5zdGFrZV9oZWlnaHQBAAAAEGtleUFydGVmYWN0T3duZXIAAAACAAAADGFydGVmYWN0TmFtZQAAAAVvd25lcgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgUAAAAMYXJ0ZWZhY3ROYW1lAgAAAAFfBQAAAAVvd25lcgIAAAAGX293bmVyAQAAAAxrZXlGZWVkTGltaXQAAAABAAAABW93bmVyCQABLAAAAAICAAAABmxpbWl0XwUAAAAFb3duZXIAAAAACXN0YWtlYWJsZQkABEwAAAACAgAAAAhBUlQtTEFLRQkABEwAAAACAgAAAAlBUlQtWFRSRUUJAARMAAAAAgIAAAAJQVJULVhTT0NLCQAETAAAAAICAAAACkFSVC1YTUlTVEwFAAAAA25pbAEAAAAMdHJ5R2V0U3RyaW5nAAAAAQAAAANrZXkEAAAAByRtYXRjaDAJAAQdAAAAAgUAAAAEdGhpcwUAAAADa2V5AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAAZTdHJpbmcEAAAAAWEFAAAAByRtYXRjaDAFAAAAAWECAAAAAAEAAAANdHJ5R2V0SW50ZWdlcgAAAAEAAAADa2V5BAAAAAckbWF0Y2gwCQAEGgAAAAIFAAAABHRoaXMFAAAAA2tleQMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAADSW50BAAAAAFhBQAAAAckbWF0Y2gwBQAAAAFhAAAAAAAAAAAAAQAAABR0cnlHZXRTdHJpbmdFeHRlcm5hbAAAAAIAAAAHYWRkcmVzcwAAAANrZXkEAAAAByRtYXRjaDAJAAQdAAAAAgUAAAAHYWRkcmVzcwUAAAADa2V5AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAAZTdHJpbmcEAAAAAWEFAAAAByRtYXRjaDAFAAAAAWECAAAAAAEAAAAJZ2V0T3JhY2xlAAAAAAkBAAAAB0FkZHJlc3MAAAABCQACWQAAAAEJAQAAAAx0cnlHZXRTdHJpbmcAAAABCQEAAAAXc3RhdGljS2V5X29yYWNsZUFkZHJlc3MAAAAAAQAAAA9nZXRJdGVtc0FkZHJlc3MAAAAACQEAAAAHQWRkcmVzcwAAAAEJAAJZAAAAAQkBAAAAFHRyeUdldFN0cmluZ0V4dGVybmFsAAAAAgkBAAAACWdldE9yYWNsZQAAAAAJAQAAABZzdGF0aWNLZXlfaXRlbXNBZGRyZXNzAAAAAAEAAAAQZ2V0RmVlQWdncmVnYXRvcgAAAAAJAQAAAAdBZGRyZXNzAAAAAQkAAlkAAAABCQEAAAAUdHJ5R2V0U3RyaW5nRXh0ZXJuYWwAAAACCQEAAAAJZ2V0T3JhY2xlAAAAAAkBAAAAF3N0YXRpY0tleV9mZWVBZ2dyZWdhdG9yAAAAAAEAAAAXZ2V0TXV0YW50RmFybWluZ0FkZHJlc3MAAAAACQEAAAAHQWRkcmVzcwAAAAEJAAJZAAAAAQkBAAAAFHRyeUdldFN0cmluZ0V4dGVybmFsAAAAAgkBAAAACWdldE9yYWNsZQAAAAAJAQAAAB5zdGF0aWNLZXlfbXV0YW50RmFybWluZ0FkZHJlc3MAAAAAAQAAAAhhc1N0cmluZwAAAAEAAAAFdmFsdWUEAAAAByRtYXRjaDAFAAAABXZhbHVlAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAAZTdHJpbmcEAAAABnN0cmluZwUAAAAHJG1hdGNoMAUAAAAGc3RyaW5nCQAAAgAAAAECAAAAHHdyb25nIHR5cGUsIGV4cGVjdGVkOiBTdHJpbmcBAAAABWFzSW50AAAAAQAAAAV2YWx1ZQQAAAAHJG1hdGNoMAUAAAAFdmFsdWUDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAA0ludAQAAAADaW50BQAAAAckbWF0Y2gwBQAAAANpbnQJAAACAAAAAQIAAAAZd3JvbmcgdHlwZSwgZXhwZWN0ZWQ6IEludAEAAAAWY2hlY2tBZGRpdGlvbmFsUGF5bWVudAAAAAEAAAAHcGF5bWVudAMJAQAAAAlpc0RlZmluZWQAAAABCAUAAAAHcGF5bWVudAAAAAdhc3NldElkCQAAAgAAAAECAAAAGVdDQVA6IFBsZWFzZSBhdHRhY2ggd2F2ZXMEAAAACWZlZUFtb3VudAkBAAAAEUBleHRyTmF0aXZlKDEwNTApAAAAAgkBAAAACWdldE9yYWNsZQAAAAAJAQAAABJzdGF0aWNLZXlfZXh0cmFGZWUAAAAAAwkBAAAAAiE9AAAAAggFAAAAB3BheW1lbnQAAAAGYW1vdW50BQAAAAlmZWVBbW91bnQJAAACAAAAAQkAASwAAAACCQABLAAAAAICAAAAHFdDQVA6IFBsZWFzZSBhdHRhY2ggZXhhY3RseSAJAAGkAAAAAQUAAAAJZmVlQW1vdW50AgAAABMgYW1vdW50IG9mIHdhdmVsZXRzCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMJAQAAABBnZXRGZWVBZ2dyZWdhdG9yAAAAAAUAAAAJZmVlQW1vdW50BQAAAAR1bml0BQAAAANuaWwBAAAAEGl0ZW1Jc0luQ29vbERvd24AAAACAAAADGFydGVmYWN0TmFtZQAAAAphcnRlZmFjdElkBAAAABF1bnN0YWtlSGVpZ2h0TGFzdAkBAAAADXRyeUdldEludGVnZXIAAAABCQEAAAAQa2V5VW5zdGFrZUhlaWdodAAAAAIFAAAA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", "height": 3310661, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: none Next: BWpVnoJBkEp6TjVuXW59R6T4ULsQc8ux4P5QjWjnqDDy Full:
OldNewDifferences
1-# no script
1+{-# STDLIB_VERSION 5 #-}
2+{-# SCRIPT_TYPE ACCOUNT #-}
3+{-# CONTENT_TYPE DAPP #-}
4+func getBool (key) = match getBoolean(this, key) {
5+ case b: Boolean =>
6+ b
7+ case _ =>
8+ false
9+}
10+
11+
12+func isTestEnv () = getBool("TESTENV")
13+
14+
15+func staticKey_oracleAddress () = "static_oracleAddress"
16+
17+
18+func staticKey_itemsAddress () = "static_itemsAddress"
19+
20+
21+func staticKey_mutantFarmingAddress () = "static_mutantFarmingAddress"
22+
23+
24+func staticKey_extraFee () = "static_extraFee"
25+
26+
27+func staticKey_feeAggregator () = "static_feeAggregator"
28+
29+
30+func keyUnstakeHeight (artefactName,artefactId) = (((artefactName + "_") + artefactId) + "_unstake_height")
31+
32+
33+func keyArtefactOwner (artefactName,owner) = (((artefactName + "_") + owner) + "_owner")
34+
35+
36+func keyFeedLimit (owner) = ("limit_" + owner)
37+
38+
39+let stakeable = ["ART-LAKE", "ART-XTREE", "ART-XSOCK", "ART-XMISTL"]
40+
41+func tryGetString (key) = match getString(this, key) {
42+ case a: String =>
43+ a
44+ case _ =>
45+ ""
46+}
47+
48+
49+func tryGetInteger (key) = match getInteger(this, key) {
50+ case a: Int =>
51+ a
52+ case _ =>
53+ 0
54+}
55+
56+
57+func tryGetStringExternal (address,key) = match getString(address, key) {
58+ case a: String =>
59+ a
60+ case _ =>
61+ ""
62+}
63+
64+
65+func getOracle () = Address(fromBase58String(tryGetString(staticKey_oracleAddress())))
66+
67+
68+func getItemsAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), staticKey_itemsAddress())))
69+
70+
71+func getFeeAggregator () = Address(fromBase58String(tryGetStringExternal(getOracle(), staticKey_feeAggregator())))
72+
73+
74+func getMutantFarmingAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), staticKey_mutantFarmingAddress())))
75+
76+
77+func asString (value) = match value {
78+ case string: String =>
79+ string
80+ case _ =>
81+ throw("wrong type, expected: String")
82+}
83+
84+
85+func asInt (value) = match value {
86+ case int: Int =>
87+ int
88+ case _ =>
89+ throw("wrong type, expected: Int")
90+}
91+
92+
93+func checkAdditionalPayment (payment) = if (isDefined(payment.assetId))
94+ then throw("WCAP: Please attach waves")
95+ else {
96+ let feeAmount = getIntegerValue(getOracle(), staticKey_extraFee())
97+ if ((payment.amount != feeAmount))
98+ then throw((("WCAP: Please attach exactly " + toString(feeAmount)) + " amount of wavelets"))
99+ else [ScriptTransfer(getFeeAggregator(), feeAmount, unit)]
100+ }
101+
102+
103+func itemIsInCoolDown (artefactName,artefactId) = {
104+ let unstakeHeightLast = tryGetInteger(keyUnstakeHeight(artefactName, artefactId))
105+ let cooldownPeriod = 240
106+ if ((height > (unstakeHeightLast + cooldownPeriod)))
107+ then false
108+ else true
109+ }
110+
111+
112+@Callable(i)
113+func configureOracle (oracle) = if ((i.caller != this))
114+ then throw("admin only")
115+ else [StringEntry(staticKey_oracleAddress(), oracle)]
116+
117+
118+
119+@Callable(i)
120+func stakeItem () = {
121+ let validPayment = checkAdditionalPayment(i.payments[1])
122+ if (!(if ((size(i.payments) == 2))
123+ then (i.payments[0].amount == 1)
124+ else false))
125+ then throw("Invalid payment")
126+ else {
127+ let assetId = value(i.payments[0].assetId)
128+ let artefactName = asString(invoke(getItemsAddress(), "checkArtefactDetails", [toBase58String(assetId)], nil))
129+ if ((artefactName == artefactName))
130+ then if (!(containsElement(stakeable, artefactName)))
131+ then throw("You can't stake this artafect")
132+ else if (itemIsInCoolDown(artefactName, toBase58String(assetId)))
133+ then throw("Item can't be staked yet, it's in cooldown")
134+ else {
135+ let invoker = toString(i.caller)
136+ let artefactId = tryGetString(keyArtefactOwner(artefactName, invoker))
137+ if ((artefactId != ""))
138+ then throw(("You are already staking " + artefactName))
139+ else {
140+ let boostDuck = if ((artefactName == "ART-LAKE"))
141+ then invoke(getItemsAddress(), "manipulateBoostAccount", [2, invoker], nil)
142+ else if ((artefactName == "ART-XTREE"))
143+ then invoke(getItemsAddress(), "manipulateBoostAccount", [3, invoker], nil)
144+ else nil
145+ if ((boostDuck == boostDuck))
146+ then ([StringEntry(keyArtefactOwner(artefactName, invoker), toBase58String(assetId))] ++ validPayment)
147+ else throw("Strict value is not equal to itself.")
148+ }
149+ }
150+ else throw("Strict value is not equal to itself.")
151+ }
152+ }
153+
154+
155+
156+@Callable(i)
157+func unstakeItem (artefactName) = {
158+ let validPayment = checkAdditionalPayment(i.payments[0])
159+ if (!(containsElement(stakeable, artefactName)))
160+ then throw("This artefact doesn't exist")
161+ else {
162+ let invoker = toString(i.caller)
163+ let artefactId = tryGetString(keyArtefactOwner(artefactName, invoker))
164+ if ((artefactId == "ART-XSOCK"))
165+ then throw("You can not unstake ART-XSOCK anymore")
166+ else if ((artefactId == ""))
167+ then throw(("You didnt stake " + artefactName))
168+ else {
169+ let boostDuck = if ((artefactName == "ART-LAKE"))
170+ then invoke(getItemsAddress(), "manipulateBoostAccount", [-2, invoker], nil)
171+ else if ((artefactName == "ART-XTREE"))
172+ then invoke(getItemsAddress(), "manipulateBoostAccount", [-3, invoker], nil)
173+ else nil
174+ if ((boostDuck == boostDuck))
175+ then ([IntegerEntry(keyUnstakeHeight(artefactName, artefactId), height), ScriptTransfer(i.caller, 1, fromBase58String(artefactId)), DeleteEntry(keyArtefactOwner(artefactName, invoker))] ++ validPayment)
176+ else throw("Strict value is not equal to itself.")
177+ }
178+ }
179+ }
180+
181+
182+
183+@Callable(i)
184+func oneTimeUseFeed () = {
185+ let validPayment = checkAdditionalPayment(i.payments[1])
186+ if (!(if ((size(i.payments) == 2))
187+ then (i.payments[0].amount == 1)
188+ else false))
189+ then throw("Invalid payment")
190+ else {
191+ let assetId = value(i.payments[0].assetId)
192+ let artefactName = asString(invoke(getItemsAddress(), "checkArtefactDetails", [toBase58String(assetId)], nil))
193+ if ((artefactName == artefactName))
194+ then if (!(contains(artefactName, "ART-FEED")))
195+ then throw("You can't use this artafect to earn feedlimit!")
196+ else {
197+ let invoker = toString(i.caller)
198+ let amount = drop(artefactName, 8)
199+ let intValue = parseIntValue(amount)
200+ let topup = invoke(getMutantFarmingAddress(), "topUpReward", ["FEED", (intValue / 2)], nil)
201+ if ((topup == topup))
202+ then ([IntegerEntry(keyFeedLimit(invoker), (tryGetInteger(keyFeedLimit(invoker)) + intValue)), Burn(assetId, 1)] ++ validPayment)
203+ else throw("Strict value is not equal to itself.")
204+ }
205+ else throw("Strict value is not equal to itself.")
206+ }
207+ }
208+
209+
210+
211+@Callable(i)
212+func addFeedLimit (amount,address) = if ((i.caller != getMutantFarmingAddress()))
213+ then throw("admin only")
214+ else [IntegerEntry(keyFeedLimit(address), (tryGetInteger(keyFeedLimit(address)) + amount))]
215+
216+
217+@Verifier(tx)
218+func verify () = if (isTestEnv())
219+ then sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
220+ else {
221+ let firstUser = base58'6TdaXEfhnjYquvPf3yV7MFxt2CbgFmaqsvGwkKfXtKi4'
222+ let secondUser = base58'7DsP2WaMLocbHuUxux7pbXRjTrrZ1TFQPsi5QumS3gr8'
223+ let thirdUser = base58'BpFWP3p3JgYrrP45xfrKzeMcWMEXoinj4FVPPkUiA8D3'
224+ let firstUserSigned = if (sigVerify(tx.bodyBytes, tx.proofs[0], firstUser))
225+ then 1
226+ else if (sigVerify(tx.bodyBytes, tx.proofs[1], firstUser))
227+ then 1
228+ else if (sigVerify(tx.bodyBytes, tx.proofs[2], firstUser))
229+ then 1
230+ else 0
231+ let secondUserSigned = if (sigVerify(tx.bodyBytes, tx.proofs[0], secondUser))
232+ then 1
233+ else if (sigVerify(tx.bodyBytes, tx.proofs[1], secondUser))
234+ then 1
235+ else if (sigVerify(tx.bodyBytes, tx.proofs[2], secondUser))
236+ then 1
237+ else 0
238+ let thirdUserSigned = if (sigVerify(tx.bodyBytes, tx.proofs[0], thirdUser))
239+ then 1
240+ else if (sigVerify(tx.bodyBytes, tx.proofs[1], thirdUser))
241+ then 1
242+ else if (sigVerify(tx.bodyBytes, tx.proofs[2], thirdUser))
243+ then 1
244+ else 0
245+ let signaturesCount = ((firstUserSigned + secondUserSigned) + thirdUserSigned)
246+ match tx {
247+ case _ =>
248+ (signaturesCount >= 2)
249+ }
250+ }
251+

github/deemru/w8io/c3f4982 
15.82 ms