tx · 5PZTag7KPsf8bCEx5mfw5L7u7NPiMQMrY4hJLMNVMnxx

3N1MBCmgtCtNvJotZJ66hukSqdMtFpomvXr:  -0.01800000 Waves

2024.10.07 20:25 [3316720] smart account 3N1MBCmgtCtNvJotZJ66hukSqdMtFpomvXr > SELF 0.00000000 Waves

{ "type": 13, "id": "5PZTag7KPsf8bCEx5mfw5L7u7NPiMQMrY4hJLMNVMnxx", "fee": 1800000, "feeAssetId": null, "timestamp": 1728322025593, "version": 2, "chainId": 84, "sender": "3N1MBCmgtCtNvJotZJ66hukSqdMtFpomvXr", "senderPublicKey": "2e3N6dTsZth3TPKwnDmdhVdGJkbBUWUavmfkKXpJ7vSq", "proofs": [ "5XqfrtQK15V4pnLk2Q5nywGLrTKYLhkRThmsTBe83q7gVKda7WXAbvwzY65GYsJBPm1mSdSQLccZGe8M1FubChYD" ], "script": "base64:AAIFAAAAAAAAABcIAhIDCgEIEg4KDAgBAQgIBAQIAQEBCAAAACkBAAAAFHRyeUdldFN0cmluZ0V4dGVybmFsAAAAAgAAAAdhZGRyZXNzAAAAA2tleQQAAAAHJG1hdGNoMAkABB0AAAACBQAAAAdhZGRyZXNzBQAAAANrZXkDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAABlN0cmluZwQAAAABYQUAAAAHJG1hdGNoMAUAAAABYQIAAAAAAQAAAAx0cnlHZXRTdHJpbmcAAAABAAAAA2tleQkBAAAAFHRyeUdldFN0cmluZ0V4dGVybmFsAAAAAgUAAAAEdGhpcwUAAAADa2V5AQAAAAlnZXRPcmFjbGUAAAAACQEAAAAHQWRkcmVzcwAAAAEJAAJZAAAAAQkBAAAADHRyeUdldFN0cmluZwAAAAECAAAAFHN0YXRpY19vcmFjbGVBZGRyZXNzAQAAABJnZXRDZk1hc3RlckFkZHJlc3MAAAAACQEAAAAHQWRkcmVzcwAAAAEJAAJZAAAAAQkBAAAAFHRyeUdldFN0cmluZ0V4dGVybmFsAAAAAgkBAAAACWdldE9yYWNsZQAAAAACAAAAFnN0YXRpY19jZk1hc3RlckFkZHJlc3MBAAAAEGdldEJhY2tlbmRQdWJLZXkAAAAACQACWQAAAAEJAQAAABFAZXh0ck5hdGl2ZSgxMDUzKQAAAAIJAQAAAAlnZXRPcmFjbGUAAAAAAgAAABRzdGF0aWNfYmFja2VuZFB1YktleQEAAAAKZ2V0TWF4RGlmZgAAAAAJAQAAABFAZXh0ck5hdGl2ZSgxMDUwKQAAAAIJAQAAAAlnZXRPcmFjbGUAAAAAAgAAABNzdGF0aWNfbWF4UHJveHlEaWZmAQAAABlnZXRUdXJ0bGVJbmN1YmF0b3JBZGRyZXNzAAAAAAkBAAAAB0FkZHJlc3MAAAABCQACWQAAAAEJAQAAABR0cnlHZXRTdHJpbmdFeHRlcm5hbAAAAAIJAQAAAAlnZXRPcmFjbGUAAAAAAgAAAB1zdGF0aWNfdHVydGxlSW5jdWJhdG9yQWRkcmVzcwEAAAAXZ2V0VHVydGxlQnJlZWRlckFkZHJlc3MAAAAACQEAAAAHQWRkcmVzcwAAAAEJAAJZAAAAAQkBAAAAFHRyeUdldFN0cmluZ0V4dGVybmFsAAAAAgkBAAAACWdldE9yYWNsZQAAAAACAAAAG3N0YXRpY190dXJ0bGVCcmVlZGVyQWRkcmVzcwEAAAAPZ2V0SXRlbXNBZGRyZXNzAAAAAAkBAAAAB0FkZHJlc3MAAAABCQACWQAAAAEJAQAAABR0cnlHZXRTdHJpbmdFeHRlcm5hbAAAAAIJAQAAAAlnZXRPcmFjbGUAAAAAAgAAABNzdGF0aWNfaXRlbXNBZGRyZXNzAAAAAA9rVG90YWxMaXF1aWRpdHkCAAAAD3RvdGFsX2xpcXVpZGl0eQAAAAAMa0luaXRpYWxpemVkAgAAAAtJTklUSUFMSVpFRAAAAAATa0xpcXVpZGl0eVRocmVzaG9sZAIAAAATTElRVUlESVRZX1RIUkVTSE9MRAAAAAARa1RvdGFsU2hhcmVUb2tlbnMCAAAAEnRvdGFsX3NoYXJlX3Rva2VucwAAAAANa1NoYXJlQXNzZXRJZAIAAAAOU0hBUkVfQVNTRVRfSUQAAAAADmtJbmN1YmF0b3JEYXBwAgAAAA5JTkNVQkFUT1JfREFQUAAAAAAMa0JyZWVkZXJEYXBwAgAAAAxCUkVFREVSX0RBUFAAAAAADGtGYXJtaW5nRGFwcAIAAAAMRkFSTUlOR19EQVBQAAAAABBrTWFya2V0UHJveHlEYXBwAgAAABZNQVJLRVRQTEFDRV9QUk9YWV9EQVBQAAAAAAxrQXVjdGlvbkRhcHACAAAADEFVQ1RJT05fREFQUAAAAAAHa0xvY2tlZAIAAAAGTE9DS0VEAAAAABNrVG90YWxGYXJtaW5nUmV3YXJkAgAAABR0b3RhbF9mYXJtaW5nX3Jld2FyZAAAAAAQa0Nlb0NvbGxlY3RlZEZlZQIAAAARY2VvX2NvbGxlY3RlZF9mZWUAAAAAF2tDZW9Db2xsZWN0ZWRGZWVPdmVyYWxsAgAAAA9jZW9fZmVlX292ZXJhbGwAAAAACGtUb0Rpc3RyAgAAAA10b19kaXN0cmlidXRlAQAAAAZnZXRJbnQAAAABAAAAA2tleQQAAAAHJG1hdGNoMAkABBoAAAACBQAAAAR0aGlzBQAAAANrZXkDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAA0ludAQAAAABYgUAAAAHJG1hdGNoMAUAAAABYgAAAAAAAAAAAAEAAAAVdHJ5R2V0Qm9vbGVhbkV4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", "height": 3316720, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: none Next: none Full:
OldNewDifferences
1-# no script
1+{-# STDLIB_VERSION 5 #-}
2+{-# SCRIPT_TYPE ACCOUNT #-}
3+{-# CONTENT_TYPE DAPP #-}
4+func tryGetStringExternal (address,key) = match getString(address, key) {
5+ case a: String =>
6+ a
7+ case _ =>
8+ ""
9+}
10+
11+
12+func tryGetString (key) = tryGetStringExternal(this, key)
13+
14+
15+func getOracle () = Address(fromBase58String(tryGetString("static_oracleAddress")))
16+
17+
18+func getCfMasterAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), "static_cfMasterAddress")))
19+
20+
21+func getBackendPubKey () = fromBase58String(getStringValue(getOracle(), "static_backendPubKey"))
22+
23+
24+func getMaxDiff () = getIntegerValue(getOracle(), "static_maxProxyDiff")
25+
26+
27+func getTurtleIncubatorAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), "static_turtleIncubatorAddress")))
28+
29+
30+func getTurtleBreederAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), "static_turtleBreederAddress")))
31+
32+
33+func getItemsAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), "static_itemsAddress")))
34+
35+
36+let kTotalLiquidity = "total_liquidity"
37+
38+let kInitialized = "INITIALIZED"
39+
40+let kLiquidityThreshold = "LIQUIDITY_THRESHOLD"
41+
42+let kTotalShareTokens = "total_share_tokens"
43+
44+let kShareAssetId = "SHARE_ASSET_ID"
45+
46+let kIncubatorDapp = "INCUBATOR_DAPP"
47+
48+let kBreederDapp = "BREEDER_DAPP"
49+
50+let kFarmingDapp = "FARMING_DAPP"
51+
52+let kMarketProxyDapp = "MARKETPLACE_PROXY_DAPP"
53+
54+let kAuctionDapp = "AUCTION_DAPP"
55+
56+let kLocked = "LOCKED"
57+
58+let kTotalFarmingReward = "total_farming_reward"
59+
60+let kCeoCollectedFee = "ceo_collected_fee"
61+
62+let kCeoCollectedFeeOverall = "ceo_fee_overall"
63+
64+let kToDistr = "to_distribute"
65+
66+func getInt (key) = match getInteger(this, key) {
67+ case b: Int =>
68+ b
69+ case _ =>
70+ 0
71+}
72+
73+
74+func tryGetBooleanExternal (address,key) = match getBoolean(address, key) {
75+ case b: Boolean =>
76+ b
77+ case _ =>
78+ false
79+}
80+
81+
82+func getBool (key) = tryGetBooleanExternal(this, key)
83+
84+
85+func getBoolA (a,key) = match getBoolean(a, key) {
86+ case b: Boolean =>
87+ b
88+ case _ =>
89+ unit
90+}
91+
92+
93+func tryGetIntegerExternal (address,key) = match getInteger(address, key) {
94+ case b: Int =>
95+ b
96+ case _ =>
97+ 0
98+}
99+
100+
101+func getAuctionAddr () = tryGetStringExternal(getCfMasterAddress(), kAuctionDapp)
102+
103+
104+func amountOrClear (amount) = if (contains(amount, "0"))
105+ then ""
106+ else amount
107+
108+
109+func getAssetOrigin (generation) = {
110+ let incubatorAddress = tryGetStringExternal(getCfMasterAddress(), kIncubatorDapp)
111+ let breederAddress = tryGetStringExternal(getCfMasterAddress(), kBreederDapp)
112+ if ((generation == "G"))
113+ then fromBase58String(incubatorAddress)
114+ else fromBase58String(breederAddress)
115+ }
116+
117+
118+func getAssetRarity (geno,generation) = {
119+ let quantity = getIntegerValue(Address(getAssetOrigin(generation)), (("stats_" + geno) + "_quantity"))
120+ let power = pow((10000 / quantity), 4, 5, 1, 2, FLOOR)
121+ if ((power > 0))
122+ then power
123+ else 2
124+ }
125+
126+
127+func asString (value) = match value {
128+ case string: String =>
129+ string
130+ case _ =>
131+ throw("wrong type, expected: String")
132+}
133+
134+
135+func getAssetFarmingPower (assetId) = {
136+ let breederAddress = fromBase58String(tryGetStringExternal(getCfMasterAddress(), kBreederDapp))
137+ let incubatorAddress = fromBase58String(tryGetStringExternal(getCfMasterAddress(), kIncubatorDapp))
138+ if (if ((value(assetInfo(assetId)).issuer == Address(breederAddress)))
139+ then true
140+ else (value(assetInfo(assetId)).issuer == Address(incubatorAddress)))
141+ then {
142+ let assetName = value(assetInfo(assetId)).name
143+ let generation = take(takeRight(assetName, 2), 1)
144+ let farmGen = asString(invoke(Address(breederAddress), "getGenFromName", [assetName], nil))
145+ if ((farmGen == farmGen))
146+ then getAssetRarity(farmGen, generation)
147+ else throw("Strict value is not equal to itself.")
148+ }
149+ else throw("MGAFP: _20")
150+ }
151+
152+
153+func getTurtleAssetFarmingPower (assetId) = {
154+ let breederAddress = getTurtleBreederAddress()
155+ let incubatorAddress = getTurtleIncubatorAddress()
156+ if (if ((value(assetInfo(assetId)).issuer == breederAddress))
157+ then true
158+ else (value(assetInfo(assetId)).issuer == incubatorAddress))
159+ then true
160+ else throw("MGTFP: _20")
161+ }
162+
163+
164+func getDuckMarketPrice (nftId) = {
165+ let rarity = getAssetFarmingPower(nftId)
166+ let breederAddress = addressFromStringValue(tryGetStringExternal(getCfMasterAddress(), kBreederDapp))
167+ let sterile = tryGetIntegerExternal(breederAddress, (("asset_" + toBase58String(nftId)) + "_children"))
168+ let canBreedText = if ((sterile > 0))
169+ then "0"
170+ else "1"
171+ let val = getInteger(getCfMasterAddress(), ((("r-" + toString(rarity)) + "-b-") + canBreedText))
172+ match val {
173+ case price: Int =>
174+ let minPrice = if ((sterile > 0))
175+ then (200000000 * rarity)
176+ else 18000000000
177+ if ((minPrice > price))
178+ then minPrice
179+ else price
180+ case _ =>
181+ throw((((("There is no price for such duck: " + "r-") + toString(rarity)) + "-b-") + canBreedText))
182+ }
183+ }
184+
185+
186+func getDuckIdByAuctionId (auctionId) = {
187+ let marketAddr = getAuctionAddr()
188+ tryGetStringExternal(addressFromStringValue(marketAddr), (("auction_" + auctionId) + "_assetId"))
189+ }
190+
191+
192+func getBidAmount (auctionId,bidId) = {
193+ let marketAddr = getAuctionAddr()
194+ tryGetIntegerExternal(addressFromStringValue(marketAddr), (((("auction_" + auctionId) + "_bid_") + bidId) + "_amount"))
195+ }
196+
197+
198+func checkDataGetPrice (ach,breed,gen,price,rarity,ts,signature,duckId) = if ((price == 0))
199+ then throw("MCACS: No price calculated, so action not allowed! Please contact admin!")
200+ else {
201+ let isDuck = if ((rarity != "0"))
202+ then (gen != "")
203+ else false
204+ let isTurtle = (rarity != "0")
205+ let text = if (isDuck)
206+ then makeString([rarity, breed, ach, gen, toString(price), toString(ts)], ";")
207+ else if (isTurtle)
208+ then makeString([rarity, breed, toString(price), toString(ts)], ";")
209+ else makeString([gen, toString(price), toString(ts)], ";")
210+ let MSINHOUR = 3600000
211+ if (!(sigVerify_8Kb(toBytes(text), fromBase58String(signature), getBackendPubKey())))
212+ then throw(((((("MCACS: Invalid proof from backend key" + toBase58String(getBackendPubKey())) + " ") + text) + " ") + toString(isDuck)))
213+ else {
214+ let currentTs = lastBlock.timestamp
215+ if ((currentTs > (ts + MSINHOUR)))
216+ then throw("MCACS: Outdated signature!")
217+ else if (isDuck)
218+ then {
219+ let duckRarity = getAssetFarmingPower(fromBase58String(duckId))
220+ let diff = (duckRarity - parseIntValue(split(rarity, ".")[0]))
221+ if (if ((-5 > diff))
222+ then true
223+ else (diff > 5))
224+ then throw(((((("MCACS: It seems not the correct price info was passed! " + toString(duckRarity)) + " ") + rarity) + " ") + toString(diff)))
225+ else price
226+ }
227+ else if (isTurtle)
228+ then if ((getTurtleAssetFarmingPower(fromBase58String(duckId)) == true))
229+ then price
230+ else throw("MCACS: This does not seem a turtle!")
231+ else price
232+ }
233+ }
234+
235+
236+let fixedPriceDiff = 500000000
237+
238+@Callable(i)
239+func configureOracle (oracle) = if ((i.caller != this))
240+ then throw("BCO: admin only")
241+ else [StringEntry("static_oracleAddress", oracle)]
242+
243+
244+
245+@Callable(i)
246+func callMarketplaceProxy (function,int1,int2,str1,str2,ach,breed,gen,price,rarity,ts,signature) = {
247+ let auctionDappAddress = addressFromStringValue(getAuctionAddr())
248+ if ((getBoolA(getCfMasterAddress(), ("farm_" + toString(i.caller))) != true))
249+ then throw("_301=")
250+ else if ((function == "initAuction"))
251+ then {
252+ let asset = value(i.payments[0])
253+ let checkDataPrice = checkDataGetPrice(toString(ach), toString(breed), gen, price, toString(rarity), ts, signature, toBase58String(value(asset.assetId)))
254+ let calcPrice = if (tryGetBooleanExternal(getItemsAddress(), (("direct_cosmetic_" + gen) + "_sale")))
255+ then min([tryGetIntegerExternal(getItemsAddress(), ("direct_cosmetic_" + gen)), checkDataPrice])
256+ else checkDataPrice
257+ let maxPriceDiff = (fraction(calcPrice, getMaxDiff(), 100) + fixedPriceDiff)
258+ let initialPrice = int1
259+ let buyoutPrice = int2
260+ if (if (((calcPrice - maxPriceDiff) > initialPrice))
261+ then true
262+ else (initialPrice > buyoutPrice))
263+ then throw(((((("Price is too low, avg price: " + toString(calcPrice)) + ", min. price: ") + toString((calcPrice - maxPriceDiff))) + ", your bid: ") + toString(initialPrice)))
264+ else if ((value(asset.amount) != 1))
265+ then throw("_103")
266+ else {
267+ let initAuction = invoke(auctionDappAddress, "initAuction", [initialPrice, buyoutPrice, str1, str2], [AttachedPayment(value(asset.assetId), 1)])
268+ if ((initAuction == initAuction))
269+ then [StringEntry(("tx_" + toBase58String(i.transactionId)), toBase58String(value(asset.assetId)))]
270+ else throw("Strict value is not equal to itself.")
271+ }
272+ }
273+ else if ((function == "placeBid"))
274+ then {
275+ let auctionId = str1
276+ let duckAssetId = getDuckIdByAuctionId(auctionId)
277+ let bidAmount = value(value(i.payments[0]).amount)
278+ let duckMarketPrice = checkDataGetPrice(toString(ach), toString(breed), gen, price, toString(rarity), ts, signature, duckAssetId)
279+ let maxPriceDiff = fraction(duckMarketPrice, getMaxDiff(), 100)
280+ if ((bidAmount > duckMarketPrice))
281+ then throw(((((("Price is too high, avg price: " + toString(duckMarketPrice)) + ", max. price: ") + toString(duckMarketPrice)) + ", your bid: ") + toString(bidAmount)))
282+ else if ((size(i.payments) != 1))
283+ then throw("_103")
284+ else {
285+ let placeBid = invoke(auctionDappAddress, "placeBid", [auctionId], [AttachedPayment(value(i.payments[0]).assetId, bidAmount)])
286+ if ((placeBid == placeBid))
287+ then [StringEntry(("tx_" + toBase58String(i.transactionId)), auctionId)]
288+ else throw("Strict value is not equal to itself.")
289+ }
290+ }
291+ else if ((function == "acceptBid"))
292+ then if (true)
293+ then throw("MCACS: Accepting bids is disabled for Collective Farms!")
294+ else {
295+ let auctionId = str1
296+ let bidId = str2
297+ let duckAssetId = getDuckIdByAuctionId(auctionId)
298+ let bidAmount = getBidAmount(auctionId, bidId)
299+ let duckMarketPrice = checkDataGetPrice(toString(ach), toString(breed), gen, price, toString(rarity), ts, signature, duckAssetId)
300+ let maxPriceDiff = fraction(duckMarketPrice, getMaxDiff(), 100)
301+ if ((duckMarketPrice > bidAmount))
302+ then throw(((((("Price is too low, avg price: " + toString(duckMarketPrice)) + ", min. price: ") + toString(duckMarketPrice)) + ", your bid: ") + toString(bidAmount)))
303+ else {
304+ let acceptBid = invoke(auctionDappAddress, "acceptBid", [auctionId, bidId], nil)
305+ if ((acceptBid == acceptBid))
306+ then [StringEntry(("tx_" + toBase58String(i.transactionId)), auctionId)]
307+ else throw("Strict value is not equal to itself.")
308+ }
309+ }
310+ else if ((function == "instantBuy"))
311+ then {
312+ let auctionId = str1
313+ let duckAssetId = getDuckIdByAuctionId(auctionId)
314+ let bidAmount = value(value(i.payments[0]).amount)
315+ let duckMarketPrice = checkDataGetPrice(toString(ach), toString(breed), gen, price, toString(rarity), ts, signature, duckAssetId)
316+ let maxPrice = if (tryGetBooleanExternal(getItemsAddress(), (("direct_cosmetic_" + gen) + "_sale")))
317+ then tryGetIntegerExternal(getItemsAddress(), ("direct_cosmetic_" + gen))
318+ else ((duckMarketPrice + fraction(duckMarketPrice, 15, 100)) + fixedPriceDiff)
319+ if ((bidAmount > maxPrice))
320+ then throw(((((("Price is too high, calc price: " + toString(duckMarketPrice)) + ", max. price after item check: ") + toString(maxPrice)) + ", your buy price: ") + toString(bidAmount)))
321+ else if ((size(i.payments) != 1))
322+ then throw("_103")
323+ else {
324+ let instantBuy = invoke(auctionDappAddress, "instantBuy", [auctionId], [AttachedPayment(value(i.payments[0]).assetId, bidAmount)])
325+ if ((instantBuy == instantBuy))
326+ then [StringEntry(("tx_" + toBase58String(i.transactionId)), auctionId)]
327+ else throw("Strict value is not equal to itself.")
328+ }
329+ }
330+ else if ((function == "cancelBid"))
331+ then {
332+ let auctionId = str1
333+ let bidId = str2
334+ let acceptBid = invoke(auctionDappAddress, "cancelBid", [auctionId, bidId], nil)
335+ if ((acceptBid == acceptBid))
336+ then [StringEntry(("tx_" + toBase58String(i.transactionId)), auctionId)]
337+ else throw("Strict value is not equal to itself.")
338+ }
339+ else if ((function == "cancelAuction"))
340+ then {
341+ let auctionId = str1
342+ let acceptBid = invoke(auctionDappAddress, "cancelAuction", [auctionId], nil)
343+ if ((acceptBid == acceptBid))
344+ then [StringEntry(("tx_" + toBase58String(i.transactionId)), auctionId)]
345+ else throw("Strict value is not equal to itself.")
346+ }
347+ else throw("_13")
348+ }
349+
350+

github/deemru/w8io/169f3d6 
25.54 ms