tx · 6PDnYV3HQ3E8S3z3U5CfWDqTi3JMf7PVncjNA2RaEBcQ

3PG7U7XXBt4yLq3toAtcxmXjYZNergS29uQ:  -0.01000000 Waves

2022.12.12 15:29 [3422600] smart account 3PG7U7XXBt4yLq3toAtcxmXjYZNergS29uQ > SELF 0.00000000 Waves

{ "type": 13, "id": "6PDnYV3HQ3E8S3z3U5CfWDqTi3JMf7PVncjNA2RaEBcQ", "fee": 1000000, "feeAssetId": null, "timestamp": 1670848251477, "version": 2, "chainId": 87, "sender": "3PG7U7XXBt4yLq3toAtcxmXjYZNergS29uQ", "senderPublicKey": "2PCiuoWznRfQCGrW4a1ii67qPWuGvKFw5Nryapzfc5ch", "proofs": [ "KeU57fe5vswz2F8CnzQ6eKzafhisLFTGQx9bBi3YFoWS66bjYKH7sXz338qXhegFQi7sXZmoCewQFzAWXahgReB" ], "script": "base64:AAIFAAAAAAAAABAIAhIDCgEIEgASAwoBCBIAAAAADAEAAAAQa2V5VW5zdGFrZUhlaWdodAAAAAIAAAAMYXJ0ZWZhY3ROYW1lAAAACmFydGVmYWN0SWQJAAEsAAAAAgkAASwAAAACCQABLAAAAAIFAAAADGFydGVmYWN0TmFtZQIAAAABXwUAAAAKYXJ0ZWZhY3RJZAIAAAAPX3Vuc3Rha2VfaGVpZ2h0AQAAABBrZXlBcnRlZmFjdE93bmVyAAAAAgAAAAxhcnRlZmFjdE5hbWUAAAAFb3duZXIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIFAAAADGFydGVmYWN0TmFtZQIAAAABXwUAAAAFb3duZXICAAAABl9vd25lcgEAAAAMa2V5RmVlZExpbWl0AAAAAQAAAAVvd25lcgkAASwAAAACAgAAAAZsaW1pdF8FAAAABW93bmVyAAAAAAlzdGFrZWFibGUJAARMAAAAAgIAAAAIQVJULUxBS0UJAARMAAAAAgIAAAAJQVJULVhUUkVFCQAETAAAAAICAAAACUFSVC1YU09DSwkABEwAAAACAgAAAApBUlQtWE1JU1RMBQAAAANuaWwBAAAADHRyeUdldFN0cmluZwAAAAEAAAADa2V5BAAAAAckbWF0Y2gwCQAEHQAAAAIFAAAABHRoaXMFAAAAA2tleQMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAGU3RyaW5nBAAAAAFhBQAAAAckbWF0Y2gwBQAAAAFhAgAAAAABAAAADXRyeUdldEludGVnZXIAAAABAAAAA2tleQQAAAAHJG1hdGNoMAkABBoAAAACBQAAAAR0aGlzBQAAAANrZXkDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAA0ludAQAAAABYQUAAAAHJG1hdGNoMAUAAAABYQAAAAAAAAAAAAEAAAAUdHJ5R2V0U3RyaW5nRXh0ZXJuYWwAAAACAAAAB2FkZHJlc3MAAAADa2V5BAAAAAckbWF0Y2gwCQAEHQAAAAIFAAAAB2FkZHJlc3MFAAAAA2tleQMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAGU3RyaW5nBAAAAAFhBQAAAAckbWF0Y2gwBQAAAAFhAgAAAAABAAAACWdldE9yYWNsZQAAAAAJAQAAAAdBZGRyZXNzAAAAAQkAAlkAAAABCQEAAAAMdHJ5R2V0U3RyaW5nAAAAAQIAAAAUc3RhdGljX29yYWNsZUFkZHJlc3MBAAAAD2dldEl0ZW1zQWRkcmVzcwAAAAAJAQAAAAdBZGRyZXNzAAAAAQkAAlkAAAABCQEAAAAUdHJ5R2V0U3RyaW5nRXh0ZXJuYWwAAAACCQEAAAAJZ2V0T3JhY2xlAAAAAAIAAAATc3RhdGljX2l0ZW1zQWRkcmVzcwEAAAAIYXNTdHJpbmcAAAABAAAABXZhbHVlBAAAAAckbWF0Y2gwBQAAAAV2YWx1ZQMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAGU3RyaW5nBAAAAAZzdHJpbmcFAAAAByRtYXRjaDAFAAAABnN0cmluZwkAAAIAAAABAgAAABx3cm9uZyB0eXBlLCBleHBlY3RlZDogU3RyaW5nAQAAAAVhc0ludAAAAAEAAAAFdmFsdWUEAAAAByRtYXRjaDAFAAAABXZhbHVlAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAANJbnQEAAAAA2ludAUAAAAHJG1hdGNoMAUAAAADaW50CQAAAgAAAAECAAAAGXdyb25nIHR5cGUsIGV4cGVjdGVkOiBJbnQBAAAAEGl0ZW1Jc0luQ29vbERvd24AAAACAAAADGFydGVmYWN0TmFtZQAAAAphcnRlZmFjdElkBAAAABF1bnN0YWtlSGVpZ2h0TGFzdAkBAAAADXRyeUdldEludGVnZXIAAAABCQEAAAAQa2V5VW5zdGFrZUhlaWdodAAAAAIFAAAADGFydGVmYWN0TmFtZQUAAAAKYXJ0ZWZhY3RJZAQAAAAOY29vbGRvd25QZXJpb2QAAAAAAAAAAPADCQAAZgAAAAIFAAAABmhlaWdodAkAAGQAAAACBQAAABF1bnN0YWtlSGVpZ2h0TGFzdAUAAAAOY29vbGRvd25QZXJpb2QHBgAAAAQAAAABaQEAAAAPY29uZmlndXJlT3JhY2xlAAAAAQAAAAZvcmFjbGUDCQEAAAACIT0AAAACCAUAAAABaQAAAAZjYWxsZXIFAAAABHRoaXMJAAACAAAAAQIAAAAKYWRtaW4gb25seQkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACAgAAABRzdGF0aWNfb3JhY2xlQWRkcmVzcwUAAAAGb3JhY2xlBQAAAANuaWwA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", "height": 3422600, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 4Tn2zwMccGWWi6V75eTyEkj81j7Pu8qE47TSGGxpob8t Next: 9FmXGxp7Y2UgqYL3i6fnJyEdNnU2nS2jmwBHwz4ihqB8 Diff:
OldNewDifferences
145145 then throw("You can't use this artafect to earn feedlimit!")
146146 else {
147147 let invoker = toString(i.caller)
148-[IntegerEntry(keyFeedLimit(invoker), (tryGetInteger(keyFeedLimit(invoker)) + 10))]
148+[IntegerEntry(keyFeedLimit(invoker), (tryGetInteger(keyFeedLimit(invoker)) + 10)), Burn(assetId, 1)]
149149 }
150150 else throw("Strict value is not equal to itself.")
151151 }
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 func keyFeedLimit (owner) = ("limit_" + owner)
1111
1212
1313 let stakeable = ["ART-LAKE", "ART-XTREE", "ART-XSOCK", "ART-XMISTL"]
1414
1515 func tryGetString (key) = match getString(this, key) {
1616 case a: String =>
1717 a
1818 case _ =>
1919 ""
2020 }
2121
2222
2323 func tryGetInteger (key) = match getInteger(this, key) {
2424 case a: Int =>
2525 a
2626 case _ =>
2727 0
2828 }
2929
3030
3131 func tryGetStringExternal (address,key) = match getString(address, key) {
3232 case a: String =>
3333 a
3434 case _ =>
3535 ""
3636 }
3737
3838
3939 func getOracle () = Address(fromBase58String(tryGetString("static_oracleAddress")))
4040
4141
4242 func getItemsAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), "static_itemsAddress")))
4343
4444
4545 func asString (value) = match value {
4646 case string: String =>
4747 string
4848 case _ =>
4949 throw("wrong type, expected: String")
5050 }
5151
5252
5353 func asInt (value) = match value {
5454 case int: Int =>
5555 int
5656 case _ =>
5757 throw("wrong type, expected: Int")
5858 }
5959
6060
6161 func itemIsInCoolDown (artefactName,artefactId) = {
6262 let unstakeHeightLast = tryGetInteger(keyUnstakeHeight(artefactName, artefactId))
6363 let cooldownPeriod = 240
6464 if ((height > (unstakeHeightLast + cooldownPeriod)))
6565 then false
6666 else true
6767 }
6868
6969
7070 @Callable(i)
7171 func configureOracle (oracle) = if ((i.caller != this))
7272 then throw("admin only")
7373 else [StringEntry("static_oracleAddress", oracle)]
7474
7575
7676
7777 @Callable(i)
7878 func stakeItem () = if (!(if ((size(i.payments) == 1))
7979 then (i.payments[0].amount == 1)
8080 else false))
8181 then throw("Invalid payment")
8282 else {
8383 let assetId = value(i.payments[0].assetId)
8484 let artefactName = asString(invoke(getItemsAddress(), "checkArtefactDetails", [toBase58String(assetId)], nil))
8585 if ((artefactName == artefactName))
8686 then if (!(containsElement(stakeable, artefactName)))
8787 then throw("You can't stake this artafect")
8888 else if (itemIsInCoolDown(artefactName, toBase58String(assetId)))
8989 then throw("Item can't be staked yet, it's in cooldown")
9090 else {
9191 let invoker = toString(i.caller)
9292 let artefactId = tryGetString(keyArtefactOwner(artefactName, invoker))
9393 if ((artefactId != ""))
9494 then throw(("You are already staking " + artefactName))
9595 else {
9696 let boostDuck = if ((artefactName == "ART-LAKE"))
9797 then invoke(getItemsAddress(), "manipulateBoostAccount", [2, invoker], nil)
9898 else if ((artefactName == "ART-XTREE"))
9999 then invoke(getItemsAddress(), "manipulateBoostAccount", [3, invoker], nil)
100100 else nil
101101 if ((boostDuck == boostDuck))
102102 then [StringEntry(keyArtefactOwner(artefactName, invoker), toBase58String(assetId))]
103103 else throw("Strict value is not equal to itself.")
104104 }
105105 }
106106 else throw("Strict value is not equal to itself.")
107107 }
108108
109109
110110
111111 @Callable(i)
112112 func unstakeItem (artefactName) = if (!(containsElement(stakeable, artefactName)))
113113 then throw("This artefact doesn't exist")
114114 else {
115115 let invoker = toString(i.caller)
116116 let artefactId = tryGetString(keyArtefactOwner(artefactName, invoker))
117117 if ((artefactId == "ART-XSOCK"))
118118 then throw("You can not unstake ART-XSOCK anymore")
119119 else if ((artefactId == ""))
120120 then throw(("You didnt stake " + artefactName))
121121 else {
122122 let boostDuck = if ((artefactName == "ART-LAKE"))
123123 then invoke(getItemsAddress(), "manipulateBoostAccount", [-2, invoker], nil)
124124 else if ((artefactName == "ART-XTREE"))
125125 then invoke(getItemsAddress(), "manipulateBoostAccount", [-3, invoker], nil)
126126 else nil
127127 if ((boostDuck == boostDuck))
128128 then [IntegerEntry(keyUnstakeHeight(artefactName, artefactId), height), ScriptTransfer(i.caller, 1, fromBase58String(artefactId)), DeleteEntry(keyArtefactOwner(artefactName, invoker))]
129129 else throw("Strict value is not equal to itself.")
130130 }
131131 }
132132
133133
134134
135135 @Callable(i)
136136 func oneTimeUseFeed () = if (!(if ((size(i.payments) == 1))
137137 then (i.payments[0].amount == 1)
138138 else false))
139139 then throw("Invalid payment")
140140 else {
141141 let assetId = value(i.payments[0].assetId)
142142 let artefactName = asString(invoke(getItemsAddress(), "checkArtefactDetails", [toBase58String(assetId)], nil))
143143 if ((artefactName == artefactName))
144144 then if ((artefactName != "ART-FEED10"))
145145 then throw("You can't use this artafect to earn feedlimit!")
146146 else {
147147 let invoker = toString(i.caller)
148-[IntegerEntry(keyFeedLimit(invoker), (tryGetInteger(keyFeedLimit(invoker)) + 10))]
148+[IntegerEntry(keyFeedLimit(invoker), (tryGetInteger(keyFeedLimit(invoker)) + 10)), Burn(assetId, 1)]
149149 }
150150 else throw("Strict value is not equal to itself.")
151151 }
152152
153153
154154 @Verifier(tx)
155155 func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
156156

github/deemru/w8io/6500d08 
181.03 ms