tx · FH9XdY1yxxh9E2qNY8bEjqp4CNZKTZ1VM75nv7fAqxxS

3MzL9nAXDCmu3rvVQWDjTfQJ1vXLjECB1rx:  -0.01400000 Waves

2021.05.20 10:28 [1533694] smart account 3MzL9nAXDCmu3rvVQWDjTfQJ1vXLjECB1rx > SELF 0.00000000 Waves

{ "type": 13, "id": "FH9XdY1yxxh9E2qNY8bEjqp4CNZKTZ1VM75nv7fAqxxS", "fee": 1400000, "feeAssetId": null, "timestamp": 1621495780328, "version": 2, "chainId": 84, "sender": "3MzL9nAXDCmu3rvVQWDjTfQJ1vXLjECB1rx", "senderPublicKey": "fiN6rena46GVgA8Lskrx46uQu6iJLZdfGpsHZJUJEwy", "proofs": [ "33sbXpqY8thT93DUSLmX8pokMwgWiRqiDwMxEQKjPXZmYJtTdzDaqPouXoW8wkyVWeVBpAAybKw3anJzkF9sCSve" ], "script": "base64:AAIEAAAAAAAAAD4IAhIECgIBCBIDCgEIEgMKAQgSAwoBCBIFCgMICAgSBQoDCAgIEgQKAggIEgUKAwgICBIFCgMICAgSAwoBCAAAACgAAAAACHVuaXRUZXN0BwAAAAAJb3JhY2xlRmVlCQEAAAAFdmFsdWUAAAABCQAEJgAAAAECAAAAIzNOMnM1UnRhSFBCZW5Dc3gyRUNjb0ZSYllIeDNub1poWFcxAAAAAAhzaWduRGFwcAkBAAAABXZhbHVlAAAAAQkABCYAAAABAgAAACMzTkMyOGhTaXZybXNUVVhhWUQxeDZMMzYySjRacFVub1RkQgAAAAAMYXJ0d29ya3NEYXBwCQEAAAAFdmFsdWUAAAABCQAEJgAAAAECAAAAIzNOQnluZmJYQzJLYXN0VXhodWtjTVVhRTU4SzljQmRCOVVZAAAAAAtmZWVSZWNlaXZlcgIAAAAjM04xRTZ0WGRkUm9WYVJmUTlkUTN2ZzVMYVcyZnNkOEhLdWIAAAAACHVzZXJEYXBwAwUAAAAIdW5pdFRlc3QJAQAAAAV2YWx1ZQAAAAEJAAQmAAAAAQIAAAAjM010NFJHTUV5alNXWUFvY1RQcWQ1NXdkSFFRQjNQVTJVQ20JAQAAAAV2YWx1ZQAAAAEJAAQmAAAAAQIAAAAjM044eFhhWWpFMjdBYTc5ZDVoSHJoSHU5SGFGb1RCbWhERWoAAAAADXdoaXRlbGlzdERhcHAJAQAAAAV2YWx1ZQAAAAEJAAQmAAAAAQIAAAAjM042QmFWMWRDQjR6ZzQzZ29OTkhhQ3R2UjEzQmN5SjVHc3EAAAAAC3NpZ25Bc3NldElkAQAAACDopWq8yndC8nBhMjVKT0WDubke5ZlnF8Nx6tkLoQSt6wAAAAALdXNkbkFzc2V0SWQBAAAAIA/yHBKs5MQ8muxGGqslqLDsugcrRsxtiHLwteKSSQG0AAAAAAx3YXZlc0Fzc2V0SWQBAAAAAAAAAAAFY2hyaXMCAAAAIzNNc0c2alBOQ3JWSlV0WUI3WEpCeFM3dXRXc1hBZjRuOVZwAAAAAARqb2VwAgAAACMzTXptNFZMd3NOOXVad2JUTXpQajNYdXhWNmtFZkFSOFVETgAAAAAHc2lnbkN1dAAAAAAAAAAAAwAAAAAKY3JlYXRvckN1dAAAAAAAAAAACgAAAAALZGFwcFJ1bm5p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", "height": 1533694, "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 = false
5+
6+let oracleFee = value(addressFromString("3N2s5RtaHPBenCsx2ECcoFRbYHx3noZhXW1"))
7+
8+let signDapp = value(addressFromString("3NC28hSivrmsTUXaYD1x6L362J4ZpUnoTdB"))
9+
10+let artworksDapp = value(addressFromString("3NBynfbXC2KastUxhukcMUaE58K9cBdB9UY"))
11+
12+let feeReceiver = "3N1E6tXddRoVaRfQ9dQ3vg5LaW2fsd8HKub"
13+
14+let userDapp = if (unitTest)
15+ then value(addressFromString("3Mt4RGMEyjSWYAocTPqd55wdHQQB3PU2UCm"))
16+ else value(addressFromString("3N8xXaYjE27Aa79d5hHrhHu9HaFoTBmhDEj"))
17+
18+let whitelistDapp = value(addressFromString("3N6BaV1dCB4zg43goNNHaCtvR13BcyJ5Gsq"))
19+
20+let signAssetId = base58'Gf9t8FA4H3ssoZPCwrg3KwUFCci8zuUFP9ssRsUY3s6a'
21+
22+let usdnAssetId = base58'25FEqEjRkqK6yCkiT7Lz6SAYz7gUFCtxfCChnrVFD5AT'
23+
24+let wavesAssetId = base58''
25+
26+let chris = "3MsG6jPNCrVJUtYB7XJBxS7utWsXAf4n9Vp"
27+
28+let joep = "3Mzm4VLwsN9uZwbTMzPj3XuxV6kEfAR8UDN"
29+
30+let signCut = 3
31+
32+let creatorCut = 10
33+
34+let dappRunning = valueOrElse(getBoolean(userDapp, "conf_dapp_is_running"), true)
35+
36+let maintenanceMSG = valueOrElse(getString(userDapp, "conf_maintenance_msg"), "")
37+
38+let userSuspended = "SUSPENDED"
39+
40+let userRemoved = "REMOVED"
41+
42+let artIllegal = "ILLEGAL"
43+
44+let artSuspended = "SUSPENDED"
45+
46+func getUserStrByK (key) = valueOrElse(getString(userDapp, key), "Error")
47+
48+
49+func getArtStrByK (key) = valueOrElse(getString(artworksDapp, key), "")
50+
51+
52+func getStrByK (key) = valueOrElse(getString(this, key), "")
53+
54+
55+func getIntByK (key) = valueOrElse(getInteger(this, key), 0)
56+
57+
58+func keyUserStatus (addr) = ("user_status_" + addr)
59+
60+
61+func keySignID (artistAddr,artId) = ((("art_signid_" + artId) + "_") + artistAddr)
62+
63+
64+func keyFlag (artistAddr,artId) = ((("art_flag_" + artId) + "_") + artistAddr)
65+
66+
67+func keyNFTData (id) = ("nft_" + id)
68+
69+
70+func idCallerDate (i) = if (!(dappRunning))
71+ then throw(maintenanceMSG)
72+ else $Tuple3(toBase58String(i.transactionId), toBase58String(i.caller.bytes), lastBlock.timestamp)
73+
74+
75+func isPayment (i) = if ((size(i.payments) == 0))
76+ then throw("No payment attached")
77+ else {
78+ let payment = value(i.payments[0])
79+ let amount = value(payment.amount)
80+ $Tuple2(payment, amount)
81+ }
82+
83+
84+func isSignArtNFT (id) = {
85+ let assetDetails = value(assetInfo(id))
86+ if (if (if (if ((assetDetails.quantity != 1))
87+ then true
88+ else (assetDetails.decimals != 0))
89+ then true
90+ else (assetDetails.reissuable != false))
91+ then true
92+ else (assetDetails.issuer != artworksDapp))
93+ then false
94+ else true
95+ }
96+
97+
98+func acceptedAssetIds (assetId) = if (if (if (if ((assetId != toBase58String(signAssetId)))
99+ then (assetId != toBase58String(wavesAssetId))
100+ else false)
101+ then (assetId != "WAVES")
102+ else false)
103+ then (assetId != toBase58String(usdnAssetId))
104+ else false)
105+ then false
106+ else true
107+
108+
109+func getBidAssetId (assetId) = if ((assetId == "WAVES"))
110+ then unit
111+ else fromBase58String(assetId)
112+
113+
114+func getSaleOwnerAndStatus (nftid) = {
115+ let saleOwner = getStrByK(("current_owner_on_dapp_" + nftid))
116+ if ((size(saleOwner) == 0))
117+ then throw("NFT not found")
118+ else {
119+ let saleStatus = getStrByK(((("sale2nd_status_" + saleOwner) + "_") + nftid))
120+ if ((saleStatus != "OPEN"))
121+ then throw("NFT not for sale")
122+ else saleOwner
123+ }
124+ }
125+
126+
127+func getBidData (key) = {
128+ let bidData = getStrByK((key + "_OPEN"))
129+ if ((bidData == ""))
130+ then throw("Offer not found")
131+ else {
132+ let bidDataArr = split(bidData, "_")
133+ let assetId = getBidAssetId(bidDataArr[2])
134+ $Tuple3(bidDataArr, assetId, bidData)
135+ }
136+ }
137+
138+
139+func checkArtStatus (addr,id) = {
140+ let artStatus = getArtStrByK(keyFlag(addr, id))
141+ if (if ((artStatus == artIllegal))
142+ then true
143+ else (artStatus == artSuspended))
144+ then throw(("Original Artwork flagged as " + artStatus))
145+ else true
146+ }
147+
148+
149+func checkArtistStatus (addr) = {
150+ let artistStatus = getUserStrByK(keyUserStatus(addr))
151+ if (containsElement([userSuspended, userRemoved], artistStatus))
152+ then throw(("Original Artist " + artistStatus))
153+ else true
154+ }
155+
156+
157+func checkNFTInfo (assetId) = {
158+ let nftData = split(getArtStrByK(keyNFTData(assetId)), "_")
159+ let artSignID = getArtStrByK(keySignID(nftData[6], nftData[5]))
160+ if ((size(artSignID) == 0))
161+ then throw("Artwork not found on SIGN Art")
162+ else if (if (!(checkArtStatus(nftData[6], nftData[5])))
163+ then !(checkArtistStatus(nftData[6]))
164+ else false)
165+ then $Tuple2(false, nftData[6])
166+ else $Tuple2(true, nftData[6])
167+ }
168+
169+
170+func checkARTExist (artId,creatorAddr) = {
171+ let artSignID = getArtStrByK(keySignID(creatorAddr, artId))
172+ if ((size(artSignID) == 0))
173+ then throw("Artwork not found on SIGN Art")
174+ else if (if (!(checkArtStatus(creatorAddr, artId)))
175+ then !(checkArtistStatus(creatorAddr))
176+ else false)
177+ then false
178+ else true
179+ }
180+
181+
182+func setTransfers (amount,assetId,nftid,creatorAddr,saleOwner,caller) = {
183+ let amountForSign = fraction(amount, signCut, 100)
184+ let amountForCreator = fraction(amount, creatorCut, 100)
185+ let amountForOwner = (amount - (amountForSign + amountForCreator))
186+ let signFee = ScriptTransfer(Address(fromBase58String(feeReceiver)), amountForSign, assetId)
187+ let creatorFee = ScriptTransfer(Address(fromBase58String(creatorAddr)), amountForCreator, assetId)
188+ let ownerFee = ScriptTransfer(Address(fromBase58String(saleOwner)), amountForOwner, assetId)
189+ let collectorFee = ScriptTransfer(Address(fromBase58String(caller)), 1, fromBase58String(nftid))
190+ $Tuple4(signFee, creatorFee, ownerFee, collectorFee)
191+ }
192+
193+
194+@Callable(i)
195+func sellNFT (price,asset) = {
196+ let $t070747113 = idCallerDate(i)
197+ let id = $t070747113._1
198+ let caller = $t070747113._2
199+ let date = $t070747113._3
200+ let $t071187154 = isPayment(i)
201+ let payment = $t071187154._1
202+ let amount = $t071187154._2
203+ let assetId = if (if (isDefined(payment.assetId))
204+ then isSignArtNFT(value(payment.assetId))
205+ else false)
206+ then payment.assetId
207+ else throw("Only SIGN Art NFT accepted.")
208+ if (!(acceptedAssetIds(asset)))
209+ then throw("Only SIGN, USDN or WAVES accepted")
210+ else {
211+ let $t074347510 = checkNFTInfo(toBase58String(value(assetId)))
212+ let isValidNFT = $t074347510._1
213+ let creatorAddr = $t074347510._2
214+ if (!(isValidNFT))
215+ then throw("Something went wrong")
216+ else [StringEntry((((((("sale2nd_info_" + caller) + "_") + toBase58String(value(payment.assetId))) + "_") + creatorAddr) + "_OPEN"), ((((((((toString(date) + "_") + toString(price)) + "_") + asset) + "_") + toBase58String(value(payment.assetId))) + "_") + creatorAddr)), StringEntry(((("sale2nd_status_" + caller) + "_") + toBase58String(value(payment.assetId))), "OPEN"), StringEntry(("current_owner_on_dapp_" + toBase58String(value(payment.assetId))), caller)]
217+ }
218+ }
219+
220+
221+
222+@Callable(i)
223+func cancelSale (nftid) = {
224+ let $t082458284 = idCallerDate(i)
225+ let id = $t082458284._1
226+ let caller = $t082458284._2
227+ let date = $t082458284._3
228+ let saleOwner = getStrByK(("current_owner_on_dapp_" + nftid))
229+ if ((saleOwner != caller))
230+ then throw("You don't own this NFT")
231+ else {
232+ let saleStatus = getStrByK(((("sale2nd_status_" + caller) + "_") + nftid))
233+ if ((saleStatus != "OPEN"))
234+ then throw("Sale not active")
235+ else {
236+ let creatorAddr = split(getArtStrByK(keyNFTData(nftid)), "_")[6]
237+ let saleInfo = getStrByK(((((((("sale2nd_info_" + caller) + "_") + nftid) + "_") + creatorAddr) + "_") + saleStatus))
238+[DeleteEntry((((((("sale2nd_info_" + caller) + "_") + nftid) + "_") + creatorAddr) + "_OPEN")), DeleteEntry(((("sale2nd_status_" + caller) + "_") + nftid)), DeleteEntry(("current_owner_on_dapp_" + nftid)), StringEntry((((((((((("sale2nd_info_" + caller) + "_") + nftid) + "_") + creatorAddr) + "_") + toString(date)) + "_") + id) + "_CANCELLED"), saleInfo), ScriptTransfer(Address(fromBase58String(caller)), 1, fromBase58String(nftid))]
239+ }
240+ }
241+ }
242+
243+
244+
245+@Callable(i)
246+func buyNFT (nftid) = {
247+ let $t094139484 = idCallerDate(i)
248+ let id = $t094139484._1
249+ let caller = $t094139484._2
250+ let date = $t094139484._3
251+ let saleOwner = getSaleOwnerAndStatus(nftid)
252+ let $t095399590 = checkNFTInfo(nftid)
253+ let isValidNFT = $t095399590._1
254+ let creatorAddr = $t095399590._2
255+ if (!(isValidNFT))
256+ then throw("Something went wrong")
257+ else {
258+ let saleInfo = getStrByK((((((("sale2nd_info_" + saleOwner) + "_") + nftid) + "_") + creatorAddr) + "_OPEN"))
259+ if ((size(saleInfo) == 0))
260+ then throw("Sale Not found!")
261+ else {
262+ let saleInfoArray = split(saleInfo, "_")
263+ if ((parseInt(saleInfoArray[1]) == 0))
264+ then throw("Offer only")
265+ else {
266+ let $t099269962 = isPayment(i)
267+ let payment = $t099269962._1
268+ let amount = $t099269962._2
269+ if (if ((saleInfoArray[1] != toString(amount)))
270+ then true
271+ else (saleInfoArray[2] != toBase58String(value(payment.assetId))))
272+ then throw("Payment infos don't match.")
273+ else {
274+ let amountForSign = fraction(amount, signCut, 100)
275+ let amountForCreator = fraction(amount, creatorCut, 100)
276+ let amountForOwner = (amount - (amountForSign + amountForCreator))
277+ let $t01038510513 = setTransfers(amount, payment.assetId, nftid, creatorAddr, saleOwner, caller)
278+ let signFee = $t01038510513._1
279+ let creatorFee = $t01038510513._2
280+ let ownerFee = $t01038510513._3
281+ let collectorFee = $t01038510513._4
282+[DeleteEntry((((((("sale2nd_info_" + saleOwner) + "_") + nftid) + "_") + creatorAddr) + "_OPEN")), DeleteEntry(((("sale2nd_status_" + saleOwner) + "_") + nftid)), DeleteEntry(("current_owner_on_dapp_" + nftid)), StringEntry((((((((((("sale2nd_info_" + saleOwner) + "_") + nftid) + "_") + creatorAddr) + "_") + toString(date)) + "_") + id) + "_CLOSED"), ((((((((((toString(date) + "_") + toString(amount)) + "_") + toBase58String(value(payment.assetId))) + "_") + nftid) + "_") + creatorAddr) + "_to_") + caller)), signFee, creatorFee, ownerFee, collectorFee]
283+ }
284+ }
285+ }
286+ }
287+ }
288+
289+
290+
291+@Callable(i)
292+func setOffer (nftid) = {
293+ let $t01162711669 = idCallerDate(i)
294+ let id = $t01162711669._1
295+ let offerOwner = $t01162711669._2
296+ let date = $t01162711669._3
297+ let $t01167411710 = isPayment(i)
298+ let payment = $t01167411710._1
299+ let amount = $t01167411710._2
300+ let assetId = if (!(isDefined(payment.assetId)))
301+ then "WAVES"
302+ else toBase58String(value(payment.assetId))
303+ if (!(acceptedAssetIds(assetId)))
304+ then throw("asset not accepted")
305+ else {
306+ let $t01189611947 = checkNFTInfo(nftid)
307+ let isValidNFT = $t01189611947._1
308+ let creatorAddr = $t01189611947._2
309+ if (!(isValidNFT))
310+ then throw("Something went wrong")
311+ else {
312+ let saleOwner = getSaleOwnerAndStatus(nftid)
313+[StringEntry((((((((("offer2nd_" + offerOwner) + "_") + nftid) + "_") + saleOwner) + "_") + id) + "_OPEN"), ((((((((toString(date) + "_") + toString(amount)) + "_") + assetId) + "_") + offerOwner) + "_") + id))]
314+ }
315+ }
316+ }
317+
318+
319+
320+@Callable(i)
321+func acceptOffer (nftid,offerId,offerOwner) = {
322+ let $t01249512565 = idCallerDate(i)
323+ let id = $t01249512565._1
324+ let caller = $t01249512565._2
325+ let date = $t01249512565._3
326+ let saleOwner = getSaleOwnerAndStatus(nftid)
327+ if ((caller != saleOwner))
328+ then throw("You cannot do this action")
329+ else {
330+ let offerExist = getStrByK((((((((("offer2nd_" + offerOwner) + "_") + nftid) + "_") + saleOwner) + "_") + offerId) + "_OPEN"))
331+ if ((offerExist == ""))
332+ then throw("Offer not found or not for sale")
333+ else {
334+ let $t01287012921 = checkNFTInfo(nftid)
335+ let isValidNFT = $t01287012921._1
336+ let creatorAddr = $t01287012921._2
337+ if (!(isValidNFT))
338+ then throw("Something went wrong")
339+ else {
340+ let saleInfo = getStrByK((((((("sale2nd_info_" + saleOwner) + "_") + nftid) + "_") + creatorAddr) + "_OPEN"))
341+ if ((size(saleInfo) == 0))
342+ then throw("Sale Not found!")
343+ else {
344+ let bidDataKey = ((((((("offer2nd_" + offerOwner) + "_") + nftid) + "_") + saleOwner) + "_") + offerId)
345+ let $t01325713316 = getBidData(bidDataKey)
346+ let bidDataArr = $t01325713316._1
347+ let assetId = $t01325713316._2
348+ let bidData = $t01325713316._3
349+ let amount = value(parseInt(bidDataArr[1]))
350+ let $t01337013497 = setTransfers(amount, assetId, nftid, creatorAddr, saleOwner, bidDataArr[3])
351+ let signFee = $t01337013497._1
352+ let creatorFee = $t01337013497._2
353+ let ownerFee = $t01337013497._3
354+ let collectorFee = $t01337013497._4
355+[DeleteEntry((((((("sale2nd_info_" + saleOwner) + "_") + nftid) + "_") + creatorAddr) + "_OPEN")), DeleteEntry((bidDataKey + "_OPEN")), DeleteEntry(((("sale2nd_status_" + saleOwner) + "_") + nftid)), DeleteEntry(("current_owner_on_dapp_" + nftid)), StringEntry((((((bidDataKey + "_") + toString(date)) + "_") + id) + "_CLOSED"), ((((((((toString(date) + "_") + toString(amount)) + "_") + toBase58String(value(assetId))) + "_") + offerOwner) + "_") + offerId)), StringEntry((((((((((("sale2nd_info_" + saleOwner) + "_") + nftid) + "_") + creatorAddr) + "_") + toString(date)) + "_") + id) + "_CLOSED"), ((((((((((toString(date) + "_") + toString(amount)) + "_") + toBase58String(value(assetId))) + "_") + nftid) + "_") + creatorAddr) + "_to_") + offerOwner)), signFee, creatorFee, ownerFee, collectorFee]
356+ }
357+ }
358+ }
359+ }
360+ }
361+
362+
363+
364+@Callable(i)
365+func cancelOffer (nftid,offerId,saleOwner) = {
366+ let $t01429714358 = idCallerDate(i)
367+ let id = $t01429714358._1
368+ let caller = $t01429714358._2
369+ let date = $t01429714358._3
370+ let bidDataKey = ((((((("offer2nd_" + caller) + "_") + nftid) + "_") + saleOwner) + "_") + offerId)
371+ let $t01443914498 = getBidData(bidDataKey)
372+ let bidDataArr = $t01443914498._1
373+ let assetId = $t01443914498._2
374+ let bidData = $t01443914498._3
375+[DeleteEntry((bidDataKey + "_OPEN")), StringEntry((((((bidDataKey + "_") + toString(date)) + "_") + id) + "_CANCELLED"), ((bidData + "_") + toString(date))), ScriptTransfer(Address(fromBase58String(caller)), parseIntValue(bidDataArr[1]), assetId)]
376+ }
377+
378+
379+
380+@Callable(i)
381+func makeRequest (artId,creatorAddr) = {
382+ let $t01483314877 = idCallerDate(i)
383+ let id = $t01483314877._1
384+ let requestOwner = $t01483314877._2
385+ let date = $t01483314877._3
386+ let $t01488214918 = isPayment(i)
387+ let payment = $t01488214918._1
388+ let amount = $t01488214918._2
389+ let assetId = if (!(isDefined(payment.assetId)))
390+ then "WAVES"
391+ else toBase58String(value(payment.assetId))
392+ if (!(acceptedAssetIds(assetId)))
393+ then throw("asset not accepted")
394+ else {
395+ let isValidART = checkARTExist(artId, creatorAddr)
396+ if (!(isValidART))
397+ then throw("Something went wrong")
398+ else [StringEntry((((((((("request2nd_" + requestOwner) + "_") + creatorAddr) + "_") + artId) + "_") + id) + "_OPEN"), ((((((((((toString(date) + "_") + toString(amount)) + "_") + toBase58String(value(payment.assetId))) + "_") + artId) + "_") + requestOwner) + "_") + id))]
399+ }
400+ }
401+
402+
403+
404+@Callable(i)
405+func fillRequest (artId,requestOwner,offerId) = {
406+ let $t01569315735 = idCallerDate(i)
407+ let id = $t01569315735._1
408+ let saleOwner = $t01569315735._2
409+ let date = $t01569315735._3
410+ let $t01574015784 = isPayment(i)
411+ let payment = $t01574015784._1
412+ let amountAttached = $t01574015784._2
413+ let NFTid = if (if (isDefined(payment.assetId))
414+ then isSignArtNFT(value(payment.assetId))
415+ else false)
416+ then payment.assetId
417+ else throw("No NFT found")
418+ let NFTdata = split(getArtStrByK(("nft_" + toBase58String(value(NFTid)))), "_")
419+ if ((size(NFTdata) == 0))
420+ then throw("No NFT found")
421+ else {
422+ let requestData = split(getStrByK((((((((("request2nd_" + requestOwner) + "_") + NFTdata[6]) + "_") + artId) + "_") + offerId) + "_OPEN")), "_")
423+ if ((size(requestData) == 1))
424+ then throw("No request found")
425+ else if ((requestData[3] != NFTdata[5]))
426+ then throw("This NFT don't match the requested artwork")
427+ else {
428+ let amount = value(parseInt(requestData[1]))
429+ let $t01650416679 = setTransfers(amount, fromBase58String(requestData[2]), toBase58String(value(NFTid)), NFTdata[6], saleOwner, requestData[4])
430+ let signFee = $t01650416679._1
431+ let creatorFee = $t01650416679._2
432+ let ownerFee = $t01650416679._3
433+ let collectorFee = $t01650416679._4
434+[DeleteEntry((((((((("request2nd_" + requestOwner) + "_") + NFTdata[6]) + "_") + artId) + "_") + offerId) + "_OPEN")), StringEntry((((((((("request2nd_" + requestOwner) + "_") + NFTdata[6]) + "_") + artId) + "_") + offerId) + "_CLOSED"), ((((((((((((toString(date) + "_") + toString(amount)) + "_") + requestData[2]) + "_") + artId) + "_") + requestOwner) + "_") + saleOwner) + "_") + id)), signFee, creatorFee, ownerFee, collectorFee]
435+ }
436+ }
437+ }
438+
439+
440+
441+@Callable(i)
442+func cancelRequest (artId,creatorAddr,requestId) = {
443+ let $t01713917183 = idCallerDate(i)
444+ let id = $t01713917183._1
445+ let requestOwner = $t01713917183._2
446+ let date = $t01713917183._3
447+ let requesDataKey = ((((((("request2nd_" + requestOwner) + "_") + creatorAddr) + "_") + artId) + "_") + requestId)
448+ let requestData = getStrByK((requesDataKey + "_OPEN"))
449+ if ((size(requestData) == 0))
450+ then throw("Request not found")
451+ else {
452+ let requestDataArr = split(requestData, "_")
453+[DeleteEntry((requesDataKey + "_OPEN")), StringEntry((((((requesDataKey + "_") + toString(date)) + "_") + id) + "_CANCELLED"), ((requestData + "_") + toString(date))), ScriptTransfer(Address(fromBase58String(requestOwner)), parseIntValue(requestDataArr[1]), fromBase58String(requestDataArr[2]))]
454+ }
455+ }
456+
457+
458+
459+@Callable(i)
460+func deleteEntry (entry) = {
461+ let caller = toString(addressFromPublicKey(i.callerPublicKey))
462+ if ((caller == chris))
463+ then [DeleteEntry(entry)]
464+ else throw("no")
465+ }
466+
467+

github/deemru/w8io/026f985 
31.56 ms