tx · FsJYPzUKCnL19cDrVh95dg15y1KPSAWZQ6mBPMdHQMPu

3N2eA4yzXa4wTj7pP8r6G144RRxZW7cmq4p:  -0.01400000 Waves

2022.02.02 15:03 [1905945] smart account 3N2eA4yzXa4wTj7pP8r6G144RRxZW7cmq4p > SELF 0.00000000 Waves

{ "type": 13, "id": "FsJYPzUKCnL19cDrVh95dg15y1KPSAWZQ6mBPMdHQMPu", "fee": 1400000, "feeAssetId": null, "timestamp": 1643803497755, "version": 2, "chainId": 84, "sender": "3N2eA4yzXa4wTj7pP8r6G144RRxZW7cmq4p", "senderPublicKey": "Hh3eFP2XFetZSfTxQiM1Ps96f68zi8Zh5ghhCZdjgdFs", "proofs": [ "39QvdaeXCbi6QjH4ziRRDvn5VdtfZu2vQA4ut5jhi87wdUxKzB761fSSQrDzhT8fHavYtSuhjvKh9a77VPNXYGY7" ], "script": "base64:AAIFAAAAAAAAADMIAhIECgIECBIECgIBCBIFCgMIAQgSAwoBCBIDCgEIEgMKAQgSBQoDCAgIEgYKBAgICAgAAAAzAAAAAAh1bml0VGVzdAcAAAAACW9yYWNsZUZlZQkBAAAABXZhbHVlAAAAAQkABCYAAAABAgAAACMzTjJzNVJ0YUhQQmVuQ3N4MkVDY29GUmJZSHgzbm9aaFhXMQAAAAAIc2lnbkRhcHAJAQAAAAV2YWx1ZQAAAAEJAAQmAAAAAQIAAAAjM05DMjhoU2l2cm1zVFVYYVlEMXg2TDM2Mko0WnBVbm9UZEIAAAAADGFydHdvcmtzRGFwcAkBAAAABXZhbHVlAAAAAQkABCYAAAABAgAAACMzTkJ5bmZiWEMyS2FzdFV4aHVrY01VYUU1OEs5Y0JkQjlVWQAAAAALZmVlUmVjZWl2ZXICAAAAIzNOMUU2dFhkZFJvVmFSZlE5ZFEzdmc1TGFXMmZzZDhIS3ViAAAAAAh1c2VyRGFwcAMFAAAACHVuaXRUZXN0CQEAAAAFdmFsdWUAAAABCQAEJgAAAAECAAAAIzNNdDRSR01FeWpTV1lBb2NUUHFkNTV3ZEhRUUIzUFUyVUNtCQEAAAAFdmFsdWUAAAABCQAEJgAAAAECAAAAIzNOOHhYYVlqRTI3QWE3OWQ1aEhyaEh1OUhhRm9UQm1oREVqAAAAAA13aGl0ZWxpc3REYXBwCQEAAAAFdmFsdWUAAAABCQAEJgAAAAECAAAAIzNONkJhVjFkQ0I0emc0M2dvTk5IYUN0dlIxM0JjeUo1R3NxAAAAAAtzaWduQXNzZXRJZAEAAAAg6KVqvMp3QvJwYTI1Sk9Fg7m5HuWZZxfDcerZC6EEresAAAAAC3VzZG5Bc3NldElkAQAAACAP8hwSrOTEPJrsRhqrJaiw7LoHK0bMbYhy8LXikkkBtAAAAAAMd2F2ZXNBc3NldElkAQAAAAAAAAAABWNocmlzAgAAACMzTXNHNmpQTkNyVkpVdFlCN1hKQnhTN3V0V3NYQWY0bjlWcAAAAAAHc2lnbkN1dAAAAAAAAAAAAwAAAAAKY3JlYXRvckN1dAAAAAAAAAAACgAAAAANdXNlclN1c3BlbmRlZAIAAAAJU1VTUEVOREVEAAAAAAt1c2VyUmVtb3ZlZAIAAAAHUkVNT1ZFRAAAAAAKYXJ0SWxsZWdh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AAAAAAAABgUAAAAJYXJ0U2lnbklEAQAAAA1jaGVja0FSVEV4aXN0AAAAAgAAAAVhcnRJZAAAAAtjcmVhdG9yQWRkcgQAAAAJYXJ0U2lnbklECQEAAAAMZ2V0QXJ0U3RyQnlLAAAAAQkBAAAACWtleVNpZ25JRAAAAAIFAAAAC2NyZWF0b3JBZGRyBQAAAAVhcnRJZAMJAAAAAAAAAgkAATEAAAABBQAAAAlhcnRTaWduSUQAAAAAAAAAAAAJAAACAAAAAQIAAAAdQXJ0d29yayBub3QgZm91bmQgb24gU0lHTiBBcnQDAwkBAAAAASEAAAABCQEAAAAOY2hlY2tBcnRTdGF0dXMAAAACBQAAAAtjcmVhdG9yQWRkcgUAAAAFYXJ0SWQJAQAAAAEhAAAAAQkBAAAAEWNoZWNrQXJ0aXN0U3RhdHVzAAAAAQUAAAALY3JlYXRvckFkZHIHBwYBAAAADHNldFRyYW5zZmVycwAAAAYAAAAGYW1vdW50AAAAB2Fzc2V0SWQAAAAFbmZ0aWQAAAALY3JlYXRvckFkZHIAAAAJc2FsZU93bmVyAAAABmNhbGxlcgQAAAANYW1vdW50Rm9yU2lnbgkAAGsAAAADBQAAAAZhbW91bnQFAAAAB3NpZ25DdXQAAAAAAAAAAGQEAAAAEGFtb3VudEZvckNyZWF0b3IJAABrAAAAAwUAAAAGYW1vdW50BQAAAApjcmVhdG9yQ3V0AAAAAAAAAABkBAAAAA5hbW91bnRGb3JPd25lcgkAAGUAAAACBQAAAAZhbW91bnQJAABkAAAAAgUAAAANYW1vdW50Rm9yU2lnbgUAAAAQYW1vdW50Rm9yQ3JlYXRvcgQAAAAHc2lnbkZlZQkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwkBAAAAB0FkZHJlc3MAAAABCQACWQAAAAEFAAAAC2ZlZVJlY2VpdmVyBQAAAA1hbW91bnRGb3JTaWduBQAAAAdhc3NldElkBAAAAApjcmVhdG9yRmVlCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCQEAAAAHQWRkcmVzcwAAAAEJAAJZAAAAAQUAAAALY3JlYXRvckFkZHIFAAAAEGFtb3VudEZvckNyZWF0b3IFAAAAB2Fzc2V0SWQEAAAACG93bmVyRmVlCQEAAAAOU2NyaXB0VHJhbnNmZXIA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", "height": 1905945, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 7ePUitvYZnPRjox4Bx9zCJDuyqzDtKvop3DeRG7goJEE Next: 2JxtmcDZGopstmYjUg5n3QDFwBvANp7cgSrjk9RnTpGG Diff:
OldNewDifferences
276276 let $t094019437 = isPayment(i)
277277 let payment = $t094019437._1
278278 let amount = $t094019437._2
279- let nftId = if (if (isDefined(payment.assetId))
280- then isSignArtNFT(value(payment.assetId))
281- else false)
282- then toBase58String(value(payment.assetId))
283- else throw("Only SIGN Art NFT accepted.")
284- let $t096169708 = provideBaseData(i, nftId)
285- let id = $t096169708._1
286- let caller = $t096169708._2
287- let date = $t096169708._3
288- let isValidNFT = $t096169708._4
289- let artId = $t096169708._5
290- let creatorAddr = $t096169708._6
291- let artSignID = $t096169708._7
292- if ((size(artSignID) == 0))
293- then throw("Artwork not found on SIGN Art")
294- else if (!(isValidNFT))
295- then throw("Not a valid nft")
296- else if (!(acceptedAssetIds(asset)))
297- then throw("Only SIGN, USDN or WAVES accepted")
298- else if (!(validateMinSell(asset, price)))
299- then throw("Wrong minimum sell price")
300- else [StringEntry((getSaleKey(caller, nftId, artId, creatorAddr) + "_OPEN"), ((((((((((((toString(date) + "_") + toString(price)) + "_") + asset) + "_") + nftId) + "_") + artId) + "_") + creatorAddr) + "_") + id)), StringEntry(((("sale2nd_status_" + caller) + "_") + nftId), "OPEN"), StringEntry(("current_owner_on_dapp_" + nftId), caller)]
279+ if ((amount != 1))
280+ then throw("No NFT attached")
281+ else {
282+ let nftId = if (if (isDefined(payment.assetId))
283+ then isSignArtNFT(value(payment.assetId))
284+ else false)
285+ then toBase58String(value(payment.assetId))
286+ else throw("Only SIGN Art NFT accepted.")
287+ let $t096699761 = provideBaseData(i, nftId)
288+ let id = $t096699761._1
289+ let caller = $t096699761._2
290+ let date = $t096699761._3
291+ let isValidNFT = $t096699761._4
292+ let artId = $t096699761._5
293+ let creatorAddr = $t096699761._6
294+ let artSignID = $t096699761._7
295+ if ((size(artSignID) == 0))
296+ then throw("Artwork not found on SIGN Art")
297+ else if (!(isValidNFT))
298+ then throw("Not a valid nft")
299+ else if (!(acceptedAssetIds(asset)))
300+ then throw("Only SIGN, USDN or WAVES accepted")
301+ else if (!(validateMinSell(asset, price)))
302+ then throw("Wrong minimum sell price")
303+ else [StringEntry((getSaleKey(caller, nftId, artId, creatorAddr) + "_OPEN"), ((((((((((((toString(date) + "_") + toString(price)) + "_") + asset) + "_") + nftId) + "_") + artId) + "_") + creatorAddr) + "_") + id)), StringEntry(((("sale2nd_status_" + caller) + "_") + nftId), "OPEN"), StringEntry(("current_owner_on_dapp_" + nftId), caller)]
304+ }
301305 }
302306
303307
304308
305309 @Callable(i)
306310 func updateSalePrice (nftId,price,asset) = {
307- let $t01058210674 = provideBaseData(i, nftId)
308- let id = $t01058210674._1
309- let caller = $t01058210674._2
310- let date = $t01058210674._3
311- let isValidNFT = $t01058210674._4
312- let artId = $t01058210674._5
313- let creatorAddr = $t01058210674._6
314- let artSignID = $t01058210674._7
311+ let $t01063510727 = provideBaseData(i, nftId)
312+ let id = $t01063510727._1
313+ let caller = $t01063510727._2
314+ let date = $t01063510727._3
315+ let isValidNFT = $t01063510727._4
316+ let artId = $t01063510727._5
317+ let creatorAddr = $t01063510727._6
318+ let artSignID = $t01063510727._7
315319 if ((size(artSignID) == 0))
316320 then throw("Artwork not found on SIGN Art, cancel your sale.")
317321 else if (!(isValidNFT))
341345
342346 @Callable(i)
343347 func cancelSale (nftId) = {
344- let $t01181612056 = provideBaseData(i, nftId)
345- let id = $t01181612056._1
346- let caller = $t01181612056._2
347- let date = $t01181612056._3
348- let isValidNFT = $t01181612056._4
349- let artId = $t01181612056._5
350- let creatorAddr = $t01181612056._6
351- let artSignID = $t01181612056._7
348+ let $t01186912109 = provideBaseData(i, nftId)
349+ let id = $t01186912109._1
350+ let caller = $t01186912109._2
351+ let date = $t01186912109._3
352+ let isValidNFT = $t01186912109._4
353+ let artId = $t01186912109._5
354+ let creatorAddr = $t01186912109._6
355+ let artSignID = $t01186912109._7
352356 let saleOwner = getStrByK(("current_owner_on_dapp_" + nftId))
353357 if ((saleOwner != caller))
354358 then throw("You don't own this NFT")
368372
369373 @Callable(i)
370374 func buyNFT (nftId) = {
371- let $t01288712979 = provideBaseData(i, nftId)
372- let id = $t01288712979._1
373- let caller = $t01288712979._2
374- let date = $t01288712979._3
375- let isValidNFT = $t01288712979._4
376- let artId = $t01288712979._5
377- let creatorAddr = $t01288712979._6
378- let artSignID = $t01288712979._7
375+ let $t01294013032 = provideBaseData(i, nftId)
376+ let id = $t01294013032._1
377+ let caller = $t01294013032._2
378+ let date = $t01294013032._3
379+ let isValidNFT = $t01294013032._4
380+ let artId = $t01294013032._5
381+ let creatorAddr = $t01294013032._6
382+ let artSignID = $t01294013032._7
379383 if ((size(artSignID) == 0))
380384 then throw("Artwork not found on SIGN Art, cancel your sale.")
381385 else if (!(isValidNFT))
391395 if ((parseInt(saleInfoArray[1]) == 0))
392396 then throw("Offer only")
393397 else {
394- let $t01347613512 = isPayment(i)
395- let payment = $t01347613512._1
396- let amount = $t01347613512._2
398+ let $t01352913565 = isPayment(i)
399+ let payment = $t01352913565._1
400+ let amount = $t01352913565._2
397401 let paymentAssetStr = if (isDefined(payment.assetId))
398402 then toBase58String(value(payment.assetId))
399403 else ""
405409 let amountForSign = fraction(amount, signCut, 100)
406410 let amountForCreator = fraction(amount, creatorCut, 100)
407411 let amountForOwner = (amount - (amountForSign + amountForCreator))
408- let $t01401514143 = setTransfers(amount, payment.assetId, nftId, creatorAddr, saleOwner, caller)
409- let signFee = $t01401514143._1
410- let creatorFee = $t01401514143._2
411- let ownerFee = $t01401514143._3
412- let collectorNFT = $t01401514143._4
412+ let $t01406814196 = setTransfers(amount, payment.assetId, nftId, creatorAddr, saleOwner, caller)
413+ let signFee = $t01406814196._1
414+ let creatorFee = $t01406814196._2
415+ let ownerFee = $t01406814196._3
416+ let collectorNFT = $t01406814196._4
413417 [DeleteEntry((saleKey + "_OPEN")), DeleteEntry(((("sale2nd_status_" + saleOwner) + "_") + nftId)), DeleteEntry(("current_owner_on_dapp_" + nftId)), StringEntry((((saleKey + "_") + id) + "_CLOSED"), ((((((saleInfo + "_CLOSED_") + toString(date)) + "_") + id) + "_") + caller)), updateNumSales(), signFee, creatorFee, ownerFee, collectorNFT]
414418 }
415419 }
421425
422426 @Callable(i)
423427 func setOffer (nftId) = {
424- let $t01455114647 = provideBaseData(i, nftId)
425- let id = $t01455114647._1
426- let offerOwner = $t01455114647._2
427- let date = $t01455114647._3
428- let isValidNFT = $t01455114647._4
429- let artId = $t01455114647._5
430- let creatorAddr = $t01455114647._6
431- let artSignID = $t01455114647._7
428+ let $t01460414700 = provideBaseData(i, nftId)
429+ let id = $t01460414700._1
430+ let offerOwner = $t01460414700._2
431+ let date = $t01460414700._3
432+ let isValidNFT = $t01460414700._4
433+ let artId = $t01460414700._5
434+ let creatorAddr = $t01460414700._6
435+ let artSignID = $t01460414700._7
432436 if (!(isValidNFT))
433437 then throw("Not a valid nft")
434438 else {
435- let $t01470814744 = isPayment(i)
436- let payment = $t01470814744._1
437- let amount = $t01470814744._2
439+ let $t01476114797 = isPayment(i)
440+ let payment = $t01476114797._1
441+ let amount = $t01476114797._2
438442 let assetId = if (!(isDefined(payment.assetId)))
439443 then "WAVES"
440444 else toBase58String(value(payment.assetId))
455459
456460 @Callable(i)
457461 func acceptOffer (nftId,offerId,offerOwner) = {
458- let $t01554615638 = provideBaseData(i, nftId)
459- let id = $t01554615638._1
460- let caller = $t01554615638._2
461- let date = $t01554615638._3
462- let isValidNFT = $t01554615638._4
463- let artId = $t01554615638._5
464- let creatorAddr = $t01554615638._6
465- let artSignID = $t01554615638._7
462+ let $t01559915691 = provideBaseData(i, nftId)
463+ let id = $t01559915691._1
464+ let caller = $t01559915691._2
465+ let date = $t01559915691._3
466+ let isValidNFT = $t01559915691._4
467+ let artId = $t01559915691._5
468+ let creatorAddr = $t01559915691._6
469+ let artSignID = $t01559915691._7
466470 if (!(isValidNFT))
467471 then throw("Not a valid nft")
468472 else {
471475 then throw("Only sale owner can accept offer")
472476 else {
473477 let bidKey = getBidKey(offerOwner, nftId, saleOwner, offerId)
474- let $t01589215947 = getBidData(bidKey)
475- let bidDataArr = $t01589215947._1
476- let assetId = $t01589215947._2
477- let bidData = $t01589215947._3
478+ let $t01594516000 = getBidData(bidKey)
479+ let bidDataArr = $t01594516000._1
480+ let assetId = $t01594516000._2
481+ let bidData = $t01594516000._3
478482 let saleKey = getSaleKey(saleOwner, nftId, artId, creatorAddr)
479483 let saleInfo = getStrByK((saleKey + "_OPEN"))
480484 if ((size(saleInfo) == 0))
481485 then throw("Sale Not found!")
482486 else {
483487 let amount = value(parseInt(bidDataArr[1]))
484- let $t01618316310 = setTransfers(amount, assetId, nftId, creatorAddr, saleOwner, bidDataArr[6])
485- let signFee = $t01618316310._1
486- let creatorFee = $t01618316310._2
487- let ownerFee = $t01618316310._3
488- let collectorNFT = $t01618316310._4
488+ let $t01623616363 = setTransfers(amount, assetId, nftId, creatorAddr, saleOwner, bidDataArr[6])
489+ let signFee = $t01623616363._1
490+ let creatorFee = $t01623616363._2
491+ let ownerFee = $t01623616363._3
492+ let collectorNFT = $t01623616363._4
489493 let assetIdStr = if (isDefined(assetId))
490494 then toBase58String(value(assetId))
491495 else "WAVES"
499503
500504 @Callable(i)
501505 func cancelOffer (nftId,offerId,offerOwner,saleOwner) = {
502- let $t01710717229 = idCallerDate(i)
503- let id = $t01710717229._1
504- let caller = $t01710717229._2
505- let date = $t01710717229._3
506+ let $t01716017232 = idCallerDate(i)
507+ let id = $t01716017232._1
508+ let caller = $t01716017232._2
509+ let date = $t01716017232._3
506510 if (if ((caller != offerOwner))
507511 then (caller != saleOwner)
508512 else false)
509513 then throw("You cannot cancel this offer.")
510514 else {
511515 let bidKey = getBidKey(offerOwner, nftId, saleOwner, offerId)
512- let $t01740117456 = getBidData(bidKey)
513- let bidDataArr = $t01740117456._1
514- let assetId = $t01740117456._2
515- let bidData = $t01740117456._3
516+ let $t01740417459 = getBidData(bidKey)
517+ let bidDataArr = $t01740417459._1
518+ let assetId = $t01740417459._2
519+ let bidData = $t01740417459._3
516520 [DeleteEntry((bidKey + "_OPEN")), StringEntry((bidKey + "_CANCELLED"), ((((bidData + "_CANCELLED_") + toString(date)) + "_") + id)), ScriptTransfer(Address(fromBase58String(caller)), parseIntValue(bidDataArr[1]), assetId)]
517521 }
518522 }
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
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 signCut = 3
2929
3030 let creatorCut = 10
3131
3232 let userSuspended = "SUSPENDED"
3333
3434 let userRemoved = "REMOVED"
3535
3636 let artIllegal = "ILLEGAL"
3737
3838 let artSuspended = "SUSPENDED"
3939
4040 let dappRunningKey = "conf_dapp_is_running"
4141
4242 let maintenanceMSGKey = "conf_maintenance_msg"
4343
4444 let dappRunning = valueOrElse(getBoolean(this, dappRunningKey), true)
4545
4646 let maintenanceMSG = valueOrElse(getString(this, maintenanceMSGKey), "")
4747
4848 let numSalesK = "num_sales"
4949
5050 func getUserStrByK (key) = valueOrElse(getString(userDapp, key), "Error")
5151
5252
5353 func getArtStrByK (key) = valueOrElse(getString(artworksDapp, key), "")
5454
5555
5656 func getStrByK (key) = valueOrElse(getString(this, key), "")
5757
5858
5959 func getIntByK (key) = valueOrElse(getInteger(this, key), 0)
6060
6161
6262 func keyUserStatus (addr) = ("user_status_" + addr)
6363
6464
6565 func keySignID (artistAddr,artId) = ((("art_signid_" + artId) + "_") + artistAddr)
6666
6767
6868 func keyFlag (artistAddr,artId) = ((("art_flag_" + artId) + "_") + artistAddr)
6969
7070
7171 func keyNFTData (id) = ("nft_" + id)
7272
7373
7474 func getSaleKey (caller,nftId,artId,creatorAddr) = ((((((("sale2nd_info_" + caller) + "_") + nftId) + "_") + artId) + "_") + creatorAddr)
7575
7676
7777 func getBidKey (offerOwner,nftId,saleOwner,offerId) = ((((((("offer2nd_" + offerOwner) + "_") + nftId) + "_") + saleOwner) + "_") + offerId)
7878
7979
8080 func getIntByKFromOracle (key) = valueOrErrorMessage(getInteger(oracleFee, key), "Integer undefine or 0 in oracle")
8181
8282
8383 let currentCertificationPrice = getIntByKFromOracle(("certification_fee_" + toBase58String(signAssetId)))
8484
8585 func idCallerDate (i) = if (!(dappRunning))
8686 then throw(maintenanceMSG)
8787 else $Tuple3(toBase58String(i.transactionId), toBase58String(i.caller.bytes), lastBlock.timestamp)
8888
8989
9090 func isPayment (i) = if ((size(i.payments) == 0))
9191 then throw("No payment attached")
9292 else {
9393 let payment = value(i.payments[0])
9494 let amount = value(payment.amount)
9595 $Tuple2(payment, amount)
9696 }
9797
9898
9999 func assetIsValid (assetDetails) = if (if (if ((assetDetails.quantity == 1))
100100 then (assetDetails.decimals == 0)
101101 else false)
102102 then (assetDetails.reissuable == false)
103103 else false)
104104 then (assetDetails.issuer == artworksDapp)
105105 else false
106106
107107
108108 func isSignArtNFT (id) = {
109109 let assetDetails = value(assetInfo(id))
110110 assetIsValid(assetDetails)
111111 }
112112
113113
114114 func acceptedAssetIds (assetId) = if (if (if (if ((assetId != toBase58String(signAssetId)))
115115 then (assetId != toBase58String(wavesAssetId))
116116 else false)
117117 then (assetId != "WAVES")
118118 else false)
119119 then (assetId != toBase58String(usdnAssetId))
120120 else false)
121121 then false
122122 else true
123123
124124
125125 func getBidAssetId (assetId) = if ((assetId == "WAVES"))
126126 then unit
127127 else fromBase58String(assetId)
128128
129129
130130 func getSaleOwnerAndStatus (nftid) = {
131131 let saleOwner = getStrByK(("current_owner_on_dapp_" + nftid))
132132 if ((size(saleOwner) == 0))
133133 then throw("NFT not found")
134134 else {
135135 let saleStatus = getStrByK(((("sale2nd_status_" + saleOwner) + "_") + nftid))
136136 if ((saleStatus != "OPEN"))
137137 then throw("NFT not for sale")
138138 else saleOwner
139139 }
140140 }
141141
142142
143143 func getBidData (key) = {
144144 let bidData = getStrByK((key + "_OPEN"))
145145 if ((bidData == ""))
146146 then throw("Offer not found")
147147 else {
148148 let bidDataArr = split(bidData, "_")
149149 let assetId = getBidAssetId(bidDataArr[2])
150150 $Tuple3(bidDataArr, assetId, bidData)
151151 }
152152 }
153153
154154
155155 func artIsValid (artStatus) = if ((artStatus != artIllegal))
156156 then (artStatus != artSuspended)
157157 else false
158158
159159
160160 func checkArtStatus (addr,id) = {
161161 let artStatus = getArtStrByK(keyFlag(addr, id))
162162 if (artIsValid(artStatus))
163163 then true
164164 else throw(("Original Artwork flagged as " + artStatus))
165165 }
166166
167167
168168 func checkArtistStatus (addr) = {
169169 let artistStatus = getUserStrByK(keyUserStatus(addr))
170170 if (containsElement([userSuspended, userRemoved], artistStatus))
171171 then throw(("Original Artist " + artistStatus))
172172 else true
173173 }
174174
175175
176176 func checkNFTInfo (assetId) = {
177177 let nftData = split(getArtStrByK(keyNFTData(assetId)), "_")
178178 let artSignID = getArtStrByK(keySignID(nftData[6], nftData[5]))
179179 if (if (!(checkArtStatus(nftData[6], nftData[5])))
180180 then !(checkArtistStatus(nftData[6]))
181181 else false)
182182 then $Tuple4(false, nftData[5], nftData[6], artSignID)
183183 else $Tuple4(true, nftData[5], nftData[6], artSignID)
184184 }
185185
186186
187187 func checkARTExist (artId,creatorAddr) = {
188188 let artSignID = getArtStrByK(keySignID(creatorAddr, artId))
189189 if ((size(artSignID) == 0))
190190 then throw("Artwork not found on SIGN Art")
191191 else if (if (!(checkArtStatus(creatorAddr, artId)))
192192 then !(checkArtistStatus(creatorAddr))
193193 else false)
194194 then false
195195 else true
196196 }
197197
198198
199199 func setTransfers (amount,assetId,nftid,creatorAddr,saleOwner,caller) = {
200200 let amountForSign = fraction(amount, signCut, 100)
201201 let amountForCreator = fraction(amount, creatorCut, 100)
202202 let amountForOwner = (amount - (amountForSign + amountForCreator))
203203 let signFee = ScriptTransfer(Address(fromBase58String(feeReceiver)), amountForSign, assetId)
204204 let creatorFee = ScriptTransfer(Address(fromBase58String(creatorAddr)), amountForCreator, assetId)
205205 let ownerFee = ScriptTransfer(Address(fromBase58String(saleOwner)), amountForOwner, assetId)
206206 let collectorNFT = ScriptTransfer(Address(fromBase58String(caller)), 1, fromBase58String(nftid))
207207 $Tuple4(signFee, creatorFee, ownerFee, collectorNFT)
208208 }
209209
210210
211211 func validateMinSell (assetId,price) = {
212212 let minSellWaves = if (unitTest)
213213 then 10
214214 else getIntByKFromOracle("waves_min_sell")
215215 let minSellUsdn = 1000000
216216 let minSellSign = if (unitTest)
217217 then 1
218218 else (currentCertificationPrice * 2)
219219 if (if (if (if (if ((assetId == toBase58String(usdnAssetId)))
220220 then (minSellUsdn > price)
221221 else false)
222222 then (price != 0)
223223 else false)
224224 then true
225225 else if (if ((assetId == toBase58String(signAssetId)))
226226 then (minSellSign > price)
227227 else false)
228228 then (price != 0)
229229 else false)
230230 then true
231231 else if (if (if ((assetId == toBase58String(wavesAssetId)))
232232 then true
233233 else (assetId == "WAVES"))
234234 then (minSellWaves > price)
235235 else false)
236236 then (price != 0)
237237 else false)
238238 then false
239239 else true
240240 }
241241
242242
243243 func provideBaseData (i,nftId) = {
244244 let $t085778616 = idCallerDate(i)
245245 let id = $t085778616._1
246246 let caller = $t085778616._2
247247 let date = $t085778616._3
248248 let $t086198688 = checkNFTInfo(nftId)
249249 let isValidNFT = $t086198688._1
250250 let artId = $t086198688._2
251251 let creatorAddr = $t086198688._3
252252 let artSignID = $t086198688._4
253253 $Tuple7(id, caller, date, isValidNFT, artId, creatorAddr, artSignID)
254254 }
255255
256256
257257 func updateNumSales () = {
258258 let numSales = getIntByK(numSalesK)
259259 IntegerEntry(numSalesK, (numSales + 1))
260260 }
261261
262262
263263 @Callable(invoke)
264264 func appRunning (isLive,message) = {
265265 let caller = toString(addressFromPublicKey(invoke.callerPublicKey))
266266 let id = toBase58String(invoke.transactionId)
267267 if (containsElement([chris, toString(this)], caller))
268268 then [BooleanEntry(dappRunningKey, isLive), StringEntry(maintenanceMSGKey, message)]
269269 else throw("You are not allowed to change this")
270270 }
271271
272272
273273
274274 @Callable(i)
275275 func sellNFT (price,asset) = {
276276 let $t094019437 = isPayment(i)
277277 let payment = $t094019437._1
278278 let amount = $t094019437._2
279- let nftId = if (if (isDefined(payment.assetId))
280- then isSignArtNFT(value(payment.assetId))
281- else false)
282- then toBase58String(value(payment.assetId))
283- else throw("Only SIGN Art NFT accepted.")
284- let $t096169708 = provideBaseData(i, nftId)
285- let id = $t096169708._1
286- let caller = $t096169708._2
287- let date = $t096169708._3
288- let isValidNFT = $t096169708._4
289- let artId = $t096169708._5
290- let creatorAddr = $t096169708._6
291- let artSignID = $t096169708._7
292- if ((size(artSignID) == 0))
293- then throw("Artwork not found on SIGN Art")
294- else if (!(isValidNFT))
295- then throw("Not a valid nft")
296- else if (!(acceptedAssetIds(asset)))
297- then throw("Only SIGN, USDN or WAVES accepted")
298- else if (!(validateMinSell(asset, price)))
299- then throw("Wrong minimum sell price")
300- else [StringEntry((getSaleKey(caller, nftId, artId, creatorAddr) + "_OPEN"), ((((((((((((toString(date) + "_") + toString(price)) + "_") + asset) + "_") + nftId) + "_") + artId) + "_") + creatorAddr) + "_") + id)), StringEntry(((("sale2nd_status_" + caller) + "_") + nftId), "OPEN"), StringEntry(("current_owner_on_dapp_" + nftId), caller)]
279+ if ((amount != 1))
280+ then throw("No NFT attached")
281+ else {
282+ let nftId = if (if (isDefined(payment.assetId))
283+ then isSignArtNFT(value(payment.assetId))
284+ else false)
285+ then toBase58String(value(payment.assetId))
286+ else throw("Only SIGN Art NFT accepted.")
287+ let $t096699761 = provideBaseData(i, nftId)
288+ let id = $t096699761._1
289+ let caller = $t096699761._2
290+ let date = $t096699761._3
291+ let isValidNFT = $t096699761._4
292+ let artId = $t096699761._5
293+ let creatorAddr = $t096699761._6
294+ let artSignID = $t096699761._7
295+ if ((size(artSignID) == 0))
296+ then throw("Artwork not found on SIGN Art")
297+ else if (!(isValidNFT))
298+ then throw("Not a valid nft")
299+ else if (!(acceptedAssetIds(asset)))
300+ then throw("Only SIGN, USDN or WAVES accepted")
301+ else if (!(validateMinSell(asset, price)))
302+ then throw("Wrong minimum sell price")
303+ else [StringEntry((getSaleKey(caller, nftId, artId, creatorAddr) + "_OPEN"), ((((((((((((toString(date) + "_") + toString(price)) + "_") + asset) + "_") + nftId) + "_") + artId) + "_") + creatorAddr) + "_") + id)), StringEntry(((("sale2nd_status_" + caller) + "_") + nftId), "OPEN"), StringEntry(("current_owner_on_dapp_" + nftId), caller)]
304+ }
301305 }
302306
303307
304308
305309 @Callable(i)
306310 func updateSalePrice (nftId,price,asset) = {
307- let $t01058210674 = provideBaseData(i, nftId)
308- let id = $t01058210674._1
309- let caller = $t01058210674._2
310- let date = $t01058210674._3
311- let isValidNFT = $t01058210674._4
312- let artId = $t01058210674._5
313- let creatorAddr = $t01058210674._6
314- let artSignID = $t01058210674._7
311+ let $t01063510727 = provideBaseData(i, nftId)
312+ let id = $t01063510727._1
313+ let caller = $t01063510727._2
314+ let date = $t01063510727._3
315+ let isValidNFT = $t01063510727._4
316+ let artId = $t01063510727._5
317+ let creatorAddr = $t01063510727._6
318+ let artSignID = $t01063510727._7
315319 if ((size(artSignID) == 0))
316320 then throw("Artwork not found on SIGN Art, cancel your sale.")
317321 else if (!(isValidNFT))
318322 then throw("Not a valid nft")
319323 else {
320324 let saleOwner = getStrByK(("current_owner_on_dapp_" + nftId))
321325 if ((saleOwner != caller))
322326 then throw("You don't own this NFT")
323327 else {
324328 let saleStatus = getStrByK(((("sale2nd_status_" + caller) + "_") + nftId))
325329 if ((saleStatus != "OPEN"))
326330 then throw("Sale not active")
327331 else if (!(acceptedAssetIds(asset)))
328332 then throw("Only SIGN, USDN or WAVES accepted")
329333 else if (!(validateMinSell(asset, price)))
330334 then throw("Wrong minimum sell price")
331335 else {
332336 let saleKey = getSaleKey(caller, nftId, artId, creatorAddr)
333337 let saleInfo = split(getStrByK((saleKey + "_OPEN")), "_")
334338 [StringEntry((saleKey + "_OPEN"), ((((((((((((saleInfo[0] + "_") + toString(price)) + "_") + asset) + "_") + saleInfo[3]) + "_") + saleInfo[4]) + "_") + saleInfo[5]) + "_") + saleInfo[6]))]
335339 }
336340 }
337341 }
338342 }
339343
340344
341345
342346 @Callable(i)
343347 func cancelSale (nftId) = {
344- let $t01181612056 = provideBaseData(i, nftId)
345- let id = $t01181612056._1
346- let caller = $t01181612056._2
347- let date = $t01181612056._3
348- let isValidNFT = $t01181612056._4
349- let artId = $t01181612056._5
350- let creatorAddr = $t01181612056._6
351- let artSignID = $t01181612056._7
348+ let $t01186912109 = provideBaseData(i, nftId)
349+ let id = $t01186912109._1
350+ let caller = $t01186912109._2
351+ let date = $t01186912109._3
352+ let isValidNFT = $t01186912109._4
353+ let artId = $t01186912109._5
354+ let creatorAddr = $t01186912109._6
355+ let artSignID = $t01186912109._7
352356 let saleOwner = getStrByK(("current_owner_on_dapp_" + nftId))
353357 if ((saleOwner != caller))
354358 then throw("You don't own this NFT")
355359 else {
356360 let saleStatus = getStrByK(((("sale2nd_status_" + caller) + "_") + nftId))
357361 if ((saleStatus != "OPEN"))
358362 then throw("Sale not active")
359363 else {
360364 let saleKey = getSaleKey(caller, nftId, artId, creatorAddr)
361365 let saleInfo = getStrByK((saleKey + "_OPEN"))
362366 [DeleteEntry((saleKey + "_OPEN")), DeleteEntry(((("sale2nd_status_" + caller) + "_") + nftId)), DeleteEntry(("current_owner_on_dapp_" + nftId)), StringEntry((((saleKey + "_") + id) + "_CANCELLED"), ((((saleInfo + "_CANCELLED_") + toString(date)) + "_") + id)), ScriptTransfer(Address(fromBase58String(caller)), 1, fromBase58String(nftId))]
363367 }
364368 }
365369 }
366370
367371
368372
369373 @Callable(i)
370374 func buyNFT (nftId) = {
371- let $t01288712979 = provideBaseData(i, nftId)
372- let id = $t01288712979._1
373- let caller = $t01288712979._2
374- let date = $t01288712979._3
375- let isValidNFT = $t01288712979._4
376- let artId = $t01288712979._5
377- let creatorAddr = $t01288712979._6
378- let artSignID = $t01288712979._7
375+ let $t01294013032 = provideBaseData(i, nftId)
376+ let id = $t01294013032._1
377+ let caller = $t01294013032._2
378+ let date = $t01294013032._3
379+ let isValidNFT = $t01294013032._4
380+ let artId = $t01294013032._5
381+ let creatorAddr = $t01294013032._6
382+ let artSignID = $t01294013032._7
379383 if ((size(artSignID) == 0))
380384 then throw("Artwork not found on SIGN Art, cancel your sale.")
381385 else if (!(isValidNFT))
382386 then throw("Not a valid nft")
383387 else {
384388 let saleOwner = getSaleOwnerAndStatus(nftId)
385389 let saleKey = getSaleKey(saleOwner, nftId, artId, creatorAddr)
386390 let saleInfo = getStrByK((saleKey + "_OPEN"))
387391 if ((size(saleInfo) == 0))
388392 then throw("Sale Not found!")
389393 else {
390394 let saleInfoArray = split(saleInfo, "_")
391395 if ((parseInt(saleInfoArray[1]) == 0))
392396 then throw("Offer only")
393397 else {
394- let $t01347613512 = isPayment(i)
395- let payment = $t01347613512._1
396- let amount = $t01347613512._2
398+ let $t01352913565 = isPayment(i)
399+ let payment = $t01352913565._1
400+ let amount = $t01352913565._2
397401 let paymentAssetStr = if (isDefined(payment.assetId))
398402 then toBase58String(value(payment.assetId))
399403 else ""
400404 if (if ((saleInfoArray[1] != toString(amount)))
401405 then true
402406 else (saleInfoArray[2] != paymentAssetStr))
403407 then throw("Payment infos don't match.")
404408 else {
405409 let amountForSign = fraction(amount, signCut, 100)
406410 let amountForCreator = fraction(amount, creatorCut, 100)
407411 let amountForOwner = (amount - (amountForSign + amountForCreator))
408- let $t01401514143 = setTransfers(amount, payment.assetId, nftId, creatorAddr, saleOwner, caller)
409- let signFee = $t01401514143._1
410- let creatorFee = $t01401514143._2
411- let ownerFee = $t01401514143._3
412- let collectorNFT = $t01401514143._4
412+ let $t01406814196 = setTransfers(amount, payment.assetId, nftId, creatorAddr, saleOwner, caller)
413+ let signFee = $t01406814196._1
414+ let creatorFee = $t01406814196._2
415+ let ownerFee = $t01406814196._3
416+ let collectorNFT = $t01406814196._4
413417 [DeleteEntry((saleKey + "_OPEN")), DeleteEntry(((("sale2nd_status_" + saleOwner) + "_") + nftId)), DeleteEntry(("current_owner_on_dapp_" + nftId)), StringEntry((((saleKey + "_") + id) + "_CLOSED"), ((((((saleInfo + "_CLOSED_") + toString(date)) + "_") + id) + "_") + caller)), updateNumSales(), signFee, creatorFee, ownerFee, collectorNFT]
414418 }
415419 }
416420 }
417421 }
418422 }
419423
420424
421425
422426 @Callable(i)
423427 func setOffer (nftId) = {
424- let $t01455114647 = provideBaseData(i, nftId)
425- let id = $t01455114647._1
426- let offerOwner = $t01455114647._2
427- let date = $t01455114647._3
428- let isValidNFT = $t01455114647._4
429- let artId = $t01455114647._5
430- let creatorAddr = $t01455114647._6
431- let artSignID = $t01455114647._7
428+ let $t01460414700 = provideBaseData(i, nftId)
429+ let id = $t01460414700._1
430+ let offerOwner = $t01460414700._2
431+ let date = $t01460414700._3
432+ let isValidNFT = $t01460414700._4
433+ let artId = $t01460414700._5
434+ let creatorAddr = $t01460414700._6
435+ let artSignID = $t01460414700._7
432436 if (!(isValidNFT))
433437 then throw("Not a valid nft")
434438 else {
435- let $t01470814744 = isPayment(i)
436- let payment = $t01470814744._1
437- let amount = $t01470814744._2
439+ let $t01476114797 = isPayment(i)
440+ let payment = $t01476114797._1
441+ let amount = $t01476114797._2
438442 let assetId = if (!(isDefined(payment.assetId)))
439443 then "WAVES"
440444 else toBase58String(value(payment.assetId))
441445 if (!(acceptedAssetIds(assetId)))
442446 then throw("asset not accepted")
443447 else if ((amount == 0))
444448 then throw("Offer of 0 not allowed")
445449 else if (!(validateMinSell(assetId, amount)))
446450 then throw("Wrong minimum sell price")
447451 else {
448452 let saleOwner = getSaleOwnerAndStatus(nftId)
449453 [StringEntry((getBidKey(offerOwner, nftId, saleOwner, id) + "_OPEN"), ((((((((((((((toString(date) + "_") + toString(amount)) + "_") + assetId) + "_") + nftId) + "_") + artId) + "_") + creatorAddr) + "_") + offerOwner) + "_") + id))]
450454 }
451455 }
452456 }
453457
454458
455459
456460 @Callable(i)
457461 func acceptOffer (nftId,offerId,offerOwner) = {
458- let $t01554615638 = provideBaseData(i, nftId)
459- let id = $t01554615638._1
460- let caller = $t01554615638._2
461- let date = $t01554615638._3
462- let isValidNFT = $t01554615638._4
463- let artId = $t01554615638._5
464- let creatorAddr = $t01554615638._6
465- let artSignID = $t01554615638._7
462+ let $t01559915691 = provideBaseData(i, nftId)
463+ let id = $t01559915691._1
464+ let caller = $t01559915691._2
465+ let date = $t01559915691._3
466+ let isValidNFT = $t01559915691._4
467+ let artId = $t01559915691._5
468+ let creatorAddr = $t01559915691._6
469+ let artSignID = $t01559915691._7
466470 if (!(isValidNFT))
467471 then throw("Not a valid nft")
468472 else {
469473 let saleOwner = getSaleOwnerAndStatus(nftId)
470474 if ((caller != saleOwner))
471475 then throw("Only sale owner can accept offer")
472476 else {
473477 let bidKey = getBidKey(offerOwner, nftId, saleOwner, offerId)
474- let $t01589215947 = getBidData(bidKey)
475- let bidDataArr = $t01589215947._1
476- let assetId = $t01589215947._2
477- let bidData = $t01589215947._3
478+ let $t01594516000 = getBidData(bidKey)
479+ let bidDataArr = $t01594516000._1
480+ let assetId = $t01594516000._2
481+ let bidData = $t01594516000._3
478482 let saleKey = getSaleKey(saleOwner, nftId, artId, creatorAddr)
479483 let saleInfo = getStrByK((saleKey + "_OPEN"))
480484 if ((size(saleInfo) == 0))
481485 then throw("Sale Not found!")
482486 else {
483487 let amount = value(parseInt(bidDataArr[1]))
484- let $t01618316310 = setTransfers(amount, assetId, nftId, creatorAddr, saleOwner, bidDataArr[6])
485- let signFee = $t01618316310._1
486- let creatorFee = $t01618316310._2
487- let ownerFee = $t01618316310._3
488- let collectorNFT = $t01618316310._4
488+ let $t01623616363 = setTransfers(amount, assetId, nftId, creatorAddr, saleOwner, bidDataArr[6])
489+ let signFee = $t01623616363._1
490+ let creatorFee = $t01623616363._2
491+ let ownerFee = $t01623616363._3
492+ let collectorNFT = $t01623616363._4
489493 let assetIdStr = if (isDefined(assetId))
490494 then toBase58String(value(assetId))
491495 else "WAVES"
492496 [DeleteEntry((saleKey + "_OPEN")), DeleteEntry((bidKey + "_OPEN")), DeleteEntry(((("sale2nd_status_" + saleOwner) + "_") + nftId)), DeleteEntry(("current_owner_on_dapp_" + nftId)), StringEntry((bidKey + "_CLOSED"), ((((bidData + "_CLOSED_") + toString(date)) + "_") + id)), StringEntry((((saleKey + "_") + id) + "_CLOSED"), ((((((((((saleInfo + "_CLOSED-OFFER_") + toString(date)) + "_") + id) + "_") + offerOwner) + "_") + toString(amount)) + "_") + assetIdStr)), updateNumSales(), signFee, creatorFee, ownerFee, collectorNFT]
493497 }
494498 }
495499 }
496500 }
497501
498502
499503
500504 @Callable(i)
501505 func cancelOffer (nftId,offerId,offerOwner,saleOwner) = {
502- let $t01710717229 = idCallerDate(i)
503- let id = $t01710717229._1
504- let caller = $t01710717229._2
505- let date = $t01710717229._3
506+ let $t01716017232 = idCallerDate(i)
507+ let id = $t01716017232._1
508+ let caller = $t01716017232._2
509+ let date = $t01716017232._3
506510 if (if ((caller != offerOwner))
507511 then (caller != saleOwner)
508512 else false)
509513 then throw("You cannot cancel this offer.")
510514 else {
511515 let bidKey = getBidKey(offerOwner, nftId, saleOwner, offerId)
512- let $t01740117456 = getBidData(bidKey)
513- let bidDataArr = $t01740117456._1
514- let assetId = $t01740117456._2
515- let bidData = $t01740117456._3
516+ let $t01740417459 = getBidData(bidKey)
517+ let bidDataArr = $t01740417459._1
518+ let assetId = $t01740417459._2
519+ let bidData = $t01740417459._3
516520 [DeleteEntry((bidKey + "_OPEN")), StringEntry((bidKey + "_CANCELLED"), ((((bidData + "_CANCELLED_") + toString(date)) + "_") + id)), ScriptTransfer(Address(fromBase58String(caller)), parseIntValue(bidDataArr[1]), assetId)]
517521 }
518522 }
519523
520524

github/deemru/w8io/169f3d6 
75.58 ms