tx · 6EaunhZdx4DakkVvjPy5Kd8HZTBfrAZMY5Tzf8CKiUEW

3Ms3QRCnyUviibMiYhAXHR6S49STUuoj9Nw:  -0.01000000 Waves

2021.06.21 10:15 [1579836] smart account 3Ms3QRCnyUviibMiYhAXHR6S49STUuoj9Nw > SELF 0.00000000 Waves

{ "type": 13, "id": "6EaunhZdx4DakkVvjPy5Kd8HZTBfrAZMY5Tzf8CKiUEW", "fee": 1000000, "feeAssetId": null, "timestamp": 1624259733361, "version": 2, "chainId": 84, "sender": "3Ms3QRCnyUviibMiYhAXHR6S49STUuoj9Nw", "senderPublicKey": "GNpagigJKXNTDXBJStGocBimNDb9RpMiNyZEfXoX2kWt", "proofs": [ "5DCCTxLrCUHXuS223gZgaA3cpjmz9tmD3PCJ7EL63ziDPmuLC5tSRXEsXzBSVWCZmt1vKE1ggiN6U7y15YA4qbAm" ], "script": "base64:AAIEAAAAAAAAAEAIAhIECgIBCBIFCgMIAQgSAwoBCBIDCgEIEgMKAQgSBQoDCAgIEgUKAwgICBIECgIICBIFCgMICAgSBQoDCAgIAAAALgAAAAAIdW5pdFRlc3QGAAAAABF1bml0VGVzdFNlY29uZGFyeQYAAAAADGFydHdvcmtzRGFwcAMFAAAAEXVuaXRUZXN0U2Vjb25kYXJ5CQEAAAAFdmFsdWUAAAABCQAEJgAAAAECAAAAIzNNcXN2REZIVnlQMmdWc0tzYVBXVlZETHo0ak1rblZzRDhpCQEAAAAFdmFsdWUAAAABCQAEJgAAAAECAAAAIzNOQnluZmJYQzJLYXN0VXhodWtjTVVhRTU4SzljQmRCOVVZAAAAAAh1c2VyRGFwcAMFAAAACHVuaXRUZXN0CQEAAAAFdmFsdWUAAAABCQAEJgAAAAECAAAAIzNNdDRSR01FeWpTV1lBb2NUUHFkNTV3ZEhRUUIzUFUyVUNtCQEAAAAFdmFsdWUAAAABCQAEJgAAAAECAAAAIzNOOHhYYVlqRTI3QWE3OWQ1aEhyaEh1OUhhRm9UQm1oREVqAAAAAAlvcmFjbGVGZWUJAQAAAAV2YWx1ZQAAAAEJAAQmAAAAAQIAAAAjM04yczVSdGFIUEJlbkNzeDJFQ2NvRlJiWUh4M25vWmhYVzEAAAAACHNpZ25EYXBwCQEAAAAFdmFsdWUAAAABCQAEJgAAAAECAAAAIzNOQzI4aFNpdnJtc1RVWGFZRDF4NkwzNjJKNFpwVW5vVGRCAAAAAAtmZWVSZWNlaXZlcgIAAAAjM04xRTZ0WGRkUm9WYVJmUTlkUTN2ZzVMYVcyZnNkOEhLdWIAAAAADXdoaXRlbGlzdERhcHAJAQAAAAV2YWx1ZQAAAAEJAAQmAAAAAQIAAAAjM042QmFWMWRDQjR6ZzQzZ29OTkhhQ3R2UjEzQmN5SjVHc3EAAAAAC3NpZ25Bc3NldElkAQAAACDopWq8yndC8nBhMjVKT0WDubke5ZlnF8Nx6tkLoQSt6wAAAAALdXNkbkFzc2V0SWQBAAAAIA/yHBKs5MQ8muxGGqslqLDsugcrRsxtiHLwteKSSQG0AAAAAAx3YXZlc0Fzc2V0SWQBAAAAAAAAAAAFY2hyaXMCAAAAIzNNc0c2alBOQ3JWSlV0WUI3WEpCeFM3dXRXc1hBZjRu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", "height": 1579836, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: none Next: none Full:
OldNewDifferences
1-# no script
1+{-# STDLIB_VERSION 4 #-}
2+{-# SCRIPT_TYPE ACCOUNT #-}
3+{-# CONTENT_TYPE DAPP #-}
4+let unitTest = true
5+
6+let unitTestSecondary = true
7+
8+let artworksDapp = if (unitTestSecondary)
9+ then value(addressFromString("3MqsvDFHVyP2gVsKsaPWVVDLz4jMknVsD8i"))
10+ else value(addressFromString("3NBynfbXC2KastUxhukcMUaE58K9cBdB9UY"))
11+
12+let userDapp = if (unitTest)
13+ then value(addressFromString("3Mt4RGMEyjSWYAocTPqd55wdHQQB3PU2UCm"))
14+ else value(addressFromString("3N8xXaYjE27Aa79d5hHrhHu9HaFoTBmhDEj"))
15+
16+let oracleFee = value(addressFromString("3N2s5RtaHPBenCsx2ECcoFRbYHx3noZhXW1"))
17+
18+let signDapp = value(addressFromString("3NC28hSivrmsTUXaYD1x6L362J4ZpUnoTdB"))
19+
20+let feeReceiver = "3N1E6tXddRoVaRfQ9dQ3vg5LaW2fsd8HKub"
21+
22+let whitelistDapp = value(addressFromString("3N6BaV1dCB4zg43goNNHaCtvR13BcyJ5Gsq"))
23+
24+let signAssetId = base58'Gf9t8FA4H3ssoZPCwrg3KwUFCci8zuUFP9ssRsUY3s6a'
25+
26+let usdnAssetId = base58'25FEqEjRkqK6yCkiT7Lz6SAYz7gUFCtxfCChnrVFD5AT'
27+
28+let wavesAssetId = base58''
29+
30+let chris = "3MsG6jPNCrVJUtYB7XJBxS7utWsXAf4n9Vp"
31+
32+let signCut = 3
33+
34+let creatorCut = 10
35+
36+let dappRunning = valueOrElse(getBoolean(userDapp, "conf_dapp_is_running"), true)
37+
38+let maintenanceMSG = valueOrElse(getString(userDapp, "conf_maintenance_msg"), "")
39+
40+let userSuspended = "SUSPENDED"
41+
42+let userRemoved = "REMOVED"
43+
44+let artIllegal = "ILLEGAL"
45+
46+let artSuspended = "SUSPENDED"
47+
48+func getUserStrByK (key) = valueOrElse(getString(userDapp, key), "Error")
49+
50+
51+func getArtStrByK (key) = valueOrElse(getString(artworksDapp, key), "")
52+
53+
54+func getStrByK (key) = valueOrElse(getString(this, key), "")
55+
56+
57+func getIntByK (key) = valueOrElse(getInteger(this, key), 0)
58+
59+
60+func keyUserStatus (addr) = ("user_status_" + addr)
61+
62+
63+func keySignID (artistAddr,artId) = ((("art_signid_" + artId) + "_") + artistAddr)
64+
65+
66+func keyFlag (artistAddr,artId) = ((("art_flag_" + artId) + "_") + artistAddr)
67+
68+
69+func keyNFTData (id) = ("nft_" + id)
70+
71+
72+func getSaleKey (caller,nftId,artId,creatorAddr) = ((((((("sale2nd_info_" + caller) + "_") + nftId) + "_") + artId) + "_") + creatorAddr)
73+
74+
75+func getBidKey (offerOwner,nftId,saleOwner,offerId) = ((((((("offer2nd_" + offerOwner) + "_") + nftId) + "_") + saleOwner) + "_") + offerId)
76+
77+
78+func getRequestKey (requestOwner,creatorAddr,artId,id) = ((((((("request2nd_" + requestOwner) + "_") + creatorAddr) + "_") + artId) + "_") + id)
79+
80+
81+func getIntByKFromOracle (key) = valueOrErrorMessage(getInteger(oracleFee, key), "Integer undefine or 0 in oracle")
82+
83+
84+let currentCertificationPrice = getIntByKFromOracle(("certification_fee_" + toBase58String(signAssetId)))
85+
86+func idCallerDate (i) = if (!(dappRunning))
87+ then throw(maintenanceMSG)
88+ else $Tuple3(toBase58String(i.transactionId), toBase58String(i.caller.bytes), lastBlock.timestamp)
89+
90+
91+func isPayment (i) = if ((size(i.payments) == 0))
92+ then throw("No payment attached")
93+ else {
94+ let payment = value(i.payments[0])
95+ let amount = value(payment.amount)
96+ $Tuple2(payment, amount)
97+ }
98+
99+
100+func isSignArtNFT (id) = {
101+ let assetDetails = value(assetInfo(id))
102+ if (if (if (if ((assetDetails.quantity != 1))
103+ then true
104+ else (assetDetails.decimals != 0))
105+ then true
106+ else (assetDetails.reissuable != false))
107+ then true
108+ else (assetDetails.issuer != artworksDapp))
109+ then false
110+ else true
111+ }
112+
113+
114+func acceptedAssetIds (assetId) = if (if (if (if ((assetId != toBase58String(signAssetId)))
115+ then (assetId != toBase58String(wavesAssetId))
116+ else false)
117+ then (assetId != "WAVES")
118+ else false)
119+ then (assetId != toBase58String(usdnAssetId))
120+ else false)
121+ then false
122+ else true
123+
124+
125+func getBidAssetId (assetId) = if ((assetId == "WAVES"))
126+ then unit
127+ else fromBase58String(assetId)
128+
129+
130+func getSaleOwnerAndStatus (nftid) = {
131+ let saleOwner = getStrByK(("current_owner_on_dapp_" + nftid))
132+ if ((size(saleOwner) == 0))
133+ then throw("NFT not found")
134+ else {
135+ let saleStatus = getStrByK(((("sale2nd_status_" + saleOwner) + "_") + nftid))
136+ if ((saleStatus != "OPEN"))
137+ then throw("NFT not for sale")
138+ else saleOwner
139+ }
140+ }
141+
142+
143+func getBidData (key) = {
144+ let bidData = getStrByK((key + "_OPEN"))
145+ if ((bidData == ""))
146+ then throw("Offer not found")
147+ else {
148+ let bidDataArr = split(bidData, "_")
149+ let assetId = getBidAssetId(bidDataArr[2])
150+ $Tuple3(bidDataArr, assetId, bidData)
151+ }
152+ }
153+
154+
155+func checkArtStatus (addr,id) = {
156+ let artStatus = getArtStrByK(keyFlag(addr, id))
157+ if (if ((artStatus == artIllegal))
158+ then true
159+ else (artStatus == artSuspended))
160+ then throw(("Original Artwork flagged as " + artStatus))
161+ else true
162+ }
163+
164+
165+func checkArtistStatus (addr) = {
166+ let artistStatus = getUserStrByK(keyUserStatus(addr))
167+ if (containsElement([userSuspended, userRemoved], artistStatus))
168+ then throw(("Original Artist " + artistStatus))
169+ else true
170+ }
171+
172+
173+func checkNFTInfo (assetId) = {
174+ let nftData = split(getArtStrByK(keyNFTData(assetId)), "_")
175+ let artSignID = getArtStrByK(keySignID(nftData[6], nftData[5]))
176+ if (if (!(checkArtStatus(nftData[6], nftData[5])))
177+ then !(checkArtistStatus(nftData[6]))
178+ else false)
179+ then $Tuple4(false, nftData[5], nftData[6], artSignID)
180+ else $Tuple4(true, nftData[5], nftData[6], artSignID)
181+ }
182+
183+
184+func checkARTExist (artId,creatorAddr) = {
185+ let artSignID = getArtStrByK(keySignID(creatorAddr, artId))
186+ if ((size(artSignID) == 0))
187+ then throw("Artwork not found on SIGN Art")
188+ else if (if (!(checkArtStatus(creatorAddr, artId)))
189+ then !(checkArtistStatus(creatorAddr))
190+ else false)
191+ then false
192+ else true
193+ }
194+
195+
196+func setTransfers (amount,assetId,nftid,creatorAddr,saleOwner,caller) = {
197+ let amountForSign = fraction(amount, signCut, 100)
198+ let amountForCreator = fraction(amount, creatorCut, 100)
199+ let amountForOwner = (amount - (amountForSign + amountForCreator))
200+ let signFee = ScriptTransfer(Address(fromBase58String(feeReceiver)), amountForSign, assetId)
201+ let creatorFee = ScriptTransfer(Address(fromBase58String(creatorAddr)), amountForCreator, assetId)
202+ let ownerFee = ScriptTransfer(Address(fromBase58String(saleOwner)), amountForOwner, assetId)
203+ let collectorNFT = ScriptTransfer(Address(fromBase58String(caller)), 1, fromBase58String(nftid))
204+ $Tuple4(signFee, creatorFee, ownerFee, collectorNFT)
205+ }
206+
207+
208+func validateMinSell (assetId,price) = {
209+ let minSellWaves = if (unitTest)
210+ then 10
211+ else getIntByKFromOracle("waves_min_sell")
212+ let minSellUsdn = 1000000
213+ let minSellSign = if (unitTest)
214+ then 1
215+ else (currentCertificationPrice * 2)
216+ if (if (if (if (if ((assetId == toBase58String(usdnAssetId)))
217+ then (minSellUsdn > price)
218+ else false)
219+ then (price != 0)
220+ else false)
221+ then true
222+ else if (if ((assetId == toBase58String(signAssetId)))
223+ then (minSellSign > price)
224+ else false)
225+ then (price != 0)
226+ else false)
227+ then true
228+ else if (if (if ((assetId == toBase58String(wavesAssetId)))
229+ then true
230+ else (assetId == "WAVES"))
231+ then (minSellWaves > price)
232+ else false)
233+ then (price != 0)
234+ else false)
235+ then false
236+ else true
237+ }
238+
239+
240+@Callable(i)
241+func sellNFT (price,asset) = {
242+ let $t088078846 = idCallerDate(i)
243+ let id = $t088078846._1
244+ let caller = $t088078846._2
245+ let date = $t088078846._3
246+ let $t088548890 = isPayment(i)
247+ let payment = $t088548890._1
248+ let amount = $t088548890._2
249+ let nftId = if (if (isDefined(payment.assetId))
250+ then isSignArtNFT(value(payment.assetId))
251+ else false)
252+ then toBase58String(value(payment.assetId))
253+ else throw("Only SIGN Art NFT accepted.")
254+ let $t090729141 = checkNFTInfo(nftId)
255+ let isValidNFT = $t090729141._1
256+ let artId = $t090729141._2
257+ let creatorAddr = $t090729141._3
258+ let artSignID = $t090729141._4
259+ if ((size(artSignID) == 0))
260+ then throw("Artwork not found on SIGN Art")
261+ else if (!(isValidNFT))
262+ then throw("Something went wrong")
263+ else if (!(acceptedAssetIds(asset)))
264+ then throw("Only SIGN, USDN or WAVES accepted")
265+ else if ((price == 0))
266+ then throw("Wrong minimum sell price")
267+ else if (!(validateMinSell(asset, price)))
268+ then throw("Wrong minimum sell price")
269+ else [StringEntry((getSaleKey(caller, nftId, artId, creatorAddr) + "_OPEN"), ((((((((((((toString(date) + "_") + toString(price)) + "_") + asset) + "_") + nftId) + "_") + artId) + "_") + creatorAddr) + "_") + id)), StringEntry(((("sale2nd_status_" + caller) + "_") + nftId), "OPEN"), StringEntry(("current_owner_on_dapp_" + nftId), caller)]
270+ }
271+
272+
273+
274+@Callable(i)
275+func updateSalePrice (nftId,price,asset) = {
276+ let $t01003910078 = idCallerDate(i)
277+ let id = $t01003910078._1
278+ let caller = $t01003910078._2
279+ let date = $t01003910078._3
280+ let $t01008610155 = checkNFTInfo(nftId)
281+ let isValidNFT = $t01008610155._1
282+ let artId = $t01008610155._2
283+ let creatorAddr = $t01008610155._3
284+ let artSignID = $t01008610155._4
285+ if ((size(artSignID) == 0))
286+ then throw("Artwork not found on SIGN Art, cancel your sale.")
287+ else if (!(isValidNFT))
288+ then throw("Something went wrong")
289+ else {
290+ let saleOwner = getStrByK(("current_owner_on_dapp_" + nftId))
291+ if ((saleOwner != caller))
292+ then throw("You don't own this NFT")
293+ else {
294+ let saleStatus = getStrByK(((("sale2nd_status_" + caller) + "_") + nftId))
295+ if ((saleStatus != "OPEN"))
296+ then throw("Sale not active")
297+ else if (!(acceptedAssetIds(asset)))
298+ then throw("Only SIGN, USDN or WAVES accepted")
299+ else if ((price == 0))
300+ then throw("Wrong minimum sell price")
301+ else if (!(validateMinSell(asset, price)))
302+ then throw("Wrong minimum sell price")
303+ else {
304+ let saleKey = getSaleKey(caller, nftId, artId, creatorAddr)
305+ let saleInfo = split(getStrByK((saleKey + "_OPEN")), "_")
306+[StringEntry((saleKey + "_OPEN"), ((((((((((((saleInfo[0] + "_") + toString(price)) + "_") + asset) + "_") + saleInfo[3]) + "_") + saleInfo[4]) + "_") + saleInfo[5]) + "_") + saleInfo[6]))]
307+ }
308+ }
309+ }
310+ }
311+
312+
313+
314+@Callable(i)
315+func cancelSale (nftId) = {
316+ let $t01132111360 = idCallerDate(i)
317+ let id = $t01132111360._1
318+ let caller = $t01132111360._2
319+ let date = $t01132111360._3
320+ let $t01136811593 = checkNFTInfo(nftId)
321+ let isValidNFT = $t01136811593._1
322+ let artId = $t01136811593._2
323+ let creatorAddr = $t01136811593._3
324+ let artSignID = $t01136811593._4
325+ let saleOwner = getStrByK(("current_owner_on_dapp_" + nftId))
326+ if ((saleOwner != caller))
327+ then throw("You don't own this NFT")
328+ else {
329+ let saleStatus = getStrByK(((("sale2nd_status_" + caller) + "_") + nftId))
330+ if ((saleStatus != "OPEN"))
331+ then throw("Sale not active")
332+ else {
333+ let saleKey = getSaleKey(caller, nftId, artId, creatorAddr)
334+ let saleInfo = getStrByK((saleKey + "_OPEN"))
335+[DeleteEntry((saleKey + "_OPEN")), DeleteEntry(((("sale2nd_status_" + caller) + "_") + nftId)), DeleteEntry(("current_owner_on_dapp_" + nftId)), StringEntry((((saleKey + "_") + id) + "_CANCELLED"), ((((saleInfo + "_CANCELLED_") + toString(date)) + "_") + id)), ScriptTransfer(Address(fromBase58String(caller)), 1, fromBase58String(nftId))]
336+ }
337+ }
338+ }
339+
340+
341+
342+@Callable(i)
343+func buyNFT (nftId) = {
344+ let $t01244712486 = idCallerDate(i)
345+ let id = $t01244712486._1
346+ let caller = $t01244712486._2
347+ let date = $t01244712486._3
348+ let saleOwner = getSaleOwnerAndStatus(nftId)
349+ let $t01254212611 = checkNFTInfo(nftId)
350+ let isValidNFT = $t01254212611._1
351+ let artId = $t01254212611._2
352+ let creatorAddr = $t01254212611._3
353+ let artSignID = $t01254212611._4
354+ if ((size(artSignID) == 0))
355+ then throw("Artwork not found on SIGN Art, cancel your sale.")
356+ else if (!(isValidNFT))
357+ then throw("Something went wrong")
358+ else {
359+ let saleKey = getSaleKey(saleOwner, nftId, artId, creatorAddr)
360+ let saleInfo = getStrByK((saleKey + "_OPEN"))
361+ if ((size(saleInfo) == 0))
362+ then throw("Sale Not found!")
363+ else {
364+ let saleInfoArray = split(saleInfo, "_")
365+ if ((parseInt(saleInfoArray[1]) == 0))
366+ then throw("Offer only")
367+ else {
368+ let $t01307313109 = isPayment(i)
369+ let payment = $t01307313109._1
370+ let amount = $t01307313109._2
371+ let paymentAssetStr = if (isDefined(payment.assetId))
372+ then toBase58String(value(payment.assetId))
373+ else ""
374+ if (if ((saleInfoArray[1] != toString(amount)))
375+ then true
376+ else (saleInfoArray[2] != paymentAssetStr))
377+ then throw("Payment infos don't match.")
378+ else {
379+ let amountForSign = fraction(amount, signCut, 100)
380+ let amountForCreator = fraction(amount, creatorCut, 100)
381+ let amountForOwner = (amount - (amountForSign + amountForCreator))
382+ let $t01362013748 = setTransfers(amount, payment.assetId, nftId, creatorAddr, saleOwner, caller)
383+ let signFee = $t01362013748._1
384+ let creatorFee = $t01362013748._2
385+ let ownerFee = $t01362013748._3
386+ let collectorNFT = $t01362013748._4
387+[DeleteEntry((saleKey + "_OPEN")), DeleteEntry(((("sale2nd_status_" + saleOwner) + "_") + nftId)), DeleteEntry(("current_owner_on_dapp_" + nftId)), StringEntry((((saleKey + "_") + id) + "_CLOSED"), ((((((makeString(saleInfoArray, "_") + "_CLOSED_") + toString(date)) + "_") + id) + "_") + caller)), signFee, creatorFee, ownerFee, collectorNFT]
388+ }
389+ }
390+ }
391+ }
392+ }
393+
394+
395+
396+@Callable(i)
397+func setOffer (nftId) = {
398+ let $t01416714209 = idCallerDate(i)
399+ let id = $t01416714209._1
400+ let offerOwner = $t01416714209._2
401+ let date = $t01416714209._3
402+ let $t01421514251 = isPayment(i)
403+ let payment = $t01421514251._1
404+ let amount = $t01421514251._2
405+ let assetId = if (!(isDefined(payment.assetId)))
406+ then "WAVES"
407+ else toBase58String(value(payment.assetId))
408+ if (!(acceptedAssetIds(assetId)))
409+ then throw("asset not accepted")
410+ else if ((amount == 0))
411+ then throw("Offer of 0 not allowed")
412+ else if (!(validateMinSell(assetId, amount)))
413+ then throw("Wrong minimum sell price")
414+ else {
415+ let $t01459114649 = checkNFTInfo(nftId)
416+ let isValidNFT = $t01459114649._1
417+ let artId = $t01459114649._2
418+ let creatorAddr = $t01459114649._3
419+ if (!(isValidNFT))
420+ then throw("Something went wrong")
421+ else {
422+ let saleOwner = getSaleOwnerAndStatus(nftId)
423+[StringEntry((getBidKey(offerOwner, nftId, saleOwner, id) + "_OPEN"), ((((((((((((((toString(date) + "_") + toString(amount)) + "_") + assetId) + "_") + nftId) + "_") + artId) + "_") + creatorAddr) + "_") + offerOwner) + "_") + id))]
424+ }
425+ }
426+ }
427+
428+
429+
430+@Callable(i)
431+func acceptOffer (nftId,offerId,offerOwner) = {
432+ let $t01518515256 = idCallerDate(i)
433+ let id = $t01518515256._1
434+ let caller = $t01518515256._2
435+ let date = $t01518515256._3
436+ let saleOwner = getSaleOwnerAndStatus(nftId)
437+ if ((caller != saleOwner))
438+ then throw("You cannot do this action")
439+ else {
440+ let bidKey = getBidKey(offerOwner, nftId, saleOwner, offerId)
441+ let bidValue = getStrByK((bidKey + "_OPEN"))
442+ if ((bidValue == ""))
443+ then throw("Offer not found or not for sale")
444+ else {
445+ let $t01557315631 = checkNFTInfo(nftId)
446+ let isValidNFT = $t01557315631._1
447+ let artId = $t01557315631._2
448+ let creatorAddr = $t01557315631._3
449+ if (!(isValidNFT))
450+ then throw("Something went wrong")
451+ else {
452+ let saleKey = getSaleKey(saleOwner, nftId, artId, creatorAddr)
453+ let saleValue = getStrByK((saleKey + "_OPEN"))
454+ if ((size(saleValue) == 0))
455+ then throw("Sale Not found!")
456+ else {
457+ let saleValArr = split(saleValue, "_")
458+ let $t01597216027 = getBidData(bidKey)
459+ let bidDataArr = $t01597216027._1
460+ let assetId = $t01597216027._2
461+ let bidData = $t01597216027._3
462+ let amount = value(parseInt(bidDataArr[1]))
463+ let $t01608416211 = setTransfers(amount, assetId, nftId, creatorAddr, saleOwner, bidDataArr[6])
464+ let signFee = $t01608416211._1
465+ let creatorFee = $t01608416211._2
466+ let ownerFee = $t01608416211._3
467+ let collectorNFT = $t01608416211._4
468+[DeleteEntry((saleKey + "_OPEN")), DeleteEntry((bidKey + "_OPEN")), DeleteEntry(((("sale2nd_status_" + saleOwner) + "_") + nftId)), DeleteEntry(("current_owner_on_dapp_" + nftId)), StringEntry((bidKey + "_CLOSED"), ((((bidValue + "_CLOSED_") + toString(date)) + "_") + id)), StringEntry((((saleKey + "_") + id) + "_CLOSED"), ((((((((((makeString(saleValArr, "_") + "_CLOSED-OFFER_") + toString(date)) + "_") + id) + "_") + offerOwner) + "_") + toString(amount)) + "_") + toBase58String(value(assetId)))), signFee, creatorFee, ownerFee, collectorNFT]
469+ }
470+ }
471+ }
472+ }
473+ }
474+
475+
476+
477+@Callable(i)
478+func cancelOffer (nftId,offerId,saleOwner) = {
479+ let $t01687816940 = idCallerDate(i)
480+ let id = $t01687816940._1
481+ let caller = $t01687816940._2
482+ let date = $t01687816940._3
483+ let bidKey = getBidKey(caller, nftId, saleOwner, offerId)
484+ let $t01700517060 = getBidData(bidKey)
485+ let bidDataArr = $t01700517060._1
486+ let assetId = $t01700517060._2
487+ let bidData = $t01700517060._3
488+[DeleteEntry((bidKey + "_OPEN")), StringEntry((bidKey + "_CANCELLED"), ((((bidData + "_CANCELLED_") + toString(date)) + "_") + id)), ScriptTransfer(Address(fromBase58String(caller)), parseIntValue(bidDataArr[1]), assetId)]
489+ }
490+
491+
492+
493+@Callable(i)
494+func makeRequest (artId,creatorAddr) = {
495+ let $t01739817442 = idCallerDate(i)
496+ let id = $t01739817442._1
497+ let requestOwner = $t01739817442._2
498+ let date = $t01739817442._3
499+ let $t01745017486 = isPayment(i)
500+ let payment = $t01745017486._1
501+ let amount = $t01745017486._2
502+ let assetId = if (!(isDefined(payment.assetId)))
503+ then "WAVES"
504+ else toBase58String(value(payment.assetId))
505+ if (!(acceptedAssetIds(assetId)))
506+ then throw("asset not accepted")
507+ else if (!(validateMinSell(assetId, amount)))
508+ then throw("Wrong minimum sell price")
509+ else {
510+ let isValidART = checkARTExist(artId, creatorAddr)
511+ if (!(isValidART))
512+ then throw("Something went wrong")
513+ else [StringEntry((getRequestKey(requestOwner, creatorAddr, artId, id) + "_OPEN"), ((((((((((toString(date) + "_") + toString(amount)) + "_") + toBase58String(value(payment.assetId))) + "_") + artId) + "_") + requestOwner) + "_") + id))]
514+ }
515+ }
516+
517+
518+
519+@Callable(i)
520+func fillRequest (artId,requestOwner,offerId) = {
521+ let $t01829918341 = idCallerDate(i)
522+ let id = $t01829918341._1
523+ let saleOwner = $t01829918341._2
524+ let date = $t01829918341._3
525+ let $t01834718391 = isPayment(i)
526+ let payment = $t01834718391._1
527+ let amountAttached = $t01834718391._2
528+ let NFTid = if (if (isDefined(payment.assetId))
529+ then isSignArtNFT(value(payment.assetId))
530+ else false)
531+ then payment.assetId
532+ else throw("No NFT found")
533+ let NFTdata = split(getArtStrByK(("nft_" + toBase58String(value(NFTid)))), "_")
534+ if ((size(NFTdata) == 0))
535+ then throw("No NFT found")
536+ else {
537+ let requestKey = getRequestKey(requestOwner, NFTdata[6], artId, offerId)
538+ let requestData = split(getStrByK((requestKey + "_OPEN")), "_")
539+ if ((size(requestData) == 1))
540+ then throw("No request found")
541+ else if ((requestData[3] != NFTdata[5]))
542+ then throw("This NFT don't match the requested artwork")
543+ else {
544+ let amount = value(parseInt(requestData[1]))
545+ let $t01914619321 = setTransfers(amount, fromBase58String(requestData[2]), toBase58String(value(NFTid)), NFTdata[6], saleOwner, requestData[4])
546+ let signFee = $t01914619321._1
547+ let creatorFee = $t01914619321._2
548+ let ownerFee = $t01914619321._3
549+ let collectorNFT = $t01914619321._4
550+[DeleteEntry((requestKey + "_OPEN")), StringEntry((requestKey + "_CLOSED"), ((((((((((((toString(date) + "_") + toString(amount)) + "_") + requestData[2]) + "_") + artId) + "_") + requestOwner) + "_") + saleOwner) + "_") + id)), signFee, creatorFee, ownerFee, collectorNFT]
551+ }
552+ }
553+ }
554+
555+
556+
557+@Callable(i)
558+func cancelRequest (artId,creatorAddr,requestId) = {
559+ let $t01978419828 = idCallerDate(i)
560+ let id = $t01978419828._1
561+ let requestOwner = $t01978419828._2
562+ let date = $t01978419828._3
563+ let requestKey = getRequestKey(requestOwner, creatorAddr, artId, requestId)
564+ let requestData = getStrByK((requestKey + "_OPEN"))
565+ if ((size(requestData) == 0))
566+ then throw("Request not found")
567+ else {
568+ let requestDataArr = split(requestData, "_")
569+[DeleteEntry((requestKey + "_OPEN")), StringEntry((((((requestKey + "_") + toString(date)) + "_") + id) + "_CANCELLED"), ((requestData + "_") + toString(date))), ScriptTransfer(Address(fromBase58String(requestOwner)), parseIntValue(requestDataArr[1]), fromBase58String(requestDataArr[2]))]
570+ }
571+ }
572+
573+

github/deemru/w8io/169f3d6 
47.82 ms