tx · 5k84zgtAxXdhCE7akNZsfP7c6f175TvMKt8KyKuz3Qct

3MrWNTqFcHBqb58Za1A5crQrMV5KJ5DYhtA:  -0.01000000 Waves

2021.08.31 20:22 [1682816] smart account 3MrWNTqFcHBqb58Za1A5crQrMV5KJ5DYhtA > SELF 0.00000000 Waves

{ "type": 13, "id": "5k84zgtAxXdhCE7akNZsfP7c6f175TvMKt8KyKuz3Qct", "fee": 1000000, "feeAssetId": null, "timestamp": 1630430566706, "version": 2, "chainId": 84, "sender": "3MrWNTqFcHBqb58Za1A5crQrMV5KJ5DYhtA", "senderPublicKey": "9abKuN1XmLjjire2feZH26PmcEWhEXxiHToWSmii3Gn2", "proofs": [ "65dtzk3N9C5dmqLdamJJoquKpcGtYQQwDgP35yyMhhURgEbpFyowjvMSDn2Z4cjxPCSoAbvUYbY5eFtQSAoRz2cH" ], "script": "base64:AAIFAAAAAAAADCMIAhIJCgcICAgICAgIEgkKBwgBAQgIAQESBAoCCAgSAwoBCBIECgIICBIGCgQICAgIEgUKAwgICBoOCgJhMRIIdW5pdFRlc3QaDwoCYTISCW9yYWNsZUZlZRoRCgJhMxILZmVlUmVjZWl2ZXIaDgoCYTQSCHVzZXJEYXBwGhMKAmE1Eg13aGl0ZWxpc3REYXBwGhMKAmE2Eg1zY29uZXhBc3NldElkGgsKAmE3EgVvd25lchoYCgJhOBISc2NvbmV4Rmlyc3RTZWxsQ3V0GhEKAmE5EgtkYXBwUnVubmluZxoUCgJiMRIObWFpbnRlbmFuY2VNU0caEwoCYjISDXVzZXJTdXNwZW5kZWQaEQoCYjMSC3VzZXJSZW1vdmVkGhYKAmI0EhB1c2VyVW5yZWdpc3RlcmVkGhEKAmI1Egt1c2VyQWxsb3dlZBoSCgJiNhIMYXVjdGlvblR5cGUxGhIKAmI3EgxhdWN0aW9uVHlwZTIaFAoCYjgSDmdldFN0cmluZ0J5S2V5GgkKAmI5EgNrZXkaHwoCYzESGWdldEludGVnZXJCeUtleUZyb21PcmFjbGUaFQoCYzISD2dldEludGVnZXJCeUtleRoUCgJjMxIOY2hlY2tXaGl0ZWxpc3QaFQoCYzQSD2dldEJvb2xlYW5CeUtleRoTCgJjNRINa2V5VXNlclN0YXR1cxoMCgJjNhIGY2FsbGVyGg0KAmM3EgdrZXlEYXRlGgsKAmM4EgVhcnRJZBoNCgJjORIHa2V5TmFtZRoNCgJkMRIHa2V5RGVzYxoTCgJkMhINa2V5RGlzcGxheUNpZBoQCgJkMxIKa2V5TWF4TWludBoRCgJkNBILa2V5TWluUHJpY2UaGAoCZDUSEmtleUhpZ2hlc3RCaWRCaWRJZBoOCgJkNhIIa2V5QmlkSWQaCwoCZDcSBWJpZElkGhEKAmQ4EgtrZXlEdXJhdGlvbhoSCgJkORIMa2V5RW5kSGVpZ2h0GhQKAmUxEg5rZXlBdWN0aW9uVHlwZRoPCgJlMhIJa2V5SXNzdWVkGhIKAmUzEgxLZXlOZnRJc3N1ZXIaCwoCZTQSBW5mdElkGg8KAmU1EglrZXlPblNhbGUaFAoCZTYSDmtleUVudGl0bGVtZW50Gg0KAmU3EgdrZXlUYWdzGg0KAmU4EgdrZXlUeXBlGg4KAmU5EghrZXlQcmljZRoYCgJmMRISa2V5QXNzZXRJZEFjY2VwdGVkGhcKAmYyEhFrZXlIYXNoQnlUeGlkQWRkchoKCgJmMxIEdHhpZBoUCgJmNBIOa2V5T3duZXJCeUhhc2gaEAoCZjUSCnNoYTI1Nkhhc2gaGAoCZjYSEmtleVR4aWRCeUhhc2hPd25lchofCgJmNxIZY3VycmVudENlcnRpZmljYXRpb25QcmljZRoWCgJmOBIQZ2V0QW1vdW50QnlCaWRJZBogCgJmORIaZ2V0QW1vdW50SGlnaGVzdEJpZEJ5QXJ0SWQaFAoCZzESDnZhbGlkYXRlU3RyaW5nGgkKAmcyEgNzdHIaCQoCZzMSA21heBoSCgJnNBIMdmFsaWRhdGVVc2VyGhAKAmc1Egp1c2VyU3RhdHVzGhkKAmc2EhN2YWxpZGF0ZUFydHdvcmtEYXRhGhAKAmc3EgpjaWREaXNwbGF5GgoKAmc4EgRuYW1lGhEKAmc5EgtkZXNjcmlwdGlvbhoKCgJoMRIEdGFncxoPCgJoMhIJY2hlY2tVc2VyGg8KAmgzEglpc1BheW1lbnQaBwoCaDQSAWkaDQoCaDUSB3BheW1lbnQaDAoCaDYSBmFtb3VudBoVCgJoNxIPdmFsaWRhdGVQYXltZW50GhAKAmg4Egp0MDg5ODI5MDE4Gg0KAmg5Egdhc3NldElkGhoKAmkxEhR2YWxpZGF0ZVByaWNlQXNzZXRJZBoSCgJpMhIMcHJpY2VBc3NldElkGhIKAmkzEgxhcnR3b3JrUHJpY2UaEAoCaTQSCnQwOTYxMTk2NDcaFgoCaTUSEGFjY2VwdGVkQXNzZXRJZHMaFQoCaTYSD3ZhbGlkYXRlTWluU2VsbBoLCgJpNxIFcHJpY2UaEwoCaTgSDW1pblNlbGxTY29uZXgaEwoCaTkSDWdldEJpZEFzc2V0SWQaHAoCajESFmdldFByaWNlQXNzZXRJZEZyb21CaWQaEAoCajISCmJpZERhdGFLZXkaDQoCajMSB2JpZERhdGEaEAoCajQSCmJpZERhdGFBcnIaDwoCajUSCWJpZEFtb3VudBoQCgJqNhIKYmlkQXNzZXRJZBoSCgJqNxIMaWRDYWxsZXJEYXRlGhAKAmo4EgpnZXRBcnREYXRhGgwKAmo5EgZpc3N1ZXIaCwoCazESBWlzQmlkGhQKAmsyEg5jYWxsZXJJc0lzc3VlchoOCgJrMxIIdG90YWxORlQaEQoCazQSC2FydHdvcmtOYW1lGg4KAms1Eghpc09uU2FsZRoQCgJrNhIKYW1vdW50U29sZBoQCgJrNxIKbWF4Q2FuU2VsbBoQCgJrOBIKZ2V0QmlkRGF0YRoOCgJrORIIYmlkT3duZXIaEgoCbDESDHQwMTM1MTkxMzY0OBoXCgJsMhIRZ2V0Q29tbWlzc2lvbkRhdGEaEwoCbDMSDWlzV2hpdGVsaXN0ZWQaCQoCbDQSA2N1dBoVCgJsNRIPYW1vdW50Rm9yU2NvbmV4GhYKAmw2EhBhbW91bnRGb3JDcmVhdG9yGhMKAmw3Eg1uZXdBbW91bnRTb2xkGhIKAmw4EgxnZXRJc3N1ZURhdGEaDwoCbDkSCWlzc3VlTWV0YRoOCgJtMRIIaXNzdWVORlQaCwoCbTISBWlkTkZUGhAKAm0zEgpzZWxsU3RhdHVzGhAKAm00EgpyZWNlaXZlTkZUGhIKAm01EgxnZXRCaWRLZXlWYWwaCgoCbTYSBGRhdGUaEAoCbTcSCmFzc2V0SWRCaWQaDwoCbTgSCWJpZERlbE9sZBoPCgJtORIJYmlkVXBkYXRlGg0KAm4xEgdidXlNaW50GhAKAm4yEgpjYWxsZXJEYXRhGggKAm4zEgJpZBoNCgJuNBIHYXJ0RGF0YRoTCgJuNRINY29tbWlzaW9uRGF0YRoQCgJuNhIKaXNzdWVyRGF0YRoRCgJuNxILYmlkS2V5VmFsdWUaDQoCbjgSB3NvbGRLZXkaDwoCbjkSCXNvbGRWYWx1ZRoOCgJvMRIIc29sZERhdGEaDAoCbzISBmJ1eVJlcxoaCgJvMxIUc2V0QmlkTm9uVHJhZGl0aW9uYWwaEgoCbzQSDHQwMjc3MDkyNzc0NxoSCgJvNRIMdDAyNzc1MjI3Nzg4GgwKAm82EgZiaWROYnIaFwoCbzcSEXNldEJpZFRyYWRpdGlvbmFsGg8KAm84EgllbmRIZWlnaHQaEAoCbzkSCmhpZ2hlc3RCaWQaEQoCcDESC2NhbGxkZXJEYXRhGhIKAnAyEgxpc1BheW1lbnRWYXIaHQoCcDMSF2FjY2VwdEJpZE5vblRyYWRpdGlvbmFsGhQKAnA0Eg5yZXN0YXJ0QXVjdGlvbhoSCgJwNRIMb2xkRW5kSGVpZ2h0Gg4KAnA2EghkdXJhdGlvbhoaCgJwNxIUYWNjZXB0QmlkVHJhZGl0aW9uYWwaEgoCcDgSDGhpZ2hlc3RCaWRJZBoRCgJwORILYnV5TWludERhdGEaGAoCcTESEnJlc3RhcnRBdWN0aW9uRGF0YRoTCgJxMhINY2FuY2VsQmlkSW1wbBoSCgJxMxIMdDAyODk0MjI5MDk0Gg8KAnE0EgliaWRTdGF0dXMaHgoCcTUSGGNhbmNlbEJpZEltcGxUcmFkaXRpb25hbBoKCgJxNhIEdHlwZRoRCgJxNxILZW50aXRsZW1lbnQaEgoCcTgSDHQwMTc3NDAxNzc4MRoVCgJxORIPdmFsaWRhdGVBcnR3b3JrGhIKAnIxEgx0MDE4MTcwMTgyMTIaEAoCcjISCmVudHJ5RXhpc3QaDwoCcjMSCWhhc2hFeGlzdBoNCgJyNBIHbWF4TWludBoRCgJyNRILYXVjdGlvblR5cGUaDAoCcjYSBm1pbkJpZBoSCgJyNxIMdDAyNTcxNDI1NzQ3GgsKAnI4EgVlbnRyeQAAAEcAAAAAAmExBwAAAAACYTIJAQAAAAV2YWx1ZQAAAAEJAAQmAAAAAQIAAAAjM01wWlFqekdvZ21pZmNFS2U4bURkNnJpYkw3bnhUOUFDeWUAAAAAAmEzAgAAACMzTjY1eExxOEpjQ2VhRWlSMVRKUTdkQnFYQnZFeTZFNDhXegAAAAACYTQJAQAAAAV2YWx1ZQAAAAEJAAQmAAAAAQIAAAAjM045Y1FnWkZQSEhWdTh3cXNuMkRrUUZlaGczaDhDTmlvb0EAAAAAAmE1CQEAAAAFdmFsdWUAAAABCQAEJgAAAAECAAAAIzNOOXhaWUdwek1GRFh2WHVjdG1VNnpWOHFTem0yWmZGMzFmAAAAAAJhNgEAAAAguobtEHSno8B/SPo/hvAGB5K2lpZqO0oRcOvqVeCS0zMAAAAAAmE3AgAAACMzTjFEaHE1Wlp5b29qUWlzdVRMdXNZam5HaXNxcnhEd0dMeQAAAAACYTgAAAAAAAAAAJYAAAAAAmE5CQEAAAALdmFsdWVPckVsc2UAAAACCQAEGwAAAAIFAAAAAmE0AgAAABRjb25mX2RhcHBfaXNfcnVubmluZwYAAAAAAmIxCQEAAAALdmFsdWVPckVsc2UAAAACCQAEHQAAAAIF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", "height": 1682816, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: CE1YZZhrQjxbDwgGyGrGaJs6L17MSGaukwf5DfhpdpnY Next: 5AWbq5VgjL2zNRrx4MNCng9iDhMv86Qf9pZP22JGd8yV 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
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))
268268 let artworkPrice = if (callerIsIssuer)
269269 then (currentCertificationPrice * 2)
270270 else getIntegerByKey(keyPrice(issuer, artId))
271271 let priceAssetId = if (callerIsIssuer)
272272 then toBase58String(sconexAssetId)
273273 else getStringByKey(keyAssetIdAccepted(issuer, artId))
274274 let maxCanSell = getIntegerByKey(keyMaxMint(issuer, artId))
275275 if (if (if (!(isBid))
276276 then !(callerIsIssuer)
277277 else false)
278278 then if (if ((0 >= artworkPrice))
279279 then true
280280 else !(isOnSale))
281281 then true
282282 else (0 >= maxCanSell)
283283 else false)
284284 then throw("Art not for sale")
285285 else if (if (if (!(isBid))
286286 then callerIsIssuer
287287 else false)
288288 then (0 >= maxCanSell)
289289 else false)
290290 then throw("Max issuable not set")
291291 else $Tuple7(totalNFT, artworkName, amountSold, artworkPrice, priceAssetId, maxCanSell, isOnSale)
292292 }
293293 }
294294
295295
296296 func getBidData (i,caller,issuer,artId,bidOwner,bidId,priceAssetId,artworkPrice,isBid) = {
297297 let checkUser = validateUser(issuer)
298298 if (if (isBid)
299299 then (checkUser != "")
300300 else false)
301301 then throw(checkUser)
302302 else {
303303 let bidDataKey = ((((((("bid_" + artId) + "_") + issuer) + "_") + bidOwner) + "_") + bidId)
304304 let t01351913648 = if (isBid)
305305 then getPriceAssetIdFromBid(bidDataKey)
306306 else validatePriceAssetId(i, priceAssetId, artworkPrice)
307307 let amount = t01351913648._1
308308 let assetId = t01351913648._2
309309 $Tuple3(bidDataKey, amount, assetId)
310310 }
311311 }
312312
313313
314314 func getCommissionData (issuer,assetId,amount,amountSold,maxCanSell) = {
315315 let isWhitelisted = checkWhitelist(issuer)
316316 let cut = if ((isWhitelisted > height))
317317 then 0
318318 else if ((assetId == sconexAssetId))
319319 then sconexFirstSellCut
320320 else throw("Only Sconex is accepted!")
321321 let amountForSconex = fraction(amount, cut, 1000)
322322 let amountForCreator = (amount - amountForSconex)
323323 if ((amountSold == maxCanSell))
324324 then throw("Art sold out")
325325 else {
326326 let newAmountSold = (amountSold + 1)
327327 $Tuple3(amountForSconex, amountForCreator, newAmountSold)
328328 }
329329 }
330330
331331
332332 func getIssueData (issuer,artId,artworkName,newAmountSold,maxCanSell,totalNFT,caller,bidOwner,bidId,i,isOnSale) = {
333333 let issueMeta = ((((((((("Creator: " + issuer) + ",ArtID: ") + artId) + ",Artwork name: ") + artworkName) + ",Issue: ") + toString(newAmountSold)) + "/") + toString(maxCanSell))
334334 let issueNFT = Issue(("SCONEX_" + toString((totalNFT + 1))), issueMeta, 1, 0, false)
335335 let idNFT = calculateAssetId(issueNFT)
336336 let sellStatus = if (if ((newAmountSold == maxCanSell))
337337 then true
338338 else !(isOnSale))
339339 then false
340340 else true
341341 let receiveNFT = if ((bidOwner != ""))
342342 then addressFromStringValue(bidOwner)
343343 else i.caller
344344 $Tuple4(issueNFT, idNFT, sellStatus, receiveNFT)
345345 }
346346
347347
348348 func getBidKeyVal (assetId,bidDataKey,date) = {
349349 let assetIdBid = if (!(isDefined(assetId)))
350350 then throw("Only sconex is accepted")
351351 else toBase58String(value(assetId))
352352 let bidData = getStringByKey((bidDataKey + "_OPEN"))
353353 let bidDelOld = DeleteEntry((bidDataKey + "_OPEN"))
354354 let bidUpdate = StringEntry((bidDataKey + "_CLOSED"), ((bidData + "_") + toString(date)))
355355 $Tuple3(assetIdBid, bidDelOld, bidUpdate)
356356 }
357357
358358
359359 func buyMint (i,artId,issuer,bidId,bidOwner,isBid) = {
360360 let callerData = idCallerDate(i)
361361 let id = callerData._1
362362 let caller = callerData._2
363363 let date = callerData._3
364364 let artData = getArtData(i, issuer, artId, isBid)
365365 let totalNFT = artData._1
366366 let artworkName = artData._2
367367 let amountSold = artData._3
368368 let artworkPrice = artData._4
369369 let priceAssetId = artData._5
370370 let maxCanSell = artData._6
371371 let isOnSale = artData._7
372372 let bidData = getBidData(i, caller, issuer, artId, bidOwner, bidId, priceAssetId, artworkPrice, isBid)
373373 let bidDataKey = bidData._1
374374 let amount = bidData._2
375375 let assetId = bidData._3
376376 let commisionData = getCommissionData(issuer, value(assetId), amount, amountSold, maxCanSell)
377377 let amountForSconex = commisionData._1
378378 let amountForCreator = commisionData._2
379379 let newAmountSold = commisionData._3
380380 let issuerData = getIssueData(issuer, artId, artworkName, newAmountSold, maxCanSell, totalNFT, caller, bidOwner, bidId, i, isOnSale)
381381 let issueNFT = issuerData._1
382382 let idNFT = issuerData._2
383383 let sellStatus = issuerData._3
384384 let receiveNFT = issuerData._4
385385 let bidKeyValue = getBidKeyVal(assetId, bidDataKey, date)
386386 let assetIdBid = bidKeyValue._1
387387 let bidDelOld = bidKeyValue._2
388388 let bidUpdate = bidKeyValue._3
389389 let soldKey = ((((((("art_sold_" + toString(newAmountSold)) + "_of_") + toString(maxCanSell)) + "_") + artId) + "_") + issuer)
390390 let soldValue = if (!(isBid))
391391 then ((((((((((caller + "_") + toString(date)) + "_") + id) + "_") + toString(artworkPrice)) + "_") + priceAssetId) + "_") + toBase58String(idNFT))
392392 else ((((((((((toString(receiveNFT) + "_") + toString(date)) + "_") + id) + "_") + toString(amount)) + "_") + assetIdBid) + "_") + toBase58String(idNFT))
393393 let soldData = StringEntry(soldKey, soldValue)
394394 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)]
395395 if (isBid)
396396 then (((buyRes :+ soldData) :+ bidUpdate) :+ bidDelOld)
397397 else soldData :: buyRes
398398 }
399399
400400
401401 func setBidNonTraditional (i,artId,issuer) = {
402402 let t02770927747 = idCallerDate(i)
403403 let id = t02770927747._1
404404 let caller = t02770927747._2
405405 let date = t02770927747._3
406406 let t02775227788 = isPayment(i)
407407 let payment = t02775227788._1
408408 let amount = t02775227788._2
409409 let assetId = if (!(isDefined(payment.assetId)))
410410 then throw("Only sconex is accepted!")
411411 else toBase58String(value(payment.assetId))
412412 let bidNbr = getIntegerByKey(("current_bidamount_" + artId))
413413 if (!(acceptedAssetIds(assetId)))
414414 then throw("asset not accepted")
415415 else if (!(validateMinSell(assetId, amount)))
416416 then throw("Wrong min sell")
417417 else {
418418 let amountSold = getIntegerByKey(keyIssued(issuer, artId))
419419 let maxCanSell = getIntegerByKey(keyMaxMint(issuer, artId))
420420 if ((0 >= maxCanSell))
421421 then throw("No max edition set for this artwork")
422422 else if ((amountSold >= maxCanSell))
423423 then throw("Sold out, you cannot bid")
424424 else [StringEntry((((((((("bid_" + artId) + "_") + issuer) + "_") + caller) + "_") + id) + "_OPEN"), ((((assetId + "_") + toString(amount)) + "_") + toString(date))), IntegerEntry(("current_bidamount_" + artId), (bidNbr + 1))]
425425 }
426426 }
427427
428428
429429 func setBidTraditional (i,artId,issuer) = {
430430 let endHeight = getIntegerByKey(keyEndHeight(issuer, artId))
431431 let highestBid = getAmountHighestBidByArtId(artId)
432432 if ((height > endHeight))
433433 then throw("This auction is finished already!")
434434 else {
435435 let callderData = idCallerDate(i)
436436 let id = callderData._1
437437 let caller = callderData._2
438438 let date = callderData._3
439439 let isPaymentVar = isPayment(i)
440440 let payment = isPaymentVar._1
441441 let amount = isPaymentVar._2
442442 if ((highestBid >= amount))
443443 then throw(("Please place a bid higher then: " + toString(highestBid)))
444444 else {
445445 let assetId = if (!(isDefined(payment.assetId)))
446446 then throw("Only sconex is accepted!")
447447 else toBase58String(value(payment.assetId))
448448 let bidNbr = getIntegerByKey(("current_bidamount_" + artId))
449449 if (!(acceptedAssetIds(assetId)))
450450 then throw("asset not accepted")
451451 else if (!(validateMinSell(assetId, amount)))
452452 then throw("Wrong min sell")
453453 else {
454454 let amountSold = getIntegerByKey(keyIssued(issuer, artId))
455455 let maxCanSell = getIntegerByKey(keyMaxMint(issuer, artId))
456456 if ((0 >= maxCanSell))
457457 then throw("No max edition set for this artwork")
458458 else if ((amountSold >= maxCanSell))
459459 then throw("Sold out, you cannot bid")
460460 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)]
461461 }
462462 }
463463 }
464464 }
465465
466466
467467 func acceptBidNonTraditional (i,artId,issuer,bidId,bidOwner) = {
468468 let caller = toBase58String(i.caller.bytes)
469469 if ((caller != issuer))
470470 then throw("You cannot do this action")
471471 else buyMint(i, artId, issuer, bidId, bidOwner, true)
472472 }
473473
474474
475475 func restartAuction (artId,issuer) = {
476476 let amountSold = getIntegerByKey(keyIssued(issuer, artId))
477477 let maxCanSell = getIntegerByKey(keyMaxMint(issuer, artId))
478478 let oldEndHeight = getIntegerByKey(keyEndHeight(issuer, artId))
479479 let duration = getIntegerByKey(keyDuration(issuer, artId))
480480 let endHeight = (duration + height)
481481 if ((height > oldEndHeight))
482482 then if ((amountSold == maxCanSell))
483483 then throw("Can't restart auction, max amount sold")
484484 else [IntegerEntry(keyEndHeight(issuer, artId), endHeight), DeleteEntry(keyHighestBidBidId(artId))]
485485 else throw("Previous auction isn't completed yet")
486486 }
487487
488488
489489 func acceptBidTraditional (i,artId,issuer,bidId,bidOwner) = {
490490 let endHeight = getIntegerByKey(keyEndHeight(issuer, artId))
491491 let highestBidId = getStringByKey(keyHighestBidBidId(artId))
492492 if ((height > endHeight))
493493 then if ((bidId == highestBidId))
494494 then {
495495 let buyMintData = buyMint(i, artId, issuer, bidId, bidOwner, true)
496496 let restartAuctionData = restartAuction(artId, issuer)
497497 (restartAuctionData ++ buyMintData)
498498 }
499499 else throw("This is not the winning bid!")
500500 else throw("This auction is not yet finished!")
501501 }
502502
503503
504504 func cancelBidImpl (i,artId,issuer,bidId) = {
505505 let t02894229094 = idCallerDate(i)
506506 let id = t02894229094._1
507507 let caller = t02894229094._2
508508 let date = t02894229094._3
509509 let bidNbr = getIntegerByKey(("current_bidamount_" + artId))
510510 let bidDataKey = ((((((("bid_" + artId) + "_") + issuer) + "_") + caller) + "_") + bidId)
511511 let bidData = getStringByKey((bidDataKey + "_OPEN"))
512512 if ((bidData == ""))
513513 then throw("Bid not found")
514514 else {
515515 let bidDataArr = split(bidData, "_")
516516 let assetId = getBidAssetId(bidDataArr[0])
517517 let bidStatus = "CANCELED"
518518 [DeleteEntry((bidDataKey + "_OPEN")), StringEntry(((bidDataKey + "_") + bidStatus), ((bidData + "_") + toString(date))), IntegerEntry(("current_bidamount_" + artId), (bidNbr - 1)), ScriptTransfer(Address(fromBase58String(caller)), parseIntValue(bidDataArr[1]), assetId)]
519519 }
520520 }
521521
522522
523523 func cancelBidImplTraditional (i,artId,issuer,bidId) = {
524524 let t02894229094 = idCallerDate(i)
525525 let id = t02894229094._1
526526 let caller = t02894229094._2
527527 let date = t02894229094._3
528528 let bidNbr = getIntegerByKey(("current_bidamount_" + artId))
529529 let bidDataKey = ((((((("bid_" + artId) + "_") + issuer) + "_") + caller) + "_") + bidId)
530530 let bidData = getStringByKey((bidDataKey + "_OPEN"))
531531 if ((bidData == ""))
532532 then throw("Bid not found")
533533 else {
534534 let bidDataArr = split(bidData, "_")
535535 let assetId = getBidAssetId(bidDataArr[0])
536536 let bidStatus = "CANCELED"
537537 let bidAmount = parseIntValue(bidDataArr[1])
538538 let highestBidId = getStringByKey(keyHighestBidBidId(artId))
539539 if ((bidId == highestBidId))
540540 then throw("You can't cancel the highest bid!")
541541 else [DeleteEntry((bidDataKey + "_OPEN")), StringEntry(((bidDataKey + "_") + bidStatus), ((bidData + "_") + toString(date))), IntegerEntry(("current_bidamount_" + artId), (bidNbr - 1)), ScriptTransfer(Address(fromBase58String(caller)), bidAmount, assetId)]
542542 }
543543 }
544544
545545
546546 @Callable(i)
547547 func addArtwork (sha256Hash,name,description,tags,type,cidDisplay,entitlement) = {
548548 let t01774017781 = idCallerDate(i)
549549 let artId = t01774017781._1
550550 let caller = t01774017781._2
551551 let date = t01774017781._3
552552 let validateArtwork = validateArtworkData(caller, cidDisplay, name, description, tags)
553553 if ((validateArtwork != ""))
554554 then throw("Something went wrong!")
555555 else {
556556 let t01817018212 = validatePayment(i)
557557 let amount = t01817018212._1
558558 let assetId = t01817018212._2
559559 if (!(isDefined(amount)))
560560 then throw("Something went wrong")
561561 else {
562562 let entryExist = getStringByKey(keyTxidByHashOwner(sha256Hash, caller))
563563 if ((entryExist != ""))
564564 then throw("You already added it")
565565 else {
566566 let hashExist = getStringByKey(keyOwnerByHash(sha256Hash))
567567 if ((hashExist != ""))
568568 then throw("Hash already registered")
569569 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)]
570570 }
571571 }
572572 }
573573 }
574574
575575
576576
577577 @Callable(i)
578578 func sellArtwork (artId,price,maxMint,assetId,auctionType,minBid,duration) = {
579579 let t02571425747 = idCallerDate(i)
580580 let id = t02571425747._1
581581 let caller = t02571425747._2
582582 let artworkName = getStringByKey(keyName(caller, artId))
583583 if (!(containsElement([auctionType1, auctionType2], auctionType)))
584584 then throw("We dont know this auction type")
585585 else if ((artworkName == ""))
586586 then throw("This art doesn't match your account")
587587 else {
588588 let bidNbr = getIntegerByKey(("current_bidamount_" + artId))
589589 if (!(acceptedAssetIds(assetId)))
590590 then throw("Something went wrong!")
591591 else if (!(validateMinSell(assetId, price)))
592592 then throw("Something went wrong!")
593593 else {
594594 let checkUser = validateUser(caller)
595595 if ((checkUser != ""))
596596 then throw(checkUser)
597597 else {
598598 let amountSold = getIntegerByKey(keyIssued(caller, artId))
599599 let maxCanSell = getIntegerByKey(keyMaxMint(caller, artId))
600600 if ((maxMint > 10))
601601 then throw("10 editions max per artwork")
602602 else if (if ((amountSold != 0))
603603 then (amountSold == maxCanSell)
604604 else false)
605605 then throw("Max edition reached.")
606606 else if (if ((amountSold > 0))
607607 then (maxCanSell != maxMint)
608608 else false)
609609 then throw("Cannot change maximum issuable anymore")
610610 else if (if ((bidNbr > 0))
611611 then (maxCanSell != maxMint)
612612 else false)
613613 then throw("Cannot change maximum issuable with active orders")
614614 else {
615615 let sellStatus = if (if ((price > 0))
616616 then (maxMint > 0)
617617 else false)
618618 then true
619619 else false
620620 let endHeight = (duration + height)
621621 [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)]
622622 }
623623 }
624624 }
625625 }
626626 }
627627
628628
629629
630630 @Callable(i)
631631 func buyArtwork (artId,issuer) = buyMint(i, artId, issuer, "", "", false)
632632
633633
634634
635635 @Callable(i)
636636 func deleteEntry (entry) = {
637637 let caller = toString(addressFromPublicKey(i.callerPublicKey))
638638 if ((caller == owner))
639639 then [DeleteEntry(entry)]
640640 else throw("no")
641641 }
642642
643643
644644
645645 @Callable(i)
646646 func setBid (artId,issuer) = {
647647 let auctionType = getStringByKey(keyAuctionType(issuer, artId))
648648 if ((auctionType == auctionType1))
649649 then setBidNonTraditional(i, artId, issuer)
650650 else if ((auctionType == auctionType2))
651651 then setBidTraditional(i, artId, issuer)
652652 else throw((("Unknown auction type :" + auctionType) + ", please contact the admins"))
653653 }
654654
655655
656656
657657 @Callable(i)
658658 func acceptBid (artId,issuer,bidId,bidOwner) = {
659659 let auctionType = getStringByKey(keyAuctionType(issuer, artId))
660660 if ((auctionType == auctionType1))
661661 then acceptBidNonTraditional(i, artId, issuer, bidId, bidOwner)
662662 else if ((auctionType == auctionType2))
663663 then acceptBidTraditional(i, artId, issuer, bidId, bidOwner)
664664 else throw((("Unknown auction type :" + auctionType) + ", please contact the admins"))
665665 }
666666
667667
668668
669669 @Callable(i)
670670 func cancelBid (artId,issuer,bidId) = {
671671 let auctionType = getStringByKey(keyAuctionType(issuer, artId))
672672 if ((auctionType == auctionType1))
673673 then cancelBidImpl(i, artId, issuer, bidId)
674674 else cancelBidImplTraditional(i, artId, issuer, bidId)
675675 }
676676
677677

github/deemru/w8io/026f985 
64.09 ms