tx · HiBU8ifrs6QPM9cJkLhPwfLTNZ7EYWqvatii9Dqx4tEr

3MrWNTqFcHBqb58Za1A5crQrMV5KJ5DYhtA:  -0.01000000 Waves

2021.08.22 18:29 [1669721] smart account 3MrWNTqFcHBqb58Za1A5crQrMV5KJ5DYhtA > SELF 0.00000000 Waves

{ "type": 13, "id": "HiBU8ifrs6QPM9cJkLhPwfLTNZ7EYWqvatii9Dqx4tEr", "fee": 1000000, "feeAssetId": null, "timestamp": 1629646249417, "version": 2, "chainId": 84, "sender": "3MrWNTqFcHBqb58Za1A5crQrMV5KJ5DYhtA", "senderPublicKey": "9abKuN1XmLjjire2feZH26PmcEWhEXxiHToWSmii3Gn2", "proofs": [ "NYABg9oZu64XqtU1iUBUsbXodsA32qyY3HcJMt9E6PPqdCFcUXxj1KMj1fcdL5KKZUCeCZuMnYyK2zMYNNDjons" ], "script": "base64:AAIFAAAAAAAADC4IAhIICgYICAgICAgSCgoICAEBCAgBAQgSBAoCCAgSAwoBCBIECgIICBIGCgQICAgIEgUKAwgICBoOCgJhMRIIdW5pdFRlc3QaDwoCYTISCW9yYWNsZUZlZRoRCgJhMxILZmVlUmVjZWl2ZXIaDgoCYTQSCHVzZXJEYXBwGhMKAmE1Eg13aGl0ZWxpc3REYXBwGhMKAmE2Eg1zY29uZXhBc3NldElkGgsKAmE3EgVvd25lchoYCgJhOBISc2NvbmV4Rmlyc3RTZWxsQ3V0GhEKAmE5EgtkYXBwUnVubmluZxoUCgJiMRIObWFpbnRlbmFuY2VNU0caEwoCYjISDXVzZXJTdXNwZW5kZWQaEQoCYjMSC3VzZXJSZW1vdmVkGhYKAmI0EhB1c2VyVW5yZWdpc3RlcmVkGhEKAmI1Egt1c2VyQWxsb3dlZBoSCgJiNhIMYXVjdGlvblR5cGUxGhIKAmI3EgxhdWN0aW9uVHlwZTIaFAoCYjgSDmdldFN0cmluZ0J5S2V5GgkKAmI5EgNrZXkaHwoCYzESGWdldEludGVnZXJCeUtleUZyb21PcmFjbGUaFQoCYzISD2dldEludGVnZXJCeUtleRoUCgJjMxIOY2hlY2tXaGl0ZWxpc3QaFQoCYzQSD2dldEJvb2xlYW5CeUtleRoTCgJjNRINa2V5VXNlclN0YXR1cxoMCgJjNhIGY2FsbGVyGg0KAmM3EgdrZXlEYXRlGgsKAmM4EgVhcnRJZBoNCgJjORIHa2V5TmFtZRoNCgJkMRIHa2V5RGVzYxoTCgJkMhINa2V5RGlzcGxheUNpZBoQCgJkMxIKa2V5TWF4TWludBoRCgJkNBILa2V5TWluUHJpY2UaEwoCZDUSDWtleUhpZ2hlc3RCaWQaGAoCZDYSEmtleUhpZ2hlc3RCaWRCaWRJZBoOCgJkNxIIa2V5QmlkSWQaCwoCZDgSBWJpZElkGhEKAmQ5EgtrZXlEdXJhdGlvbhoSCgJlMRIMa2V5RW5kSGVpZ2h0GhQKAmUyEg5rZXlBdWN0aW9uVHlwZRoPCgJlMxIJa2V5SXNzdWVkGhIKAmU0EgxLZXlOZnRJc3N1ZXIaCwoCZTUSBW5mdElkGg8KAmU2EglrZXlPblNhbGUaFAoCZTcSDmtleUVudGl0bGVtZW50Gg0KAmU4EgdrZXlUYWdzGg0KAmU5EgdrZXlUeXBlGg4KAmYxEghrZXlQcmljZRoYCgJmMhISa2V5QXNzZXRJZEFjY2VwdGVkGhcKAmYzEhFrZXlIYXNoQnlUeGlkQWRkchoKCgJmNBIEdHhpZBoUCgJmNRIOa2V5T3duZXJCeUhhc2gaEAoCZjYSCnNoYTI1Nkhhc2gaGAoCZjcSEmtleVR4aWRCeUhhc2hPd25lchofCgJmOBIZY3VycmVudENlcnRpZmljYXRpb25QcmljZRoUCgJmORIOdmFsaWRhdGVTdHJpbmcaCQoCZzESA3N0choJCgJnMhIDbWF4GhIKAmczEgx2YWxpZGF0ZVVzZXIaEAoCZzQSCnVzZXJTdGF0dXMaGQoCZzUSE3ZhbGlkYXRlQXJ0d29ya0RhdGEaEAoCZzYSCmNpZERpc3BsYXkaCgoCZzcSBG5hbWUaEQoCZzgSC2Rlc2NyaXB0aW9uGgoKAmc5EgR0YWdzGg8KAmgxEgljaGVja1VzZXIaDwoCaDISCWlzUGF5bWVudBoHCgJoMxIBaRoNCgJoNBIHcGF5bWVudBoMCgJoNRIGYW1vdW50GhUKAmg2Eg92YWxpZGF0ZVBheW1lbnQaEAoCaDcSCnQwODk4MjkwMTgaDQoCaDgSB2Fzc2V0SWQaGgoCaDkSFHZhbGlkYXRlUHJpY2VBc3NldElkGhIKAmkxEgxwcmljZUFzc2V0SWQaEgoCaTISDGFydHdvcmtQcmljZRoQCgJpMxIKdDA5NjExOTY0NxoWCgJpNBIQYWNjZXB0ZWRBc3NldElkcxoVCgJpNRIPdmFsaWRhdGVNaW5TZWxsGgsKAmk2EgVwcmljZRoTCgJpNxINbWluU2VsbFNjb25leBoTCgJpOBINZ2V0QmlkQXNzZXRJZBocCgJpORIWZ2V0UHJpY2VBc3NldElkRnJvbUJpZBoQCgJqMRIKYmlkRGF0YUtleRoNCgJqMhIHYmlkRGF0YRoQCgJqMxIKYmlkRGF0YUFychoPCgJqNBIJYmlkQW1vdW50GhAKAmo1EgpiaWRBc3NldElkGhIKAmo2EgxpZENhbGxlckRhdGUaEAoCajcSCmlzQmlkQ2hlY2saDAoCajgSBmlzc3VlchoOCgJqORIIYmlkT3duZXIaEAoCazESCmdldEFydERhdGEaCwoCazISBWlzQmlkGhQKAmszEg5jYWxsZXJJc0lzc3VlchoOCgJrNBIIdG90YWxORlQaEQoCazUSC2FydHdvcmtOYW1lGg4KAms2Eghpc09uU2FsZRoQCgJrNxIKYW1vdW50U29sZBoQCgJrOBIKbWF4Q2FuU2VsbBoQCgJrORIKZ2V0QmlkRGF0YRoSCgJsMRIMdDAxMzUxOTEzNjQ4GhcKAmwyEhFnZXRDb21taXNzaW9uRGF0YRoTCgJsMxINaXNXaGl0ZWxpc3RlZBoJCgJsNBIDY3V0GhUKAmw1Eg9hbW91bnRGb3JTY29uZXgaFgoCbDYSEGFtb3VudEZvckNyZWF0b3IaEwoCbDcSDW5ld0Ftb3VudFNvbGQaEgoCbDgSDGdldElzc3VlRGF0YRoPCgJsORIJaXNzdWVNZXRhGg4KAm0xEghpc3N1ZU5GVBoLCgJtMhIFaWRORlQaEAoCbTMSCnNlbGxTdGF0dXMaEAoCbTQSCnJlY2VpdmVORlQaEgoCbTUSDGdldEJpZEtleVZhbBoKCgJtNhIEZGF0ZRoQCgJtNxIKYXNzZXRJZEJpZBoPCgJtOBIJYmlkRGVsT2xkGg8KAm05EgliaWRVcGRhdGUaDQoCbjESB2J1eU1pbnQaEgoCbjISDHQwMTU1MTYxNTU2NhoICgJuMxICaWQaEgoCbjQSDHQwMTU2NDYxNTc5NxoSCgJuNRIMdDAxNTgwMjE1OTQ4GhIKAm42Egx0MDE1OTUzMTYwOTUaEgoCbjcSDHQwMTYxMDAxNjI5MBoSCgJuOBIMdDAxNjI5NTE2Mzk0Gg0KAm45Egdzb2xkS2V5Gg8KAm8xEglzb2xkVmFsdWUaDgoCbzISCHNvbGREYXRhGgwKAm8zEgZidXlSZXMaGgoCbzQSFHNldEJpZE5vblRyYWRpdGlvbmFsGhIKAm81Egx0MDI3NzA5Mjc3NDcaEgoCbzYSDHQwMjc3NTIyNzc4OBoMCgJvNxIGYmlkTmJyGhcKAm84EhFzZXRCaWRUcmFkaXRpb25hbBoPCgJvORIJZW5kSGVpZ2h0GhAKAnAxEgpoaWdoZXN0QmlkGhEKAnAyEgtjYWxsZGVyRGF0YRoSCgJwMxIMaXNQYXltZW50VmFyGh0KAnA0EhdhY2NlcHRCaWROb25UcmFkaXRpb25hbBoUCgJwNRIOcmVzdGFydEF1Y3Rpb24aEgoCcDYSDG9sZEVuZEhlaWdodBoOCgJwNxIIZHVyYXRpb24aGgoCcDgSFGFjY2VwdEJpZFRyYWRpdGlvbmFsGhMKAnA5Eg1hbW91bnRCeUJpZElkGhEKAnExEgtidXlNaW50RGF0YRoYCgJxMhIScmVzdGFydEF1Y3Rpb25EYXRhGhMKAnEzEg1jYW5jZWxCaWRJbXBsGhIKAnE0Egx0MDI4OTQyMjkwOTQaDwoCcTUSCWJpZFN0YXR1cxoeCgJxNhIYY2FuY2VsQmlkSW1wbFRyYWRpdGlvbmFsGgoKAnE3EgR0eXBlGhIKAnE4Egx0MDE3NzQwMTc3ODEaFQoCcTkSD3ZhbGlkYXRlQXJ0d29yaxoSCgJyMRIMdDAxODE3MDE4MjEyGhAKAnIyEgplbnRyeUV4aXN0Gg8KAnIzEgloYXNoRXhpc3QaDQoCcjQSB21heE1pbnQaEQoCcjUSC2F1Y3Rpb25UeXBlGgwKAnI2EgZtaW5CaWQaEQoCcjcSC2VudGl0bGVtZW50GhIKAnI4Egx0MDI1NzE0MjU3NDcaCwoCcjkSBWVudHJ5AAAARwAAAAACYTEHAAAAAAJhMgkBAAAABXZhbHVlAAAAAQkABCYAAAABAgAAACMzTXBaUWp6R29nbWlmY0VLZThtRGQ2cmliTDdueFQ5QUN5ZQAAAAACYTMCAAAAIzNONjV4THE4SmNDZWFFaVIxVEpRN2RCcVhCdkV5NkU0OFd6AAAAAAJhNAkBAAAABXZhbHVlAAAAAQkABCYAAAABAgAAACMzTjljUWdaRlBISFZ1OHdxc24yRGtRRmVoZzNoOENOaW9vQQAAAAACYTUJAQAAAAV2YWx1ZQAAAAEJAAQmAAAAAQIAAAAjM045eFpZR3B6TUZEWHZYdWN0bVU2elY4cVN6bTJaZkYzMWYAAAAAAmE2AQAAACC6hu0QdKejwH9I+j+G8AYHkraWlmo7ShFw6+pV4JLTMwAAAAACYTcCAAAAIzNOMURocTVaWnlvb2pRaXN1VEx1c1lqbkdpc3FyeER3R0x5AAAAAAJhOAAAAAAAAAAAlgAAAAACYTkJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQbAAAAAgUAAAACYTQCAAAAFGNvbmZfZGFwcF9pc19ydW5uaW5nBgAAAAACYjEJAQAAAAt2YWx1ZU9yRWxzZQAA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", "height": 1669721, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: FtNWsyFPm6F3TjJaA5VcMpooc82jm41DFgYcAd6YL5h8 Next: 2ffxbYUjM33SPjJ8B8g6sae4T7JXqv7QUYYbVZP4BpHr Diff:
OldNewDifferences
7272 func keyHighestBid (artId) = ("art_highestBid_" + artId)
7373
7474
75+func keyHighestBidBidId (artId) = ("art_highestBidBidId_" + artId)
76+
77+
7578 func keyBidId (bidId) = ("bid_" + bidId)
7679
7780
9194
9295
9396 func keyOnSale (caller,artId) = ((("art_onsale_" + artId) + "_") + caller)
97+
98+
99+func keyEntitlement (caller,artId) = ((("art_entitlement_" + artId) + "_") + caller)
94100
95101
96102 func keyTags (caller,artId) = ((("art_tags_" + artId) + "_") + caller)
457463 then throw("No max edition set for this artwork")
458464 else if ((amountSold >= maxCanSell))
459465 then throw("Sold out, you cannot bid")
460- else [StringEntry((((((((("bid_" + artId) + "_") + issuer) + "_") + caller) + "_") + id) + "_OPEN"), ((((assetId + "_") + toString(amount)) + "_") + toString(date))), IntegerEntry(("current_bidamount_" + artId), (bidNbr + 1)), IntegerEntry(keyHighestBid(artId), amount), IntegerEntry(keyBidId(toBase58String(i.transactionId)), amount)]
466+ else [StringEntry((((((((("bid_" + artId) + "_") + issuer) + "_") + caller) + "_") + id) + "_OPEN"), ((((assetId + "_") + toString(amount)) + "_") + toString(date))), IntegerEntry(("current_bidamount_" + artId), (bidNbr + 1)), IntegerEntry(keyHighestBid(artId), amount), StringEntry(keyHighestBidBidId(artId), toBase58String(i.transactionId)), IntegerEntry(keyBidId(toBase58String(i.transactionId)), amount)]
461467 }
462468 }
463469 }
576582
577583
578584 @Callable(i)
579-func sellArtwork (artId,price,maxMint,assetId,auctionType,minBid,duration) = {
585+func sellArtwork (artId,price,maxMint,assetId,auctionType,minBid,duration,entitlement) = {
580586 let t02571425747 = idCallerDate(i)
581587 let id = t02571425747._1
582588 let caller = t02571425747._2
619625 then true
620626 else false
621627 let endHeight = (duration + height)
622-[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), IntegerEntry(keyHighestBid(artId), 0)]
628+[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), StringEntry(keyEntitlement(caller, artId), entitlement), IntegerEntry(keyHighestBid(artId), 0)]
623629 }
624630 }
625631 }
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 keyHighestBid (artId) = ("art_highestBid_" + artId)
7373
7474
75+func keyHighestBidBidId (artId) = ("art_highestBidBidId_" + artId)
76+
77+
7578 func keyBidId (bidId) = ("bid_" + bidId)
7679
7780
7881 func keyDuration (caller,artId) = ((("art_duration_" + artId) + "_") + caller)
7982
8083
8184 func keyEndHeight (caller,artId) = ((("art_endheight_" + artId) + "_") + caller)
8285
8386
8487 func keyAuctionType (caller,artId) = ((("art_auctiontype_" + artId) + "_") + caller)
8588
8689
8790 func keyIssued (caller,artId) = ((("art_issued_" + artId) + "_") + caller)
8891
8992
9093 func KeyNftIssuer (nftId) = ("nft_issued_" + nftId)
9194
9295
9396 func keyOnSale (caller,artId) = ((("art_onsale_" + artId) + "_") + caller)
97+
98+
99+func keyEntitlement (caller,artId) = ((("art_entitlement_" + artId) + "_") + caller)
94100
95101
96102 func keyTags (caller,artId) = ((("art_tags_" + artId) + "_") + caller)
97103
98104
99105 func keyType (caller,artId) = ((("art_type_" + artId) + "_") + caller)
100106
101107
102108 func keyPrice (caller,artId) = ((("art_price_" + artId) + "_") + caller)
103109
104110
105111 func keyAssetIdAccepted (caller,artId) = ((("art_assetAccepted_" + artId) + "_") + caller)
106112
107113
108114 func keyHashByTxidAddr (caller,txid) = ((("get_hashbytxidaddr_" + txid) + "_") + caller)
109115
110116
111117 func keyOwnerByHash (sha256Hash) = ("get_owner_by_hash_" + sha256Hash)
112118
113119
114120 func keyTxidByHashOwner (sha256Hash,caller) = ("get_txid_by_hash_owner_" + toBase58String(sha256_16Kb(toBytes((sha256Hash + caller)))))
115121
116122
117123 let currentCertificationPrice = getIntegerByKeyFromOracle(("certification_fee_" + toBase58String(sconexAssetId)))
118124
119125 func validateString (str,max) = if ((size(str) == 0))
120126 then throw("Field cannot be is empty")
121127 else if ((size(str) > max))
122128 then throw((str + " is too long"))
123129 else true
124130
125131
126132 func validateUser (caller) = {
127133 let userStatus = valueOrElse(getString(userDapp, keyUserStatus(caller)), userUnregistered)
128134 if (if ((userStatus == userUnregistered))
129135 then true
130136 else (userStatus == userAllowed))
131137 then "Register this account first with 'Account' tab"
132138 else if ((userStatus == userSuspended))
133139 then "Account suspended"
134140 else if ((userStatus == userRemoved))
135141 then "Account removed"
136142 else ""
137143 }
138144
139145
140146 func validateArtworkData (caller,cidDisplay,name,description,tags) = {
141147 let checkUser = validateUser(caller)
142148 if ((checkUser != ""))
143149 then throw(checkUser)
144150 else if ((size(cidDisplay) == 0))
145151 then throw("Display CID cannot be empty")
146152 else if (!(validateString(name, 100)))
147153 then throw("100 Char. max name")
148154 else if (!(validateString(description, 1000)))
149155 then throw("1000 Char. max description")
150156 else if ((size(split(tags, ",")) > 5))
151157 then throw("5 tags max.")
152158 else ""
153159 }
154160
155161
156162 func isPayment (i) = if ((size(i.payments) == 0))
157163 then throw("No payment attached")
158164 else {
159165 let payment = value(i.payments[0])
160166 let amount = value(payment.amount)
161167 $Tuple2(payment, amount)
162168 }
163169
164170
165171 func validatePayment (i) = {
166172 let t089829018 = isPayment(i)
167173 let payment = t089829018._1
168174 let amount = t089829018._2
169175 let assetId = if (if (isDefined(payment.assetId))
170176 then (payment.assetId == sconexAssetId)
171177 else false)
172178 then payment.assetId
173179 else throw("Only Sconex token accepted as transaction fee")
174180 if ((amount != currentCertificationPrice))
175181 then throw(("Payment amount should be " + toString(currentCertificationPrice)))
176182 else $Tuple2(amount, assetId)
177183 }
178184
179185
180186 func validatePriceAssetId (i,priceAssetId,artworkPrice) = {
181187 let t096119647 = isPayment(i)
182188 let payment = t096119647._1
183189 let amount = t096119647._2
184190 let assetId = if (!(isDefined(payment.assetId)))
185191 then throw("Wrong asset id")
186192 else if (if ((size(priceAssetId) > 0))
187193 then (toBase58String(value(payment.assetId)) == priceAssetId)
188194 else false)
189195 then payment.assetId
190196 else throw("Wrong asset id")
191197 if (if ((assetId == unit))
192198 then (priceAssetId != "")
193199 else false)
194200 then throw("Wrong asset id")
195201 else if ((artworkPrice != amount))
196202 then throw("Payment don't match")
197203 else $Tuple2(amount, assetId)
198204 }
199205
200206
201207 func acceptedAssetIds (assetId) = if ((assetId != toBase58String(sconexAssetId)))
202208 then throw("Only Sconex accepted")
203209 else true
204210
205211
206212 func validateMinSell (assetId,price) = {
207213 let minSellSconex = if (unitTest)
208214 then 1
209215 else (currentCertificationPrice * 2)
210216 if (if (if ((assetId == toBase58String(sconexAssetId)))
211217 then (minSellSconex > price)
212218 else false)
213219 then (price != 0)
214220 else false)
215221 then throw(("Wrong minimum sell price " + toString(minSellSconex)))
216222 else true
217223 }
218224
219225
220226 func getBidAssetId (assetId) = if ((assetId == "WAVES"))
221227 then throw("Only sconex is accepted!")
222228 else fromBase58String(assetId)
223229
224230
225231 func getPriceAssetIdFromBid (bidDataKey) = {
226232 let bidData = getStringByKey((bidDataKey + "_OPEN"))
227233 if ((bidData == ""))
228234 then throw("Bid not found")
229235 else {
230236 let bidDataArr = split(bidData, "_")
231237 let bidAmount = parseIntValue(bidDataArr[1])
232238 let bidAssetId = getBidAssetId(bidDataArr[0])
233239 if ((0 >= bidAmount))
234240 then throw("Wrong amount")
235241 else $Tuple2(bidAmount, bidAssetId)
236242 }
237243 }
238244
239245
240246 func idCallerDate (i) = if (!(dappRunning))
241247 then throw(maintenanceMSG)
242248 else $Tuple3(toBase58String(i.transactionId), toBase58String(i.caller.bytes), lastBlock.timestamp)
243249
244250
245251 func isBidCheck (i,issuer,bidOwner,bidId) = if (if (if ((toBase58String(i.caller.bytes) == issuer))
246252 then (bidOwner != "")
247253 else false)
248254 then (bidId != "")
249255 else false)
250256 then true
251257 else false
252258
253259
254260 func getArtData (i,issuer,artId,isBid) = {
255261 let callerIsIssuer = (toBase58String(i.caller.bytes) == issuer)
256262 let totalNFT = getIntegerByKey("total_nft_issued")
257263 let artworkName = getStringByKey(keyName(issuer, artId))
258264 if ((artworkName == ""))
259265 then throw("Art doesn't exist")
260266 else {
261267 let isOnSale = getBooleanByKey(keyOnSale(issuer, artId))
262268 let amountSold = getIntegerByKey(keyIssued(issuer, artId))
263269 let artworkPrice = if (callerIsIssuer)
264270 then (currentCertificationPrice * 2)
265271 else getIntegerByKey(keyPrice(issuer, artId))
266272 let priceAssetId = if (callerIsIssuer)
267273 then toBase58String(sconexAssetId)
268274 else getStringByKey(keyAssetIdAccepted(issuer, artId))
269275 let maxCanSell = getIntegerByKey(keyMaxMint(issuer, artId))
270276 if (if (if (!(isBid))
271277 then !(callerIsIssuer)
272278 else false)
273279 then if (if ((0 >= artworkPrice))
274280 then true
275281 else !(isOnSale))
276282 then true
277283 else (0 >= maxCanSell)
278284 else false)
279285 then throw("Art not for sale")
280286 else if (if (if (!(isBid))
281287 then callerIsIssuer
282288 else false)
283289 then (0 >= maxCanSell)
284290 else false)
285291 then throw("Max issuable not set")
286292 else $Tuple7(totalNFT, artworkName, amountSold, artworkPrice, priceAssetId, maxCanSell, isOnSale)
287293 }
288294 }
289295
290296
291297 func getBidData (i,caller,issuer,artId,bidOwner,bidId,priceAssetId,artworkPrice,isBid) = {
292298 let checkUser = validateUser(issuer)
293299 if (if (isBid)
294300 then (checkUser != "")
295301 else false)
296302 then throw(checkUser)
297303 else {
298304 let bidDataKey = ((((((("bid_" + artId) + "_") + issuer) + "_") + bidOwner) + "_") + bidId)
299305 let t01351913648 = if (isBid)
300306 then getPriceAssetIdFromBid(bidDataKey)
301307 else validatePriceAssetId(i, priceAssetId, artworkPrice)
302308 let amount = t01351913648._1
303309 let assetId = t01351913648._2
304310 $Tuple3(bidDataKey, amount, assetId)
305311 }
306312 }
307313
308314
309315 func getCommissionData (issuer,assetId,amount,amountSold,maxCanSell) = {
310316 let isWhitelisted = checkWhitelist(issuer)
311317 let cut = if ((isWhitelisted > height))
312318 then 0
313319 else if ((assetId == sconexAssetId))
314320 then sconexFirstSellCut
315321 else throw("Only Sconex is accepted!")
316322 let amountForSconex = fraction(amount, cut, 1000)
317323 let amountForCreator = (amount - amountForSconex)
318324 if ((amountSold == maxCanSell))
319325 then throw("Art sold out")
320326 else {
321327 let newAmountSold = (amountSold + 1)
322328 $Tuple3(amountForSconex, amountForCreator, newAmountSold)
323329 }
324330 }
325331
326332
327333 func getIssueData (issuer,artId,artworkName,newAmountSold,maxCanSell,totalNFT,caller,bidOwner,bidId,i,isOnSale) = {
328334 let issueMeta = ((((((((("Creator: " + issuer) + ",ArtID: ") + artId) + ",Artwork name: ") + artworkName) + ",Issue: ") + toString(newAmountSold)) + "/") + toString(maxCanSell))
329335 let issueNFT = Issue(("SCONEX_" + toString((totalNFT + 1))), issueMeta, 1, 0, false)
330336 let idNFT = calculateAssetId(issueNFT)
331337 let sellStatus = if (if ((newAmountSold == maxCanSell))
332338 then true
333339 else !(isOnSale))
334340 then false
335341 else true
336342 let receiveNFT = if (if (if ((caller == issuer))
337343 then (bidOwner != "")
338344 else false)
339345 then (bidId != "")
340346 else false)
341347 then addressFromStringValue(bidOwner)
342348 else i.caller
343349 $Tuple4(issueNFT, idNFT, sellStatus, receiveNFT)
344350 }
345351
346352
347353 func getBidKeyVal (assetId,bidDataKey,date) = {
348354 let assetIdBid = if (!(isDefined(assetId)))
349355 then throw("Only sconex is accepted")
350356 else toBase58String(value(assetId))
351357 let bidData = getStringByKey((bidDataKey + "_OPEN"))
352358 let bidDelOld = DeleteEntry((bidDataKey + "_OPEN"))
353359 let bidUpdate = StringEntry((bidDataKey + "_CLOSED"), ((bidData + "_") + toString(date)))
354360 $Tuple3(assetIdBid, bidDelOld, bidUpdate)
355361 }
356362
357363
358364 func buyMint (i,artId,issuer,bidId,bidOwner) = {
359365 let t01551615566 = idCallerDate(i)
360366 let id = t01551615566._1
361367 let caller = t01551615566._2
362368 let date = t01551615566._3
363369 let isBid = isBidCheck(i, issuer, bidOwner, bidId)
364370 let t01564615797 = getArtData(i, issuer, artId, isBid)
365371 let totalNFT = t01564615797._1
366372 let artworkName = t01564615797._2
367373 let amountSold = t01564615797._3
368374 let artworkPrice = t01564615797._4
369375 let priceAssetId = t01564615797._5
370376 let maxCanSell = t01564615797._6
371377 let isOnSale = t01564615797._7
372378 let t01580215948 = getBidData(i, caller, issuer, artId, bidOwner, bidId, priceAssetId, artworkPrice, isBid)
373379 let bidDataKey = t01580215948._1
374380 let amount = t01580215948._2
375381 let assetId = t01580215948._3
376382 let t01595316095 = getCommissionData(issuer, value(assetId), amount, amountSold, maxCanSell)
377383 let amountForSconex = t01595316095._1
378384 let amountForCreator = t01595316095._2
379385 let newAmountSold = t01595316095._3
380386 let t01610016290 = getIssueData(issuer, artId, artworkName, newAmountSold, maxCanSell, totalNFT, caller, bidOwner, bidId, i, isOnSale)
381387 let issueNFT = t01610016290._1
382388 let idNFT = t01610016290._2
383389 let sellStatus = t01610016290._3
384390 let receiveNFT = t01610016290._4
385391 let t01629516394 = getBidKeyVal(assetId, bidDataKey, date)
386392 let assetIdBid = t01629516394._1
387393 let bidDelOld = t01629516394._2
388394 let bidUpdate = t01629516394._3
389395 let soldKey = ((((((("art_sold_" + toString(newAmountSold)) + "_of_") + toString(maxCanSell)) + "_") + artId) + "_") + issuer)
390396 let soldValue = if (!(isBid))
391397 then ((((((((((caller + "_") + toString(date)) + "_") + id) + "_") + toString(artworkPrice)) + "_") + priceAssetId) + "_") + toBase58String(idNFT))
392398 else ((((((((((toString(receiveNFT) + "_") + toString(date)) + "_") + id) + "_") + toString(amount)) + "_") + assetIdBid) + "_") + toBase58String(idNFT))
393399 let soldData = StringEntry(soldKey, soldValue)
394400 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)]
395401 if (isBid)
396402 then (((buyRes :+ soldData) :+ bidUpdate) :+ bidDelOld)
397403 else soldData :: buyRes
398404 }
399405
400406
401407 func setBidNonTraditional (i,artId,issuer) = {
402408 let t02770927747 = idCallerDate(i)
403409 let id = t02770927747._1
404410 let caller = t02770927747._2
405411 let date = t02770927747._3
406412 let t02775227788 = isPayment(i)
407413 let payment = t02775227788._1
408414 let amount = t02775227788._2
409415 let assetId = if (!(isDefined(payment.assetId)))
410416 then throw("Only sconex is accepted!")
411417 else toBase58String(value(payment.assetId))
412418 let bidNbr = getIntegerByKey(("current_bidamount_" + artId))
413419 if (!(acceptedAssetIds(assetId)))
414420 then throw("asset not accepted")
415421 else if (!(validateMinSell(assetId, amount)))
416422 then throw("Wrong min sell")
417423 else {
418424 let amountSold = getIntegerByKey(keyIssued(issuer, artId))
419425 let maxCanSell = getIntegerByKey(keyMaxMint(issuer, artId))
420426 if ((0 >= maxCanSell))
421427 then throw("No max edition set for this artwork")
422428 else if ((amountSold >= maxCanSell))
423429 then throw("Sold out, you cannot bid")
424430 else [StringEntry((((((((("bid_" + artId) + "_") + issuer) + "_") + caller) + "_") + id) + "_OPEN"), ((((assetId + "_") + toString(amount)) + "_") + toString(date))), IntegerEntry(("current_bidamount_" + artId), (bidNbr + 1))]
425431 }
426432 }
427433
428434
429435 func setBidTraditional (i,artId,issuer) = {
430436 let endHeight = getIntegerByKey(keyEndHeight(issuer, artId))
431437 let highestBid = getIntegerByKey(keyHighestBid(artId))
432438 if ((height > endHeight))
433439 then throw("This auction is finished already!")
434440 else {
435441 let callderData = idCallerDate(i)
436442 let id = callderData._1
437443 let caller = callderData._2
438444 let date = callderData._3
439445 let isPaymentVar = isPayment(i)
440446 let payment = isPaymentVar._1
441447 let amount = isPaymentVar._2
442448 if ((highestBid >= amount))
443449 then throw(("Please place a bid higher then: " + toString(highestBid)))
444450 else {
445451 let assetId = if (!(isDefined(payment.assetId)))
446452 then throw("Only sconex is accepted!")
447453 else toBase58String(value(payment.assetId))
448454 let bidNbr = getIntegerByKey(("current_bidamount_" + artId))
449455 if (!(acceptedAssetIds(assetId)))
450456 then throw("asset not accepted")
451457 else if (!(validateMinSell(assetId, amount)))
452458 then throw("Wrong min sell")
453459 else {
454460 let amountSold = getIntegerByKey(keyIssued(issuer, artId))
455461 let maxCanSell = getIntegerByKey(keyMaxMint(issuer, artId))
456462 if ((0 >= maxCanSell))
457463 then throw("No max edition set for this artwork")
458464 else if ((amountSold >= maxCanSell))
459465 then throw("Sold out, you cannot bid")
460- else [StringEntry((((((((("bid_" + artId) + "_") + issuer) + "_") + caller) + "_") + id) + "_OPEN"), ((((assetId + "_") + toString(amount)) + "_") + toString(date))), IntegerEntry(("current_bidamount_" + artId), (bidNbr + 1)), IntegerEntry(keyHighestBid(artId), amount), IntegerEntry(keyBidId(toBase58String(i.transactionId)), amount)]
466+ else [StringEntry((((((((("bid_" + artId) + "_") + issuer) + "_") + caller) + "_") + id) + "_OPEN"), ((((assetId + "_") + toString(amount)) + "_") + toString(date))), IntegerEntry(("current_bidamount_" + artId), (bidNbr + 1)), IntegerEntry(keyHighestBid(artId), amount), StringEntry(keyHighestBidBidId(artId), toBase58String(i.transactionId)), IntegerEntry(keyBidId(toBase58String(i.transactionId)), amount)]
461467 }
462468 }
463469 }
464470 }
465471
466472
467473 func acceptBidNonTraditional (i,artId,issuer,bidId,bidOwner) = {
468474 let caller = toBase58String(i.caller.bytes)
469475 if ((caller != issuer))
470476 then throw("You cannot do this action")
471477 else buyMint(i, artId, issuer, bidId, bidOwner)
472478 }
473479
474480
475481 func restartAuction (artId,issuer) = {
476482 let amountSold = getIntegerByKey(keyIssued(issuer, artId))
477483 let maxCanSell = getIntegerByKey(keyMaxMint(issuer, artId))
478484 let oldEndHeight = getIntegerByKey(keyEndHeight(issuer, artId))
479485 let duration = getIntegerByKey(keyDuration(issuer, artId))
480486 let endHeight = (duration + height)
481487 if ((height > oldEndHeight))
482488 then if ((amountSold == maxCanSell))
483489 then throw("Can't restart auction, max amount sold")
484490 else [IntegerEntry(keyHighestBid(artId), 0), IntegerEntry(keyDuration(issuer, artId), duration), IntegerEntry(keyEndHeight(issuer, artId), endHeight)]
485491 else throw("Previous auction isn't completed yet")
486492 }
487493
488494
489495 func acceptBidTraditional (i,artId,issuer,bidId,bidOwner) = {
490496 let endHeight = getIntegerByKey(keyEndHeight(issuer, artId))
491497 let highestBid = getIntegerByKey(keyHighestBid(artId))
492498 let amountByBidId = getIntegerByKey(keyBidId(bidId))
493499 if ((height > endHeight))
494500 then if ((amountByBidId == highestBid))
495501 then {
496502 let buyMintData = buyMint(i, artId, issuer, bidId, bidOwner)
497503 let restartAuctionData = restartAuction(artId, issuer)
498504 (restartAuctionData ++ buyMintData)
499505 }
500506 else throw("This is not the winning bid!")
501507 else throw("This auction is not yet finished!")
502508 }
503509
504510
505511 func cancelBidImpl (i,artId,issuer,bidId) = {
506512 let t02894229094 = idCallerDate(i)
507513 let id = t02894229094._1
508514 let caller = t02894229094._2
509515 let date = t02894229094._3
510516 let bidNbr = getIntegerByKey(("current_bidamount_" + artId))
511517 let bidDataKey = ((((((("bid_" + artId) + "_") + issuer) + "_") + caller) + "_") + bidId)
512518 let bidData = getStringByKey((bidDataKey + "_OPEN"))
513519 if ((bidData == ""))
514520 then throw("Bid not found")
515521 else {
516522 let bidDataArr = split(bidData, "_")
517523 let assetId = getBidAssetId(bidDataArr[0])
518524 let bidStatus = "CANCELED"
519525 [DeleteEntry((bidDataKey + "_OPEN")), StringEntry(((bidDataKey + "_") + bidStatus), ((bidData + "_") + toString(date))), IntegerEntry(("current_bidamount_" + artId), (bidNbr - 1)), ScriptTransfer(Address(fromBase58String(caller)), parseIntValue(bidDataArr[1]), assetId)]
520526 }
521527 }
522528
523529
524530 func cancelBidImplTraditional (i,artId,issuer,bidId) = {
525531 let t02894229094 = idCallerDate(i)
526532 let id = t02894229094._1
527533 let caller = t02894229094._2
528534 let date = t02894229094._3
529535 let bidNbr = getIntegerByKey(("current_bidamount_" + artId))
530536 let bidDataKey = ((((((("bid_" + artId) + "_") + issuer) + "_") + caller) + "_") + bidId)
531537 let bidData = getStringByKey((bidDataKey + "_OPEN"))
532538 if ((bidData == ""))
533539 then throw("Bid not found")
534540 else {
535541 let bidDataArr = split(bidData, "_")
536542 let assetId = getBidAssetId(bidDataArr[0])
537543 let bidStatus = "CANCELED"
538544 let bidAmount = parseIntValue(bidDataArr[1])
539545 let highestBid = getIntegerByKey(keyHighestBid(artId))
540546 if ((bidAmount == highestBid))
541547 then throw("You can't cancel the highest bid!")
542548 else [DeleteEntry((bidDataKey + "_OPEN")), StringEntry(((bidDataKey + "_") + bidStatus), ((bidData + "_") + toString(date))), IntegerEntry(("current_bidamount_" + artId), (bidNbr - 1)), ScriptTransfer(Address(fromBase58String(caller)), bidAmount, assetId)]
543549 }
544550 }
545551
546552
547553 @Callable(i)
548554 func addArtwork (sha256Hash,name,description,tags,type,cidDisplay) = {
549555 let t01774017781 = idCallerDate(i)
550556 let artId = t01774017781._1
551557 let caller = t01774017781._2
552558 let date = t01774017781._3
553559 let validateArtwork = validateArtworkData(caller, cidDisplay, name, description, tags)
554560 if ((validateArtwork != ""))
555561 then throw("Something went wrong!")
556562 else {
557563 let t01817018212 = validatePayment(i)
558564 let amount = t01817018212._1
559565 let assetId = t01817018212._2
560566 if (!(isDefined(amount)))
561567 then throw("Something went wrong")
562568 else {
563569 let entryExist = getStringByKey(keyTxidByHashOwner(sha256Hash, caller))
564570 if ((entryExist != ""))
565571 then throw("You already added it")
566572 else {
567573 let hashExist = getStringByKey(keyOwnerByHash(sha256Hash))
568574 if ((hashExist != ""))
569575 then throw("Hash already registered")
570576 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), ScriptTransfer(Address(fromBase58String(feeReceiver)), amount, assetId)]
571577 }
572578 }
573579 }
574580 }
575581
576582
577583
578584 @Callable(i)
579-func sellArtwork (artId,price,maxMint,assetId,auctionType,minBid,duration) = {
585+func sellArtwork (artId,price,maxMint,assetId,auctionType,minBid,duration,entitlement) = {
580586 let t02571425747 = idCallerDate(i)
581587 let id = t02571425747._1
582588 let caller = t02571425747._2
583589 let artworkName = getStringByKey(keyName(caller, artId))
584590 if (!(containsElement([auctionType1, auctionType2], auctionType)))
585591 then throw("We dont know this auction type")
586592 else if ((artworkName == ""))
587593 then throw("This art doesn't match your account")
588594 else {
589595 let bidNbr = getIntegerByKey(("current_bidamount_" + artId))
590596 if (!(acceptedAssetIds(assetId)))
591597 then throw("Something went wrong!")
592598 else if (!(validateMinSell(assetId, price)))
593599 then throw("Something went wrong!")
594600 else {
595601 let checkUser = validateUser(caller)
596602 if ((checkUser != ""))
597603 then throw(checkUser)
598604 else {
599605 let amountSold = getIntegerByKey(keyIssued(caller, artId))
600606 let maxCanSell = getIntegerByKey(keyMaxMint(caller, artId))
601607 if ((maxMint > 10))
602608 then throw("10 editions max per artwork")
603609 else if (if ((amountSold != 0))
604610 then (amountSold == maxCanSell)
605611 else false)
606612 then throw("Max edition reached.")
607613 else if (if ((amountSold > 0))
608614 then (maxCanSell != maxMint)
609615 else false)
610616 then throw("Cannot change maximum issuable anymore")
611617 else if (if ((bidNbr > 0))
612618 then (maxCanSell != maxMint)
613619 else false)
614620 then throw("Cannot change maximum issuable with active orders")
615621 else {
616622 let sellStatus = if (if ((price > 0))
617623 then (maxMint > 0)
618624 else false)
619625 then true
620626 else false
621627 let endHeight = (duration + height)
622-[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), IntegerEntry(keyHighestBid(artId), 0)]
628+[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), StringEntry(keyEntitlement(caller, artId), entitlement), IntegerEntry(keyHighestBid(artId), 0)]
623629 }
624630 }
625631 }
626632 }
627633 }
628634
629635
630636
631637 @Callable(i)
632638 func buyArtwork (artId,issuer) = buyMint(i, artId, issuer, "", "")
633639
634640
635641
636642 @Callable(i)
637643 func deleteEntry (entry) = {
638644 let caller = toString(addressFromPublicKey(i.callerPublicKey))
639645 if ((caller == owner))
640646 then [DeleteEntry(entry)]
641647 else throw("no")
642648 }
643649
644650
645651
646652 @Callable(i)
647653 func setBid (artId,issuer) = {
648654 let auctionType = getStringByKey(keyAuctionType(issuer, artId))
649655 if ((auctionType == auctionType1))
650656 then setBidNonTraditional(i, artId, issuer)
651657 else if ((auctionType == auctionType2))
652658 then setBidTraditional(i, artId, issuer)
653659 else throw((("Unknown auction type :" + auctionType) + ", please contact the admins"))
654660 }
655661
656662
657663
658664 @Callable(i)
659665 func acceptBid (artId,issuer,bidId,bidOwner) = {
660666 let auctionType = getStringByKey(keyAuctionType(issuer, artId))
661667 if ((auctionType == auctionType1))
662668 then acceptBidNonTraditional(i, artId, issuer, bidId, bidOwner)
663669 else if ((auctionType == auctionType2))
664670 then acceptBidTraditional(i, artId, issuer, bidId, bidOwner)
665671 else throw((("Unknown auction type :" + auctionType) + ", please contact the admins"))
666672 }
667673
668674
669675
670676 @Callable(i)
671677 func cancelBid (artId,issuer,bidId) = {
672678 let auctionType = getStringByKey(keyAuctionType(issuer, artId))
673679 if ((auctionType == auctionType1))
674680 then cancelBidImpl(i, artId, issuer, bidId)
675681 else cancelBidImplTraditional(i, artId, issuer, bidId)
676682 }
677683
678684

github/deemru/w8io/169f3d6 
83.91 ms