tx · Adm5WMWkgMQbFFTHi5EVWZMTmMbLQbZqKD9qutSrjzx5

3NBynfbXC2KastUxhukcMUaE58K9cBdB9UY:  -0.01400000 Waves

2021.09.02 12:43 [1685243] smart account 3NBynfbXC2KastUxhukcMUaE58K9cBdB9UY > SELF 0.00000000 Waves

{ "type": 13, "id": "Adm5WMWkgMQbFFTHi5EVWZMTmMbLQbZqKD9qutSrjzx5", "fee": 1400000, "feeAssetId": null, "timestamp": 1630575851696, "version": 2, "chainId": 84, "sender": "3NBynfbXC2KastUxhukcMUaE58K9cBdB9UY", "senderPublicKey": "J9DCtJJxJBWZdtDR12BA1U94Q3cZzMi4R6k5hYkAzmzC", "proofs": [ "2knnsZFNFTKLomDneVGT4xsKFUpYP2KycmWFfCR4PnKsvJysWoPM2djvPDfayuGUT9tHC9NgpAsso1uw7kuAzA5c" ], "script": "base64:AAIFAAAAAAAAAFEIAhINCgsICAgICAgICAgICBIMCgoICAgICAgICAgIEgUKAwgICBIECgIICBIHCgUIAQEIARIECgIICBIECgIICBIGCgQICAgIEgYKBAgICAgAAABFAAAAAAh1bml0VGVzdAcAAAAACW9yYWNsZUZlZQkBAAAABXZhbHVlAAAAAQkABCYAAAABAgAAACMzTjJzNVJ0YUhQQmVuQ3N4MkVDY29GUmJZSHgzbm9aaFhXMQAAAAAIc2lnbkRhcHAJAQAAAAV2YWx1ZQAAAAEJAAQmAAAAAQIAAAAjM05DMjhoU2l2cm1zVFVYYVlEMXg2TDM2Mko0WnBVbm9UZEIAAAAAC2ZlZVJlY2VpdmVyAgAAACMzTjFFNnRYZGRSb1ZhUmZROWRRM3ZnNUxhVzJmc2Q4SEt1YgAAAAAIdXNlckRhcHADBQAAAAh1bml0VGVzdAkBAAAABXZhbHVlAAAAAQkABCYAAAABAgAAACMzTXQ0UkdNRXlqU1dZQW9jVFBxZDU1d2RIUVFCM1BVMlVDbQkBAAAABXZhbHVlAAAAAQkABCYAAAABAgAAACMzTjh4WGFZakUyN0FhNzlkNWhIcmhIdTlIYUZvVEJtaERFagAAAAANd2hpdGVsaXN0RGFwcAkBAAAABXZhbHVlAAAAAQkABCYAAAABAgAAACMzTjZCYVYxZENCNHpnNDNnb05OSGFDdHZSMTNCY3lKNUdzcQAAAAALc2lnbkFzc2V0SWQBAAAAIOilarzKd0LycGEyNUpPRYO5uR7lmWcXw3Hq2QuhBK3rAAAAAAt1c2RuQXNzZXRJZAEAAAAgD/IcEqzkxDya7EYaqyWosOy6BytGzG2IcvC14pJJAbQAAAAADHdhdmVzQXNzZXRJZAEAAAAAAAAAAAVjaHJpcwIAAAAjM01zRzZqUE5DclZKVXRZQjdYSkJ4Uzd1dFdzWEFmNG45VnAAAAAABGpvZXACAAAAIzNNem00Vkx3c045dVp3YlRNelBqM1h1eFY2a0VmQVI4VUROAAAAAAdzaWduQ3V0AAAAAAAAAAAHAAAAAAt1c2RuV2F2ZUN1dAAAAAAAAAAACgAAAAAOZGVmYXVsdExpY2VuY2UCAAAAR2JhZnliZWlmdXlvNHBxdTU0aXNtcWd0YjZlNGg2a2t2Z3g3emc0dTN6aWJoMnI3eTZtYjY0aTdienphL2xpY2VuY2UucGRmAAAAABJkZWZhdWx0SGFzaExpY2VuY2UCAAAAQGE4Nzc1OGMzNTRlMzBhOWU3OGZiODRmYTNhMDAxMGE1MDkwYWIyMGRmMGJlMTFhZDQ1YjU3MjBjYzE4N2U2MzkAAAAAC2RhcHBSdW5uaW5nCQEAAAALdmFsdWVPckVsc2UAAAACCQAEGwAAAAIFAAAACHVzZXJEYXBwAgAAABRjb25mX2RhcHBfaXNfcnVubmluZwYAAAAADm1haW50ZW5hbmNlTVNHCQEAAAALdmFsdWVPckVsc2UAAAACCQAEHQAAAAIFAAAACHVzZXJEYXBwAgAAABRjb25mX21haW50ZW5hbmNlX21zZwIAAAAAAAAAAA11c2VyU3VzcGVuZGVkAgAAAAlTVVNQRU5ERUQAAAAAC3VzZXJSZW1vdmVkAgAAAAdSRU1PVkVEAAAAABB1c2VyVW5yZWdpc3RlcmVkAgAAAAxVTlJFR0lTVEVSRUQAAAAAC3VzZXJBbGxvd2VkAgAAAAdBTExPV0VEAQAAAA5nZXRTdHJpbmdCeUtleQAAAAEAAAADa2V5CQEAAAALdmFsdWVPckVsc2UAAAACCQAEHQAAAAIFAAAABHRoaXMFAAAAA2tleQIAAAAAAQAAABlnZXRJbnRlZ2VyQnlLZXlGcm9tT3JhY2xlAAAAAQAAAANrZXkJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABBoAAAACBQAAAAlvcmFjbGVGZWUFAAAAA2tleQIAAAAfSW50ZWdlciB1bmRlZmluZSBvciAwIGluIG9yYWNsZQEAAAAPZ2V0SW50ZWdlckJ5S2V5AAAAAQAAAANrZXkJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQaAAAAAgUAAAAEdGhpcwUAAAADa2V5AAAAAAAAAAAAAQAAAA5jaGVja1doaXRlbGlzdAAAAAEAAAADa2V5CQEAAAALdmFsdWVPckVsc2UAAAACCQAEGgAAAAIFAAAADXdoaXRlbGlzdERhcHAFAAAAA2tleQAAAAAAAAAAAAEAAAAPZ2V0Qm9vbGVhbkJ5S2V5AAAAAQAAAANrZXkJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQbAAAAAgUAAAAEdGhpcwUAAAADa2V5BwAAAAAZY3VycmVu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c0JpZAcJAAACAAAAAQIAAAALU2FsZSBlbmRlZC4EAAAADmNhbGxlcklzSXNzdWVyCQAAAAAAAAIJAAJYAAAAAQgIBQAAAAFpAAAABmNhbGxlcgAAAAVieXRlcwUAAAAGaXNzdWVyBAAAAAh0b3RhbE5GVAkBAAAAD2dldEludGVnZXJCeUtleQAAAAECAAAAEHRvdGFsX25mdF9pc3N1ZWQEAAAABnNpZ25JRAkBAAAADmdldFN0cmluZ0J5S2V5AAAAAQkBAAAACWtleVNpZ25JRAAAAAIFAAAABmlzc3VlcgUAAAAFYXJ0SWQEAAAAC2FydHdvcmtOYW1lCQEAAAAOZ2V0U3RyaW5nQnlLZXkAAAABCQEAAAAHa2V5TmFtZQAAAAIFAAAABmlzc3VlcgUAAAAFYXJ0SWQDCQAAAAAAAAIFAAAAC2FydHdvcmtOYW1lAgAAAAAJAAACAAAAAQIAAAARQXJ0IGRvZXNuJ3QgZXhpc3QEAAAACGlzT25TYWxlCQEAAAAPZ2V0Qm9vbGVhbkJ5S2V5AAAAAQkBAAAACWtleU9uU2FsZQAAAAIFAAAABmlzc3VlcgUAAAAFYXJ0SWQEAAAACmFtb3VudFNvbGQJAQAAAA9nZXRJbnRlZ2VyQnlLZXkAAAABCQEAAAAJa2V5SXNzdWVkAAAAAgUAAAAGaXNzdWVyBQAAAAVhcnRJZAQAAAAMYXJ0d29ya1ByaWNlAwUAAAAOY2FsbGVySXNJc3N1ZXIJAABoAAAAAgUAAAAZY3VycmVudENlcnRpZmljYXRpb25QcmljZQAAAAAAAAAAAgkBAAAAD2dldEludGVnZXJCeUtleQAAAAEJAQAAAAhrZXlQcmljZQAAAAIFAAAABmlzc3VlcgUAAAAFYXJ0SWQEAAAADHByaWNlQXNzZXRJZAMFAAAADmNhbGxlcklzSXNzdWVyCQACWAAAAAEFAAAAC3NpZ25Bc3NldElkCQEAAAAOZ2V0U3RyaW5nQnlLZXkAAAABCQEAAAASa2V5QXNzZXRJZEFjY2VwdGVkAAAAAgUAAAAGaXNzdWVyBQAAAAVhcnRJZAQAAAAKbWF4Q2FuU2VsbAkBAAAAD2dldEludGVnZXJCeUtleQAAAAEJAQAAAAprZXlNYXhNaW50AAAAAgUAAAAGaXNzdWVyBQAAAAVhcnRJZAMDAwkB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AAVpc0JpZAkABEwAAAACBQAAAAhzb2xkRGF0YQkABEwAAAACBQAAAAliaWRVcGRhdGUJAARMAAAAAgUAAAAJYmlkRGVsT2xkBQAAAAZidXlSZXMJAARMAAAAAgUAAAAIc29sZERhdGEFAAAABmJ1eVJlcwAAAAkAAAABaQEAAAAKYWRkQXJ0d29yawAAAAsAAAAKc2hhMjU2SGFzaAAAAAZzaWduSUQAAAAEbmFtZQAAAAtkZXNjcmlwdGlvbgAAAAR0YWdzAAAABHR5cGUAAAAKY2lkRGlzcGxheQAAAAxzaGEyNTZFeHBvcnQAAAAJY2lkRXhwb3J0AAAADXNoYTI1NkxpY2VuY2UAAAAKY2lkTGljZW5jZQQAAAANJHQwMTY1OTMxNjYzNAkBAAAADGlkQ2FsbGVyRGF0ZQAAAAEFAAAAAWkEAAAABWFydElkCAUAAAANJHQwMTY1OTMxNjYzNAAAAAJfMQQAAAAGY2FsbGVyCAUAAAANJHQwMTY1OTMxNjYzNAAAAAJfMgQAAAAEZGF0ZQgFAAAADSR0MDE2NTkzMTY2MzQAAAACXzMDCQEAAAABIQAAAAEJAQAAAAx2YWxpZGF0ZUhhc2gAAAABBQAAAApzaGEyNTZIYXNoCQAAAgAAAAECAAAAJEhhc2ggc2hvdWxkIGJlIDY0IGNoYXJhY3RlcnMgbWF4aW11bQQAAAANJHQwMTY3MzUxNjgwNAkBAAAACnNldExJY2VuY2UAAAACBQAAAApjaWRMaWNlbmNlBQAAAA1zaGEyNTZMaWNlbmNlBAAAAApsaWNlbmNlQ0lECAUAAAANJHQwMTY3MzUxNjgwNAAAAAJfMQQAAAALbGljZW5jZUhhc2gIBQAAAA0kdDAxNjczNTE2ODA0AAAAAl8yBAAAAA92YWxpZGF0ZUFydHdvcmsJAQAAABN2YWxpZGF0ZUFydHdvcmtEYXRhAAAACQUAAAAGY2FsbGVyBQAAAApjaWREaXNwbGF5BQAAAAljaWRFeHBvcnQFAAAACmxpY2VuY2VDSUQFAAAADHNoYTI1NkV4cG9ydAUAAAALbGljZW5jZUhhc2gFAAAABG5hbWUFAAAAC2Rlc2NyaXB0aW9uBQAAAAR0YWdzAwkBAAAAAiE9AAAAAgUAAAAPdmFsaWRhdGVBcnR3b3JrAgAAAAAJAAACAAAAAQIAAAAVU29tZXRoaW5nIHdlbnQgd3JvbmchBAAAAA0kdDAxNzAyMzE3MDY1CQEAAAAPdmFsaWRhdGVQYXltZW50AAAAAQUAAAABaQQAAAAGYW1vdW50CAUAAAANJHQwMTcwMjMxNzA2NQAAAAJfMQQAAAAHYXNzZXRJZAgFAAAADSR0MDE3MDIzMTcwNjUAAAACXzIDCQEAAAABIQAAAAEJAQAAAAlpc0RlZmluZWQAAAABBQAAAAZhbW91bnQJAAACAAAAAQIAAAAUU29tZXRoaW5nIHdlbnQgd3JvbmcEAAAACmVudHJ5RXhpc3QJAQAAAA5nZXRTdHJpbmdCeUtleQAAAAEJAQAAABJrZXlUeGlkQnlIYXNoT3duZXIAAAACBQAAAApzaGEyNTZIYXNoBQAAAAZjYWxsZXIDCQEAAAACIT0AAAACBQAAAAplbnRyeUV4aXN0AgAAAAAJAAACAAAAAQIAAAAUWW91IGFscmVhZHkgYWRkZWQgaXQEAAAACWhhc2hFeGlzdAkBAAAADmdldFN0cmluZ0J5S2V5AAAAAQkBAAAADmtleU93bmVyQnlIYXNoAAAAAQUAAAAKc2hhMjU2SGFzaAMJAQAAAAIhPQAAAAIFAAAACWhhc2hFeGlzdAIAAAAACQAAAgAAAAECAAAAF0hhc2ggYWxyZWFkeSByZWdpc3RlcmVkBAAAAA9pc1NpZ25DZXJ0aWZpZWQJAQAAABRjaGVja1NpZ25DZXJ0aWZpY2F0ZQAAAAMFAAAABnNpZ25JRAUAAAAGY2FsbGVyBQAAAApzaGEyNTZIYXNoAwkBAAAAASEAAAABBQAAAA9pc1NpZ25DZXJ0aWZpZWQJAAACAAAAAQIAAAAsU2lnbiBDZXJ0aWZpY2F0ZSBub3QgZm91bmQgZm9yIHRoaXMgYWRkcmVzcy4JAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAADmtleU93bmVyQnlIYXNoAAAAAQUAAAAKc2hhMjU2SGFzaAUAAAAGY2FsbGVyCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAABJrZXlUeGlkQnlIYXNoT3duZXIAAAACBQAAAApzaGEyNTZIYXNoBQAAAAZjYWxsZXIFAAAABWFydElkCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAAHa2V5RGF0ZQAAAAIFAAAABmNhbGxlcgUAAAAFYXJ0SWQFAAAABGRhdGUJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAAB2tleU5hbWUAAAACBQAAAAZjYWxsZXIFAAAABWFydElkBQAAAARuYW1lCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAAAdrZXlEZXNjAAAAAgUAAAAGY2FsbGVyBQAAAAVhcnRJZAUAAAALZGVzY3JpcHRpb24JAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAADWtleURpc3BsYXlDaWQAAAACBQAAAAZjYWxsZXIFAAAABWFydElkBQAAAApjaWREaXNwbGF5CQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAAAxrZXlFeHBvcnRDaWQAAAACBQAAAAZjYWxsZXIFAAAABWFydElkBQAAAAljaWRFeHBvcnQJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAADWtleUV4cG9ydEhhc2gAAAACBQAAAAZjYWxsZXIFAAAABWFydElkBQAAAAxzaGEyNTZFeHBvcnQJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAADmtleUxpY2VuY2VIYXNoAAAAAgUAAAAGY2FsbGVyBQAAAAVhcnRJZAUAAAALbGljZW5jZUhhc2gJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAADWtleUxpY2VuY2VDaWQAAAACBQAAAAZjYWxsZXIFAAAABWFydElkBQAAAApsaWNlbmNlQ0lECQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAAAdrZXlUeXBlAAAAAgUAAAAGY2FsbGVyBQAAAAVhcnRJZAUAAAAEdHlwZQkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAAHa2V5VGFncwAAAAIFAAAABmNhbGxlcgUAAAAFYXJ0SWQFAAAABHRhZ3MJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAAAprZXlNYXhNaW50AAAAAgUAAAAGY2FsbGVyBQAAAAVhcnRJZAAAAAAAAAAAAAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAAJa2V5U2lnbklEAAAAAgUAAAAGY2FsbGVyBQAAAAVhcnRJZAUAAAAGc2lnbklECQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAAJa2V5SXNzdWVkAAAAAgUAAAAGY2FsbGVyBQAAAAVhcnRJZAAAAAAAAAAAAAkABEwAAAACCQEAAAAMQm9vbGVhbkVudHJ5AAAAAgkBAAAACWtleU9uU2FsZQAAAAIFAAAABmNhbGxlcgUAAAAFYXJ0SWQHCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAAA1rZXlpZEJ5U2lnbmlkAAAAAgUAAAAGY2FsbGVyBQAAAAZzaWduSUQFAAAABWFydElkCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAABFrZXlIYXNoQnlUeGlkQWRkcgAAAAIFAAAABmNhbGxlcgUAAAAFYXJ0SWQFAAAACnNoYTI1Nkhhc2gJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwkBAAAAB0FkZHJlc3MAAAABCQACWQAAAAEFAAAAC2ZlZVJlY2VpdmVyBQAAAAZhbW91bnQFAAAAB2Fzc2V0SWQFAAAAA25pbAAAAAFpAQAAAA11cGRhdGVBcnR3b3JrAAAACgAAAAR0eGlkAAAABG5hbWUAAAALZGVzY3JpcHRpb24AAAAEdGFncwAAAAR0eXBlAAAACmNpZERpc3BsYXkAAAAMc2hhMjU2RXhwb3J0AAAACWNpZEV4cG9ydAAAAA1zaGEyNTZMaWNlbmNlAAAACmNpZExpY2VuY2UDCQEAAAABIQAAAAEFAAAAC2RhcHBSdW5uaW5nCQAAAgAAAAEFAAAADm1haW50ZW5hbmNlTVNHBAAAAAZjYWxsZXIJAAJYAAAAAQgIBQAAAAFpAAAABmNhbGxlcgAAAAVieXRlcwQAAAANJHQwMTk3MDUxOTc3NAkBAAAACnNldExJY2VuY2UAAAACBQAAAApjaWRMaWNlbmNlBQAAAA1zaGEyNTZMaWNlbmNlBAAAAApsaWNlbmNlQ0lECAUAAAANJHQwMTk3MDUxOTc3NAAAAAJfMQQAAAALbGljZW5jZUhhc2gIBQAAAA0kdDAxOTcwNTE5Nzc0AAAAAl8yBAAAAA92YWxpZGF0ZUFydHdvcmsJAQAAABN2YWxpZGF0ZUFydHdvcmtEYXRhAAAACQUAAAAGY2FsbGVyBQAAAApjaWREaXNwbGF5BQAAAAljaWRFeHBvcnQFAAAACmxpY2VuY2VDSUQFAAAADHNoYTI1NkV4cG9ydAUAAAALbGljZW5jZUhhc2gFAAAABG5hbWUFAAAAC2Rlc2NyaXB0aW9uBQAAAAR0YWdzAwkBAAAAAiE9AAAAAgUAAAAPdmFsaWRhdGVBcnR3b3JrAgAAAAAJAAACAAAAAQIAAAAVU29tZXRoaW5nIHdlbnQgd3JvbmchBAAAAAplbnRyeUV4aXN0CQEAAAAOZ2V0U3RyaW5nQnlLZXkAAAABCQEAAAAHa2V5TmFtZQAAAAIFAAAABmNhbGxlcgUAAAAEdHhpZAMJAAAAAAAAAgUAAAAKZW50cnlFeGlzdAIAAAAACQAAAgAAAAECAAAAD0VudHJ5IG5vdCBmb3VuZAQAAAAEZmxhZwkBAAAADmdldFN0cmluZ0J5S2V5AAAAAQkBAAAAB2tleUZsYWcAAAACBQAAAAZjYWxsZXIFAAAABHR4aWQDCQAAAAAAAAIFAAAABGZsYWcCAAAAB0lMTEVHQUwJAAACAAAAAQIAAAAdQ2Fubm90IHVwZGF0ZSBJTExFR0FMIGFydHdvcmsDCQEAAAABIQAAAAEJAQAAAAtpc0FydE1pbnRlZAAAAAIFAAAABmNhbGxlcgUAAAAEdHhpZAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAAHa2V5TmFtZQAAAAIFAAAABmNhbGxlcgUAAAAEdHhpZAUAAAAEbmFtZQkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAAHa2V5RGVzYwAAAAIFAAAABmNhbGxlcgUAAAAEdHhpZAUAAAALZGVzY3JpcHRpb24JAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAADWtleURpc3BsYXlDaWQAAAACBQAAAAZjYWxsZXIFAAAABHR4aWQFAAAACmNpZERpc3BsYXkJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAADGtleUV4cG9ydENpZAAAAAIFAAAABmNhbGxlcgUAAAAEdHhpZAUAAAAJY2lkRXhwb3J0CQAETAAA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", "height": 1685243, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: Gzu4XxQ65Q3jvAWjtCVK9mCPE5xEzevXCKzuridj8Zzn Next: 6shQaJcrpfRqT1MeeV6nHUxB2Akw6jcpoVTWMwmXToKh Diff:
OldNewDifferences
1-{-# STDLIB_VERSION 4 #-}
1+{-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let unitTest = false
233233
234234
235235 func validatePayment (i) = {
236- let $t091139149 = isPayment(i)
237- let payment = $t091139149._1
238- let amount = $t091139149._2
236+ let $t091289164 = isPayment(i)
237+ let payment = $t091289164._1
238+ let amount = $t091289164._2
239239 let assetId = if (if (isDefined(payment.assetId))
240240 then (payment.assetId == signAssetId)
241241 else false)
258258
259259
260260 func validatePriceAssetId (i,priceAssetId,artworkPrice) = {
261- let $t097429778 = isPayment(i)
262- let payment = $t097429778._1
263- let amount = $t097429778._2
261+ let $t097579793 = isPayment(i)
262+ let payment = $t097579793._1
263+ let amount = $t097579793._2
264264 let assetId = if (!(isDefined(payment.assetId)))
265265 then unit
266266 else if (if ((size(priceAssetId) > 0))
347347
348348
349349 func buyMint (i,artId,issuer,bidId,bidOwner) = {
350- let $t01200312060 = idCallerDate(i)
351- let id = $t01200312060._1
352- let caller = $t01200312060._2
353- let date = $t01200312060._3
350+ let $t01201812075 = idCallerDate(i)
351+ let id = $t01201812075._1
352+ let caller = $t01201812075._2
353+ let date = $t01201812075._3
354354 let isBid = if (if (if ((toBase58String(i.caller.bytes) == issuer))
355355 then (bidOwner != "")
356356 else false)
406406 then throw(checkUser)
407407 else {
408408 let bidDataKey = ((((((("bid_" + artId) + "_") + issuer) + "_") + bidOwner) + "_") + bidId)
409- let $t01381113967 = if (isBid)
409+ let $t01382613982 = if (isBid)
410410 then getPriceAssetIdFromBid(bidDataKey)
411411 else validatePriceAssetId(i, priceAssetId, artworkPrice)
412- let amount = $t01381113967._1
413- let assetId = $t01381113967._2
412+ let amount = $t01382613982._1
413+ let assetId = $t01382613982._2
414414 let isWhitelisted = checkWhitelist(issuer)
415415 let cut = if ((isWhitelisted > height))
416416 then 0
467467
468468 @Callable(i)
469469 func addArtwork (sha256Hash,signID,name,description,tags,type,cidDisplay,sha256Export,cidExport,sha256Licence,cidLicence) = {
470- let $t01657816619 = idCallerDate(i)
471- let artId = $t01657816619._1
472- let caller = $t01657816619._2
473- let date = $t01657816619._3
470+ let $t01659316634 = idCallerDate(i)
471+ let artId = $t01659316634._1
472+ let caller = $t01659316634._2
473+ let date = $t01659316634._3
474474 if (!(validateHash(sha256Hash)))
475475 then throw("Hash should be 64 characters maximum")
476476 else {
477- let $t01672016789 = setLIcence(cidLicence, sha256Licence)
478- let licenceCID = $t01672016789._1
479- let licenceHash = $t01672016789._2
477+ let $t01673516804 = setLIcence(cidLicence, sha256Licence)
478+ let licenceCID = $t01673516804._1
479+ let licenceHash = $t01673516804._2
480480 let validateArtwork = validateArtworkData(caller, cidDisplay, cidExport, licenceCID, sha256Export, licenceHash, name, description, tags)
481481 if ((validateArtwork != ""))
482482 then throw("Something went wrong!")
483483 else {
484- let $t01700817050 = validatePayment(i)
485- let amount = $t01700817050._1
486- let assetId = $t01700817050._2
484+ let $t01702317065 = validatePayment(i)
485+ let amount = $t01702317065._1
486+ let assetId = $t01702317065._2
487487 if (!(isDefined(amount)))
488488 then throw("Something went wrong")
489489 else {
513513 then throw(maintenanceMSG)
514514 else {
515515 let caller = toBase58String(i.caller.bytes)
516- let $t01969019759 = setLIcence(cidLicence, sha256Licence)
517- let licenceCID = $t01969019759._1
518- let licenceHash = $t01969019759._2
516+ let $t01970519774 = setLIcence(cidLicence, sha256Licence)
517+ let licenceCID = $t01970519774._1
518+ let licenceHash = $t01970519774._2
519519 let validateArtwork = validateArtworkData(caller, cidDisplay, cidExport, licenceCID, sha256Export, licenceHash, name, description, tags)
520520 if ((validateArtwork != ""))
521521 then throw("Something went wrong!")
538538
539539 @Callable(i)
540540 func flagArtwork (artId,addr,flag) = {
541- let $t02109621129 = idCallerDate(i)
542- let id = $t02109621129._1
543- let caller = $t02109621129._2
541+ let $t02111121144 = idCallerDate(i)
542+ let id = $t02111121144._1
543+ let caller = $t02111121144._2
544544 if (containsElement([chris, toString(this)], caller))
545545 then if (containsElement(["CONSENT", "", "CHANGE_REQUIRED", "SUSPENDED", "FLAGGED", "ILLEGAL"], flag))
546546 then [StringEntry(keyFlag(addr, artId), flag)]
552552
553553 @Callable(i)
554554 func deleteArtwork (artId,addr) = {
555- let $t02152521558 = idCallerDate(i)
556- let id = $t02152521558._1
557- let caller = $t02152521558._2
555+ let $t02154021573 = idCallerDate(i)
556+ let id = $t02154021573._1
557+ let caller = $t02154021573._2
558558 let addrToUse = if (containsElement([chris, joep, toString(this)], caller))
559559 then addr
560560 else caller
587587
588588 @Callable(i)
589589 func sellArtwork (artId,price,maxMint,assetId,blockEnd) = {
590- let $t02421724250 = idCallerDate(i)
591- let id = $t02421724250._1
592- let caller = $t02421724250._2
590+ let $t02423224265 = idCallerDate(i)
591+ let id = $t02423224265._1
592+ let caller = $t02423224265._2
593593 let artworkName = getStringByKey(keyName(caller, artId))
594594 if ((artworkName == ""))
595595 then throw("This art doesn't match your account")
660660
661661 @Callable(i)
662662 func setBid (artId,issuer) = {
663- let $t02652026558 = idCallerDate(i)
664- let id = $t02652026558._1
665- let caller = $t02652026558._2
666- let date = $t02652026558._3
667- let $t02656326599 = isPayment(i)
668- let payment = $t02656326599._1
669- let amount = $t02656326599._2
663+ let $t02653526573 = idCallerDate(i)
664+ let id = $t02653526573._1
665+ let caller = $t02653526573._2
666+ let date = $t02653526573._3
667+ let $t02657826614 = isPayment(i)
668+ let payment = $t02657826614._1
669+ let amount = $t02657826614._2
670670 let assetId = if (!(isDefined(payment.assetId)))
671671 then "WAVES"
672672 else toBase58String(value(payment.assetId))
707707
708708 @Callable(i)
709709 func cancelBid (artId,issuer,bidId,bidOwner) = {
710- let $t02802628085 = idCallerDate(i)
711- let id = $t02802628085._1
712- let caller = $t02802628085._2
713- let date = $t02802628085._3
710+ let $t02804128100 = idCallerDate(i)
711+ let id = $t02804128100._1
712+ let caller = $t02804128100._2
713+ let date = $t02804128100._3
714714 if (if ((caller != bidOwner))
715715 then (caller != issuer)
716716 else false)
Full:
OldNewDifferences
1-{-# STDLIB_VERSION 4 #-}
1+{-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let unitTest = false
55
66 let oracleFee = value(addressFromString("3N2s5RtaHPBenCsx2ECcoFRbYHx3noZhXW1"))
77
88 let signDapp = value(addressFromString("3NC28hSivrmsTUXaYD1x6L362J4ZpUnoTdB"))
99
1010 let feeReceiver = "3N1E6tXddRoVaRfQ9dQ3vg5LaW2fsd8HKub"
1111
1212 let userDapp = if (unitTest)
1313 then value(addressFromString("3Mt4RGMEyjSWYAocTPqd55wdHQQB3PU2UCm"))
1414 else value(addressFromString("3N8xXaYjE27Aa79d5hHrhHu9HaFoTBmhDEj"))
1515
1616 let whitelistDapp = value(addressFromString("3N6BaV1dCB4zg43goNNHaCtvR13BcyJ5Gsq"))
1717
1818 let signAssetId = base58'Gf9t8FA4H3ssoZPCwrg3KwUFCci8zuUFP9ssRsUY3s6a'
1919
2020 let usdnAssetId = base58'25FEqEjRkqK6yCkiT7Lz6SAYz7gUFCtxfCChnrVFD5AT'
2121
2222 let wavesAssetId = base58''
2323
2424 let chris = "3MsG6jPNCrVJUtYB7XJBxS7utWsXAf4n9Vp"
2525
2626 let joep = "3Mzm4VLwsN9uZwbTMzPj3XuxV6kEfAR8UDN"
2727
2828 let signCut = 7
2929
3030 let usdnWaveCut = 10
3131
3232 let defaultLicence = "bafybeifuyo4pqu54ismqgtb6e4h6kkvgx7zg4u3zibh2r7y6mb64i7bzza/licence.pdf"
3333
3434 let defaultHashLicence = "a87758c354e30a9e78fb84fa3a0010a5090ab20df0be11ad45b5720cc187e639"
3535
3636 let dappRunning = valueOrElse(getBoolean(userDapp, "conf_dapp_is_running"), true)
3737
3838 let maintenanceMSG = valueOrElse(getString(userDapp, "conf_maintenance_msg"), "")
3939
4040 let userSuspended = "SUSPENDED"
4141
4242 let userRemoved = "REMOVED"
4343
4444 let userUnregistered = "UNREGISTERED"
4545
4646 let userAllowed = "ALLOWED"
4747
4848 func getStringByKey (key) = valueOrElse(getString(this, key), "")
4949
5050
5151 func getIntegerByKeyFromOracle (key) = valueOrErrorMessage(getInteger(oracleFee, key), "Integer undefine or 0 in oracle")
5252
5353
5454 func getIntegerByKey (key) = valueOrElse(getInteger(this, key), 0)
5555
5656
5757 func checkWhitelist (key) = valueOrElse(getInteger(whitelistDapp, key), 0)
5858
5959
6060 func getBooleanByKey (key) = valueOrElse(getBoolean(this, key), false)
6161
6262
6363 let currentCertificationPrice = getIntegerByKeyFromOracle(("certification_fee_" + toBase58String(signAssetId)))
6464
6565 func checkSignCertificate (signID,Owner,sha256Hash) = match getString(signDapp, ((("data_fc_" + signID) + "_") + Owner)) {
6666 case a: String =>
6767 if (contains(a, sha256Hash))
6868 then true
6969 else false
7070 case _ =>
7171 false
7272 }
7373
7474
7575 func validateCID (cid) = if (contains(cid, "/"))
7676 then if (if ((76 > size(cid)))
7777 then (size(split(cid, "/")[0]) == 59)
7878 else false)
7979 then (16 > size(split(cid, "/")[1]))
8080 else false
8181 else false
8282
8383
8484 func validateHash (hash) = (size(hash) == 64)
8585
8686
8787 func keyUserStatus (caller) = ("user_status_" + caller)
8888
8989
9090 func keyDate (caller,artId) = ((("art_date_" + artId) + "_") + caller)
9191
9292
9393 func keyName (caller,artId) = ((("art_name_" + artId) + "_") + caller)
9494
9595
9696 func keyDesc (caller,artId) = ((("art_desc_" + artId) + "_") + caller)
9797
9898
9999 func keyDisplayCid (caller,artId) = ((("art_display_cid_" + artId) + "_") + caller)
100100
101101
102102 func keyExportHash (caller,artId) = ((("art_export_hash_" + artId) + "_") + caller)
103103
104104
105105 func keyExportCid (caller,artId) = ((("art_export_cid_" + artId) + "_") + caller)
106106
107107
108108 func keyMaxMint (caller,artId) = ((("art_maxmint_" + artId) + "_") + caller)
109109
110110
111111 func keySignID (caller,artId) = ((("art_signid_" + artId) + "_") + caller)
112112
113113
114114 func keyIssued (caller,artId) = ((("art_issued_" + artId) + "_") + caller)
115115
116116
117117 func keyOnSale (caller,artId) = ((("art_onsale_" + artId) + "_") + caller)
118118
119119
120120 func keyLicenceHash (caller,artId) = ((("art_licence_hash_" + artId) + "_") + caller)
121121
122122
123123 func keyLicenceCid (caller,artId) = ((("art_licence_cid_" + artId) + "_") + caller)
124124
125125
126126 func keyTags (caller,artId) = ((("art_tags_" + artId) + "_") + caller)
127127
128128
129129 func keyType (caller,artId) = ((("art_type_" + artId) + "_") + caller)
130130
131131
132132 func keyPrice (caller,artId) = ((("art_price_" + artId) + "_") + caller)
133133
134134
135135 func keyEndSale (caller,artId) = ((("art_endsale_" + artId) + "_") + caller)
136136
137137
138138 func keyAssetIdAccepted (caller,artId) = ((("art_assetAccepted_" + artId) + "_") + caller)
139139
140140
141141 func keyFlag (caller,artId) = ((("art_flag_" + artId) + "_") + caller)
142142
143143
144144 func keyHashByTxidAddr (caller,txid) = ((("get_hashbytxidaddr_" + txid) + "_") + caller)
145145
146146
147147 func keyOwnerByHash (sha256Hash) = ("get_owner_by_hash_" + sha256Hash)
148148
149149
150150 func keyidBySignid (caller,signId) = ((("get_artidbysignid_" + signId) + "_") + caller)
151151
152152
153153 func keyTxidByHashOwner (sha256Hash,caller) = ("get_txid_by_hash_owner_" + toBase58String(sha256_16Kb(toBytes((sha256Hash + caller)))))
154154
155155
156156 func validateAllCID (cidDisplay,cidExport,cidLicence) = if (!(validateCID(cidDisplay)))
157157 then throw("Wrong Display CID")
158158 else if (!(validateCID(cidExport)))
159159 then throw("Wrong Export CID")
160160 else if (if ((cidLicence != ""))
161161 then !(validateCID(cidLicence))
162162 else false)
163163 then throw("Wrong Licence CID")
164164 else true
165165
166166
167167 func validateAllHash (sha256Export,sha256Licence) = if (!(validateHash(sha256Export)))
168168 then throw("Export Hash 64 char. max")
169169 else if (!(validateHash(sha256Licence)))
170170 then throw("Licence Hash 64 char. max")
171171 else true
172172
173173
174174 func validateString (str,max) = if ((size(str) == 0))
175175 then throw("Field cannot be is empty")
176176 else if ((size(str) > max))
177177 then throw((str + " is too long"))
178178 else true
179179
180180
181181 func validateUser (caller) = {
182182 let userStatus = valueOrElse(getString(userDapp, keyUserStatus(caller)), userUnregistered)
183183 if (if ((userStatus == userUnregistered))
184184 then true
185185 else (userStatus == userAllowed))
186186 then "Register this account first with \"Account\" tab"
187187 else if ((userStatus == userSuspended))
188188 then "Account suspended"
189189 else if ((userStatus == userRemoved))
190190 then "Account removed"
191191 else ""
192192 }
193193
194194
195195 func setLIcence (cidLicence,sha256Licence) = {
196196 let cid = if ((size(cidLicence) == 0))
197197 then defaultLicence
198198 else cidLicence
199199 let hash = if ((size(sha256Licence) == 0))
200200 then defaultHashLicence
201201 else sha256Licence
202202 $Tuple2(cid, hash)
203203 }
204204
205205
206206 func validateArtworkData (caller,cidDisplay,cidExport,licenceCID,sha256Export,licenceHash,name,description,tags) = {
207207 let checkUser = validateUser(caller)
208208 if ((checkUser != ""))
209209 then throw(checkUser)
210210 else if ((size(cidDisplay) == 0))
211211 then throw("Display CID cannot be empty")
212212 else if (!(validateAllCID(cidDisplay, cidExport, licenceCID)))
213213 then throw("Problem with CID")
214214 else if (!(validateAllHash(sha256Export, licenceHash)))
215215 then throw("Problem with Hashes")
216216 else if (!(validateString(name, 100)))
217217 then throw("100 Char. max name")
218218 else if (!(validateString(description, 1000)))
219219 then throw("1000 Char. max description")
220220 else if ((size(split(tags, ",")) > 5))
221221 then throw("5 tags max.")
222222 else ""
223223 }
224224
225225
226226 func isPayment (i) = if ((size(i.payments) == 0))
227227 then throw("No payment attached")
228228 else {
229229 let payment = value(i.payments[0])
230230 let amount = value(payment.amount)
231231 $Tuple2(payment, amount)
232232 }
233233
234234
235235 func validatePayment (i) = {
236- let $t091139149 = isPayment(i)
237- let payment = $t091139149._1
238- let amount = $t091139149._2
236+ let $t091289164 = isPayment(i)
237+ let payment = $t091289164._1
238+ let amount = $t091289164._2
239239 let assetId = if (if (isDefined(payment.assetId))
240240 then (payment.assetId == signAssetId)
241241 else false)
242242 then payment.assetId
243243 else throw("Only SIGN token accepted as transaction fee")
244244 if ((amount != currentCertificationPrice))
245245 then throw(("Payment amount should be " + toString(currentCertificationPrice)))
246246 else $Tuple2(amount, assetId)
247247 }
248248
249249
250250 func isArtMinted (addrToUse,artId) = match getInteger(this, keyIssued(addrToUse, artId)) {
251251 case b: Int =>
252252 if ((b != 0))
253253 then true
254254 else false
255255 case _ =>
256256 false
257257 }
258258
259259
260260 func validatePriceAssetId (i,priceAssetId,artworkPrice) = {
261- let $t097429778 = isPayment(i)
262- let payment = $t097429778._1
263- let amount = $t097429778._2
261+ let $t097579793 = isPayment(i)
262+ let payment = $t097579793._1
263+ let amount = $t097579793._2
264264 let assetId = if (!(isDefined(payment.assetId)))
265265 then unit
266266 else if (if ((size(priceAssetId) > 0))
267267 then (toBase58String(value(payment.assetId)) == priceAssetId)
268268 else false)
269269 then payment.assetId
270270 else throw("Wrong asset id")
271271 if (if ((assetId == unit))
272272 then (priceAssetId != "")
273273 else false)
274274 then throw("Wrong asset id")
275275 else if ((artworkPrice != amount))
276276 then throw("Payment don't match")
277277 else $Tuple2(amount, assetId)
278278 }
279279
280280
281281 func acceptedAssetIds (assetId) = if (if (if (if ((assetId != toBase58String(signAssetId)))
282282 then (assetId != toBase58String(wavesAssetId))
283283 else false)
284284 then (assetId != "WAVES")
285285 else false)
286286 then (assetId != toBase58String(usdnAssetId))
287287 else false)
288288 then throw("Only SIGN, USDN or WAVES accepted")
289289 else true
290290
291291
292292 func validateMinSell (assetId,price) = {
293293 let minSellWaves = if (unitTest)
294294 then 10
295295 else getIntegerByKeyFromOracle("waves_min_sell")
296296 let minSellUsdn = 1000000
297297 let minSellSign = if (unitTest)
298298 then 1
299299 else (currentCertificationPrice * 2)
300300 if (if (if (if (if ((assetId == toBase58String(usdnAssetId)))
301301 then (minSellUsdn > price)
302302 else false)
303303 then (price != 0)
304304 else false)
305305 then true
306306 else if (if ((assetId == toBase58String(signAssetId)))
307307 then (minSellSign > price)
308308 else false)
309309 then (price != 0)
310310 else false)
311311 then true
312312 else if (if (if ((assetId == toBase58String(wavesAssetId)))
313313 then true
314314 else (assetId == "WAVES"))
315315 then (minSellWaves > price)
316316 else false)
317317 then (price != 0)
318318 else false)
319319 then throw("Wrong minimum sell price")
320320 else true
321321 }
322322
323323
324324 func getBidAssetId (assetId) = if ((assetId == "WAVES"))
325325 then unit
326326 else fromBase58String(assetId)
327327
328328
329329 func getPriceAssetIdFromBid (bidDataKey) = {
330330 let bidData = getStringByKey((bidDataKey + "_OPEN"))
331331 if ((bidData == ""))
332332 then throw("Bid not found")
333333 else {
334334 let bidDataArr = split(bidData, "_")
335335 let bidAmount = parseIntValue(bidDataArr[1])
336336 let bidAssetId = getBidAssetId(bidDataArr[0])
337337 if ((0 >= bidAmount))
338338 then throw("Wrong amount")
339339 else $Tuple2(bidAmount, bidAssetId)
340340 }
341341 }
342342
343343
344344 func idCallerDate (i) = if (!(dappRunning))
345345 then throw(maintenanceMSG)
346346 else $Tuple3(toBase58String(i.transactionId), toBase58String(i.caller.bytes), lastBlock.timestamp)
347347
348348
349349 func buyMint (i,artId,issuer,bidId,bidOwner) = {
350- let $t01200312060 = idCallerDate(i)
351- let id = $t01200312060._1
352- let caller = $t01200312060._2
353- let date = $t01200312060._3
350+ let $t01201812075 = idCallerDate(i)
351+ let id = $t01201812075._1
352+ let caller = $t01201812075._2
353+ let date = $t01201812075._3
354354 let isBid = if (if (if ((toBase58String(i.caller.bytes) == issuer))
355355 then (bidOwner != "")
356356 else false)
357357 then (bidId != "")
358358 else false)
359359 then true
360360 else false
361361 let blockEnd = getIntegerByKey(keyEndSale(caller, artId))
362362 if (if (if ((blockEnd != 0))
363363 then (height >= blockEnd)
364364 else false)
365365 then !(isBid)
366366 else false)
367367 then throw("Sale ended.")
368368 else {
369369 let callerIsIssuer = (toBase58String(i.caller.bytes) == issuer)
370370 let totalNFT = getIntegerByKey("total_nft_issued")
371371 let signID = getStringByKey(keySignID(issuer, artId))
372372 let artworkName = getStringByKey(keyName(issuer, artId))
373373 if ((artworkName == ""))
374374 then throw("Art doesn't exist")
375375 else {
376376 let isOnSale = getBooleanByKey(keyOnSale(issuer, artId))
377377 let amountSold = getIntegerByKey(keyIssued(issuer, artId))
378378 let artworkPrice = if (callerIsIssuer)
379379 then (currentCertificationPrice * 2)
380380 else getIntegerByKey(keyPrice(issuer, artId))
381381 let priceAssetId = if (callerIsIssuer)
382382 then toBase58String(signAssetId)
383383 else getStringByKey(keyAssetIdAccepted(issuer, artId))
384384 let maxCanSell = getIntegerByKey(keyMaxMint(issuer, artId))
385385 if (if (if (!(isBid))
386386 then !(callerIsIssuer)
387387 else false)
388388 then if (if ((0 >= artworkPrice))
389389 then true
390390 else !(isOnSale))
391391 then true
392392 else (0 >= maxCanSell)
393393 else false)
394394 then throw("Art not for sale")
395395 else if (if (if (!(isBid))
396396 then callerIsIssuer
397397 else false)
398398 then (0 >= maxCanSell)
399399 else false)
400400 then throw("Max issuable not set")
401401 else {
402402 let checkUser = validateUser(issuer)
403403 if (if (isBid)
404404 then (checkUser != "")
405405 else false)
406406 then throw(checkUser)
407407 else {
408408 let bidDataKey = ((((((("bid_" + artId) + "_") + issuer) + "_") + bidOwner) + "_") + bidId)
409- let $t01381113967 = if (isBid)
409+ let $t01382613982 = if (isBid)
410410 then getPriceAssetIdFromBid(bidDataKey)
411411 else validatePriceAssetId(i, priceAssetId, artworkPrice)
412- let amount = $t01381113967._1
413- let assetId = $t01381113967._2
412+ let amount = $t01382613982._1
413+ let assetId = $t01382613982._2
414414 let isWhitelisted = checkWhitelist(issuer)
415415 let cut = if ((isWhitelisted > height))
416416 then 0
417417 else if ((assetId == signAssetId))
418418 then signCut
419419 else usdnWaveCut
420420 let amountForSign = fraction(amount, cut, 100)
421421 let amountForCreator = (amount - amountForSign)
422422 if ((amountSold == maxCanSell))
423423 then throw("Art sold out")
424424 else {
425425 let newAmountSold = (amountSold + 1)
426426 let issueMeta = ((((((((((("Creator: " + issuer) + ",
427427 ArtID: ") + artId) + ",
428428 SignID: ") + signID) + ",
429429 Artwork name: ") + artworkName) + ",
430430 Issue: ") + toString(newAmountSold)) + "/") + toString(maxCanSell))
431431 let issueNFT = Issue(("SA_" + toString((totalNFT + 1))), issueMeta, 1, 0, false)
432432 let idNFT = calculateAssetId(issueNFT)
433433 let sellStatus = if (if ((newAmountSold == maxCanSell))
434434 then true
435435 else !(isOnSale))
436436 then false
437437 else true
438438 let receiveNFT = if (if (if ((caller == issuer))
439439 then (bidOwner != "")
440440 else false)
441441 then (bidId != "")
442442 else false)
443443 then addressFromStringValue(bidOwner)
444444 else i.caller
445445 let assetIdBid = if (!(isDefined(assetId)))
446446 then "WAVES"
447447 else toBase58String(value(assetId))
448448 let bidData = getStringByKey((bidDataKey + "_OPEN"))
449449 let bidDelOld = DeleteEntry((bidDataKey + "_OPEN"))
450450 let bidUpdate = StringEntry((bidDataKey + "_CLOSED"), ((bidData + "_") + toString(date)))
451451 let soldKey = ((((((("art_sold_" + toString(newAmountSold)) + "_of_") + toString(maxCanSell)) + "_") + artId) + "_") + issuer)
452452 let soldValue = if (!(isBid))
453453 then ((((((((((caller + "_") + toString(date)) + "_") + id) + "_") + toString(artworkPrice)) + "_") + priceAssetId) + "_") + toBase58String(idNFT))
454454 else ((((((((((toString(receiveNFT) + "_") + toString(date)) + "_") + id) + "_") + toString(amount)) + "_") + assetIdBid) + "_") + toBase58String(idNFT))
455455 let soldData = StringEntry(soldKey, soldValue)
456456 let buyRes = [IntegerEntry(keyIssued(issuer, artId), newAmountSold), StringEntry(("nft_" + toBase58String(idNFT)), soldKey), IntegerEntry("total_nft_issued", (totalNFT + 1)), IntegerEntry(keyEndSale(issuer, artId), 0), BooleanEntry(keyOnSale(issuer, artId), sellStatus), issueNFT, ScriptTransfer(Address(fromBase58String(issuer)), amountForCreator, assetId), ScriptTransfer(Address(fromBase58String(feeReceiver)), amountForSign, assetId), ScriptTransfer(receiveNFT, 1, idNFT)]
457457 if (isBid)
458458 then [soldData, bidUpdate, bidDelOld] :: buyRes
459459 else soldData :: buyRes
460460 }
461461 }
462462 }
463463 }
464464 }
465465 }
466466
467467
468468 @Callable(i)
469469 func addArtwork (sha256Hash,signID,name,description,tags,type,cidDisplay,sha256Export,cidExport,sha256Licence,cidLicence) = {
470- let $t01657816619 = idCallerDate(i)
471- let artId = $t01657816619._1
472- let caller = $t01657816619._2
473- let date = $t01657816619._3
470+ let $t01659316634 = idCallerDate(i)
471+ let artId = $t01659316634._1
472+ let caller = $t01659316634._2
473+ let date = $t01659316634._3
474474 if (!(validateHash(sha256Hash)))
475475 then throw("Hash should be 64 characters maximum")
476476 else {
477- let $t01672016789 = setLIcence(cidLicence, sha256Licence)
478- let licenceCID = $t01672016789._1
479- let licenceHash = $t01672016789._2
477+ let $t01673516804 = setLIcence(cidLicence, sha256Licence)
478+ let licenceCID = $t01673516804._1
479+ let licenceHash = $t01673516804._2
480480 let validateArtwork = validateArtworkData(caller, cidDisplay, cidExport, licenceCID, sha256Export, licenceHash, name, description, tags)
481481 if ((validateArtwork != ""))
482482 then throw("Something went wrong!")
483483 else {
484- let $t01700817050 = validatePayment(i)
485- let amount = $t01700817050._1
486- let assetId = $t01700817050._2
484+ let $t01702317065 = validatePayment(i)
485+ let amount = $t01702317065._1
486+ let assetId = $t01702317065._2
487487 if (!(isDefined(amount)))
488488 then throw("Something went wrong")
489489 else {
490490 let entryExist = getStringByKey(keyTxidByHashOwner(sha256Hash, caller))
491491 if ((entryExist != ""))
492492 then throw("You already added it")
493493 else {
494494 let hashExist = getStringByKey(keyOwnerByHash(sha256Hash))
495495 if ((hashExist != ""))
496496 then throw("Hash already registered")
497497 else {
498498 let isSignCertified = checkSignCertificate(signID, caller, sha256Hash)
499499 if (!(isSignCertified))
500500 then throw("Sign Certificate not found for this address.")
501501 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(keyExportCid(caller, artId), cidExport), StringEntry(keyExportHash(caller, artId), sha256Export), StringEntry(keyLicenceHash(caller, artId), licenceHash), StringEntry(keyLicenceCid(caller, artId), licenceCID), StringEntry(keyType(caller, artId), type), StringEntry(keyTags(caller, artId), tags), IntegerEntry(keyMaxMint(caller, artId), 0), StringEntry(keySignID(caller, artId), signID), IntegerEntry(keyIssued(caller, artId), 0), BooleanEntry(keyOnSale(caller, artId), false), StringEntry(keyidBySignid(caller, signID), artId), StringEntry(keyHashByTxidAddr(caller, artId), sha256Hash), ScriptTransfer(Address(fromBase58String(feeReceiver)), amount, assetId)]
502502 }
503503 }
504504 }
505505 }
506506 }
507507 }
508508
509509
510510
511511 @Callable(i)
512512 func updateArtwork (txid,name,description,tags,type,cidDisplay,sha256Export,cidExport,sha256Licence,cidLicence) = if (!(dappRunning))
513513 then throw(maintenanceMSG)
514514 else {
515515 let caller = toBase58String(i.caller.bytes)
516- let $t01969019759 = setLIcence(cidLicence, sha256Licence)
517- let licenceCID = $t01969019759._1
518- let licenceHash = $t01969019759._2
516+ let $t01970519774 = setLIcence(cidLicence, sha256Licence)
517+ let licenceCID = $t01970519774._1
518+ let licenceHash = $t01970519774._2
519519 let validateArtwork = validateArtworkData(caller, cidDisplay, cidExport, licenceCID, sha256Export, licenceHash, name, description, tags)
520520 if ((validateArtwork != ""))
521521 then throw("Something went wrong!")
522522 else {
523523 let entryExist = getStringByKey(keyName(caller, txid))
524524 if ((entryExist == ""))
525525 then throw("Entry not found")
526526 else {
527527 let flag = getStringByKey(keyFlag(caller, txid))
528528 if ((flag == "ILLEGAL"))
529529 then throw("Cannot update ILLEGAL artwork")
530530 else if (!(isArtMinted(caller, txid)))
531531 then [StringEntry(keyName(caller, txid), name), StringEntry(keyDesc(caller, txid), description), StringEntry(keyDisplayCid(caller, txid), cidDisplay), StringEntry(keyExportCid(caller, txid), cidExport), StringEntry(keyExportHash(caller, txid), sha256Export), StringEntry(keyLicenceCid(caller, txid), licenceCID), StringEntry(keyLicenceHash(caller, txid), licenceHash), StringEntry(keyTags(caller, txid), tags), StringEntry(keyType(caller, txid), type)]
532532 else throw("Already minted")
533533 }
534534 }
535535 }
536536
537537
538538
539539 @Callable(i)
540540 func flagArtwork (artId,addr,flag) = {
541- let $t02109621129 = idCallerDate(i)
542- let id = $t02109621129._1
543- let caller = $t02109621129._2
541+ let $t02111121144 = idCallerDate(i)
542+ let id = $t02111121144._1
543+ let caller = $t02111121144._2
544544 if (containsElement([chris, toString(this)], caller))
545545 then if (containsElement(["CONSENT", "", "CHANGE_REQUIRED", "SUSPENDED", "FLAGGED", "ILLEGAL"], flag))
546546 then [StringEntry(keyFlag(addr, artId), flag)]
547547 else throw(("Unknow status " + flag))
548548 else throw("You are not allowed")
549549 }
550550
551551
552552
553553 @Callable(i)
554554 func deleteArtwork (artId,addr) = {
555- let $t02152521558 = idCallerDate(i)
556- let id = $t02152521558._1
557- let caller = $t02152521558._2
555+ let $t02154021573 = idCallerDate(i)
556+ let id = $t02154021573._1
557+ let caller = $t02154021573._2
558558 let addrToUse = if (containsElement([chris, joep, toString(this)], caller))
559559 then addr
560560 else caller
561561 let entryExist = valueOrErrorMessage(getStringByKey(keyName(addrToUse, artId)), "No art matching for this address")
562562 if ((entryExist == ""))
563563 then throw("No art matching for this address")
564564 else {
565565 let sha256Hash = getStringByKey(keyHashByTxidAddr(addrToUse, artId))
566566 if ((sha256Hash == ""))
567567 then throw("No art hash matching for this address")
568568 else {
569569 let signID = getStringByKey(keySignID(addrToUse, artId))
570570 if ((signID == ""))
571571 then throw("No SIGN ID matching")
572572 else {
573573 let dataToDelete = [DeleteEntry(keyDate(addrToUse, artId)), DeleteEntry(keyName(addrToUse, artId)), DeleteEntry(keyDesc(addrToUse, artId)), DeleteEntry(keyDisplayCid(addrToUse, artId)), DeleteEntry(keyExportCid(addrToUse, artId)), DeleteEntry(keyExportHash(addrToUse, artId)), DeleteEntry(keyLicenceHash(addrToUse, artId)), DeleteEntry(keyLicenceCid(addrToUse, artId)), DeleteEntry(keyType(addrToUse, artId)), DeleteEntry(keyTags(addrToUse, artId)), DeleteEntry(keyMaxMint(addrToUse, artId)), DeleteEntry(keySignID(addrToUse, artId)), DeleteEntry(keyIssued(addrToUse, artId)), DeleteEntry(keyOnSale(addrToUse, artId)), DeleteEntry(keyFlag(addr, artId)), DeleteEntry(keyPrice(addr, artId)), DeleteEntry(keyAssetIdAccepted(addr, artId)), DeleteEntry(keyOwnerByHash(sha256Hash)), DeleteEntry(keyidBySignid(addrToUse, signID)), DeleteEntry(keyTxidByHashOwner(sha256Hash, addrToUse)), DeleteEntry(keyEndSale(addrToUse, artId))]
574574 if (!(isArtMinted(addrToUse, artId)))
575575 then if (!(dappRunning))
576576 then throw(maintenanceMSG)
577577 else dataToDelete
578578 else if (containsElement([chris, toString(this)], caller))
579579 then dataToDelete
580580 else throw("Art already minted, you cannot delete it")
581581 }
582582 }
583583 }
584584 }
585585
586586
587587
588588 @Callable(i)
589589 func sellArtwork (artId,price,maxMint,assetId,blockEnd) = {
590- let $t02421724250 = idCallerDate(i)
591- let id = $t02421724250._1
592- let caller = $t02421724250._2
590+ let $t02423224265 = idCallerDate(i)
591+ let id = $t02423224265._1
592+ let caller = $t02423224265._2
593593 let artworkName = getStringByKey(keyName(caller, artId))
594594 if ((artworkName == ""))
595595 then throw("This art doesn't match your account")
596596 else {
597597 let flag = getStringByKey(keyFlag(caller, artId))
598598 if (containsElement(["CHANGE_REQUIRED", "SUSPENDED", "FLAGGED", "ILLEGAL"], flag))
599599 then throw("Flagged artwork")
600600 else {
601601 let bidNbr = getIntegerByKey(("current_bidamount_" + artId))
602602 if ((0 > blockEnd))
603603 then throw("Negative end")
604604 else if (if ((blockEnd > 0))
605605 then if ((maxMint != 1))
606606 then true
607607 else (price != 0)
608608 else false)
609609 then throw("Timed offer only allowed for unique edition and offer only")
610610 else {
611611 let baseHeight = if ((blockEnd == 0))
612612 then 0
613613 else height
614614 if (!(acceptedAssetIds(assetId)))
615615 then throw("Something went wrong!")
616616 else if (!(validateMinSell(assetId, price)))
617617 then throw("Something went wrong!")
618618 else {
619619 let checkUser = validateUser(caller)
620620 if ((checkUser != ""))
621621 then throw(checkUser)
622622 else {
623623 let amountSold = getIntegerByKey(keyIssued(caller, artId))
624624 let maxCanSell = getIntegerByKey(keyMaxMint(caller, artId))
625625 if ((maxMint > 100))
626626 then throw("100 editions max per artwork")
627627 else if (if ((amountSold != 0))
628628 then (amountSold == maxCanSell)
629629 else false)
630630 then throw("Max edition reached.")
631631 else if (if ((amountSold > 0))
632632 then (maxCanSell != maxMint)
633633 else false)
634634 then throw("Cannot change maximum issuable anymore")
635635 else if (if ((bidNbr > 0))
636636 then (maxCanSell != maxMint)
637637 else false)
638638 then throw("Cannot change maximum issuable with active orders")
639639 else {
640640 let sellStatus = if (if ((price > 0))
641641 then (maxMint > 0)
642642 else false)
643643 then true
644644 else false
645645 [BooleanEntry(keyOnSale(caller, artId), sellStatus), IntegerEntry(keyPrice(caller, artId), price), IntegerEntry(keyMaxMint(caller, artId), maxMint), StringEntry(keyAssetIdAccepted(caller, artId), assetId), IntegerEntry(keyEndSale(caller, artId), (baseHeight + blockEnd))]
646646 }
647647 }
648648 }
649649 }
650650 }
651651 }
652652 }
653653
654654
655655
656656 @Callable(i)
657657 func buyArtwork (artId,issuer) = buyMint(i, artId, issuer, "", "")
658658
659659
660660
661661 @Callable(i)
662662 func setBid (artId,issuer) = {
663- let $t02652026558 = idCallerDate(i)
664- let id = $t02652026558._1
665- let caller = $t02652026558._2
666- let date = $t02652026558._3
667- let $t02656326599 = isPayment(i)
668- let payment = $t02656326599._1
669- let amount = $t02656326599._2
663+ let $t02653526573 = idCallerDate(i)
664+ let id = $t02653526573._1
665+ let caller = $t02653526573._2
666+ let date = $t02653526573._3
667+ let $t02657826614 = isPayment(i)
668+ let payment = $t02657826614._1
669+ let amount = $t02657826614._2
670670 let assetId = if (!(isDefined(payment.assetId)))
671671 then "WAVES"
672672 else toBase58String(value(payment.assetId))
673673 let blockEnd = getIntegerByKey(keyEndSale(issuer, artId))
674674 if (if ((blockEnd != 0))
675675 then (height >= blockEnd)
676676 else false)
677677 then throw("Sale ended.")
678678 else {
679679 let bidNbr = getIntegerByKey(("current_bidamount_" + artId))
680680 if (!(acceptedAssetIds(assetId)))
681681 then throw("asset not accepted")
682682 else if (!(validateMinSell(assetId, amount)))
683683 then throw("Wrong min sell")
684684 else {
685685 let amountSold = getIntegerByKey(keyIssued(issuer, artId))
686686 let maxCanSell = getIntegerByKey(keyMaxMint(issuer, artId))
687687 if ((0 >= maxCanSell))
688688 then throw("No max edition set for this artwork")
689689 else if ((amountSold >= maxCanSell))
690690 then throw("Sold out, you cannot bid")
691691 else [StringEntry((((((((("bid_" + artId) + "_") + issuer) + "_") + caller) + "_") + id) + "_OPEN"), ((((assetId + "_") + toString(amount)) + "_") + toString(date))), IntegerEntry(("current_bidamount_" + artId), (bidNbr + 1))]
692692 }
693693 }
694694 }
695695
696696
697697
698698 @Callable(i)
699699 func acceptBid (artId,issuer,bidId,bidOwner) = {
700700 let caller = toBase58String(i.caller.bytes)
701701 if ((caller != issuer))
702702 then throw("You cannot do this action")
703703 else buyMint(i, artId, issuer, bidId, bidOwner)
704704 }
705705
706706
707707
708708 @Callable(i)
709709 func cancelBid (artId,issuer,bidId,bidOwner) = {
710- let $t02802628085 = idCallerDate(i)
711- let id = $t02802628085._1
712- let caller = $t02802628085._2
713- let date = $t02802628085._3
710+ let $t02804128100 = idCallerDate(i)
711+ let id = $t02804128100._1
712+ let caller = $t02804128100._2
713+ let date = $t02804128100._3
714714 if (if ((caller != bidOwner))
715715 then (caller != issuer)
716716 else false)
717717 then throw("You cannot do this action")
718718 else {
719719 let returnMoneyTo = if ((caller == issuer))
720720 then bidOwner
721721 else caller
722722 let bidNbr = getIntegerByKey(("current_bidamount_" + artId))
723723 let bidDataKey = ((((((("bid_" + artId) + "_") + issuer) + "_") + bidOwner) + "_") + bidId)
724724 let bidData = getStringByKey((bidDataKey + "_OPEN"))
725725 if ((bidData == ""))
726726 then throw("Bid not found")
727727 else {
728728 let bidDataArr = split(bidData, "_")
729729 let assetId = getBidAssetId(bidDataArr[0])
730730 let bidStatus = "CANCELED"
731731 [DeleteEntry((bidDataKey + "_OPEN")), StringEntry(((bidDataKey + "_") + bidStatus), ((bidData + "_") + toString(date))), IntegerEntry(("current_bidamount_" + artId), (bidNbr - 1)), ScriptTransfer(Address(fromBase58String(returnMoneyTo)), parseIntValue(bidDataArr[1]), assetId)]
732732 }
733733 }
734734 }
735735
736736

github/deemru/w8io/c3f4982 
91.11 ms