tx · HEWh32tkNktUHLxs7teH121WBHXNdKnK1Tq1bWmExozm

3MyRsssByY6ZDZxzXEFK7sgFYbtXAxajmJp:  -0.01000000 Waves

2021.08.31 19:20 [1682755] smart account 3MyRsssByY6ZDZxzXEFK7sgFYbtXAxajmJp > SELF 0.00000000 Waves

{ "type": 13, "id": "HEWh32tkNktUHLxs7teH121WBHXNdKnK1Tq1bWmExozm", "fee": 1000000, "feeAssetId": null, "timestamp": 1630426930611, "version": 2, "chainId": 84, "sender": "3MyRsssByY6ZDZxzXEFK7sgFYbtXAxajmJp", "senderPublicKey": "7mNS5bKoVK7u5db7PvrcUj25wxK6NvkMjqkMHjBKcpVb", "proofs": [ "5A4zFMksz1KnwZEpdsJfas9NKzFBba5wyYD6kyWceRX9Grb2Zs2fAr4ey1yrVioK9zYcAA5KYzqur4BFEPcADgff" ], "script": "base64:AAIFAAAAAAAADCMIAhIJCgcICAgICAgIEgkKBwgBAQgIAQESBAoCCAgSAwoBCBIECgIICBIGCgQICAgIEgUKAwgICBoOCgJhMRIIdW5pdFRlc3QaDwoCYTISCW9yYWNsZUZlZRoRCgJhMxILZmVlUmVjZWl2ZXIaDgoCYTQSCHVzZXJEYXBwGhMKAmE1Eg13aGl0ZWxpc3REYXBwGhMKAmE2Eg1zY29uZXhBc3NldElkGgsKAmE3EgVvd25lchoYCgJhOBISc2NvbmV4Rmlyc3RTZWxsQ3V0GhEKAmE5EgtkYXBwUnVubmluZxoUCgJiMRIObWFpbnRlbmFuY2VNU0caEwoCYjISDXVzZXJTdXNwZW5kZWQaEQoCYjMSC3VzZXJSZW1vdmVkGhYKAmI0EhB1c2VyVW5yZWdpc3RlcmVkGhEKAmI1Egt1c2VyQWxsb3dlZBoSCgJiNhIMYXVjdGlvblR5cGUxGhIKAmI3EgxhdWN0aW9uVHlwZTIaFAoCYjgSDmdldFN0cmluZ0J5S2V5GgkKAmI5EgNrZXkaHwoCYzESGWdldEludGVnZXJCeUtleUZyb21PcmFjbGUaFQoCYzISD2dldEludGVnZXJCeUtleRoUCgJjMxIOY2hlY2tXaGl0ZWxpc3QaFQoCYzQSD2dldEJvb2xlYW5CeUtleRoTCgJjNRINa2V5VXNlclN0YXR1cxoMCgJjNhIGY2FsbGVyGg0KAmM3EgdrZXlEYXRlGgsKAmM4EgVhcnRJZBoNCgJjORIHa2V5TmFtZRoNCgJkMRIHa2V5RGVzYxoTCgJkMhINa2V5RGlzcGxheUNpZBoQCgJkMxIKa2V5TWF4TWludBoRCgJkNBILa2V5TWluUHJpY2UaGAoCZDUSEmtleUhpZ2hlc3RCaWRCaWRJZBoOCgJkNhIIa2V5QmlkSWQaCwoCZDcSBWJpZElkGhEKAmQ4EgtrZXlEdXJhdGlvbhoSCgJkORIMa2V5RW5kSGVpZ2h0GhQKAmUxEg5rZXlBdWN0aW9uVHlwZRoPCgJlMhIJa2V5SXNzdWVkGhIKAmUzEgxLZXlOZnRJc3N1ZXIaCwoCZTQSBW5mdElkGg8KAmU1EglrZXlPblNhbGUaFAoCZTYSDmtleUVudGl0bGVtZW50Gg0KAmU3EgdrZXlUYWdzGg0KAmU4EgdrZXlUeXBlGg4KAmU5EghrZXlQcmljZRoYCgJmMRISa2V5QXNzZXRJZEFjY2VwdGVkGhcKAmYyEhFrZXlIYXNoQnlUeGlkQWRkchoKCgJmMxIEdHhpZBoUCgJmNBIOa2V5T3duZXJCeUhhc2gaEAoCZjUSCnNoYTI1Nkhhc2gaGAoCZjYSEmtleVR4aWRCeUhhc2hPd25lchofCgJmNxIZY3VycmVudENlcnRpZmljYXRpb25QcmljZRoWCgJmOBIQZ2V0QW1vdW50QnlCaWRJZBogCgJmORIaZ2V0QW1vdW50SGlnaGVzdEJpZEJ5QXJ0SWQaFAoCZzESDnZhbGlkYXRlU3RyaW5nGgkKAmcyEgNzdHIaCQoCZzMSA21heBoSCgJnNBIMdmFsaWRhdGVVc2VyGhAKAmc1Egp1c2VyU3RhdHVzGhkKAmc2EhN2YWxpZGF0ZUFydHdvcmtEYXRhGhAKAmc3EgpjaWREaXNwbGF5GgoKAmc4EgRuYW1lGhEKAmc5EgtkZXNjcmlwdGlvbhoKCgJoMRIEdGFncxoPCgJoMhIJY2hlY2tVc2VyGg8KAmgzEglpc1BheW1lbnQaBwoCaDQSAWkaDQoCaDUSB3BheW1lbnQaDAoCaDYSBmFtb3VudBoVCgJoNxIPdmFsaWRhdGVQYXltZW50GhAKAmg4Egp0MDg5ODI5MDE4Gg0KAmg5Egdhc3NldElkGhoKAmkxEhR2YWxpZGF0ZVByaWNlQXNzZXRJZBoSCgJpMhIMcHJpY2VBc3NldElkGhIKAmkzEgxhcnR3b3JrUHJpY2UaEAoCaTQSCnQwOTYxMTk2NDcaFgoCaTUSEGFjY2VwdGVkQXNzZXRJZHMaFQoCaTYSD3ZhbGlkYXRlTWluU2VsbBoLCgJpNxIFcHJpY2UaEwoCaTgSDW1pblNlbGxTY29uZXgaEwoCaTkSDWdldEJpZEFzc2V0SWQaHAoCajESFmdldFByaWNlQXNzZXRJZEZyb21CaWQaEAoCajISCmJpZERhdGFLZXkaDQoCajMSB2JpZERhdGEaEAoCajQSCmJpZERhdGFBcnIaDwoCajUSCWJpZEFtb3VudBoQCgJqNhIKYmlkQXNzZXRJZBoSCgJqNxIMaWRDYWxsZXJEYXRlGhAKAmo4EgpnZXRBcnREYXRhGgwKAmo5EgZpc3N1ZXIaCwoCazESBWlzQmlkGhQKAmsyEg5jYWxsZXJJc0lzc3VlchoOCgJrMxIIdG90YWxORlQaEQoCazQSC2FydHdvcmtOYW1lGg4KAms1Eghpc09uU2FsZRoQCgJrNhIKYW1vdW50U29sZBoQCgJrNxIKbWF4Q2FuU2VsbBoQCgJrOBIKZ2V0QmlkRGF0YRoOCgJrORIIYmlkT3duZXIaEgoCbDESDHQwMTM1MTkxMzY0OBoXCgJsMhIRZ2V0Q29tbWlzc2lvbkRhdGEaEwoCbDMSDWlzV2hpdGVsaXN0ZWQaCQoCbDQSA2N1dBoVCgJsNRIPYW1vdW50Rm9yU2NvbmV4GhYKAmw2EhBhbW91bnRGb3JDcmVhdG9yGhMKAmw3Eg1uZXdBbW91bnRTb2xkGhIKAmw4EgxnZXRJc3N1ZURhdGEaDwoCbDkSCWlzc3VlTWV0YRoOCgJtMRIIaXNzdWVORlQaCwoCbTISBWlkTkZUGhAKAm0zEgpzZWxsU3RhdHVzGhAKAm00EgpyZWNlaXZlTkZUGhIKAm01EgxnZXRCaWRLZXlWYWwaCgoCbTYSBGRhdGUaEAoCbTcSCmFzc2V0SWRCaWQaDwoCbTgSCWJpZERlbE9sZBoPCgJtORIJYmlkVXBkYXRlGg0KAm4xEgdidXlNaW50GhAKAm4yEgpjYWxsZXJEYXRhGggKAm4zEgJpZBoNCgJuNBIHYXJ0RGF0YRoTCgJuNRINY29tbWlzaW9uRGF0YRoQCgJuNhIKaXNzdWVyRGF0YRoRCgJuNxILYmlkS2V5VmFsdWUaDQoCbjgSB3NvbGRLZXkaDwoCbjkSCXNvbGRWYWx1ZRoOCgJvMRIIc29sZERhdGEaDAoCbzISBmJ1eVJlcxoaCgJvMxIUc2V0QmlkTm9uVHJhZGl0aW9uYWwaEgoCbzQSDHQwMjc3MDkyNzc0NxoSCgJvNRIMdDAyNzc1MjI3Nzg4GgwKAm82EgZiaWROYnIaFwoCbzcSEXNldEJpZFRyYWRpdGlvbmFsGg8KAm84EgllbmRIZWlnaHQaEAoCbzkSCmhpZ2hlc3RCaWQaEQoCcDESC2NhbGxkZXJEYXRhGhIKAnAyEgxpc1BheW1lbnRWYXIaHQoCcDMSF2FjY2VwdEJpZE5vblRyYWRpdGlvbmFsGhQKAnA0Eg5yZXN0YXJ0QXVjdGlvbhoSCgJwNRIMb2xkRW5kSGVpZ2h0Gg4KAnA2EghkdXJhdGlvbhoaCgJwNxIUYWNjZXB0QmlkVHJhZGl0aW9uYWwaEgoCcDgSDGhpZ2hlc3RCaWRJZBoRCgJwORILYnV5TWludERhdGEaGAoCcTESEnJlc3RhcnRBdWN0aW9uRGF0YRoTCgJxMhINY2FuY2VsQmlkSW1wbBoSCgJxMxIMdDAyODk0MjI5MDk0Gg8KAnE0EgliaWRTdGF0dXMaHgoCcTUSGGNhbmNlbEJpZEltcGxUcmFkaXRpb25hbBoKCgJxNhIEdHlwZRoRCgJxNxILZW50aXRsZW1lbnQaEgoCcTgSDHQwMTc3NDAxNzc4MRoVCgJxORIPdmFsaWRhdGVBcnR3b3JrGhIKAnIxEgx0MDE4MTcwMTgyMTIaEAoCcjISCmVudHJ5RXhpc3QaDwoCcjMSCWhhc2hFeGlzdBoNCgJyNBIHbWF4TWludBoRCgJyNRILYXVjdGlvblR5cGUaDAoCcjYSBm1pbkJpZBoSCgJyNxIMdDAyNTcxNDI1NzQ3GgsKAnI4EgVlbnRyeQAAAEcAAAAAAmExBwAAAAACYTIJAQAAAAV2YWx1ZQAAAAEJAAQmAAAAAQIAAAAjM01wWlFqekdvZ21pZmNFS2U4bURkNnJpYkw3bnhUOUFDeWUAAAAAAmEzAgAAACMzTjY1eExxOEpjQ2VhRWlSMVRKUTdkQnFYQnZFeTZFNDhXegAAAAACYTQJAQAAAAV2YWx1ZQAAAAEJAAQmAAAAAQIAAAAjM045Y1FnWkZQSEhWdTh3cXNuMkRrUUZlaGczaDhDTmlvb0EAAAAAAmE1CQEAAAAFdmFsdWUAAAABCQAEJgAAAAECAAAAIzNOOXhaWUdwek1GRFh2WHVjdG1VNnpWOHFTem0yWmZGMzFmAAAAAAJhNgEAAAAguobtEHSno8B/SPo/hvAGB5K2lpZqO0oRcOvqVeCS0zMAAAAAAmE3AgAAACMzTjFEaHE1Wlp5b29qUWlzdVRMdXNZam5HaXNxcnhEd0dMeQAAAAACYTgAAAAAAAAAAJYAAAAAAmE5CQEAAAALdmFsdWVPckVsc2UAAAACCQAEGwAAAAIFAAAAAmE0AgAAABRjb25mX2RhcHBfaXNfcnVubmluZwYAAAAAAmIxCQEAAAALdmFsdWVPckVsc2UAAAACCQAEHQAAAAIF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", "height": 1682755, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: none Next: BTWWj5ACCiSgaVYEYa2NnMrWD4jxqBHnKo9SeHinVfeL Full:
OldNewDifferences
1-# no script
1+{-# STDLIB_VERSION 5 #-}
2+{-# SCRIPT_TYPE ACCOUNT #-}
3+{-# CONTENT_TYPE DAPP #-}
4+let unitTest = false
5+
6+let oracleFee = value(addressFromString("3MpZQjzGogmifcEKe8mDd6ribL7nxT9ACye"))
7+
8+let feeReceiver = "3N65xLq8JcCeaEiR1TJQ7dBqXBvEy6E48Wz"
9+
10+let userDapp = value(addressFromString("3N9cQgZFPHHVu8wqsn2DkQFehg3h8CNiooA"))
11+
12+let whitelistDapp = value(addressFromString("3N9xZYGpzMFDXvXuctmU6zV8qSzm2ZfF31f"))
13+
14+let sconexAssetId = base58'DZ8ALmuLeSZ2ocsYLAcL9MiXBFDbMNQG9LtitREyU5ZC'
15+
16+let owner = "3N1Dhq5ZZyoojQisuTLusYjnGisqrxDwGLy"
17+
18+let sconexFirstSellCut = 150
19+
20+let dappRunning = valueOrElse(getBoolean(userDapp, "conf_dapp_is_running"), true)
21+
22+let maintenanceMSG = valueOrElse(getString(userDapp, "conf_maintenance_msg"), "")
23+
24+let userSuspended = "SUSPENDED"
25+
26+let userRemoved = "REMOVED"
27+
28+let userUnregistered = "UNREGISTERED"
29+
30+let userAllowed = "ALLOWED"
31+
32+let auctionType1 = "BIDTYPE"
33+
34+let auctionType2 = "TRADITIONAL"
35+
36+func getStringByKey (key) = valueOrElse(getString(this, key), "")
37+
38+
39+func getIntegerByKeyFromOracle (key) = valueOrErrorMessage(getInteger(oracleFee, key), "Integer undefine or 0 in oracle")
40+
41+
42+func getIntegerByKey (key) = valueOrElse(getInteger(this, key), 0)
43+
44+
45+func checkWhitelist (key) = valueOrElse(getInteger(whitelistDapp, key), 0)
46+
47+
48+func getBooleanByKey (key) = valueOrElse(getBoolean(this, key), false)
49+
50+
51+func keyUserStatus (caller) = ("user_status_" + caller)
52+
53+
54+func keyDate (caller,artId) = ((("art_date_" + artId) + "_") + caller)
55+
56+
57+func keyName (caller,artId) = ((("art_name_" + artId) + "_") + caller)
58+
59+
60+func keyDesc (caller,artId) = ((("art_desc_" + artId) + "_") + caller)
61+
62+
63+func keyDisplayCid (caller,artId) = ((("art_display_cid_" + artId) + "_") + caller)
64+
65+
66+func keyMaxMint (caller,artId) = ((("art_maxmint_" + artId) + "_") + caller)
67+
68+
69+func keyMinPrice (caller,artId) = ((("art_minprice_" + artId) + "_") + caller)
70+
71+
72+func keyHighestBidBidId (artId) = ("art_highestBidBidId_" + artId)
73+
74+
75+func keyBidId (bidId) = ("bid_" + bidId)
76+
77+
78+func keyDuration (caller,artId) = ((("art_duration_" + artId) + "_") + caller)
79+
80+
81+func keyEndHeight (caller,artId) = ((("art_endheight_" + artId) + "_") + caller)
82+
83+
84+func keyAuctionType (caller,artId) = ((("art_auctiontype_" + artId) + "_") + caller)
85+
86+
87+func keyIssued (caller,artId) = ((("art_issued_" + artId) + "_") + caller)
88+
89+
90+func KeyNftIssuer (nftId) = ("nft_issued_" + nftId)
91+
92+
93+func keyOnSale (caller,artId) = ((("art_onsale_" + artId) + "_") + caller)
94+
95+
96+func keyEntitlement (caller,artId) = ((("art_entitlement_" + artId) + "_") + caller)
97+
98+
99+func keyTags (caller,artId) = ((("art_tags_" + artId) + "_") + caller)
100+
101+
102+func keyType (caller,artId) = ((("art_type_" + artId) + "_") + caller)
103+
104+
105+func keyPrice (caller,artId) = ((("art_price_" + artId) + "_") + caller)
106+
107+
108+func keyAssetIdAccepted (caller,artId) = ((("art_assetAccepted_" + artId) + "_") + caller)
109+
110+
111+func keyHashByTxidAddr (caller,txid) = ((("get_hashbytxidaddr_" + txid) + "_") + caller)
112+
113+
114+func keyOwnerByHash (sha256Hash) = ("get_owner_by_hash_" + sha256Hash)
115+
116+
117+func keyTxidByHashOwner (sha256Hash,caller) = ("get_txid_by_hash_owner_" + toBase58String(sha256_16Kb(toBytes((sha256Hash + caller)))))
118+
119+
120+let currentCertificationPrice = getIntegerByKeyFromOracle(("certification_fee_" + toBase58String(sconexAssetId)))
121+
122+func getAmountByBidId (bidId) = valueOrElse(getIntegerByKey(keyBidId(bidId)), 0)
123+
124+
125+func getAmountHighestBidByArtId (artId) = {
126+ let bidId = valueOrElse(getStringByKey(keyHighestBidBidId(artId)), "")
127+ if ((bidId == ""))
128+ then 0
129+ else getAmountByBidId(bidId)
130+ }
131+
132+
133+func validateString (str,max) = if ((size(str) == 0))
134+ then throw("Field cannot be is empty")
135+ else if ((size(str) > max))
136+ then throw((str + " is too long"))
137+ else true
138+
139+
140+func validateUser (caller) = {
141+ let userStatus = valueOrElse(getString(userDapp, keyUserStatus(caller)), userUnregistered)
142+ if (if ((userStatus == userUnregistered))
143+ then true
144+ else (userStatus == userAllowed))
145+ then "Register this account first with 'Account' tab"
146+ else if ((userStatus == userSuspended))
147+ then "Account suspended"
148+ else if ((userStatus == userRemoved))
149+ then "Account removed"
150+ else ""
151+ }
152+
153+
154+func validateArtworkData (caller,cidDisplay,name,description,tags) = {
155+ let checkUser = validateUser(caller)
156+ if ((checkUser != ""))
157+ then throw(checkUser)
158+ else if ((size(cidDisplay) == 0))
159+ then throw("Display CID cannot be empty")
160+ else if (!(validateString(name, 100)))
161+ then throw("100 Char. max name")
162+ else if (!(validateString(description, 1000)))
163+ then throw("1000 Char. max description")
164+ else if ((size(split(tags, ",")) > 5))
165+ then throw("5 tags max.")
166+ else ""
167+ }
168+
169+
170+func isPayment (i) = if ((size(i.payments) == 0))
171+ then throw("No payment attached")
172+ else {
173+ let payment = value(i.payments[0])
174+ let amount = value(payment.amount)
175+ $Tuple2(payment, amount)
176+ }
177+
178+
179+func validatePayment (i) = {
180+ let t089829018 = isPayment(i)
181+ let payment = t089829018._1
182+ let amount = t089829018._2
183+ let assetId = if (if (isDefined(payment.assetId))
184+ then (payment.assetId == sconexAssetId)
185+ else false)
186+ then payment.assetId
187+ else throw("Only Sconex token accepted as transaction fee")
188+ if ((amount != currentCertificationPrice))
189+ then throw(("Payment amount should be " + toString(currentCertificationPrice)))
190+ else $Tuple2(amount, assetId)
191+ }
192+
193+
194+func validatePriceAssetId (i,priceAssetId,artworkPrice) = {
195+ let t096119647 = isPayment(i)
196+ let payment = t096119647._1
197+ let amount = t096119647._2
198+ let assetId = if (!(isDefined(payment.assetId)))
199+ then throw("Wrong asset id")
200+ else if (if ((size(priceAssetId) > 0))
201+ then (toBase58String(value(payment.assetId)) == priceAssetId)
202+ else false)
203+ then payment.assetId
204+ else throw("Wrong asset id")
205+ if (if ((assetId == unit))
206+ then (priceAssetId != "")
207+ else false)
208+ then throw("Wrong asset id")
209+ else if ((artworkPrice != amount))
210+ then throw("Payment don't match")
211+ else $Tuple2(amount, assetId)
212+ }
213+
214+
215+func acceptedAssetIds (assetId) = if ((assetId != toBase58String(sconexAssetId)))
216+ then throw("Only Sconex accepted")
217+ else true
218+
219+
220+func validateMinSell (assetId,price) = {
221+ let minSellSconex = if (unitTest)
222+ then 1
223+ else (currentCertificationPrice * 2)
224+ if (if (if ((assetId == toBase58String(sconexAssetId)))
225+ then (minSellSconex > price)
226+ else false)
227+ then (price != 0)
228+ else false)
229+ then throw(("Wrong minimum sell price " + toString(minSellSconex)))
230+ else true
231+ }
232+
233+
234+func getBidAssetId (assetId) = if ((assetId == "WAVES"))
235+ then throw("Only sconex is accepted!")
236+ else fromBase58String(assetId)
237+
238+
239+func getPriceAssetIdFromBid (bidDataKey) = {
240+ let bidData = getStringByKey((bidDataKey + "_OPEN"))
241+ if ((bidData == ""))
242+ then throw("Bid not found")
243+ else {
244+ let bidDataArr = split(bidData, "_")
245+ let bidAmount = parseIntValue(bidDataArr[1])
246+ let bidAssetId = getBidAssetId(bidDataArr[0])
247+ if ((0 >= bidAmount))
248+ then throw("Wrong amount")
249+ else $Tuple2(bidAmount, bidAssetId)
250+ }
251+ }
252+
253+
254+func idCallerDate (i) = if (!(dappRunning))
255+ then throw(maintenanceMSG)
256+ else $Tuple3(toBase58String(i.transactionId), toBase58String(i.caller.bytes), lastBlock.timestamp)
257+
258+
259+func getArtData (i,issuer,artId,isBid) = {
260+ let callerIsIssuer = (toBase58String(i.caller.bytes) == issuer)
261+ let totalNFT = getIntegerByKey("total_nft_issued")
262+ let artworkName = getStringByKey(keyName(issuer, artId))
263+ if ((artworkName == ""))
264+ then throw("Art doesn't exist")
265+ else {
266+ let isOnSale = getBooleanByKey(keyOnSale(issuer, artId))
267+ let amountSold = getIntegerByKey(keyIssued(issuer, artId))
268+ let artworkPrice = if (callerIsIssuer)
269+ then (currentCertificationPrice * 2)
270+ else getIntegerByKey(keyPrice(issuer, artId))
271+ let priceAssetId = if (callerIsIssuer)
272+ then toBase58String(sconexAssetId)
273+ else getStringByKey(keyAssetIdAccepted(issuer, artId))
274+ let maxCanSell = getIntegerByKey(keyMaxMint(issuer, artId))
275+ if (if (if (!(isBid))
276+ then !(callerIsIssuer)
277+ else false)
278+ then if (if ((0 >= artworkPrice))
279+ then true
280+ else !(isOnSale))
281+ then true
282+ else (0 >= maxCanSell)
283+ else false)
284+ then throw("Art not for sale")
285+ else if (if (if (!(isBid))
286+ then callerIsIssuer
287+ else false)
288+ then (0 >= maxCanSell)
289+ else false)
290+ then throw("Max issuable not set")
291+ else $Tuple7(totalNFT, artworkName, amountSold, artworkPrice, priceAssetId, maxCanSell, isOnSale)
292+ }
293+ }
294+
295+
296+func getBidData (i,caller,issuer,artId,bidOwner,bidId,priceAssetId,artworkPrice,isBid) = {
297+ let checkUser = validateUser(issuer)
298+ if (if (isBid)
299+ then (checkUser != "")
300+ else false)
301+ then throw(checkUser)
302+ else {
303+ let bidDataKey = ((((((("bid_" + artId) + "_") + issuer) + "_") + bidOwner) + "_") + bidId)
304+ let t01351913648 = if (isBid)
305+ then getPriceAssetIdFromBid(bidDataKey)
306+ else validatePriceAssetId(i, priceAssetId, artworkPrice)
307+ let amount = t01351913648._1
308+ let assetId = t01351913648._2
309+ $Tuple3(bidDataKey, amount, assetId)
310+ }
311+ }
312+
313+
314+func getCommissionData (issuer,assetId,amount,amountSold,maxCanSell) = {
315+ let isWhitelisted = checkWhitelist(issuer)
316+ let cut = if ((isWhitelisted > height))
317+ then 0
318+ else if ((assetId == sconexAssetId))
319+ then sconexFirstSellCut
320+ else throw("Only Sconex is accepted!")
321+ let amountForSconex = fraction(amount, cut, 1000)
322+ let amountForCreator = (amount - amountForSconex)
323+ if ((amountSold == maxCanSell))
324+ then throw("Art sold out")
325+ else {
326+ let newAmountSold = (amountSold + 1)
327+ $Tuple3(amountForSconex, amountForCreator, newAmountSold)
328+ }
329+ }
330+
331+
332+func getIssueData (issuer,artId,artworkName,newAmountSold,maxCanSell,totalNFT,caller,bidOwner,bidId,i,isOnSale) = {
333+ let issueMeta = ((((((((("Creator: " + issuer) + ",ArtID: ") + artId) + ",Artwork name: ") + artworkName) + ",Issue: ") + toString(newAmountSold)) + "/") + toString(maxCanSell))
334+ let issueNFT = Issue(("SCONEX_" + toString((totalNFT + 1))), issueMeta, 1, 0, false)
335+ let idNFT = calculateAssetId(issueNFT)
336+ let sellStatus = if (if ((newAmountSold == maxCanSell))
337+ then true
338+ else !(isOnSale))
339+ then false
340+ else true
341+ let receiveNFT = if ((bidOwner != ""))
342+ then addressFromStringValue(bidOwner)
343+ else i.caller
344+ $Tuple4(issueNFT, idNFT, sellStatus, receiveNFT)
345+ }
346+
347+
348+func getBidKeyVal (assetId,bidDataKey,date) = {
349+ let assetIdBid = if (!(isDefined(assetId)))
350+ then throw("Only sconex is accepted")
351+ else toBase58String(value(assetId))
352+ let bidData = getStringByKey((bidDataKey + "_OPEN"))
353+ let bidDelOld = DeleteEntry((bidDataKey + "_OPEN"))
354+ let bidUpdate = StringEntry((bidDataKey + "_CLOSED"), ((bidData + "_") + toString(date)))
355+ $Tuple3(assetIdBid, bidDelOld, bidUpdate)
356+ }
357+
358+
359+func buyMint (i,artId,issuer,bidId,bidOwner,isBid) = {
360+ let callerData = idCallerDate(i)
361+ let id = callerData._1
362+ let caller = callerData._2
363+ let date = callerData._3
364+ let artData = getArtData(i, issuer, artId, isBid)
365+ let totalNFT = artData._1
366+ let artworkName = artData._2
367+ let amountSold = artData._3
368+ let artworkPrice = artData._4
369+ let priceAssetId = artData._5
370+ let maxCanSell = artData._6
371+ let isOnSale = artData._7
372+ let bidData = getBidData(i, caller, issuer, artId, bidOwner, bidId, priceAssetId, artworkPrice, isBid)
373+ let bidDataKey = bidData._1
374+ let amount = bidData._2
375+ let assetId = bidData._3
376+ let commisionData = getCommissionData(issuer, value(assetId), amount, amountSold, maxCanSell)
377+ let amountForSconex = commisionData._1
378+ let amountForCreator = commisionData._2
379+ let newAmountSold = commisionData._3
380+ let issuerData = getIssueData(issuer, artId, artworkName, newAmountSold, maxCanSell, totalNFT, caller, bidOwner, bidId, i, isOnSale)
381+ let issueNFT = issuerData._1
382+ let idNFT = issuerData._2
383+ let sellStatus = issuerData._3
384+ let receiveNFT = issuerData._4
385+ let bidKeyValue = getBidKeyVal(assetId, bidDataKey, date)
386+ let assetIdBid = bidKeyValue._1
387+ let bidDelOld = bidKeyValue._2
388+ let bidUpdate = bidKeyValue._3
389+ let soldKey = ((((((("art_sold_" + toString(newAmountSold)) + "_of_") + toString(maxCanSell)) + "_") + artId) + "_") + issuer)
390+ let soldValue = if (!(isBid))
391+ then ((((((((((caller + "_") + toString(date)) + "_") + id) + "_") + toString(artworkPrice)) + "_") + priceAssetId) + "_") + toBase58String(idNFT))
392+ else ((((((((((toString(receiveNFT) + "_") + toString(date)) + "_") + id) + "_") + toString(amount)) + "_") + assetIdBid) + "_") + toBase58String(idNFT))
393+ let soldData = StringEntry(soldKey, soldValue)
394+ let buyRes = [IntegerEntry(keyIssued(issuer, artId), newAmountSold), StringEntry(("nft_" + toBase58String(idNFT)), soldKey), IntegerEntry("total_nft_issued", (totalNFT + 1)), BooleanEntry(keyOnSale(issuer, artId), sellStatus), issueNFT, ScriptTransfer(Address(fromBase58String(issuer)), amountForCreator, assetId), ScriptTransfer(Address(fromBase58String(feeReceiver)), amountForSconex, assetId), ScriptTransfer(receiveNFT, 1, idNFT), StringEntry(KeyNftIssuer(toBase58String(idNFT)), issuer)]
395+ if (isBid)
396+ then (((buyRes :+ soldData) :+ bidUpdate) :+ bidDelOld)
397+ else soldData :: buyRes
398+ }
399+
400+
401+func setBidNonTraditional (i,artId,issuer) = {
402+ let t02770927747 = idCallerDate(i)
403+ let id = t02770927747._1
404+ let caller = t02770927747._2
405+ let date = t02770927747._3
406+ let t02775227788 = isPayment(i)
407+ let payment = t02775227788._1
408+ let amount = t02775227788._2
409+ let assetId = if (!(isDefined(payment.assetId)))
410+ then throw("Only sconex is accepted!")
411+ else toBase58String(value(payment.assetId))
412+ let bidNbr = getIntegerByKey(("current_bidamount_" + artId))
413+ if (!(acceptedAssetIds(assetId)))
414+ then throw("asset not accepted")
415+ else if (!(validateMinSell(assetId, amount)))
416+ then throw("Wrong min sell")
417+ else {
418+ let amountSold = getIntegerByKey(keyIssued(issuer, artId))
419+ let maxCanSell = getIntegerByKey(keyMaxMint(issuer, artId))
420+ if ((0 >= maxCanSell))
421+ then throw("No max edition set for this artwork")
422+ else if ((amountSold >= maxCanSell))
423+ then throw("Sold out, you cannot bid")
424+ else [StringEntry((((((((("bid_" + artId) + "_") + issuer) + "_") + caller) + "_") + id) + "_OPEN"), ((((assetId + "_") + toString(amount)) + "_") + toString(date))), IntegerEntry(("current_bidamount_" + artId), (bidNbr + 1))]
425+ }
426+ }
427+
428+
429+func setBidTraditional (i,artId,issuer) = {
430+ let endHeight = getIntegerByKey(keyEndHeight(issuer, artId))
431+ let highestBid = getAmountHighestBidByArtId(artId)
432+ if ((height > endHeight))
433+ then throw("This auction is finished already!")
434+ else {
435+ let callderData = idCallerDate(i)
436+ let id = callderData._1
437+ let caller = callderData._2
438+ let date = callderData._3
439+ let isPaymentVar = isPayment(i)
440+ let payment = isPaymentVar._1
441+ let amount = isPaymentVar._2
442+ if ((highestBid >= amount))
443+ then throw(("Please place a bid higher then: " + toString(highestBid)))
444+ else {
445+ let assetId = if (!(isDefined(payment.assetId)))
446+ then throw("Only sconex is accepted!")
447+ else toBase58String(value(payment.assetId))
448+ let bidNbr = getIntegerByKey(("current_bidamount_" + artId))
449+ if (!(acceptedAssetIds(assetId)))
450+ then throw("asset not accepted")
451+ else if (!(validateMinSell(assetId, amount)))
452+ then throw("Wrong min sell")
453+ else {
454+ let amountSold = getIntegerByKey(keyIssued(issuer, artId))
455+ let maxCanSell = getIntegerByKey(keyMaxMint(issuer, artId))
456+ if ((0 >= maxCanSell))
457+ then throw("No max edition set for this artwork")
458+ else if ((amountSold >= maxCanSell))
459+ then throw("Sold out, you cannot bid")
460+ else [StringEntry((((((((("bid_" + artId) + "_") + issuer) + "_") + caller) + "_") + id) + "_OPEN"), ((((assetId + "_") + toString(amount)) + "_") + toString(date))), IntegerEntry(("current_bidamount_" + artId), (bidNbr + 1)), StringEntry(keyHighestBidBidId(artId), toBase58String(i.transactionId)), IntegerEntry(keyBidId(toBase58String(i.transactionId)), amount)]
461+ }
462+ }
463+ }
464+ }
465+
466+
467+func acceptBidNonTraditional (i,artId,issuer,bidId,bidOwner) = {
468+ let caller = toBase58String(i.caller.bytes)
469+ if ((caller != issuer))
470+ then throw("You cannot do this action")
471+ else buyMint(i, artId, issuer, bidId, bidOwner, true)
472+ }
473+
474+
475+func restartAuction (artId,issuer) = {
476+ let amountSold = getIntegerByKey(keyIssued(issuer, artId))
477+ let maxCanSell = getIntegerByKey(keyMaxMint(issuer, artId))
478+ let oldEndHeight = getIntegerByKey(keyEndHeight(issuer, artId))
479+ let duration = getIntegerByKey(keyDuration(issuer, artId))
480+ let endHeight = (duration + height)
481+ if ((height > oldEndHeight))
482+ then if ((amountSold == maxCanSell))
483+ then throw("Can't restart auction, max amount sold")
484+ else [IntegerEntry(keyEndHeight(issuer, artId), endHeight), DeleteEntry(keyHighestBidBidId(artId))]
485+ else throw("Previous auction isn't completed yet")
486+ }
487+
488+
489+func acceptBidTraditional (i,artId,issuer,bidId,bidOwner) = {
490+ let endHeight = getIntegerByKey(keyEndHeight(issuer, artId))
491+ let highestBidId = getStringByKey(keyHighestBidBidId(artId))
492+ if ((height > endHeight))
493+ then if ((bidId == highestBidId))
494+ then {
495+ let buyMintData = buyMint(i, artId, issuer, bidId, bidOwner, true)
496+ let restartAuctionData = restartAuction(artId, issuer)
497+ (restartAuctionData ++ buyMintData)
498+ }
499+ else throw("This is not the winning bid!")
500+ else throw("This auction is not yet finished!")
501+ }
502+
503+
504+func cancelBidImpl (i,artId,issuer,bidId) = {
505+ let t02894229094 = idCallerDate(i)
506+ let id = t02894229094._1
507+ let caller = t02894229094._2
508+ let date = t02894229094._3
509+ let bidNbr = getIntegerByKey(("current_bidamount_" + artId))
510+ let bidDataKey = ((((((("bid_" + artId) + "_") + issuer) + "_") + caller) + "_") + bidId)
511+ let bidData = getStringByKey((bidDataKey + "_OPEN"))
512+ if ((bidData == ""))
513+ then throw("Bid not found")
514+ else {
515+ let bidDataArr = split(bidData, "_")
516+ let assetId = getBidAssetId(bidDataArr[0])
517+ let bidStatus = "CANCELED"
518+[DeleteEntry((bidDataKey + "_OPEN")), StringEntry(((bidDataKey + "_") + bidStatus), ((bidData + "_") + toString(date))), IntegerEntry(("current_bidamount_" + artId), (bidNbr - 1)), ScriptTransfer(Address(fromBase58String(caller)), parseIntValue(bidDataArr[1]), assetId)]
519+ }
520+ }
521+
522+
523+func cancelBidImplTraditional (i,artId,issuer,bidId) = {
524+ let t02894229094 = idCallerDate(i)
525+ let id = t02894229094._1
526+ let caller = t02894229094._2
527+ let date = t02894229094._3
528+ let bidNbr = getIntegerByKey(("current_bidamount_" + artId))
529+ let bidDataKey = ((((((("bid_" + artId) + "_") + issuer) + "_") + caller) + "_") + bidId)
530+ let bidData = getStringByKey((bidDataKey + "_OPEN"))
531+ if ((bidData == ""))
532+ then throw("Bid not found")
533+ else {
534+ let bidDataArr = split(bidData, "_")
535+ let assetId = getBidAssetId(bidDataArr[0])
536+ let bidStatus = "CANCELED"
537+ let bidAmount = parseIntValue(bidDataArr[1])
538+ let highestBidId = getStringByKey(keyHighestBidBidId(artId))
539+ if ((bidId == highestBidId))
540+ then throw("You can't cancel the highest bid!")
541+ else [DeleteEntry((bidDataKey + "_OPEN")), StringEntry(((bidDataKey + "_") + bidStatus), ((bidData + "_") + toString(date))), IntegerEntry(("current_bidamount_" + artId), (bidNbr - 1)), ScriptTransfer(Address(fromBase58String(caller)), bidAmount, assetId)]
542+ }
543+ }
544+
545+
546+@Callable(i)
547+func addArtwork (sha256Hash,name,description,tags,type,cidDisplay,entitlement) = {
548+ let t01774017781 = idCallerDate(i)
549+ let artId = t01774017781._1
550+ let caller = t01774017781._2
551+ let date = t01774017781._3
552+ let validateArtwork = validateArtworkData(caller, cidDisplay, name, description, tags)
553+ if ((validateArtwork != ""))
554+ then throw("Something went wrong!")
555+ else {
556+ let t01817018212 = validatePayment(i)
557+ let amount = t01817018212._1
558+ let assetId = t01817018212._2
559+ if (!(isDefined(amount)))
560+ then throw("Something went wrong")
561+ else {
562+ let entryExist = getStringByKey(keyTxidByHashOwner(sha256Hash, caller))
563+ if ((entryExist != ""))
564+ then throw("You already added it")
565+ else {
566+ let hashExist = getStringByKey(keyOwnerByHash(sha256Hash))
567+ if ((hashExist != ""))
568+ then throw("Hash already registered")
569+ else [StringEntry(keyOwnerByHash(sha256Hash), caller), StringEntry(keyTxidByHashOwner(sha256Hash, caller), artId), IntegerEntry(keyDate(caller, artId), date), StringEntry(keyName(caller, artId), name), StringEntry(keyDesc(caller, artId), description), StringEntry(keyDisplayCid(caller, artId), cidDisplay), StringEntry(keyType(caller, artId), type), StringEntry(keyTags(caller, artId), tags), IntegerEntry(keyMaxMint(caller, artId), 0), IntegerEntry(keyIssued(caller, artId), 0), BooleanEntry(keyOnSale(caller, artId), false), StringEntry(keyHashByTxidAddr(caller, artId), sha256Hash), StringEntry(keyEntitlement(caller, artId), entitlement), ScriptTransfer(Address(fromBase58String(feeReceiver)), amount, assetId)]
570+ }
571+ }
572+ }
573+ }
574+
575+
576+
577+@Callable(i)
578+func sellArtwork (artId,price,maxMint,assetId,auctionType,minBid,duration) = {
579+ let t02571425747 = idCallerDate(i)
580+ let id = t02571425747._1
581+ let caller = t02571425747._2
582+ let artworkName = getStringByKey(keyName(caller, artId))
583+ if (!(containsElement([auctionType1, auctionType2], auctionType)))
584+ then throw("We dont know this auction type")
585+ else if ((artworkName == ""))
586+ then throw("This art doesn't match your account")
587+ else {
588+ let bidNbr = getIntegerByKey(("current_bidamount_" + artId))
589+ if (!(acceptedAssetIds(assetId)))
590+ then throw("Something went wrong!")
591+ else if (!(validateMinSell(assetId, price)))
592+ then throw("Something went wrong!")
593+ else {
594+ let checkUser = validateUser(caller)
595+ if ((checkUser != ""))
596+ then throw(checkUser)
597+ else {
598+ let amountSold = getIntegerByKey(keyIssued(caller, artId))
599+ let maxCanSell = getIntegerByKey(keyMaxMint(caller, artId))
600+ if ((maxMint > 10))
601+ then throw("10 editions max per artwork")
602+ else if (if ((amountSold != 0))
603+ then (amountSold == maxCanSell)
604+ else false)
605+ then throw("Max edition reached.")
606+ else if (if ((amountSold > 0))
607+ then (maxCanSell != maxMint)
608+ else false)
609+ then throw("Cannot change maximum issuable anymore")
610+ else if (if ((bidNbr > 0))
611+ then (maxCanSell != maxMint)
612+ else false)
613+ then throw("Cannot change maximum issuable with active orders")
614+ else {
615+ let sellStatus = if (if ((price > 0))
616+ then (maxMint > 0)
617+ else false)
618+ then true
619+ else false
620+ let endHeight = (duration + height)
621+[BooleanEntry(keyOnSale(caller, artId), sellStatus), IntegerEntry(keyPrice(caller, artId), price), IntegerEntry(keyMaxMint(caller, artId), maxMint), IntegerEntry(keyMinPrice(caller, artId), minBid), IntegerEntry(keyDuration(caller, artId), duration), IntegerEntry(keyEndHeight(caller, artId), endHeight), StringEntry(keyAssetIdAccepted(caller, artId), assetId), StringEntry(keyAuctionType(caller, artId), auctionType)]
622+ }
623+ }
624+ }
625+ }
626+ }
627+
628+
629+
630+@Callable(i)
631+func buyArtwork (artId,issuer) = buyMint(i, artId, issuer, "", "", false)
632+
633+
634+
635+@Callable(i)
636+func deleteEntry (entry) = {
637+ let caller = toString(addressFromPublicKey(i.callerPublicKey))
638+ if ((caller == owner))
639+ then [DeleteEntry(entry)]
640+ else throw("no")
641+ }
642+
643+
644+
645+@Callable(i)
646+func setBid (artId,issuer) = {
647+ let auctionType = getStringByKey(keyAuctionType(issuer, artId))
648+ if ((auctionType == auctionType1))
649+ then setBidNonTraditional(i, artId, issuer)
650+ else if ((auctionType == auctionType2))
651+ then setBidTraditional(i, artId, issuer)
652+ else throw((("Unknown auction type :" + auctionType) + ", please contact the admins"))
653+ }
654+
655+
656+
657+@Callable(i)
658+func acceptBid (artId,issuer,bidId,bidOwner) = {
659+ let auctionType = getStringByKey(keyAuctionType(issuer, artId))
660+ if ((auctionType == auctionType1))
661+ then acceptBidNonTraditional(i, artId, issuer, bidId, bidOwner)
662+ else if ((auctionType == auctionType2))
663+ then acceptBidTraditional(i, artId, issuer, bidId, bidOwner)
664+ else throw((("Unknown auction type :" + auctionType) + ", please contact the admins"))
665+ }
666+
667+
668+
669+@Callable(i)
670+func cancelBid (artId,issuer,bidId) = {
671+ let auctionType = getStringByKey(keyAuctionType(issuer, artId))
672+ if ((auctionType == auctionType1))
673+ then cancelBidImpl(i, artId, issuer, bidId)
674+ else cancelBidImplTraditional(i, artId, issuer, bidId)
675+ }
676+
677+

github/deemru/w8io/169f3d6 
61.66 ms