tx · HoaSvvJfMvGuRWPu6KpKBSsXJairWath6b8ixdAuaoAX

3N9yxjwDM9T8cFxAxjrw8k5wiGxRxHh9FdW:  -0.01400000 Waves

2021.05.20 08:42 [1533593] smart account 3N9yxjwDM9T8cFxAxjrw8k5wiGxRxHh9FdW > SELF 0.00000000 Waves

{ "type": 13, "id": "HoaSvvJfMvGuRWPu6KpKBSsXJairWath6b8ixdAuaoAX", "fee": 1400000, "feeAssetId": null, "timestamp": 1621489370099, "version": 2, "chainId": 84, "sender": "3N9yxjwDM9T8cFxAxjrw8k5wiGxRxHh9FdW", "senderPublicKey": "7nc1RVTNTXy1DvKS2F4boNQWQir3Lqpvi8zMoo42M3nP", "proofs": [ "3vuhGMMt4FohxL1h7pgvHT1jQtQaotk1QfnFaUkVT3vTp5bZrfCBhSnyiSKGCmVcrXigcThYZEFGVhcShxefnWjp" ], "script": "base64:AAIEAAAAAAAAAD4IAhIECgIBCBIDCgEIEgMKAQgSAwoBCBIFCgMICAgSBQoDCAgIEgQKAggIEgUKAwgICBIFCgMICAgSAwoBCAAAACgAAAAACHVuaXRUZXN0BwAAAAAJb3JhY2xlRmVlCQEAAAAFdmFsdWUAAAABCQAEJgAAAAECAAAAIzNOMnM1UnRhSFBCZW5Dc3gyRUNjb0ZSYllIeDNub1poWFcxAAAAAAhzaWduRGFwcAkBAAAABXZhbHVlAAAAAQkABCYAAAABAgAAACMzTkMyOGhTaXZybXNUVVhhWUQxeDZMMzYySjRacFVub1RkQgAAAAAMYXJ0d29ya3NEYXBwCQEAAAAFdmFsdWUAAAABCQAEJgAAAAECAAAAIzNOQnluZmJYQzJLYXN0VXhodWtjTVVhRTU4SzljQmRCOVVZAAAAAAtmZWVSZWNlaXZlcgIAAAAjM04xRTZ0WGRkUm9WYVJmUTlkUTN2ZzVMYVcyZnNkOEhLdWIAAAAACHVzZXJEYXBwAwUAAAAIdW5pdFRlc3QJAQAAAAV2YWx1ZQAAAAEJAAQmAAAAAQIAAAAjM010NFJHTUV5alNXWUFvY1RQcWQ1NXdkSFFRQjNQVTJVQ20JAQAAAAV2YWx1ZQAAAAEJAAQmAAAAAQIAAAAjM044eFhhWWpFMjdBYTc5ZDVoSHJoSHU5SGFGb1RCbWhERWoAAAAADXdoaXRlbGlzdERhcHAJAQAAAAV2YWx1ZQAAAAEJAAQmAAAAAQIAAAAjM042QmFWMWRDQjR6ZzQzZ29OTkhhQ3R2UjEzQmN5SjVHc3EAAAAAC3NpZ25Bc3NldElkAQAAACDopWq8yndC8nBhMjVKT0WDubke5ZlnF8Nx6tkLoQSt6wAAAAALdXNkbkFzc2V0SWQBAAAAIA/yHBKs5MQ8muxGGqslqLDsugcrRsxtiHLwteKSSQG0AAAAAAx3YXZlc0Fzc2V0SWQBAAAAAAAAAAAFY2hyaXMCAAAAIzNNc0c2alBOQ3JWSlV0WUI3WEpCeFM3dXRXc1hBZjRuOVZwAAAAAARqb2VwAgAAACMzTXptNFZMd3NOOXVad2JUTXpQajNYdXhWNmtFZkFSOFVETgAAAAAHc2lnbkN1dAAAAAAAAAAAAwAAAAAKY3JlYXRvckN1dAAAAAAAAAAACgAAAAALZGFwcFJ1bm5p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", "height": 1533593, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: BAEBUeykQRiGK9xAMWdkqAvyrTQpcSp4kTwneprLF9jv Next: none Diff:
OldNewDifferences
205205 else false)
206206 then payment.assetId
207207 else throw("Only SIGN Art NFT accepted.")
208- let nftName = assetInfo(value(payment.assetId))
209- if (true)
210- then throw(("NFT Name = " + value(nftName).name))
211- else if (!(acceptedAssetIds(asset)))
212- then throw("Only SIGN, USDN or WAVES accepted")
213- else {
214- let $t075507626 = checkNFTInfo(toBase58String(value(assetId)))
215- let isValidNFT = $t075507626._1
216- let creatorAddr = $t075507626._2
217- if (!(isValidNFT))
218- then throw("Something went wrong")
219- 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)]
220- }
208+ let nftInfo = assetInfo(value(payment.assetId))
209+ if (!(acceptedAssetIds(asset)))
210+ then throw("Only SIGN, USDN or WAVES accepted")
211+ else {
212+ let $t074867562 = checkNFTInfo(toBase58String(value(assetId)))
213+ let isValidNFT = $t074867562._1
214+ let creatorAddr = $t074867562._2
215+ if (!(isValidNFT))
216+ then throw("Something went wrong")
217+ else [StringEntry((((((("sale2nd_info_" + caller) + "_") + toBase58String(value(payment.assetId))) + "_") + creatorAddr) + "_OPEN"), ((((((toString(date) + "_") + toString(price)) + "_") + asset) + "_") + value(nftInfo).name)), StringEntry(((("sale2nd_status_" + caller) + "_") + toBase58String(value(payment.assetId))), "OPEN"), StringEntry(("current_owner_on_dapp_" + toBase58String(value(payment.assetId))), caller)]
218+ }
221219 }
222220
223221
224222
225223 @Callable(i)
226224 func cancelSale (nftid) = {
227- let $t083028341 = idCallerDate(i)
228- let id = $t083028341._1
229- let caller = $t083028341._2
230- let date = $t083028341._3
225+ let $t082628301 = idCallerDate(i)
226+ let id = $t082628301._1
227+ let caller = $t082628301._2
228+ let date = $t082628301._3
231229 let saleOwner = getStrByK(("current_owner_on_dapp_" + nftid))
232230 if ((saleOwner != caller))
233231 then throw("You don't own this NFT")
247245
248246 @Callable(i)
249247 func buyNFT (nftid) = {
250- let $t094709541 = idCallerDate(i)
251- let id = $t094709541._1
252- let caller = $t094709541._2
253- let date = $t094709541._3
248+ let $t094309469 = idCallerDate(i)
249+ let id = $t094309469._1
250+ let caller = $t094309469._2
251+ let date = $t094309469._3
252+ let nftInfo = assetInfo(fromBase58String(nftid))
254253 let saleOwner = getSaleOwnerAndStatus(nftid)
255- let $t095969647 = checkNFTInfo(nftid)
256- let isValidNFT = $t095969647._1
257- let creatorAddr = $t095969647._2
254+ let $t096099660 = checkNFTInfo(nftid)
255+ let isValidNFT = $t096099660._1
256+ let creatorAddr = $t096099660._2
258257 if (!(isValidNFT))
259258 then throw("Something went wrong")
260259 else {
266265 if ((parseInt(saleInfoArray[1]) == 0))
267266 then throw("Offer only")
268267 else {
269- let $t0998310019 = isPayment(i)
270- let payment = $t0998310019._1
271- let amount = $t0998310019._2
268+ let $t0999610032 = isPayment(i)
269+ let payment = $t0999610032._1
270+ let amount = $t0999610032._2
272271 if (if ((saleInfoArray[1] != toString(amount)))
273272 then true
274273 else (saleInfoArray[2] != toBase58String(value(payment.assetId))))
277276 let amountForSign = fraction(amount, signCut, 100)
278277 let amountForCreator = fraction(amount, creatorCut, 100)
279278 let amountForOwner = (amount - (amountForSign + amountForCreator))
280- let $t01044210570 = setTransfers(amount, payment.assetId, nftid, creatorAddr, saleOwner, caller)
281- let signFee = $t01044210570._1
282- let creatorFee = $t01044210570._2
283- let ownerFee = $t01044210570._3
284- let collectorFee = $t01044210570._4
285-[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]
279+ let $t01045510583 = setTransfers(amount, payment.assetId, nftid, creatorAddr, saleOwner, caller)
280+ let signFee = $t01045510583._1
281+ let creatorFee = $t01045510583._2
282+ let ownerFee = $t01045510583._3
283+ let collectorFee = $t01045510583._4
284+[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))) + "_") + value(nftInfo).name) + "_") + "to_") + caller)), signFee, creatorFee, ownerFee, collectorFee]
286285 }
287286 }
288287 }
293292
294293 @Callable(i)
295294 func setOffer (nftid) = {
296- let $t01165811700 = idCallerDate(i)
297- let id = $t01165811700._1
298- let offerOwner = $t01165811700._2
299- let date = $t01165811700._3
300- let $t01170511741 = isPayment(i)
301- let payment = $t01170511741._1
302- let amount = $t01170511741._2
295+ let $t01169811740 = idCallerDate(i)
296+ let id = $t01169811740._1
297+ let offerOwner = $t01169811740._2
298+ let date = $t01169811740._3
299+ let nftInfo = assetInfo(fromBase58String(nftid))
300+ let $t01179811834 = isPayment(i)
301+ let payment = $t01179811834._1
302+ let amount = $t01179811834._2
303303 let assetId = if (!(isDefined(payment.assetId)))
304304 then "WAVES"
305305 else toBase58String(value(payment.assetId))
306306 if (!(acceptedAssetIds(assetId)))
307307 then throw("asset not accepted")
308308 else {
309- let $t01192711978 = checkNFTInfo(nftid)
310- let isValidNFT = $t01192711978._1
311- let creatorAddr = $t01192711978._2
309+ let $t01202012071 = checkNFTInfo(nftid)
310+ let isValidNFT = $t01202012071._1
311+ let creatorAddr = $t01202012071._2
312312 if (!(isValidNFT))
313313 then throw("Something went wrong")
314314 else {
315315 let saleOwner = getSaleOwnerAndStatus(nftid)
316-[StringEntry((((((((("offer2nd_" + offerOwner) + "_") + nftid) + "_") + saleOwner) + "_") + id) + "_OPEN"), ((((((((toString(date) + "_") + toString(amount)) + "_") + assetId) + "_") + offerOwner) + "_") + id))]
316+[StringEntry((((((((("offer2nd_" + offerOwner) + "_") + nftid) + "_") + saleOwner) + "_") + id) + "_OPEN"), ((((((((((toString(date) + "_") + toString(amount)) + "_") + assetId) + "_") + value(nftInfo).name) + "_") + offerOwner) + "_") + id))]
317317 }
318318 }
319319 }
322322
323323 @Callable(i)
324324 func acceptOffer (nftid,offerId,offerOwner) = {
325- let $t01252612596 = idCallerDate(i)
326- let id = $t01252612596._1
327- let caller = $t01252612596._2
328- let date = $t01252612596._3
325+ let $t01264312681 = idCallerDate(i)
326+ let id = $t01264312681._1
327+ let caller = $t01264312681._2
328+ let date = $t01264312681._3
329+ let nftInfo = assetInfo(fromBase58String(nftid))
329330 let saleOwner = getSaleOwnerAndStatus(nftid)
330331 if ((caller != saleOwner))
331332 then throw("You cannot do this action")
334335 if ((offerExist == ""))
335336 then throw("Offer not found or not for sale")
336337 else {
337- let $t01290112952 = checkNFTInfo(nftid)
338- let isValidNFT = $t01290112952._1
339- let creatorAddr = $t01290112952._2
338+ let $t01307013121 = checkNFTInfo(nftid)
339+ let isValidNFT = $t01307013121._1
340+ let creatorAddr = $t01307013121._2
340341 if (!(isValidNFT))
341342 then throw("Something went wrong")
342343 else {
345346 then throw("Sale Not found!")
346347 else {
347348 let bidDataKey = ((((((("offer2nd_" + offerOwner) + "_") + nftid) + "_") + saleOwner) + "_") + offerId)
348- let $t01328813347 = getBidData(bidDataKey)
349- let bidDataArr = $t01328813347._1
350- let assetId = $t01328813347._2
351- let bidData = $t01328813347._3
349+ let $t01345713516 = getBidData(bidDataKey)
350+ let bidDataArr = $t01345713516._1
351+ let assetId = $t01345713516._2
352+ let bidData = $t01345713516._3
352353 let amount = value(parseInt(bidDataArr[1]))
353- let $t01340113528 = setTransfers(amount, assetId, nftid, creatorAddr, saleOwner, bidDataArr[3])
354- let signFee = $t01340113528._1
355- let creatorFee = $t01340113528._2
356- let ownerFee = $t01340113528._3
357- let collectorFee = $t01340113528._4
358-[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]
354+ let $t01357013697 = setTransfers(amount, assetId, nftid, creatorAddr, saleOwner, bidDataArr[3])
355+ let signFee = $t01357013697._1
356+ let creatorFee = $t01357013697._2
357+ let ownerFee = $t01357013697._3
358+ let collectorFee = $t01357013697._4
359+[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))) + "_") + value(nftInfo).name) + "_to_") + offerOwner)), signFee, creatorFee, ownerFee, collectorFee]
359360 }
360361 }
361362 }
366367
367368 @Callable(i)
368369 func cancelOffer (nftid,offerId,saleOwner) = {
369- let $t01430214363 = idCallerDate(i)
370- let id = $t01430214363._1
371- let caller = $t01430214363._2
372- let date = $t01430214363._3
370+ let $t01449514556 = idCallerDate(i)
371+ let id = $t01449514556._1
372+ let caller = $t01449514556._2
373+ let date = $t01449514556._3
373374 let bidDataKey = ((((((("offer2nd_" + caller) + "_") + nftid) + "_") + saleOwner) + "_") + offerId)
374- let $t01444414503 = getBidData(bidDataKey)
375- let bidDataArr = $t01444414503._1
376- let assetId = $t01444414503._2
377- let bidData = $t01444414503._3
375+ let $t01463714696 = getBidData(bidDataKey)
376+ let bidDataArr = $t01463714696._1
377+ let assetId = $t01463714696._2
378+ let bidData = $t01463714696._3
378379 [DeleteEntry((bidDataKey + "_OPEN")), StringEntry((((((bidDataKey + "_") + toString(date)) + "_") + id) + "_CANCELLED"), ((bidData + "_") + toString(date))), ScriptTransfer(Address(fromBase58String(caller)), parseIntValue(bidDataArr[1]), assetId)]
379380 }
380381
382383
383384 @Callable(i)
384385 func makeRequest (artId,creatorAddr) = {
385- let $t01483814882 = idCallerDate(i)
386- let id = $t01483814882._1
387- let requestOwner = $t01483814882._2
388- let date = $t01483814882._3
389- let $t01488714923 = isPayment(i)
390- let payment = $t01488714923._1
391- let amount = $t01488714923._2
386+ let $t01503115075 = idCallerDate(i)
387+ let id = $t01503115075._1
388+ let requestOwner = $t01503115075._2
389+ let date = $t01503115075._3
390+ let $t01508015116 = isPayment(i)
391+ let payment = $t01508015116._1
392+ let amount = $t01508015116._2
392393 let assetId = if (!(isDefined(payment.assetId)))
393394 then "WAVES"
394395 else toBase58String(value(payment.assetId))
406407
407408 @Callable(i)
408409 func fillRequest (artId,requestOwner,offerId) = {
409- let $t01569815740 = idCallerDate(i)
410- let id = $t01569815740._1
411- let saleOwner = $t01569815740._2
412- let date = $t01569815740._3
413- let $t01574515789 = isPayment(i)
414- let payment = $t01574515789._1
415- let amountAttached = $t01574515789._2
410+ let $t01589115933 = idCallerDate(i)
411+ let id = $t01589115933._1
412+ let saleOwner = $t01589115933._2
413+ let date = $t01589115933._3
414+ let $t01593815982 = isPayment(i)
415+ let payment = $t01593815982._1
416+ let amountAttached = $t01593815982._2
416417 let NFTid = if (if (isDefined(payment.assetId))
417418 then isSignArtNFT(value(payment.assetId))
418419 else false)
429430 then throw("This NFT don't match the requested artwork")
430431 else {
431432 let amount = value(parseInt(requestData[1]))
432- let $t01650916684 = setTransfers(amount, fromBase58String(requestData[2]), toBase58String(value(NFTid)), NFTdata[6], saleOwner, requestData[4])
433- let signFee = $t01650916684._1
434- let creatorFee = $t01650916684._2
435- let ownerFee = $t01650916684._3
436- let collectorFee = $t01650916684._4
433+ let $t01670216877 = setTransfers(amount, fromBase58String(requestData[2]), toBase58String(value(NFTid)), NFTdata[6], saleOwner, requestData[4])
434+ let signFee = $t01670216877._1
435+ let creatorFee = $t01670216877._2
436+ let ownerFee = $t01670216877._3
437+ let collectorFee = $t01670216877._4
437438 [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]
438439 }
439440 }
443444
444445 @Callable(i)
445446 func cancelRequest (artId,creatorAddr,requestId) = {
446- let $t01714417188 = idCallerDate(i)
447- let id = $t01714417188._1
448- let requestOwner = $t01714417188._2
449- let date = $t01714417188._3
447+ let $t01733717381 = idCallerDate(i)
448+ let id = $t01733717381._1
449+ let requestOwner = $t01733717381._2
450+ let date = $t01733717381._3
450451 let requesDataKey = ((((((("request2nd_" + requestOwner) + "_") + creatorAddr) + "_") + artId) + "_") + requestId)
451452 let requestData = getStrByK((requesDataKey + "_OPEN"))
452453 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
182182 func setTransfers (amount,assetId,nftid,creatorAddr,saleOwner,caller) = {
183183 let amountForSign = fraction(amount, signCut, 100)
184184 let amountForCreator = fraction(amount, creatorCut, 100)
185185 let amountForOwner = (amount - (amountForSign + amountForCreator))
186186 let signFee = ScriptTransfer(Address(fromBase58String(feeReceiver)), amountForSign, assetId)
187187 let creatorFee = ScriptTransfer(Address(fromBase58String(creatorAddr)), amountForCreator, assetId)
188188 let ownerFee = ScriptTransfer(Address(fromBase58String(saleOwner)), amountForOwner, assetId)
189189 let collectorFee = ScriptTransfer(Address(fromBase58String(caller)), 1, fromBase58String(nftid))
190190 $Tuple4(signFee, creatorFee, ownerFee, collectorFee)
191191 }
192192
193193
194194 @Callable(i)
195195 func sellNFT (price,asset) = {
196196 let $t070747113 = idCallerDate(i)
197197 let id = $t070747113._1
198198 let caller = $t070747113._2
199199 let date = $t070747113._3
200200 let $t071187154 = isPayment(i)
201201 let payment = $t071187154._1
202202 let amount = $t071187154._2
203203 let assetId = if (if (isDefined(payment.assetId))
204204 then isSignArtNFT(value(payment.assetId))
205205 else false)
206206 then payment.assetId
207207 else throw("Only SIGN Art NFT accepted.")
208- let nftName = assetInfo(value(payment.assetId))
209- if (true)
210- then throw(("NFT Name = " + value(nftName).name))
211- else if (!(acceptedAssetIds(asset)))
212- then throw("Only SIGN, USDN or WAVES accepted")
213- else {
214- let $t075507626 = checkNFTInfo(toBase58String(value(assetId)))
215- let isValidNFT = $t075507626._1
216- let creatorAddr = $t075507626._2
217- if (!(isValidNFT))
218- then throw("Something went wrong")
219- 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)]
220- }
208+ let nftInfo = assetInfo(value(payment.assetId))
209+ if (!(acceptedAssetIds(asset)))
210+ then throw("Only SIGN, USDN or WAVES accepted")
211+ else {
212+ let $t074867562 = checkNFTInfo(toBase58String(value(assetId)))
213+ let isValidNFT = $t074867562._1
214+ let creatorAddr = $t074867562._2
215+ if (!(isValidNFT))
216+ then throw("Something went wrong")
217+ else [StringEntry((((((("sale2nd_info_" + caller) + "_") + toBase58String(value(payment.assetId))) + "_") + creatorAddr) + "_OPEN"), ((((((toString(date) + "_") + toString(price)) + "_") + asset) + "_") + value(nftInfo).name)), StringEntry(((("sale2nd_status_" + caller) + "_") + toBase58String(value(payment.assetId))), "OPEN"), StringEntry(("current_owner_on_dapp_" + toBase58String(value(payment.assetId))), caller)]
218+ }
221219 }
222220
223221
224222
225223 @Callable(i)
226224 func cancelSale (nftid) = {
227- let $t083028341 = idCallerDate(i)
228- let id = $t083028341._1
229- let caller = $t083028341._2
230- let date = $t083028341._3
225+ let $t082628301 = idCallerDate(i)
226+ let id = $t082628301._1
227+ let caller = $t082628301._2
228+ let date = $t082628301._3
231229 let saleOwner = getStrByK(("current_owner_on_dapp_" + nftid))
232230 if ((saleOwner != caller))
233231 then throw("You don't own this NFT")
234232 else {
235233 let saleStatus = getStrByK(((("sale2nd_status_" + caller) + "_") + nftid))
236234 if ((saleStatus != "OPEN"))
237235 then throw("Sale not active")
238236 else {
239237 let creatorAddr = split(getArtStrByK(keyNFTData(nftid)), "_")[6]
240238 let saleInfo = getStrByK(((((((("sale2nd_info_" + caller) + "_") + nftid) + "_") + creatorAddr) + "_") + saleStatus))
241239 [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))]
242240 }
243241 }
244242 }
245243
246244
247245
248246 @Callable(i)
249247 func buyNFT (nftid) = {
250- let $t094709541 = idCallerDate(i)
251- let id = $t094709541._1
252- let caller = $t094709541._2
253- let date = $t094709541._3
248+ let $t094309469 = idCallerDate(i)
249+ let id = $t094309469._1
250+ let caller = $t094309469._2
251+ let date = $t094309469._3
252+ let nftInfo = assetInfo(fromBase58String(nftid))
254253 let saleOwner = getSaleOwnerAndStatus(nftid)
255- let $t095969647 = checkNFTInfo(nftid)
256- let isValidNFT = $t095969647._1
257- let creatorAddr = $t095969647._2
254+ let $t096099660 = checkNFTInfo(nftid)
255+ let isValidNFT = $t096099660._1
256+ let creatorAddr = $t096099660._2
258257 if (!(isValidNFT))
259258 then throw("Something went wrong")
260259 else {
261260 let saleInfo = getStrByK((((((("sale2nd_info_" + saleOwner) + "_") + nftid) + "_") + creatorAddr) + "_OPEN"))
262261 if ((size(saleInfo) == 0))
263262 then throw("Sale Not found!")
264263 else {
265264 let saleInfoArray = split(saleInfo, "_")
266265 if ((parseInt(saleInfoArray[1]) == 0))
267266 then throw("Offer only")
268267 else {
269- let $t0998310019 = isPayment(i)
270- let payment = $t0998310019._1
271- let amount = $t0998310019._2
268+ let $t0999610032 = isPayment(i)
269+ let payment = $t0999610032._1
270+ let amount = $t0999610032._2
272271 if (if ((saleInfoArray[1] != toString(amount)))
273272 then true
274273 else (saleInfoArray[2] != toBase58String(value(payment.assetId))))
275274 then throw("Payment infos don't match.")
276275 else {
277276 let amountForSign = fraction(amount, signCut, 100)
278277 let amountForCreator = fraction(amount, creatorCut, 100)
279278 let amountForOwner = (amount - (amountForSign + amountForCreator))
280- let $t01044210570 = setTransfers(amount, payment.assetId, nftid, creatorAddr, saleOwner, caller)
281- let signFee = $t01044210570._1
282- let creatorFee = $t01044210570._2
283- let ownerFee = $t01044210570._3
284- let collectorFee = $t01044210570._4
285-[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]
279+ let $t01045510583 = setTransfers(amount, payment.assetId, nftid, creatorAddr, saleOwner, caller)
280+ let signFee = $t01045510583._1
281+ let creatorFee = $t01045510583._2
282+ let ownerFee = $t01045510583._3
283+ let collectorFee = $t01045510583._4
284+[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))) + "_") + value(nftInfo).name) + "_") + "to_") + caller)), signFee, creatorFee, ownerFee, collectorFee]
286285 }
287286 }
288287 }
289288 }
290289 }
291290
292291
293292
294293 @Callable(i)
295294 func setOffer (nftid) = {
296- let $t01165811700 = idCallerDate(i)
297- let id = $t01165811700._1
298- let offerOwner = $t01165811700._2
299- let date = $t01165811700._3
300- let $t01170511741 = isPayment(i)
301- let payment = $t01170511741._1
302- let amount = $t01170511741._2
295+ let $t01169811740 = idCallerDate(i)
296+ let id = $t01169811740._1
297+ let offerOwner = $t01169811740._2
298+ let date = $t01169811740._3
299+ let nftInfo = assetInfo(fromBase58String(nftid))
300+ let $t01179811834 = isPayment(i)
301+ let payment = $t01179811834._1
302+ let amount = $t01179811834._2
303303 let assetId = if (!(isDefined(payment.assetId)))
304304 then "WAVES"
305305 else toBase58String(value(payment.assetId))
306306 if (!(acceptedAssetIds(assetId)))
307307 then throw("asset not accepted")
308308 else {
309- let $t01192711978 = checkNFTInfo(nftid)
310- let isValidNFT = $t01192711978._1
311- let creatorAddr = $t01192711978._2
309+ let $t01202012071 = checkNFTInfo(nftid)
310+ let isValidNFT = $t01202012071._1
311+ let creatorAddr = $t01202012071._2
312312 if (!(isValidNFT))
313313 then throw("Something went wrong")
314314 else {
315315 let saleOwner = getSaleOwnerAndStatus(nftid)
316-[StringEntry((((((((("offer2nd_" + offerOwner) + "_") + nftid) + "_") + saleOwner) + "_") + id) + "_OPEN"), ((((((((toString(date) + "_") + toString(amount)) + "_") + assetId) + "_") + offerOwner) + "_") + id))]
316+[StringEntry((((((((("offer2nd_" + offerOwner) + "_") + nftid) + "_") + saleOwner) + "_") + id) + "_OPEN"), ((((((((((toString(date) + "_") + toString(amount)) + "_") + assetId) + "_") + value(nftInfo).name) + "_") + offerOwner) + "_") + id))]
317317 }
318318 }
319319 }
320320
321321
322322
323323 @Callable(i)
324324 func acceptOffer (nftid,offerId,offerOwner) = {
325- let $t01252612596 = idCallerDate(i)
326- let id = $t01252612596._1
327- let caller = $t01252612596._2
328- let date = $t01252612596._3
325+ let $t01264312681 = idCallerDate(i)
326+ let id = $t01264312681._1
327+ let caller = $t01264312681._2
328+ let date = $t01264312681._3
329+ let nftInfo = assetInfo(fromBase58String(nftid))
329330 let saleOwner = getSaleOwnerAndStatus(nftid)
330331 if ((caller != saleOwner))
331332 then throw("You cannot do this action")
332333 else {
333334 let offerExist = getStrByK((((((((("offer2nd_" + offerOwner) + "_") + nftid) + "_") + saleOwner) + "_") + offerId) + "_OPEN"))
334335 if ((offerExist == ""))
335336 then throw("Offer not found or not for sale")
336337 else {
337- let $t01290112952 = checkNFTInfo(nftid)
338- let isValidNFT = $t01290112952._1
339- let creatorAddr = $t01290112952._2
338+ let $t01307013121 = checkNFTInfo(nftid)
339+ let isValidNFT = $t01307013121._1
340+ let creatorAddr = $t01307013121._2
340341 if (!(isValidNFT))
341342 then throw("Something went wrong")
342343 else {
343344 let saleInfo = getStrByK((((((("sale2nd_info_" + saleOwner) + "_") + nftid) + "_") + creatorAddr) + "_OPEN"))
344345 if ((size(saleInfo) == 0))
345346 then throw("Sale Not found!")
346347 else {
347348 let bidDataKey = ((((((("offer2nd_" + offerOwner) + "_") + nftid) + "_") + saleOwner) + "_") + offerId)
348- let $t01328813347 = getBidData(bidDataKey)
349- let bidDataArr = $t01328813347._1
350- let assetId = $t01328813347._2
351- let bidData = $t01328813347._3
349+ let $t01345713516 = getBidData(bidDataKey)
350+ let bidDataArr = $t01345713516._1
351+ let assetId = $t01345713516._2
352+ let bidData = $t01345713516._3
352353 let amount = value(parseInt(bidDataArr[1]))
353- let $t01340113528 = setTransfers(amount, assetId, nftid, creatorAddr, saleOwner, bidDataArr[3])
354- let signFee = $t01340113528._1
355- let creatorFee = $t01340113528._2
356- let ownerFee = $t01340113528._3
357- let collectorFee = $t01340113528._4
358-[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]
354+ let $t01357013697 = setTransfers(amount, assetId, nftid, creatorAddr, saleOwner, bidDataArr[3])
355+ let signFee = $t01357013697._1
356+ let creatorFee = $t01357013697._2
357+ let ownerFee = $t01357013697._3
358+ let collectorFee = $t01357013697._4
359+[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))) + "_") + value(nftInfo).name) + "_to_") + offerOwner)), signFee, creatorFee, ownerFee, collectorFee]
359360 }
360361 }
361362 }
362363 }
363364 }
364365
365366
366367
367368 @Callable(i)
368369 func cancelOffer (nftid,offerId,saleOwner) = {
369- let $t01430214363 = idCallerDate(i)
370- let id = $t01430214363._1
371- let caller = $t01430214363._2
372- let date = $t01430214363._3
370+ let $t01449514556 = idCallerDate(i)
371+ let id = $t01449514556._1
372+ let caller = $t01449514556._2
373+ let date = $t01449514556._3
373374 let bidDataKey = ((((((("offer2nd_" + caller) + "_") + nftid) + "_") + saleOwner) + "_") + offerId)
374- let $t01444414503 = getBidData(bidDataKey)
375- let bidDataArr = $t01444414503._1
376- let assetId = $t01444414503._2
377- let bidData = $t01444414503._3
375+ let $t01463714696 = getBidData(bidDataKey)
376+ let bidDataArr = $t01463714696._1
377+ let assetId = $t01463714696._2
378+ let bidData = $t01463714696._3
378379 [DeleteEntry((bidDataKey + "_OPEN")), StringEntry((((((bidDataKey + "_") + toString(date)) + "_") + id) + "_CANCELLED"), ((bidData + "_") + toString(date))), ScriptTransfer(Address(fromBase58String(caller)), parseIntValue(bidDataArr[1]), assetId)]
379380 }
380381
381382
382383
383384 @Callable(i)
384385 func makeRequest (artId,creatorAddr) = {
385- let $t01483814882 = idCallerDate(i)
386- let id = $t01483814882._1
387- let requestOwner = $t01483814882._2
388- let date = $t01483814882._3
389- let $t01488714923 = isPayment(i)
390- let payment = $t01488714923._1
391- let amount = $t01488714923._2
386+ let $t01503115075 = idCallerDate(i)
387+ let id = $t01503115075._1
388+ let requestOwner = $t01503115075._2
389+ let date = $t01503115075._3
390+ let $t01508015116 = isPayment(i)
391+ let payment = $t01508015116._1
392+ let amount = $t01508015116._2
392393 let assetId = if (!(isDefined(payment.assetId)))
393394 then "WAVES"
394395 else toBase58String(value(payment.assetId))
395396 if (!(acceptedAssetIds(assetId)))
396397 then throw("asset not accepted")
397398 else {
398399 let isValidART = checkARTExist(artId, creatorAddr)
399400 if (!(isValidART))
400401 then throw("Something went wrong")
401402 else [StringEntry((((((((("request2nd_" + requestOwner) + "_") + creatorAddr) + "_") + artId) + "_") + id) + "_OPEN"), ((((((((((toString(date) + "_") + toString(amount)) + "_") + toBase58String(value(payment.assetId))) + "_") + artId) + "_") + requestOwner) + "_") + id))]
402403 }
403404 }
404405
405406
406407
407408 @Callable(i)
408409 func fillRequest (artId,requestOwner,offerId) = {
409- let $t01569815740 = idCallerDate(i)
410- let id = $t01569815740._1
411- let saleOwner = $t01569815740._2
412- let date = $t01569815740._3
413- let $t01574515789 = isPayment(i)
414- let payment = $t01574515789._1
415- let amountAttached = $t01574515789._2
410+ let $t01589115933 = idCallerDate(i)
411+ let id = $t01589115933._1
412+ let saleOwner = $t01589115933._2
413+ let date = $t01589115933._3
414+ let $t01593815982 = isPayment(i)
415+ let payment = $t01593815982._1
416+ let amountAttached = $t01593815982._2
416417 let NFTid = if (if (isDefined(payment.assetId))
417418 then isSignArtNFT(value(payment.assetId))
418419 else false)
419420 then payment.assetId
420421 else throw("No NFT found")
421422 let NFTdata = split(getArtStrByK(("nft_" + toBase58String(value(NFTid)))), "_")
422423 if ((size(NFTdata) == 0))
423424 then throw("No NFT found")
424425 else {
425426 let requestData = split(getStrByK((((((((("request2nd_" + requestOwner) + "_") + NFTdata[6]) + "_") + artId) + "_") + offerId) + "_OPEN")), "_")
426427 if ((size(requestData) == 1))
427428 then throw("No request found")
428429 else if ((requestData[3] != NFTdata[5]))
429430 then throw("This NFT don't match the requested artwork")
430431 else {
431432 let amount = value(parseInt(requestData[1]))
432- let $t01650916684 = setTransfers(amount, fromBase58String(requestData[2]), toBase58String(value(NFTid)), NFTdata[6], saleOwner, requestData[4])
433- let signFee = $t01650916684._1
434- let creatorFee = $t01650916684._2
435- let ownerFee = $t01650916684._3
436- let collectorFee = $t01650916684._4
433+ let $t01670216877 = setTransfers(amount, fromBase58String(requestData[2]), toBase58String(value(NFTid)), NFTdata[6], saleOwner, requestData[4])
434+ let signFee = $t01670216877._1
435+ let creatorFee = $t01670216877._2
436+ let ownerFee = $t01670216877._3
437+ let collectorFee = $t01670216877._4
437438 [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]
438439 }
439440 }
440441 }
441442
442443
443444
444445 @Callable(i)
445446 func cancelRequest (artId,creatorAddr,requestId) = {
446- let $t01714417188 = idCallerDate(i)
447- let id = $t01714417188._1
448- let requestOwner = $t01714417188._2
449- let date = $t01714417188._3
447+ let $t01733717381 = idCallerDate(i)
448+ let id = $t01733717381._1
449+ let requestOwner = $t01733717381._2
450+ let date = $t01733717381._3
450451 let requesDataKey = ((((((("request2nd_" + requestOwner) + "_") + creatorAddr) + "_") + artId) + "_") + requestId)
451452 let requestData = getStrByK((requesDataKey + "_OPEN"))
452453 if ((size(requestData) == 0))
453454 then throw("Request not found")
454455 else {
455456 let requestDataArr = split(requestData, "_")
456457 [DeleteEntry((requesDataKey + "_OPEN")), StringEntry((((((requesDataKey + "_") + toString(date)) + "_") + id) + "_CANCELLED"), ((requestData + "_") + toString(date))), ScriptTransfer(Address(fromBase58String(requestOwner)), parseIntValue(requestDataArr[1]), fromBase58String(requestDataArr[2]))]
457458 }
458459 }
459460
460461
461462
462463 @Callable(i)
463464 func deleteEntry (entry) = {
464465 let caller = toString(addressFromPublicKey(i.callerPublicKey))
465466 if ((caller == chris))
466467 then [DeleteEntry(entry)]
467468 else throw("no")
468469 }
469470
470471

github/deemru/w8io/3ef1775 
144.30 ms