tx · ACHidcTDWyQ3mw5egf62JhPoQDuTsCDU5YUq1iy56xpF

3Mzmcvdo6jaf6R2zVeSCECXtHUxedpKeVhz:  -0.01000000 Waves

2021.06.14 12:32 [1569827] smart account 3Mzmcvdo6jaf6R2zVeSCECXtHUxedpKeVhz > SELF 0.00000000 Waves

{ "type": 13, "id": "ACHidcTDWyQ3mw5egf62JhPoQDuTsCDU5YUq1iy56xpF", "fee": 1000000, "feeAssetId": null, "timestamp": 1623663151967, "version": 2, "chainId": 84, "sender": "3Mzmcvdo6jaf6R2zVeSCECXtHUxedpKeVhz", "senderPublicKey": "CNGbBqp46ZXHrijKiA6eN2GVVQvL8rqUzT8Xz5meYrPq", "proofs": [ "3rpooh2RLZkuQmkFEbzthrnfhCpx16n3Q8DmGqWHDRVmYGTJpxjQfEejXLnAzRzMxevgF9NtcmYTe1RT8QYFZPNp" ], "script": "base64:AAIEAAAAAAAAAEAIAhIECgIBCBIFCgMIAQgSAwoBCBIDCgEIEgMKAQgSBQoDCAgIEgUKAwgICBIECgIICBIFCgMICAgSBQoDCAgIAAAAKwAAAAAIdW5pdFRlc3QGAAAAABF1bml0VGVzdFNlY29uZGFyeQYAAAAADGFydHdvcmtzRGFwcAMFAAAAEXVuaXRUZXN0U2Vjb25kYXJ5CQEAAAAFdmFsdWUAAAABCQAEJgAAAAECAAAAIzNNcXN2REZIVnlQMmdWc0tzYVBXVlZETHo0ak1rblZzRDhpCQEAAAAFdmFsdWUAAAABCQAEJgAAAAECAAAAIzNOQnluZmJYQzJLYXN0VXhodWtjTVVhRTU4SzljQmRCOVVZAAAAAAh1c2VyRGFwcAMFAAAACHVuaXRUZXN0CQEAAAAFdmFsdWUAAAABCQAEJgAAAAECAAAAIzNNdDRSR01FeWpTV1lBb2NUUHFkNTV3ZEhRUUIzUFUyVUNtCQEAAAAFdmFsdWUAAAABCQAEJgAAAAECAAAAIzNOOHhYYVlqRTI3QWE3OWQ1aEhyaEh1OUhhRm9UQm1oREVqAAAAAAlvcmFjbGVGZWUJAQAAAAV2YWx1ZQAAAAEJAAQmAAAAAQIAAAAjM04yczVSdGFIUEJlbkNzeDJFQ2NvRlJiWUh4M25vWmhYVzEAAAAACHNpZ25EYXBwCQEAAAAFdmFsdWUAAAABCQAEJgAAAAECAAAAIzNOQzI4aFNpdnJtc1RVWGFZRDF4NkwzNjJKNFpwVW5vVGRCAAAAAAtmZWVSZWNlaXZlcgIAAAAjM04xRTZ0WGRkUm9WYVJmUTlkUTN2ZzVMYVcyZnNkOEhLdWIAAAAADXdoaXRlbGlzdERhcHAJAQAAAAV2YWx1ZQAAAAEJAAQmAAAAAQIAAAAjM042QmFWMWRDQjR6ZzQzZ29OTkhhQ3R2UjEzQmN5SjVHc3EAAAAAC3NpZ25Bc3NldElkAQAAACDopWq8yndC8nBhMjVKT0WDubke5ZlnF8Nx6tkLoQSt6wAAAAALdXNkbkFzc2V0SWQBAAAAIA/yHBKs5MQ8muxGGqslqLDsugcrRsxtiHLwteKSSQG0AAAAAAx3YXZlc0Fzc2V0SWQBAAAAAAAAAAAFY2hyaXMCAAAAIzNNc0c2alBOQ3JWSlV0WUI3WEpCeFM3dXRXc1hBZjRuOVZwAAAAAAdzaWduQ3V0AAAAAAAAAAADAAAAAApjcmVhdG9yQ3V0AAAAAAAAAAAKAAAAAAtkYXBwUnVubmluZwkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABBsAAAACBQAAAAh1c2VyRGFwcAIAAAAUY29uZl9kYXBwX2lzX3J1bm5pbmcGAAAAAA5tYWludGVuYW5jZU1TRwkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABB0AAAACBQAAAAh1c2VyRGFwcAIAAAAUY29uZl9tYWludGVuYW5jZV9tc2cCAAAAAAAAAAANdXNlclN1c3BlbmRlZAIAAAAJU1VTUEVOREVEAAAAAAt1c2VyUmVtb3ZlZAIAAAAHUkVNT1ZFRAAAAAAKYXJ0SWxsZWdhbAIAAAAHSUxMRUdBTAAAAAAMYXJ0U3VzcGVuZGVkAgAAAAlTVVNQRU5ERUQBAAAADWdldFVzZXJTdHJCeUsAAAABAAAAA2tleQkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABB0AAAACBQAAAAh1c2VyRGFwcAUAAAADa2V5AgAAAAVFcnJvcgEAAAAMZ2V0QXJ0U3RyQnlLAAAAAQAAAANrZXkJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQdAAAAAgUAAAAMYXJ0d29ya3NEYXBwBQAAAANrZXkCAAAAAAEAAAAJZ2V0U3RyQnlLAAAAAQAAAANrZXkJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQdAAAAAgUAAAAEdGhpcwUAAAADa2V5AgAAAAABAAAACWdldEludEJ5SwAAAAEAAAADa2V5CQEAAAALdmFsdWVPckVsc2UAAAACCQAEGgAAAAIFAAAABHRoaXMFAAAAA2tleQAAAAAAAAAAAAEAAAANa2V5VXNlclN0YXR1cwAAAAEAAAAEYWRkcgkAASwAAAACAgAAAAx1c2VyX3N0YXR1c18FAAAABGFkZHIBAAAACWtleVNpZ25JRAAAAAIAAAAKYXJ0aXN0QWRkcgAAAAVhcnRJZAkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAALYXJ0X3NpZ25pZF8FAAAABWFydElkAgAAAAFfBQAAAAphcnRpc3RBZGRyAQAAAAdrZXlGbGFnAAAAAgAAAAphcnRpc3RBZGRyAAAABWFydElkCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAlhcnRfZmxhZ18FAAAABWFydElkAgAAAAFfBQAAAAphcnRpc3RBZGRyAQAAAAprZXlORlREYXRhAAAAAQAAAAJpZAkAASwAAAACAgAAAARuZnRfBQAAAAJpZAEAAAATZ2V0SW50QnlLRnJvbU9yYWNsZQAAAAEAAAADa2V5CQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQaAAAAAgUAAAAJb3JhY2xlRmVlBQAAAANrZXkCAAAAH0ludGVnZXIgdW5kZWZpbmUgb3IgMCBpbiBvcmFjbGUAAAAAGWN1cnJlbnRDZXJ0aWZpY2F0aW9uUHJpY2UJAQAAABNnZXRJbnRCeUtGcm9tT3JhY2xlAAAAAQkAASwAAAACAgAAABJjZXJ0aWZpY2F0aW9uX2ZlZV8JAAJYAAAAAQUAAAALc2lnbkFzc2V0SWQBAAAADGlkQ2FsbGVyRGF0ZQAAAAEAAAABaQMJAQAAAAEhAAAAAQUAAAALZGFwcFJ1bm5pbmcJAAACAAAAAQUAAAAObWFpbnRlbmFuY2VNU0cJAAUVAAAAAwkAAlgAAAABCAUAAAABaQAAAA10cmFuc2FjdGlvbklkCQACWAAAAAEICAUAAAABaQAAAAZjYWxsZXIAAAAFYnl0ZXMIBQAAAAlsYXN0QmxvY2sAAAAJdGltZXN0YW1wAQAAAAlpc1BheW1lbnQAAAABAAAAAWkDCQAAAAAAAAIJAAGQAAAAAQgFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAAJAAACAAAAAQIAAAATTm8gcGF5bWVudCBhdHRhY2hlZAQAAAAHcGF5bWVudAkBAAAABXZhbHVlAAAAAQkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAQAAAAGYW1vdW50CQEAAAAFdmFsdWUAAAABCAUAAAAHcGF5bWVudAAAAAZhbW91bnQJAAUUAAAAAgUAAAAHcGF5bWVudAUAAAAGYW1vdW50AQAAAAxpc1NpZ25BcnRORlQAAAABAAAAAmlkBAAAAAxhc3NldERldGFpbHMJAQAAAAV2YWx1ZQAAAAEJAAPsAAAAAQUAAAACaWQDAwMJAQAAAAIhPQAAAAIIBQAAAAxhc3NldERldGFpbHMAAAAIcXVhbnRpdHkAAAAAAAAAAAEGCQEAAAACIT0AAAACCAUAAAAMYXNzZXREZXRhaWxzAAAACGRlY2ltYWxzAAAAAAAAAAAABgkBAAAAAiE9AAAAAggFAAAADGFzc2V0RGV0YWlscwAAAApyZWlzc3VhYmxlBwcGAQAAABBhY2NlcHRlZEFzc2V0SWRzAAAAAQAAAAdhc3NldElkAwMDAwkBAAAAAiE9AAAAAgUAAAAHYXNzZXRJZAkAAlgAAAABBQAAAAtzaWduQXNzZXRJZAkBAAAAAiE9AAAAAgUAAAAHYXNzZXRJZAkAAlgAAAABBQAAAAx3YXZlc0Fzc2V0SWQHCQEAAAACIT0AAAACBQAAAAdhc3NldElkAgAAAAVXQVZFUwcJAQAAAAIhPQAAAAIFAAAAB2Fzc2V0SWQJAAJYAAAAAQUAAAALdXNkbkFzc2V0SWQHBwYBAAAADWdldEJpZEFzc2V0SWQAAAABAAAAB2Fzc2V0SWQDCQAAAAAAAAIFAAAAB2Fzc2V0SWQCAAAABVdBVkVTBQAAAAR1bml0CQACWQAAAAEFAAAAB2Fzc2V0SWQBAAAAFWdldFNhbGVPd25lckFuZFN0YXR1cwAAAAEAAAAFbmZ0aWQEAAAACXNhbGVPd25lcgkBAAAACWdldFN0ckJ5SwAAAAEJAAEsAAAAAgIAAAAWY3VycmVudF9vd25lcl9vbl9kYXBwXwUAAAAFbmZ0aWQDCQAAAAAAAAIJAAExAAAAAQUAAAAJc2FsZU93bmVyAAAAAAAAAAAACQAAAgAAAAECAAAADU5GVCBub3QgZm91bmQEAAAACnNhbGVTdGF0dXMJAQAAAAlnZXRTdHJCeUsAAAABCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAA9zYWxlMm5kX3N0YXR1c18FAAAACXNhbGVPd25lcgIAAAABXwUAAAAFbmZ0aWQDCQEAAAACIT0AAAACBQAAAApzYWxlU3RhdHVzAgAAAARPUEVOCQAAAgAAAAECAAAAEE5GVCBub3QgZm9yIHNhbGUFAAAACXNhbGVPd25lcgEAAAAKZ2V0QmlkRGF0YQAAAAEAAAADa2V5BAAAAAdiaWREYXRhCQEAAAAJZ2V0U3RyQnlLAAAAAQkAASwAAAACBQAAAANrZXkCAAAABV9PUEVOAwkAAAAAAAACBQAAAAdiaWREYXRhAgAAAAAJAAACAAAAAQIAAAAPT2ZmZXIgbm90IGZvdW5kBAAAAApiaWREYXRhQXJyCQAEtQAAAAIFAAAAB2JpZERhdGECAAAAAV8EAAAAB2Fzc2V0SWQJAQAAAA1nZXRCaWRBc3NldElkAAAAAQkAAZEAAAACBQAAAApiaWREYXRhQXJyAAAAAAAAAAACCQAFFQAAAAMFAAAACmJpZERhdGFBcnIFAAAAB2Fzc2V0SWQFAAAAB2JpZERhdGEBAAAADmNoZWNrQXJ0U3RhdHVzAAAAAgAAAARhZGRyAAAAAmlkBAAAAAlhcnRTdGF0dXMJAQAAAAxnZXRBcnRTdHJCeUsAAAABCQEAAAAHa2V5RmxhZwAAAAIFAAAABGFkZHIFAAAAAmlkAwMJAAAAAAAAAgUAAAAJYXJ0U3RhdHVzBQAAAAphcnRJbGxlZ2FsBgkAAAAAAAACBQAAAAlhcnRTdGF0dXMFAAAADGFydFN1c3BlbmRlZAkAAAIAAAABCQABLAAAAAICAAAAHE9yaWdpbmFsIEFydHdvcmsgZmxhZ2dlZCBhcyAFAAAACWFydFN0YXR1cwYBAAAAEWNoZWNrQXJ0aXN0U3RhdHVzAAAAAQAAAARhZGRyBAAAAAxhcnRpc3RTdGF0dXMJAQAAAA1nZXRVc2VyU3RyQnlLAAAAAQkBAAAADWtleVVzZXJTdGF0dXMAAAABBQAAAARhZGRyAwkBAAAAD2NvbnRhaW5zRWxlbWVudAAAAAIJAARMAAAAAgUAAAANdXNlclN1c3BlbmRlZAkABEwAAAACBQAAAAt1c2VyUmVtb3ZlZAUAAAADbmlsBQAAAAxhcnRpc3RTdGF0dXMJAAACAAAAAQkAASwAAAACAgAAABBPcmlnaW5hbCBBcnRpc3QgBQAAAAxhcnRpc3RTdGF0dXMGAQAAAAxjaGVja05GVEluZm8AAAABAAAAB2Fzc2V0SWQEAAAAB25mdERhdGEJAAS1AAAAAgkBAAAADGdldEFydFN0ckJ5SwAAAAEJAQAAAAprZXlORlREYXRhAAAAAQUAAAAHYXNzZXRJZAIAAAABXwQAAAAJYXJ0U2lnbklECQEAAAAMZ2V0QXJ0U3RyQnlLAAAAAQkBAAAACWtleVNpZ25JRAAAAAIJAAGRAAAAAgUAAAAHbmZ0RGF0YQAAAAAAAAAABgkAAZEAAAACBQAAAAduZnREYXRhAAAAAAAAAAAFAwMJAQAAAAEhAAAAAQkBAAAADmNoZWNrQXJ0U3RhdHVzAAAAAgkAAZEAAAACBQAAAAduZnREYXRhAAAAAAAAAAAGCQABkQAAAAIFAAAAB25mdERhdGEAAAAAAAAAAAUJAQAAAAEhAAAAAQkBAAAAEWNoZWNrQXJ0aXN0U3RhdHVzAAAAAQkAAZEAAAACBQAAAAduZnREYXRhAAAAAAAAAAAGBwkABRYAAAAEBwkAAZEAAAACBQAAAAduZnREYXRhAAAAAAAAAAAFCQABkQAAAAIFAAAAB25mdERhdGEAAAAAAAAAAAYFAAAACWFydFNpZ25JRAkABRYAAAAEBgkAAZEAAAACBQAAAAduZnREYXRhAAAAAAAAAAAFCQABkQAAAAIFAAAAB25mdERhdGEAAAAAAAAAAAYFAAAACWFydFNpZ25JRAEAAAANY2hlY2tBUlRFeGlzdAAAAAIAAAAFYXJ0SWQAAAALY3JlYXRvckFkZHIEAAAACWFydFNpZ25JRAkBAAAADGdldEFydFN0ckJ5SwAAAAEJAQAAAAlrZXlTaWduSUQAAAACBQAAAAtjcmVhdG9yQWRkcgUAAAAFYXJ0SWQDCQAAAAAAAAIJAAExAAAAAQUAAAAJYXJ0U2lnbklEAAAAAAAAAAAACQAAAgAAAAECAAAAHUFydHdvcmsgbm90IGZvdW5kIG9uIFNJR04gQXJ0AwMJAQAAAAEhAAAAAQkBAAAADmNoZWNrQXJ0U3RhdHVzAAAAAgUAAAALY3JlYXRvckFkZHIFAAAABWFydElkCQEAAAABIQAAAAEJAQAAABFjaGVja0FydGlzdFN0YXR1cwAAAAEFAAAAC2NyZWF0b3JBZGRyBwcGAQAAAAxzZXRUcmFuc2ZlcnMAAAAGAAAABmFtb3VudAAAAAdhc3NldElkAAAABW5mdGlkAAAAC2NyZWF0b3JBZGRyAAAACXNhbGVPd25lcgAAAAZjYWxsZXIEAAAADWFtb3VudEZvclNpZ24JAABrAAAAAwUAAAAGYW1vdW50BQAAAAdzaWduQ3V0AAAAAAAAAABkBAAAABBhbW91bnRGb3JDcmVhdG9yCQAAawAAAAMFAAAABmFtb3VudAUAAAAKY3JlYXRvckN1dAAAAAAAAAAAZAQAAAAOYW1vdW50Rm9yT3duZXIJAABlAAAAAgUAAAAGYW1vdW50CQAAZAAAAAIFAAAADWFtb3VudEZvclNpZ24FAAAAEGFtb3VudEZvckNyZWF0b3IEAAAAB3NpZ25GZWUJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMJAQAAAAdBZGRyZXNzAAAAAQkAAlkAAAABBQAAAAtmZWVSZWNlaXZlcgUAAAANYW1vdW50Rm9yU2lnbgUAAAAHYXNzZXRJZAQAAAAKY3JlYXRvckZlZQkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwkBAAAAB0FkZHJlc3MAAAABCQACWQAAAAEFAAAAC2NyZWF0b3JBZGRyBQAAABBhbW91bnRGb3JDcmVhdG9yBQAAAAdhc3NldElkBAAAAAhvd25lckZlZQkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwkBAAAAB0FkZHJlc3MAAAABCQACWQAAAAEFAAAACXNhbGVPd25lcgUAAAAOYW1vdW50Rm9yT3duZXIFAAAAB2Fzc2V0SWQEAAAADGNvbGxlY3Rvck5GVAkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwkBAAAAB0FkZHJlc3MAAAABCQACWQAAAAEFAAAABmNhbGxlcgAAAAAAAAAAAQkAAlkAAAABBQAAAAVuZnRpZAkABRYAAAAEBQAAAAdzaWduRmVlBQAAAApjcmVhdG9yRmVlBQAAAAhvd25lckZlZQUAAAAMY29sbGVjdG9yTkZUAQAAAA92YWxpZGF0ZU1pblNlbGwAAAACAAAAB2Fzc2V0SWQAAAAFcHJpY2UEAAAADG1pblNlbGxXYXZlcwMFAAAACHVuaXRUZXN0AAAAAAAAAAAKCQEAAAATZ2V0SW50QnlLRnJvbU9yYWNsZQAAAAECAAAADndhdmVzX21pbl9zZWxsBAAAAAttaW5TZWxsVXNkbgAAAAAAAA9CQAQAAAALbWluU2VsbFNpZ24DBQAAAAh1bml0VGVzdAAAAAAAAAAAAQkAAGgAAAACBQAAABljdXJyZW50Q2VydGlmaWNhdGlvblByaWNlAAAAAAAAAAACAwMDAwMJAAAAAAAAAgUAAAAHYXNzZXRJZAkAAlgAAAABBQAAAAt1c2RuQXNzZXRJZAkAAGYAAAACBQAAAAttaW5TZWxsVXNkbgUAAAAFcHJpY2UHCQEAAAAC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", "height": 1569827, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: none Next: none Full:
OldNewDifferences
1-# no script
1+{-# STDLIB_VERSION 4 #-}
2+{-# SCRIPT_TYPE ACCOUNT #-}
3+{-# CONTENT_TYPE DAPP #-}
4+let unitTest = true
5+
6+let unitTestSecondary = true
7+
8+let artworksDapp = if (unitTestSecondary)
9+ then value(addressFromString("3MqsvDFHVyP2gVsKsaPWVVDLz4jMknVsD8i"))
10+ else value(addressFromString("3NBynfbXC2KastUxhukcMUaE58K9cBdB9UY"))
11+
12+let userDapp = if (unitTest)
13+ then value(addressFromString("3Mt4RGMEyjSWYAocTPqd55wdHQQB3PU2UCm"))
14+ else value(addressFromString("3N8xXaYjE27Aa79d5hHrhHu9HaFoTBmhDEj"))
15+
16+let oracleFee = value(addressFromString("3N2s5RtaHPBenCsx2ECcoFRbYHx3noZhXW1"))
17+
18+let signDapp = value(addressFromString("3NC28hSivrmsTUXaYD1x6L362J4ZpUnoTdB"))
19+
20+let feeReceiver = "3N1E6tXddRoVaRfQ9dQ3vg5LaW2fsd8HKub"
21+
22+let whitelistDapp = value(addressFromString("3N6BaV1dCB4zg43goNNHaCtvR13BcyJ5Gsq"))
23+
24+let signAssetId = base58'Gf9t8FA4H3ssoZPCwrg3KwUFCci8zuUFP9ssRsUY3s6a'
25+
26+let usdnAssetId = base58'25FEqEjRkqK6yCkiT7Lz6SAYz7gUFCtxfCChnrVFD5AT'
27+
28+let wavesAssetId = base58''
29+
30+let chris = "3MsG6jPNCrVJUtYB7XJBxS7utWsXAf4n9Vp"
31+
32+let signCut = 3
33+
34+let creatorCut = 10
35+
36+let dappRunning = valueOrElse(getBoolean(userDapp, "conf_dapp_is_running"), true)
37+
38+let maintenanceMSG = valueOrElse(getString(userDapp, "conf_maintenance_msg"), "")
39+
40+let userSuspended = "SUSPENDED"
41+
42+let userRemoved = "REMOVED"
43+
44+let artIllegal = "ILLEGAL"
45+
46+let artSuspended = "SUSPENDED"
47+
48+func getUserStrByK (key) = valueOrElse(getString(userDapp, key), "Error")
49+
50+
51+func getArtStrByK (key) = valueOrElse(getString(artworksDapp, key), "")
52+
53+
54+func getStrByK (key) = valueOrElse(getString(this, key), "")
55+
56+
57+func getIntByK (key) = valueOrElse(getInteger(this, key), 0)
58+
59+
60+func keyUserStatus (addr) = ("user_status_" + addr)
61+
62+
63+func keySignID (artistAddr,artId) = ((("art_signid_" + artId) + "_") + artistAddr)
64+
65+
66+func keyFlag (artistAddr,artId) = ((("art_flag_" + artId) + "_") + artistAddr)
67+
68+
69+func keyNFTData (id) = ("nft_" + id)
70+
71+
72+func getIntByKFromOracle (key) = valueOrErrorMessage(getInteger(oracleFee, key), "Integer undefine or 0 in oracle")
73+
74+
75+let currentCertificationPrice = getIntByKFromOracle(("certification_fee_" + toBase58String(signAssetId)))
76+
77+func idCallerDate (i) = if (!(dappRunning))
78+ then throw(maintenanceMSG)
79+ else $Tuple3(toBase58String(i.transactionId), toBase58String(i.caller.bytes), lastBlock.timestamp)
80+
81+
82+func isPayment (i) = if ((size(i.payments) == 0))
83+ then throw("No payment attached")
84+ else {
85+ let payment = value(i.payments[0])
86+ let amount = value(payment.amount)
87+ $Tuple2(payment, amount)
88+ }
89+
90+
91+func isSignArtNFT (id) = {
92+ let assetDetails = value(assetInfo(id))
93+ if (if (if ((assetDetails.quantity != 1))
94+ then true
95+ else (assetDetails.decimals != 0))
96+ then true
97+ else (assetDetails.reissuable != false))
98+ then false
99+ else true
100+ }
101+
102+
103+func acceptedAssetIds (assetId) = if (if (if (if ((assetId != toBase58String(signAssetId)))
104+ then (assetId != toBase58String(wavesAssetId))
105+ else false)
106+ then (assetId != "WAVES")
107+ else false)
108+ then (assetId != toBase58String(usdnAssetId))
109+ else false)
110+ then false
111+ else true
112+
113+
114+func getBidAssetId (assetId) = if ((assetId == "WAVES"))
115+ then unit
116+ else fromBase58String(assetId)
117+
118+
119+func getSaleOwnerAndStatus (nftid) = {
120+ let saleOwner = getStrByK(("current_owner_on_dapp_" + nftid))
121+ if ((size(saleOwner) == 0))
122+ then throw("NFT not found")
123+ else {
124+ let saleStatus = getStrByK(((("sale2nd_status_" + saleOwner) + "_") + nftid))
125+ if ((saleStatus != "OPEN"))
126+ then throw("NFT not for sale")
127+ else saleOwner
128+ }
129+ }
130+
131+
132+func getBidData (key) = {
133+ let bidData = getStrByK((key + "_OPEN"))
134+ if ((bidData == ""))
135+ then throw("Offer not found")
136+ else {
137+ let bidDataArr = split(bidData, "_")
138+ let assetId = getBidAssetId(bidDataArr[2])
139+ $Tuple3(bidDataArr, assetId, bidData)
140+ }
141+ }
142+
143+
144+func checkArtStatus (addr,id) = {
145+ let artStatus = getArtStrByK(keyFlag(addr, id))
146+ if (if ((artStatus == artIllegal))
147+ then true
148+ else (artStatus == artSuspended))
149+ then throw(("Original Artwork flagged as " + artStatus))
150+ else true
151+ }
152+
153+
154+func checkArtistStatus (addr) = {
155+ let artistStatus = getUserStrByK(keyUserStatus(addr))
156+ if (containsElement([userSuspended, userRemoved], artistStatus))
157+ then throw(("Original Artist " + artistStatus))
158+ else true
159+ }
160+
161+
162+func checkNFTInfo (assetId) = {
163+ let nftData = split(getArtStrByK(keyNFTData(assetId)), "_")
164+ let artSignID = getArtStrByK(keySignID(nftData[6], nftData[5]))
165+ if (if (!(checkArtStatus(nftData[6], nftData[5])))
166+ then !(checkArtistStatus(nftData[6]))
167+ else false)
168+ then $Tuple4(false, nftData[5], nftData[6], artSignID)
169+ else $Tuple4(true, nftData[5], nftData[6], artSignID)
170+ }
171+
172+
173+func checkARTExist (artId,creatorAddr) = {
174+ let artSignID = getArtStrByK(keySignID(creatorAddr, artId))
175+ if ((size(artSignID) == 0))
176+ then throw("Artwork not found on SIGN Art")
177+ else if (if (!(checkArtStatus(creatorAddr, artId)))
178+ then !(checkArtistStatus(creatorAddr))
179+ else false)
180+ then false
181+ else true
182+ }
183+
184+
185+func setTransfers (amount,assetId,nftid,creatorAddr,saleOwner,caller) = {
186+ let amountForSign = fraction(amount, signCut, 100)
187+ let amountForCreator = fraction(amount, creatorCut, 100)
188+ let amountForOwner = (amount - (amountForSign + amountForCreator))
189+ let signFee = ScriptTransfer(Address(fromBase58String(feeReceiver)), amountForSign, assetId)
190+ let creatorFee = ScriptTransfer(Address(fromBase58String(creatorAddr)), amountForCreator, assetId)
191+ let ownerFee = ScriptTransfer(Address(fromBase58String(saleOwner)), amountForOwner, assetId)
192+ let collectorNFT = ScriptTransfer(Address(fromBase58String(caller)), 1, fromBase58String(nftid))
193+ $Tuple4(signFee, creatorFee, ownerFee, collectorNFT)
194+ }
195+
196+
197+func validateMinSell (assetId,price) = {
198+ let minSellWaves = if (unitTest)
199+ then 10
200+ else getIntByKFromOracle("waves_min_sell")
201+ let minSellUsdn = 1000000
202+ let minSellSign = if (unitTest)
203+ then 1
204+ else (currentCertificationPrice * 2)
205+ if (if (if (if (if ((assetId == toBase58String(usdnAssetId)))
206+ then (minSellUsdn > price)
207+ else false)
208+ then (price != 0)
209+ else false)
210+ then true
211+ else if (if ((assetId == toBase58String(signAssetId)))
212+ then (minSellSign > price)
213+ else false)
214+ then (price != 0)
215+ else false)
216+ then true
217+ else if (if (if ((assetId == toBase58String(wavesAssetId)))
218+ then true
219+ else (assetId == "WAVES"))
220+ then (minSellWaves > price)
221+ else false)
222+ then (price != 0)
223+ else false)
224+ then false
225+ else true
226+ }
227+
228+
229+@Callable(i)
230+func sellNFT (price,asset) = {
231+ let $t085498588 = idCallerDate(i)
232+ let id = $t085498588._1
233+ let caller = $t085498588._2
234+ let date = $t085498588._3
235+ let $t085968632 = isPayment(i)
236+ let payment = $t085968632._1
237+ let amount = $t085968632._2
238+ let nftId = if (if (isDefined(payment.assetId))
239+ then isSignArtNFT(value(payment.assetId))
240+ else false)
241+ then toBase58String(value(payment.assetId))
242+ else throw("Only SIGN Art NFT accepted.")
243+ let $t088148883 = checkNFTInfo(nftId)
244+ let isValidNFT = $t088148883._1
245+ let artId = $t088148883._2
246+ let creatorAddr = $t088148883._3
247+ let artSignID = $t088148883._4
248+ if ((size(artSignID) == 0))
249+ then throw("Artwork not found on SIGN Art")
250+ else if (!(isValidNFT))
251+ then throw("Something went wrong")
252+ else if (!(acceptedAssetIds(asset)))
253+ then throw("Only SIGN, USDN or WAVES accepted")
254+ else if ((price == 0))
255+ then throw("Wrong minimum sell price")
256+ else if (!(validateMinSell(asset, price)))
257+ then throw("Wrong minimum sell price")
258+ else [StringEntry((((((((("sale2nd_info_" + 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)]
259+ }
260+
261+
262+
263+@Callable(i)
264+func updateSalePrice (nftid,price,asset) = {
265+ let $t097979836 = idCallerDate(i)
266+ let id = $t097979836._1
267+ let caller = $t097979836._2
268+ let date = $t097979836._3
269+ let $t098449913 = checkNFTInfo(nftid)
270+ let isValidNFT = $t098449913._1
271+ let artId = $t098449913._2
272+ let creatorAddr = $t098449913._3
273+ let artSignID = $t098449913._4
274+ if ((size(artSignID) == 0))
275+ then throw("Artwork not found on SIGN Art, cancel your sale.")
276+ else if (!(isValidNFT))
277+ then throw("Something went wrong")
278+ else {
279+ let saleOwner = getStrByK(("current_owner_on_dapp_" + nftid))
280+ if ((saleOwner != caller))
281+ then throw("You don't own this NFT")
282+ else {
283+ let saleStatus = getStrByK(((("sale2nd_status_" + caller) + "_") + nftid))
284+ if ((saleStatus != "OPEN"))
285+ then throw("Sale not active")
286+ else if (!(acceptedAssetIds(asset)))
287+ then throw("Only SIGN, USDN or WAVES accepted")
288+ else if ((price == 0))
289+ then throw("Wrong minimum sell price")
290+ else if (!(validateMinSell(asset, price)))
291+ then throw("Wrong minimum sell price")
292+ else {
293+ let saleKey = ((((((("sale2nd_info_" + caller) + "_") + nftid) + "_") + artId) + "_") + creatorAddr)
294+ let saleInfo = split(getStrByK((saleKey + "_OPEN")), "_")
295+[StringEntry((saleKey + "_OPEN"), ((((((((((((saleInfo[0] + "_") + toString(price)) + "_") + asset) + "_") + saleInfo[3]) + "_") + saleInfo[4]) + "_") + saleInfo[5]) + "_") + saleInfo[6]))]
296+ }
297+ }
298+ }
299+ }
300+
301+
302+
303+@Callable(i)
304+func cancelSale (nftid) = {
305+ let $t01108911128 = idCallerDate(i)
306+ let id = $t01108911128._1
307+ let caller = $t01108911128._2
308+ let date = $t01108911128._3
309+ let $t01113611361 = checkNFTInfo(nftid)
310+ let isValidNFT = $t01113611361._1
311+ let artId = $t01113611361._2
312+ let creatorAddr = $t01113611361._3
313+ let artSignID = $t01113611361._4
314+ let saleOwner = getStrByK(("current_owner_on_dapp_" + nftid))
315+ if ((saleOwner != caller))
316+ then throw("You don't own this NFT")
317+ else {
318+ let saleStatus = getStrByK(((("sale2nd_status_" + caller) + "_") + nftid))
319+ if ((saleStatus != "OPEN"))
320+ then throw("Sale not active")
321+ else {
322+ let saleKey = ((((((("sale2nd_info_" + caller) + "_") + nftid) + "_") + artId) + "_") + creatorAddr)
323+ let saleInfo = getStrByK((saleKey + "_OPEN"))
324+[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))]
325+ }
326+ }
327+ }
328+
329+
330+
331+@Callable(i)
332+func buyNFT (nftid) = {
333+ let $t01219612235 = idCallerDate(i)
334+ let id = $t01219612235._1
335+ let caller = $t01219612235._2
336+ let date = $t01219612235._3
337+ let saleOwner = getSaleOwnerAndStatus(nftid)
338+ let $t01229112360 = checkNFTInfo(nftid)
339+ let isValidNFT = $t01229112360._1
340+ let artId = $t01229112360._2
341+ let creatorAddr = $t01229112360._3
342+ let artSignID = $t01229112360._4
343+ if ((size(artSignID) == 0))
344+ then throw("Artwork not found on SIGN Art, cancel your sale.")
345+ else if (!(isValidNFT))
346+ then throw("Something went wrong")
347+ else {
348+ let saleKey = ((((((("sale2nd_info_" + saleOwner) + "_") + nftid) + "_") + artId) + "_") + creatorAddr)
349+ let saleInfo = getStrByK((saleKey + "_OPEN"))
350+ if ((size(saleInfo) == 0))
351+ then throw("Sale Not found!")
352+ else {
353+ let saleInfoArray = split(saleInfo, "_")
354+ if ((parseInt(saleInfoArray[1]) == 0))
355+ then throw("Offer only")
356+ else {
357+ let $t01283812874 = isPayment(i)
358+ let payment = $t01283812874._1
359+ let amount = $t01283812874._2
360+ let paymentAssetStr = if (isDefined(payment.assetId))
361+ then toBase58String(value(payment.assetId))
362+ else ""
363+ if (if ((saleInfoArray[1] != toString(amount)))
364+ then true
365+ else (saleInfoArray[2] != paymentAssetStr))
366+ then throw("Payment infos don't match.")
367+ else {
368+ let amountForSign = fraction(amount, signCut, 100)
369+ let amountForCreator = fraction(amount, creatorCut, 100)
370+ let amountForOwner = (amount - (amountForSign + amountForCreator))
371+ let $t01338513513 = setTransfers(amount, payment.assetId, nftid, creatorAddr, saleOwner, caller)
372+ let signFee = $t01338513513._1
373+ let creatorFee = $t01338513513._2
374+ let ownerFee = $t01338513513._3
375+ let collectorNFT = $t01338513513._4
376+[DeleteEntry((saleKey + "_OPEN")), DeleteEntry(((("sale2nd_status_" + saleOwner) + "_") + nftid)), DeleteEntry(("current_owner_on_dapp_" + nftid)), StringEntry((((saleKey + "_") + id) + "_CLOSED"), ((((((makeString(saleInfoArray, "_") + "_CLOSED_") + toString(date)) + "_") + id) + "_") + caller)), signFee, creatorFee, ownerFee, collectorNFT]
377+ }
378+ }
379+ }
380+ }
381+ }
382+
383+
384+
385+@Callable(i)
386+func setOffer (nftid) = {
387+ let $t01393213974 = idCallerDate(i)
388+ let id = $t01393213974._1
389+ let offerOwner = $t01393213974._2
390+ let date = $t01393213974._3
391+ let $t01398214018 = isPayment(i)
392+ let payment = $t01398214018._1
393+ let amount = $t01398214018._2
394+ let assetId = if (!(isDefined(payment.assetId)))
395+ then "WAVES"
396+ else toBase58String(value(payment.assetId))
397+ if (!(acceptedAssetIds(assetId)))
398+ then throw("asset not accepted")
399+ else if ((amount == 0))
400+ then throw("Offer of 0 not allowed")
401+ else if (!(validateMinSell(assetId, amount)))
402+ then throw("Wrong minimum sell price")
403+ else {
404+ let $t01435814416 = checkNFTInfo(nftid)
405+ let isValidNFT = $t01435814416._1
406+ let artId = $t01435814416._2
407+ let creatorAddr = $t01435814416._3
408+ if (!(isValidNFT))
409+ then throw("Something went wrong")
410+ else {
411+ let saleOwner = getSaleOwnerAndStatus(nftid)
412+[StringEntry((((((((("offer2nd_" + offerOwner) + "_") + nftid) + "_") + saleOwner) + "_") + id) + "_OPEN"), ((((((((((((((toString(date) + "_") + toString(amount)) + "_") + assetId) + "_") + nftid) + "_") + artId) + "_") + creatorAddr) + "_") + offerOwner) + "_") + id))]
413+ }
414+ }
415+ }
416+
417+
418+
419+@Callable(i)
420+func acceptOffer (nftid,offerId,offerOwner) = {
421+ let $t01496515036 = idCallerDate(i)
422+ let id = $t01496515036._1
423+ let caller = $t01496515036._2
424+ let date = $t01496515036._3
425+ let saleOwner = getSaleOwnerAndStatus(nftid)
426+ if ((caller != saleOwner))
427+ then throw("You cannot do this action")
428+ else {
429+ let bidKey = ((((((("offer2nd_" + offerOwner) + "_") + nftid) + "_") + saleOwner) + "_") + offerId)
430+ let bidValue = getStrByK((bidKey + "_OPEN"))
431+ if ((bidValue == ""))
432+ then throw("Offer not found or not for sale")
433+ else {
434+ let $t01536615424 = checkNFTInfo(nftid)
435+ let isValidNFT = $t01536615424._1
436+ let artId = $t01536615424._2
437+ let creatorAddr = $t01536615424._3
438+ if (!(isValidNFT))
439+ then throw("Something went wrong")
440+ else {
441+ let saleKey = ((((((("sale2nd_info_" + saleOwner) + "_") + nftid) + "_") + artId) + "_") + creatorAddr)
442+ let saleValue = getStrByK((saleKey + "_OPEN"))
443+ if ((size(saleValue) == 0))
444+ then throw("Sale Not found!")
445+ else {
446+ let saleValArr = split(saleValue, "_")
447+ let $t01577915834 = getBidData(bidKey)
448+ let bidDataArr = $t01577915834._1
449+ let assetId = $t01577915834._2
450+ let bidData = $t01577915834._3
451+ let amount = value(parseInt(bidDataArr[1]))
452+ let $t01589116018 = setTransfers(amount, assetId, nftid, creatorAddr, saleOwner, bidDataArr[6])
453+ let signFee = $t01589116018._1
454+ let creatorFee = $t01589116018._2
455+ let ownerFee = $t01589116018._3
456+ let collectorNFT = $t01589116018._4
457+[DeleteEntry((saleKey + "_OPEN")), DeleteEntry((bidKey + "_OPEN")), DeleteEntry(((("sale2nd_status_" + saleOwner) + "_") + nftid)), DeleteEntry(("current_owner_on_dapp_" + nftid)), StringEntry((bidKey + "_CLOSED"), ((((bidValue + "_CLOSED_") + toString(date)) + "_") + id)), StringEntry((((saleKey + "_") + id) + "_CLOSED"), ((((((((((makeString(saleValArr, "_") + "_CLOSED-OFFER_") + toString(date)) + "_") + id) + "_") + offerOwner) + "_") + toString(amount)) + "_") + toBase58String(value(assetId)))), signFee, creatorFee, ownerFee, collectorNFT]
458+ }
459+ }
460+ }
461+ }
462+ }
463+
464+
465+
466+@Callable(i)
467+func cancelOffer (nftid,offerId,saleOwner) = {
468+ let $t01668516747 = idCallerDate(i)
469+ let id = $t01668516747._1
470+ let caller = $t01668516747._2
471+ let date = $t01668516747._3
472+ let bidKey = ((((((("offer2nd_" + caller) + "_") + nftid) + "_") + saleOwner) + "_") + offerId)
473+ let $t01682516880 = getBidData(bidKey)
474+ let bidDataArr = $t01682516880._1
475+ let assetId = $t01682516880._2
476+ let bidData = $t01682516880._3
477+[DeleteEntry((bidKey + "_OPEN")), StringEntry((bidKey + "_CANCELLED"), ((((bidData + "_CANCELLED_") + toString(date)) + "_") + id)), ScriptTransfer(Address(fromBase58String(caller)), parseIntValue(bidDataArr[1]), assetId)]
478+ }
479+
480+
481+
482+@Callable(i)
483+func makeRequest (artId,creatorAddr) = {
484+ let $t01721817262 = idCallerDate(i)
485+ let id = $t01721817262._1
486+ let requestOwner = $t01721817262._2
487+ let date = $t01721817262._3
488+ let $t01727017306 = isPayment(i)
489+ let payment = $t01727017306._1
490+ let amount = $t01727017306._2
491+ let assetId = if (!(isDefined(payment.assetId)))
492+ then "WAVES"
493+ else toBase58String(value(payment.assetId))
494+ if (!(acceptedAssetIds(assetId)))
495+ then throw("asset not accepted")
496+ else if (!(validateMinSell(assetId, amount)))
497+ then throw("Wrong minimum sell price")
498+ else {
499+ let isValidART = checkARTExist(artId, creatorAddr)
500+ if (!(isValidART))
501+ then throw("Something went wrong")
502+ else [StringEntry((((((((("request2nd_" + requestOwner) + "_") + creatorAddr) + "_") + artId) + "_") + id) + "_OPEN"), ((((((((((toString(date) + "_") + toString(amount)) + "_") + toBase58String(value(payment.assetId))) + "_") + artId) + "_") + requestOwner) + "_") + id))]
503+ }
504+ }
505+
506+
507+
508+@Callable(i)
509+func fillRequest (artId,requestOwner,offerId) = {
510+ let $t01813018172 = idCallerDate(i)
511+ let id = $t01813018172._1
512+ let saleOwner = $t01813018172._2
513+ let date = $t01813018172._3
514+ let $t01817818222 = isPayment(i)
515+ let payment = $t01817818222._1
516+ let amountAttached = $t01817818222._2
517+ let NFTid = if (if (isDefined(payment.assetId))
518+ then isSignArtNFT(value(payment.assetId))
519+ else false)
520+ then payment.assetId
521+ else throw("No NFT found")
522+ let NFTdata = split(getArtStrByK(("nft_" + toBase58String(value(NFTid)))), "_")
523+ if ((size(NFTdata) == 0))
524+ then throw("No NFT found")
525+ else {
526+ let requestData = split(getStrByK((((((((("request2nd_" + requestOwner) + "_") + NFTdata[6]) + "_") + artId) + "_") + offerId) + "_OPEN")), "_")
527+ if ((size(requestData) == 1))
528+ then throw("No request found")
529+ else if ((requestData[3] != NFTdata[5]))
530+ then throw("This NFT don't match the requested artwork")
531+ else {
532+ let amount = value(parseInt(requestData[1]))
533+ let $t01895519130 = setTransfers(amount, fromBase58String(requestData[2]), toBase58String(value(NFTid)), NFTdata[6], saleOwner, requestData[4])
534+ let signFee = $t01895519130._1
535+ let creatorFee = $t01895519130._2
536+ let ownerFee = $t01895519130._3
537+ let collectorNFT = $t01895519130._4
538+[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, collectorNFT]
539+ }
540+ }
541+ }
542+
543+
544+
545+@Callable(i)
546+func cancelRequest (artId,creatorAddr,requestId) = {
547+ let $t01969519739 = idCallerDate(i)
548+ let id = $t01969519739._1
549+ let requestOwner = $t01969519739._2
550+ let date = $t01969519739._3
551+ let requesDataKey = ((((((("request2nd_" + requestOwner) + "_") + creatorAddr) + "_") + artId) + "_") + requestId)
552+ let requestData = getStrByK((requesDataKey + "_OPEN"))
553+ if ((size(requestData) == 0))
554+ then throw("Request not found")
555+ else {
556+ let requestDataArr = split(requestData, "_")
557+[DeleteEntry((requesDataKey + "_OPEN")), StringEntry((((((requesDataKey + "_") + toString(date)) + "_") + id) + "_CANCELLED"), ((requestData + "_") + toString(date))), ScriptTransfer(Address(fromBase58String(requestOwner)), parseIntValue(requestDataArr[1]), fromBase58String(requestDataArr[2]))]
558+ }
559+ }
560+
561+

github/deemru/w8io/026f985 
31.22 ms