tx · Dgh4J8G2GgCs1g1tfxjLiaGCTQFyMUAZjGxCSyT4G2Et

3PG7U7XXBt4yLq3toAtcxmXjYZNergS29uQ:  -0.01000000 Waves

2022.04.14 16:47 [3073623] smart account 3PG7U7XXBt4yLq3toAtcxmXjYZNergS29uQ > SELF 0.00000000 Waves

{ "type": 13, "id": "Dgh4J8G2GgCs1g1tfxjLiaGCTQFyMUAZjGxCSyT4G2Et", "fee": 1000000, "feeAssetId": null, "timestamp": 1649944091021, "version": 2, "chainId": 87, "sender": "3PG7U7XXBt4yLq3toAtcxmXjYZNergS29uQ", "senderPublicKey": "2PCiuoWznRfQCGrW4a1ii67qPWuGvKFw5Nryapzfc5ch", "proofs": [ "424GcdA8LumJBQThLq5ChGqs5ZpdQAvrUMqW6mUNvJpR1oaRM1qBEQGsR53sZuCQwTiE9ryBarUk7C881HZVrYrc" ], "script": "base64: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", "height": 3073623, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: none Next: 3u9qpCAJmaPJwgQzf5CMJRzEDzQZtkrzXdLE9zXEmoQe Full:
OldNewDifferences
1-# no script
1+{-# STDLIB_VERSION 5 #-}
2+{-# SCRIPT_TYPE ACCOUNT #-}
3+{-# CONTENT_TYPE DAPP #-}
4+func keyUnstakeHeight (artefactName,artefactId) = (((artefactName + "_") + artefactId) + "_unstake_height")
5+
6+
7+func keyArtefactOwner (artefactName,owner) = (((artefactName + "_") + owner) + "_owner")
8+
9+
10+let stakeable = ["ART-LAKE", "ART-XTREE", "ART-XSOCK", "ART-XMISTL"]
11+
12+func tryGetString (key) = match getString(this, key) {
13+ case a: String =>
14+ a
15+ case _ =>
16+ ""
17+}
18+
19+
20+func tryGetInteger (key) = match getInteger(this, key) {
21+ case a: Int =>
22+ a
23+ case _ =>
24+ 0
25+}
26+
27+
28+func tryGetStringExternal (address,key) = match getString(address, key) {
29+ case a: String =>
30+ a
31+ case _ =>
32+ ""
33+}
34+
35+
36+func getOracle () = Address(fromBase58String(tryGetString("static_oracleAddress")))
37+
38+
39+func getItemsAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), "static_itemsAddress")))
40+
41+
42+func asString (value) = match value {
43+ case string: String =>
44+ string
45+ case _ =>
46+ throw("wrong type, expected: String")
47+}
48+
49+
50+func asInt (value) = match value {
51+ case int: Int =>
52+ int
53+ case _ =>
54+ throw("wrong type, expected: Int")
55+}
56+
57+
58+func itemIsInCoolDown (artefactName,artefactId) = {
59+ let unstakeHeightLast = tryGetInteger(keyUnstakeHeight(artefactName, artefactId))
60+ let cooldownPeriod = 240
61+ if ((height > (unstakeHeightLast + cooldownPeriod)))
62+ then false
63+ else true
64+ }
65+
66+
67+@Callable(i)
68+func configureOracle (oracle) = if ((i.caller != this))
69+ then throw("admin only")
70+ else [StringEntry("static_oracleAddress", oracle)]
71+
72+
73+
74+@Callable(i)
75+func stakeItem () = if (!(if ((size(i.payments) == 1))
76+ then (i.payments[0].amount == 1)
77+ else false))
78+ then throw("Invalid payment")
79+ else {
80+ let assetId = value(i.payments[0].assetId)
81+ let artefactName = asString(invoke(getItemsAddress(), "checkArtefactDetails", [toBase58String(assetId)], nil))
82+ if ((artefactName == artefactName))
83+ then if (!(containsElement(stakeable, artefactName)))
84+ then throw("You can't stake this artafect")
85+ else if (itemIsInCoolDown(artefactName, toBase58String(assetId)))
86+ then throw("Item can't be staked yet, it's in cooldown")
87+ else {
88+ let invoker = toString(i.caller)
89+ let artefactId = tryGetString(keyArtefactOwner(artefactName, invoker))
90+ if ((artefactId != ""))
91+ then throw(("You are already staking " + artefactName))
92+ else {
93+ let boostDuck = if ((artefactName == "ART-LAKE"))
94+ then invoke(getItemsAddress(), "manipulateBoostAccount", [2, invoker], i.payments)
95+ else if ((artefactName == "ART-XTREE"))
96+ then invoke(getItemsAddress(), "manipulateBoostAccount", [3, invoker], i.payments)
97+ else nil
98+ if ((boostDuck == boostDuck))
99+ then [StringEntry(keyArtefactOwner(artefactName, invoker), toBase58String(assetId))]
100+ else throw("Strict value is not equal to itself.")
101+ }
102+ }
103+ else throw("Strict value is not equal to itself.")
104+ }
105+
106+
107+
108+@Callable(i)
109+func unstakeItem (artefactName) = if (!(containsElement(stakeable, artefactName)))
110+ then throw("This artefact doesn't exist")
111+ else {
112+ let invoker = toString(i.caller)
113+ let artefactId = tryGetString(keyArtefactOwner(artefactName, invoker))
114+ if ((artefactId == ""))
115+ then throw(("You didnt stake " + artefactName))
116+ else {
117+ let boostDuck = if ((artefactName == "ART-LAKE"))
118+ then invoke(getItemsAddress(), "manipulateBoostAccount", [-2, invoker], i.payments)
119+ else if ((artefactName == "ART-XTREE"))
120+ then invoke(getItemsAddress(), "manipulateBoostAccount", [-3, invoker], i.payments)
121+ else nil
122+ if ((boostDuck == boostDuck))
123+ then [IntegerEntry(keyUnstakeHeight(artefactName, artefactId), height), ScriptTransfer(i.caller, 1, fromBase58String(artefactId)), DeleteEntry(keyArtefactOwner(artefactName, invoker))]
124+ else throw("Strict value is not equal to itself.")
125+ }
126+ }
127+
128+
129+@Verifier(tx)
130+func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
131+

github/deemru/w8io/3ef1775 
34.47 ms