tx · CNJgPTSDRkBuNZPkNSPHFKyqoXD3MAtcXetXpeurLSfm

3N2eA4yzXa4wTj7pP8r6G144RRxZW7cmq4p:  -0.01400000 Waves

2021.06.21 13:09 [1580007] smart account 3N2eA4yzXa4wTj7pP8r6G144RRxZW7cmq4p > SELF 0.00000000 Waves

{ "type": 13, "id": "CNJgPTSDRkBuNZPkNSPHFKyqoXD3MAtcXetXpeurLSfm", "fee": 1400000, "feeAssetId": null, "timestamp": 1624270166466, "version": 2, "chainId": 84, "sender": "3N2eA4yzXa4wTj7pP8r6G144RRxZW7cmq4p", "senderPublicKey": "Hh3eFP2XFetZSfTxQiM1Ps96f68zi8Zh5ghhCZdjgdFs", "proofs": [ "3gfpqceuyokmPb2Ph9JpVA8em1mDzmzeLM4iQevWry3o2AayuKDfBeyX4QKLmiEspRq6Nh8ScHHvARJpiBxuw4PQ" ], "script": "base64:AAIEAAAAAAAAABkIAhIECgIBCBIFCgMIAQgSAwoBCBIDCgEIAAAAKQAAAAAIdW5pdFRlc3QHAAAAAAlvcmFjbGVGZWUJAQAAAAV2YWx1ZQAAAAEJAAQmAAAAAQIAAAAjM04yczVSdGFIUEJlbkNzeDJFQ2NvRlJiWUh4M25vWmhYVzEAAAAACHNpZ25EYXBwCQEAAAAFdmFsdWUAAAABCQAEJgAAAAECAAAAIzNOQzI4aFNpdnJtc1RVWGFZRDF4NkwzNjJKNFpwVW5vVGRCAAAAAAxhcnR3b3Jrc0RhcHAJAQAAAAV2YWx1ZQAAAAEJAAQmAAAAAQIAAAAjM05CeW5mYlhDMkthc3RVeGh1a2NNVWFFNThLOWNCZEI5VVkAAAAAC2ZlZVJlY2VpdmVyAgAAACMzTjFFNnRYZGRSb1ZhUmZROWRRM3ZnNUxhVzJmc2Q4SEt1YgAAAAAIdXNlckRhcHADBQAAAAh1bml0VGVzdAkBAAAABXZhbHVlAAAAAQkABCYAAAABAgAAACMzTXQ0UkdNRXlqU1dZQW9jVFBxZDU1d2RIUVFCM1BVMlVDbQkBAAAABXZhbHVlAAAAAQkABCYAAAABAgAAACMzTjh4WGFZakUyN0FhNzlkNWhIcmhIdTlIYUZvVEJtaERFagAAAAANd2hpdGVsaXN0RGFwcAkBAAAABXZhbHVlAAAAAQkABCYAAAABAgAAACMzTjZCYVYxZENCNHpnNDNnb05OSGFDdHZSMTNCY3lKNUdzcQAAAAALc2lnbkFzc2V0SWQBAAAAIOilarzKd0LycGEyNUpPRYO5uR7lmWcXw3Hq2QuhBK3rAAAAAAt1c2RuQXNzZXRJZAEAAAAgD/IcEqzkxDya7EYaqyWosOy6BytGzG2IcvC14pJJAbQAAAAADHdhdmVzQXNzZXRJZAEAAAAAAAAAAAVjaHJpcwIAAAAjM01zRzZqUE5DclZKVXRZQjdYSkJ4Uzd1dFdzWEFmNG45VnAAAAAAB3NpZ25DdXQAAAAAAAAAAAMAAAAACmNyZWF0b3JDdXQAAAAAAAAAAAoAAAAAC2RhcHBSdW5uaW5nCQEAAAALdmFsdWVPckVsc2UAAAACCQAEGwAAAAIFAAAACHVzZXJEYXBwAgAAABRjb25mX2RhcHBfaXNfcnVubmluZwYAAAAADm1haW50ZW5hbmNl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BgkAAZEAAAACBQAAAAduZnREYXRhAAAAAAAAAAAFCQABkQAAAAIFAAAAB25mdERhdGEAAAAAAAAAAAYFAAAACWFydFNpZ25JRAEAAAANY2hlY2tBUlRFeGlzdAAAAAIAAAAFYXJ0SWQAAAALY3JlYXRvckFkZHIEAAAACWFydFNpZ25JRAkBAAAADGdldEFydFN0ckJ5SwAAAAEJAQAAAAlrZXlTaWduSUQAAAACBQAAAAtjcmVhdG9yQWRkcgUAAAAFYXJ0SWQDCQAAAAAAAAIJAAExAAAAAQUAAAAJYXJ0U2lnbklEAAAAAAAAAAAACQAAAgAAAAECAAAAHUFydHdvcmsgbm90IGZvdW5kIG9uIFNJR04gQXJ0AwMJAQAAAAEhAAAAAQkBAAAADmNoZWNrQXJ0U3RhdHVzAAAAAgUAAAALY3JlYXRvckFkZHIFAAAABWFydElkCQEAAAABIQAAAAEJAQAAABFjaGVja0FydGlzdFN0YXR1cwAAAAEFAAAAC2NyZWF0b3JBZGRyBwcGAQAAAAxzZXRUcmFuc2ZlcnMAAAAGAAAABmFtb3VudAAAAAdhc3NldElkAAAABW5mdGlkAAAAC2NyZWF0b3JBZGRyAAAACXNhbGVPd25lcgAAAAZjYWxsZXIEAAAADWFtb3VudEZvclNpZ24JAABrAAAAAwUAAAAGYW1vdW50BQAAAAdzaWduQ3V0AAAAAAAAAABkBAAAABBhbW91bnRGb3JDcmVhdG9yCQAAawAAAAMFAAAABmFtb3VudAUAAAAKY3JlYXRvckN1dAAAAAAAAAAAZAQAAAAOYW1vdW50Rm9yT3duZXIJAABlAAAAAgUAAAAGYW1vdW50CQAAZAAAAAIFAAAADWFtb3VudEZvclNpZ24FAAAAEGFtb3VudEZvckNyZWF0b3IEAAAAB3NpZ25GZWUJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMJAQAAAAdBZGRyZXNzAAAAAQkAAlkAAAABBQAAAAtmZWVSZWNlaXZlcgUAAAANYW1vdW50Rm9yU2lnbgUAAAAHYXNzZXRJZAQAAAAKY3JlYXRvckZlZQkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwkBAAAAB0FkZHJlc3MAAAABCQACWQAAAAEFAAAAC2NyZWF0b3JBZGRyBQAAABBhbW91bnRGb3JD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", "height": 1580007, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: none Next: DCujGG8XkELWk45tzZvPEXb6WPJzW7wSvdoRVRfQGN5V Full:
OldNewDifferences
1-# no script
1+{-# STDLIB_VERSION 4 #-}
2+{-# SCRIPT_TYPE ACCOUNT #-}
3+{-# CONTENT_TYPE DAPP #-}
4+let unitTest = false
5+
6+let oracleFee = value(addressFromString("3N2s5RtaHPBenCsx2ECcoFRbYHx3noZhXW1"))
7+
8+let signDapp = value(addressFromString("3NC28hSivrmsTUXaYD1x6L362J4ZpUnoTdB"))
9+
10+let artworksDapp = value(addressFromString("3NBynfbXC2KastUxhukcMUaE58K9cBdB9UY"))
11+
12+let feeReceiver = "3N1E6tXddRoVaRfQ9dQ3vg5LaW2fsd8HKub"
13+
14+let userDapp = if (unitTest)
15+ then value(addressFromString("3Mt4RGMEyjSWYAocTPqd55wdHQQB3PU2UCm"))
16+ else value(addressFromString("3N8xXaYjE27Aa79d5hHrhHu9HaFoTBmhDEj"))
17+
18+let whitelistDapp = value(addressFromString("3N6BaV1dCB4zg43goNNHaCtvR13BcyJ5Gsq"))
19+
20+let signAssetId = base58'Gf9t8FA4H3ssoZPCwrg3KwUFCci8zuUFP9ssRsUY3s6a'
21+
22+let usdnAssetId = base58'25FEqEjRkqK6yCkiT7Lz6SAYz7gUFCtxfCChnrVFD5AT'
23+
24+let wavesAssetId = base58''
25+
26+let chris = "3MsG6jPNCrVJUtYB7XJBxS7utWsXAf4n9Vp"
27+
28+let signCut = 3
29+
30+let creatorCut = 10
31+
32+let dappRunning = valueOrElse(getBoolean(userDapp, "conf_dapp_is_running"), true)
33+
34+let maintenanceMSG = valueOrElse(getString(userDapp, "conf_maintenance_msg"), "")
35+
36+let userSuspended = "SUSPENDED"
37+
38+let userRemoved = "REMOVED"
39+
40+let artIllegal = "ILLEGAL"
41+
42+let artSuspended = "SUSPENDED"
43+
44+func getUserStrByK (key) = valueOrElse(getString(userDapp, key), "Error")
45+
46+
47+func getArtStrByK (key) = valueOrElse(getString(artworksDapp, key), "")
48+
49+
50+func getStrByK (key) = valueOrElse(getString(this, key), "")
51+
52+
53+func getIntByK (key) = valueOrElse(getInteger(this, key), 0)
54+
55+
56+func keyUserStatus (addr) = ("user_status_" + addr)
57+
58+
59+func keySignID (artistAddr,artId) = ((("art_signid_" + artId) + "_") + artistAddr)
60+
61+
62+func keyFlag (artistAddr,artId) = ((("art_flag_" + artId) + "_") + artistAddr)
63+
64+
65+func keyNFTData (id) = ("nft_" + id)
66+
67+
68+func getSaleKey (caller,nftId,artId,creatorAddr) = ((((((("sale2nd_info_" + caller) + "_") + nftId) + "_") + artId) + "_") + creatorAddr)
69+
70+
71+func getIntByKFromOracle (key) = valueOrErrorMessage(getInteger(oracleFee, key), "Integer undefine or 0 in oracle")
72+
73+
74+let currentCertificationPrice = getIntByKFromOracle(("certification_fee_" + toBase58String(signAssetId)))
75+
76+func idCallerDate (i) = if (!(dappRunning))
77+ then throw(maintenanceMSG)
78+ else $Tuple3(toBase58String(i.transactionId), toBase58String(i.caller.bytes), lastBlock.timestamp)
79+
80+
81+func isPayment (i) = if ((size(i.payments) == 0))
82+ then throw("No payment attached")
83+ else {
84+ let payment = value(i.payments[0])
85+ let amount = value(payment.amount)
86+ $Tuple2(payment, amount)
87+ }
88+
89+
90+func isSignArtNFT (id) = {
91+ let assetDetails = value(assetInfo(id))
92+ if (if (if (if ((assetDetails.quantity != 1))
93+ then true
94+ else (assetDetails.decimals != 0))
95+ then true
96+ else (assetDetails.reissuable != false))
97+ then true
98+ else (assetDetails.issuer != artworksDapp))
99+ then false
100+ else true
101+ }
102+
103+
104+func acceptedAssetIds (assetId) = if (if (if (if ((assetId != toBase58String(signAssetId)))
105+ then (assetId != toBase58String(wavesAssetId))
106+ else false)
107+ then (assetId != "WAVES")
108+ else false)
109+ then (assetId != toBase58String(usdnAssetId))
110+ else false)
111+ then false
112+ else true
113+
114+
115+func getSaleOwnerAndStatus (nftid) = {
116+ let saleOwner = getStrByK(("current_owner_on_dapp_" + nftid))
117+ if ((size(saleOwner) == 0))
118+ then throw("NFT not found")
119+ else {
120+ let saleStatus = getStrByK(((("sale2nd_status_" + saleOwner) + "_") + nftid))
121+ if ((saleStatus != "OPEN"))
122+ then throw("NFT not for sale")
123+ else saleOwner
124+ }
125+ }
126+
127+
128+func checkArtStatus (addr,id) = {
129+ let artStatus = getArtStrByK(keyFlag(addr, id))
130+ if (if ((artStatus == artIllegal))
131+ then true
132+ else (artStatus == artSuspended))
133+ then throw(("Original Artwork flagged as " + artStatus))
134+ else true
135+ }
136+
137+
138+func checkArtistStatus (addr) = {
139+ let artistStatus = getUserStrByK(keyUserStatus(addr))
140+ if (containsElement([userSuspended, userRemoved], artistStatus))
141+ then throw(("Original Artist " + artistStatus))
142+ else true
143+ }
144+
145+
146+func checkNFTInfo (assetId) = {
147+ let nftData = split(getArtStrByK(keyNFTData(assetId)), "_")
148+ let artSignID = getArtStrByK(keySignID(nftData[6], nftData[5]))
149+ if (if (!(checkArtStatus(nftData[6], nftData[5])))
150+ then !(checkArtistStatus(nftData[6]))
151+ else false)
152+ then $Tuple4(false, nftData[5], nftData[6], artSignID)
153+ else $Tuple4(true, nftData[5], nftData[6], artSignID)
154+ }
155+
156+
157+func checkARTExist (artId,creatorAddr) = {
158+ let artSignID = getArtStrByK(keySignID(creatorAddr, artId))
159+ if ((size(artSignID) == 0))
160+ then throw("Artwork not found on SIGN Art")
161+ else if (if (!(checkArtStatus(creatorAddr, artId)))
162+ then !(checkArtistStatus(creatorAddr))
163+ else false)
164+ then false
165+ else true
166+ }
167+
168+
169+func setTransfers (amount,assetId,nftid,creatorAddr,saleOwner,caller) = {
170+ let amountForSign = fraction(amount, signCut, 100)
171+ let amountForCreator = fraction(amount, creatorCut, 100)
172+ let amountForOwner = (amount - (amountForSign + amountForCreator))
173+ let signFee = ScriptTransfer(Address(fromBase58String(feeReceiver)), amountForSign, assetId)
174+ let creatorFee = ScriptTransfer(Address(fromBase58String(creatorAddr)), amountForCreator, assetId)
175+ let ownerFee = ScriptTransfer(Address(fromBase58String(saleOwner)), amountForOwner, assetId)
176+ let collectorNFT = ScriptTransfer(Address(fromBase58String(caller)), 1, fromBase58String(nftid))
177+ $Tuple4(signFee, creatorFee, ownerFee, collectorNFT)
178+ }
179+
180+
181+func validateMinSell (assetId,price) = {
182+ let minSellWaves = if (unitTest)
183+ then 10
184+ else getIntByKFromOracle("waves_min_sell")
185+ let minSellUsdn = 1000000
186+ let minSellSign = if (unitTest)
187+ then 1
188+ else (currentCertificationPrice * 2)
189+ if (if (if (if (if ((assetId == toBase58String(usdnAssetId)))
190+ then (minSellUsdn > price)
191+ else false)
192+ then (price != 0)
193+ else false)
194+ then true
195+ else if (if ((assetId == toBase58String(signAssetId)))
196+ then (minSellSign > price)
197+ else false)
198+ then (price != 0)
199+ else false)
200+ then true
201+ else if (if (if ((assetId == toBase58String(wavesAssetId)))
202+ then true
203+ else (assetId == "WAVES"))
204+ then (minSellWaves > price)
205+ else false)
206+ then (price != 0)
207+ else false)
208+ then false
209+ else true
210+ }
211+
212+
213+@Callable(i)
214+func sellNFT (price,asset) = {
215+ let $t077167755 = idCallerDate(i)
216+ let id = $t077167755._1
217+ let caller = $t077167755._2
218+ let date = $t077167755._3
219+ let $t077617797 = isPayment(i)
220+ let payment = $t077617797._1
221+ let amount = $t077617797._2
222+ let nftId = if (if (isDefined(payment.assetId))
223+ then isSignArtNFT(value(payment.assetId))
224+ else false)
225+ then toBase58String(value(payment.assetId))
226+ else throw("Only SIGN Art NFT accepted.")
227+ let $t079768045 = checkNFTInfo(nftId)
228+ let isValidNFT = $t079768045._1
229+ let artId = $t079768045._2
230+ let creatorAddr = $t079768045._3
231+ let artSignID = $t079768045._4
232+ if ((size(artSignID) == 0))
233+ then throw("Artwork not found on SIGN Art")
234+ else if (!(isValidNFT))
235+ then throw("Something went wrong")
236+ else if (!(acceptedAssetIds(asset)))
237+ then throw("Only SIGN, USDN or WAVES accepted")
238+ else if ((price == 0))
239+ then throw("Wrong minimum sell price")
240+ else if (!(validateMinSell(asset, price)))
241+ then throw("Wrong minimum sell price")
242+ 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)]
243+ }
244+
245+
246+
247+@Callable(i)
248+func updateSalePrice (nftId,price,asset) = {
249+ let $t089218960 = idCallerDate(i)
250+ let id = $t089218960._1
251+ let caller = $t089218960._2
252+ let date = $t089218960._3
253+ let $t089669035 = checkNFTInfo(nftId)
254+ let isValidNFT = $t089669035._1
255+ let artId = $t089669035._2
256+ let creatorAddr = $t089669035._3
257+ let artSignID = $t089669035._4
258+ if ((size(artSignID) == 0))
259+ then throw("Artwork not found on SIGN Art, cancel your sale.")
260+ else if (!(isValidNFT))
261+ then throw("Something went wrong")
262+ else {
263+ let saleOwner = getStrByK(("current_owner_on_dapp_" + nftId))
264+ if ((saleOwner != caller))
265+ then throw("You don't own this NFT")
266+ else {
267+ let saleStatus = getStrByK(((("sale2nd_status_" + caller) + "_") + nftId))
268+ if ((saleStatus != "OPEN"))
269+ then throw("Sale not active")
270+ else if (!(acceptedAssetIds(asset)))
271+ then throw("Only SIGN, USDN or WAVES accepted")
272+ else if ((price == 0))
273+ then throw("Wrong minimum sell price")
274+ else if (!(validateMinSell(asset, price)))
275+ then throw("Wrong minimum sell price")
276+ else {
277+ let saleKey = getSaleKey(caller, nftId, artId, creatorAddr)
278+ let saleInfo = split(getStrByK((saleKey + "_OPEN")), "_")
279+[StringEntry((saleKey + "_OPEN"), ((((((((((((saleInfo[0] + "_") + toString(price)) + "_") + asset) + "_") + saleInfo[3]) + "_") + saleInfo[4]) + "_") + saleInfo[5]) + "_") + saleInfo[6]))]
280+ }
281+ }
282+ }
283+ }
284+
285+
286+
287+@Callable(i)
288+func cancelSale (nftId) = {
289+ let $t01017410213 = idCallerDate(i)
290+ let id = $t01017410213._1
291+ let caller = $t01017410213._2
292+ let date = $t01017410213._3
293+ let $t01021910441 = checkNFTInfo(nftId)
294+ let isValidNFT = $t01021910441._1
295+ let artId = $t01021910441._2
296+ let creatorAddr = $t01021910441._3
297+ let artSignID = $t01021910441._4
298+ let saleOwner = getStrByK(("current_owner_on_dapp_" + nftId))
299+ if ((saleOwner != caller))
300+ then throw("You don't own this NFT")
301+ else {
302+ let saleStatus = getStrByK(((("sale2nd_status_" + caller) + "_") + nftId))
303+ if ((saleStatus != "OPEN"))
304+ then throw("Sale not active")
305+ else {
306+ let saleKey = getSaleKey(caller, nftId, artId, creatorAddr)
307+ let saleInfo = getStrByK((saleKey + "_OPEN"))
308+[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))]
309+ }
310+ }
311+ }
312+
313+
314+
315+@Callable(i)
316+func buyNFT (nftId) = {
317+ let $t01127211311 = idCallerDate(i)
318+ let id = $t01127211311._1
319+ let caller = $t01127211311._2
320+ let date = $t01127211311._3
321+ let saleOwner = getSaleOwnerAndStatus(nftId)
322+ let $t01136511434 = checkNFTInfo(nftId)
323+ let isValidNFT = $t01136511434._1
324+ let artId = $t01136511434._2
325+ let creatorAddr = $t01136511434._3
326+ let artSignID = $t01136511434._4
327+ if ((size(artSignID) == 0))
328+ then throw("Artwork not found on SIGN Art, cancel your sale.")
329+ else if (!(isValidNFT))
330+ then throw("Something went wrong")
331+ else {
332+ let saleKey = getSaleKey(saleOwner, nftId, artId, creatorAddr)
333+ let saleInfo = getStrByK((saleKey + "_OPEN"))
334+ if ((size(saleInfo) == 0))
335+ then throw("Sale Not found!")
336+ else {
337+ let saleInfoArray = split(saleInfo, "_")
338+ if ((parseInt(saleInfoArray[1]) == 0))
339+ then throw("Offer only")
340+ else {
341+ let $t01188611922 = isPayment(i)
342+ let payment = $t01188611922._1
343+ let amount = $t01188611922._2
344+ let paymentAssetStr = if (isDefined(payment.assetId))
345+ then toBase58String(value(payment.assetId))
346+ else ""
347+ if (if ((saleInfoArray[1] != toString(amount)))
348+ then true
349+ else (saleInfoArray[2] != paymentAssetStr))
350+ then throw("Payment infos don't match.")
351+ else {
352+ let amountForSign = fraction(amount, signCut, 100)
353+ let amountForCreator = fraction(amount, creatorCut, 100)
354+ let amountForOwner = (amount - (amountForSign + amountForCreator))
355+ let $t01242512553 = setTransfers(amount, payment.assetId, nftId, creatorAddr, saleOwner, caller)
356+ let signFee = $t01242512553._1
357+ let creatorFee = $t01242512553._2
358+ let ownerFee = $t01242512553._3
359+ let collectorNFT = $t01242512553._4
360+[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]
361+ }
362+ }
363+ }
364+ }
365+ }
366+
367+

github/deemru/w8io/3ef1775 
43.90 ms