tx · ErSp4DQKVJdaVU7kCjGyCBr4isxhGLVtNsVBdtTzqHKG

3MrLvyiZvdkfyRa51SVXBYykMsCe1ASZMVL:  -0.01800000 Waves

2024.10.03 14:08 [3310593] smart account 3MrLvyiZvdkfyRa51SVXBYykMsCe1ASZMVL > SELF 0.00000000 Waves

{ "type": 13, "id": "ErSp4DQKVJdaVU7kCjGyCBr4isxhGLVtNsVBdtTzqHKG", "fee": 1800000, "feeAssetId": null, "timestamp": 1727953755485, "version": 2, "chainId": 84, "sender": "3MrLvyiZvdkfyRa51SVXBYykMsCe1ASZMVL", "senderPublicKey": "HaDYDZ6mRDE3nPyxhQvHMhS3eEt5GoKNRsL53fiRybJD", "proofs": [ "4YfcAPE9cAdezLgyeaNArMKwskETBsMhUje6kkV5ok7gdvWiPErbassrTpFrgcXUEfy74g9BD4PCmjpLJ88iPZG1" ], "script": "base64:AAIFAAAAAAAAABcIAhIDCgEIEg4KDAgBAQgIBAQIAQEBCAAAACkBAAAAFHRyeUdldFN0cmluZ0V4dGVybmFsAAAAAgAAAAdhZGRyZXNzAAAAA2tleQQAAAAHJG1hdGNoMAkABB0AAAACBQAAAAdhZGRyZXNzBQAAAANrZXkDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAABlN0cmluZwQAAAABYQUAAAAHJG1hdGNoMAUAAAABYQIAAAAAAQAAAAx0cnlHZXRTdHJpbmcAAAABAAAAA2tleQkBAAAAFHRyeUdldFN0cmluZ0V4dGVybmFsAAAAAgUAAAAEdGhpcwUAAAADa2V5AQAAAAlnZXRPcmFjbGUAAAAACQEAAAAHQWRkcmVzcwAAAAEJAAJZAAAAAQkBAAAADHRyeUdldFN0cmluZwAAAAECAAAAFHN0YXRpY19vcmFjbGVBZGRyZXNzAQAAABJnZXRDZk1hc3RlckFkZHJlc3MAAAAACQEAAAAHQWRkcmVzcwAAAAEJAAJZAAAAAQkBAAAAFHRyeUdldFN0cmluZ0V4dGVybmFsAAAAAgkBAAAACWdldE9yYWNsZQAAAAACAAAAFnN0YXRpY19jZk1hc3RlckFkZHJlc3MBAAAAEGdldEJhY2tlbmRQdWJLZXkAAAAACQACWQAAAAEJAQAAABFAZXh0ck5hdGl2ZSgxMDUzKQAAAAIJAQAAAAlnZXRPcmFjbGUAAAAAAgAAABRzdGF0aWNfYmFja2VuZFB1YktleQEAAAAKZ2V0TWF4RGlmZgAAAAAJAQAAABFAZXh0ck5hdGl2ZSgxMDUwKQAAAAIJAQAAAAlnZXRPcmFjbGUAAAAAAgAAABNzdGF0aWNfbWF4UHJveHlEaWZmAQAAABlnZXRUdXJ0bGVJbmN1YmF0b3JBZGRyZXNzAAAAAAkBAAAAB0FkZHJlc3MAAAABCQACWQAAAAEJAQAAABR0cnlHZXRTdHJpbmdFeHRlcm5hbAAAAAIJAQAAAAlnZXRPcmFjbGUAAAAAAgAAAB1zdGF0aWNfdHVydGxlSW5jdWJhdG9yQWRkcmVzcwEAAAAXZ2V0VHVydGxlQnJlZWRlckFkZHJlc3MAAAAACQEAAAAHQWRkcmVzcwAAAAEJAAJZAAAAAQkBAAAAFHRyeUdldFN0cmluZ0V4dGVybmFsAAAAAgkBAAAACWdldE9yYWNsZQAAAAACAAAAG3N0YXRpY190dXJ0bGVCcmVlZGVyQWRkcmVzcwEAAAAPZ2V0SXRlbXNBZGRyZXNzAAAAAAkBAAAAB0FkZHJlc3MAAAABCQACWQAAAAEJAQAAABR0cnlHZXRTdHJpbmdFeHRlcm5hbAAAAAIJAQAAAAlnZXRPcmFjbGUAAAAAAgAAABNzdGF0aWNfaXRlbXNBZGRyZXNzAAAAAA9rVG90YWxMaXF1aWRpdHkCAAAAD3RvdGFsX2xpcXVpZGl0eQAAAAAMa0luaXRpYWxpemVkAgAAAAtJTklUSUFMSVpFRAAAAAATa0xpcXVpZGl0eVRocmVzaG9sZAIAAAATTElRVUlESVRZX1RIUkVTSE9MRAAAAAARa1RvdGFsU2hhcmVUb2tlbnMCAAAAEnRvdGFsX3NoYXJlX3Rva2VucwAAAAANa1NoYXJlQXNzZXRJZAIAAAAOU0hBUkVfQVNTRVRfSUQAAAAADmtJbmN1YmF0b3JEYXBwAgAAAA5JTkNVQkFUT1JfREFQUAAAAAAMa0JyZWVkZXJEYXBwAgAAAAxCUkVFREVSX0RBUFAAAAAADGtGYXJtaW5nRGFwcAIAAAAMRkFSTUlOR19EQVBQAAAAABBrTWFya2V0UHJveHlEYXBwAgAAABZNQVJLRVRQTEFDRV9QUk9YWV9EQVBQAAAAAAxrQXVjdGlvbkRhcHACAAAADEFVQ1RJT05fREFQUAAAAAAHa0xvY2tlZAIAAAAGTE9DS0VEAAAAABNrVG90YWxGYXJtaW5nUmV3YXJkAgAAABR0b3RhbF9mYXJtaW5nX3Jld2FyZAAAAAAQa0Nlb0NvbGxlY3RlZEZlZQIAAAARY2VvX2NvbGxlY3RlZF9mZWUAAAAAF2tDZW9Db2xsZWN0ZWRGZWVPdmVyYWxsAgAAAA9jZW9fZmVlX292ZXJhbGwAAAAACGtUb0Rpc3RyAgAAAA10b19kaXN0cmlidXRlAQAAAAZnZXRJbnQAAAABAAAAA2tleQQAAAAHJG1hdGNoMAkABBoAAAACBQAAAAR0aGlzBQAAAANrZXkDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAA0ludAQAAAABYgUAAAAHJG1hdGNoMAUAAAABYgAAAAAAAAAAAAEAAAAVdHJ5R2V0Qm9vbGVhbkV4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", "height": 3310593, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 8nG6b2XxC5AEACR5UCoFYrqd7pEcFcsoDWNab2KNEry9 Next: none Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 func tryGetStringExternal (address,key) = match getString(address, key) {
55 case a: String =>
66 a
77 case _ =>
88 ""
99 }
1010
1111
1212 func tryGetString (key) = tryGetStringExternal(this, key)
1313
1414
1515 func getOracle () = Address(fromBase58String(tryGetString("static_oracleAddress")))
1616
1717
1818 func getCfMasterAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), "static_cfMasterAddress")))
1919
2020
2121 func getBackendPubKey () = fromBase58String(getStringValue(getOracle(), "static_backendPubKey"))
2222
2323
2424 func getMaxDiff () = getIntegerValue(getOracle(), "static_maxProxyDiff")
2525
2626
2727 func getTurtleIncubatorAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), "static_turtleIncubatorAddress")))
2828
2929
3030 func getTurtleBreederAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), "static_turtleBreederAddress")))
3131
3232
3333 func getItemsAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), "static_itemsAddress")))
3434
3535
3636 let kTotalLiquidity = "total_liquidity"
3737
3838 let kInitialized = "INITIALIZED"
3939
4040 let kLiquidityThreshold = "LIQUIDITY_THRESHOLD"
4141
4242 let kTotalShareTokens = "total_share_tokens"
4343
4444 let kShareAssetId = "SHARE_ASSET_ID"
4545
4646 let kIncubatorDapp = "INCUBATOR_DAPP"
4747
4848 let kBreederDapp = "BREEDER_DAPP"
4949
5050 let kFarmingDapp = "FARMING_DAPP"
5151
5252 let kMarketProxyDapp = "MARKETPLACE_PROXY_DAPP"
5353
5454 let kAuctionDapp = "AUCTION_DAPP"
5555
5656 let kLocked = "LOCKED"
5757
5858 let kTotalFarmingReward = "total_farming_reward"
5959
6060 let kCeoCollectedFee = "ceo_collected_fee"
6161
6262 let kCeoCollectedFeeOverall = "ceo_fee_overall"
6363
6464 let kToDistr = "to_distribute"
6565
6666 func getInt (key) = match getInteger(this, key) {
6767 case b: Int =>
6868 b
6969 case _ =>
7070 0
7171 }
7272
7373
7474 func tryGetBooleanExternal (address,key) = match getBoolean(address, key) {
7575 case b: Boolean =>
7676 b
7777 case _ =>
7878 false
7979 }
8080
8181
8282 func getBool (key) = tryGetBooleanExternal(this, key)
8383
8484
8585 func getBoolA (a,key) = match getBoolean(a, key) {
8686 case b: Boolean =>
8787 b
8888 case _ =>
8989 unit
9090 }
9191
9292
9393 func tryGetIntegerExternal (address,key) = match getInteger(address, key) {
9494 case b: Int =>
9595 b
9696 case _ =>
9797 0
9898 }
9999
100100
101101 func getAuctionAddr () = tryGetStringExternal(getCfMasterAddress(), kAuctionDapp)
102102
103103
104104 func amountOrClear (amount) = if (contains(amount, "0"))
105105 then ""
106106 else amount
107107
108108
109109 func getAssetOrigin (generation) = {
110110 let incubatorAddress = tryGetStringExternal(getCfMasterAddress(), kIncubatorDapp)
111111 let breederAddress = tryGetStringExternal(getCfMasterAddress(), kBreederDapp)
112112 if ((generation == "G"))
113113 then fromBase58String(incubatorAddress)
114114 else fromBase58String(breederAddress)
115115 }
116116
117117
118118 func getAssetRarity (geno,generation) = {
119119 let quantity = getIntegerValue(Address(getAssetOrigin(generation)), (("stats_" + geno) + "_quantity"))
120120 let power = pow((10000 / quantity), 4, 5, 1, 2, FLOOR)
121121 if ((power > 0))
122122 then power
123123 else 2
124124 }
125125
126126
127127 func asString (value) = match value {
128128 case string: String =>
129129 string
130130 case _ =>
131131 throw("wrong type, expected: String")
132132 }
133133
134134
135135 func getAssetFarmingPower (assetId) = {
136136 let breederAddress = fromBase58String(tryGetStringExternal(getCfMasterAddress(), kBreederDapp))
137137 let incubatorAddress = fromBase58String(tryGetStringExternal(getCfMasterAddress(), kIncubatorDapp))
138138 if (if ((value(assetInfo(assetId)).issuer == Address(breederAddress)))
139139 then true
140140 else (value(assetInfo(assetId)).issuer == Address(incubatorAddress)))
141141 then {
142142 let assetName = value(assetInfo(assetId)).name
143143 let generation = take(takeRight(assetName, 2), 1)
144144 let farmGen = asString(invoke(Address(breederAddress), "getGenFromName", [assetName], nil))
145145 if ((farmGen == farmGen))
146146 then getAssetRarity(farmGen, generation)
147147 else throw("Strict value is not equal to itself.")
148148 }
149149 else throw("MGAFP: _20")
150150 }
151151
152152
153153 func getTurtleAssetFarmingPower (assetId) = {
154154 let breederAddress = getTurtleBreederAddress()
155155 let incubatorAddress = getTurtleIncubatorAddress()
156156 if (if ((value(assetInfo(assetId)).issuer == breederAddress))
157157 then true
158158 else (value(assetInfo(assetId)).issuer == incubatorAddress))
159159 then true
160160 else throw("MGTFP: _20")
161161 }
162162
163163
164164 func getDuckMarketPrice (nftId) = {
165165 let rarity = getAssetFarmingPower(nftId)
166166 let breederAddress = addressFromStringValue(tryGetStringExternal(getCfMasterAddress(), kBreederDapp))
167167 let sterile = tryGetIntegerExternal(breederAddress, (("asset_" + toBase58String(nftId)) + "_children"))
168168 let canBreedText = if ((sterile > 0))
169169 then "0"
170170 else "1"
171171 let val = getInteger(getCfMasterAddress(), ((("r-" + toString(rarity)) + "-b-") + canBreedText))
172172 match val {
173173 case price: Int =>
174174 let minPrice = if ((sterile > 0))
175175 then (200000000 * rarity)
176176 else 18000000000
177177 if ((minPrice > price))
178178 then minPrice
179179 else price
180180 case _ =>
181181 throw((((("There is no price for such duck: " + "r-") + toString(rarity)) + "-b-") + canBreedText))
182182 }
183183 }
184184
185185
186186 func getDuckIdByAuctionId (auctionId) = {
187187 let marketAddr = getAuctionAddr()
188188 tryGetStringExternal(addressFromStringValue(marketAddr), (("auction_" + auctionId) + "_assetId"))
189189 }
190190
191191
192192 func getBidAmount (auctionId,bidId) = {
193193 let marketAddr = getAuctionAddr()
194194 tryGetIntegerExternal(addressFromStringValue(marketAddr), (((("auction_" + auctionId) + "_bid_") + bidId) + "_amount"))
195195 }
196196
197197
198198 func checkDataGetPrice (ach,breed,gen,price,rarity,ts,signature,duckId) = if ((price == 0))
199199 then throw("MCACS: No price calculated, so action not allowed! Please contact admin!")
200200 else {
201201 let isDuck = if ((rarity != "0"))
202202 then (gen != "")
203203 else false
204204 let isTurtle = (rarity != "0")
205205 let text = if (isDuck)
206206 then makeString([rarity, breed, ach, gen, toString(price), toString(ts)], ";")
207207 else if (isTurtle)
208208 then makeString([rarity, breed, toString(price), toString(ts)], ";")
209209 else makeString([gen, toString(price), toString(ts)], ";")
210210 let MSINHOUR = 3600000
211211 if (!(sigVerify_8Kb(toBytes(text), fromBase58String(signature), getBackendPubKey())))
212212 then throw(((((("MCACS: Invalid proof from backend key" + toBase58String(getBackendPubKey())) + " ") + text) + " ") + toString(isDuck)))
213213 else {
214214 let currentTs = lastBlock.timestamp
215215 if ((currentTs > (ts + MSINHOUR)))
216216 then throw("MCACS: Outdated signature!")
217217 else if (isDuck)
218218 then {
219219 let duckRarity = getAssetFarmingPower(fromBase58String(duckId))
220220 let diff = (duckRarity - parseIntValue(split(rarity, ".")[0]))
221221 if (if ((-5 > diff))
222222 then true
223223 else (diff > 5))
224224 then throw(((((("MCACS: It seems not the correct price info was passed! " + toString(duckRarity)) + " ") + rarity) + " ") + toString(diff)))
225225 else price
226226 }
227227 else if (isTurtle)
228228 then if ((getTurtleAssetFarmingPower(fromBase58String(duckId)) == true))
229229 then price
230230 else throw("MCACS: This does not seem a turtle!")
231231 else price
232232 }
233233 }
234234
235235
236236 let fixedPriceDiff = 500000000
237237
238238 @Callable(i)
239239 func configureOracle (oracle) = if ((i.caller != this))
240240 then throw("BCO: admin only")
241241 else [StringEntry("static_oracleAddress", oracle)]
242242
243243
244244
245245 @Callable(i)
246246 func callMarketplaceProxy (function,int1,int2,str1,str2,ach,breed,gen,price,rarity,ts,signature) = {
247247 let auctionDappAddress = addressFromStringValue(getAuctionAddr())
248248 if ((getBoolA(getCfMasterAddress(), ("farm_" + toString(i.caller))) != true))
249249 then throw("_301=")
250250 else if ((function == "initAuction"))
251251 then {
252252 let asset = value(i.payments[0])
253253 let checkDataPrice = checkDataGetPrice(toString(ach), toString(breed), gen, price, toString(rarity), ts, signature, toBase58String(value(asset.assetId)))
254254 let calcPrice = if (tryGetBooleanExternal(getItemsAddress(), (("direct_cosmetic_" + gen) + "_sale")))
255255 then min([tryGetIntegerExternal(getItemsAddress(), ("direct_cosmetic_" + gen)), checkDataPrice])
256256 else checkDataPrice
257257 let maxPriceDiff = (fraction(calcPrice, getMaxDiff(), 100) + fixedPriceDiff)
258258 let initialPrice = int1
259259 let buyoutPrice = int2
260260 if (if (((calcPrice - maxPriceDiff) > initialPrice))
261261 then true
262262 else (initialPrice > buyoutPrice))
263263 then throw(((((("Price is too low, avg price: " + toString(calcPrice)) + ", min. price: ") + toString((calcPrice - maxPriceDiff))) + ", your bid: ") + toString(initialPrice)))
264264 else if ((value(asset.amount) != 1))
265265 then throw("_103")
266266 else {
267267 let initAuction = invoke(auctionDappAddress, "initAuction", [initialPrice, buyoutPrice, str1, str2], [AttachedPayment(value(asset.assetId), 1)])
268268 if ((initAuction == initAuction))
269269 then [StringEntry(("tx_" + toBase58String(i.transactionId)), toBase58String(value(asset.assetId)))]
270270 else throw("Strict value is not equal to itself.")
271271 }
272272 }
273273 else if ((function == "placeBid"))
274274 then {
275275 let auctionId = str1
276276 let duckAssetId = getDuckIdByAuctionId(auctionId)
277277 let bidAmount = value(value(i.payments[0]).amount)
278278 let duckMarketPrice = checkDataGetPrice(toString(ach), toString(breed), gen, price, toString(rarity), ts, signature, duckAssetId)
279279 let maxPriceDiff = fraction(duckMarketPrice, getMaxDiff(), 100)
280280 if ((bidAmount > duckMarketPrice))
281281 then throw(((((("Price is too high, avg price: " + toString(duckMarketPrice)) + ", max. price: ") + toString(duckMarketPrice)) + ", your bid: ") + toString(bidAmount)))
282282 else if ((size(i.payments) != 1))
283283 then throw("_103")
284284 else {
285285 let placeBid = invoke(auctionDappAddress, "placeBid", [auctionId], [AttachedPayment(value(i.payments[0]).assetId, bidAmount)])
286286 if ((placeBid == placeBid))
287287 then [StringEntry(("tx_" + toBase58String(i.transactionId)), auctionId)]
288288 else throw("Strict value is not equal to itself.")
289289 }
290290 }
291291 else if ((function == "acceptBid"))
292292 then if (true)
293293 then throw("MCACS: Accepting bids is disabled for Collective Farms!")
294294 else {
295295 let auctionId = str1
296296 let bidId = str2
297297 let duckAssetId = getDuckIdByAuctionId(auctionId)
298298 let bidAmount = getBidAmount(auctionId, bidId)
299299 let duckMarketPrice = checkDataGetPrice(toString(ach), toString(breed), gen, price, toString(rarity), ts, signature, duckAssetId)
300300 let maxPriceDiff = fraction(duckMarketPrice, getMaxDiff(), 100)
301301 if ((duckMarketPrice > bidAmount))
302302 then throw(((((("Price is too low, avg price: " + toString(duckMarketPrice)) + ", min. price: ") + toString(duckMarketPrice)) + ", your bid: ") + toString(bidAmount)))
303303 else {
304304 let acceptBid = invoke(auctionDappAddress, "acceptBid", [auctionId, bidId], nil)
305305 if ((acceptBid == acceptBid))
306306 then [StringEntry(("tx_" + toBase58String(i.transactionId)), auctionId)]
307307 else throw("Strict value is not equal to itself.")
308308 }
309309 }
310310 else if ((function == "instantBuy"))
311311 then {
312312 let auctionId = str1
313313 let duckAssetId = getDuckIdByAuctionId(auctionId)
314314 let bidAmount = value(value(i.payments[0]).amount)
315315 let duckMarketPrice = checkDataGetPrice(toString(ach), toString(breed), gen, price, toString(rarity), ts, signature, duckAssetId)
316316 let maxPrice = if (tryGetBooleanExternal(getItemsAddress(), (("direct_cosmetic_" + gen) + "_sale")))
317317 then tryGetIntegerExternal(getItemsAddress(), ("direct_cosmetic_" + gen))
318318 else ((duckMarketPrice + fraction(duckMarketPrice, 15, 100)) + fixedPriceDiff)
319319 if ((bidAmount > maxPrice))
320320 then throw(((((("Price is too high, calc price: " + toString(duckMarketPrice)) + ", max. price after item check: ") + toString(maxPrice)) + ", your buy price: ") + toString(bidAmount)))
321321 else if ((size(i.payments) != 1))
322322 then throw("_103")
323323 else {
324324 let instantBuy = invoke(auctionDappAddress, "instantBuy", [auctionId], [AttachedPayment(value(i.payments[0]).assetId, bidAmount)])
325325 if ((instantBuy == instantBuy))
326326 then [StringEntry(("tx_" + toBase58String(i.transactionId)), auctionId)]
327327 else throw("Strict value is not equal to itself.")
328328 }
329329 }
330330 else if ((function == "cancelBid"))
331331 then {
332332 let auctionId = str1
333333 let bidId = str2
334334 let acceptBid = invoke(auctionDappAddress, "cancelBid", [auctionId, bidId], nil)
335335 if ((acceptBid == acceptBid))
336336 then [StringEntry(("tx_" + toBase58String(i.transactionId)), auctionId)]
337337 else throw("Strict value is not equal to itself.")
338338 }
339339 else if ((function == "cancelAuction"))
340340 then {
341341 let auctionId = str1
342342 let acceptBid = invoke(auctionDappAddress, "cancelAuction", [auctionId], nil)
343343 if ((acceptBid == acceptBid))
344344 then [StringEntry(("tx_" + toBase58String(i.transactionId)), auctionId)]
345345 else throw("Strict value is not equal to itself.")
346346 }
347347 else throw("_13")
348348 }
349349
350350

github/deemru/w8io/026f985 
36.98 ms