tx · B7h3crzBdA83Y2C386uq33ZAbSucT2J5fL87YWLgNv2T

3P7GafyRyfQu58o6iQk5fHbkgVkQwVNPJoQ:  -0.01400000 Waves

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

{ "type": 13, "id": "B7h3crzBdA83Y2C386uq33ZAbSucT2J5fL87YWLgNv2T", "fee": 1400000, "feeAssetId": null, "timestamp": 1650274613047, "version": 2, "chainId": 87, "sender": "3P7GafyRyfQu58o6iQk5fHbkgVkQwVNPJoQ", "senderPublicKey": "omvWsTsb3YXewGPiQajyCtwYiFFWpzwwUzRwFnPaj6A", "proofs": [ "4up9JNcnatmKDq1oGvm5Hfax63HKN7X2bnZaU5jJ8KdjuLNzUCUQvRFLmc1CGiKLDWCtnFBbLNCbKBXVkxnLpSAF" ], "script": "base64:AAIFAAAAAAAAAB4IAhIECgIICBIAEgMKAQgSAwoBCBIDCgEIEgMKAQgAAAAQAQAAAAhrZXlPd25lcgAAAAEAAAALZHVja0hvdXNlSWQJAAEsAAAAAgUAAAALZHVja0hvdXNlSWQCAAAABl9vd25lcgEAAAAMa2V5RHVja0hvdXNlAAAAAQAAAAZkdWNrSWQJAAEsAAAAAgUAAAAGZHVja0lkAgAAAAtfZHVja19ob3VzZQEAAAAXb2NjdXBpZWRTcG90c0R1Y2tzSG91c2UAAAABAAAAC2R1Y2tIb3VzZUlkCQABLAAAAAIFAAAAC2R1Y2tIb3VzZUlkAgAAAA1fZmlsbGVkX3Nwb3RzAQAAABR0cnlHZXRTdHJpbmdFeHRlcm5hbAAAAAIAAAAHYWRkcmVzcwAAAANrZXkEAAAAByRtYXRjaDAJAAQdAAAAAgUAAAAHYWRkcmVzcwUAAAADa2V5AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAAZTdHJpbmcEAAAAAWEFAAAAByRtYXRjaDAFAAAAAWECAAAAAAEAAAAMdHJ5R2V0U3RyaW5nAAAAAQAAAANrZXkJAQAAABR0cnlHZXRTdHJpbmdFeHRlcm5hbAAAAAIFAAAABHRoaXMFAAAAA2tleQEAAAANdHJ5R2V0SW50ZWdlcgAAAAEAAAADa2V5BAAAAAckbWF0Y2gwCQAEGgAAAAIFAAAABHRoaXMFAAAAA2tleQMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAADSW50BAAAAAFiBQAAAAckbWF0Y2gwBQAAAAFiAAAAAAAAAAAAAQAAAAhhc1N0cmluZwAAAAEAAAAFdmFsdWUEAAAAByRtYXRjaDAFAAAABXZhbHVlAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAAZTdHJpbmcEAAAABnN0cmluZwUAAAAHJG1hdGNoMAUAAAAGc3RyaW5nCQAAAgAAAAECAAAAHHdyb25nIHR5cGUsIGV4cGVjdGVkOiBTdHJpbmcBAAAABWFzSW50AAAAAQAAAAV2YWx1ZQQAAAAHJG1hdGNoMAUAAAAFdmFsdWUDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAA0ludAQAAAADaW50BQAAAAckbWF0Y2gwBQAAAANpbnQJAAACAAAAAQIAAAAZd3JvbmcgdHlwZSwgZXhwZWN0ZWQ6IEludAEAAAAJZ2V0T3JhY2xlAAAAAAkBAAAAB0FkZHJlc3MAAAABCQACWQAAAAEJAQAAAAx0cnlHZXRTdHJpbmcAAAABAgAAABRzdGF0aWNfb3JhY2xlQWRkcmVzcwEAAAAPZ2V0SXRlbXNBZGRyZXNzAAAAAAkBAAAAB0FkZHJlc3MAAAABCQACWQAAAAEJAQAAABR0cnlHZXRTdHJpbmdFeHRlcm5hbAAAAAIJAQAAAAlnZXRPcmFjbGUAAAAAAgAAABNzdGF0aWNfaXRlbXNBZGRyZXNzAQAAABFnZXRGYXJtaW5nQWRkcmVzcwAAAAAJAQAAAAdBZGRyZXNzAAAAAQkAAlkAAAABCQEAAAAUdHJ5R2V0U3RyaW5nRXh0ZXJuYWwAAAACCQEAAAAJZ2V0T3JhY2xlAAAAAAIAAAAVc3RhdGljX2Zhcm1pbmdBZGRyZXNzAQAAAA1nZXRFZ2dBc3NldElkAAAAAAkAAlkAAAABCQEAAAAUdHJ5R2V0U3RyaW5nRXh0ZXJuYWwAAAACCQEAAAAJZ2V0T3JhY2xlAAAAAAIAAAARc3RhdGljX2VnZ0Fzc2V0SWQBAAAACG1heER1Y2tzAAAAAAkBAAAADXRyeUdldEludGVnZXIAAAABAgAAAA9zdGF0aWNfbWF4RHVja3MBAAAACXN0YWtlQ2FsbAAAAAAJAQAAAAx0cnlHZXRTdHJpbmcAAAABAgAAABBzdGF0aWNfc3Rha2VDYWxsAQAAAAR0eXBlAAAAAAkBAAAADHRyeUdldFN0cmluZwAAAAECAAAAC3N0YXRpY190eXBlAQAAAAVib29zdAAAAAAJAQAAAA10cnlHZXRJbnRlZ2VyAAAAAQIAAAAMc3RhdGljX2Jvb3N0AAAABgAAAAFpAQAAAA9jb25maWd1cmVPcmFjbGUAAAACAAAABm9yYWNsZQAAAAR0eXBlAwkBAAAAAiE9AAAAAggFAAAAAWkAAAAGY2FsbGVyBQAAAAR0aGlzCQAAAgAAAAECAAAACmFkbWluIG9ubHkEAAAABXNldHVwAwkAAAAAAAACBQAAAAR0eXBlAgAAAAxBUlQtQklHSE9VU0UJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAICAAAADHN0YXRpY19ib29zdAAAAAAAAAAADwkABEwAAAAC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", "height": 3079122, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: GMWJniZEw57oCJitpaHmN6zvqt2yQvyY7NMzTPwRgzuK Next: FPnmuVsdireSazmMwU9kk1CCSeDyza4TAamsHQWHXLBN Diff:
OldNewDifferences
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 func keyOwner (duckHouseId) = (duckHouseId + "_owner")
5-
6-
7-func keyDuckOwner (duckId) = (duckId + "_duck_owner")
85
96
107 func keyDuckHouse (duckId) = (duckId + "_duck_house")
131128 then throw("This duckhouse is not yours!")
132129 else {
133130 let filledSpots = tryGetInteger(occupiedSpotsDucksHouse(duckHouseId))
134- if ((maxDucks() > filledSpots))
131+ if ((filledSpots == maxDucks()))
135132 then throw("No space in duck house left!")
136133 else {
137- let boostDuck = invoke(getItemsAddress(), "manipulateBoost", [boost(), toBase58String(assetId)], i.payments)
134+ let boostDuck = invoke(getItemsAddress(), "manipulateBoost", [boost(), toBase58String(assetId)], nil)
138135 if ((boostDuck == boostDuck))
139136 then {
140137 let stakeDuck = invoke(getFarmingAddress(), stakeCall(), nil, i.payments)
141138 if ((stakeDuck == stakeDuck))
142- then [StringEntry(keyDuckOwner(toBase58String(assetId)), address), IntegerEntry(occupiedSpotsDucksHouse(duckHouseId), (filledSpots + 1)), StringEntry(keyDuckHouse(toBase58String(assetId)), duckHouseId)]
139+ then [IntegerEntry(occupiedSpotsDucksHouse(duckHouseId), (filledSpots + 1)), StringEntry(keyDuckHouse(toBase58String(assetId)), duckHouseId)]
143140 else throw("Strict value is not equal to itself.")
144141 }
145142 else throw("Strict value is not equal to itself.")
151148
152149 @Callable(i)
153150 func unstakeDuck (asset) = {
154- let owner = tryGetString(keyDuckOwner(asset))
151+ let duckHouseId = tryGetString(keyDuckHouse(asset))
152+ let owner = tryGetString(keyOwner(duckHouseId))
155153 let address = toString(i.caller)
156154 if ((owner != address))
157155 then throw("Don't try to steal someone duck!")
159157 let unstakeDuckReward = asInt(invoke(getFarmingAddress(), "unstakeNFT", [asset], nil))
160158 if ((unstakeDuckReward == unstakeDuckReward))
161159 then {
162- let duckHouseId = tryGetString(keyDuckHouse(asset))
163160 let filledSpots = tryGetInteger(occupiedSpotsDucksHouse(duckHouseId))
164161 if ((filledSpots == 0))
165162 then throw("You aren't staking any ducks!")
166163 else {
167- let unboostDuck = invoke(getItemsAddress(), "manipulateBoost", [-(boost()), asset], i.payments)
164+ let unboostDuck = invoke(getItemsAddress(), "manipulateBoost", [-(boost()), asset], nil)
168165 if ((unboostDuck == unboostDuck))
169- then [ScriptTransfer(i.caller, unstakeDuckReward, getEggAssetId()), ScriptTransfer(i.caller, 1, fromBase58String(asset)), DeleteEntry(keyDuckOwner(asset)), IntegerEntry(occupiedSpotsDucksHouse(duckHouseId), (filledSpots - 1))]
166+ then [ScriptTransfer(i.caller, unstakeDuckReward, getEggAssetId()), ScriptTransfer(i.caller, 1, fromBase58String(asset)), DeleteEntry(keyDuckHouse(asset)), IntegerEntry(occupiedSpotsDucksHouse(duckHouseId), (filledSpots - 1))]
170167 else throw("Strict value is not equal to itself.")
171168 }
172169 }
178175
179176 @Callable(i)
180177 func claimDuckRewards (asset) = {
181- let owner = tryGetString(keyDuckOwner(asset))
178+ let duckHouseId = tryGetString(keyDuckHouse(asset))
179+ let owner = tryGetString(keyOwner(duckHouseId))
182180 let address = toString(i.caller)
183181 if ((owner != address))
184182 then throw("Don't try to steal someone eggs!")
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 func keyOwner (duckHouseId) = (duckHouseId + "_owner")
5-
6-
7-func keyDuckOwner (duckId) = (duckId + "_duck_owner")
85
96
107 func keyDuckHouse (duckId) = (duckId + "_duck_house")
118
129
1310 func occupiedSpotsDucksHouse (duckHouseId) = (duckHouseId + "_filled_spots")
1411
1512
1613 func tryGetStringExternal (address,key) = match getString(address, key) {
1714 case a: String =>
1815 a
1916 case _ =>
2017 ""
2118 }
2219
2320
2421 func tryGetString (key) = tryGetStringExternal(this, key)
2522
2623
2724 func tryGetInteger (key) = match getInteger(this, key) {
2825 case b: Int =>
2926 b
3027 case _ =>
3128 0
3229 }
3330
3431
3532 func asString (value) = match value {
3633 case string: String =>
3734 string
3835 case _ =>
3936 throw("wrong type, expected: String")
4037 }
4138
4239
4340 func asInt (value) = match value {
4441 case int: Int =>
4542 int
4643 case _ =>
4744 throw("wrong type, expected: Int")
4845 }
4946
5047
5148 func getOracle () = Address(fromBase58String(tryGetString("static_oracleAddress")))
5249
5350
5451 func getItemsAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), "static_itemsAddress")))
5552
5653
5754 func getFarmingAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), "static_farmingAddress")))
5855
5956
6057 func getEggAssetId () = fromBase58String(tryGetStringExternal(getOracle(), "static_eggAssetId"))
6158
6259
6360 func maxDucks () = tryGetInteger("static_maxDucks")
6461
6562
6663 func stakeCall () = tryGetString("static_stakeCall")
6764
6865
6966 func type () = tryGetString("static_type")
7067
7168
7269 func boost () = tryGetInteger("static_boost")
7370
7471
7572 @Callable(i)
7673 func configureOracle (oracle,type) = if ((i.caller != this))
7774 then throw("admin only")
7875 else {
7976 let setup = if ((type == "ART-BIGHOUSE"))
8077 then [IntegerEntry("static_boost", 15), IntegerEntry("static_maxDucks", 10), StringEntry("static_stakeCall", "stakeNFTWithoutPerch"), StringEntry("static_type", "ART-BIGHOUSE")]
8178 else if ((type == "ART-HOUSE"))
8279 then [IntegerEntry("static_boost", 30), IntegerEntry("static_maxDucks", 4), StringEntry("static_stakeCall", "stakeNFT"), StringEntry("static_type", "ART-HOUSE")]
8380 else throw("Unknown type!")
8481 ([StringEntry("static_oracleAddress", oracle)] ++ setup)
8582 }
8683
8784
8885
8986 @Callable(i)
9087 func stakeDuckHouse () = {
9188 let owner = toString(i.caller)
9289 let artefactPayment = value(i.payments[0])
9390 let artefactAssetId = toBase58String(value(artefactPayment.assetId))
9491 if ((artefactPayment.amount != 1))
9592 then throw("NFT is not attached")
9693 else {
9794 let artefactName = asString(invoke(getItemsAddress(), "checkArtefactDetails", [artefactAssetId], nil))
9895 if ((artefactName == artefactName))
9996 then if ((artefactName != type()))
10097 then throw("Wrong artefact")
10198 else [StringEntry(keyOwner(artefactAssetId), owner)]
10299 else throw("Strict value is not equal to itself.")
103100 }
104101 }
105102
106103
107104
108105 @Callable(i)
109106 func unstakeDuckHouse (duckHouseId) = {
110107 let caller = toString(i.caller)
111108 let duckHouseOwner = tryGetString(keyOwner(duckHouseId))
112109 if ((duckHouseOwner == ""))
113110 then throw("This duckhouse is not staked!")
114111 else if ((duckHouseOwner != caller))
115112 then throw("This duckhouse is not yours!")
116113 else if ((tryGetInteger(occupiedSpotsDucksHouse(duckHouseId)) != 0))
117114 then throw("Please first remove your ducks from the duckhouse")
118115 else [ScriptTransfer(i.caller, 1, fromBase58String(duckHouseId)), DeleteEntry(keyOwner(duckHouseId))]
119116 }
120117
121118
122119
123120 @Callable(i)
124121 func stakeDuck (duckHouseId) = {
125122 let assetId = value(value(i.payments[0]).assetId)
126123 let address = toString(i.caller)
127124 let duckHouseOwner = tryGetString(keyOwner(duckHouseId))
128125 if ((duckHouseOwner == ""))
129126 then throw("This duckhouse is not staked!")
130127 else if ((duckHouseOwner != address))
131128 then throw("This duckhouse is not yours!")
132129 else {
133130 let filledSpots = tryGetInteger(occupiedSpotsDucksHouse(duckHouseId))
134- if ((maxDucks() > filledSpots))
131+ if ((filledSpots == maxDucks()))
135132 then throw("No space in duck house left!")
136133 else {
137- let boostDuck = invoke(getItemsAddress(), "manipulateBoost", [boost(), toBase58String(assetId)], i.payments)
134+ let boostDuck = invoke(getItemsAddress(), "manipulateBoost", [boost(), toBase58String(assetId)], nil)
138135 if ((boostDuck == boostDuck))
139136 then {
140137 let stakeDuck = invoke(getFarmingAddress(), stakeCall(), nil, i.payments)
141138 if ((stakeDuck == stakeDuck))
142- then [StringEntry(keyDuckOwner(toBase58String(assetId)), address), IntegerEntry(occupiedSpotsDucksHouse(duckHouseId), (filledSpots + 1)), StringEntry(keyDuckHouse(toBase58String(assetId)), duckHouseId)]
139+ then [IntegerEntry(occupiedSpotsDucksHouse(duckHouseId), (filledSpots + 1)), StringEntry(keyDuckHouse(toBase58String(assetId)), duckHouseId)]
143140 else throw("Strict value is not equal to itself.")
144141 }
145142 else throw("Strict value is not equal to itself.")
146143 }
147144 }
148145 }
149146
150147
151148
152149 @Callable(i)
153150 func unstakeDuck (asset) = {
154- let owner = tryGetString(keyDuckOwner(asset))
151+ let duckHouseId = tryGetString(keyDuckHouse(asset))
152+ let owner = tryGetString(keyOwner(duckHouseId))
155153 let address = toString(i.caller)
156154 if ((owner != address))
157155 then throw("Don't try to steal someone duck!")
158156 else {
159157 let unstakeDuckReward = asInt(invoke(getFarmingAddress(), "unstakeNFT", [asset], nil))
160158 if ((unstakeDuckReward == unstakeDuckReward))
161159 then {
162- let duckHouseId = tryGetString(keyDuckHouse(asset))
163160 let filledSpots = tryGetInteger(occupiedSpotsDucksHouse(duckHouseId))
164161 if ((filledSpots == 0))
165162 then throw("You aren't staking any ducks!")
166163 else {
167- let unboostDuck = invoke(getItemsAddress(), "manipulateBoost", [-(boost()), asset], i.payments)
164+ let unboostDuck = invoke(getItemsAddress(), "manipulateBoost", [-(boost()), asset], nil)
168165 if ((unboostDuck == unboostDuck))
169- then [ScriptTransfer(i.caller, unstakeDuckReward, getEggAssetId()), ScriptTransfer(i.caller, 1, fromBase58String(asset)), DeleteEntry(keyDuckOwner(asset)), IntegerEntry(occupiedSpotsDucksHouse(duckHouseId), (filledSpots - 1))]
166+ then [ScriptTransfer(i.caller, unstakeDuckReward, getEggAssetId()), ScriptTransfer(i.caller, 1, fromBase58String(asset)), DeleteEntry(keyDuckHouse(asset)), IntegerEntry(occupiedSpotsDucksHouse(duckHouseId), (filledSpots - 1))]
170167 else throw("Strict value is not equal to itself.")
171168 }
172169 }
173170 else throw("Strict value is not equal to itself.")
174171 }
175172 }
176173
177174
178175
179176 @Callable(i)
180177 func claimDuckRewards (asset) = {
181- let owner = tryGetString(keyDuckOwner(asset))
178+ let duckHouseId = tryGetString(keyDuckHouse(asset))
179+ let owner = tryGetString(keyOwner(duckHouseId))
182180 let address = toString(i.caller)
183181 if ((owner != address))
184182 then throw("Don't try to steal someone eggs!")
185183 else {
186184 let claimRewards = asInt(invoke(getFarmingAddress(), "claimReward", [asset], nil))
187185 if ((claimRewards == claimRewards))
188186 then [ScriptTransfer(Address(fromBase58String(address)), claimRewards, getEggAssetId())]
189187 else throw("Strict value is not equal to itself.")
190188 }
191189 }
192190
193191

github/deemru/w8io/6500d08 
46.07 ms