tx · ARnhSqHoWy79aZ9V6qymqZ4wHrRq19RuGdcLt7TTZq9y

3MrWNTqFcHBqb58Za1A5crQrMV5KJ5DYhtA:  -0.01000000 Waves

2021.08.25 15:15 [1673844] smart account 3MrWNTqFcHBqb58Za1A5crQrMV5KJ5DYhtA > SELF 0.00000000 Waves

{ "type": 13, "id": "ARnhSqHoWy79aZ9V6qymqZ4wHrRq19RuGdcLt7TTZq9y", "fee": 1000000, "feeAssetId": null, "timestamp": 1629893762524, "version": 2, "chainId": 84, "sender": "3MrWNTqFcHBqb58Za1A5crQrMV5KJ5DYhtA", "senderPublicKey": "9abKuN1XmLjjire2feZH26PmcEWhEXxiHToWSmii3Gn2", "proofs": [ "4UfNyRWdWUPibgwdqSacJFUkMXkC16HpiPRfeEYkz7H7dbposczeK7Fkaib8ceiFoM21ecTVvktKjHQ1P9z3Fdqg" ], "script": "base64:AAIFAAAAAAAADCMIAhIJCgcICAgICAgIEgkKBwgBAQgIAQESBAoCCAgSAwoBCBIECgIICBIGCgQICAgIEgUKAwgICBoOCgJhMRIIdW5pdFRlc3QaDwoCYTISCW9yYWNsZUZlZRoRCgJhMxILZmVlUmVjZWl2ZXIaDgoCYTQSCHVzZXJEYXBwGhMKAmE1Eg13aGl0ZWxpc3REYXBwGhMKAmE2Eg1zY29uZXhBc3NldElkGgsKAmE3EgVvd25lchoYCgJhOBISc2NvbmV4Rmlyc3RTZWxsQ3V0GhEKAmE5EgtkYXBwUnVubmluZxoUCgJiMRIObWFpbnRlbmFuY2VNU0caEwoCYjISDXVzZXJTdXNwZW5kZWQaEQoCYjMSC3VzZXJSZW1vdmVkGhYKAmI0EhB1c2VyVW5yZWdpc3RlcmVkGhEKAmI1Egt1c2VyQWxsb3dlZBoSCgJiNhIMYXVjdGlvblR5cGUxGhIKAmI3EgxhdWN0aW9uVHlwZTIaFAoCYjgSDmdldFN0cmluZ0J5S2V5GgkKAmI5EgNrZXkaHwoCYzESGWdldEludGVnZXJCeUtleUZyb21PcmFjbGUaFQoCYzISD2dldEludGVnZXJCeUtleRoUCgJjMxIOY2hlY2tXaGl0ZWxpc3QaFQoCYzQSD2dldEJvb2xlYW5CeUtleRoTCgJjNRINa2V5VXNlclN0YXR1cxoMCgJjNhIGY2FsbGVyGg0KAmM3EgdrZXlEYXRlGgsKAmM4EgVhcnRJZBoNCgJjORIHa2V5TmFtZRoNCgJkMRIHa2V5RGVzYxoTCgJkMhINa2V5RGlzcGxheUNpZBoQCgJkMxIKa2V5TWF4TWludBoRCgJkNBILa2V5TWluUHJpY2UaGAoCZDUSEmtleUhpZ2hlc3RCaWRCaWRJZBoOCgJkNhIIa2V5QmlkSWQaCwoCZDcSBWJpZElkGhEKAmQ4EgtrZXlEdXJhdGlvbhoSCgJkORIMa2V5RW5kSGVpZ2h0GhQKAmUxEg5rZXlBdWN0aW9uVHlwZRoPCgJlMhIJa2V5SXNzdWVkGhIKAmUzEgxLZXlOZnRJc3N1ZXIaCwoCZTQSBW5mdElkGg8KAmU1EglrZXlPblNhbGUaFAoCZTYSDmtleUVudGl0bGVtZW50Gg0KAmU3EgdrZXlUYWdzGg0KAmU4EgdrZXlUeXBlGg4KAmU5EghrZXlQcmljZRoYCgJmMRISa2V5QXNzZXRJZEFjY2VwdGVkGhcKAmYyEhFrZXlIYXNoQnlUeGlkQWRkchoKCgJmMxIEdHhpZBoUCgJmNBIOa2V5T3duZXJCeUhhc2gaEAoCZjUSCnNoYTI1Nkhhc2gaGAoCZjYSEmtleVR4aWRCeUhhc2hPd25lchofCgJmNxIZY3VycmVudENlcnRpZmljYXRpb25QcmljZRoWCgJmOBIQZ2V0QW1vdW50QnlCaWRJZBogCgJmORIaZ2V0QW1vdW50SGlnaGVzdEJpZEJ5QXJ0SWQaFAoCZzESDnZhbGlkYXRlU3RyaW5nGgkKAmcyEgNzdHIaCQoCZzMSA21heBoSCgJnNBIMdmFsaWRhdGVVc2VyGhAKAmc1Egp1c2VyU3RhdHVzGhkKAmc2EhN2YWxpZGF0ZUFydHdvcmtEYXRhGhAKAmc3EgpjaWREaXNwbGF5GgoKAmc4EgRuYW1lGhEKAmc5EgtkZXNjcmlwdGlvbhoKCgJoMRIEdGFncxoPCgJoMhIJY2hlY2tVc2VyGg8KAmgzEglpc1BheW1lbnQaBwoCaDQSAWkaDQoCaDUSB3BheW1lbnQaDAoCaDYSBmFtb3VudBoVCgJoNxIPdmFsaWRhdGVQYXltZW50GhAKAmg4Egp0MDg5ODI5MDE4Gg0KAmg5Egdhc3NldElkGhoKAmkxEhR2YWxpZGF0ZVByaWNlQXNzZXRJZBoSCgJpMhIMcHJpY2VBc3NldElkGhIKAmkzEgxhcnR3b3JrUHJpY2UaEAoCaTQSCnQwOTYxMTk2NDcaFgoCaTUSEGFjY2VwdGVkQXNzZXRJZHMaFQoCaTYSD3ZhbGlkYXRlTWluU2VsbBoLCgJpNxIFcHJpY2UaEwoCaTgSDW1pblNlbGxTY29uZXgaEwoCaTkSDWdldEJpZEFzc2V0SWQaHAoCajESFmdldFByaWNlQXNzZXRJZEZyb21CaWQaEAoCajISCmJpZERhdGFLZXkaDQoCajMSB2JpZERhdGEaEAoCajQSCmJpZERhdGFBcnIaDwoCajUSCWJpZEFtb3VudBoQCgJqNhIKYmlkQXNzZXRJZBoSCgJqNxIMaWRDYWxsZXJEYXRlGhAKAmo4EgpnZXRBcnREYXRhGgwKAmo5EgZpc3N1ZXIaCwoCazESBWlzQmlkGhQKAmsyEg5jYWxsZXJJc0lzc3VlchoOCgJrMxIIdG90YWxORlQaEQoCazQSC2FydHdvcmtOYW1lGg4KAms1Eghpc09uU2FsZRoQCgJrNhIKYW1vdW50U29sZBoQCgJrNxIKbWF4Q2FuU2VsbBoQCgJrOBIKZ2V0QmlkRGF0YRoOCgJrORIIYmlkT3duZXIaEgoCbDESDHQwMTM1MTkxMzY0OBoXCgJsMhIRZ2V0Q29tbWlzc2lvbkRhdGEaEwoCbDMSDWlzV2hpdGVsaXN0ZWQaCQoCbDQSA2N1dBoVCgJsNRIPYW1vdW50Rm9yU2NvbmV4GhYKAmw2EhBhbW91bnRGb3JDcmVhdG9yGhMKAmw3Eg1uZXdBbW91bnRTb2xkGhIKAmw4EgxnZXRJc3N1ZURhdGEaDwoCbDkSCWlzc3VlTWV0YRoOCgJtMRIIaXNzdWVORlQaCwoCbTISBWlkTkZUGhAKAm0zEgpzZWxsU3RhdHVzGhAKAm00EgpyZWNlaXZlTkZUGhIKAm01EgxnZXRCaWRLZXlWYWwaCgoCbTYSBGRhdGUaEAoCbTcSCmFzc2V0SWRCaWQaDwoCbTgSCWJpZERlbE9sZBoPCgJtORIJYmlkVXBkYXRlGg0KAm4xEgdidXlNaW50GhAKAm4yEgpjYWxsZXJEYXRhGggKAm4zEgJpZBoNCgJuNBIHYXJ0RGF0YRoTCgJuNRINY29tbWlzaW9uRGF0YRoQCgJuNhIKaXNzdWVyRGF0YRoRCgJuNxILYmlkS2V5VmFsdWUaDQoCbjgSB3NvbGRLZXkaDwoCbjkSCXNvbGRWYWx1ZRoOCgJvMRIIc29sZERhdGEaDAoCbzISBmJ1eVJlcxoaCgJvMxIUc2V0QmlkTm9uVHJhZGl0aW9uYWwaEgoCbzQSDHQwMjc3MDkyNzc0NxoSCgJvNRIMdDAyNzc1MjI3Nzg4GgwKAm82EgZiaWROYnIaFwoCbzcSEXNldEJpZFRyYWRpdGlvbmFsGg8KAm84EgllbmRIZWlnaHQaEAoCbzkSCmhpZ2hlc3RCaWQaEQoCcDESC2NhbGxkZXJEYXRhGhIKAnAyEgxpc1BheW1lbnRWYXIaHQoCcDMSF2FjY2VwdEJpZE5vblRyYWRpdGlvbmFsGhQKAnA0Eg5yZXN0YXJ0QXVjdGlvbhoSCgJwNRIMb2xkRW5kSGVpZ2h0Gg4KAnA2EghkdXJhdGlvbhoaCgJwNxIUYWNjZXB0QmlkVHJhZGl0aW9uYWwaEgoCcDgSDGhpZ2hlc3RCaWRJZBoRCgJwORILYnV5TWludERhdGEaGAoCcTESEnJlc3RhcnRBdWN0aW9uRGF0YRoTCgJxMhINY2FuY2VsQmlkSW1wbBoSCgJxMxIMdDAyODk0MjI5MDk0Gg8KAnE0EgliaWRTdGF0dXMaHgoCcTUSGGNhbmNlbEJpZEltcGxUcmFkaXRpb25hbBoKCgJxNhIEdHlwZRoRCgJxNxILZW50aXRsZW1lbnQaEgoCcTgSDHQwMTc3NDAxNzc4MRoVCgJxORIPdmFsaWRhdGVBcnR3b3JrGhIKAnIxEgx0MDE4MTcwMTgyMTIaEAoCcjISCmVudHJ5RXhpc3QaDwoCcjMSCWhhc2hFeGlzdBoNCgJyNBIHbWF4TWludBoRCgJyNRILYXVjdGlvblR5cGUaDAoCcjYSBm1pbkJpZBoSCgJyNxIMdDAyNTcxNDI1NzQ3GgsKAnI4EgVlbnRyeQAAAEcAAAAAAmExBwAAAAACYTIJAQAAAAV2YWx1ZQAAAAEJAAQmAAAAAQIAAAAjM01wWlFqekdvZ21pZmNFS2U4bURkNnJpYkw3bnhUOUFDeWUAAAAAAmEzAgAAACMzTjY1eExxOEpjQ2VhRWlSMVRKUTdkQnFYQnZFeTZFNDhXegAAAAACYTQJAQAAAAV2YWx1ZQAAAAEJAAQmAAAAAQIAAAAjM045Y1FnWkZQSEhWdTh3cXNuMkRrUUZlaGczaDhDTmlvb0EAAAAAAmE1CQEAAAAFdmFsdWUAAAABCQAEJgAAAAECAAAAIzNOOXhaWUdwek1GRFh2WHVjdG1VNnpWOHFTem0yWmZGMzFmAAAAAAJhNgEAAAAguobtEHSno8B/SPo/hvAGB5K2lpZqO0oRcOvqVeCS0zMAAAAAAmE3AgAAACMzTjFEaHE1Wlp5b29qUWlzdVRMdXNZam5HaXNxcnhEd0dMeQAAAAACYTgAAAAAAAAAAJYAAAAAAmE5CQEAAAALdmFsdWVPckVsc2UAAAACCQAEGwAAAAIFAAAAAmE0AgAAABRjb25mX2RhcHBfaXNfcnVubmluZwYAAAAAAmIxCQEAAAALdmFsdWVPckVsc2UAAAACCQAEHQAAAAIF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", "height": 1673844, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: awu1NSsPzuEXWqxZpdTkRjgDXTw21i6fdmDVqqGskyb Next: CE1YZZhrQjxbDwgGyGrGaJs6L17MSGaukwf5DfhpdpnY Diff:
OldNewDifferences
256256 else $Tuple3(toBase58String(i.transactionId), toBase58String(i.caller.bytes), lastBlock.timestamp)
257257
258258
259-func isBidCheck (i,issuer,bidOwner,bidId) = if (if (if ((toBase58String(i.caller.bytes) == issuer))
260- then (bidOwner != "")
261- else false)
262- then (bidId != "")
263- else false)
264- then true
265- else false
266-
267-
268259 func getArtData (i,issuer,artId,isBid) = {
269260 let callerIsIssuer = (toBase58String(i.caller.bytes) == issuer)
270261 let totalNFT = getIntegerByKey("total_nft_issued")
369360 }
370361
371362
372-func buyMint (i,artId,issuer,bidId,bidOwner) = {
373- let t01551615566 = idCallerDate(i)
374- let id = t01551615566._1
375- let caller = t01551615566._2
376- let date = t01551615566._3
377- let isBid = isBidCheck(i, issuer, bidOwner, bidId)
378- let t01564615797 = getArtData(i, issuer, artId, isBid)
379- let totalNFT = t01564615797._1
380- let artworkName = t01564615797._2
381- let amountSold = t01564615797._3
382- let artworkPrice = t01564615797._4
383- let priceAssetId = t01564615797._5
384- let maxCanSell = t01564615797._6
385- let isOnSale = t01564615797._7
386- let t01580215948 = getBidData(i, caller, issuer, artId, bidOwner, bidId, priceAssetId, artworkPrice, isBid)
387- let bidDataKey = t01580215948._1
388- let amount = t01580215948._2
389- let assetId = t01580215948._3
390- let t01595316095 = getCommissionData(issuer, value(assetId), amount, amountSold, maxCanSell)
391- let amountForSconex = t01595316095._1
392- let amountForCreator = t01595316095._2
393- let newAmountSold = t01595316095._3
394- let t01610016290 = getIssueData(issuer, artId, artworkName, newAmountSold, maxCanSell, totalNFT, caller, bidOwner, bidId, i, isOnSale)
395- let issueNFT = t01610016290._1
396- let idNFT = t01610016290._2
397- let sellStatus = t01610016290._3
398- let receiveNFT = t01610016290._4
399- let t01629516394 = getBidKeyVal(assetId, bidDataKey, date)
400- let assetIdBid = t01629516394._1
401- let bidDelOld = t01629516394._2
402- let bidUpdate = t01629516394._3
363+func buyMint (i,artId,issuer,bidId,bidOwner,isBid) = {
364+ let callerData = idCallerDate(i)
365+ let id = callerData._1
366+ let caller = callerData._2
367+ let date = callerData._3
368+ let artData = getArtData(i, issuer, artId, isBid)
369+ let totalNFT = artData._1
370+ let artworkName = artData._2
371+ let amountSold = artData._3
372+ let artworkPrice = artData._4
373+ let priceAssetId = artData._5
374+ let maxCanSell = artData._6
375+ let isOnSale = artData._7
376+ let bidData = getBidData(i, caller, issuer, artId, bidOwner, bidId, priceAssetId, artworkPrice, isBid)
377+ let bidDataKey = bidData._1
378+ let amount = bidData._2
379+ let assetId = bidData._3
380+ let commisionData = getCommissionData(issuer, value(assetId), amount, amountSold, maxCanSell)
381+ let amountForSconex = commisionData._1
382+ let amountForCreator = commisionData._2
383+ let newAmountSold = commisionData._3
384+ let issuerData = getIssueData(issuer, artId, artworkName, newAmountSold, maxCanSell, totalNFT, caller, bidOwner, bidId, i, isOnSale)
385+ let issueNFT = issuerData._1
386+ let idNFT = issuerData._2
387+ let sellStatus = issuerData._3
388+ let receiveNFT = issuerData._4
389+ let bidKeyValue = getBidKeyVal(assetId, bidDataKey, date)
390+ let assetIdBid = bidKeyValue._1
391+ let bidDelOld = bidKeyValue._2
392+ let bidUpdate = bidKeyValue._3
403393 let soldKey = ((((((("art_sold_" + toString(newAmountSold)) + "_of_") + toString(maxCanSell)) + "_") + artId) + "_") + issuer)
404394 let soldValue = if (!(isBid))
405395 then ((((((((((caller + "_") + toString(date)) + "_") + id) + "_") + toString(artworkPrice)) + "_") + priceAssetId) + "_") + toBase58String(idNFT))
482472 let caller = toBase58String(i.caller.bytes)
483473 if ((caller != issuer))
484474 then throw("You cannot do this action")
485- else buyMint(i, artId, issuer, bidId, bidOwner)
475+ else buyMint(i, artId, issuer, bidId, bidOwner, true)
486476 }
487477
488478
506496 if ((height > endHeight))
507497 then if ((bidId == highestBidId))
508498 then {
509- let buyMintData = buyMint(i, artId, issuer, bidId, bidOwner)
499+ let buyMintData = buyMint(i, artId, issuer, bidId, bidOwner, true)
510500 let restartAuctionData = restartAuction(artId, issuer)
511501 (restartAuctionData ++ buyMintData)
512502 }
642632
643633
644634 @Callable(i)
645-func buyArtwork (artId,issuer) = buyMint(i, artId, issuer, "", "")
635+func buyArtwork (artId,issuer) = buyMint(i, artId, issuer, "", "", false)
646636
647637
648638
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
259-func isBidCheck (i,issuer,bidOwner,bidId) = if (if (if ((toBase58String(i.caller.bytes) == issuer))
260- then (bidOwner != "")
261- else false)
262- then (bidId != "")
263- else false)
264- then true
265- else false
266-
267-
268259 func getArtData (i,issuer,artId,isBid) = {
269260 let callerIsIssuer = (toBase58String(i.caller.bytes) == issuer)
270261 let totalNFT = getIntegerByKey("total_nft_issued")
271262 let artworkName = getStringByKey(keyName(issuer, artId))
272263 if ((artworkName == ""))
273264 then throw("Art doesn't exist")
274265 else {
275266 let isOnSale = getBooleanByKey(keyOnSale(issuer, artId))
276267 let amountSold = getIntegerByKey(keyIssued(issuer, artId))
277268 let artworkPrice = if (callerIsIssuer)
278269 then (currentCertificationPrice * 2)
279270 else getIntegerByKey(keyPrice(issuer, artId))
280271 let priceAssetId = if (callerIsIssuer)
281272 then toBase58String(sconexAssetId)
282273 else getStringByKey(keyAssetIdAccepted(issuer, artId))
283274 let maxCanSell = getIntegerByKey(keyMaxMint(issuer, artId))
284275 if (if (if (!(isBid))
285276 then !(callerIsIssuer)
286277 else false)
287278 then if (if ((0 >= artworkPrice))
288279 then true
289280 else !(isOnSale))
290281 then true
291282 else (0 >= maxCanSell)
292283 else false)
293284 then throw("Art not for sale")
294285 else if (if (if (!(isBid))
295286 then callerIsIssuer
296287 else false)
297288 then (0 >= maxCanSell)
298289 else false)
299290 then throw("Max issuable not set")
300291 else $Tuple7(totalNFT, artworkName, amountSold, artworkPrice, priceAssetId, maxCanSell, isOnSale)
301292 }
302293 }
303294
304295
305296 func getBidData (i,caller,issuer,artId,bidOwner,bidId,priceAssetId,artworkPrice,isBid) = {
306297 let checkUser = validateUser(issuer)
307298 if (if (isBid)
308299 then (checkUser != "")
309300 else false)
310301 then throw(checkUser)
311302 else {
312303 let bidDataKey = ((((((("bid_" + artId) + "_") + issuer) + "_") + bidOwner) + "_") + bidId)
313304 let t01351913648 = if (isBid)
314305 then getPriceAssetIdFromBid(bidDataKey)
315306 else validatePriceAssetId(i, priceAssetId, artworkPrice)
316307 let amount = t01351913648._1
317308 let assetId = t01351913648._2
318309 $Tuple3(bidDataKey, amount, assetId)
319310 }
320311 }
321312
322313
323314 func getCommissionData (issuer,assetId,amount,amountSold,maxCanSell) = {
324315 let isWhitelisted = checkWhitelist(issuer)
325316 let cut = if ((isWhitelisted > height))
326317 then 0
327318 else if ((assetId == sconexAssetId))
328319 then sconexFirstSellCut
329320 else throw("Only Sconex is accepted!")
330321 let amountForSconex = fraction(amount, cut, 1000)
331322 let amountForCreator = (amount - amountForSconex)
332323 if ((amountSold == maxCanSell))
333324 then throw("Art sold out")
334325 else {
335326 let newAmountSold = (amountSold + 1)
336327 $Tuple3(amountForSconex, amountForCreator, newAmountSold)
337328 }
338329 }
339330
340331
341332 func getIssueData (issuer,artId,artworkName,newAmountSold,maxCanSell,totalNFT,caller,bidOwner,bidId,i,isOnSale) = {
342333 let issueMeta = ((((((((("Creator: " + issuer) + ",ArtID: ") + artId) + ",Artwork name: ") + artworkName) + ",Issue: ") + toString(newAmountSold)) + "/") + toString(maxCanSell))
343334 let issueNFT = Issue(("SCONEX_" + toString((totalNFT + 1))), issueMeta, 1, 0, false)
344335 let idNFT = calculateAssetId(issueNFT)
345336 let sellStatus = if (if ((newAmountSold == maxCanSell))
346337 then true
347338 else !(isOnSale))
348339 then false
349340 else true
350341 let receiveNFT = if (if (if ((caller == issuer))
351342 then (bidOwner != "")
352343 else false)
353344 then (bidId != "")
354345 else false)
355346 then addressFromStringValue(bidOwner)
356347 else i.caller
357348 $Tuple4(issueNFT, idNFT, sellStatus, receiveNFT)
358349 }
359350
360351
361352 func getBidKeyVal (assetId,bidDataKey,date) = {
362353 let assetIdBid = if (!(isDefined(assetId)))
363354 then throw("Only sconex is accepted")
364355 else toBase58String(value(assetId))
365356 let bidData = getStringByKey((bidDataKey + "_OPEN"))
366357 let bidDelOld = DeleteEntry((bidDataKey + "_OPEN"))
367358 let bidUpdate = StringEntry((bidDataKey + "_CLOSED"), ((bidData + "_") + toString(date)))
368359 $Tuple3(assetIdBid, bidDelOld, bidUpdate)
369360 }
370361
371362
372-func buyMint (i,artId,issuer,bidId,bidOwner) = {
373- let t01551615566 = idCallerDate(i)
374- let id = t01551615566._1
375- let caller = t01551615566._2
376- let date = t01551615566._3
377- let isBid = isBidCheck(i, issuer, bidOwner, bidId)
378- let t01564615797 = getArtData(i, issuer, artId, isBid)
379- let totalNFT = t01564615797._1
380- let artworkName = t01564615797._2
381- let amountSold = t01564615797._3
382- let artworkPrice = t01564615797._4
383- let priceAssetId = t01564615797._5
384- let maxCanSell = t01564615797._6
385- let isOnSale = t01564615797._7
386- let t01580215948 = getBidData(i, caller, issuer, artId, bidOwner, bidId, priceAssetId, artworkPrice, isBid)
387- let bidDataKey = t01580215948._1
388- let amount = t01580215948._2
389- let assetId = t01580215948._3
390- let t01595316095 = getCommissionData(issuer, value(assetId), amount, amountSold, maxCanSell)
391- let amountForSconex = t01595316095._1
392- let amountForCreator = t01595316095._2
393- let newAmountSold = t01595316095._3
394- let t01610016290 = getIssueData(issuer, artId, artworkName, newAmountSold, maxCanSell, totalNFT, caller, bidOwner, bidId, i, isOnSale)
395- let issueNFT = t01610016290._1
396- let idNFT = t01610016290._2
397- let sellStatus = t01610016290._3
398- let receiveNFT = t01610016290._4
399- let t01629516394 = getBidKeyVal(assetId, bidDataKey, date)
400- let assetIdBid = t01629516394._1
401- let bidDelOld = t01629516394._2
402- let bidUpdate = t01629516394._3
363+func buyMint (i,artId,issuer,bidId,bidOwner,isBid) = {
364+ let callerData = idCallerDate(i)
365+ let id = callerData._1
366+ let caller = callerData._2
367+ let date = callerData._3
368+ let artData = getArtData(i, issuer, artId, isBid)
369+ let totalNFT = artData._1
370+ let artworkName = artData._2
371+ let amountSold = artData._3
372+ let artworkPrice = artData._4
373+ let priceAssetId = artData._5
374+ let maxCanSell = artData._6
375+ let isOnSale = artData._7
376+ let bidData = getBidData(i, caller, issuer, artId, bidOwner, bidId, priceAssetId, artworkPrice, isBid)
377+ let bidDataKey = bidData._1
378+ let amount = bidData._2
379+ let assetId = bidData._3
380+ let commisionData = getCommissionData(issuer, value(assetId), amount, amountSold, maxCanSell)
381+ let amountForSconex = commisionData._1
382+ let amountForCreator = commisionData._2
383+ let newAmountSold = commisionData._3
384+ let issuerData = getIssueData(issuer, artId, artworkName, newAmountSold, maxCanSell, totalNFT, caller, bidOwner, bidId, i, isOnSale)
385+ let issueNFT = issuerData._1
386+ let idNFT = issuerData._2
387+ let sellStatus = issuerData._3
388+ let receiveNFT = issuerData._4
389+ let bidKeyValue = getBidKeyVal(assetId, bidDataKey, date)
390+ let assetIdBid = bidKeyValue._1
391+ let bidDelOld = bidKeyValue._2
392+ let bidUpdate = bidKeyValue._3
403393 let soldKey = ((((((("art_sold_" + toString(newAmountSold)) + "_of_") + toString(maxCanSell)) + "_") + artId) + "_") + issuer)
404394 let soldValue = if (!(isBid))
405395 then ((((((((((caller + "_") + toString(date)) + "_") + id) + "_") + toString(artworkPrice)) + "_") + priceAssetId) + "_") + toBase58String(idNFT))
406396 else ((((((((((toString(receiveNFT) + "_") + toString(date)) + "_") + id) + "_") + toString(amount)) + "_") + assetIdBid) + "_") + toBase58String(idNFT))
407397 let soldData = StringEntry(soldKey, soldValue)
408398 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)]
409399 if (isBid)
410400 then (((buyRes :+ soldData) :+ bidUpdate) :+ bidDelOld)
411401 else soldData :: buyRes
412402 }
413403
414404
415405 func setBidNonTraditional (i,artId,issuer) = {
416406 let t02770927747 = idCallerDate(i)
417407 let id = t02770927747._1
418408 let caller = t02770927747._2
419409 let date = t02770927747._3
420410 let t02775227788 = isPayment(i)
421411 let payment = t02775227788._1
422412 let amount = t02775227788._2
423413 let assetId = if (!(isDefined(payment.assetId)))
424414 then throw("Only sconex is accepted!")
425415 else toBase58String(value(payment.assetId))
426416 let bidNbr = getIntegerByKey(("current_bidamount_" + artId))
427417 if (!(acceptedAssetIds(assetId)))
428418 then throw("asset not accepted")
429419 else if (!(validateMinSell(assetId, amount)))
430420 then throw("Wrong min sell")
431421 else {
432422 let amountSold = getIntegerByKey(keyIssued(issuer, artId))
433423 let maxCanSell = getIntegerByKey(keyMaxMint(issuer, artId))
434424 if ((0 >= maxCanSell))
435425 then throw("No max edition set for this artwork")
436426 else if ((amountSold >= maxCanSell))
437427 then throw("Sold out, you cannot bid")
438428 else [StringEntry((((((((("bid_" + artId) + "_") + issuer) + "_") + caller) + "_") + id) + "_OPEN"), ((((assetId + "_") + toString(amount)) + "_") + toString(date))), IntegerEntry(("current_bidamount_" + artId), (bidNbr + 1))]
439429 }
440430 }
441431
442432
443433 func setBidTraditional (i,artId,issuer) = {
444434 let endHeight = getIntegerByKey(keyEndHeight(issuer, artId))
445435 let highestBid = getAmountHighestBidByArtId(artId)
446436 if ((height > endHeight))
447437 then throw("This auction is finished already!")
448438 else {
449439 let callderData = idCallerDate(i)
450440 let id = callderData._1
451441 let caller = callderData._2
452442 let date = callderData._3
453443 let isPaymentVar = isPayment(i)
454444 let payment = isPaymentVar._1
455445 let amount = isPaymentVar._2
456446 if ((highestBid >= amount))
457447 then throw(("Please place a bid higher then: " + toString(highestBid)))
458448 else {
459449 let assetId = if (!(isDefined(payment.assetId)))
460450 then throw("Only sconex is accepted!")
461451 else toBase58String(value(payment.assetId))
462452 let bidNbr = getIntegerByKey(("current_bidamount_" + artId))
463453 if (!(acceptedAssetIds(assetId)))
464454 then throw("asset not accepted")
465455 else if (!(validateMinSell(assetId, amount)))
466456 then throw("Wrong min sell")
467457 else {
468458 let amountSold = getIntegerByKey(keyIssued(issuer, artId))
469459 let maxCanSell = getIntegerByKey(keyMaxMint(issuer, artId))
470460 if ((0 >= maxCanSell))
471461 then throw("No max edition set for this artwork")
472462 else if ((amountSold >= maxCanSell))
473463 then throw("Sold out, you cannot bid")
474464 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)]
475465 }
476466 }
477467 }
478468 }
479469
480470
481471 func acceptBidNonTraditional (i,artId,issuer,bidId,bidOwner) = {
482472 let caller = toBase58String(i.caller.bytes)
483473 if ((caller != issuer))
484474 then throw("You cannot do this action")
485- else buyMint(i, artId, issuer, bidId, bidOwner)
475+ else buyMint(i, artId, issuer, bidId, bidOwner, true)
486476 }
487477
488478
489479 func restartAuction (artId,issuer) = {
490480 let amountSold = getIntegerByKey(keyIssued(issuer, artId))
491481 let maxCanSell = getIntegerByKey(keyMaxMint(issuer, artId))
492482 let oldEndHeight = getIntegerByKey(keyEndHeight(issuer, artId))
493483 let duration = getIntegerByKey(keyDuration(issuer, artId))
494484 let endHeight = (duration + height)
495485 if ((height > oldEndHeight))
496486 then if ((amountSold == maxCanSell))
497487 then throw("Can't restart auction, max amount sold")
498488 else [IntegerEntry(keyEndHeight(issuer, artId), endHeight), DeleteEntry(keyHighestBidBidId(artId))]
499489 else throw("Previous auction isn't completed yet")
500490 }
501491
502492
503493 func acceptBidTraditional (i,artId,issuer,bidId,bidOwner) = {
504494 let endHeight = getIntegerByKey(keyEndHeight(issuer, artId))
505495 let highestBidId = getStringByKey(keyHighestBidBidId(artId))
506496 if ((height > endHeight))
507497 then if ((bidId == highestBidId))
508498 then {
509- let buyMintData = buyMint(i, artId, issuer, bidId, bidOwner)
499+ let buyMintData = buyMint(i, artId, issuer, bidId, bidOwner, true)
510500 let restartAuctionData = restartAuction(artId, issuer)
511501 (restartAuctionData ++ buyMintData)
512502 }
513503 else throw("This is not the winning bid!")
514504 else throw("This auction is not yet finished!")
515505 }
516506
517507
518508 func cancelBidImpl (i,artId,issuer,bidId) = {
519509 let t02894229094 = idCallerDate(i)
520510 let id = t02894229094._1
521511 let caller = t02894229094._2
522512 let date = t02894229094._3
523513 let bidNbr = getIntegerByKey(("current_bidamount_" + artId))
524514 let bidDataKey = ((((((("bid_" + artId) + "_") + issuer) + "_") + caller) + "_") + bidId)
525515 let bidData = getStringByKey((bidDataKey + "_OPEN"))
526516 if ((bidData == ""))
527517 then throw("Bid not found")
528518 else {
529519 let bidDataArr = split(bidData, "_")
530520 let assetId = getBidAssetId(bidDataArr[0])
531521 let bidStatus = "CANCELED"
532522 [DeleteEntry((bidDataKey + "_OPEN")), StringEntry(((bidDataKey + "_") + bidStatus), ((bidData + "_") + toString(date))), IntegerEntry(("current_bidamount_" + artId), (bidNbr - 1)), ScriptTransfer(Address(fromBase58String(caller)), parseIntValue(bidDataArr[1]), assetId)]
533523 }
534524 }
535525
536526
537527 func cancelBidImplTraditional (i,artId,issuer,bidId) = {
538528 let t02894229094 = idCallerDate(i)
539529 let id = t02894229094._1
540530 let caller = t02894229094._2
541531 let date = t02894229094._3
542532 let bidNbr = getIntegerByKey(("current_bidamount_" + artId))
543533 let bidDataKey = ((((((("bid_" + artId) + "_") + issuer) + "_") + caller) + "_") + bidId)
544534 let bidData = getStringByKey((bidDataKey + "_OPEN"))
545535 if ((bidData == ""))
546536 then throw("Bid not found")
547537 else {
548538 let bidDataArr = split(bidData, "_")
549539 let assetId = getBidAssetId(bidDataArr[0])
550540 let bidStatus = "CANCELED"
551541 let bidAmount = parseIntValue(bidDataArr[1])
552542 let highestBidId = getStringByKey(keyHighestBidBidId(artId))
553543 if ((bidId == highestBidId))
554544 then throw("You can't cancel the highest bid!")
555545 else [DeleteEntry((bidDataKey + "_OPEN")), StringEntry(((bidDataKey + "_") + bidStatus), ((bidData + "_") + toString(date))), IntegerEntry(("current_bidamount_" + artId), (bidNbr - 1)), ScriptTransfer(Address(fromBase58String(caller)), bidAmount, assetId)]
556546 }
557547 }
558548
559549
560550 @Callable(i)
561551 func addArtwork (sha256Hash,name,description,tags,type,cidDisplay,entitlement) = {
562552 let t01774017781 = idCallerDate(i)
563553 let artId = t01774017781._1
564554 let caller = t01774017781._2
565555 let date = t01774017781._3
566556 let validateArtwork = validateArtworkData(caller, cidDisplay, name, description, tags)
567557 if ((validateArtwork != ""))
568558 then throw("Something went wrong!")
569559 else {
570560 let t01817018212 = validatePayment(i)
571561 let amount = t01817018212._1
572562 let assetId = t01817018212._2
573563 if (!(isDefined(amount)))
574564 then throw("Something went wrong")
575565 else {
576566 let entryExist = getStringByKey(keyTxidByHashOwner(sha256Hash, caller))
577567 if ((entryExist != ""))
578568 then throw("You already added it")
579569 else {
580570 let hashExist = getStringByKey(keyOwnerByHash(sha256Hash))
581571 if ((hashExist != ""))
582572 then throw("Hash already registered")
583573 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)]
584574 }
585575 }
586576 }
587577 }
588578
589579
590580
591581 @Callable(i)
592582 func sellArtwork (artId,price,maxMint,assetId,auctionType,minBid,duration) = {
593583 let t02571425747 = idCallerDate(i)
594584 let id = t02571425747._1
595585 let caller = t02571425747._2
596586 let artworkName = getStringByKey(keyName(caller, artId))
597587 if (!(containsElement([auctionType1, auctionType2], auctionType)))
598588 then throw("We dont know this auction type")
599589 else if ((artworkName == ""))
600590 then throw("This art doesn't match your account")
601591 else {
602592 let bidNbr = getIntegerByKey(("current_bidamount_" + artId))
603593 if (!(acceptedAssetIds(assetId)))
604594 then throw("Something went wrong!")
605595 else if (!(validateMinSell(assetId, price)))
606596 then throw("Something went wrong!")
607597 else {
608598 let checkUser = validateUser(caller)
609599 if ((checkUser != ""))
610600 then throw(checkUser)
611601 else {
612602 let amountSold = getIntegerByKey(keyIssued(caller, artId))
613603 let maxCanSell = getIntegerByKey(keyMaxMint(caller, artId))
614604 if ((maxMint > 10))
615605 then throw("10 editions max per artwork")
616606 else if (if ((amountSold != 0))
617607 then (amountSold == maxCanSell)
618608 else false)
619609 then throw("Max edition reached.")
620610 else if (if ((amountSold > 0))
621611 then (maxCanSell != maxMint)
622612 else false)
623613 then throw("Cannot change maximum issuable anymore")
624614 else if (if ((bidNbr > 0))
625615 then (maxCanSell != maxMint)
626616 else false)
627617 then throw("Cannot change maximum issuable with active orders")
628618 else {
629619 let sellStatus = if (if ((price > 0))
630620 then (maxMint > 0)
631621 else false)
632622 then true
633623 else false
634624 let endHeight = (duration + height)
635625 [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)]
636626 }
637627 }
638628 }
639629 }
640630 }
641631
642632
643633
644634 @Callable(i)
645-func buyArtwork (artId,issuer) = buyMint(i, artId, issuer, "", "")
635+func buyArtwork (artId,issuer) = buyMint(i, artId, issuer, "", "", false)
646636
647637
648638
649639 @Callable(i)
650640 func deleteEntry (entry) = {
651641 let caller = toString(addressFromPublicKey(i.callerPublicKey))
652642 if ((caller == owner))
653643 then [DeleteEntry(entry)]
654644 else throw("no")
655645 }
656646
657647
658648
659649 @Callable(i)
660650 func setBid (artId,issuer) = {
661651 let auctionType = getStringByKey(keyAuctionType(issuer, artId))
662652 if ((auctionType == auctionType1))
663653 then setBidNonTraditional(i, artId, issuer)
664654 else if ((auctionType == auctionType2))
665655 then setBidTraditional(i, artId, issuer)
666656 else throw((("Unknown auction type :" + auctionType) + ", please contact the admins"))
667657 }
668658
669659
670660
671661 @Callable(i)
672662 func acceptBid (artId,issuer,bidId,bidOwner) = {
673663 let auctionType = getStringByKey(keyAuctionType(issuer, artId))
674664 if ((auctionType == auctionType1))
675665 then acceptBidNonTraditional(i, artId, issuer, bidId, bidOwner)
676666 else if ((auctionType == auctionType2))
677667 then acceptBidTraditional(i, artId, issuer, bidId, bidOwner)
678668 else throw((("Unknown auction type :" + auctionType) + ", please contact the admins"))
679669 }
680670
681671
682672
683673 @Callable(i)
684674 func cancelBid (artId,issuer,bidId) = {
685675 let auctionType = getStringByKey(keyAuctionType(issuer, artId))
686676 if ((auctionType == auctionType1))
687677 then cancelBidImpl(i, artId, issuer, bidId)
688678 else cancelBidImplTraditional(i, artId, issuer, bidId)
689679 }
690680
691681

github/deemru/w8io/026f985 
81.84 ms