tx · FFp9Tcimf3QVFdcMmCLWTmFAXeFqHg5cv5miB9E9qe7v

3N5QxjzyhSbfn6sSZbNi3cZpi3mQYzzdAJh:  -0.01400000 Waves

2021.06.05 12:48 [1556900] smart account 3N5QxjzyhSbfn6sSZbNi3cZpi3mQYzzdAJh > SELF 0.00000000 Waves

{ "type": 13, "id": "FFp9Tcimf3QVFdcMmCLWTmFAXeFqHg5cv5miB9E9qe7v", "fee": 1400000, "feeAssetId": null, "timestamp": 1622886565957, "version": 2, "chainId": 84, "sender": "3N5QxjzyhSbfn6sSZbNi3cZpi3mQYzzdAJh", "senderPublicKey": "6Mcz1esP83dqerEDcmXFre4cDvDJ9agsWYPot386W2pn", "proofs": [ "44VX3XYxrk6pwJyEigQwMJuVTBc2zqtnG1VPzKjFBteAKceZuzJ1VhKTr12SsaUsdChoDJVvuBaVMGcxMSgECgbk" ], "script": "base64:AAIEAAAAAAAAAEUIAhIECgIBCBIFCgMIAQgSAwoBCBIDCgEIEgMKAQgSBQoDCAgIEgUKAwgICBIECgIICBIFCgMICAgSBQoDCAgIEgMKAQgAAAAoAAAAAAh1bml0VGVzdAcAAAAACW9yYWNsZUZlZQkBAAAABXZhbHVlAAAAAQkABCYAAAABAgAAACMzTjJzNVJ0YUhQQmVuQ3N4MkVDY29GUmJZSHgzbm9aaFhXMQAAAAAIc2lnbkRhcHAJAQAAAAV2YWx1ZQAAAAEJAAQmAAAAAQIAAAAjM05DMjhoU2l2cm1zVFVYYVlEMXg2TDM2Mko0WnBVbm9UZEIAAAAADGFydHdvcmtzRGFwcAkBAAAABXZhbHVlAAAAAQkABCYAAAABAgAAACMzTkJ5bmZiWEMyS2FzdFV4aHVrY01VYUU1OEs5Y0JkQjlVWQAAAAALZmVlUmVjZWl2ZXICAAAAIzNOMUU2dFhkZFJvVmFSZlE5ZFEzdmc1TGFXMmZzZDhIS3ViAAAAAAh1c2VyRGFwcAMFAAAACHVuaXRUZXN0CQEAAAAFdmFsdWUAAAABCQAEJgAAAAECAAAAIzNNdDRSR01FeWpTV1lBb2NUUHFkNTV3ZEhRUUIzUFUyVUNtCQEAAAAFdmFsdWUAAAABCQAEJgAAAAECAAAAIzNOOHhYYVlqRTI3QWE3OWQ1aEhyaEh1OUhhRm9UQm1oREVqAAAAAA13aGl0ZWxpc3REYXBwCQEAAAAFdmFsdWUAAAABCQAEJgAAAAECAAAAIzNONkJhVjFkQ0I0emc0M2dvTk5IYUN0dlIxM0JjeUo1R3NxAAAAAAtzaWduQXNzZXRJZAEAAAAg6KVqvMp3QvJwYTI1Sk9Fg7m5HuWZZxfDcerZC6EEresAAAAAC3VzZG5Bc3NldElkAQAAACAP8hwSrOTEPJrsRhqrJaiw7LoHK0bMbYhy8LXikkkBtAAAAAAMd2F2ZXNBc3NldElkAQAAAAAAAAAABWNocmlzAgAAACMzTXNHNmpQTkNyVkpVdFlCN1hKQnhTN3V0V3NYQWY0bjlWcAAAAAAEam9lcAIAAAAjM016bTRWTHdzTjl1WndiVE16UGozWHV4VjZrRWZBUjhVRE4AAAAAB3NpZ25DdXQAAAAAAAAAAAMAAAAACmNyZWF0b3JDdXQAAAAAAAAAAAoAAAAAC2Rh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", "height": 1556900, "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 $Tuple3(false, nftData[5], nftData[6])
166+ else $Tuple3(true, nftData[5], 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 $t071067145 = idCallerDate(i)
197+ let id = $t071067145._1
198+ let caller = $t071067145._2
199+ let date = $t071067145._3
200+ let $t071507186 = isPayment(i)
201+ let payment = $t071507186._1
202+ let amount = $t071507186._2
203+ let nftId = if (if (isDefined(payment.assetId))
204+ then isSignArtNFT(value(payment.assetId))
205+ else false)
206+ then toBase58String(value(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 $t074877545 = checkNFTInfo(nftId)
212+ let isValidNFT = $t074877545._1
213+ let artId = $t074877545._2
214+ let creatorAddr = $t074877545._3
215+ if (!(isValidNFT))
216+ then throw("Something went wrong")
217+ else [StringEntry((((((("sale2nd_info_" + caller) + "_") + nftId) + "_") + creatorAddr) + "_OPEN"), ((((((((((((toString(date) + "_") + toString(price)) + "_") + asset) + "_") + nftId) + "_") + artId) + "_") + creatorAddr) + "_") + id)), StringEntry(((("sale2nd_status_" + caller) + "_") + nftId), "OPEN"), StringEntry(("current_owner_on_dapp_" + nftId), caller)]
218+ }
219+ }
220+
221+
222+
223+@Callable(i)
224+func updateSalePrice (nftid,price,asset) = {
225+ let $t080528091 = idCallerDate(i)
226+ let id = $t080528091._1
227+ let caller = $t080528091._2
228+ let date = $t080528091._3
229+ let saleOwner = getStrByK(("current_owner_on_dapp_" + nftid))
230+ if ((saleOwner != caller))
231+ then throw("You don't own this NFT")
232+ else {
233+ let saleStatus = getStrByK(((("sale2nd_status_" + caller) + "_") + nftid))
234+ if ((saleStatus != "OPEN"))
235+ then throw("Sale not active")
236+ else {
237+ let creatorAddr = split(getArtStrByK(keyNFTData(nftid)), "_")[6]
238+ let saleInfo = split(getStrByK(((((((("sale2nd_info_" + caller) + "_") + nftid) + "_") + creatorAddr) + "_") + saleStatus)), "_")
239+[StringEntry((((((("sale2nd_info_" + caller) + "_") + nftid) + "_") + creatorAddr) + "_OPEN"), ((((((((((((saleInfo[0] + "_") + toString(price)) + "_") + asset) + "_") + saleInfo[3]) + "_") + saleInfo[4]) + "_") + saleInfo[5]) + "_") + saleInfo[6]))]
240+ }
241+ }
242+ }
243+
244+
245+
246+@Callable(i)
247+func cancelSale (nftid) = {
248+ let $t090599098 = idCallerDate(i)
249+ let id = $t090599098._1
250+ let caller = $t090599098._2
251+ let date = $t090599098._3
252+ let saleOwner = getStrByK(("current_owner_on_dapp_" + nftid))
253+ if ((saleOwner != caller))
254+ then throw("You don't own this NFT")
255+ else {
256+ let saleStatus = getStrByK(((("sale2nd_status_" + caller) + "_") + nftid))
257+ if ((saleStatus != "OPEN"))
258+ then throw("Sale not active")
259+ else {
260+ let creatorAddr = split(getArtStrByK(keyNFTData(nftid)), "_")[6]
261+ let saleInfo = getStrByK(((((((("sale2nd_info_" + caller) + "_") + nftid) + "_") + creatorAddr) + "_") + saleStatus))
262+[DeleteEntry((((((("sale2nd_info_" + caller) + "_") + nftid) + "_") + creatorAddr) + "_OPEN")), DeleteEntry(((("sale2nd_status_" + caller) + "_") + nftid)), DeleteEntry(("current_owner_on_dapp_" + nftid)), StringEntry((((((((("sale2nd_info_" + caller) + "_") + nftid) + "_") + creatorAddr) + "_") + id) + "_CANCELLED"), ((((saleInfo + "_CANCELLED_") + toString(date)) + "_") + id)), ScriptTransfer(Address(fromBase58String(caller)), 1, fromBase58String(nftid))]
263+ }
264+ }
265+ }
266+
267+
268+
269+@Callable(i)
270+func buyNFT (nftid) = {
271+ let $t01024410315 = idCallerDate(i)
272+ let id = $t01024410315._1
273+ let caller = $t01024410315._2
274+ let date = $t01024410315._3
275+ let saleOwner = getSaleOwnerAndStatus(nftid)
276+ let $t01037010428 = checkNFTInfo(nftid)
277+ let isValidNFT = $t01037010428._1
278+ let artId = $t01037010428._2
279+ let creatorAddr = $t01037010428._3
280+ if (!(isValidNFT))
281+ then throw("Something went wrong")
282+ else {
283+ let saleInfo = getStrByK((((((("sale2nd_info_" + saleOwner) + "_") + nftid) + "_") + creatorAddr) + "_OPEN"))
284+ if ((size(saleInfo) == 0))
285+ then throw("Sale Not found!")
286+ else {
287+ let saleInfoArray = split(saleInfo, "_")
288+ if ((parseInt(saleInfoArray[1]) == 0))
289+ then throw("Offer only")
290+ else {
291+ let $t01076310799 = isPayment(i)
292+ let payment = $t01076310799._1
293+ let amount = $t01076310799._2
294+ let paymentAssetStr = if (isDefined(payment.assetId))
295+ then toBase58String(value(payment.assetId))
296+ else ""
297+ if (if ((saleInfoArray[1] != toString(amount)))
298+ then true
299+ else (saleInfoArray[2] != paymentAssetStr))
300+ then throw("Payment infos don't match.")
301+ else {
302+ let amountForSign = fraction(amount, signCut, 100)
303+ let amountForCreator = fraction(amount, creatorCut, 100)
304+ let amountForOwner = (amount - (amountForSign + amountForCreator))
305+ let $t01130811436 = setTransfers(amount, payment.assetId, nftid, creatorAddr, saleOwner, caller)
306+ let signFee = $t01130811436._1
307+ let creatorFee = $t01130811436._2
308+ let ownerFee = $t01130811436._3
309+ let collectorFee = $t01130811436._4
310+[DeleteEntry((((((("sale2nd_info_" + saleOwner) + "_") + nftid) + "_") + creatorAddr) + "_OPEN")), DeleteEntry(((("sale2nd_status_" + saleOwner) + "_") + nftid)), DeleteEntry(("current_owner_on_dapp_" + nftid)), StringEntry((((((((("sale2nd_info_" + saleOwner) + "_") + nftid) + "_") + creatorAddr) + "_") + id) + "_CLOSED"), ((((((makeString(saleInfoArray, "_") + "_CLOSED_") + toString(date)) + "_") + id) + "_") + caller)), signFee, creatorFee, ownerFee, collectorFee]
311+ }
312+ }
313+ }
314+ }
315+ }
316+
317+
318+
319+@Callable(i)
320+func setOffer (nftid) = {
321+ let $t01191811960 = idCallerDate(i)
322+ let id = $t01191811960._1
323+ let offerOwner = $t01191811960._2
324+ let date = $t01191811960._3
325+ let $t01196512001 = isPayment(i)
326+ let payment = $t01196512001._1
327+ let amount = $t01196512001._2
328+ let assetId = if (!(isDefined(payment.assetId)))
329+ then "WAVES"
330+ else toBase58String(value(payment.assetId))
331+ if (!(acceptedAssetIds(assetId)))
332+ then throw("asset not accepted")
333+ else {
334+ let $t01218712245 = checkNFTInfo(nftid)
335+ let isValidNFT = $t01218712245._1
336+ let artId = $t01218712245._2
337+ let creatorAddr = $t01218712245._3
338+ if (!(isValidNFT))
339+ then throw("Something went wrong")
340+ else {
341+ let saleOwner = getSaleOwnerAndStatus(nftid)
342+[StringEntry((((((((("offer2nd_" + offerOwner) + "_") + nftid) + "_") + saleOwner) + "_") + id) + "_OPEN"), ((((((((((((((toString(date) + "_") + toString(amount)) + "_") + assetId) + "_") + nftid) + "_") + artId) + "_") + creatorAddr) + "_") + offerOwner) + "_") + id))]
343+ }
344+ }
345+ }
346+
347+
348+
349+@Callable(i)
350+func acceptOffer (nftid,offerId,offerOwner) = {
351+ let $t01283612905 = idCallerDate(i)
352+ let id = $t01283612905._1
353+ let caller = $t01283612905._2
354+ let date = $t01283612905._3
355+ let saleOwner = getSaleOwnerAndStatus(nftid)
356+ if ((caller != saleOwner))
357+ then throw("You cannot do this action")
358+ else {
359+ let bidKey = ((((((("offer2nd_" + offerOwner) + "_") + nftid) + "_") + saleOwner) + "_") + offerId)
360+ let bidValue = getStrByK((bidKey + "_OPEN"))
361+ if ((bidValue == ""))
362+ then throw("Offer not found or not for sale")
363+ else {
364+ let $t01322913287 = checkNFTInfo(nftid)
365+ let isValidNFT = $t01322913287._1
366+ let artId = $t01322913287._2
367+ let creatorAddr = $t01322913287._3
368+ if (!(isValidNFT))
369+ then throw("Something went wrong")
370+ else {
371+ let saleKey = ((((("sale2nd_info_" + saleOwner) + "_") + nftid) + "_") + creatorAddr)
372+ let saleValue = getStrByK((saleKey + "_OPEN"))
373+ if ((size(saleValue) == 0))
374+ then throw("Sale Not found!")
375+ else {
376+ let saleValArr = split(saleValue, "_")
377+ let $t01362213677 = getBidData(bidKey)
378+ let bidDataArr = $t01362213677._1
379+ let assetId = $t01362213677._2
380+ let bidData = $t01362213677._3
381+ let amount = value(parseInt(bidDataArr[1]))
382+ let $t01373113858 = setTransfers(amount, assetId, nftid, creatorAddr, saleOwner, bidDataArr[6])
383+ let signFee = $t01373113858._1
384+ let creatorFee = $t01373113858._2
385+ let ownerFee = $t01373113858._3
386+ let collectorFee = $t01373113858._4
387+[DeleteEntry((saleKey + "_OPEN")), DeleteEntry((bidKey + "_OPEN")), DeleteEntry(((("sale2nd_status_" + saleOwner) + "_") + nftid)), DeleteEntry(("current_owner_on_dapp_" + nftid)), StringEntry((bidKey + "_CLOSED"), bidValue), StringEntry((((saleKey + "_") + id) + "_CLOSED"), ((((((((((makeString(saleValArr, "_") + "_CLOSED-OFFER_") + toString(date)) + "_") + id) + "_") + offerOwner) + "_") + toString(amount)) + "_") + toBase58String(value(assetId)))), signFee, creatorFee, ownerFee, collectorFee]
388+ }
389+ }
390+ }
391+ }
392+ }
393+
394+
395+
396+@Callable(i)
397+func cancelOffer (nftid,offerId,saleOwner) = {
398+ let $t01447414535 = idCallerDate(i)
399+ let id = $t01447414535._1
400+ let caller = $t01447414535._2
401+ let date = $t01447414535._3
402+ let bidKey = ((((((("offer2nd_" + caller) + "_") + nftid) + "_") + saleOwner) + "_") + offerId)
403+ let $t01461214667 = getBidData(bidKey)
404+ let bidDataArr = $t01461214667._1
405+ let assetId = $t01461214667._2
406+ let bidData = $t01461214667._3
407+[DeleteEntry((bidKey + "_OPEN")), StringEntry((bidKey + "_CANCELLED"), ((((bidData + "_CANCELLED_") + toString(date)) + "_") + id)), ScriptTransfer(Address(fromBase58String(caller)), parseIntValue(bidDataArr[1]), assetId)]
408+ }
409+
410+
411+
412+@Callable(i)
413+func makeRequest (artId,creatorAddr) = {
414+ let $t01498215026 = idCallerDate(i)
415+ let id = $t01498215026._1
416+ let requestOwner = $t01498215026._2
417+ let date = $t01498215026._3
418+ let $t01503115067 = isPayment(i)
419+ let payment = $t01503115067._1
420+ let amount = $t01503115067._2
421+ let assetId = if (!(isDefined(payment.assetId)))
422+ then "WAVES"
423+ else toBase58String(value(payment.assetId))
424+ if (!(acceptedAssetIds(assetId)))
425+ then throw("asset not accepted")
426+ else {
427+ let isValidART = checkARTExist(artId, creatorAddr)
428+ if (!(isValidART))
429+ then throw("Something went wrong")
430+ else [StringEntry((((((((("request2nd_" + requestOwner) + "_") + creatorAddr) + "_") + artId) + "_") + id) + "_OPEN"), ((((((((((toString(date) + "_") + toString(amount)) + "_") + toBase58String(value(payment.assetId))) + "_") + artId) + "_") + requestOwner) + "_") + id))]
431+ }
432+ }
433+
434+
435+
436+@Callable(i)
437+func fillRequest (artId,requestOwner,offerId) = {
438+ let $t01584215884 = idCallerDate(i)
439+ let id = $t01584215884._1
440+ let saleOwner = $t01584215884._2
441+ let date = $t01584215884._3
442+ let $t01588915933 = isPayment(i)
443+ let payment = $t01588915933._1
444+ let amountAttached = $t01588915933._2
445+ let NFTid = if (if (isDefined(payment.assetId))
446+ then isSignArtNFT(value(payment.assetId))
447+ else false)
448+ then payment.assetId
449+ else throw("No NFT found")
450+ let NFTdata = split(getArtStrByK(("nft_" + toBase58String(value(NFTid)))), "_")
451+ if ((size(NFTdata) == 0))
452+ then throw("No NFT found")
453+ else {
454+ let requestData = split(getStrByK((((((((("request2nd_" + requestOwner) + "_") + NFTdata[6]) + "_") + artId) + "_") + offerId) + "_OPEN")), "_")
455+ if ((size(requestData) == 1))
456+ then throw("No request found")
457+ else if ((requestData[3] != NFTdata[5]))
458+ then throw("This NFT don't match the requested artwork")
459+ else {
460+ let amount = value(parseInt(requestData[1]))
461+ let $t01665316828 = setTransfers(amount, fromBase58String(requestData[2]), toBase58String(value(NFTid)), NFTdata[6], saleOwner, requestData[4])
462+ let signFee = $t01665316828._1
463+ let creatorFee = $t01665316828._2
464+ let ownerFee = $t01665316828._3
465+ let collectorFee = $t01665316828._4
466+[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]
467+ }
468+ }
469+ }
470+
471+
472+
473+@Callable(i)
474+func cancelRequest (artId,creatorAddr,requestId) = {
475+ let $t01728817332 = idCallerDate(i)
476+ let id = $t01728817332._1
477+ let requestOwner = $t01728817332._2
478+ let date = $t01728817332._3
479+ let requesDataKey = ((((((("request2nd_" + requestOwner) + "_") + creatorAddr) + "_") + artId) + "_") + requestId)
480+ let requestData = getStrByK((requesDataKey + "_OPEN"))
481+ if ((size(requestData) == 0))
482+ then throw("Request not found")
483+ else {
484+ let requestDataArr = split(requestData, "_")
485+[DeleteEntry((requesDataKey + "_OPEN")), StringEntry((((((requesDataKey + "_") + toString(date)) + "_") + id) + "_CANCELLED"), ((requestData + "_") + toString(date))), ScriptTransfer(Address(fromBase58String(requestOwner)), parseIntValue(requestDataArr[1]), fromBase58String(requestDataArr[2]))]
486+ }
487+ }
488+
489+
490+
491+@Callable(i)
492+func deleteEntry (entry) = {
493+ let caller = toString(addressFromPublicKey(i.callerPublicKey))
494+ if ((caller == chris))
495+ then [DeleteEntry(entry)]
496+ else throw("no")
497+ }
498+
499+

github/deemru/w8io/3ef1775 
61.66 ms