tx · Dh8kjvZAYVQSqh72hbTvFhJfmWpryBrAfUEdP6fgGtdc

3N9yxjwDM9T8cFxAxjrw8k5wiGxRxHh9FdW:  -0.01400000 Waves

2021.05.18 11:31 [1530885] smart account 3N9yxjwDM9T8cFxAxjrw8k5wiGxRxHh9FdW > SELF 0.00000000 Waves

{ "type": 13, "id": "Dh8kjvZAYVQSqh72hbTvFhJfmWpryBrAfUEdP6fgGtdc", "fee": 1400000, "feeAssetId": null, "timestamp": 1621326726786, "version": 2, "chainId": 84, "sender": "3N9yxjwDM9T8cFxAxjrw8k5wiGxRxHh9FdW", "senderPublicKey": "7nc1RVTNTXy1DvKS2F4boNQWQir3Lqpvi8zMoo42M3nP", "proofs": [ "pb7mZPwJoB3VSdsLLViqUpsnCzn8QagYaR7Zyp8uptXwd5V37RLLQmtPLxe6UXzq3NjtdtvQqzdNDNLG2tJBr9D" ], "script": "base64:AAIEAAAAAAAAAD4IAhIECgIBCBIDCgEIEgMKAQgSAwoBCBIFCgMICAgSBQoDCAgIEgQKAggIEgUKAwgICBIFCgMICAgSAwoBCAAAACgAAAAACHVuaXRUZXN0BwAAAAAJb3JhY2xlRmVlCQEAAAAFdmFsdWUAAAABCQAEJgAAAAECAAAAIzNOMnM1UnRhSFBCZW5Dc3gyRUNjb0ZSYllIeDNub1poWFcxAAAAAAhzaWduRGFwcAkBAAAABXZhbHVlAAAAAQkABCYAAAABAgAAACMzTkMyOGhTaXZybXNUVVhhWUQxeDZMMzYySjRacFVub1RkQgAAAAAMYXJ0d29ya3NEYXBwCQEAAAAFdmFsdWUAAAABCQAEJgAAAAECAAAAIzNOQnluZmJYQzJLYXN0VXhodWtjTVVhRTU4SzljQmRCOVVZAAAAAAtmZWVSZWNlaXZlcgIAAAAjM04xRTZ0WGRkUm9WYVJmUTlkUTN2ZzVMYVcyZnNkOEhLdWIAAAAACHVzZXJEYXBwAwUAAAAIdW5pdFRlc3QJAQAAAAV2YWx1ZQAAAAEJAAQmAAAAAQIAAAAjM010NFJHTUV5alNXWUFvY1RQcWQ1NXdkSFFRQjNQVTJVQ20JAQAAAAV2YWx1ZQAAAAEJAAQmAAAAAQIAAAAjM044eFhhWWpFMjdBYTc5ZDVoSHJoSHU5SGFGb1RCbWhERWoAAAAADXdoaXRlbGlzdERhcHAJAQAAAAV2YWx1ZQAAAAEJAAQmAAAAAQIAAAAjM042QmFWMWRDQjR6ZzQzZ29OTkhhQ3R2UjEzQmN5SjVHc3EAAAAAC3NpZ25Bc3NldElkAQAAACDopWq8yndC8nBhMjVKT0WDubke5ZlnF8Nx6tkLoQSt6wAAAAALdXNkbkFzc2V0SWQBAAAAIA/yHBKs5MQ8muxGGqslqLDsugcrRsxtiHLwteKSSQG0AAAAAAx3YXZlc0Fzc2V0SWQBAAAAAAAAAAAFY2hyaXMCAAAAIzNNc0c2alBOQ3JWSlV0WUI3WEpCeFM3dXRXc1hBZjRuOVZwAAAAAARqb2VwAgAAACMzTXptNFZMd3NOOXVad2JUTXpQajNYdXhWNmtFZkFSOFVETgAAAAAHc2lnbkN1dAAAAAAAAAAAAwAAAAAKY3JlYXRvckN1dAAAAAAAAAAACgAAAAALZGFwcFJ1bm5p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", "height": 1530885, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: CJqUAa2NWJtuKE3Xb91VywcL4dQtRjdsHK6bQr1wBWDe Next: EyajSE7nubYAW2kg9wjL5UGCzK2fcSg4zmdiVnMB9uqD Diff:
OldNewDifferences
179179 }
180180
181181
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+
182194 @Callable(i)
183195 func sellNFT (price,asset) = {
184- let $t062996338 = idCallerDate(i)
185- let id = $t062996338._1
186- let caller = $t062996338._2
187- let date = $t062996338._3
188- let $t063436379 = isPayment(i)
189- let payment = $t063436379._1
190- let amount = $t063436379._2
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
191203 let assetId = if (if (isDefined(payment.assetId))
192204 then isSignArtNFT(value(payment.assetId))
193205 else false)
196208 if (!(acceptedAssetIds(asset)))
197209 then throw("Only SIGN, USDN or WAVES accepted")
198210 else {
199- let $t066446720 = checkNFTInfo(toBase58String(value(assetId)))
200- let isValidNFT = $t066446720._1
201- let creatorAddr = $t066446720._2
211+ let $t074197495 = checkNFTInfo(toBase58String(value(assetId)))
212+ let isValidNFT = $t074197495._1
213+ let creatorAddr = $t074197495._2
202214 if (!(isValidNFT))
203215 then throw("Something went wrong")
204216 else [StringEntry((((((("sale2nd_info_" + caller) + "_") + toBase58String(value(payment.assetId))) + "_") + creatorAddr) + "_OPEN"), ((((toString(date) + "_") + toString(price)) + "_") + asset)), StringEntry(((("sale2nd_status_" + caller) + "_") + toBase58String(value(payment.assetId))), "OPEN"), StringEntry(("current_owner_on_dapp_" + toBase58String(value(payment.assetId))), caller)]
209221
210222 @Callable(i)
211223 func cancelSale (nftid) = {
212- let $t073967435 = idCallerDate(i)
213- let id = $t073967435._1
214- let caller = $t073967435._2
215- let date = $t073967435._3
224+ let $t081718210 = idCallerDate(i)
225+ let id = $t081718210._1
226+ let caller = $t081718210._2
227+ let date = $t081718210._3
216228 let saleOwner = getStrByK(("current_owner_on_dapp_" + nftid))
217229 if ((saleOwner != caller))
218230 then throw("You don't own this NFT")
232244
233245 @Callable(i)
234246 func buyNFT (nftid) = {
235- let $t085648635 = idCallerDate(i)
236- let id = $t085648635._1
237- let caller = $t085648635._2
238- let date = $t085648635._3
247+ let $t093399410 = idCallerDate(i)
248+ let id = $t093399410._1
249+ let caller = $t093399410._2
250+ let date = $t093399410._3
239251 let saleOwner = getSaleOwnerAndStatus(nftid)
240- let $t086908741 = checkNFTInfo(nftid)
241- let isValidNFT = $t086908741._1
242- let creatorAddr = $t086908741._2
252+ let $t094659516 = checkNFTInfo(nftid)
253+ let isValidNFT = $t094659516._1
254+ let creatorAddr = $t094659516._2
243255 if (!(isValidNFT))
244256 then throw("Something went wrong")
245257 else {
251263 if ((parseInt(saleInfoArray[1]) == 0))
252264 then throw("Offer only")
253265 else {
254- let $t090779113 = isPayment(i)
255- let payment = $t090779113._1
256- let amount = $t090779113._2
266+ let $t098529888 = isPayment(i)
267+ let payment = $t098529888._1
268+ let amount = $t098529888._2
257269 if (if ((saleInfoArray[1] != toString(amount)))
258270 then true
259271 else (saleInfoArray[2] != toBase58String(value(payment.assetId))))
262274 let amountForSign = fraction(amount, signCut, 100)
263275 let amountForCreator = fraction(amount, creatorCut, 100)
264276 let amountForOwner = (amount - (amountForSign + amountForCreator))
265-[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))) + "_to_") + caller)), ScriptTransfer(Address(fromBase58String(feeReceiver)), amountForSign, payment.assetId), ScriptTransfer(Address(fromBase58String(creatorAddr)), amountForCreator, payment.assetId), ScriptTransfer(Address(fromBase58String(saleOwner)), amountForOwner, payment.assetId), ScriptTransfer(Address(fromBase58String(caller)), 1, fromBase58String(nftid))]
277+ let $t01031110439 = setTransfers(amount, payment.assetId, nftid, creatorAddr, saleOwner, caller)
278+ let signFee = $t01031110439._1
279+ let creatorFee = $t01031110439._2
280+ let ownerFee = $t01031110439._3
281+ let collectorFee = $t01031110439._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))) + "_to_") + caller)), signFee, creatorFee, ownerFee, collectorFee]
266283 }
267284 }
268285 }
273290
274291 @Callable(i)
275292 func setOffer (nftid) = {
276- let $t01056110603 = idCallerDate(i)
277- let id = $t01056110603._1
278- let offerOwner = $t01056110603._2
279- let date = $t01056110603._3
280- let $t01060810644 = isPayment(i)
281- let payment = $t01060810644._1
282- let amount = $t01060810644._2
293+ let $t01152711569 = idCallerDate(i)
294+ let id = $t01152711569._1
295+ let offerOwner = $t01152711569._2
296+ let date = $t01152711569._3
297+ let $t01157411610 = isPayment(i)
298+ let payment = $t01157411610._1
299+ let amount = $t01157411610._2
283300 let assetId = if (!(isDefined(payment.assetId)))
284301 then "WAVES"
285302 else toBase58String(value(payment.assetId))
286303 if (!(acceptedAssetIds(assetId)))
287304 then throw("asset not accepted")
288305 else {
289- let $t01083010881 = checkNFTInfo(nftid)
290- let isValidNFT = $t01083010881._1
291- let creatorAddr = $t01083010881._2
306+ let $t01179611847 = checkNFTInfo(nftid)
307+ let isValidNFT = $t01179611847._1
308+ let creatorAddr = $t01179611847._2
292309 if (!(isValidNFT))
293310 then throw("Something went wrong")
294311 else {
302319
303320 @Callable(i)
304321 func acceptOffer (nftid,offerId,offerOwner) = {
305- let $t01151211652 = idCallerDate(i)
306- let id = $t01151211652._1
307- let caller = $t01151211652._2
308- let date = $t01151211652._3
322+ let $t01239512465 = idCallerDate(i)
323+ let id = $t01239512465._1
324+ let caller = $t01239512465._2
325+ let date = $t01239512465._3
309326 let saleOwner = getSaleOwnerAndStatus(nftid)
310327 if ((caller != saleOwner))
311328 then throw("You cannot do this action")
314331 if ((offerExist == ""))
315332 then throw("Offer not found or not for sale")
316333 else {
317- let $t01195712008 = checkNFTInfo(nftid)
318- let isValidNFT = $t01195712008._1
319- let creatorAddr = $t01195712008._2
334+ let $t01277012821 = checkNFTInfo(nftid)
335+ let isValidNFT = $t01277012821._1
336+ let creatorAddr = $t01277012821._2
320337 if (!(isValidNFT))
321338 then throw("Something went wrong")
322339 else {
325342 then throw("Sale Not found!")
326343 else {
327344 let bidDataKey = ((((((("offer2nd_" + offerOwner) + "_") + nftid) + "_") + saleOwner) + "_") + offerId)
328- let $t01234412403 = getBidData(bidDataKey)
329- let bidDataArr = $t01234412403._1
330- let assetId = $t01234412403._2
331- let bidData = $t01234412403._3
345+ let $t01315713216 = getBidData(bidDataKey)
346+ let bidDataArr = $t01315713216._1
347+ let assetId = $t01315713216._2
348+ let bidData = $t01315713216._3
332349 let amount = value(parseInt(bidDataArr[1]))
333- let amountForSign = fraction(amount, signCut, 100)
334- let amountForCreator = fraction(amount, creatorCut, 100)
335- let amountForOwner = (amount - (amountForSign + amountForCreator))
336-[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))) + "_to_") + offerOwner)), ScriptTransfer(Address(fromBase58String(feeReceiver)), amountForSign, assetId), ScriptTransfer(Address(fromBase58String(creatorAddr)), amountForCreator, assetId), ScriptTransfer(Address(fromBase58String(saleOwner)), amountForOwner, assetId), ScriptTransfer(Address(fromBase58String(bidDataArr[3])), 1, fromBase58String(nftid))]
350+ let $t01327013397 = setTransfers(amount, assetId, nftid, creatorAddr, saleOwner, bidDataArr[3])
351+ let signFee = $t01327013397._1
352+ let creatorFee = $t01327013397._2
353+ let ownerFee = $t01327013397._3
354+ let collectorFee = $t01327013397._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))) + "_to_") + offerOwner)), signFee, creatorFee, ownerFee, collectorFee]
337356 }
338357 }
339358 }
344363
345364 @Callable(i)
346365 func cancelOffer (nftid,offerId,saleOwner) = {
347- let $t01379314075 = idCallerDate(i)
348- let id = $t01379314075._1
349- let caller = $t01379314075._2
350- let date = $t01379314075._3
366+ let $t01417114232 = idCallerDate(i)
367+ let id = $t01417114232._1
368+ let caller = $t01417114232._2
369+ let date = $t01417114232._3
351370 let bidDataKey = ((((((("offer2nd_" + caller) + "_") + nftid) + "_") + saleOwner) + "_") + offerId)
352- let $t01416114220 = getBidData(bidDataKey)
353- let bidDataArr = $t01416114220._1
354- let assetId = $t01416114220._2
355- let bidData = $t01416114220._3
371+ let $t01431314372 = getBidData(bidDataKey)
372+ let bidDataArr = $t01431314372._1
373+ let assetId = $t01431314372._2
374+ let bidData = $t01431314372._3
356375 [DeleteEntry((bidDataKey + "_OPEN")), StringEntry((((((bidDataKey + "_") + toString(date)) + "_") + id) + "_CANCELLED"), ((bidData + "_") + toString(date))), ScriptTransfer(Address(fromBase58String(caller)), parseIntValue(bidDataArr[1]), assetId)]
357376 }
358377
360379
361380 @Callable(i)
362381 func makeRequest (artId,creatorAddr) = {
363- let $t01561015654 = idCallerDate(i)
364- let id = $t01561015654._1
365- let requestOwner = $t01561015654._2
366- let date = $t01561015654._3
367- let $t01565915695 = isPayment(i)
368- let payment = $t01565915695._1
369- let amount = $t01565915695._2
382+ let $t01470714751 = idCallerDate(i)
383+ let id = $t01470714751._1
384+ let requestOwner = $t01470714751._2
385+ let date = $t01470714751._3
386+ let $t01475614792 = isPayment(i)
387+ let payment = $t01475614792._1
388+ let amount = $t01475614792._2
370389 let assetId = if (!(isDefined(payment.assetId)))
371390 then "WAVES"
372391 else toBase58String(value(payment.assetId))
384403
385404 @Callable(i)
386405 func fillRequest (artId,requestOwner,offerId) = {
387- let $t01647016512 = idCallerDate(i)
388- let id = $t01647016512._1
389- let saleOwner = $t01647016512._2
390- let date = $t01647016512._3
391- let $t01651716561 = isPayment(i)
392- let payment = $t01651716561._1
393- let amountAttached = $t01651716561._2
394- let assetId = if (if (isDefined(payment.assetId))
406+ let $t01556715609 = idCallerDate(i)
407+ let id = $t01556715609._1
408+ let saleOwner = $t01556715609._2
409+ let date = $t01556715609._3
410+ let $t01561415658 = isPayment(i)
411+ let payment = $t01561415658._1
412+ let amountAttached = $t01561415658._2
413+ let NFTid = if (if (isDefined(payment.assetId))
395414 then isSignArtNFT(value(payment.assetId))
396415 else false)
397416 then payment.assetId
398417 else throw("No NFT found")
399- let attachedNft = split(getArtStrByK(("nft_" + toBase58String(value(assetId)))), "_")
400- if ((size(attachedNft) == 0))
418+ let NFTdata = split(getArtStrByK(("nft_" + toBase58String(value(NFTid)))), "_")
419+ if ((size(NFTdata) == 0))
401420 then throw("No NFT found")
402421 else {
403- let requestData = split(getStrByK((((((((("request2nd_" + requestOwner) + "_") + attachedNft[6]) + "_") + artId) + "_") + offerId) + "_OPEN")), "_")
422+ let requestData = split(getStrByK((((((((("request2nd_" + requestOwner) + "_") + NFTdata[6]) + "_") + artId) + "_") + offerId) + "_OPEN")), "_")
404423 if ((size(requestData) == 1))
405424 then throw("No request found")
406- else if ((requestData[3] != attachedNft[5]))
425+ else if ((requestData[3] != NFTdata[5]))
407426 then throw("This NFT don't match the requested artwork")
408427 else {
409428 let amount = value(parseInt(requestData[1]))
410- let amountForSign = fraction(amount, signCut, 100)
411- let amountForCreator = fraction(amount, creatorCut, 100)
412- let amountForOwner = (amount - (amountForSign + amountForCreator))
413-[DeleteEntry((((((((("request2nd_" + requestOwner) + "_") + attachedNft[6]) + "_") + artId) + "_") + offerId) + "_OPEN")), StringEntry((((((((("request2nd_" + requestOwner) + "_") + attachedNft[6]) + "_") + artId) + "_") + offerId) + "_CLOSED"), ((((((((((((toString(date) + "_") + toString(amount)) + "_") + requestData[2]) + "_") + artId) + "_") + requestOwner) + "_") + saleOwner) + "_") + id)), ScriptTransfer(Address(fromBase58String(feeReceiver)), amountForSign, fromBase58String(requestData[2])), ScriptTransfer(Address(fromBase58String(attachedNft[6])), amountForCreator, fromBase58String(requestData[2])), ScriptTransfer(Address(fromBase58String(saleOwner)), amountForOwner, fromBase58String(requestData[2])), ScriptTransfer(Address(fromBase58String(requestData[4])), 1, assetId)]
429+ let $t01637816553 = setTransfers(amount, fromBase58String(requestData[2]), toBase58String(value(NFTid)), NFTdata[6], saleOwner, requestData[4])
430+ let signFee = $t01637816553._1
431+ let creatorFee = $t01637816553._2
432+ let ownerFee = $t01637816553._3
433+ let collectorFee = $t01637816553._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]
414435 }
415436 }
416437 }
419440
420441 @Callable(i)
421442 func cancelRequest (artId,creatorAddr,requestId) = {
422- let $t01840818452 = idCallerDate(i)
423- let id = $t01840818452._1
424- let requestOwner = $t01840818452._2
425- let date = $t01840818452._3
443+ let $t01701317057 = idCallerDate(i)
444+ let id = $t01701317057._1
445+ let requestOwner = $t01701317057._2
446+ let date = $t01701317057._3
426447 let requesDataKey = ((((((("request2nd_" + requestOwner) + "_") + creatorAddr) + "_") + artId) + "_") + requestId)
427448 let requestData = getStrByK((requesDataKey + "_OPEN"))
428449 if ((size(requestData) == 0))
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 4 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let unitTest = false
55
66 let oracleFee = value(addressFromString("3N2s5RtaHPBenCsx2ECcoFRbYHx3noZhXW1"))
77
88 let signDapp = value(addressFromString("3NC28hSivrmsTUXaYD1x6L362J4ZpUnoTdB"))
99
1010 let artworksDapp = value(addressFromString("3NBynfbXC2KastUxhukcMUaE58K9cBdB9UY"))
1111
1212 let feeReceiver = "3N1E6tXddRoVaRfQ9dQ3vg5LaW2fsd8HKub"
1313
1414 let userDapp = if (unitTest)
1515 then value(addressFromString("3Mt4RGMEyjSWYAocTPqd55wdHQQB3PU2UCm"))
1616 else value(addressFromString("3N8xXaYjE27Aa79d5hHrhHu9HaFoTBmhDEj"))
1717
1818 let whitelistDapp = value(addressFromString("3N6BaV1dCB4zg43goNNHaCtvR13BcyJ5Gsq"))
1919
2020 let signAssetId = base58'Gf9t8FA4H3ssoZPCwrg3KwUFCci8zuUFP9ssRsUY3s6a'
2121
2222 let usdnAssetId = base58'25FEqEjRkqK6yCkiT7Lz6SAYz7gUFCtxfCChnrVFD5AT'
2323
2424 let wavesAssetId = base58''
2525
2626 let chris = "3MsG6jPNCrVJUtYB7XJBxS7utWsXAf4n9Vp"
2727
2828 let joep = "3Mzm4VLwsN9uZwbTMzPj3XuxV6kEfAR8UDN"
2929
3030 let signCut = 3
3131
3232 let creatorCut = 10
3333
3434 let dappRunning = valueOrElse(getBoolean(userDapp, "conf_dapp_is_running"), true)
3535
3636 let maintenanceMSG = valueOrElse(getString(userDapp, "conf_maintenance_msg"), "")
3737
3838 let userSuspended = "SUSPENDED"
3939
4040 let userRemoved = "REMOVED"
4141
4242 let artIllegal = "ILLEGAL"
4343
4444 let artSuspended = "SUSPENDED"
4545
4646 func getUserStrByK (key) = valueOrElse(getString(userDapp, key), "Error")
4747
4848
4949 func getArtStrByK (key) = valueOrElse(getString(artworksDapp, key), "")
5050
5151
5252 func getStrByK (key) = valueOrElse(getString(this, key), "")
5353
5454
5555 func getIntByK (key) = valueOrElse(getInteger(this, key), 0)
5656
5757
5858 func keyUserStatus (addr) = ("user_status_" + addr)
5959
6060
6161 func keySignID (artistAddr,artId) = ((("art_signid_" + artId) + "_") + artistAddr)
6262
6363
6464 func keyFlag (artistAddr,artId) = ((("art_flag_" + artId) + "_") + artistAddr)
6565
6666
6767 func keyNFTData (id) = ("nft_" + id)
6868
6969
7070 func idCallerDate (i) = if (!(dappRunning))
7171 then throw(maintenanceMSG)
7272 else $Tuple3(toBase58String(i.transactionId), toBase58String(i.caller.bytes), lastBlock.timestamp)
7373
7474
7575 func isPayment (i) = if ((size(i.payments) == 0))
7676 then throw("No payment attached")
7777 else {
7878 let payment = value(i.payments[0])
7979 let amount = value(payment.amount)
8080 $Tuple2(payment, amount)
8181 }
8282
8383
8484 func isSignArtNFT (id) = {
8585 let assetDetails = value(assetInfo(id))
8686 if (if (if (if ((assetDetails.quantity != 1))
8787 then true
8888 else (assetDetails.decimals != 0))
8989 then true
9090 else (assetDetails.reissuable != false))
9191 then true
9292 else (assetDetails.issuer != artworksDapp))
9393 then false
9494 else true
9595 }
9696
9797
9898 func acceptedAssetIds (assetId) = if (if (if (if ((assetId != toBase58String(signAssetId)))
9999 then (assetId != toBase58String(wavesAssetId))
100100 else false)
101101 then (assetId != "WAVES")
102102 else false)
103103 then (assetId != toBase58String(usdnAssetId))
104104 else false)
105105 then false
106106 else true
107107
108108
109109 func getBidAssetId (assetId) = if ((assetId == "WAVES"))
110110 then unit
111111 else fromBase58String(assetId)
112112
113113
114114 func getSaleOwnerAndStatus (nftid) = {
115115 let saleOwner = getStrByK(("current_owner_on_dapp_" + nftid))
116116 if ((size(saleOwner) == 0))
117117 then throw("NFT not found")
118118 else {
119119 let saleStatus = getStrByK(((("sale2nd_status_" + saleOwner) + "_") + nftid))
120120 if ((saleStatus != "OPEN"))
121121 then throw("NFT not for sale")
122122 else saleOwner
123123 }
124124 }
125125
126126
127127 func getBidData (key) = {
128128 let bidData = getStrByK((key + "_OPEN"))
129129 if ((bidData == ""))
130130 then throw("Offer not found")
131131 else {
132132 let bidDataArr = split(bidData, "_")
133133 let assetId = getBidAssetId(bidDataArr[2])
134134 $Tuple3(bidDataArr, assetId, bidData)
135135 }
136136 }
137137
138138
139139 func checkArtStatus (addr,id) = {
140140 let artStatus = getArtStrByK(keyFlag(addr, id))
141141 if (if ((artStatus == artIllegal))
142142 then true
143143 else (artStatus == artSuspended))
144144 then throw(("Original Artwork flagged as " + artStatus))
145145 else true
146146 }
147147
148148
149149 func checkArtistStatus (addr) = {
150150 let artistStatus = getUserStrByK(keyUserStatus(addr))
151151 if (containsElement([userSuspended, userRemoved], artistStatus))
152152 then throw(("Original Artist " + artistStatus))
153153 else true
154154 }
155155
156156
157157 func checkNFTInfo (assetId) = {
158158 let nftData = split(getArtStrByK(keyNFTData(assetId)), "_")
159159 let artSignID = getArtStrByK(keySignID(nftData[6], nftData[5]))
160160 if ((size(artSignID) == 0))
161161 then throw("Artwork not found on SIGN Art")
162162 else if (if (!(checkArtStatus(nftData[6], nftData[5])))
163163 then !(checkArtistStatus(nftData[6]))
164164 else false)
165165 then $Tuple2(false, nftData[6])
166166 else $Tuple2(true, nftData[6])
167167 }
168168
169169
170170 func checkARTExist (artId,creatorAddr) = {
171171 let artSignID = getArtStrByK(keySignID(creatorAddr, artId))
172172 if ((size(artSignID) == 0))
173173 then throw("Artwork not found on SIGN Art")
174174 else if (if (!(checkArtStatus(creatorAddr, artId)))
175175 then !(checkArtistStatus(creatorAddr))
176176 else false)
177177 then false
178178 else true
179179 }
180180
181181
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+
182194 @Callable(i)
183195 func sellNFT (price,asset) = {
184- let $t062996338 = idCallerDate(i)
185- let id = $t062996338._1
186- let caller = $t062996338._2
187- let date = $t062996338._3
188- let $t063436379 = isPayment(i)
189- let payment = $t063436379._1
190- let amount = $t063436379._2
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
191203 let assetId = if (if (isDefined(payment.assetId))
192204 then isSignArtNFT(value(payment.assetId))
193205 else false)
194206 then payment.assetId
195207 else throw("No NFT found")
196208 if (!(acceptedAssetIds(asset)))
197209 then throw("Only SIGN, USDN or WAVES accepted")
198210 else {
199- let $t066446720 = checkNFTInfo(toBase58String(value(assetId)))
200- let isValidNFT = $t066446720._1
201- let creatorAddr = $t066446720._2
211+ let $t074197495 = checkNFTInfo(toBase58String(value(assetId)))
212+ let isValidNFT = $t074197495._1
213+ let creatorAddr = $t074197495._2
202214 if (!(isValidNFT))
203215 then throw("Something went wrong")
204216 else [StringEntry((((((("sale2nd_info_" + caller) + "_") + toBase58String(value(payment.assetId))) + "_") + creatorAddr) + "_OPEN"), ((((toString(date) + "_") + toString(price)) + "_") + asset)), StringEntry(((("sale2nd_status_" + caller) + "_") + toBase58String(value(payment.assetId))), "OPEN"), StringEntry(("current_owner_on_dapp_" + toBase58String(value(payment.assetId))), caller)]
205217 }
206218 }
207219
208220
209221
210222 @Callable(i)
211223 func cancelSale (nftid) = {
212- let $t073967435 = idCallerDate(i)
213- let id = $t073967435._1
214- let caller = $t073967435._2
215- let date = $t073967435._3
224+ let $t081718210 = idCallerDate(i)
225+ let id = $t081718210._1
226+ let caller = $t081718210._2
227+ let date = $t081718210._3
216228 let saleOwner = getStrByK(("current_owner_on_dapp_" + nftid))
217229 if ((saleOwner != caller))
218230 then throw("You don't own this NFT")
219231 else {
220232 let saleStatus = getStrByK(((("sale2nd_status_" + caller) + "_") + nftid))
221233 if ((saleStatus != "OPEN"))
222234 then throw("Sale not active")
223235 else {
224236 let creatorAddr = split(getArtStrByK(keyNFTData(nftid)), "_")[6]
225237 let saleInfo = getStrByK(((((((("sale2nd_info_" + caller) + "_") + nftid) + "_") + creatorAddr) + "_") + saleStatus))
226238 [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))]
227239 }
228240 }
229241 }
230242
231243
232244
233245 @Callable(i)
234246 func buyNFT (nftid) = {
235- let $t085648635 = idCallerDate(i)
236- let id = $t085648635._1
237- let caller = $t085648635._2
238- let date = $t085648635._3
247+ let $t093399410 = idCallerDate(i)
248+ let id = $t093399410._1
249+ let caller = $t093399410._2
250+ let date = $t093399410._3
239251 let saleOwner = getSaleOwnerAndStatus(nftid)
240- let $t086908741 = checkNFTInfo(nftid)
241- let isValidNFT = $t086908741._1
242- let creatorAddr = $t086908741._2
252+ let $t094659516 = checkNFTInfo(nftid)
253+ let isValidNFT = $t094659516._1
254+ let creatorAddr = $t094659516._2
243255 if (!(isValidNFT))
244256 then throw("Something went wrong")
245257 else {
246258 let saleInfo = getStrByK((((((("sale2nd_info_" + saleOwner) + "_") + nftid) + "_") + creatorAddr) + "_OPEN"))
247259 if ((size(saleInfo) == 0))
248260 then throw("Sale Not found!")
249261 else {
250262 let saleInfoArray = split(saleInfo, "_")
251263 if ((parseInt(saleInfoArray[1]) == 0))
252264 then throw("Offer only")
253265 else {
254- let $t090779113 = isPayment(i)
255- let payment = $t090779113._1
256- let amount = $t090779113._2
266+ let $t098529888 = isPayment(i)
267+ let payment = $t098529888._1
268+ let amount = $t098529888._2
257269 if (if ((saleInfoArray[1] != toString(amount)))
258270 then true
259271 else (saleInfoArray[2] != toBase58String(value(payment.assetId))))
260272 then throw("Payment infos don't match.")
261273 else {
262274 let amountForSign = fraction(amount, signCut, 100)
263275 let amountForCreator = fraction(amount, creatorCut, 100)
264276 let amountForOwner = (amount - (amountForSign + amountForCreator))
265-[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))) + "_to_") + caller)), ScriptTransfer(Address(fromBase58String(feeReceiver)), amountForSign, payment.assetId), ScriptTransfer(Address(fromBase58String(creatorAddr)), amountForCreator, payment.assetId), ScriptTransfer(Address(fromBase58String(saleOwner)), amountForOwner, payment.assetId), ScriptTransfer(Address(fromBase58String(caller)), 1, fromBase58String(nftid))]
277+ let $t01031110439 = setTransfers(amount, payment.assetId, nftid, creatorAddr, saleOwner, caller)
278+ let signFee = $t01031110439._1
279+ let creatorFee = $t01031110439._2
280+ let ownerFee = $t01031110439._3
281+ let collectorFee = $t01031110439._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))) + "_to_") + caller)), signFee, creatorFee, ownerFee, collectorFee]
266283 }
267284 }
268285 }
269286 }
270287 }
271288
272289
273290
274291 @Callable(i)
275292 func setOffer (nftid) = {
276- let $t01056110603 = idCallerDate(i)
277- let id = $t01056110603._1
278- let offerOwner = $t01056110603._2
279- let date = $t01056110603._3
280- let $t01060810644 = isPayment(i)
281- let payment = $t01060810644._1
282- let amount = $t01060810644._2
293+ let $t01152711569 = idCallerDate(i)
294+ let id = $t01152711569._1
295+ let offerOwner = $t01152711569._2
296+ let date = $t01152711569._3
297+ let $t01157411610 = isPayment(i)
298+ let payment = $t01157411610._1
299+ let amount = $t01157411610._2
283300 let assetId = if (!(isDefined(payment.assetId)))
284301 then "WAVES"
285302 else toBase58String(value(payment.assetId))
286303 if (!(acceptedAssetIds(assetId)))
287304 then throw("asset not accepted")
288305 else {
289- let $t01083010881 = checkNFTInfo(nftid)
290- let isValidNFT = $t01083010881._1
291- let creatorAddr = $t01083010881._2
306+ let $t01179611847 = checkNFTInfo(nftid)
307+ let isValidNFT = $t01179611847._1
308+ let creatorAddr = $t01179611847._2
292309 if (!(isValidNFT))
293310 then throw("Something went wrong")
294311 else {
295312 let saleOwner = getSaleOwnerAndStatus(nftid)
296313 [StringEntry((((((((("offer2nd_" + offerOwner) + "_") + nftid) + "_") + saleOwner) + "_") + id) + "_OPEN"), ((((((((toString(date) + "_") + toString(amount)) + "_") + assetId) + "_") + offerOwner) + "_") + id))]
297314 }
298315 }
299316 }
300317
301318
302319
303320 @Callable(i)
304321 func acceptOffer (nftid,offerId,offerOwner) = {
305- let $t01151211652 = idCallerDate(i)
306- let id = $t01151211652._1
307- let caller = $t01151211652._2
308- let date = $t01151211652._3
322+ let $t01239512465 = idCallerDate(i)
323+ let id = $t01239512465._1
324+ let caller = $t01239512465._2
325+ let date = $t01239512465._3
309326 let saleOwner = getSaleOwnerAndStatus(nftid)
310327 if ((caller != saleOwner))
311328 then throw("You cannot do this action")
312329 else {
313330 let offerExist = getStrByK((((((((("offer2nd_" + offerOwner) + "_") + nftid) + "_") + saleOwner) + "_") + offerId) + "_OPEN"))
314331 if ((offerExist == ""))
315332 then throw("Offer not found or not for sale")
316333 else {
317- let $t01195712008 = checkNFTInfo(nftid)
318- let isValidNFT = $t01195712008._1
319- let creatorAddr = $t01195712008._2
334+ let $t01277012821 = checkNFTInfo(nftid)
335+ let isValidNFT = $t01277012821._1
336+ let creatorAddr = $t01277012821._2
320337 if (!(isValidNFT))
321338 then throw("Something went wrong")
322339 else {
323340 let saleInfo = getStrByK((((((("sale2nd_info_" + saleOwner) + "_") + nftid) + "_") + creatorAddr) + "_OPEN"))
324341 if ((size(saleInfo) == 0))
325342 then throw("Sale Not found!")
326343 else {
327344 let bidDataKey = ((((((("offer2nd_" + offerOwner) + "_") + nftid) + "_") + saleOwner) + "_") + offerId)
328- let $t01234412403 = getBidData(bidDataKey)
329- let bidDataArr = $t01234412403._1
330- let assetId = $t01234412403._2
331- let bidData = $t01234412403._3
345+ let $t01315713216 = getBidData(bidDataKey)
346+ let bidDataArr = $t01315713216._1
347+ let assetId = $t01315713216._2
348+ let bidData = $t01315713216._3
332349 let amount = value(parseInt(bidDataArr[1]))
333- let amountForSign = fraction(amount, signCut, 100)
334- let amountForCreator = fraction(amount, creatorCut, 100)
335- let amountForOwner = (amount - (amountForSign + amountForCreator))
336-[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))) + "_to_") + offerOwner)), ScriptTransfer(Address(fromBase58String(feeReceiver)), amountForSign, assetId), ScriptTransfer(Address(fromBase58String(creatorAddr)), amountForCreator, assetId), ScriptTransfer(Address(fromBase58String(saleOwner)), amountForOwner, assetId), ScriptTransfer(Address(fromBase58String(bidDataArr[3])), 1, fromBase58String(nftid))]
350+ let $t01327013397 = setTransfers(amount, assetId, nftid, creatorAddr, saleOwner, bidDataArr[3])
351+ let signFee = $t01327013397._1
352+ let creatorFee = $t01327013397._2
353+ let ownerFee = $t01327013397._3
354+ let collectorFee = $t01327013397._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))) + "_to_") + offerOwner)), signFee, creatorFee, ownerFee, collectorFee]
337356 }
338357 }
339358 }
340359 }
341360 }
342361
343362
344363
345364 @Callable(i)
346365 func cancelOffer (nftid,offerId,saleOwner) = {
347- let $t01379314075 = idCallerDate(i)
348- let id = $t01379314075._1
349- let caller = $t01379314075._2
350- let date = $t01379314075._3
366+ let $t01417114232 = idCallerDate(i)
367+ let id = $t01417114232._1
368+ let caller = $t01417114232._2
369+ let date = $t01417114232._3
351370 let bidDataKey = ((((((("offer2nd_" + caller) + "_") + nftid) + "_") + saleOwner) + "_") + offerId)
352- let $t01416114220 = getBidData(bidDataKey)
353- let bidDataArr = $t01416114220._1
354- let assetId = $t01416114220._2
355- let bidData = $t01416114220._3
371+ let $t01431314372 = getBidData(bidDataKey)
372+ let bidDataArr = $t01431314372._1
373+ let assetId = $t01431314372._2
374+ let bidData = $t01431314372._3
356375 [DeleteEntry((bidDataKey + "_OPEN")), StringEntry((((((bidDataKey + "_") + toString(date)) + "_") + id) + "_CANCELLED"), ((bidData + "_") + toString(date))), ScriptTransfer(Address(fromBase58String(caller)), parseIntValue(bidDataArr[1]), assetId)]
357376 }
358377
359378
360379
361380 @Callable(i)
362381 func makeRequest (artId,creatorAddr) = {
363- let $t01561015654 = idCallerDate(i)
364- let id = $t01561015654._1
365- let requestOwner = $t01561015654._2
366- let date = $t01561015654._3
367- let $t01565915695 = isPayment(i)
368- let payment = $t01565915695._1
369- let amount = $t01565915695._2
382+ let $t01470714751 = idCallerDate(i)
383+ let id = $t01470714751._1
384+ let requestOwner = $t01470714751._2
385+ let date = $t01470714751._3
386+ let $t01475614792 = isPayment(i)
387+ let payment = $t01475614792._1
388+ let amount = $t01475614792._2
370389 let assetId = if (!(isDefined(payment.assetId)))
371390 then "WAVES"
372391 else toBase58String(value(payment.assetId))
373392 if (!(acceptedAssetIds(assetId)))
374393 then throw("asset not accepted")
375394 else {
376395 let isValidART = checkARTExist(artId, creatorAddr)
377396 if (!(isValidART))
378397 then throw("Something went wrong")
379398 else [StringEntry((((((((("request2nd_" + requestOwner) + "_") + creatorAddr) + "_") + artId) + "_") + id) + "_OPEN"), ((((((((((toString(date) + "_") + toString(amount)) + "_") + toBase58String(value(payment.assetId))) + "_") + artId) + "_") + requestOwner) + "_") + id))]
380399 }
381400 }
382401
383402
384403
385404 @Callable(i)
386405 func fillRequest (artId,requestOwner,offerId) = {
387- let $t01647016512 = idCallerDate(i)
388- let id = $t01647016512._1
389- let saleOwner = $t01647016512._2
390- let date = $t01647016512._3
391- let $t01651716561 = isPayment(i)
392- let payment = $t01651716561._1
393- let amountAttached = $t01651716561._2
394- let assetId = if (if (isDefined(payment.assetId))
406+ let $t01556715609 = idCallerDate(i)
407+ let id = $t01556715609._1
408+ let saleOwner = $t01556715609._2
409+ let date = $t01556715609._3
410+ let $t01561415658 = isPayment(i)
411+ let payment = $t01561415658._1
412+ let amountAttached = $t01561415658._2
413+ let NFTid = if (if (isDefined(payment.assetId))
395414 then isSignArtNFT(value(payment.assetId))
396415 else false)
397416 then payment.assetId
398417 else throw("No NFT found")
399- let attachedNft = split(getArtStrByK(("nft_" + toBase58String(value(assetId)))), "_")
400- if ((size(attachedNft) == 0))
418+ let NFTdata = split(getArtStrByK(("nft_" + toBase58String(value(NFTid)))), "_")
419+ if ((size(NFTdata) == 0))
401420 then throw("No NFT found")
402421 else {
403- let requestData = split(getStrByK((((((((("request2nd_" + requestOwner) + "_") + attachedNft[6]) + "_") + artId) + "_") + offerId) + "_OPEN")), "_")
422+ let requestData = split(getStrByK((((((((("request2nd_" + requestOwner) + "_") + NFTdata[6]) + "_") + artId) + "_") + offerId) + "_OPEN")), "_")
404423 if ((size(requestData) == 1))
405424 then throw("No request found")
406- else if ((requestData[3] != attachedNft[5]))
425+ else if ((requestData[3] != NFTdata[5]))
407426 then throw("This NFT don't match the requested artwork")
408427 else {
409428 let amount = value(parseInt(requestData[1]))
410- let amountForSign = fraction(amount, signCut, 100)
411- let amountForCreator = fraction(amount, creatorCut, 100)
412- let amountForOwner = (amount - (amountForSign + amountForCreator))
413-[DeleteEntry((((((((("request2nd_" + requestOwner) + "_") + attachedNft[6]) + "_") + artId) + "_") + offerId) + "_OPEN")), StringEntry((((((((("request2nd_" + requestOwner) + "_") + attachedNft[6]) + "_") + artId) + "_") + offerId) + "_CLOSED"), ((((((((((((toString(date) + "_") + toString(amount)) + "_") + requestData[2]) + "_") + artId) + "_") + requestOwner) + "_") + saleOwner) + "_") + id)), ScriptTransfer(Address(fromBase58String(feeReceiver)), amountForSign, fromBase58String(requestData[2])), ScriptTransfer(Address(fromBase58String(attachedNft[6])), amountForCreator, fromBase58String(requestData[2])), ScriptTransfer(Address(fromBase58String(saleOwner)), amountForOwner, fromBase58String(requestData[2])), ScriptTransfer(Address(fromBase58String(requestData[4])), 1, assetId)]
429+ let $t01637816553 = setTransfers(amount, fromBase58String(requestData[2]), toBase58String(value(NFTid)), NFTdata[6], saleOwner, requestData[4])
430+ let signFee = $t01637816553._1
431+ let creatorFee = $t01637816553._2
432+ let ownerFee = $t01637816553._3
433+ let collectorFee = $t01637816553._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]
414435 }
415436 }
416437 }
417438
418439
419440
420441 @Callable(i)
421442 func cancelRequest (artId,creatorAddr,requestId) = {
422- let $t01840818452 = idCallerDate(i)
423- let id = $t01840818452._1
424- let requestOwner = $t01840818452._2
425- let date = $t01840818452._3
443+ let $t01701317057 = idCallerDate(i)
444+ let id = $t01701317057._1
445+ let requestOwner = $t01701317057._2
446+ let date = $t01701317057._3
426447 let requesDataKey = ((((((("request2nd_" + requestOwner) + "_") + creatorAddr) + "_") + artId) + "_") + requestId)
427448 let requestData = getStrByK((requesDataKey + "_OPEN"))
428449 if ((size(requestData) == 0))
429450 then throw("Request not found")
430451 else {
431452 let requestDataArr = split(requestData, "_")
432453 [DeleteEntry((requesDataKey + "_OPEN")), StringEntry((((((requesDataKey + "_") + toString(date)) + "_") + id) + "_CANCELLED"), ((requestData + "_") + toString(date))), ScriptTransfer(Address(fromBase58String(requestOwner)), parseIntValue(requestDataArr[1]), fromBase58String(requestDataArr[2]))]
433454 }
434455 }
435456
436457
437458
438459 @Callable(i)
439460 func deleteEntry (entry) = {
440461 let caller = toString(addressFromPublicKey(i.callerPublicKey))
441462 if ((caller == chris))
442463 then [DeleteEntry(entry)]
443464 else throw("no")
444465 }
445466
446467

github/deemru/w8io/3ef1775 
118.25 ms