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