tx · 5jvEsJjCghwWZoMna6mi9UkXMrHNKq3PRN2NSMVSWz7R

3PFfetFUtrnxjv8Q66t9U5fqLFbyoFxzCQo:  -0.01000000 Waves

2022.04.30 22:11 [3097048] smart account 3PFfetFUtrnxjv8Q66t9U5fqLFbyoFxzCQo > SELF 0.00000000 Waves

{ "type": 13, "id": "5jvEsJjCghwWZoMna6mi9UkXMrHNKq3PRN2NSMVSWz7R", "fee": 1000000, "feeAssetId": null, "timestamp": 1651345904265, "version": 2, "chainId": 87, "sender": "3PFfetFUtrnxjv8Q66t9U5fqLFbyoFxzCQo", "senderPublicKey": "BWuWWmBJHo8KE9WfGzFmnn2sJwxdKxGxqy6UpnPB3ygn", "proofs": [ "3yCKZTAzGXms5uGWoWvbvUJ6Nc6hGaNJydrui65zNvoF3SFnXd3Fs44ugMbHcTpS13Fb8Ysrt5CgZtJcqD4zzDgg" ], "script": "base64:AAIFAAAAAAAAAB4IAhIECgIICBIAEgMKAQgSAwoBCBIDCgEIEgMKAQgAAAASAQAAAAhrZXlPd25lcgAAAAEAAAALZHVja0hvdXNlSWQJAAEsAAAAAgUAAAALZHVja0hvdXNlSWQCAAAABl9vd25lcgEAAAAMa2V5RHVja0hvdXNlAAAAAQAAAAZkdWNrSWQJAAEsAAAAAgUAAAAGZHVja0lkAgAAAAtfZHVja19ob3VzZQEAAAAXb2NjdXBpZWRTcG90c0R1Y2tzSG91c2UAAAABAAAAC2R1Y2tIb3VzZUlkCQABLAAAAAIFAAAAC2R1Y2tIb3VzZUlkAgAAAA1fZmlsbGVkX3Nwb3RzAQAAABR0cnlHZXRTdHJpbmdFeHRlcm5hbAAAAAIAAAAHYWRkcmVzcwAAAANrZXkEAAAAByRtYXRjaDAJAAQdAAAAAgUAAAAHYWRkcmVzcwUAAAADa2V5AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAAZTdHJpbmcEAAAAAWEFAAAAByRtYXRjaDAFAAAAAWECAAAAAAEAAAAMdHJ5R2V0U3RyaW5nAAAAAQAAAANrZXkJAQAAABR0cnlHZXRTdHJpbmdFeHRlcm5hbAAAAAIFAAAABHRoaXMFAAAAA2tleQEAAAANdHJ5R2V0SW50ZWdlcgAAAAEAAAADa2V5BAAAAAckbWF0Y2gwCQAEGgAAAAIFAAAABHRoaXMFAAAAA2tleQMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAADSW50BAAAAAFiBQAAAAckbWF0Y2gwBQAAAAFiAAAAAAAAAAAAAQAAAAhhc1N0cmluZwAAAAEAAAAFdmFsdWUEAAAAByRtYXRjaDAFAAAABXZhbHVlAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAAZTdHJpbmcEAAAABnN0cmluZwUAAAAHJG1hdGNoMAUAAAAGc3RyaW5nCQAAAgAAAAECAAAAHHdyb25nIHR5cGUsIGV4cGVjdGVkOiBTdHJpbmcBAAAABWFzSW50AAAAAQAAAAV2YWx1ZQQAAAAHJG1hdGNoMAUAAAAFdmFsdWUDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAA0ludAQAAAADaW50BQAAAAckbWF0Y2gwBQAAAANpbnQJAAACAAAAAQIAAAAZd3JvbmcgdHlwZSwgZXhwZWN0ZWQ6IEludAEAAAAJZ2V0T3JhY2xlAAAAAAkBAAAAB0FkZHJlc3MAAAABCQACWQAAAAEJAQAAAAx0cnlHZXRTdHJpbmcAAAABAgAAABRzdGF0aWNfb3JhY2xlQWRkcmVzcwEAAAAPZ2V0SXRlbXNBZGRyZXNzAAAAAAkBAAAAB0FkZHJlc3MAAAABCQACWQAAAAEJAQAAABR0cnlHZXRTdHJpbmdFeHRlcm5hbAAAAAIJAQAAAAlnZXRPcmFjbGUAAAAAAgAAABNzdGF0aWNfaXRlbXNBZGRyZXNzAQAAABFnZXRGYXJtaW5nQWRkcmVzcwAAAAAJAQAAAAdBZGRyZXNzAAAAAQkAAlkAAAABCQEAAAAUdHJ5R2V0U3RyaW5nRXh0ZXJuYWwAAAACCQEAAAAJZ2V0T3JhY2xlAAAAAAIAAAAVc3RhdGljX2Zhcm1pbmdBZGRyZXNzAQAAAA1nZXRFZ2dBc3NldElkAAAAAAkAAlkAAAABCQEAAAAUdHJ5R2V0U3RyaW5nRXh0ZXJuYWwAAAACCQEAAAAJZ2V0T3JhY2xlAAAAAAIAAAARc3RhdGljX2VnZ0Fzc2V0SWQBAAAACG1heER1Y2tzAAAAAAkBAAAADXRyeUdldEludGVnZXIAAAABAgAAAA9zdGF0aWNfbWF4RHVja3MBAAAACXN0YWtlQ2FsbAAAAAAJAQAAAAx0cnlHZXRTdHJpbmcAAAABAgAAABBzdGF0aWNfc3Rha2VDYWxsAQAAAApKU3Rha2VDYWxsAAAAAAkBAAAADHRyeUdldFN0cmluZwAAAAECAAAAEXN0YXRpY19KU3Rha2VDYWxsAQAAAAR0eXBlAAAAAAkBAAAADHRyeUdldFN0cmluZwAAAAECAAAAC3N0YXRpY190eXBlAQAAAAVib29zdAAAAAAJAQAAAA10cnlHZXRJbnRlZ2VyAAAAAQIAAAAMc3RhdGljX2Jvb3N0AQAAAAlpc0phY2twb3QAAAABAAAAB2Fzc2V0SWQJAAAAAAAAAgkBAAAACXRha2VSaWdodAAAAAIJAQAAAAV2YWx1ZQAAAAEICQEAAAAFdmFsdWUAAAABCQAD7AAAAAEFAAAAB2Fzc2V0SWQAAAAEbmFtZQAAAAAAAAAAAQIAAAABVQAAAAYAAAABaQEAAAAPY29uZmlndXJlT3JhY2xl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", "height": 3097048, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: none Next: F9qVjZSfRbJ1QWdoVHj7dr28LdcuH6z1H4oDzyoXcaHx Full:
OldNewDifferences
1-# no script
1+{-# STDLIB_VERSION 5 #-}
2+{-# SCRIPT_TYPE ACCOUNT #-}
3+{-# CONTENT_TYPE DAPP #-}
4+func keyOwner (duckHouseId) = (duckHouseId + "_owner")
5+
6+
7+func keyDuckHouse (duckId) = (duckId + "_duck_house")
8+
9+
10+func occupiedSpotsDucksHouse (duckHouseId) = (duckHouseId + "_filled_spots")
11+
12+
13+func tryGetStringExternal (address,key) = match getString(address, key) {
14+ case a: String =>
15+ a
16+ case _ =>
17+ ""
18+}
19+
20+
21+func tryGetString (key) = tryGetStringExternal(this, key)
22+
23+
24+func tryGetInteger (key) = match getInteger(this, key) {
25+ case b: Int =>
26+ b
27+ case _ =>
28+ 0
29+}
30+
31+
32+func asString (value) = match value {
33+ case string: String =>
34+ string
35+ case _ =>
36+ throw("wrong type, expected: String")
37+}
38+
39+
40+func asInt (value) = match value {
41+ case int: Int =>
42+ int
43+ case _ =>
44+ throw("wrong type, expected: Int")
45+}
46+
47+
48+func getOracle () = Address(fromBase58String(tryGetString("static_oracleAddress")))
49+
50+
51+func getItemsAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), "static_itemsAddress")))
52+
53+
54+func getFarmingAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), "static_farmingAddress")))
55+
56+
57+func getEggAssetId () = fromBase58String(tryGetStringExternal(getOracle(), "static_eggAssetId"))
58+
59+
60+func maxDucks () = tryGetInteger("static_maxDucks")
61+
62+
63+func stakeCall () = tryGetString("static_stakeCall")
64+
65+
66+func JStakeCall () = tryGetString("static_JStakeCall")
67+
68+
69+func type () = tryGetString("static_type")
70+
71+
72+func boost () = tryGetInteger("static_boost")
73+
74+
75+func isJackpot (assetId) = (takeRight(value(value(assetInfo(assetId)).name), 1) == "U")
76+
77+
78+@Callable(i)
79+func configureOracle (oracle,type) = if ((i.caller != this))
80+ then throw("admin only")
81+ else {
82+ let setup = if ((type == "ART-BIGHOUSE"))
83+ then [IntegerEntry("static_boost", 15), IntegerEntry("static_maxDucks", 10), StringEntry("static_stakeCall", "stakeNFTWithoutPerch"), StringEntry("static_type", "ART-BIGHOUSE"), StringEntry("static_JStakeCall", "stakeNFTWithoutPerch")]
84+ else if ((type == "ART-HOUSE"))
85+ then [IntegerEntry("static_boost", 30), IntegerEntry("static_maxDucks", 4), StringEntry("static_stakeCall", "stakeNFT"), StringEntry("static_type", "ART-HOUSE"), StringEntry("static_JStakeCall", "stakeJackpot")]
86+ else throw("Unknown type!")
87+ ([StringEntry("static_oracleAddress", oracle)] ++ setup)
88+ }
89+
90+
91+
92+@Callable(i)
93+func stakeDuckHouse () = {
94+ let owner = toString(i.caller)
95+ let artefactPayment = value(i.payments[0])
96+ let artefactAssetId = toBase58String(value(artefactPayment.assetId))
97+ if ((artefactPayment.amount != 1))
98+ then throw("NFT is not attached")
99+ else {
100+ let artefactName = asString(invoke(getItemsAddress(), "checkArtefactDetails", [artefactAssetId], nil))
101+ if ((artefactName == artefactName))
102+ then if ((artefactName != type()))
103+ then throw("Wrong artefact")
104+ else [StringEntry(keyOwner(artefactAssetId), owner)]
105+ else throw("Strict value is not equal to itself.")
106+ }
107+ }
108+
109+
110+
111+@Callable(i)
112+func unstakeDuckHouse (duckHouseId) = {
113+ let caller = toString(i.caller)
114+ let duckHouseOwner = tryGetString(keyOwner(duckHouseId))
115+ if ((duckHouseOwner == ""))
116+ then throw("This duckhouse is not staked!")
117+ else if ((duckHouseOwner != caller))
118+ then throw("This duckhouse is not yours!")
119+ else if ((tryGetInteger(occupiedSpotsDucksHouse(duckHouseId)) != 0))
120+ then throw("Please first remove your ducks from the duckhouse")
121+ else [ScriptTransfer(i.caller, 1, fromBase58String(duckHouseId)), DeleteEntry(keyOwner(duckHouseId))]
122+ }
123+
124+
125+
126+@Callable(i)
127+func stakeDuck (duckHouseId) = {
128+ let assetId = value(value(i.payments[0]).assetId)
129+ let address = toString(i.caller)
130+ let duckHouseOwner = tryGetString(keyOwner(duckHouseId))
131+ if ((duckHouseOwner == ""))
132+ then throw("This duckhouse is not staked!")
133+ else if ((duckHouseOwner != address))
134+ then throw("This duckhouse is not yours!")
135+ else {
136+ let filledSpots = tryGetInteger(occupiedSpotsDucksHouse(duckHouseId))
137+ if ((filledSpots == maxDucks()))
138+ then throw("No space in duck house left!")
139+ else {
140+ let boostDuck = invoke(getItemsAddress(), "manipulateBoost", [boost(), toBase58String(assetId)], nil)
141+ if ((boostDuck == boostDuck))
142+ then {
143+ let stakeDuck = if (isJackpot(assetId))
144+ then invoke(getFarmingAddress(), stakeCall(), nil, i.payments)
145+ else invoke(getFarmingAddress(), JStakeCall(), nil, i.payments)
146+ if ((stakeDuck == stakeDuck))
147+ then [IntegerEntry(occupiedSpotsDucksHouse(duckHouseId), (filledSpots + 1)), StringEntry(keyDuckHouse(toBase58String(assetId)), duckHouseId)]
148+ else throw("Strict value is not equal to itself.")
149+ }
150+ else throw("Strict value is not equal to itself.")
151+ }
152+ }
153+ }
154+
155+
156+
157+@Callable(i)
158+func unstakeDuck (asset) = {
159+ let duckHouseId = tryGetString(keyDuckHouse(asset))
160+ let owner = tryGetString(keyOwner(duckHouseId))
161+ let address = toString(i.caller)
162+ if ((owner != address))
163+ then throw("Don't try to steal someone duck!")
164+ else {
165+ let unstakeDuckReward = if (isJackpot(fromBase58String(asset)))
166+ then asInt(invoke(getFarmingAddress(), "unstakeNFT", [asset], nil))
167+ else asInt(invoke(getFarmingAddress(), "unstakeJackpot", [asset], nil))
168+ if ((unstakeDuckReward == unstakeDuckReward))
169+ then {
170+ let filledSpots = tryGetInteger(occupiedSpotsDucksHouse(duckHouseId))
171+ if ((filledSpots == 0))
172+ then throw("You aren't staking any ducks!")
173+ else {
174+ let unboostDuck = invoke(getItemsAddress(), "manipulateBoost", [-(boost()), asset], nil)
175+ if ((unboostDuck == unboostDuck))
176+ then [ScriptTransfer(i.caller, unstakeDuckReward, getEggAssetId()), ScriptTransfer(i.caller, 1, fromBase58String(asset)), DeleteEntry(keyDuckHouse(asset)), IntegerEntry(occupiedSpotsDucksHouse(duckHouseId), (filledSpots - 1))]
177+ else throw("Strict value is not equal to itself.")
178+ }
179+ }
180+ else throw("Strict value is not equal to itself.")
181+ }
182+ }
183+
184+
185+
186+@Callable(i)
187+func claimDuckRewards (asset) = {
188+ let claimRewards = asInt(invoke(getFarmingAddress(), "claimReward", [asset], nil))
189+ if ((claimRewards == claimRewards))
190+ then nil
191+ else throw("Strict value is not equal to itself.")
192+ }
193+
194+

github/deemru/w8io/3ef1775 
27.94 ms