tx · 3u9qpCAJmaPJwgQzf5CMJRzEDzQZtkrzXdLE9zXEmoQe

3PG7U7XXBt4yLq3toAtcxmXjYZNergS29uQ:  -0.01400000 Waves

2022.04.18 12:36 [3079122] smart account 3PG7U7XXBt4yLq3toAtcxmXjYZNergS29uQ > SELF 0.00000000 Waves

{ "type": 13, "id": "3u9qpCAJmaPJwgQzf5CMJRzEDzQZtkrzXdLE9zXEmoQe", "fee": 1400000, "feeAssetId": null, "timestamp": 1650274655314, "version": 2, "chainId": 87, "sender": "3PG7U7XXBt4yLq3toAtcxmXjYZNergS29uQ", "senderPublicKey": "2PCiuoWznRfQCGrW4a1ii67qPWuGvKFw5Nryapzfc5ch", "proofs": [ "dBfgdoFNt9uW1emoDaEBMYv6Azvx7dUcYUDg4MabwUC2vzaiXLHBujTP4RbNYx6RVJm8snByaGLdnTsc2KqhvnT" ], "script": "base64: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", "height": 3079122, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: Dgh4J8G2GgCs1g1tfxjLiaGCTQFyMUAZjGxCSyT4G2Et Next: 5pHjVDPWhM1EnAbZhRoXUn6vbp4eiCUHSJwW79HvRyy9 Diff:
OldNewDifferences
9191 then throw(("You are already staking " + artefactName))
9292 else {
9393 let boostDuck = if ((artefactName == "ART-LAKE"))
94- then invoke(getItemsAddress(), "manipulateBoostAccount", [2, invoker], i.payments)
94+ then invoke(getItemsAddress(), "manipulateBoostAccount", [2, invoker], nil)
9595 else if ((artefactName == "ART-XTREE"))
96- then invoke(getItemsAddress(), "manipulateBoostAccount", [3, invoker], i.payments)
96+ then invoke(getItemsAddress(), "manipulateBoostAccount", [3, invoker], nil)
9797 else nil
9898 if ((boostDuck == boostDuck))
9999 then [StringEntry(keyArtefactOwner(artefactName, invoker), toBase58String(assetId))]
115115 then throw(("You didnt stake " + artefactName))
116116 else {
117117 let boostDuck = if ((artefactName == "ART-LAKE"))
118- then invoke(getItemsAddress(), "manipulateBoostAccount", [-2, invoker], i.payments)
118+ then invoke(getItemsAddress(), "manipulateBoostAccount", [-2, invoker], nil)
119119 else if ((artefactName == "ART-XTREE"))
120- then invoke(getItemsAddress(), "manipulateBoostAccount", [-3, invoker], i.payments)
120+ then invoke(getItemsAddress(), "manipulateBoostAccount", [-3, invoker], nil)
121121 else nil
122122 if ((boostDuck == boostDuck))
123123 then [IntegerEntry(keyUnstakeHeight(artefactName, artefactId), height), ScriptTransfer(i.caller, 1, fromBase58String(artefactId)), DeleteEntry(keyArtefactOwner(artefactName, invoker))]
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 func keyUnstakeHeight (artefactName,artefactId) = (((artefactName + "_") + artefactId) + "_unstake_height")
55
66
77 func keyArtefactOwner (artefactName,owner) = (((artefactName + "_") + owner) + "_owner")
88
99
1010 let stakeable = ["ART-LAKE", "ART-XTREE", "ART-XSOCK", "ART-XMISTL"]
1111
1212 func tryGetString (key) = match getString(this, key) {
1313 case a: String =>
1414 a
1515 case _ =>
1616 ""
1717 }
1818
1919
2020 func tryGetInteger (key) = match getInteger(this, key) {
2121 case a: Int =>
2222 a
2323 case _ =>
2424 0
2525 }
2626
2727
2828 func tryGetStringExternal (address,key) = match getString(address, key) {
2929 case a: String =>
3030 a
3131 case _ =>
3232 ""
3333 }
3434
3535
3636 func getOracle () = Address(fromBase58String(tryGetString("static_oracleAddress")))
3737
3838
3939 func getItemsAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), "static_itemsAddress")))
4040
4141
4242 func asString (value) = match value {
4343 case string: String =>
4444 string
4545 case _ =>
4646 throw("wrong type, expected: String")
4747 }
4848
4949
5050 func asInt (value) = match value {
5151 case int: Int =>
5252 int
5353 case _ =>
5454 throw("wrong type, expected: Int")
5555 }
5656
5757
5858 func itemIsInCoolDown (artefactName,artefactId) = {
5959 let unstakeHeightLast = tryGetInteger(keyUnstakeHeight(artefactName, artefactId))
6060 let cooldownPeriod = 240
6161 if ((height > (unstakeHeightLast + cooldownPeriod)))
6262 then false
6363 else true
6464 }
6565
6666
6767 @Callable(i)
6868 func configureOracle (oracle) = if ((i.caller != this))
6969 then throw("admin only")
7070 else [StringEntry("static_oracleAddress", oracle)]
7171
7272
7373
7474 @Callable(i)
7575 func stakeItem () = if (!(if ((size(i.payments) == 1))
7676 then (i.payments[0].amount == 1)
7777 else false))
7878 then throw("Invalid payment")
7979 else {
8080 let assetId = value(i.payments[0].assetId)
8181 let artefactName = asString(invoke(getItemsAddress(), "checkArtefactDetails", [toBase58String(assetId)], nil))
8282 if ((artefactName == artefactName))
8383 then if (!(containsElement(stakeable, artefactName)))
8484 then throw("You can't stake this artafect")
8585 else if (itemIsInCoolDown(artefactName, toBase58String(assetId)))
8686 then throw("Item can't be staked yet, it's in cooldown")
8787 else {
8888 let invoker = toString(i.caller)
8989 let artefactId = tryGetString(keyArtefactOwner(artefactName, invoker))
9090 if ((artefactId != ""))
9191 then throw(("You are already staking " + artefactName))
9292 else {
9393 let boostDuck = if ((artefactName == "ART-LAKE"))
94- then invoke(getItemsAddress(), "manipulateBoostAccount", [2, invoker], i.payments)
94+ then invoke(getItemsAddress(), "manipulateBoostAccount", [2, invoker], nil)
9595 else if ((artefactName == "ART-XTREE"))
96- then invoke(getItemsAddress(), "manipulateBoostAccount", [3, invoker], i.payments)
96+ then invoke(getItemsAddress(), "manipulateBoostAccount", [3, invoker], nil)
9797 else nil
9898 if ((boostDuck == boostDuck))
9999 then [StringEntry(keyArtefactOwner(artefactName, invoker), toBase58String(assetId))]
100100 else throw("Strict value is not equal to itself.")
101101 }
102102 }
103103 else throw("Strict value is not equal to itself.")
104104 }
105105
106106
107107
108108 @Callable(i)
109109 func unstakeItem (artefactName) = if (!(containsElement(stakeable, artefactName)))
110110 then throw("This artefact doesn't exist")
111111 else {
112112 let invoker = toString(i.caller)
113113 let artefactId = tryGetString(keyArtefactOwner(artefactName, invoker))
114114 if ((artefactId == ""))
115115 then throw(("You didnt stake " + artefactName))
116116 else {
117117 let boostDuck = if ((artefactName == "ART-LAKE"))
118- then invoke(getItemsAddress(), "manipulateBoostAccount", [-2, invoker], i.payments)
118+ then invoke(getItemsAddress(), "manipulateBoostAccount", [-2, invoker], nil)
119119 else if ((artefactName == "ART-XTREE"))
120- then invoke(getItemsAddress(), "manipulateBoostAccount", [-3, invoker], i.payments)
120+ then invoke(getItemsAddress(), "manipulateBoostAccount", [-3, invoker], nil)
121121 else nil
122122 if ((boostDuck == boostDuck))
123123 then [IntegerEntry(keyUnstakeHeight(artefactName, artefactId), height), ScriptTransfer(i.caller, 1, fromBase58String(artefactId)), DeleteEntry(keyArtefactOwner(artefactName, invoker))]
124124 else throw("Strict value is not equal to itself.")
125125 }
126126 }
127127
128128
129129 @Verifier(tx)
130130 func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
131131

github/deemru/w8io/6500d08 
42.55 ms