tx · BTWWj5ACCiSgaVYEYa2NnMrWD4jxqBHnKo9SeHinVfeL

3MyRsssByY6ZDZxzXEFK7sgFYbtXAxajmJp:  -0.01000000 Waves

2021.08.31 21:58 [1682909] smart account 3MyRsssByY6ZDZxzXEFK7sgFYbtXAxajmJp > SELF 0.00000000 Waves

{ "type": 13, "id": "BTWWj5ACCiSgaVYEYa2NnMrWD4jxqBHnKo9SeHinVfeL", "fee": 1000000, "feeAssetId": null, "timestamp": 1630436324249, "version": 2, "chainId": 84, "sender": "3MyRsssByY6ZDZxzXEFK7sgFYbtXAxajmJp", "senderPublicKey": "7mNS5bKoVK7u5db7PvrcUj25wxK6NvkMjqkMHjBKcpVb", "proofs": [ "4kUqJYBMr7EwGPBzwc3wyPCdNfP4FHA9GNjMUCwzK4zdaUFjLagrKHypmtP9aSBiXjduM4pQed8uE7re9t8BLFXC" ], "script": "base64:AAIFAAAAAAAADCMIAhIJCgcICAgICAgIEgkKBwgBAQgIAQESBAoCCAgSAwoBCBIECgIICBIGCgQICAgIEgUKAwgICBoOCgJhMRIIdW5pdFRlc3QaDwoCYTISCW9yYWNsZUZlZRoRCgJhMxILZmVlUmVjZWl2ZXIaDgoCYTQSCHVzZXJEYXBwGhMKAmE1Eg13aGl0ZWxpc3REYXBwGhMKAmE2Eg1zY29uZXhBc3NldElkGgsKAmE3EgVvd25lchoYCgJhOBISc2NvbmV4Rmlyc3RTZWxsQ3V0GhEKAmE5EgtkYXBwUnVubmluZxoUCgJiMRIObWFpbnRlbmFuY2VNU0caEwoCYjISDXVzZXJTdXNwZW5kZWQaEQoCYjMSC3VzZXJSZW1vdmVkGhYKAmI0EhB1c2VyVW5yZWdpc3RlcmVkGhEKAmI1Egt1c2VyQWxsb3dlZBoSCgJiNhIMYXVjdGlvblR5cGUxGhIKAmI3EgxhdWN0aW9uVHlwZTIaFAoCYjgSDmdldFN0cmluZ0J5S2V5GgkKAmI5EgNrZXkaHwoCYzESGWdldEludGVnZXJCeUtleUZyb21PcmFjbGUaFQoCYzISD2dldEludGVnZXJCeUtleRoUCgJjMxIOY2hlY2tXaGl0ZWxpc3QaFQoCYzQSD2dldEJvb2xlYW5CeUtleRoTCgJjNRINa2V5VXNlclN0YXR1cxoMCgJjNhIGY2FsbGVyGg0KAmM3EgdrZXlEYXRlGgsKAmM4EgVhcnRJZBoNCgJjORIHa2V5TmFtZRoNCgJkMRIHa2V5RGVzYxoTCgJkMhINa2V5RGlzcGxheUNpZBoQCgJkMxIKa2V5TWF4TWludBoRCgJkNBILa2V5TWluUHJpY2UaGAoCZDUSEmtleUhpZ2hlc3RCaWRCaWRJZBoOCgJkNhIIa2V5QmlkSWQaCwoCZDcSBWJpZElkGhEKAmQ4EgtrZXlEdXJhdGlvbhoSCgJkORIMa2V5RW5kSGVpZ2h0GhQKAmUxEg5rZXlBdWN0aW9uVHlwZRoPCgJlMhIJa2V5SXNzdWVkGhIKAmUzEgxLZXlOZnRJc3N1ZXIaCwoCZTQSBW5mdElkGg8KAmU1EglrZXlPblNhbGUaFAoCZTYSDmtleUVudGl0bGVtZW50Gg0KAmU3EgdrZXlUYWdzGg0KAmU4EgdrZXlUeXBlGg4KAmU5EghrZXlQcmljZRoYCgJmMRISa2V5QXNzZXRJZEFjY2VwdGVkGhcKAmYyEhFrZXlIYXNoQnlUeGlkQWRkchoKCgJmMxIEdHhpZBoUCgJmNBIOa2V5T3duZXJCeUhhc2gaEAoCZjUSCnNoYTI1Nkhhc2gaGAoCZjYSEmtleVR4aWRCeUhhc2hPd25lchofCgJmNxIZY3VycmVudENlcnRpZmljYXRpb25QcmljZRoWCgJmOBIQZ2V0QW1vdW50QnlCaWRJZBogCgJmORIaZ2V0QW1vdW50SGlnaGVzdEJpZEJ5QXJ0SWQaFAoCZzESDnZhbGlkYXRlU3RyaW5nGgkKAmcyEgNzdHIaCQoCZzMSA21heBoSCgJnNBIMdmFsaWRhdGVVc2VyGhAKAmc1Egp1c2VyU3RhdHVzGhkKAmc2EhN2YWxpZGF0ZUFydHdvcmtEYXRhGhAKAmc3EgpjaWREaXNwbGF5GgoKAmc4EgRuYW1lGhEKAmc5EgtkZXNjcmlwdGlvbhoKCgJoMRIEdGFncxoPCgJoMhIJY2hlY2tVc2VyGg8KAmgzEglpc1BheW1lbnQaBwoCaDQSAWkaDQoCaDUSB3BheW1lbnQaDAoCaDYSBmFtb3VudBoVCgJoNxIPdmFsaWRhdGVQYXltZW50GhAKAmg4Egp0MDg5ODI5MDE4Gg0KAmg5Egdhc3NldElkGhoKAmkxEhR2YWxpZGF0ZVByaWNlQXNzZXRJZBoSCgJpMhIMcHJpY2VBc3NldElkGhIKAmkzEgxhcnR3b3JrUHJpY2UaEAoCaTQSCnQwOTYxMTk2NDcaFgoCaTUSEGFjY2VwdGVkQXNzZXRJZHMaFQoCaTYSD3ZhbGlkYXRlTWluU2VsbBoLCgJpNxIFcHJpY2UaEwoCaTgSDW1pblNlbGxTY29uZXgaEwoCaTkSDWdldEJpZEFzc2V0SWQaHAoCajESFmdldFByaWNlQXNzZXRJZEZyb21CaWQaEAoCajISCmJpZERhdGFLZXkaDQoCajMSB2JpZERhdGEaEAoCajQSCmJpZERhdGFBcnIaDwoCajUSCWJpZEFtb3VudBoQCgJqNhIKYmlkQXNzZXRJZBoSCgJqNxIMaWRDYWxsZXJEYXRlGhAKAmo4EgpnZXRBcnREYXRhGgwKAmo5EgZpc3N1ZXIaCwoCazESBWlzQmlkGhQKAmsyEg5jYWxsZXJJc0lzc3VlchoOCgJrMxIIdG90YWxORlQaEQoCazQSC2FydHdvcmtOYW1lGg4KAms1Eghpc09uU2FsZRoQCgJrNhIKYW1vdW50U29sZBoQCgJrNxIKbWF4Q2FuU2VsbBoQCgJrOBIKZ2V0QmlkRGF0YRoOCgJrORIIYmlkT3duZXIaEgoCbDESDHQwMTM1MTkxMzY0OBoXCgJsMhIRZ2V0Q29tbWlzc2lvbkRhdGEaEwoCbDMSDWlzV2hpdGVsaXN0ZWQaCQoCbDQSA2N1dBoVCgJsNRIPYW1vdW50Rm9yU2NvbmV4GhYKAmw2EhBhbW91bnRGb3JDcmVhdG9yGhMKAmw3Eg1uZXdBbW91bnRTb2xkGhIKAmw4EgxnZXRJc3N1ZURhdGEaDwoCbDkSCWlzc3VlTWV0YRoOCgJtMRIIaXNzdWVORlQaCwoCbTISBWlkTkZUGhAKAm0zEgpzZWxsU3RhdHVzGhAKAm00EgpyZWNlaXZlTkZUGhIKAm01EgxnZXRCaWRLZXlWYWwaCgoCbTYSBGRhdGUaEAoCbTcSCmFzc2V0SWRCaWQaDwoCbTgSCWJpZERlbE9sZBoPCgJtORIJYmlkVXBkYXRlGg0KAm4xEgdidXlNaW50GhAKAm4yEgpjYWxsZXJEYXRhGggKAm4zEgJpZBoNCgJuNBIHYXJ0RGF0YRoTCgJuNRINY29tbWlzaW9uRGF0YRoQCgJuNhIKaXNzdWVyRGF0YRoRCgJuNxILYmlkS2V5VmFsdWUaDQoCbjgSB3NvbGRLZXkaDwoCbjkSCXNvbGRWYWx1ZRoOCgJvMRIIc29sZERhdGEaDAoCbzISBmJ1eVJlcxoaCgJvMxIUc2V0QmlkTm9uVHJhZGl0aW9uYWwaEgoCbzQSDHQwMjc3MDkyNzc0NxoSCgJvNRIMdDAyNzc1MjI3Nzg4GgwKAm82EgZiaWROYnIaFwoCbzcSEXNldEJpZFRyYWRpdGlvbmFsGg8KAm84EgllbmRIZWlnaHQaEAoCbzkSCmhpZ2hlc3RCaWQaEQoCcDESC2NhbGxkZXJEYXRhGhIKAnAyEgxpc1BheW1lbnRWYXIaHQoCcDMSF2FjY2VwdEJpZE5vblRyYWRpdGlvbmFsGhQKAnA0Eg5yZXN0YXJ0QXVjdGlvbhoSCgJwNRIMb2xkRW5kSGVpZ2h0Gg4KAnA2EghkdXJhdGlvbhoaCgJwNxIUYWNjZXB0QmlkVHJhZGl0aW9uYWwaEgoCcDgSDGhpZ2hlc3RCaWRJZBoRCgJwORILYnV5TWludERhdGEaGAoCcTESEnJlc3RhcnRBdWN0aW9uRGF0YRoTCgJxMhINY2FuY2VsQmlkSW1wbBoSCgJxMxIMdDAyODk0MjI5MDk0Gg8KAnE0EgliaWRTdGF0dXMaHgoCcTUSGGNhbmNlbEJpZEltcGxUcmFkaXRpb25hbBoKCgJxNhIEdHlwZRoRCgJxNxILZW50aXRsZW1lbnQaEgoCcTgSDHQwMTc3NDAxNzc4MRoVCgJxORIPdmFsaWRhdGVBcnR3b3JrGhIKAnIxEgx0MDE4MTcwMTgyMTIaEAoCcjISCmVudHJ5RXhpc3QaDwoCcjMSCWhhc2hFeGlzdBoNCgJyNBIHbWF4TWludBoRCgJyNRILYXVjdGlvblR5cGUaDAoCcjYSBm1pbkJpZBoSCgJyNxIMdDAyNTcxNDI1NzQ3GgsKAnI4EgVlbnRyeQAAAEcAAAAAAmExBwAAAAACYTIJAQAAAAV2YWx1ZQAAAAEJAAQmAAAAAQIAAAAjM01wWlFqekdvZ21pZmNFS2U4bURkNnJpYkw3bnhUOUFDeWUAAAAAAmEzAgAAACMzTjY1eExxOEpjQ2VhRWlSMVRKUTdkQnFYQnZFeTZFNDhXegAAAAACYTQJAQAAAAV2YWx1ZQAAAAEJAAQmAAAAAQIAAAAjM045Y1FnWkZQSEhWdTh3cXNuMkRrUUZlaGczaDhDTmlvb0EAAAAAAmE1CQEAAAAFdmFsdWUAAAABCQAEJgAAAAECAAAAIzNOOXhaWUdwek1GRFh2WHVjdG1VNnpWOHFTem0yWmZGMzFmAAAAAAJhNgEAAAAguobtEHSno8B/SPo/hvAGB5K2lpZqO0oRcOvqVeCS0zMAAAAAAmE3AgAAACMzTjFEaHE1Wlp5b29qUWlzdVRMdXNZam5HaXNxcnhEd0dMeQAAAAACYTgAAAAAAAAAAJYAAAAAAmE5CQEAAAALdmFsdWVPckVsc2UAAAACCQAEGwAAAAIFAAAAAmE0AgAAABRjb25mX2RhcHBfaXNfcnVubmluZwYAAAAAAmIxCQEAAAALdmFsdWVPckVsc2UAAAACCQAEHQAAAAIF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", "height": 1682909, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: HEWh32tkNktUHLxs7teH121WBHXNdKnK1Tq1bWmExozm Next: 4d5f7c2sSBSbq9LAwRoqoZzYHQCZBBFcLADPcMwQs813 Diff:
OldNewDifferences
207207 else false)
208208 then throw("Wrong asset id")
209209 else if ((artworkPrice != amount))
210- then throw("Payment don't match")
210+ then throw(((("Payment don't match " + toString(artworkPrice)) + " ") + toString(amount)))
211211 else $Tuple2(amount, assetId)
212212 }
213213
265265 else {
266266 let isOnSale = getBooleanByKey(keyOnSale(issuer, artId))
267267 let amountSold = getIntegerByKey(keyIssued(issuer, artId))
268- let artworkPrice = if (callerIsIssuer)
269- then (currentCertificationPrice * 2)
270- else getIntegerByKey(keyPrice(issuer, artId))
268+ let artworkPrice = valueOrElse(getIntegerByKey(keyPrice(issuer, artId)), (currentCertificationPrice * 2))
271269 let priceAssetId = if (callerIsIssuer)
272270 then toBase58String(sconexAssetId)
273271 else getStringByKey(keyAssetIdAccepted(issuer, artId))
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let unitTest = false
55
66 let oracleFee = value(addressFromString("3MpZQjzGogmifcEKe8mDd6ribL7nxT9ACye"))
77
88 let feeReceiver = "3N65xLq8JcCeaEiR1TJQ7dBqXBvEy6E48Wz"
99
1010 let userDapp = value(addressFromString("3N9cQgZFPHHVu8wqsn2DkQFehg3h8CNiooA"))
1111
1212 let whitelistDapp = value(addressFromString("3N9xZYGpzMFDXvXuctmU6zV8qSzm2ZfF31f"))
1313
1414 let sconexAssetId = base58'DZ8ALmuLeSZ2ocsYLAcL9MiXBFDbMNQG9LtitREyU5ZC'
1515
1616 let owner = "3N1Dhq5ZZyoojQisuTLusYjnGisqrxDwGLy"
1717
1818 let sconexFirstSellCut = 150
1919
2020 let dappRunning = valueOrElse(getBoolean(userDapp, "conf_dapp_is_running"), true)
2121
2222 let maintenanceMSG = valueOrElse(getString(userDapp, "conf_maintenance_msg"), "")
2323
2424 let userSuspended = "SUSPENDED"
2525
2626 let userRemoved = "REMOVED"
2727
2828 let userUnregistered = "UNREGISTERED"
2929
3030 let userAllowed = "ALLOWED"
3131
3232 let auctionType1 = "BIDTYPE"
3333
3434 let auctionType2 = "TRADITIONAL"
3535
3636 func getStringByKey (key) = valueOrElse(getString(this, key), "")
3737
3838
3939 func getIntegerByKeyFromOracle (key) = valueOrErrorMessage(getInteger(oracleFee, key), "Integer undefine or 0 in oracle")
4040
4141
4242 func getIntegerByKey (key) = valueOrElse(getInteger(this, key), 0)
4343
4444
4545 func checkWhitelist (key) = valueOrElse(getInteger(whitelistDapp, key), 0)
4646
4747
4848 func getBooleanByKey (key) = valueOrElse(getBoolean(this, key), false)
4949
5050
5151 func keyUserStatus (caller) = ("user_status_" + caller)
5252
5353
5454 func keyDate (caller,artId) = ((("art_date_" + artId) + "_") + caller)
5555
5656
5757 func keyName (caller,artId) = ((("art_name_" + artId) + "_") + caller)
5858
5959
6060 func keyDesc (caller,artId) = ((("art_desc_" + artId) + "_") + caller)
6161
6262
6363 func keyDisplayCid (caller,artId) = ((("art_display_cid_" + artId) + "_") + caller)
6464
6565
6666 func keyMaxMint (caller,artId) = ((("art_maxmint_" + artId) + "_") + caller)
6767
6868
6969 func keyMinPrice (caller,artId) = ((("art_minprice_" + artId) + "_") + caller)
7070
7171
7272 func keyHighestBidBidId (artId) = ("art_highestBidBidId_" + artId)
7373
7474
7575 func keyBidId (bidId) = ("bid_" + bidId)
7676
7777
7878 func keyDuration (caller,artId) = ((("art_duration_" + artId) + "_") + caller)
7979
8080
8181 func keyEndHeight (caller,artId) = ((("art_endheight_" + artId) + "_") + caller)
8282
8383
8484 func keyAuctionType (caller,artId) = ((("art_auctiontype_" + artId) + "_") + caller)
8585
8686
8787 func keyIssued (caller,artId) = ((("art_issued_" + artId) + "_") + caller)
8888
8989
9090 func KeyNftIssuer (nftId) = ("nft_issued_" + nftId)
9191
9292
9393 func keyOnSale (caller,artId) = ((("art_onsale_" + artId) + "_") + caller)
9494
9595
9696 func keyEntitlement (caller,artId) = ((("art_entitlement_" + artId) + "_") + caller)
9797
9898
9999 func keyTags (caller,artId) = ((("art_tags_" + artId) + "_") + caller)
100100
101101
102102 func keyType (caller,artId) = ((("art_type_" + artId) + "_") + caller)
103103
104104
105105 func keyPrice (caller,artId) = ((("art_price_" + artId) + "_") + caller)
106106
107107
108108 func keyAssetIdAccepted (caller,artId) = ((("art_assetAccepted_" + artId) + "_") + caller)
109109
110110
111111 func keyHashByTxidAddr (caller,txid) = ((("get_hashbytxidaddr_" + txid) + "_") + caller)
112112
113113
114114 func keyOwnerByHash (sha256Hash) = ("get_owner_by_hash_" + sha256Hash)
115115
116116
117117 func keyTxidByHashOwner (sha256Hash,caller) = ("get_txid_by_hash_owner_" + toBase58String(sha256_16Kb(toBytes((sha256Hash + caller)))))
118118
119119
120120 let currentCertificationPrice = getIntegerByKeyFromOracle(("certification_fee_" + toBase58String(sconexAssetId)))
121121
122122 func getAmountByBidId (bidId) = valueOrElse(getIntegerByKey(keyBidId(bidId)), 0)
123123
124124
125125 func getAmountHighestBidByArtId (artId) = {
126126 let bidId = valueOrElse(getStringByKey(keyHighestBidBidId(artId)), "")
127127 if ((bidId == ""))
128128 then 0
129129 else getAmountByBidId(bidId)
130130 }
131131
132132
133133 func validateString (str,max) = if ((size(str) == 0))
134134 then throw("Field cannot be is empty")
135135 else if ((size(str) > max))
136136 then throw((str + " is too long"))
137137 else true
138138
139139
140140 func validateUser (caller) = {
141141 let userStatus = valueOrElse(getString(userDapp, keyUserStatus(caller)), userUnregistered)
142142 if (if ((userStatus == userUnregistered))
143143 then true
144144 else (userStatus == userAllowed))
145145 then "Register this account first with 'Account' tab"
146146 else if ((userStatus == userSuspended))
147147 then "Account suspended"
148148 else if ((userStatus == userRemoved))
149149 then "Account removed"
150150 else ""
151151 }
152152
153153
154154 func validateArtworkData (caller,cidDisplay,name,description,tags) = {
155155 let checkUser = validateUser(caller)
156156 if ((checkUser != ""))
157157 then throw(checkUser)
158158 else if ((size(cidDisplay) == 0))
159159 then throw("Display CID cannot be empty")
160160 else if (!(validateString(name, 100)))
161161 then throw("100 Char. max name")
162162 else if (!(validateString(description, 1000)))
163163 then throw("1000 Char. max description")
164164 else if ((size(split(tags, ",")) > 5))
165165 then throw("5 tags max.")
166166 else ""
167167 }
168168
169169
170170 func isPayment (i) = if ((size(i.payments) == 0))
171171 then throw("No payment attached")
172172 else {
173173 let payment = value(i.payments[0])
174174 let amount = value(payment.amount)
175175 $Tuple2(payment, amount)
176176 }
177177
178178
179179 func validatePayment (i) = {
180180 let t089829018 = isPayment(i)
181181 let payment = t089829018._1
182182 let amount = t089829018._2
183183 let assetId = if (if (isDefined(payment.assetId))
184184 then (payment.assetId == sconexAssetId)
185185 else false)
186186 then payment.assetId
187187 else throw("Only Sconex token accepted as transaction fee")
188188 if ((amount != currentCertificationPrice))
189189 then throw(("Payment amount should be " + toString(currentCertificationPrice)))
190190 else $Tuple2(amount, assetId)
191191 }
192192
193193
194194 func validatePriceAssetId (i,priceAssetId,artworkPrice) = {
195195 let t096119647 = isPayment(i)
196196 let payment = t096119647._1
197197 let amount = t096119647._2
198198 let assetId = if (!(isDefined(payment.assetId)))
199199 then throw("Wrong asset id")
200200 else if (if ((size(priceAssetId) > 0))
201201 then (toBase58String(value(payment.assetId)) == priceAssetId)
202202 else false)
203203 then payment.assetId
204204 else throw("Wrong asset id")
205205 if (if ((assetId == unit))
206206 then (priceAssetId != "")
207207 else false)
208208 then throw("Wrong asset id")
209209 else if ((artworkPrice != amount))
210- then throw("Payment don't match")
210+ then throw(((("Payment don't match " + toString(artworkPrice)) + " ") + toString(amount)))
211211 else $Tuple2(amount, assetId)
212212 }
213213
214214
215215 func acceptedAssetIds (assetId) = if ((assetId != toBase58String(sconexAssetId)))
216216 then throw("Only Sconex accepted")
217217 else true
218218
219219
220220 func validateMinSell (assetId,price) = {
221221 let minSellSconex = if (unitTest)
222222 then 1
223223 else (currentCertificationPrice * 2)
224224 if (if (if ((assetId == toBase58String(sconexAssetId)))
225225 then (minSellSconex > price)
226226 else false)
227227 then (price != 0)
228228 else false)
229229 then throw(("Wrong minimum sell price " + toString(minSellSconex)))
230230 else true
231231 }
232232
233233
234234 func getBidAssetId (assetId) = if ((assetId == "WAVES"))
235235 then throw("Only sconex is accepted!")
236236 else fromBase58String(assetId)
237237
238238
239239 func getPriceAssetIdFromBid (bidDataKey) = {
240240 let bidData = getStringByKey((bidDataKey + "_OPEN"))
241241 if ((bidData == ""))
242242 then throw("Bid not found")
243243 else {
244244 let bidDataArr = split(bidData, "_")
245245 let bidAmount = parseIntValue(bidDataArr[1])
246246 let bidAssetId = getBidAssetId(bidDataArr[0])
247247 if ((0 >= bidAmount))
248248 then throw("Wrong amount")
249249 else $Tuple2(bidAmount, bidAssetId)
250250 }
251251 }
252252
253253
254254 func idCallerDate (i) = if (!(dappRunning))
255255 then throw(maintenanceMSG)
256256 else $Tuple3(toBase58String(i.transactionId), toBase58String(i.caller.bytes), lastBlock.timestamp)
257257
258258
259259 func getArtData (i,issuer,artId,isBid) = {
260260 let callerIsIssuer = (toBase58String(i.caller.bytes) == issuer)
261261 let totalNFT = getIntegerByKey("total_nft_issued")
262262 let artworkName = getStringByKey(keyName(issuer, artId))
263263 if ((artworkName == ""))
264264 then throw("Art doesn't exist")
265265 else {
266266 let isOnSale = getBooleanByKey(keyOnSale(issuer, artId))
267267 let amountSold = getIntegerByKey(keyIssued(issuer, artId))
268- let artworkPrice = if (callerIsIssuer)
269- then (currentCertificationPrice * 2)
270- else getIntegerByKey(keyPrice(issuer, artId))
268+ let artworkPrice = valueOrElse(getIntegerByKey(keyPrice(issuer, artId)), (currentCertificationPrice * 2))
271269 let priceAssetId = if (callerIsIssuer)
272270 then toBase58String(sconexAssetId)
273271 else getStringByKey(keyAssetIdAccepted(issuer, artId))
274272 let maxCanSell = getIntegerByKey(keyMaxMint(issuer, artId))
275273 if (if (if (!(isBid))
276274 then !(callerIsIssuer)
277275 else false)
278276 then if (if ((0 >= artworkPrice))
279277 then true
280278 else !(isOnSale))
281279 then true
282280 else (0 >= maxCanSell)
283281 else false)
284282 then throw("Art not for sale")
285283 else if (if (if (!(isBid))
286284 then callerIsIssuer
287285 else false)
288286 then (0 >= maxCanSell)
289287 else false)
290288 then throw("Max issuable not set")
291289 else $Tuple7(totalNFT, artworkName, amountSold, artworkPrice, priceAssetId, maxCanSell, isOnSale)
292290 }
293291 }
294292
295293
296294 func getBidData (i,caller,issuer,artId,bidOwner,bidId,priceAssetId,artworkPrice,isBid) = {
297295 let checkUser = validateUser(issuer)
298296 if (if (isBid)
299297 then (checkUser != "")
300298 else false)
301299 then throw(checkUser)
302300 else {
303301 let bidDataKey = ((((((("bid_" + artId) + "_") + issuer) + "_") + bidOwner) + "_") + bidId)
304302 let t01351913648 = if (isBid)
305303 then getPriceAssetIdFromBid(bidDataKey)
306304 else validatePriceAssetId(i, priceAssetId, artworkPrice)
307305 let amount = t01351913648._1
308306 let assetId = t01351913648._2
309307 $Tuple3(bidDataKey, amount, assetId)
310308 }
311309 }
312310
313311
314312 func getCommissionData (issuer,assetId,amount,amountSold,maxCanSell) = {
315313 let isWhitelisted = checkWhitelist(issuer)
316314 let cut = if ((isWhitelisted > height))
317315 then 0
318316 else if ((assetId == sconexAssetId))
319317 then sconexFirstSellCut
320318 else throw("Only Sconex is accepted!")
321319 let amountForSconex = fraction(amount, cut, 1000)
322320 let amountForCreator = (amount - amountForSconex)
323321 if ((amountSold == maxCanSell))
324322 then throw("Art sold out")
325323 else {
326324 let newAmountSold = (amountSold + 1)
327325 $Tuple3(amountForSconex, amountForCreator, newAmountSold)
328326 }
329327 }
330328
331329
332330 func getIssueData (issuer,artId,artworkName,newAmountSold,maxCanSell,totalNFT,caller,bidOwner,bidId,i,isOnSale) = {
333331 let issueMeta = ((((((((("Creator: " + issuer) + ",ArtID: ") + artId) + ",Artwork name: ") + artworkName) + ",Issue: ") + toString(newAmountSold)) + "/") + toString(maxCanSell))
334332 let issueNFT = Issue(("SCONEX_" + toString((totalNFT + 1))), issueMeta, 1, 0, false)
335333 let idNFT = calculateAssetId(issueNFT)
336334 let sellStatus = if (if ((newAmountSold == maxCanSell))
337335 then true
338336 else !(isOnSale))
339337 then false
340338 else true
341339 let receiveNFT = if ((bidOwner != ""))
342340 then addressFromStringValue(bidOwner)
343341 else i.caller
344342 $Tuple4(issueNFT, idNFT, sellStatus, receiveNFT)
345343 }
346344
347345
348346 func getBidKeyVal (assetId,bidDataKey,date) = {
349347 let assetIdBid = if (!(isDefined(assetId)))
350348 then throw("Only sconex is accepted")
351349 else toBase58String(value(assetId))
352350 let bidData = getStringByKey((bidDataKey + "_OPEN"))
353351 let bidDelOld = DeleteEntry((bidDataKey + "_OPEN"))
354352 let bidUpdate = StringEntry((bidDataKey + "_CLOSED"), ((bidData + "_") + toString(date)))
355353 $Tuple3(assetIdBid, bidDelOld, bidUpdate)
356354 }
357355
358356
359357 func buyMint (i,artId,issuer,bidId,bidOwner,isBid) = {
360358 let callerData = idCallerDate(i)
361359 let id = callerData._1
362360 let caller = callerData._2
363361 let date = callerData._3
364362 let artData = getArtData(i, issuer, artId, isBid)
365363 let totalNFT = artData._1
366364 let artworkName = artData._2
367365 let amountSold = artData._3
368366 let artworkPrice = artData._4
369367 let priceAssetId = artData._5
370368 let maxCanSell = artData._6
371369 let isOnSale = artData._7
372370 let bidData = getBidData(i, caller, issuer, artId, bidOwner, bidId, priceAssetId, artworkPrice, isBid)
373371 let bidDataKey = bidData._1
374372 let amount = bidData._2
375373 let assetId = bidData._3
376374 let commisionData = getCommissionData(issuer, value(assetId), amount, amountSold, maxCanSell)
377375 let amountForSconex = commisionData._1
378376 let amountForCreator = commisionData._2
379377 let newAmountSold = commisionData._3
380378 let issuerData = getIssueData(issuer, artId, artworkName, newAmountSold, maxCanSell, totalNFT, caller, bidOwner, bidId, i, isOnSale)
381379 let issueNFT = issuerData._1
382380 let idNFT = issuerData._2
383381 let sellStatus = issuerData._3
384382 let receiveNFT = issuerData._4
385383 let bidKeyValue = getBidKeyVal(assetId, bidDataKey, date)
386384 let assetIdBid = bidKeyValue._1
387385 let bidDelOld = bidKeyValue._2
388386 let bidUpdate = bidKeyValue._3
389387 let soldKey = ((((((("art_sold_" + toString(newAmountSold)) + "_of_") + toString(maxCanSell)) + "_") + artId) + "_") + issuer)
390388 let soldValue = if (!(isBid))
391389 then ((((((((((caller + "_") + toString(date)) + "_") + id) + "_") + toString(artworkPrice)) + "_") + priceAssetId) + "_") + toBase58String(idNFT))
392390 else ((((((((((toString(receiveNFT) + "_") + toString(date)) + "_") + id) + "_") + toString(amount)) + "_") + assetIdBid) + "_") + toBase58String(idNFT))
393391 let soldData = StringEntry(soldKey, soldValue)
394392 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)]
395393 if (isBid)
396394 then (((buyRes :+ soldData) :+ bidUpdate) :+ bidDelOld)
397395 else soldData :: buyRes
398396 }
399397
400398
401399 func setBidNonTraditional (i,artId,issuer) = {
402400 let t02770927747 = idCallerDate(i)
403401 let id = t02770927747._1
404402 let caller = t02770927747._2
405403 let date = t02770927747._3
406404 let t02775227788 = isPayment(i)
407405 let payment = t02775227788._1
408406 let amount = t02775227788._2
409407 let assetId = if (!(isDefined(payment.assetId)))
410408 then throw("Only sconex is accepted!")
411409 else toBase58String(value(payment.assetId))
412410 let bidNbr = getIntegerByKey(("current_bidamount_" + artId))
413411 if (!(acceptedAssetIds(assetId)))
414412 then throw("asset not accepted")
415413 else if (!(validateMinSell(assetId, amount)))
416414 then throw("Wrong min sell")
417415 else {
418416 let amountSold = getIntegerByKey(keyIssued(issuer, artId))
419417 let maxCanSell = getIntegerByKey(keyMaxMint(issuer, artId))
420418 if ((0 >= maxCanSell))
421419 then throw("No max edition set for this artwork")
422420 else if ((amountSold >= maxCanSell))
423421 then throw("Sold out, you cannot bid")
424422 else [StringEntry((((((((("bid_" + artId) + "_") + issuer) + "_") + caller) + "_") + id) + "_OPEN"), ((((assetId + "_") + toString(amount)) + "_") + toString(date))), IntegerEntry(("current_bidamount_" + artId), (bidNbr + 1))]
425423 }
426424 }
427425
428426
429427 func setBidTraditional (i,artId,issuer) = {
430428 let endHeight = getIntegerByKey(keyEndHeight(issuer, artId))
431429 let highestBid = getAmountHighestBidByArtId(artId)
432430 if ((height > endHeight))
433431 then throw("This auction is finished already!")
434432 else {
435433 let callderData = idCallerDate(i)
436434 let id = callderData._1
437435 let caller = callderData._2
438436 let date = callderData._3
439437 let isPaymentVar = isPayment(i)
440438 let payment = isPaymentVar._1
441439 let amount = isPaymentVar._2
442440 if ((highestBid >= amount))
443441 then throw(("Please place a bid higher then: " + toString(highestBid)))
444442 else {
445443 let assetId = if (!(isDefined(payment.assetId)))
446444 then throw("Only sconex is accepted!")
447445 else toBase58String(value(payment.assetId))
448446 let bidNbr = getIntegerByKey(("current_bidamount_" + artId))
449447 if (!(acceptedAssetIds(assetId)))
450448 then throw("asset not accepted")
451449 else if (!(validateMinSell(assetId, amount)))
452450 then throw("Wrong min sell")
453451 else {
454452 let amountSold = getIntegerByKey(keyIssued(issuer, artId))
455453 let maxCanSell = getIntegerByKey(keyMaxMint(issuer, artId))
456454 if ((0 >= maxCanSell))
457455 then throw("No max edition set for this artwork")
458456 else if ((amountSold >= maxCanSell))
459457 then throw("Sold out, you cannot bid")
460458 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)]
461459 }
462460 }
463461 }
464462 }
465463
466464
467465 func acceptBidNonTraditional (i,artId,issuer,bidId,bidOwner) = {
468466 let caller = toBase58String(i.caller.bytes)
469467 if ((caller != issuer))
470468 then throw("You cannot do this action")
471469 else buyMint(i, artId, issuer, bidId, bidOwner, true)
472470 }
473471
474472
475473 func restartAuction (artId,issuer) = {
476474 let amountSold = getIntegerByKey(keyIssued(issuer, artId))
477475 let maxCanSell = getIntegerByKey(keyMaxMint(issuer, artId))
478476 let oldEndHeight = getIntegerByKey(keyEndHeight(issuer, artId))
479477 let duration = getIntegerByKey(keyDuration(issuer, artId))
480478 let endHeight = (duration + height)
481479 if ((height > oldEndHeight))
482480 then if ((amountSold == maxCanSell))
483481 then throw("Can't restart auction, max amount sold")
484482 else [IntegerEntry(keyEndHeight(issuer, artId), endHeight), DeleteEntry(keyHighestBidBidId(artId))]
485483 else throw("Previous auction isn't completed yet")
486484 }
487485
488486
489487 func acceptBidTraditional (i,artId,issuer,bidId,bidOwner) = {
490488 let endHeight = getIntegerByKey(keyEndHeight(issuer, artId))
491489 let highestBidId = getStringByKey(keyHighestBidBidId(artId))
492490 if ((height > endHeight))
493491 then if ((bidId == highestBidId))
494492 then {
495493 let buyMintData = buyMint(i, artId, issuer, bidId, bidOwner, true)
496494 let restartAuctionData = restartAuction(artId, issuer)
497495 (restartAuctionData ++ buyMintData)
498496 }
499497 else throw("This is not the winning bid!")
500498 else throw("This auction is not yet finished!")
501499 }
502500
503501
504502 func cancelBidImpl (i,artId,issuer,bidId) = {
505503 let t02894229094 = idCallerDate(i)
506504 let id = t02894229094._1
507505 let caller = t02894229094._2
508506 let date = t02894229094._3
509507 let bidNbr = getIntegerByKey(("current_bidamount_" + artId))
510508 let bidDataKey = ((((((("bid_" + artId) + "_") + issuer) + "_") + caller) + "_") + bidId)
511509 let bidData = getStringByKey((bidDataKey + "_OPEN"))
512510 if ((bidData == ""))
513511 then throw("Bid not found")
514512 else {
515513 let bidDataArr = split(bidData, "_")
516514 let assetId = getBidAssetId(bidDataArr[0])
517515 let bidStatus = "CANCELED"
518516 [DeleteEntry((bidDataKey + "_OPEN")), StringEntry(((bidDataKey + "_") + bidStatus), ((bidData + "_") + toString(date))), IntegerEntry(("current_bidamount_" + artId), (bidNbr - 1)), ScriptTransfer(Address(fromBase58String(caller)), parseIntValue(bidDataArr[1]), assetId)]
519517 }
520518 }
521519
522520
523521 func cancelBidImplTraditional (i,artId,issuer,bidId) = {
524522 let t02894229094 = idCallerDate(i)
525523 let id = t02894229094._1
526524 let caller = t02894229094._2
527525 let date = t02894229094._3
528526 let bidNbr = getIntegerByKey(("current_bidamount_" + artId))
529527 let bidDataKey = ((((((("bid_" + artId) + "_") + issuer) + "_") + caller) + "_") + bidId)
530528 let bidData = getStringByKey((bidDataKey + "_OPEN"))
531529 if ((bidData == ""))
532530 then throw("Bid not found")
533531 else {
534532 let bidDataArr = split(bidData, "_")
535533 let assetId = getBidAssetId(bidDataArr[0])
536534 let bidStatus = "CANCELED"
537535 let bidAmount = parseIntValue(bidDataArr[1])
538536 let highestBidId = getStringByKey(keyHighestBidBidId(artId))
539537 if ((bidId == highestBidId))
540538 then throw("You can't cancel the highest bid!")
541539 else [DeleteEntry((bidDataKey + "_OPEN")), StringEntry(((bidDataKey + "_") + bidStatus), ((bidData + "_") + toString(date))), IntegerEntry(("current_bidamount_" + artId), (bidNbr - 1)), ScriptTransfer(Address(fromBase58String(caller)), bidAmount, assetId)]
542540 }
543541 }
544542
545543
546544 @Callable(i)
547545 func addArtwork (sha256Hash,name,description,tags,type,cidDisplay,entitlement) = {
548546 let t01774017781 = idCallerDate(i)
549547 let artId = t01774017781._1
550548 let caller = t01774017781._2
551549 let date = t01774017781._3
552550 let validateArtwork = validateArtworkData(caller, cidDisplay, name, description, tags)
553551 if ((validateArtwork != ""))
554552 then throw("Something went wrong!")
555553 else {
556554 let t01817018212 = validatePayment(i)
557555 let amount = t01817018212._1
558556 let assetId = t01817018212._2
559557 if (!(isDefined(amount)))
560558 then throw("Something went wrong")
561559 else {
562560 let entryExist = getStringByKey(keyTxidByHashOwner(sha256Hash, caller))
563561 if ((entryExist != ""))
564562 then throw("You already added it")
565563 else {
566564 let hashExist = getStringByKey(keyOwnerByHash(sha256Hash))
567565 if ((hashExist != ""))
568566 then throw("Hash already registered")
569567 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)]
570568 }
571569 }
572570 }
573571 }
574572
575573
576574
577575 @Callable(i)
578576 func sellArtwork (artId,price,maxMint,assetId,auctionType,minBid,duration) = {
579577 let t02571425747 = idCallerDate(i)
580578 let id = t02571425747._1
581579 let caller = t02571425747._2
582580 let artworkName = getStringByKey(keyName(caller, artId))
583581 if (!(containsElement([auctionType1, auctionType2], auctionType)))
584582 then throw("We dont know this auction type")
585583 else if ((artworkName == ""))
586584 then throw("This art doesn't match your account")
587585 else {
588586 let bidNbr = getIntegerByKey(("current_bidamount_" + artId))
589587 if (!(acceptedAssetIds(assetId)))
590588 then throw("Something went wrong!")
591589 else if (!(validateMinSell(assetId, price)))
592590 then throw("Something went wrong!")
593591 else {
594592 let checkUser = validateUser(caller)
595593 if ((checkUser != ""))
596594 then throw(checkUser)
597595 else {
598596 let amountSold = getIntegerByKey(keyIssued(caller, artId))
599597 let maxCanSell = getIntegerByKey(keyMaxMint(caller, artId))
600598 if ((maxMint > 10))
601599 then throw("10 editions max per artwork")
602600 else if (if ((amountSold != 0))
603601 then (amountSold == maxCanSell)
604602 else false)
605603 then throw("Max edition reached.")
606604 else if (if ((amountSold > 0))
607605 then (maxCanSell != maxMint)
608606 else false)
609607 then throw("Cannot change maximum issuable anymore")
610608 else if (if ((bidNbr > 0))
611609 then (maxCanSell != maxMint)
612610 else false)
613611 then throw("Cannot change maximum issuable with active orders")
614612 else {
615613 let sellStatus = if (if ((price > 0))
616614 then (maxMint > 0)
617615 else false)
618616 then true
619617 else false
620618 let endHeight = (duration + height)
621619 [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)]
622620 }
623621 }
624622 }
625623 }
626624 }
627625
628626
629627
630628 @Callable(i)
631629 func buyArtwork (artId,issuer) = buyMint(i, artId, issuer, "", "", false)
632630
633631
634632
635633 @Callable(i)
636634 func deleteEntry (entry) = {
637635 let caller = toString(addressFromPublicKey(i.callerPublicKey))
638636 if ((caller == owner))
639637 then [DeleteEntry(entry)]
640638 else throw("no")
641639 }
642640
643641
644642
645643 @Callable(i)
646644 func setBid (artId,issuer) = {
647645 let auctionType = getStringByKey(keyAuctionType(issuer, artId))
648646 if ((auctionType == auctionType1))
649647 then setBidNonTraditional(i, artId, issuer)
650648 else if ((auctionType == auctionType2))
651649 then setBidTraditional(i, artId, issuer)
652650 else throw((("Unknown auction type :" + auctionType) + ", please contact the admins"))
653651 }
654652
655653
656654
657655 @Callable(i)
658656 func acceptBid (artId,issuer,bidId,bidOwner) = {
659657 let auctionType = getStringByKey(keyAuctionType(issuer, artId))
660658 if ((auctionType == auctionType1))
661659 then acceptBidNonTraditional(i, artId, issuer, bidId, bidOwner)
662660 else if ((auctionType == auctionType2))
663661 then acceptBidTraditional(i, artId, issuer, bidId, bidOwner)
664662 else throw((("Unknown auction type :" + auctionType) + ", please contact the admins"))
665663 }
666664
667665
668666
669667 @Callable(i)
670668 func cancelBid (artId,issuer,bidId) = {
671669 let auctionType = getStringByKey(keyAuctionType(issuer, artId))
672670 if ((auctionType == auctionType1))
673671 then cancelBidImpl(i, artId, issuer, bidId)
674672 else cancelBidImplTraditional(i, artId, issuer, bidId)
675673 }
676674
677675

github/deemru/w8io/169f3d6 
129.43 ms