tx · 2ffxbYUjM33SPjJ8B8g6sae4T7JXqv7QUYYbVZP4BpHr

3MrWNTqFcHBqb58Za1A5crQrMV5KJ5DYhtA:  -0.01000000 Waves

2021.08.22 18:33 [1669725] smart account 3MrWNTqFcHBqb58Za1A5crQrMV5KJ5DYhtA > SELF 0.00000000 Waves

{ "type": 13, "id": "2ffxbYUjM33SPjJ8B8g6sae4T7JXqv7QUYYbVZP4BpHr", "fee": 1000000, "feeAssetId": null, "timestamp": 1629646458341, "version": 2, "chainId": 84, "sender": "3MrWNTqFcHBqb58Za1A5crQrMV5KJ5DYhtA", "senderPublicKey": "9abKuN1XmLjjire2feZH26PmcEWhEXxiHToWSmii3Gn2", "proofs": [ "4ffq28xpCZgDoxJpqK3tZnfr6XRtT7kawRdb5RnG2DDbtSq8C35EMgr4ntCsHtmkpdjesZFKWPf6vh5Uv5DsBwpQ" ], "script": "base64:AAIFAAAAAAAADC4IAhIJCgcICAgICAgIEgkKBwgBAQgIAQESBAoCCAgSAwoBCBIECgIICBIGCgQICAgIEgUKAwgICBoOCgJhMRIIdW5pdFRlc3QaDwoCYTISCW9yYWNsZUZlZRoRCgJhMxILZmVlUmVjZWl2ZXIaDgoCYTQSCHVzZXJEYXBwGhMKAmE1Eg13aGl0ZWxpc3REYXBwGhMKAmE2Eg1zY29uZXhBc3NldElkGgsKAmE3EgVvd25lchoYCgJhOBISc2NvbmV4Rmlyc3RTZWxsQ3V0GhEKAmE5EgtkYXBwUnVubmluZxoUCgJiMRIObWFpbnRlbmFuY2VNU0caEwoCYjISDXVzZXJTdXNwZW5kZWQaEQoCYjMSC3VzZXJSZW1vdmVkGhYKAmI0EhB1c2VyVW5yZWdpc3RlcmVkGhEKAmI1Egt1c2VyQWxsb3dlZBoSCgJiNhIMYXVjdGlvblR5cGUxGhIKAmI3EgxhdWN0aW9uVHlwZTIaFAoCYjgSDmdldFN0cmluZ0J5S2V5GgkKAmI5EgNrZXkaHwoCYzESGWdldEludGVnZXJCeUtleUZyb21PcmFjbGUaFQoCYzISD2dldEludGVnZXJCeUtleRoUCgJjMxIOY2hlY2tXaGl0ZWxpc3QaFQoCYzQSD2dldEJvb2xlYW5CeUtleRoTCgJjNRINa2V5VXNlclN0YXR1cxoMCgJjNhIGY2FsbGVyGg0KAmM3EgdrZXlEYXRlGgsKAmM4EgVhcnRJZBoNCgJjORIHa2V5TmFtZRoNCgJkMRIHa2V5RGVzYxoTCgJkMhINa2V5RGlzcGxheUNpZBoQCgJkMxIKa2V5TWF4TWludBoRCgJkNBILa2V5TWluUHJpY2UaEwoCZDUSDWtleUhpZ2hlc3RCaWQaGAoCZDYSEmtleUhpZ2hlc3RCaWRCaWRJZBoOCgJkNxIIa2V5QmlkSWQaCwoCZDgSBWJpZElkGhEKAmQ5EgtrZXlEdXJhdGlvbhoSCgJlMRIMa2V5RW5kSGVpZ2h0GhQKAmUyEg5rZXlBdWN0aW9uVHlwZRoPCgJlMxIJa2V5SXNzdWVkGhIKAmU0EgxLZXlOZnRJc3N1ZXIaCwoCZTUSBW5mdElkGg8KAmU2EglrZXlPblNhbGUaFAoCZTcSDmtleUVudGl0bGVtZW50Gg0KAmU4EgdrZXlUYWdzGg0KAmU5EgdrZXlUeXBlGg4KAmYxEghrZXlQcmljZRoYCgJmMhISa2V5QXNzZXRJZEFjY2VwdGVkGhcKAmYzEhFrZXlIYXNoQnlUeGlkQWRkchoKCgJmNBIEdHhpZBoUCgJmNRIOa2V5T3duZXJCeUhhc2gaEAoCZjYSCnNoYTI1Nkhhc2gaGAoCZjcSEmtleVR4aWRCeUhhc2hPd25lchofCgJmOBIZY3VycmVudENlcnRpZmljYXRpb25QcmljZRoUCgJmORIOdmFsaWRhdGVTdHJpbmcaCQoCZzESA3N0choJCgJnMhIDbWF4GhIKAmczEgx2YWxpZGF0ZVVzZXIaEAoCZzQSCnVzZXJTdGF0dXMaGQoCZzUSE3ZhbGlkYXRlQXJ0d29ya0RhdGEaEAoCZzYSCmNpZERpc3BsYXkaCgoCZzcSBG5hbWUaEQoCZzgSC2Rlc2NyaXB0aW9uGgoKAmc5EgR0YWdzGg8KAmgxEgljaGVja1VzZXIaDwoCaDISCWlzUGF5bWVudBoHCgJoMxIBaRoNCgJoNBIHcGF5bWVudBoMCgJoNRIGYW1vdW50GhUKAmg2Eg92YWxpZGF0ZVBheW1lbnQaEAoCaDcSCnQwODk4MjkwMTgaDQoCaDgSB2Fzc2V0SWQaGgoCaDkSFHZhbGlkYXRlUHJpY2VBc3NldElkGhIKAmkxEgxwcmljZUFzc2V0SWQaEgoCaTISDGFydHdvcmtQcmljZRoQCgJpMxIKdDA5NjExOTY0NxoWCgJpNBIQYWNjZXB0ZWRBc3NldElkcxoVCgJpNRIPdmFsaWRhdGVNaW5TZWxsGgsKAmk2EgVwcmljZRoTCgJpNxINbWluU2VsbFNjb25leBoTCgJpOBINZ2V0QmlkQXNzZXRJZBocCgJpORIWZ2V0UHJpY2VBc3NldElkRnJvbUJpZBoQCgJqMRIKYmlkRGF0YUtleRoNCgJqMhIHYmlkRGF0YRoQCgJqMxIKYmlkRGF0YUFychoPCgJqNBIJYmlkQW1vdW50GhAKAmo1EgpiaWRBc3NldElkGhIKAmo2EgxpZENhbGxlckRhdGUaEAoCajcSCmlzQmlkQ2hlY2saDAoCajgSBmlzc3VlchoOCgJqORIIYmlkT3duZXIaEAoCazESCmdldEFydERhdGEaCwoCazISBWlzQmlkGhQKAmszEg5jYWxsZXJJc0lzc3VlchoOCgJrNBIIdG90YWxORlQaEQoCazUSC2FydHdvcmtOYW1lGg4KAms2Eghpc09uU2FsZRoQCgJrNxIKYW1vdW50U29sZBoQCgJrOBIKbWF4Q2FuU2VsbBoQCgJrORIKZ2V0QmlkRGF0YRoSCgJsMRIMdDAxMzUxOTEzNjQ4GhcKAmwyEhFnZXRDb21taXNzaW9uRGF0YRoTCgJsMxINaXNXaGl0ZWxpc3RlZBoJCgJsNBIDY3V0GhUKAmw1Eg9hbW91bnRGb3JTY29uZXgaFgoCbDYSEGFtb3VudEZvckNyZWF0b3IaEwoCbDcSDW5ld0Ftb3VudFNvbGQaEgoCbDgSDGdldElzc3VlRGF0YRoPCgJsORIJaXNzdWVNZXRhGg4KAm0xEghpc3N1ZU5GVBoLCgJtMhIFaWRORlQaEAoCbTMSCnNlbGxTdGF0dXMaEAoCbTQSCnJlY2VpdmVORlQaEgoCbTUSDGdldEJpZEtleVZhbBoKCgJtNhIEZGF0ZRoQCgJtNxIKYXNzZXRJZEJpZBoPCgJtOBIJYmlkRGVsT2xkGg8KAm05EgliaWRVcGRhdGUaDQoCbjESB2J1eU1pbnQaEgoCbjISDHQwMTU1MTYxNTU2NhoICgJuMxICaWQaEgoCbjQSDHQwMTU2NDYxNTc5NxoSCgJuNRIMdDAxNTgwMjE1OTQ4GhIKAm42Egx0MDE1OTUzMTYwOTUaEgoCbjcSDHQwMTYxMDAxNjI5MBoSCgJuOBIMdDAxNjI5NTE2Mzk0Gg0KAm45Egdzb2xkS2V5Gg8KAm8xEglzb2xkVmFsdWUaDgoCbzISCHNvbGREYXRhGgwKAm8zEgZidXlSZXMaGgoCbzQSFHNldEJpZE5vblRyYWRpdGlvbmFsGhIKAm81Egx0MDI3NzA5Mjc3NDcaEgoCbzYSDHQwMjc3NTIyNzc4OBoMCgJvNxIGYmlkTmJyGhcKAm84EhFzZXRCaWRUcmFkaXRpb25hbBoPCgJvORIJZW5kSGVpZ2h0GhAKAnAxEgpoaWdoZXN0QmlkGhEKAnAyEgtjYWxsZGVyRGF0YRoSCgJwMxIMaXNQYXltZW50VmFyGh0KAnA0EhdhY2NlcHRCaWROb25UcmFkaXRpb25hbBoUCgJwNRIOcmVzdGFydEF1Y3Rpb24aEgoCcDYSDG9sZEVuZEhlaWdodBoOCgJwNxIIZHVyYXRpb24aGgoCcDgSFGFjY2VwdEJpZFRyYWRpdGlvbmFsGhMKAnA5Eg1hbW91bnRCeUJpZElkGhEKAnExEgtidXlNaW50RGF0YRoYCgJxMhIScmVzdGFydEF1Y3Rpb25EYXRhGhMKAnEzEg1jYW5jZWxCaWRJbXBsGhIKAnE0Egx0MDI4OTQyMjkwOTQaDwoCcTUSCWJpZFN0YXR1cxoeCgJxNhIYY2FuY2VsQmlkSW1wbFRyYWRpdGlvbmFsGgoKAnE3EgR0eXBlGhEKAnE4EgtlbnRpdGxlbWVudBoSCgJxORIMdDAxNzc0MDE3NzgxGhUKAnIxEg92YWxpZGF0ZUFydHdvcmsaEgoCcjISDHQwMTgxNzAxODIxMhoQCgJyMxIKZW50cnlFeGlzdBoPCgJyNBIJaGFzaEV4aXN0Gg0KAnI1EgdtYXhNaW50GhEKAnI2EgthdWN0aW9uVHlwZRoMCgJyNxIGbWluQmlkGhIKAnI4Egx0MDI1NzE0MjU3NDcaCwoCcjkSBWVudHJ5AAAARwAAAAACYTEHAAAAAAJhMgkBAAAABXZhbHVlAAAAAQkABCYAAAABAgAAACMzTXBaUWp6R29nbWlmY0VLZThtRGQ2cmliTDdueFQ5QUN5ZQAAAAACYTMCAAAAIzNONjV4THE4SmNDZWFFaVIxVEpRN2RCcVhCdkV5NkU0OFd6AAAAAAJhNAkBAAAABXZhbHVlAAAAAQkABCYAAAABAgAAACMzTjljUWdaRlBISFZ1OHdxc24yRGtRRmVoZzNoOENOaW9vQQAAAAACYTUJAQAAAAV2YWx1ZQAAAAEJAAQmAAAAAQIAAAAjM045eFpZR3B6TUZEWHZYdWN0bVU2elY4cVN6bTJaZkYzMWYAAAAAAmE2AQAAACC6hu0QdKejwH9I+j+G8AYHkraWlmo7ShFw6+pV4JLTMwAAAAACYTcCAAAAIzNOMURocTVaWnlvb2pRaXN1VEx1c1lqbkdpc3FyeER3R0x5AAAAAAJhOAAAAAAAAAAAlgAAAAACYTkJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQbAAAAAgUAAAACYTQCAAAAFGNvbmZfZGFwcF9pc19ydW5uaW5nBgAAAAACYjEJAQAAAAt2YWx1ZU9yRWxzZQAA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", "height": 1669725, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: HiBU8ifrs6QPM9cJkLhPwfLTNZ7EYWqvatii9Dqx4tEr Next: FQ9Rk43Lra5T8MkMPkdVgWEqi38fkFofH2RjStaqV4Yc Diff:
OldNewDifferences
551551
552552
553553 @Callable(i)
554-func addArtwork (sha256Hash,name,description,tags,type,cidDisplay) = {
554+func addArtwork (sha256Hash,name,description,tags,type,cidDisplay,entitlement) = {
555555 let t01774017781 = idCallerDate(i)
556556 let artId = t01774017781._1
557557 let caller = t01774017781._2
573573 let hashExist = getStringByKey(keyOwnerByHash(sha256Hash))
574574 if ((hashExist != ""))
575575 then throw("Hash already registered")
576- 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)]
576+ 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)]
577577 }
578578 }
579579 }
582582
583583
584584 @Callable(i)
585-func sellArtwork (artId,price,maxMint,assetId,auctionType,minBid,duration,entitlement) = {
585+func sellArtwork (artId,price,maxMint,assetId,auctionType,minBid,duration) = {
586586 let t02571425747 = idCallerDate(i)
587587 let id = t02571425747._1
588588 let caller = t02571425747._2
625625 then true
626626 else false
627627 let endHeight = (duration + height)
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)]
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), IntegerEntry(keyHighestBid(artId), 0)]
629629 }
630630 }
631631 }
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
7575 func keyHighestBidBidId (artId) = ("art_highestBidBidId_" + artId)
7676
7777
7878 func keyBidId (bidId) = ("bid_" + bidId)
7979
8080
8181 func keyDuration (caller,artId) = ((("art_duration_" + artId) + "_") + caller)
8282
8383
8484 func keyEndHeight (caller,artId) = ((("art_endheight_" + artId) + "_") + caller)
8585
8686
8787 func keyAuctionType (caller,artId) = ((("art_auctiontype_" + artId) + "_") + caller)
8888
8989
9090 func keyIssued (caller,artId) = ((("art_issued_" + artId) + "_") + caller)
9191
9292
9393 func KeyNftIssuer (nftId) = ("nft_issued_" + nftId)
9494
9595
9696 func keyOnSale (caller,artId) = ((("art_onsale_" + artId) + "_") + caller)
9797
9898
9999 func keyEntitlement (caller,artId) = ((("art_entitlement_" + artId) + "_") + caller)
100100
101101
102102 func keyTags (caller,artId) = ((("art_tags_" + artId) + "_") + caller)
103103
104104
105105 func keyType (caller,artId) = ((("art_type_" + artId) + "_") + caller)
106106
107107
108108 func keyPrice (caller,artId) = ((("art_price_" + artId) + "_") + caller)
109109
110110
111111 func keyAssetIdAccepted (caller,artId) = ((("art_assetAccepted_" + artId) + "_") + caller)
112112
113113
114114 func keyHashByTxidAddr (caller,txid) = ((("get_hashbytxidaddr_" + txid) + "_") + caller)
115115
116116
117117 func keyOwnerByHash (sha256Hash) = ("get_owner_by_hash_" + sha256Hash)
118118
119119
120120 func keyTxidByHashOwner (sha256Hash,caller) = ("get_txid_by_hash_owner_" + toBase58String(sha256_16Kb(toBytes((sha256Hash + caller)))))
121121
122122
123123 let currentCertificationPrice = getIntegerByKeyFromOracle(("certification_fee_" + toBase58String(sconexAssetId)))
124124
125125 func validateString (str,max) = if ((size(str) == 0))
126126 then throw("Field cannot be is empty")
127127 else if ((size(str) > max))
128128 then throw((str + " is too long"))
129129 else true
130130
131131
132132 func validateUser (caller) = {
133133 let userStatus = valueOrElse(getString(userDapp, keyUserStatus(caller)), userUnregistered)
134134 if (if ((userStatus == userUnregistered))
135135 then true
136136 else (userStatus == userAllowed))
137137 then "Register this account first with 'Account' tab"
138138 else if ((userStatus == userSuspended))
139139 then "Account suspended"
140140 else if ((userStatus == userRemoved))
141141 then "Account removed"
142142 else ""
143143 }
144144
145145
146146 func validateArtworkData (caller,cidDisplay,name,description,tags) = {
147147 let checkUser = validateUser(caller)
148148 if ((checkUser != ""))
149149 then throw(checkUser)
150150 else if ((size(cidDisplay) == 0))
151151 then throw("Display CID cannot be empty")
152152 else if (!(validateString(name, 100)))
153153 then throw("100 Char. max name")
154154 else if (!(validateString(description, 1000)))
155155 then throw("1000 Char. max description")
156156 else if ((size(split(tags, ",")) > 5))
157157 then throw("5 tags max.")
158158 else ""
159159 }
160160
161161
162162 func isPayment (i) = if ((size(i.payments) == 0))
163163 then throw("No payment attached")
164164 else {
165165 let payment = value(i.payments[0])
166166 let amount = value(payment.amount)
167167 $Tuple2(payment, amount)
168168 }
169169
170170
171171 func validatePayment (i) = {
172172 let t089829018 = isPayment(i)
173173 let payment = t089829018._1
174174 let amount = t089829018._2
175175 let assetId = if (if (isDefined(payment.assetId))
176176 then (payment.assetId == sconexAssetId)
177177 else false)
178178 then payment.assetId
179179 else throw("Only Sconex token accepted as transaction fee")
180180 if ((amount != currentCertificationPrice))
181181 then throw(("Payment amount should be " + toString(currentCertificationPrice)))
182182 else $Tuple2(amount, assetId)
183183 }
184184
185185
186186 func validatePriceAssetId (i,priceAssetId,artworkPrice) = {
187187 let t096119647 = isPayment(i)
188188 let payment = t096119647._1
189189 let amount = t096119647._2
190190 let assetId = if (!(isDefined(payment.assetId)))
191191 then throw("Wrong asset id")
192192 else if (if ((size(priceAssetId) > 0))
193193 then (toBase58String(value(payment.assetId)) == priceAssetId)
194194 else false)
195195 then payment.assetId
196196 else throw("Wrong asset id")
197197 if (if ((assetId == unit))
198198 then (priceAssetId != "")
199199 else false)
200200 then throw("Wrong asset id")
201201 else if ((artworkPrice != amount))
202202 then throw("Payment don't match")
203203 else $Tuple2(amount, assetId)
204204 }
205205
206206
207207 func acceptedAssetIds (assetId) = if ((assetId != toBase58String(sconexAssetId)))
208208 then throw("Only Sconex accepted")
209209 else true
210210
211211
212212 func validateMinSell (assetId,price) = {
213213 let minSellSconex = if (unitTest)
214214 then 1
215215 else (currentCertificationPrice * 2)
216216 if (if (if ((assetId == toBase58String(sconexAssetId)))
217217 then (minSellSconex > price)
218218 else false)
219219 then (price != 0)
220220 else false)
221221 then throw(("Wrong minimum sell price " + toString(minSellSconex)))
222222 else true
223223 }
224224
225225
226226 func getBidAssetId (assetId) = if ((assetId == "WAVES"))
227227 then throw("Only sconex is accepted!")
228228 else fromBase58String(assetId)
229229
230230
231231 func getPriceAssetIdFromBid (bidDataKey) = {
232232 let bidData = getStringByKey((bidDataKey + "_OPEN"))
233233 if ((bidData == ""))
234234 then throw("Bid not found")
235235 else {
236236 let bidDataArr = split(bidData, "_")
237237 let bidAmount = parseIntValue(bidDataArr[1])
238238 let bidAssetId = getBidAssetId(bidDataArr[0])
239239 if ((0 >= bidAmount))
240240 then throw("Wrong amount")
241241 else $Tuple2(bidAmount, bidAssetId)
242242 }
243243 }
244244
245245
246246 func idCallerDate (i) = if (!(dappRunning))
247247 then throw(maintenanceMSG)
248248 else $Tuple3(toBase58String(i.transactionId), toBase58String(i.caller.bytes), lastBlock.timestamp)
249249
250250
251251 func isBidCheck (i,issuer,bidOwner,bidId) = if (if (if ((toBase58String(i.caller.bytes) == issuer))
252252 then (bidOwner != "")
253253 else false)
254254 then (bidId != "")
255255 else false)
256256 then true
257257 else false
258258
259259
260260 func getArtData (i,issuer,artId,isBid) = {
261261 let callerIsIssuer = (toBase58String(i.caller.bytes) == issuer)
262262 let totalNFT = getIntegerByKey("total_nft_issued")
263263 let artworkName = getStringByKey(keyName(issuer, artId))
264264 if ((artworkName == ""))
265265 then throw("Art doesn't exist")
266266 else {
267267 let isOnSale = getBooleanByKey(keyOnSale(issuer, artId))
268268 let amountSold = getIntegerByKey(keyIssued(issuer, artId))
269269 let artworkPrice = if (callerIsIssuer)
270270 then (currentCertificationPrice * 2)
271271 else getIntegerByKey(keyPrice(issuer, artId))
272272 let priceAssetId = if (callerIsIssuer)
273273 then toBase58String(sconexAssetId)
274274 else getStringByKey(keyAssetIdAccepted(issuer, artId))
275275 let maxCanSell = getIntegerByKey(keyMaxMint(issuer, artId))
276276 if (if (if (!(isBid))
277277 then !(callerIsIssuer)
278278 else false)
279279 then if (if ((0 >= artworkPrice))
280280 then true
281281 else !(isOnSale))
282282 then true
283283 else (0 >= maxCanSell)
284284 else false)
285285 then throw("Art not for sale")
286286 else if (if (if (!(isBid))
287287 then callerIsIssuer
288288 else false)
289289 then (0 >= maxCanSell)
290290 else false)
291291 then throw("Max issuable not set")
292292 else $Tuple7(totalNFT, artworkName, amountSold, artworkPrice, priceAssetId, maxCanSell, isOnSale)
293293 }
294294 }
295295
296296
297297 func getBidData (i,caller,issuer,artId,bidOwner,bidId,priceAssetId,artworkPrice,isBid) = {
298298 let checkUser = validateUser(issuer)
299299 if (if (isBid)
300300 then (checkUser != "")
301301 else false)
302302 then throw(checkUser)
303303 else {
304304 let bidDataKey = ((((((("bid_" + artId) + "_") + issuer) + "_") + bidOwner) + "_") + bidId)
305305 let t01351913648 = if (isBid)
306306 then getPriceAssetIdFromBid(bidDataKey)
307307 else validatePriceAssetId(i, priceAssetId, artworkPrice)
308308 let amount = t01351913648._1
309309 let assetId = t01351913648._2
310310 $Tuple3(bidDataKey, amount, assetId)
311311 }
312312 }
313313
314314
315315 func getCommissionData (issuer,assetId,amount,amountSold,maxCanSell) = {
316316 let isWhitelisted = checkWhitelist(issuer)
317317 let cut = if ((isWhitelisted > height))
318318 then 0
319319 else if ((assetId == sconexAssetId))
320320 then sconexFirstSellCut
321321 else throw("Only Sconex is accepted!")
322322 let amountForSconex = fraction(amount, cut, 1000)
323323 let amountForCreator = (amount - amountForSconex)
324324 if ((amountSold == maxCanSell))
325325 then throw("Art sold out")
326326 else {
327327 let newAmountSold = (amountSold + 1)
328328 $Tuple3(amountForSconex, amountForCreator, newAmountSold)
329329 }
330330 }
331331
332332
333333 func getIssueData (issuer,artId,artworkName,newAmountSold,maxCanSell,totalNFT,caller,bidOwner,bidId,i,isOnSale) = {
334334 let issueMeta = ((((((((("Creator: " + issuer) + ",ArtID: ") + artId) + ",Artwork name: ") + artworkName) + ",Issue: ") + toString(newAmountSold)) + "/") + toString(maxCanSell))
335335 let issueNFT = Issue(("SCONEX_" + toString((totalNFT + 1))), issueMeta, 1, 0, false)
336336 let idNFT = calculateAssetId(issueNFT)
337337 let sellStatus = if (if ((newAmountSold == maxCanSell))
338338 then true
339339 else !(isOnSale))
340340 then false
341341 else true
342342 let receiveNFT = if (if (if ((caller == issuer))
343343 then (bidOwner != "")
344344 else false)
345345 then (bidId != "")
346346 else false)
347347 then addressFromStringValue(bidOwner)
348348 else i.caller
349349 $Tuple4(issueNFT, idNFT, sellStatus, receiveNFT)
350350 }
351351
352352
353353 func getBidKeyVal (assetId,bidDataKey,date) = {
354354 let assetIdBid = if (!(isDefined(assetId)))
355355 then throw("Only sconex is accepted")
356356 else toBase58String(value(assetId))
357357 let bidData = getStringByKey((bidDataKey + "_OPEN"))
358358 let bidDelOld = DeleteEntry((bidDataKey + "_OPEN"))
359359 let bidUpdate = StringEntry((bidDataKey + "_CLOSED"), ((bidData + "_") + toString(date)))
360360 $Tuple3(assetIdBid, bidDelOld, bidUpdate)
361361 }
362362
363363
364364 func buyMint (i,artId,issuer,bidId,bidOwner) = {
365365 let t01551615566 = idCallerDate(i)
366366 let id = t01551615566._1
367367 let caller = t01551615566._2
368368 let date = t01551615566._3
369369 let isBid = isBidCheck(i, issuer, bidOwner, bidId)
370370 let t01564615797 = getArtData(i, issuer, artId, isBid)
371371 let totalNFT = t01564615797._1
372372 let artworkName = t01564615797._2
373373 let amountSold = t01564615797._3
374374 let artworkPrice = t01564615797._4
375375 let priceAssetId = t01564615797._5
376376 let maxCanSell = t01564615797._6
377377 let isOnSale = t01564615797._7
378378 let t01580215948 = getBidData(i, caller, issuer, artId, bidOwner, bidId, priceAssetId, artworkPrice, isBid)
379379 let bidDataKey = t01580215948._1
380380 let amount = t01580215948._2
381381 let assetId = t01580215948._3
382382 let t01595316095 = getCommissionData(issuer, value(assetId), amount, amountSold, maxCanSell)
383383 let amountForSconex = t01595316095._1
384384 let amountForCreator = t01595316095._2
385385 let newAmountSold = t01595316095._3
386386 let t01610016290 = getIssueData(issuer, artId, artworkName, newAmountSold, maxCanSell, totalNFT, caller, bidOwner, bidId, i, isOnSale)
387387 let issueNFT = t01610016290._1
388388 let idNFT = t01610016290._2
389389 let sellStatus = t01610016290._3
390390 let receiveNFT = t01610016290._4
391391 let t01629516394 = getBidKeyVal(assetId, bidDataKey, date)
392392 let assetIdBid = t01629516394._1
393393 let bidDelOld = t01629516394._2
394394 let bidUpdate = t01629516394._3
395395 let soldKey = ((((((("art_sold_" + toString(newAmountSold)) + "_of_") + toString(maxCanSell)) + "_") + artId) + "_") + issuer)
396396 let soldValue = if (!(isBid))
397397 then ((((((((((caller + "_") + toString(date)) + "_") + id) + "_") + toString(artworkPrice)) + "_") + priceAssetId) + "_") + toBase58String(idNFT))
398398 else ((((((((((toString(receiveNFT) + "_") + toString(date)) + "_") + id) + "_") + toString(amount)) + "_") + assetIdBid) + "_") + toBase58String(idNFT))
399399 let soldData = StringEntry(soldKey, soldValue)
400400 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)]
401401 if (isBid)
402402 then (((buyRes :+ soldData) :+ bidUpdate) :+ bidDelOld)
403403 else soldData :: buyRes
404404 }
405405
406406
407407 func setBidNonTraditional (i,artId,issuer) = {
408408 let t02770927747 = idCallerDate(i)
409409 let id = t02770927747._1
410410 let caller = t02770927747._2
411411 let date = t02770927747._3
412412 let t02775227788 = isPayment(i)
413413 let payment = t02775227788._1
414414 let amount = t02775227788._2
415415 let assetId = if (!(isDefined(payment.assetId)))
416416 then throw("Only sconex is accepted!")
417417 else toBase58String(value(payment.assetId))
418418 let bidNbr = getIntegerByKey(("current_bidamount_" + artId))
419419 if (!(acceptedAssetIds(assetId)))
420420 then throw("asset not accepted")
421421 else if (!(validateMinSell(assetId, amount)))
422422 then throw("Wrong min sell")
423423 else {
424424 let amountSold = getIntegerByKey(keyIssued(issuer, artId))
425425 let maxCanSell = getIntegerByKey(keyMaxMint(issuer, artId))
426426 if ((0 >= maxCanSell))
427427 then throw("No max edition set for this artwork")
428428 else if ((amountSold >= maxCanSell))
429429 then throw("Sold out, you cannot bid")
430430 else [StringEntry((((((((("bid_" + artId) + "_") + issuer) + "_") + caller) + "_") + id) + "_OPEN"), ((((assetId + "_") + toString(amount)) + "_") + toString(date))), IntegerEntry(("current_bidamount_" + artId), (bidNbr + 1))]
431431 }
432432 }
433433
434434
435435 func setBidTraditional (i,artId,issuer) = {
436436 let endHeight = getIntegerByKey(keyEndHeight(issuer, artId))
437437 let highestBid = getIntegerByKey(keyHighestBid(artId))
438438 if ((height > endHeight))
439439 then throw("This auction is finished already!")
440440 else {
441441 let callderData = idCallerDate(i)
442442 let id = callderData._1
443443 let caller = callderData._2
444444 let date = callderData._3
445445 let isPaymentVar = isPayment(i)
446446 let payment = isPaymentVar._1
447447 let amount = isPaymentVar._2
448448 if ((highestBid >= amount))
449449 then throw(("Please place a bid higher then: " + toString(highestBid)))
450450 else {
451451 let assetId = if (!(isDefined(payment.assetId)))
452452 then throw("Only sconex is accepted!")
453453 else toBase58String(value(payment.assetId))
454454 let bidNbr = getIntegerByKey(("current_bidamount_" + artId))
455455 if (!(acceptedAssetIds(assetId)))
456456 then throw("asset not accepted")
457457 else if (!(validateMinSell(assetId, amount)))
458458 then throw("Wrong min sell")
459459 else {
460460 let amountSold = getIntegerByKey(keyIssued(issuer, artId))
461461 let maxCanSell = getIntegerByKey(keyMaxMint(issuer, artId))
462462 if ((0 >= maxCanSell))
463463 then throw("No max edition set for this artwork")
464464 else if ((amountSold >= maxCanSell))
465465 then throw("Sold out, you cannot bid")
466466 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)]
467467 }
468468 }
469469 }
470470 }
471471
472472
473473 func acceptBidNonTraditional (i,artId,issuer,bidId,bidOwner) = {
474474 let caller = toBase58String(i.caller.bytes)
475475 if ((caller != issuer))
476476 then throw("You cannot do this action")
477477 else buyMint(i, artId, issuer, bidId, bidOwner)
478478 }
479479
480480
481481 func restartAuction (artId,issuer) = {
482482 let amountSold = getIntegerByKey(keyIssued(issuer, artId))
483483 let maxCanSell = getIntegerByKey(keyMaxMint(issuer, artId))
484484 let oldEndHeight = getIntegerByKey(keyEndHeight(issuer, artId))
485485 let duration = getIntegerByKey(keyDuration(issuer, artId))
486486 let endHeight = (duration + height)
487487 if ((height > oldEndHeight))
488488 then if ((amountSold == maxCanSell))
489489 then throw("Can't restart auction, max amount sold")
490490 else [IntegerEntry(keyHighestBid(artId), 0), IntegerEntry(keyDuration(issuer, artId), duration), IntegerEntry(keyEndHeight(issuer, artId), endHeight)]
491491 else throw("Previous auction isn't completed yet")
492492 }
493493
494494
495495 func acceptBidTraditional (i,artId,issuer,bidId,bidOwner) = {
496496 let endHeight = getIntegerByKey(keyEndHeight(issuer, artId))
497497 let highestBid = getIntegerByKey(keyHighestBid(artId))
498498 let amountByBidId = getIntegerByKey(keyBidId(bidId))
499499 if ((height > endHeight))
500500 then if ((amountByBidId == highestBid))
501501 then {
502502 let buyMintData = buyMint(i, artId, issuer, bidId, bidOwner)
503503 let restartAuctionData = restartAuction(artId, issuer)
504504 (restartAuctionData ++ buyMintData)
505505 }
506506 else throw("This is not the winning bid!")
507507 else throw("This auction is not yet finished!")
508508 }
509509
510510
511511 func cancelBidImpl (i,artId,issuer,bidId) = {
512512 let t02894229094 = idCallerDate(i)
513513 let id = t02894229094._1
514514 let caller = t02894229094._2
515515 let date = t02894229094._3
516516 let bidNbr = getIntegerByKey(("current_bidamount_" + artId))
517517 let bidDataKey = ((((((("bid_" + artId) + "_") + issuer) + "_") + caller) + "_") + bidId)
518518 let bidData = getStringByKey((bidDataKey + "_OPEN"))
519519 if ((bidData == ""))
520520 then throw("Bid not found")
521521 else {
522522 let bidDataArr = split(bidData, "_")
523523 let assetId = getBidAssetId(bidDataArr[0])
524524 let bidStatus = "CANCELED"
525525 [DeleteEntry((bidDataKey + "_OPEN")), StringEntry(((bidDataKey + "_") + bidStatus), ((bidData + "_") + toString(date))), IntegerEntry(("current_bidamount_" + artId), (bidNbr - 1)), ScriptTransfer(Address(fromBase58String(caller)), parseIntValue(bidDataArr[1]), assetId)]
526526 }
527527 }
528528
529529
530530 func cancelBidImplTraditional (i,artId,issuer,bidId) = {
531531 let t02894229094 = idCallerDate(i)
532532 let id = t02894229094._1
533533 let caller = t02894229094._2
534534 let date = t02894229094._3
535535 let bidNbr = getIntegerByKey(("current_bidamount_" + artId))
536536 let bidDataKey = ((((((("bid_" + artId) + "_") + issuer) + "_") + caller) + "_") + bidId)
537537 let bidData = getStringByKey((bidDataKey + "_OPEN"))
538538 if ((bidData == ""))
539539 then throw("Bid not found")
540540 else {
541541 let bidDataArr = split(bidData, "_")
542542 let assetId = getBidAssetId(bidDataArr[0])
543543 let bidStatus = "CANCELED"
544544 let bidAmount = parseIntValue(bidDataArr[1])
545545 let highestBid = getIntegerByKey(keyHighestBid(artId))
546546 if ((bidAmount == highestBid))
547547 then throw("You can't cancel the highest bid!")
548548 else [DeleteEntry((bidDataKey + "_OPEN")), StringEntry(((bidDataKey + "_") + bidStatus), ((bidData + "_") + toString(date))), IntegerEntry(("current_bidamount_" + artId), (bidNbr - 1)), ScriptTransfer(Address(fromBase58String(caller)), bidAmount, assetId)]
549549 }
550550 }
551551
552552
553553 @Callable(i)
554-func addArtwork (sha256Hash,name,description,tags,type,cidDisplay) = {
554+func addArtwork (sha256Hash,name,description,tags,type,cidDisplay,entitlement) = {
555555 let t01774017781 = idCallerDate(i)
556556 let artId = t01774017781._1
557557 let caller = t01774017781._2
558558 let date = t01774017781._3
559559 let validateArtwork = validateArtworkData(caller, cidDisplay, name, description, tags)
560560 if ((validateArtwork != ""))
561561 then throw("Something went wrong!")
562562 else {
563563 let t01817018212 = validatePayment(i)
564564 let amount = t01817018212._1
565565 let assetId = t01817018212._2
566566 if (!(isDefined(amount)))
567567 then throw("Something went wrong")
568568 else {
569569 let entryExist = getStringByKey(keyTxidByHashOwner(sha256Hash, caller))
570570 if ((entryExist != ""))
571571 then throw("You already added it")
572572 else {
573573 let hashExist = getStringByKey(keyOwnerByHash(sha256Hash))
574574 if ((hashExist != ""))
575575 then throw("Hash already registered")
576- 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)]
576+ 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)]
577577 }
578578 }
579579 }
580580 }
581581
582582
583583
584584 @Callable(i)
585-func sellArtwork (artId,price,maxMint,assetId,auctionType,minBid,duration,entitlement) = {
585+func sellArtwork (artId,price,maxMint,assetId,auctionType,minBid,duration) = {
586586 let t02571425747 = idCallerDate(i)
587587 let id = t02571425747._1
588588 let caller = t02571425747._2
589589 let artworkName = getStringByKey(keyName(caller, artId))
590590 if (!(containsElement([auctionType1, auctionType2], auctionType)))
591591 then throw("We dont know this auction type")
592592 else if ((artworkName == ""))
593593 then throw("This art doesn't match your account")
594594 else {
595595 let bidNbr = getIntegerByKey(("current_bidamount_" + artId))
596596 if (!(acceptedAssetIds(assetId)))
597597 then throw("Something went wrong!")
598598 else if (!(validateMinSell(assetId, price)))
599599 then throw("Something went wrong!")
600600 else {
601601 let checkUser = validateUser(caller)
602602 if ((checkUser != ""))
603603 then throw(checkUser)
604604 else {
605605 let amountSold = getIntegerByKey(keyIssued(caller, artId))
606606 let maxCanSell = getIntegerByKey(keyMaxMint(caller, artId))
607607 if ((maxMint > 10))
608608 then throw("10 editions max per artwork")
609609 else if (if ((amountSold != 0))
610610 then (amountSold == maxCanSell)
611611 else false)
612612 then throw("Max edition reached.")
613613 else if (if ((amountSold > 0))
614614 then (maxCanSell != maxMint)
615615 else false)
616616 then throw("Cannot change maximum issuable anymore")
617617 else if (if ((bidNbr > 0))
618618 then (maxCanSell != maxMint)
619619 else false)
620620 then throw("Cannot change maximum issuable with active orders")
621621 else {
622622 let sellStatus = if (if ((price > 0))
623623 then (maxMint > 0)
624624 else false)
625625 then true
626626 else false
627627 let endHeight = (duration + height)
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)]
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), IntegerEntry(keyHighestBid(artId), 0)]
629629 }
630630 }
631631 }
632632 }
633633 }
634634
635635
636636
637637 @Callable(i)
638638 func buyArtwork (artId,issuer) = buyMint(i, artId, issuer, "", "")
639639
640640
641641
642642 @Callable(i)
643643 func deleteEntry (entry) = {
644644 let caller = toString(addressFromPublicKey(i.callerPublicKey))
645645 if ((caller == owner))
646646 then [DeleteEntry(entry)]
647647 else throw("no")
648648 }
649649
650650
651651
652652 @Callable(i)
653653 func setBid (artId,issuer) = {
654654 let auctionType = getStringByKey(keyAuctionType(issuer, artId))
655655 if ((auctionType == auctionType1))
656656 then setBidNonTraditional(i, artId, issuer)
657657 else if ((auctionType == auctionType2))
658658 then setBidTraditional(i, artId, issuer)
659659 else throw((("Unknown auction type :" + auctionType) + ", please contact the admins"))
660660 }
661661
662662
663663
664664 @Callable(i)
665665 func acceptBid (artId,issuer,bidId,bidOwner) = {
666666 let auctionType = getStringByKey(keyAuctionType(issuer, artId))
667667 if ((auctionType == auctionType1))
668668 then acceptBidNonTraditional(i, artId, issuer, bidId, bidOwner)
669669 else if ((auctionType == auctionType2))
670670 then acceptBidTraditional(i, artId, issuer, bidId, bidOwner)
671671 else throw((("Unknown auction type :" + auctionType) + ", please contact the admins"))
672672 }
673673
674674
675675
676676 @Callable(i)
677677 func cancelBid (artId,issuer,bidId) = {
678678 let auctionType = getStringByKey(keyAuctionType(issuer, artId))
679679 if ((auctionType == auctionType1))
680680 then cancelBidImpl(i, artId, issuer, bidId)
681681 else cancelBidImplTraditional(i, artId, issuer, bidId)
682682 }
683683
684684

github/deemru/w8io/873ac7e 
84.54 ms