tx · CE1YZZhrQjxbDwgGyGrGaJs6L17MSGaukwf5DfhpdpnY

3MrWNTqFcHBqb58Za1A5crQrMV5KJ5DYhtA:  -0.01000000 Waves

2021.08.27 21:27 [1677108] smart account 3MrWNTqFcHBqb58Za1A5crQrMV5KJ5DYhtA > SELF 0.00000000 Waves

{ "type": 13, "id": "CE1YZZhrQjxbDwgGyGrGaJs6L17MSGaukwf5DfhpdpnY", "fee": 1000000, "feeAssetId": null, "timestamp": 1630088861321, "version": 2, "chainId": 84, "sender": "3MrWNTqFcHBqb58Za1A5crQrMV5KJ5DYhtA", "senderPublicKey": "9abKuN1XmLjjire2feZH26PmcEWhEXxiHToWSmii3Gn2", "proofs": [ "2qvnZxKee8mA61qWQxo58Wfqq8ASyNMRS4x5CopogZurBiqqSZsKdPZKQ9dDdtJ2vduVKKGahL9ZHLgyWoSrC8Rr" ], "script": "base64:AAIFAAAAAAAADCMIAhIJCgcICAgICAgIEgkKBwgBAQgIAQESBAoCCAgSAwoBCBIECgIICBIGCgQICAgIEgUKAwgICBoOCgJhMRIIdW5pdFRlc3QaDwoCYTISCW9yYWNsZUZlZRoRCgJhMxILZmVlUmVjZWl2ZXIaDgoCYTQSCHVzZXJEYXBwGhMKAmE1Eg13aGl0ZWxpc3REYXBwGhMKAmE2Eg1zY29uZXhBc3NldElkGgsKAmE3EgVvd25lchoYCgJhOBISc2NvbmV4Rmlyc3RTZWxsQ3V0GhEKAmE5EgtkYXBwUnVubmluZxoUCgJiMRIObWFpbnRlbmFuY2VNU0caEwoCYjISDXVzZXJTdXNwZW5kZWQaEQoCYjMSC3VzZXJSZW1vdmVkGhYKAmI0EhB1c2VyVW5yZWdpc3RlcmVkGhEKAmI1Egt1c2VyQWxsb3dlZBoSCgJiNhIMYXVjdGlvblR5cGUxGhIKAmI3EgxhdWN0aW9uVHlwZTIaFAoCYjgSDmdldFN0cmluZ0J5S2V5GgkKAmI5EgNrZXkaHwoCYzESGWdldEludGVnZXJCeUtleUZyb21PcmFjbGUaFQoCYzISD2dldEludGVnZXJCeUtleRoUCgJjMxIOY2hlY2tXaGl0ZWxpc3QaFQoCYzQSD2dldEJvb2xlYW5CeUtleRoTCgJjNRINa2V5VXNlclN0YXR1cxoMCgJjNhIGY2FsbGVyGg0KAmM3EgdrZXlEYXRlGgsKAmM4EgVhcnRJZBoNCgJjORIHa2V5TmFtZRoNCgJkMRIHa2V5RGVzYxoTCgJkMhINa2V5RGlzcGxheUNpZBoQCgJkMxIKa2V5TWF4TWludBoRCgJkNBILa2V5TWluUHJpY2UaGAoCZDUSEmtleUhpZ2hlc3RCaWRCaWRJZBoOCgJkNhIIa2V5QmlkSWQaCwoCZDcSBWJpZElkGhEKAmQ4EgtrZXlEdXJhdGlvbhoSCgJkORIMa2V5RW5kSGVpZ2h0GhQKAmUxEg5rZXlBdWN0aW9uVHlwZRoPCgJlMhIJa2V5SXNzdWVkGhIKAmUzEgxLZXlOZnRJc3N1ZXIaCwoCZTQSBW5mdElkGg8KAmU1EglrZXlPblNhbGUaFAoCZTYSDmtleUVudGl0bGVtZW50Gg0KAmU3EgdrZXlUYWdzGg0KAmU4EgdrZXlUeXBlGg4KAmU5EghrZXlQcmljZRoYCgJmMRISa2V5QXNzZXRJZEFjY2VwdGVkGhcKAmYyEhFrZXlIYXNoQnlUeGlkQWRkchoKCgJmMxIEdHhpZBoUCgJmNBIOa2V5T3duZXJCeUhhc2gaEAoCZjUSCnNoYTI1Nkhhc2gaGAoCZjYSEmtleVR4aWRCeUhhc2hPd25lchofCgJmNxIZY3VycmVudENlcnRpZmljYXRpb25QcmljZRoWCgJmOBIQZ2V0QW1vdW50QnlCaWRJZBogCgJmORIaZ2V0QW1vdW50SGlnaGVzdEJpZEJ5QXJ0SWQaFAoCZzESDnZhbGlkYXRlU3RyaW5nGgkKAmcyEgNzdHIaCQoCZzMSA21heBoSCgJnNBIMdmFsaWRhdGVVc2VyGhAKAmc1Egp1c2VyU3RhdHVzGhkKAmc2EhN2YWxpZGF0ZUFydHdvcmtEYXRhGhAKAmc3EgpjaWREaXNwbGF5GgoKAmc4EgRuYW1lGhEKAmc5EgtkZXNjcmlwdGlvbhoKCgJoMRIEdGFncxoPCgJoMhIJY2hlY2tVc2VyGg8KAmgzEglpc1BheW1lbnQaBwoCaDQSAWkaDQoCaDUSB3BheW1lbnQaDAoCaDYSBmFtb3VudBoVCgJoNxIPdmFsaWRhdGVQYXltZW50GhAKAmg4Egp0MDg5ODI5MDE4Gg0KAmg5Egdhc3NldElkGhoKAmkxEhR2YWxpZGF0ZVByaWNlQXNzZXRJZBoSCgJpMhIMcHJpY2VBc3NldElkGhIKAmkzEgxhcnR3b3JrUHJpY2UaEAoCaTQSCnQwOTYxMTk2NDcaFgoCaTUSEGFjY2VwdGVkQXNzZXRJZHMaFQoCaTYSD3ZhbGlkYXRlTWluU2VsbBoLCgJpNxIFcHJpY2UaEwoCaTgSDW1pblNlbGxTY29uZXgaEwoCaTkSDWdldEJpZEFzc2V0SWQaHAoCajESFmdldFByaWNlQXNzZXRJZEZyb21CaWQaEAoCajISCmJpZERhdGFLZXkaDQoCajMSB2JpZERhdGEaEAoCajQSCmJpZERhdGFBcnIaDwoCajUSCWJpZEFtb3VudBoQCgJqNhIKYmlkQXNzZXRJZBoSCgJqNxIMaWRDYWxsZXJEYXRlGhAKAmo4EgpnZXRBcnREYXRhGgwKAmo5EgZpc3N1ZXIaCwoCazESBWlzQmlkGhQKAmsyEg5jYWxsZXJJc0lzc3VlchoOCgJrMxIIdG90YWxORlQaEQoCazQSC2FydHdvcmtOYW1lGg4KAms1Eghpc09uU2FsZRoQCgJrNhIKYW1vdW50U29sZBoQCgJrNxIKbWF4Q2FuU2VsbBoQCgJrOBIKZ2V0QmlkRGF0YRoOCgJrORIIYmlkT3duZXIaEgoCbDESDHQwMTM1MTkxMzY0OBoXCgJsMhIRZ2V0Q29tbWlzc2lvbkRhdGEaEwoCbDMSDWlzV2hpdGVsaXN0ZWQaCQoCbDQSA2N1dBoVCgJsNRIPYW1vdW50Rm9yU2NvbmV4GhYKAmw2EhBhbW91bnRGb3JDcmVhdG9yGhMKAmw3Eg1uZXdBbW91bnRTb2xkGhIKAmw4EgxnZXRJc3N1ZURhdGEaDwoCbDkSCWlzc3VlTWV0YRoOCgJtMRIIaXNzdWVORlQaCwoCbTISBWlkTkZUGhAKAm0zEgpzZWxsU3RhdHVzGhAKAm00EgpyZWNlaXZlTkZUGhIKAm01EgxnZXRCaWRLZXlWYWwaCgoCbTYSBGRhdGUaEAoCbTcSCmFzc2V0SWRCaWQaDwoCbTgSCWJpZERlbE9sZBoPCgJtORIJYmlkVXBkYXRlGg0KAm4xEgdidXlNaW50GhAKAm4yEgpjYWxsZXJEYXRhGggKAm4zEgJpZBoNCgJuNBIHYXJ0RGF0YRoTCgJuNRINY29tbWlzaW9uRGF0YRoQCgJuNhIKaXNzdWVyRGF0YRoRCgJuNxILYmlkS2V5VmFsdWUaDQoCbjgSB3NvbGRLZXkaDwoCbjkSCXNvbGRWYWx1ZRoOCgJvMRIIc29sZERhdGEaDAoCbzISBmJ1eVJlcxoaCgJvMxIUc2V0QmlkTm9uVHJhZGl0aW9uYWwaEgoCbzQSDHQwMjc3MDkyNzc0NxoSCgJvNRIMdDAyNzc1MjI3Nzg4GgwKAm82EgZiaWROYnIaFwoCbzcSEXNldEJpZFRyYWRpdGlvbmFsGg8KAm84EgllbmRIZWlnaHQaEAoCbzkSCmhpZ2hlc3RCaWQaEQoCcDESC2NhbGxkZXJEYXRhGhIKAnAyEgxpc1BheW1lbnRWYXIaHQoCcDMSF2FjY2VwdEJpZE5vblRyYWRpdGlvbmFsGhQKAnA0Eg5yZXN0YXJ0QXVjdGlvbhoSCgJwNRIMb2xkRW5kSGVpZ2h0Gg4KAnA2EghkdXJhdGlvbhoaCgJwNxIUYWNjZXB0QmlkVHJhZGl0aW9uYWwaEgoCcDgSDGhpZ2hlc3RCaWRJZBoRCgJwORILYnV5TWludERhdGEaGAoCcTESEnJlc3RhcnRBdWN0aW9uRGF0YRoTCgJxMhINY2FuY2VsQmlkSW1wbBoSCgJxMxIMdDAyODk0MjI5MDk0Gg8KAnE0EgliaWRTdGF0dXMaHgoCcTUSGGNhbmNlbEJpZEltcGxUcmFkaXRpb25hbBoKCgJxNhIEdHlwZRoRCgJxNxILZW50aXRsZW1lbnQaEgoCcTgSDHQwMTc3NDAxNzc4MRoVCgJxORIPdmFsaWRhdGVBcnR3b3JrGhIKAnIxEgx0MDE4MTcwMTgyMTIaEAoCcjISCmVudHJ5RXhpc3QaDwoCcjMSCWhhc2hFeGlzdBoNCgJyNBIHbWF4TWludBoRCgJyNRILYXVjdGlvblR5cGUaDAoCcjYSBm1pbkJpZBoSCgJyNxIMdDAyNTcxNDI1NzQ3GgsKAnI4EgVlbnRyeQAAAEcAAAAAAmExBwAAAAACYTIJAQAAAAV2YWx1ZQAAAAEJAAQmAAAAAQIAAAAjM01wWlFqekdvZ21pZmNFS2U4bURkNnJpYkw3bnhUOUFDeWUAAAAAAmEzAgAAACMzTjY1eExxOEpjQ2VhRWlSMVRKUTdkQnFYQnZFeTZFNDhXegAAAAACYTQJAQAAAAV2YWx1ZQAAAAEJAAQmAAAAAQIAAAAjM045Y1FnWkZQSEhWdTh3cXNuMkRrUUZlaGczaDhDTmlvb0EAAAAAAmE1CQEAAAAFdmFsdWUAAAABCQAEJgAAAAECAAAAIzNOOXhaWUdwek1GRFh2WHVjdG1VNnpWOHFTem0yWmZGMzFmAAAAAAJhNgEAAAAguobtEHSno8B/SPo/hvAGB5K2lpZqO0oRcOvqVeCS0zMAAAAAAmE3AgAAACMzTjFEaHE1Wlp5b29qUWlzdVRMdXNZam5HaXNxcnhEd0dMeQAAAAACYTgAAAAAAAAAAJYAAAAAAmE5CQEAAAALdmFsdWVPckVsc2UAAAACCQAEGwAAAAIFAAAAAmE0AgAAABRjb25mX2RhcHBfaXNfcnVubmluZwYAAAAAAmIxCQEAAAALdmFsdWVPckVsc2UAAAACCQAEHQAAAAIF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", "height": 1677108, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: ARnhSqHoWy79aZ9V6qymqZ4wHrRq19RuGdcLt7TTZq9y Next: 5k84zgtAxXdhCE7akNZsfP7c6f175TvMKt8KyKuz3Qct Diff:
OldNewDifferences
338338 else !(isOnSale))
339339 then false
340340 else true
341- let receiveNFT = if (if (if ((caller == issuer))
342- then (bidOwner != "")
343- else false)
344- then (bidId != "")
345- else false)
341+ let receiveNFT = if ((bidOwner != ""))
346342 then addressFromStringValue(bidOwner)
347343 else i.caller
348344 $Tuple4(issueNFT, idNFT, sellStatus, receiveNFT)
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))
210210 then throw("Payment don't match")
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
341- let receiveNFT = if (if (if ((caller == issuer))
342- then (bidOwner != "")
343- else false)
344- then (bidId != "")
345- else false)
341+ let receiveNFT = if ((bidOwner != ""))
346342 then addressFromStringValue(bidOwner)
347343 else i.caller
348344 $Tuple4(issueNFT, idNFT, sellStatus, receiveNFT)
349345 }
350346
351347
352348 func getBidKeyVal (assetId,bidDataKey,date) = {
353349 let assetIdBid = if (!(isDefined(assetId)))
354350 then throw("Only sconex is accepted")
355351 else toBase58String(value(assetId))
356352 let bidData = getStringByKey((bidDataKey + "_OPEN"))
357353 let bidDelOld = DeleteEntry((bidDataKey + "_OPEN"))
358354 let bidUpdate = StringEntry((bidDataKey + "_CLOSED"), ((bidData + "_") + toString(date)))
359355 $Tuple3(assetIdBid, bidDelOld, bidUpdate)
360356 }
361357
362358
363359 func buyMint (i,artId,issuer,bidId,bidOwner,isBid) = {
364360 let callerData = idCallerDate(i)
365361 let id = callerData._1
366362 let caller = callerData._2
367363 let date = callerData._3
368364 let artData = getArtData(i, issuer, artId, isBid)
369365 let totalNFT = artData._1
370366 let artworkName = artData._2
371367 let amountSold = artData._3
372368 let artworkPrice = artData._4
373369 let priceAssetId = artData._5
374370 let maxCanSell = artData._6
375371 let isOnSale = artData._7
376372 let bidData = getBidData(i, caller, issuer, artId, bidOwner, bidId, priceAssetId, artworkPrice, isBid)
377373 let bidDataKey = bidData._1
378374 let amount = bidData._2
379375 let assetId = bidData._3
380376 let commisionData = getCommissionData(issuer, value(assetId), amount, amountSold, maxCanSell)
381377 let amountForSconex = commisionData._1
382378 let amountForCreator = commisionData._2
383379 let newAmountSold = commisionData._3
384380 let issuerData = getIssueData(issuer, artId, artworkName, newAmountSold, maxCanSell, totalNFT, caller, bidOwner, bidId, i, isOnSale)
385381 let issueNFT = issuerData._1
386382 let idNFT = issuerData._2
387383 let sellStatus = issuerData._3
388384 let receiveNFT = issuerData._4
389385 let bidKeyValue = getBidKeyVal(assetId, bidDataKey, date)
390386 let assetIdBid = bidKeyValue._1
391387 let bidDelOld = bidKeyValue._2
392388 let bidUpdate = bidKeyValue._3
393389 let soldKey = ((((((("art_sold_" + toString(newAmountSold)) + "_of_") + toString(maxCanSell)) + "_") + artId) + "_") + issuer)
394390 let soldValue = if (!(isBid))
395391 then ((((((((((caller + "_") + toString(date)) + "_") + id) + "_") + toString(artworkPrice)) + "_") + priceAssetId) + "_") + toBase58String(idNFT))
396392 else ((((((((((toString(receiveNFT) + "_") + toString(date)) + "_") + id) + "_") + toString(amount)) + "_") + assetIdBid) + "_") + toBase58String(idNFT))
397393 let soldData = StringEntry(soldKey, soldValue)
398394 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)]
399395 if (isBid)
400396 then (((buyRes :+ soldData) :+ bidUpdate) :+ bidDelOld)
401397 else soldData :: buyRes
402398 }
403399
404400
405401 func setBidNonTraditional (i,artId,issuer) = {
406402 let t02770927747 = idCallerDate(i)
407403 let id = t02770927747._1
408404 let caller = t02770927747._2
409405 let date = t02770927747._3
410406 let t02775227788 = isPayment(i)
411407 let payment = t02775227788._1
412408 let amount = t02775227788._2
413409 let assetId = if (!(isDefined(payment.assetId)))
414410 then throw("Only sconex is accepted!")
415411 else toBase58String(value(payment.assetId))
416412 let bidNbr = getIntegerByKey(("current_bidamount_" + artId))
417413 if (!(acceptedAssetIds(assetId)))
418414 then throw("asset not accepted")
419415 else if (!(validateMinSell(assetId, amount)))
420416 then throw("Wrong min sell")
421417 else {
422418 let amountSold = getIntegerByKey(keyIssued(issuer, artId))
423419 let maxCanSell = getIntegerByKey(keyMaxMint(issuer, artId))
424420 if ((0 >= maxCanSell))
425421 then throw("No max edition set for this artwork")
426422 else if ((amountSold >= maxCanSell))
427423 then throw("Sold out, you cannot bid")
428424 else [StringEntry((((((((("bid_" + artId) + "_") + issuer) + "_") + caller) + "_") + id) + "_OPEN"), ((((assetId + "_") + toString(amount)) + "_") + toString(date))), IntegerEntry(("current_bidamount_" + artId), (bidNbr + 1))]
429425 }
430426 }
431427
432428
433429 func setBidTraditional (i,artId,issuer) = {
434430 let endHeight = getIntegerByKey(keyEndHeight(issuer, artId))
435431 let highestBid = getAmountHighestBidByArtId(artId)
436432 if ((height > endHeight))
437433 then throw("This auction is finished already!")
438434 else {
439435 let callderData = idCallerDate(i)
440436 let id = callderData._1
441437 let caller = callderData._2
442438 let date = callderData._3
443439 let isPaymentVar = isPayment(i)
444440 let payment = isPaymentVar._1
445441 let amount = isPaymentVar._2
446442 if ((highestBid >= amount))
447443 then throw(("Please place a bid higher then: " + toString(highestBid)))
448444 else {
449445 let assetId = if (!(isDefined(payment.assetId)))
450446 then throw("Only sconex is accepted!")
451447 else toBase58String(value(payment.assetId))
452448 let bidNbr = getIntegerByKey(("current_bidamount_" + artId))
453449 if (!(acceptedAssetIds(assetId)))
454450 then throw("asset not accepted")
455451 else if (!(validateMinSell(assetId, amount)))
456452 then throw("Wrong min sell")
457453 else {
458454 let amountSold = getIntegerByKey(keyIssued(issuer, artId))
459455 let maxCanSell = getIntegerByKey(keyMaxMint(issuer, artId))
460456 if ((0 >= maxCanSell))
461457 then throw("No max edition set for this artwork")
462458 else if ((amountSold >= maxCanSell))
463459 then throw("Sold out, you cannot bid")
464460 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)]
465461 }
466462 }
467463 }
468464 }
469465
470466
471467 func acceptBidNonTraditional (i,artId,issuer,bidId,bidOwner) = {
472468 let caller = toBase58String(i.caller.bytes)
473469 if ((caller != issuer))
474470 then throw("You cannot do this action")
475471 else buyMint(i, artId, issuer, bidId, bidOwner, true)
476472 }
477473
478474
479475 func restartAuction (artId,issuer) = {
480476 let amountSold = getIntegerByKey(keyIssued(issuer, artId))
481477 let maxCanSell = getIntegerByKey(keyMaxMint(issuer, artId))
482478 let oldEndHeight = getIntegerByKey(keyEndHeight(issuer, artId))
483479 let duration = getIntegerByKey(keyDuration(issuer, artId))
484480 let endHeight = (duration + height)
485481 if ((height > oldEndHeight))
486482 then if ((amountSold == maxCanSell))
487483 then throw("Can't restart auction, max amount sold")
488484 else [IntegerEntry(keyEndHeight(issuer, artId), endHeight), DeleteEntry(keyHighestBidBidId(artId))]
489485 else throw("Previous auction isn't completed yet")
490486 }
491487
492488
493489 func acceptBidTraditional (i,artId,issuer,bidId,bidOwner) = {
494490 let endHeight = getIntegerByKey(keyEndHeight(issuer, artId))
495491 let highestBidId = getStringByKey(keyHighestBidBidId(artId))
496492 if ((height > endHeight))
497493 then if ((bidId == highestBidId))
498494 then {
499495 let buyMintData = buyMint(i, artId, issuer, bidId, bidOwner, true)
500496 let restartAuctionData = restartAuction(artId, issuer)
501497 (restartAuctionData ++ buyMintData)
502498 }
503499 else throw("This is not the winning bid!")
504500 else throw("This auction is not yet finished!")
505501 }
506502
507503
508504 func cancelBidImpl (i,artId,issuer,bidId) = {
509505 let t02894229094 = idCallerDate(i)
510506 let id = t02894229094._1
511507 let caller = t02894229094._2
512508 let date = t02894229094._3
513509 let bidNbr = getIntegerByKey(("current_bidamount_" + artId))
514510 let bidDataKey = ((((((("bid_" + artId) + "_") + issuer) + "_") + caller) + "_") + bidId)
515511 let bidData = getStringByKey((bidDataKey + "_OPEN"))
516512 if ((bidData == ""))
517513 then throw("Bid not found")
518514 else {
519515 let bidDataArr = split(bidData, "_")
520516 let assetId = getBidAssetId(bidDataArr[0])
521517 let bidStatus = "CANCELED"
522518 [DeleteEntry((bidDataKey + "_OPEN")), StringEntry(((bidDataKey + "_") + bidStatus), ((bidData + "_") + toString(date))), IntegerEntry(("current_bidamount_" + artId), (bidNbr - 1)), ScriptTransfer(Address(fromBase58String(caller)), parseIntValue(bidDataArr[1]), assetId)]
523519 }
524520 }
525521
526522
527523 func cancelBidImplTraditional (i,artId,issuer,bidId) = {
528524 let t02894229094 = idCallerDate(i)
529525 let id = t02894229094._1
530526 let caller = t02894229094._2
531527 let date = t02894229094._3
532528 let bidNbr = getIntegerByKey(("current_bidamount_" + artId))
533529 let bidDataKey = ((((((("bid_" + artId) + "_") + issuer) + "_") + caller) + "_") + bidId)
534530 let bidData = getStringByKey((bidDataKey + "_OPEN"))
535531 if ((bidData == ""))
536532 then throw("Bid not found")
537533 else {
538534 let bidDataArr = split(bidData, "_")
539535 let assetId = getBidAssetId(bidDataArr[0])
540536 let bidStatus = "CANCELED"
541537 let bidAmount = parseIntValue(bidDataArr[1])
542538 let highestBidId = getStringByKey(keyHighestBidBidId(artId))
543539 if ((bidId == highestBidId))
544540 then throw("You can't cancel the highest bid!")
545541 else [DeleteEntry((bidDataKey + "_OPEN")), StringEntry(((bidDataKey + "_") + bidStatus), ((bidData + "_") + toString(date))), IntegerEntry(("current_bidamount_" + artId), (bidNbr - 1)), ScriptTransfer(Address(fromBase58String(caller)), bidAmount, assetId)]
546542 }
547543 }
548544
549545
550546 @Callable(i)
551547 func addArtwork (sha256Hash,name,description,tags,type,cidDisplay,entitlement) = {
552548 let t01774017781 = idCallerDate(i)
553549 let artId = t01774017781._1
554550 let caller = t01774017781._2
555551 let date = t01774017781._3
556552 let validateArtwork = validateArtworkData(caller, cidDisplay, name, description, tags)
557553 if ((validateArtwork != ""))
558554 then throw("Something went wrong!")
559555 else {
560556 let t01817018212 = validatePayment(i)
561557 let amount = t01817018212._1
562558 let assetId = t01817018212._2
563559 if (!(isDefined(amount)))
564560 then throw("Something went wrong")
565561 else {
566562 let entryExist = getStringByKey(keyTxidByHashOwner(sha256Hash, caller))
567563 if ((entryExist != ""))
568564 then throw("You already added it")
569565 else {
570566 let hashExist = getStringByKey(keyOwnerByHash(sha256Hash))
571567 if ((hashExist != ""))
572568 then throw("Hash already registered")
573569 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)]
574570 }
575571 }
576572 }
577573 }
578574
579575
580576
581577 @Callable(i)
582578 func sellArtwork (artId,price,maxMint,assetId,auctionType,minBid,duration) = {
583579 let t02571425747 = idCallerDate(i)
584580 let id = t02571425747._1
585581 let caller = t02571425747._2
586582 let artworkName = getStringByKey(keyName(caller, artId))
587583 if (!(containsElement([auctionType1, auctionType2], auctionType)))
588584 then throw("We dont know this auction type")
589585 else if ((artworkName == ""))
590586 then throw("This art doesn't match your account")
591587 else {
592588 let bidNbr = getIntegerByKey(("current_bidamount_" + artId))
593589 if (!(acceptedAssetIds(assetId)))
594590 then throw("Something went wrong!")
595591 else if (!(validateMinSell(assetId, price)))
596592 then throw("Something went wrong!")
597593 else {
598594 let checkUser = validateUser(caller)
599595 if ((checkUser != ""))
600596 then throw(checkUser)
601597 else {
602598 let amountSold = getIntegerByKey(keyIssued(caller, artId))
603599 let maxCanSell = getIntegerByKey(keyMaxMint(caller, artId))
604600 if ((maxMint > 10))
605601 then throw("10 editions max per artwork")
606602 else if (if ((amountSold != 0))
607603 then (amountSold == maxCanSell)
608604 else false)
609605 then throw("Max edition reached.")
610606 else if (if ((amountSold > 0))
611607 then (maxCanSell != maxMint)
612608 else false)
613609 then throw("Cannot change maximum issuable anymore")
614610 else if (if ((bidNbr > 0))
615611 then (maxCanSell != maxMint)
616612 else false)
617613 then throw("Cannot change maximum issuable with active orders")
618614 else {
619615 let sellStatus = if (if ((price > 0))
620616 then (maxMint > 0)
621617 else false)
622618 then true
623619 else false
624620 let endHeight = (duration + height)
625621 [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)]
626622 }
627623 }
628624 }
629625 }
630626 }
631627
632628
633629
634630 @Callable(i)
635631 func buyArtwork (artId,issuer) = buyMint(i, artId, issuer, "", "", false)
636632
637633
638634
639635 @Callable(i)
640636 func deleteEntry (entry) = {
641637 let caller = toString(addressFromPublicKey(i.callerPublicKey))
642638 if ((caller == owner))
643639 then [DeleteEntry(entry)]
644640 else throw("no")
645641 }
646642
647643
648644
649645 @Callable(i)
650646 func setBid (artId,issuer) = {
651647 let auctionType = getStringByKey(keyAuctionType(issuer, artId))
652648 if ((auctionType == auctionType1))
653649 then setBidNonTraditional(i, artId, issuer)
654650 else if ((auctionType == auctionType2))
655651 then setBidTraditional(i, artId, issuer)
656652 else throw((("Unknown auction type :" + auctionType) + ", please contact the admins"))
657653 }
658654
659655
660656
661657 @Callable(i)
662658 func acceptBid (artId,issuer,bidId,bidOwner) = {
663659 let auctionType = getStringByKey(keyAuctionType(issuer, artId))
664660 if ((auctionType == auctionType1))
665661 then acceptBidNonTraditional(i, artId, issuer, bidId, bidOwner)
666662 else if ((auctionType == auctionType2))
667663 then acceptBidTraditional(i, artId, issuer, bidId, bidOwner)
668664 else throw((("Unknown auction type :" + auctionType) + ", please contact the admins"))
669665 }
670666
671667
672668
673669 @Callable(i)
674670 func cancelBid (artId,issuer,bidId) = {
675671 let auctionType = getStringByKey(keyAuctionType(issuer, artId))
676672 if ((auctionType == auctionType1))
677673 then cancelBidImpl(i, artId, issuer, bidId)
678674 else cancelBidImplTraditional(i, artId, issuer, bidId)
679675 }
680676
681677

github/deemru/w8io/169f3d6 
81.07 ms