tx · 9ynn9a6nrDZxqBcB8PAnGVy6kBPjSM53QMm7Ph2vPhF

3MtDn875i1WRCdCymHMcfCk94YT9ccJJouP:  -0.01500000 Waves

2024.10.03 20:05 [3310942] smart account 3MtDn875i1WRCdCymHMcfCk94YT9ccJJouP > SELF 0.00000000 Waves

{ "type": 13, "id": "9ynn9a6nrDZxqBcB8PAnGVy6kBPjSM53QMm7Ph2vPhF", "fee": 1500000, "feeAssetId": null, "timestamp": 1727975100126, "version": 2, "chainId": 84, "sender": "3MtDn875i1WRCdCymHMcfCk94YT9ccJJouP", "senderPublicKey": "HiVVS4DDgAz7hk7nPYxpMJFMeDwEspXQSDVs5npYHvDa", "proofs": [ "iHyYNa3srbkpRi8bS5ZcwuYF278oD2F83GNDWWSRvigRfMTJcmZ3PE8EacEXPtBNF7Ee96KyNRnTw42r28EdkBc" ], "script": "base64:AAIFAAAAAAAAAB8IAhIECgIICBIAEgMKAQgSBAoCCAgSAwoBCBIDCgEIAAAAIQEAAAAHZ2V0Qm9vbAAAAAEAAAADa2V5BAAAAAckbWF0Y2gwCQAEGwAAAAIFAAAABHRoaXMFAAAAA2tleQMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAHQm9vbGVhbgQAAAABYgUAAAAHJG1hdGNoMAUAAAABYgcBAAAACWlzVGVzdEVudgAAAAAJAQAAAAdnZXRCb29sAAAAAQIAAAAHVEVTVEVOVgEAAAAIa2V5T3duZXIAAAABAAAAC2R1Y2tIb3VzZUlkCQABLAAAAAIFAAAAC2R1Y2tIb3VzZUlkAgAAAAZfb3duZXIBAAAADGtleUR1Y2tIb3VzZQAAAAEAAAAGZHVja0lkCQABLAAAAAIFAAAABmR1Y2tJZAIAAAALX2R1Y2tfaG91c2UBAAAAF29jY3VwaWVkU3BvdHNEdWNrc0hvdXNlAAAAAQAAAAtkdWNrSG91c2VJZAkAASwAAAACBQAAAAtkdWNrSG91c2VJZAIAAAANX2ZpbGxlZF9zcG90cwEAAAANdHJ5R2V0Qm9vbGVhbgAAAAEAAAADa2V5BAAAAAckbWF0Y2gwCQAEIAAAAAEFAAAAA2tleQMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAHQm9vbGVhbgQAAAABYgUAAAAHJG1hdGNoMAUAAAABYgcBAAAAFHRyeUdldFN0cmluZ0V4dGVybmFsAAAAAgAAAAdhZGRyZXNzAAAAA2tleQQAAAAHJG1hdGNoMAkABB0AAAACBQAAAAdhZGRyZXNzBQAAAANrZXkDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAABlN0cmluZwQAAAABYQUAAAAHJG1hdGNoMAUAAAABYQIAAAAAAQAAAAx0cnlHZXRTdHJpbmcAAAABAAAAA2tleQkBAAAAFHRyeUdldFN0cmluZ0V4dGVybmFsAAAAAgUAAAAEdGhpcwUAAAADa2V5AQAAAA10cnlHZXRJbnRlZ2VyAAAAAQAAAANrZXkEAAAAByRtYXRjaDAJAAQaAAAAAgUAAAAEdGhpcwUAAAADa2V5AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAANJbnQEAAAAAWIFAAAAByRtYXRjaDAFAAAAAWIAAAAAAAAAAAABAAAACGFzU3RyaW5nAAAAAQAAAAV2YWx1ZQQAAAAHJG1hdGNoMAUAAAAFdmFsdWUDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAABlN0cmluZwQAAAAGc3RyaW5nBQAAAAckbWF0Y2gwBQAAAAZzdHJpbmcJAAACAAAAAQIAAAAcd3JvbmcgdHlwZSwgZXhwZWN0ZWQ6IFN0cmluZwEAAAAFYXNJbnQAAAABAAAABXZhbHVlBAAAAAckbWF0Y2gwBQAAAAV2YWx1ZQMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAADSW50BAAAAANpbnQFAAAAByRtYXRjaDAFAAAAA2ludAkAAAIAAAABAgAAABl3cm9uZyB0eXBlLCBleHBlY3RlZDogSW50AQAAABdzdGF0aWNLZXlfb3JhY2xlQWRkcmVzcwAAAAACAAAAFHN0YXRpY19vcmFjbGVBZGRyZXNzAQAAABZzdGF0aWNLZXlfaXRlbXNBZGRyZXNzAAAAAAIAAAATc3RhdGljX2l0ZW1zQWRkcmVzcwEAAAASc3RhdGljS2V5X2V4dHJhRmVlAAAAAAIAAAAPc3RhdGljX2V4dHJhRmVlAQAAABdzdGF0aWNLZXlfZmVlQWdncmVnYXRvcgAAAAACAAAAFHN0YXRpY19mZWVBZ2dyZWdhdG9yAQAAABRzdGF0aWNLZXlfZWdnQXNzZXRJZAAAAAACAAAAEXN0YXRpY19lZ2dBc3NldElkAQAAABhzdGF0aWNLZXlfZmFybWluZ0FkZHJlc3MAAAAAAgAAABhzdGF0aWNfZmFybWluZ0FkZHJlc3NOZXcBAAAAEnN0YXRpY0tleV9tYXhEdWNrcwAAAAACAAAAD3N0YXRpY19tYXhEdWNrcwEAAAAQc3RhdGljX3N0YWtlQ2FsbAAAAAACAAAACHN0YWtlTkZUAQAAABtzdGF0aWNLZXlfc3Rha2VXaXRob3V0UGVyY2gAAAAAAgAAABRzdGF0aWNfd2l0aG91dF9wZXJjaAEAAAAOc3RhdGljS2V5X3R5cGUAAAAAAgAAAAtzdGF0aWNfdHlwZQEAAAAPc3RhdGljS2V5X2Jvb3N0AAAAAAIAAAAMc3RhdGljX2Jvb3N0AQAAAAlnZXRPcmFjbGUAAAAACQEAAAAHQWRkcmVzcwAAAAEJAAJZAAAAAQkBAAAADHRyeUdldFN0cmluZwAAAAEJAQAAABdzdGF0aWNLZXlfb3JhY2xlQWRkcmVzcwAAAAABAAAAD2dldEl0ZW1zQWRkcmVzcwAAAAAJAQAAAAdBZGRyZXNzAAAAAQkAAlkAAAABCQEAAAAUdHJ5R2V0U3RyaW5nRXh0ZXJuYWwAAAACCQEAAAAJZ2V0T3JhY2xlAAAAAAkBAAAAFnN0YXRpY0tleV9pdGVtc0FkZHJlc3MAAAAAAQAAABFnZXRGYXJtaW5nQWRkcmVzcwAAAAAJAQAAAAdBZGRyZXNzAAAAAQkAAlkAAAABCQEAAAAUdHJ5R2V0U3RyaW5nRXh0ZXJuYWwAAAACCQEAAAAJZ2V0T3JhY2xlAAAAAAkBAAAAGHN0YXRpY0tleV9mYXJtaW5nQWRkcmVzcwAAAAABAAAADWdldEVnZ0Fzc2V0SWQAAAAACQACWQAAAAEJAQAAABR0cnlHZXRTdHJpbmdFeHRlcm5hbAAAAAIJAQAAAAlnZXRPcmFjbGUAAAAACQEAAAAUc3RhdGljS2V5X2VnZ0Fzc2V0SWQAAAAAAQAAABBnZXRGZWVBZ2dyZWdhdG9yAAAAAAkBAAAAB0FkZHJlc3MAAAABCQACWQAAAAEJAQAAABR0cnlHZXRTdHJpbmdFeHRlcm5hbAAAAAIJAQAAAAlnZXRPcmFjbGUAAAAACQEAAAAXc3RhdGljS2V5X2ZlZUFnZ3JlZ2F0b3IAAAAAAQAAAAhtYXhEdWNrcwAAAAAJAQAAAA10cnlHZXRJbnRlZ2VyAAAAAQkBAAAAEnN0YXRpY0tleV9tYXhEdWNrcwAAAAABAAAABHR5cGUAAAAACQEAAAAMdHJ5R2V0U3RyaW5nAAAAAQkBAAAADnN0YXRpY0tleV90eXBlAAAAAAEAAAAFYm9vc3QAAAAACQEAAAANdHJ5R2V0SW50ZWdlcgAAAAEJAQAAAA9zdGF0aWNLZXlfYm9vc3QAAAAAAQAAAAlpc0phY2twb3QAAAABAAAAB2Fzc2V0SWQJAAAAAAAAAgkBAAAACXRha2VSaWdodAAAAAIJAQAAAAV2YWx1ZQAAAAEICQEAAAAFdmFsdWUAAAABCQAD7AAAAAEFAAAAB2Fzc2V0SWQAAAAEbmFtZQAAAAAAAAAAAQIAAAABVQEAAAAWY2hlY2tBZGRpdGlvbmFsUGF5bWVudAAA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", "height": 3310942, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 13WojSu8gnZPbijG7TT5FLZiNAmzdjaDDBJDz34T9oMi Next: BK6BrLs1rEjEx1jFJPSEE3upcETqjtHsXefBMiZsYCZv Diff:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4+func getBool (key) = match getBoolean(this, key) {
5+ case b: Boolean =>
6+ b
7+ case _ =>
8+ false
9+}
10+
11+
12+func isTestEnv () = getBool("TESTENV")
13+
14+
415 func keyOwner (duckHouseId) = (duckHouseId + "_owner")
516
617
253264 }
254265
255266
267+@Verifier(tx)
268+func verify () = if (isTestEnv())
269+ then sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
270+ else {
271+ let firstUser = base58'6TdaXEfhnjYquvPf3yV7MFxt2CbgFmaqsvGwkKfXtKi4'
272+ let secondUser = base58'7DsP2WaMLocbHuUxux7pbXRjTrrZ1TFQPsi5QumS3gr8'
273+ let thirdUser = base58'BpFWP3p3JgYrrP45xfrKzeMcWMEXoinj4FVPPkUiA8D3'
274+ let firstUserSigned = if (sigVerify(tx.bodyBytes, tx.proofs[0], firstUser))
275+ then 1
276+ else if (sigVerify(tx.bodyBytes, tx.proofs[1], firstUser))
277+ then 1
278+ else if (sigVerify(tx.bodyBytes, tx.proofs[2], firstUser))
279+ then 1
280+ else 0
281+ let secondUserSigned = if (sigVerify(tx.bodyBytes, tx.proofs[0], secondUser))
282+ then 1
283+ else if (sigVerify(tx.bodyBytes, tx.proofs[1], secondUser))
284+ then 1
285+ else if (sigVerify(tx.bodyBytes, tx.proofs[2], secondUser))
286+ then 1
287+ else 0
288+ let thirdUserSigned = if (sigVerify(tx.bodyBytes, tx.proofs[0], thirdUser))
289+ then 1
290+ else if (sigVerify(tx.bodyBytes, tx.proofs[1], thirdUser))
291+ then 1
292+ else if (sigVerify(tx.bodyBytes, tx.proofs[2], thirdUser))
293+ then 1
294+ else 0
295+ let signaturesCount = ((firstUserSigned + secondUserSigned) + thirdUserSigned)
296+ match tx {
297+ case _ =>
298+ (signaturesCount >= 2)
299+ }
300+ }
301+
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4+func getBool (key) = match getBoolean(this, key) {
5+ case b: Boolean =>
6+ b
7+ case _ =>
8+ false
9+}
10+
11+
12+func isTestEnv () = getBool("TESTENV")
13+
14+
415 func keyOwner (duckHouseId) = (duckHouseId + "_owner")
516
617
718 func keyDuckHouse (duckId) = (duckId + "_duck_house")
819
920
1021 func occupiedSpotsDucksHouse (duckHouseId) = (duckHouseId + "_filled_spots")
1122
1223
1324 func tryGetBoolean (key) = match getBoolean(key) {
1425 case b: Boolean =>
1526 b
1627 case _ =>
1728 false
1829 }
1930
2031
2132 func tryGetStringExternal (address,key) = match getString(address, key) {
2233 case a: String =>
2334 a
2435 case _ =>
2536 ""
2637 }
2738
2839
2940 func tryGetString (key) = tryGetStringExternal(this, key)
3041
3142
3243 func tryGetInteger (key) = match getInteger(this, key) {
3344 case b: Int =>
3445 b
3546 case _ =>
3647 0
3748 }
3849
3950
4051 func asString (value) = match value {
4152 case string: String =>
4253 string
4354 case _ =>
4455 throw("wrong type, expected: String")
4556 }
4657
4758
4859 func asInt (value) = match value {
4960 case int: Int =>
5061 int
5162 case _ =>
5263 throw("wrong type, expected: Int")
5364 }
5465
5566
5667 func staticKey_oracleAddress () = "static_oracleAddress"
5768
5869
5970 func staticKey_itemsAddress () = "static_itemsAddress"
6071
6172
6273 func staticKey_extraFee () = "static_extraFee"
6374
6475
6576 func staticKey_feeAggregator () = "static_feeAggregator"
6677
6778
6879 func staticKey_eggAssetId () = "static_eggAssetId"
6980
7081
7182 func staticKey_farmingAddress () = "static_farmingAddressNew"
7283
7384
7485 func staticKey_maxDucks () = "static_maxDucks"
7586
7687
7788 func static_stakeCall () = "stakeNFT"
7889
7990
8091 func staticKey_stakeWithoutPerch () = "static_without_perch"
8192
8293
8394 func staticKey_type () = "static_type"
8495
8596
8697 func staticKey_boost () = "static_boost"
8798
8899
89100 func getOracle () = Address(fromBase58String(tryGetString(staticKey_oracleAddress())))
90101
91102
92103 func getItemsAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), staticKey_itemsAddress())))
93104
94105
95106 func getFarmingAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), staticKey_farmingAddress())))
96107
97108
98109 func getEggAssetId () = fromBase58String(tryGetStringExternal(getOracle(), staticKey_eggAssetId()))
99110
100111
101112 func getFeeAggregator () = Address(fromBase58String(tryGetStringExternal(getOracle(), staticKey_feeAggregator())))
102113
103114
104115 func maxDucks () = tryGetInteger(staticKey_maxDucks())
105116
106117
107118 func type () = tryGetString(staticKey_type())
108119
109120
110121 func boost () = tryGetInteger(staticKey_boost())
111122
112123
113124 func isJackpot (assetId) = (takeRight(value(value(assetInfo(assetId)).name), 1) == "U")
114125
115126
116127 func checkAdditionalPayment (payment) = if (isDefined(payment.assetId))
117128 then throw("WCAP: Please attach waves")
118129 else {
119130 let feeAmount = getIntegerValue(getOracle(), staticKey_extraFee())
120131 if ((payment.amount != feeAmount))
121132 then throw((("WCAP: Please attach exactly " + toString(feeAmount)) + " amount of wavelets"))
122133 else [ScriptTransfer(getFeeAggregator(), feeAmount, unit)]
123134 }
124135
125136
126137 func validateOwnerAndGetHouse (asset,i) = {
127138 let duckHouseId = tryGetString(keyDuckHouse(asset))
128139 let owner = tryGetString(keyOwner(duckHouseId))
129140 let address = toString(i.caller)
130141 if ((owner != address))
131142 then throw("Don't try to steal someone duck!")
132143 else duckHouseId
133144 }
134145
135146
136147 @Callable(i)
137148 func configureOracle (oracle,type) = if ((i.caller != this))
138149 then throw("admin only")
139150 else {
140151 let setup = if ((type == "ART-BIGHOUSE"))
141152 then [IntegerEntry(staticKey_boost(), 15), IntegerEntry(staticKey_maxDucks(), 10), BooleanEntry(staticKey_stakeWithoutPerch(), true)]
142153 else if ((type == "ART-HOUSE"))
143154 then [IntegerEntry(staticKey_boost(), 30), IntegerEntry(staticKey_maxDucks(), 4), BooleanEntry(staticKey_stakeWithoutPerch(), false)]
144155 else if ((type == "ART-XMAS_STBLE"))
145156 then [IntegerEntry(staticKey_boost(), 5), IntegerEntry(staticKey_maxDucks(), 6), BooleanEntry(staticKey_stakeWithoutPerch(), false)]
146157 else throw("Unknown type!")
147158 ([StringEntry(staticKey_oracleAddress(), oracle), StringEntry(staticKey_type(), type)] ++ setup)
148159 }
149160
150161
151162
152163 @Callable(i)
153164 func stakeDuckHouse () = {
154165 let owner = toString(i.caller)
155166 let artefactPayment = value(i.payments[0])
156167 let validPayment = checkAdditionalPayment(i.payments[1])
157168 let artefactAssetId = toBase58String(value(artefactPayment.assetId))
158169 if ((artefactPayment.amount != 1))
159170 then throw("NFT is not attached")
160171 else {
161172 let artefactName = asString(invoke(getItemsAddress(), "checkArtefactDetails", [artefactAssetId], nil))
162173 if ((artefactName == artefactName))
163174 then if ((artefactName != type()))
164175 then throw("Wrong artefact")
165176 else ([StringEntry(keyOwner(artefactAssetId), owner)] ++ validPayment)
166177 else throw("Strict value is not equal to itself.")
167178 }
168179 }
169180
170181
171182
172183 @Callable(i)
173184 func unstakeDuckHouse (duckHouseId) = {
174185 let caller = toString(i.caller)
175186 let duckHouseOwner = tryGetString(keyOwner(duckHouseId))
176187 let validPayment = checkAdditionalPayment(i.payments[0])
177188 if ((duckHouseOwner == ""))
178189 then throw("This duckhouse is not staked!")
179190 else if ((duckHouseOwner != caller))
180191 then throw("This duckhouse is not yours!")
181192 else if ((tryGetInteger(occupiedSpotsDucksHouse(duckHouseId)) != 0))
182193 then throw("Please first remove your ducks from the duckhouse")
183194 else ([ScriptTransfer(i.caller, 1, fromBase58String(duckHouseId)), DeleteEntry(keyOwner(duckHouseId))] ++ validPayment)
184195 }
185196
186197
187198
188199 @Callable(i)
189200 func stakeDuck (duckHouseId,JColor) = {
190201 let assetId = value(value(i.payments[1]).assetId)
191202 let address = toString(i.caller)
192203 let duckHouseOwner = tryGetString(keyOwner(duckHouseId))
193204 if ((duckHouseOwner == ""))
194205 then throw("This duckhouse is not staked!")
195206 else if ((duckHouseOwner != address))
196207 then throw("This duckhouse is not yours!")
197208 else {
198209 let filledSpots = tryGetInteger(occupiedSpotsDucksHouse(duckHouseId))
199210 if ((filledSpots == maxDucks()))
200211 then throw("No space in duck house left!")
201212 else {
202213 let boostDuck = invoke(getItemsAddress(), "manipulateBoost", [boost(), toBase58String(assetId)], nil)
203214 if ((boostDuck == boostDuck))
204215 then {
205216 let stakeDuck = invoke(getFarmingAddress(), static_stakeCall(), [JColor, true, tryGetBoolean(staticKey_stakeWithoutPerch())], i.payments)
206217 if ((stakeDuck == stakeDuck))
207218 then [IntegerEntry(occupiedSpotsDucksHouse(duckHouseId), (filledSpots + 1)), StringEntry(keyDuckHouse(toBase58String(assetId)), duckHouseId)]
208219 else throw("Strict value is not equal to itself.")
209220 }
210221 else throw("Strict value is not equal to itself.")
211222 }
212223 }
213224 }
214225
215226
216227
217228 @Callable(i)
218229 func unstakeDuck (asset) = {
219230 let duckHouseId = validateOwnerAndGetHouse(asset, i)
220231 if ((duckHouseId == duckHouseId))
221232 then {
222233 let unstakeDuckReward = asInt(invoke(getFarmingAddress(), "unstakeNFT", [asset], i.payments))
223234 if ((unstakeDuckReward == unstakeDuckReward))
224235 then {
225236 let filledSpots = tryGetInteger(occupiedSpotsDucksHouse(duckHouseId))
226237 if ((filledSpots == 0))
227238 then throw("You aren't staking any ducks!")
228239 else {
229240 let unboostDuck = invoke(getItemsAddress(), "manipulateBoost", [-(boost()), asset], nil)
230241 if ((unboostDuck == unboostDuck))
231242 then [ScriptTransfer(i.caller, unstakeDuckReward, getEggAssetId()), ScriptTransfer(i.caller, 1, fromBase58String(asset)), DeleteEntry(keyDuckHouse(asset)), IntegerEntry(occupiedSpotsDucksHouse(duckHouseId), (filledSpots - 1))]
232243 else throw("Strict value is not equal to itself.")
233244 }
234245 }
235246 else throw("Strict value is not equal to itself.")
236247 }
237248 else throw("Strict value is not equal to itself.")
238249 }
239250
240251
241252
242253 @Callable(i)
243254 func claimDuckRewards (asset) = {
244255 let owner = validateOwnerAndGetHouse(asset, i)
245256 if ((owner == owner))
246257 then {
247258 let claimRewards = asInt(invoke(getFarmingAddress(), "claimReward", [asset], i.payments))
248259 if ((claimRewards == claimRewards))
249260 then [ScriptTransfer(i.caller, claimRewards, getEggAssetId())]
250261 else throw("Strict value is not equal to itself.")
251262 }
252263 else throw("Strict value is not equal to itself.")
253264 }
254265
255266
267+@Verifier(tx)
268+func verify () = if (isTestEnv())
269+ then sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
270+ else {
271+ let firstUser = base58'6TdaXEfhnjYquvPf3yV7MFxt2CbgFmaqsvGwkKfXtKi4'
272+ let secondUser = base58'7DsP2WaMLocbHuUxux7pbXRjTrrZ1TFQPsi5QumS3gr8'
273+ let thirdUser = base58'BpFWP3p3JgYrrP45xfrKzeMcWMEXoinj4FVPPkUiA8D3'
274+ let firstUserSigned = if (sigVerify(tx.bodyBytes, tx.proofs[0], firstUser))
275+ then 1
276+ else if (sigVerify(tx.bodyBytes, tx.proofs[1], firstUser))
277+ then 1
278+ else if (sigVerify(tx.bodyBytes, tx.proofs[2], firstUser))
279+ then 1
280+ else 0
281+ let secondUserSigned = if (sigVerify(tx.bodyBytes, tx.proofs[0], secondUser))
282+ then 1
283+ else if (sigVerify(tx.bodyBytes, tx.proofs[1], secondUser))
284+ then 1
285+ else if (sigVerify(tx.bodyBytes, tx.proofs[2], secondUser))
286+ then 1
287+ else 0
288+ let thirdUserSigned = if (sigVerify(tx.bodyBytes, tx.proofs[0], thirdUser))
289+ then 1
290+ else if (sigVerify(tx.bodyBytes, tx.proofs[1], thirdUser))
291+ then 1
292+ else if (sigVerify(tx.bodyBytes, tx.proofs[2], thirdUser))
293+ then 1
294+ else 0
295+ let signaturesCount = ((firstUserSigned + secondUserSigned) + thirdUserSigned)
296+ match tx {
297+ case _ =>
298+ (signaturesCount >= 2)
299+ }
300+ }
301+

github/deemru/w8io/026f985 
42.96 ms