2022.10.03 16:22 [3321695] smart account 3PQ5smtcz4F9F3rhbj3PX6GBgM4YtPkeHCg > SELF 0.00000000 Waves

{ "type": 13, "id": "29YEAxZsL7VBf8Lvc1YfkTu1x1349h1JZXSnzvuB8qtU", "fee": 1200000, "feeAssetId": null, "timestamp": 1664803431724, "version": 2, "chainId": 87, "sender": "3PQ5smtcz4F9F3rhbj3PX6GBgM4YtPkeHCg", "senderPublicKey": "FR8teTy3vHXM8K3qgseLD8fgBc5Rw5ge9NBZQFYYUJYL", "proofs": [ "5SaYAf77R4qEMKs8an8CXgzR4wwE82fkYHuTKQvFkwEHznG5y2weV3ngdHz9EvtHqngGucuysvSMQ2xv5xyD9Tot" ], "script": "base64:AAIFAAAAAAAAABcIAhIDCgEIEg4KDAgBAQgICAgIAQgBCAAAACMBAAAAFHRyeUdldFN0cmluZ0V4dGVybmFsAAAAAgAAAAdhZGRyZXNzAAAAA2tleQQAAAAHJG1hdGNoMAkABB0AAAACBQAAAAdhZGRyZXNzBQAAAANrZXkDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAABlN0cmluZwQAAAABYQUAAAAHJG1hdGNoMAUAAAABYQIAAAAAAQAAAAx0cnlHZXRTdHJpbmcAAAABAAAAA2tleQkBAAAAFHRyeUdldFN0cmluZ0V4dGVybmFsAAAAAgUAAAAEdGhpcwUAAAADa2V5AQAAAAlnZXRPcmFjbGUAAAAACQEAAAAHQWRkcmVzcwAAAAEJAAJZAAAAAQkBAAAADHRyeUdldFN0cmluZwAAAAECAAAAFHN0YXRpY19vcmFjbGVBZGRyZXNzAQAAABJnZXRDZk1hc3RlckFkZHJlc3MAAAAACQEAAAAHQWRkcmVzcwAAAAEJAAJZAAAAAQkBAAAAFHRyeUdldFN0cmluZ0V4dGVybmFsAAAAAgkBAAAACWdldE9yYWNsZQAAAAACAAAAFnN0YXRpY19jZk1hc3RlckFkZHJlc3MBAAAAEGdldEJhY2tlbmRQdWJLZXkAAAAACQACWQAAAAEJAQAAABFAZXh0ck5hdGl2ZSgxMDUzKQAAAAIJAQAAAAlnZXRPcmFjbGUAAAAAAgAAABRzdGF0aWNfYmFja2VuZFB1YktleQEAAAAKZ2V0TWF4RGlmZgAAAAAJAQAAABFAZXh0ck5hdGl2ZSgxMDUwKQAAAAIJAQAAAAlnZXRPcmFjbGUAAAAAAgAAABNzdGF0aWNfbWF4UHJveHlEaWZmAAAAAA9rVG90YWxMaXF1aWRpdHkCAAAAD3RvdGFsX2xpcXVpZGl0eQAAAAAMa0luaXRpYWxpemVkAgAAAAtJTklUSUFMSVpFRAAAAAATa0xpcXVpZGl0eVRocmVzaG9sZAIAAAATTElRVUlESVRZX1RIUkVTSE9MRAAAAAARa1RvdGFsU2hhcmVUb2tlbnMCAAAAEnRvdGFsX3NoYXJlX3Rva2VucwAAAAANa1NoYXJlQXNzZXRJZAIAAAAOU0hBUkVfQVNTRVRfSUQAAAAADmtJbmN1YmF0b3JEYXBwAgAAAA5JTkNVQkFUT1JfREFQUAAAAAAMa0JyZWVkZXJEYXBwAgAAAAxCUkVFREVSX0RBUFAAAAAADGtGYXJtaW5nRGFwcAIAAAAMRkFSTUlOR19EQVBQAAAAABBrTWFya2V0UHJveHlEYXBwAgAAABZNQVJLRVRQTEFDRV9QUk9YWV9EQVBQAAAAAAxrQXVjdGlvbkRhcHACAAAADEFVQ1RJT05fREFQUAAAAAAHa0xvY2tlZAIAAAAGTE9DS0VEAAAAABNrVG90YWxGYXJtaW5nUmV3YXJkAgAAABR0b3RhbF9mYXJtaW5nX3Jld2FyZAAAAAAQa0Nlb0NvbGxlY3RlZEZlZQIAAAARY2VvX2NvbGxlY3RlZF9mZWUAAAAAF2tDZW9Db2xsZWN0ZWRGZWVPdmVyYWxsAgAAAA9jZW9fZmVlX292ZXJhbGwAAAAACGtUb0Rpc3RyAgAAAA10b19kaXN0cmlidXRlAQAAAAZnZXRJbnQAAAABAAAAA2tleQQAAAAHJG1hdGNoMAkABBoAAAACBQAAAAR0aGlzBQAAAANrZXkDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAA0ludAQAAAABYgUAAAAHJG1hdGNoMAUAAAABYgAAAAAAAAAAAAEAAAAHZ2V0Qm9vbAAAAAEAAAADa2V5BAAAAAckbWF0Y2gwCQAEGwAAAAIFAAAABHRoaXMFAAAAA2tleQMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAHQm9vbGVhbgQAAAABYgUAAAAHJG1hdGNoMAUAAAABYgUAAAAEdW5pdAEAAAAIZ2V0Qm9vbEEAAAACAAAAAWEAAAADa2V5BAAAAAckbWF0Y2gwCQAEGwAAAAIFAAAAAWEFAAAAA2tleQMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAHQm9vbGVhbgQAAAABYgUAAAAHJG1hdGNoMAUAAAABYgUAAAAEdW5pdAEAAAAHZ2V0SW50QQAAAAIAAAAHYWRkcmVzcwAAAANrZXkEAAAAByRtYXRjaDAJAAQaAAAAAgUAAAAHYWRkcmVzcwUAAAADa2V5AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAANJbnQEAAAAAWIFAAAAByRtYXRjaDAFAAAAAWIAAAAAAAAAAAABAAAADmdldEF1Y3Rpb25BZGRyAAAAAAkBAAAAFHRyeUdldFN0cmluZ0V4dGVybmFsAAAAAgkBAAAAEmdldENmTWFzdGVyQWRkcmVzcwAAAAAFAAAADGtBdWN0aW9uRGFwcAEAAAANYW1vdW50T3JDbGVhcgAAAAEAAAAGYW1vdW50AwkBAAAACGNvbnRhaW5zAAAAAgUAAAAGYW1vdW50AgAAAAEwAgAAAAAFAAAABmFtb3VudAEAAAAOZ2V0QXNzZXRPcmlnaW4AAAABAAAACmdlbmVyYXRpb24EAAAAEGluY3ViYXRvckFkZHJlc3MJAQAAABR0cnlHZXRTdHJpbmdFeHRlcm5hbAAAAAIJAQAAABJnZXRDZk1hc3RlckFkZHJlc3MAAAAABQAAAA5rSW5jdWJhdG9yRGFwcAQAAAAOYnJlZWRlckFkZHJlc3MJAQAAABR0cnlHZXRTdHJpbmdFeHRlcm5hbAAAAAIJAQAAABJnZXRDZk1hc3RlckFkZHJlc3MAAAAABQAAAAxrQnJlZWRlckRhcHADCQAAAAAAAAIFAAAACmdlbmVyYXRpb24CAAAAAUcJAAJZAAAAAQUAAAAQaW5jdWJhdG9yQWRkcmVzcwkAAlkAAAABBQAAAA5icmVlZGVyQWRkcmVzcwEAAAAOZ2V0QXNzZXRSYXJpdHkAAAACAAAABGdlbm8AAAAKZ2VuZXJhdGlvbgQAAAAIcXVhbnRpdHkJAQAAABFAZXh0ck5hdGl2ZSgxMDUwKQAAAAIJAQAAAAdBZGRyZXNzAAAAAQkBAAAADmdldEFzc2V0T3JpZ2luAAAAAQUAAAAKZ2VuZXJhdGlvbgkAASwAAAACCQABLAAAAAICAAAABnN0YXRzXwUAAAAEZ2VubwIAAAAJX3F1YW50aXR5BAAAAAVwb3dlcgkAAGwAAAAGCQAAaQAAAAIAAAAAAAAAJxAFAAAACHF1YW50aXR5AAAAAAAAAAAEAAAAAAAAAAAFAAAAAAAAAAABAAAAAAAAAAACBQAAAAVGTE9PUgMJAABmAAAAAgUAAAAFcG93ZXIAAAAAAAAAAAAFAAAABXBvd2VyAAAAAAAAAAACAQAAAAhhc1N0cmluZwAAAAEAAAAFdmFsdWUEAAAAByRtYXRjaDAFAAAABXZhbHVlAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAAZTdHJpbmcEAAAABnN0cmluZwUAAAAHJG1hdGNoMAUAAAAGc3RyaW5nCQAAAgAAAAECAAAAHHdyb25nIHR5cGUsIGV4cGVjdGVkOiBTdHJpbmcBAAAAFGdldEFzc2V0RmFybWluZ1Bvd2VyAAAAAQAAAAdhc3NldElkBAAAAA5icmVlZGVyQWRkcmVzcwkAAlkAAAABCQEAAAAUdHJ5R2V0U3RyaW5nRXh0ZXJuYWwAAAACCQEAAAASZ2V0Q2ZNYXN0ZXJBZGRyZXNzAAAAAAUAAAAMa0JyZWVkZXJEYXBwBAAAABBpbmN1YmF0b3JBZGRyZXNzCQACWQAAAAEJAQAAABR0cnlHZXRTdHJpbmdFeHRlcm5hbAAAAAIJAQAAABJnZXRDZk1hc3RlckFkZHJlc3MAAAAABQAAAA5rSW5jdWJhdG9yRGFwcAMDCQAAAAAAAAIICQEAAAAFdmFsdWUAAAABCQAD7AAAAAEFAAAAB2Fzc2V0SWQAAAAGaXNzdWVyCQEAAAAHQWRkcmVzcwAAAAEFAAAADmJyZWVkZXJBZGRyZXNzBgkAAAAAAAACCAkBAAAABXZhbHVlAAAAAQkAA+wAAAABBQAAAAdhc3NldElkAAAABmlzc3VlcgkBAAAAB0FkZHJlc3MAAAABBQAAABBpbmN1YmF0b3JBZGRyZXNzBAAAAAlhc3NldE5hbWUICQEAAAAFdmFsdWUAAAABCQAD7AAAAAEFAAAAB2Fzc2V0SWQAAAAEbmFtZQQAAAAKZ2VuZXJhdGlvbgkAAS8AAAACCQEAAAAJdGFrZVJpZ2h0AAAAAgUAAAAJYXNzZXROYW1lAAAAAAAAAAACAAAAAAAAAAABBAAAAAdmYXJtR2VuCQEAAAAIYXNTdHJpbmcAAAABCQAD/AAAAAQJAQAAAAdBZGRyZXNzAAAAAQUAAAAOYnJlZWRlckFkZHJlc3MCAAAADmdldEdlbkZyb21OYW1lCQAETAAAAAIFAAAACWFzc2V0TmFtZQUAAAADbmlsBQAAAANuaWwDCQAAAAAAAAIFAAAAB2Zhcm1HZW4FAAAAB2Zhcm1HZW4JAQAAAA5nZXRBc3NldFJhcml0eQAAAAIFAAAAB2Zhcm1HZW4FAAAACmdlbmVyYXRpb24JAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQAAAgAAAAECAAAACk1HQUZQ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", "height": 3321695, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: GAvSC48h3gFUfsM5sj3KM5cNmg1c1ryqWA7uZxTeTAtQ Next: 3QfcYyt4Q6rU3wUNCRLiePSCv1EHAuY37wFPuzYHaMo2 Diff:
OldNewDifferences
1919
2020
2121 func getBackendPubKey () = fromBase58String(getStringValue(getOracle(), "static_backendPubKey"))
22+
23+
24+func getMaxDiff () = getIntegerValue(getOracle(), "static_maxProxyDiff")
2225
2326
2427 let kTotalLiquidity = "total_liquidity"
197200
198201
199202 @Callable(i)
203+func configureOracle (oracle) = if ((i.caller != this))
204+ then throw("BCO: admin only")
205+ else [StringEntry("static_oracleAddress", oracle)]
206+
207+
208+
209+@Callable(i)
200210 func callMarketplaceProxy (function,int1,int2,str1,str2,ach,breed,gen,price,rarity,ts,signature) = {
201211 let auctionDappAddress = addressFromStringValue(getAuctionAddr())
202212 if ((getBoolA(getCfMasterAddress(), ("farm_" + toString(i.caller))) != true))
205215 then {
206216 let asset = value(i.payments[0])
207217 let duckMarketPrice = checkDataGetPrice(ach, breed, gen, price, rarity, ts, signature, toBase58String(value(asset.assetId)))
208- let maxPriceDiff = fraction(duckMarketPrice, 15, 100)
218+ let maxPriceDiff = fraction(duckMarketPrice, getMaxDiff(), 100)
209219 let initialPrice = int1
210220 let buyoutPrice = int2
211221 if (if (((duckMarketPrice - maxPriceDiff) > initialPrice))
227237 let duckAssetId = getDuckIdByAuctionId(auctionId)
228238 let bidAmount = value(value(i.payments[0]).amount)
229239 let duckMarketPrice = checkDataGetPrice(ach, breed, gen, price, rarity, ts, signature, duckAssetId)
230- let maxPriceDiff = fraction(duckMarketPrice, 15, 100)
240+ let maxPriceDiff = fraction(duckMarketPrice, getMaxDiff(), 100)
231241 if ((bidAmount > (duckMarketPrice + maxPriceDiff)))
232242 then throw(((((((("Price is too high, avg price: " + toString(duckMarketPrice)) + ", max. price: ") + toString((duckMarketPrice + maxPriceDiff))) + ", your bid: ") + toString(bidAmount)) + " diff: ") + toString(maxPriceDiff)))
233243 else if ((size(i.payments) != 1))
246256 let duckAssetId = getDuckIdByAuctionId(auctionId)
247257 let bidAmount = getBidAmount(auctionId, bidId)
248258 let duckMarketPrice = checkDataGetPrice(ach, breed, gen, price, rarity, ts, signature, duckAssetId)
249- let maxPriceDiff = fraction(duckMarketPrice, 15, 100)
259+ let maxPriceDiff = fraction(duckMarketPrice, getMaxDiff(), 100)
250260 if (((duckMarketPrice - maxPriceDiff) > bidAmount))
251261 then throw(((((("Price is too low, avg price: " + toString(duckMarketPrice)) + ", min. price: ") + toString((duckMarketPrice - maxPriceDiff))) + ", your bid: ") + toString(bidAmount)))
252262 else {
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"))
22+
23+
24+func getMaxDiff () = getIntegerValue(getOracle(), "static_maxProxyDiff")
2225
2326
2427 let kTotalLiquidity = "total_liquidity"
2528
2629 let kInitialized = "INITIALIZED"
2730
2831 let kLiquidityThreshold = "LIQUIDITY_THRESHOLD"
2932
3033 let kTotalShareTokens = "total_share_tokens"
3134
3235 let kShareAssetId = "SHARE_ASSET_ID"
3336
3437 let kIncubatorDapp = "INCUBATOR_DAPP"
3538
3639 let kBreederDapp = "BREEDER_DAPP"
3740
3841 let kFarmingDapp = "FARMING_DAPP"
3942
4043 let kMarketProxyDapp = "MARKETPLACE_PROXY_DAPP"
4144
4245 let kAuctionDapp = "AUCTION_DAPP"
4346
4447 let kLocked = "LOCKED"
4548
4649 let kTotalFarmingReward = "total_farming_reward"
4750
4851 let kCeoCollectedFee = "ceo_collected_fee"
4952
5053 let kCeoCollectedFeeOverall = "ceo_fee_overall"
5154
5255 let kToDistr = "to_distribute"
5356
5457 func getInt (key) = match getInteger(this, key) {
5558 case b: Int =>
5659 b
5760 case _ =>
5861 0
5962 }
6063
6164
6265 func getBool (key) = match getBoolean(this, key) {
6366 case b: Boolean =>
6467 b
6568 case _ =>
6669 unit
6770 }
6871
6972
7073 func getBoolA (a,key) = match getBoolean(a, key) {
7174 case b: Boolean =>
7275 b
7376 case _ =>
7477 unit
7578 }
7679
7780
7881 func getIntA (address,key) = match getInteger(address, key) {
7982 case b: Int =>
8083 b
8184 case _ =>
8285 0
8386 }
8487
8588
8689 func getAuctionAddr () = tryGetStringExternal(getCfMasterAddress(), kAuctionDapp)
8790
8891
8992 func amountOrClear (amount) = if (contains(amount, "0"))
9093 then ""
9194 else amount
9295
9396
9497 func getAssetOrigin (generation) = {
9598 let incubatorAddress = tryGetStringExternal(getCfMasterAddress(), kIncubatorDapp)
9699 let breederAddress = tryGetStringExternal(getCfMasterAddress(), kBreederDapp)
97100 if ((generation == "G"))
98101 then fromBase58String(incubatorAddress)
99102 else fromBase58String(breederAddress)
100103 }
101104
102105
103106 func getAssetRarity (geno,generation) = {
104107 let quantity = getIntegerValue(Address(getAssetOrigin(generation)), (("stats_" + geno) + "_quantity"))
105108 let power = pow((10000 / quantity), 4, 5, 1, 2, FLOOR)
106109 if ((power > 0))
107110 then power
108111 else 2
109112 }
110113
111114
112115 func asString (value) = match value {
113116 case string: String =>
114117 string
115118 case _ =>
116119 throw("wrong type, expected: String")
117120 }
118121
119122
120123 func getAssetFarmingPower (assetId) = {
121124 let breederAddress = fromBase58String(tryGetStringExternal(getCfMasterAddress(), kBreederDapp))
122125 let incubatorAddress = fromBase58String(tryGetStringExternal(getCfMasterAddress(), kIncubatorDapp))
123126 if (if ((value(assetInfo(assetId)).issuer == Address(breederAddress)))
124127 then true
125128 else (value(assetInfo(assetId)).issuer == Address(incubatorAddress)))
126129 then {
127130 let assetName = value(assetInfo(assetId)).name
128131 let generation = take(takeRight(assetName, 2), 1)
129132 let farmGen = asString(invoke(Address(breederAddress), "getGenFromName", [assetName], nil))
130133 if ((farmGen == farmGen))
131134 then getAssetRarity(farmGen, generation)
132135 else throw("Strict value is not equal to itself.")
133136 }
134137 else throw("MGAFP: _20")
135138 }
136139
137140
138141 func getDuckMarketPrice (nftId) = {
139142 let rarity = getAssetFarmingPower(nftId)
140143 let breederAddress = addressFromStringValue(tryGetStringExternal(getCfMasterAddress(), kBreederDapp))
141144 let sterile = getIntA(breederAddress, (("asset_" + toBase58String(nftId)) + "_children"))
142145 let canBreedText = if ((sterile > 0))
143146 then "0"
144147 else "1"
145148 let val = getInteger(getCfMasterAddress(), ((("r-" + toString(rarity)) + "-b-") + canBreedText))
146149 match val {
147150 case price: Int =>
148151 let minPrice = if ((sterile > 0))
149152 then (200000000 * rarity)
150153 else 18000000000
151154 if ((minPrice > price))
152155 then minPrice
153156 else price
154157 case _ =>
155158 throw((((("There is no price for such duck: " + "r-") + toString(rarity)) + "-b-") + canBreedText))
156159 }
157160 }
158161
159162
160163 func getDuckIdByAuctionId (auctionId) = {
161164 let marketAddr = getAuctionAddr()
162165 tryGetStringExternal(addressFromStringValue(marketAddr), (("auction_" + auctionId) + "_assetId"))
163166 }
164167
165168
166169 func getBidAmount (auctionId,bidId) = {
167170 let marketAddr = getAuctionAddr()
168171 getIntA(addressFromStringValue(marketAddr), (((("auction_" + auctionId) + "_bid_") + bidId) + "_amount"))
169172 }
170173
171174
172175 func checkDataGetPrice (ach,breed,gen,price,rarity,ts,signature,duckId) = {
173176 let isArtefact = contains(gen, "ART")
174177 let text = if (isArtefact)
175178 then makeString([gen, toString(price), toString(ts)], ";")
176179 else makeString([rarity, breed, ach, gen, toString(price), toString(ts)], ";")
177180 let MSINHOUR = 3600000
178181 if (!(sigVerify_8Kb(toBytes(text), fromBase58String(signature), getBackendPubKey())))
179182 then throw(((("MCACS: Invalid proof from backend key" + toBase58String(getBackendPubKey())) + " ") + text))
180183 else {
181184 let currentTs = lastBlock.timestamp
182185 if ((currentTs > (ts + MSINHOUR)))
183186 then throw("MCACS: Outdated signature!")
184187 else if (!(isArtefact))
185188 then {
186189 let duckRarity = getAssetFarmingPower(fromBase58String(duckId))
187190 let diff = (duckRarity - parseIntValue(split(rarity, ".")[0]))
188191 if (if ((-5 > diff))
189192 then true
190193 else (diff > 5))
191194 then throw(((((("MCACS: It seems not the correct price info was passed! " + toString(duckRarity)) + " ") + rarity) + " ") + toString(diff)))
192195 else price
193196 }
194197 else price
195198 }
196199 }
197200
198201
199202 @Callable(i)
203+func configureOracle (oracle) = if ((i.caller != this))
204+ then throw("BCO: admin only")
205+ else [StringEntry("static_oracleAddress", oracle)]
206+
207+
208+
209+@Callable(i)
200210 func callMarketplaceProxy (function,int1,int2,str1,str2,ach,breed,gen,price,rarity,ts,signature) = {
201211 let auctionDappAddress = addressFromStringValue(getAuctionAddr())
202212 if ((getBoolA(getCfMasterAddress(), ("farm_" + toString(i.caller))) != true))
203213 then throw("_301=")
204214 else if ((function == "initAuction"))
205215 then {
206216 let asset = value(i.payments[0])
207217 let duckMarketPrice = checkDataGetPrice(ach, breed, gen, price, rarity, ts, signature, toBase58String(value(asset.assetId)))
208- let maxPriceDiff = fraction(duckMarketPrice, 15, 100)
218+ let maxPriceDiff = fraction(duckMarketPrice, getMaxDiff(), 100)
209219 let initialPrice = int1
210220 let buyoutPrice = int2
211221 if (if (((duckMarketPrice - maxPriceDiff) > initialPrice))
212222 then true
213223 else (initialPrice > buyoutPrice))
214224 then throw(((((("Price is too low, avg price: " + toString(duckMarketPrice)) + ", min. price: ") + toString((duckMarketPrice - maxPriceDiff))) + ", your bid: ") + toString(initialPrice)))
215225 else if ((value(asset.amount) != 1))
216226 then throw("_103")
217227 else {
218228 let initAuction = invoke(auctionDappAddress, "initAuction", [initialPrice, buyoutPrice, str1, str2], [AttachedPayment(value(asset.assetId), 1)])
219229 if ((initAuction == initAuction))
220230 then [StringEntry(("tx_" + toBase58String(i.transactionId)), toBase58String(value(asset.assetId)))]
221231 else throw("Strict value is not equal to itself.")
222232 }
223233 }
224234 else if ((function == "placeBid"))
225235 then {
226236 let auctionId = str1
227237 let duckAssetId = getDuckIdByAuctionId(auctionId)
228238 let bidAmount = value(value(i.payments[0]).amount)
229239 let duckMarketPrice = checkDataGetPrice(ach, breed, gen, price, rarity, ts, signature, duckAssetId)
230- let maxPriceDiff = fraction(duckMarketPrice, 15, 100)
240+ let maxPriceDiff = fraction(duckMarketPrice, getMaxDiff(), 100)
231241 if ((bidAmount > (duckMarketPrice + maxPriceDiff)))
232242 then throw(((((((("Price is too high, avg price: " + toString(duckMarketPrice)) + ", max. price: ") + toString((duckMarketPrice + maxPriceDiff))) + ", your bid: ") + toString(bidAmount)) + " diff: ") + toString(maxPriceDiff)))
233243 else if ((size(i.payments) != 1))
234244 then throw("_103")
235245 else {
236246 let placeBid = invoke(auctionDappAddress, "placeBid", [auctionId], [AttachedPayment(value(i.payments[0]).assetId, bidAmount)])
237247 if ((placeBid == placeBid))
238248 then [StringEntry(("tx_" + toBase58String(i.transactionId)), auctionId)]
239249 else throw("Strict value is not equal to itself.")
240250 }
241251 }
242252 else if ((function == "acceptBid"))
243253 then {
244254 let auctionId = str1
245255 let bidId = str2
246256 let duckAssetId = getDuckIdByAuctionId(auctionId)
247257 let bidAmount = getBidAmount(auctionId, bidId)
248258 let duckMarketPrice = checkDataGetPrice(ach, breed, gen, price, rarity, ts, signature, duckAssetId)
249- let maxPriceDiff = fraction(duckMarketPrice, 15, 100)
259+ let maxPriceDiff = fraction(duckMarketPrice, getMaxDiff(), 100)
250260 if (((duckMarketPrice - maxPriceDiff) > bidAmount))
251261 then throw(((((("Price is too low, avg price: " + toString(duckMarketPrice)) + ", min. price: ") + toString((duckMarketPrice - maxPriceDiff))) + ", your bid: ") + toString(bidAmount)))
252262 else {
253263 let acceptBid = invoke(auctionDappAddress, "acceptBid", [auctionId, bidId], nil)
254264 if ((acceptBid == acceptBid))
255265 then [StringEntry(("tx_" + toBase58String(i.transactionId)), auctionId)]
256266 else throw("Strict value is not equal to itself.")
257267 }
258268 }
259269 else if ((function == "instantBuy"))
260270 then {
261271 let auctionId = str1
262272 let duckAssetId = getDuckIdByAuctionId(auctionId)
263273 let bidAmount = value(value(i.payments[0]).amount)
264274 let duckMarketPrice = checkDataGetPrice(ach, breed, gen, price, rarity, ts, signature, duckAssetId)
265275 let maxPriceDiff = fraction(duckMarketPrice, 15, 100)
266276 if ((bidAmount > (duckMarketPrice + maxPriceDiff)))
267277 then throw(((((("Price is too high, avg price: " + toString(duckMarketPrice)) + ", max. price: ") + toString((duckMarketPrice + maxPriceDiff))) + ", your bid: ") + toString(bidAmount)))
268278 else if ((size(i.payments) != 1))
269279 then throw("_103")
270280 else {
271281 let instantBuy = invoke(auctionDappAddress, "instantBuy", [auctionId], [AttachedPayment(value(i.payments[0]).assetId, bidAmount)])
272282 if ((instantBuy == instantBuy))
273283 then [StringEntry(("tx_" + toBase58String(i.transactionId)), auctionId)]
274284 else throw("Strict value is not equal to itself.")
275285 }
276286 }
277287 else if ((function == "cancelBid"))
278288 then {
279289 let auctionId = str1
280290 let bidId = str2
281291 let acceptBid = invoke(auctionDappAddress, "cancelBid", [auctionId, bidId], nil)
282292 if ((acceptBid == acceptBid))
283293 then [StringEntry(("tx_" + toBase58String(i.transactionId)), auctionId)]
284294 else throw("Strict value is not equal to itself.")
285295 }
286296 else if ((function == "cancelAuction"))
287297 then {
288298 let auctionId = str1
289299 let acceptBid = invoke(auctionDappAddress, "cancelAuction", [auctionId], nil)
290300 if ((acceptBid == acceptBid))
291301 then [StringEntry(("tx_" + toBase58String(i.transactionId)), auctionId)]
292302 else throw("Strict value is not equal to itself.")
293303 }
294304 else throw("_13")
295305 }
296306
297307

github/deemru/w8io/786bc32 
53.34 ms