tx · FduPhMS7DqddLLiVxLvjewAm3u9UtmY8JZg64ykAE5CG

3NBynfbXC2KastUxhukcMUaE58K9cBdB9UY:  -0.01400000 Waves

2021.02.25 07:29 [1413141] smart account 3NBynfbXC2KastUxhukcMUaE58K9cBdB9UY > SELF 0.00000000 Waves

{ "type": 13, "id": "FduPhMS7DqddLLiVxLvjewAm3u9UtmY8JZg64ykAE5CG", "fee": 1400000, "feeAssetId": null, "timestamp": 1614227347568, "version": 2, "chainId": 84, "sender": "3NBynfbXC2KastUxhukcMUaE58K9cBdB9UY", "senderPublicKey": "J9DCtJJxJBWZdtDR12BA1U94Q3cZzMi4R6k5hYkAzmzC", "proofs": [ "faioUHfUpa1nQ9UNrEaVy83RrC9gSaih1NLtTmBCSPb1yThSsxyt9BC6qwZBBotB6dMsaNXkaVippetFdMk13oe" ], "script": "base64:AAIEAAAAAAAAAFYIAhIOCgwICAgICAgBCAgICAgSDQoLCAgICAgBCAgICAgSBQoDCAgIEgQKAggIEgYKBAgBAQgSBAoCCAgSBAoCCAgSBgoECAgICBIFCgMICAgSAwoBCAAAAEoAAAAACHVuaXRUZXN0BwAAAAAJb3JhY2xlRmVlCQEAAAAFdmFsdWUAAAABCQAEJgAAAAECAAAAIzNOMnM1UnRhSFBCZW5Dc3gyRUNjb0ZSYllIeDNub1poWFcxAAAAAAhzaWduRGFwcAkBAAAABXZhbHVlAAAAAQkABCYAAAABAgAAACMzTkMyOGhTaXZybXNUVVhhWUQxeDZMMzYySjRacFVub1RkQgAAAAALZmVlUmVjZWl2ZXICAAAAIzNOMUU2dFhkZFJvVmFSZlE5ZFEzdmc1TGFXMmZzZDhIS3ViAAAAAAh1c2VyRGFwcAMFAAAACHVuaXRUZXN0CQEAAAAFdmFsdWUAAAABCQAEJgAAAAECAAAAIzNNdDRSR01FeWpTV1lBb2NUUHFkNTV3ZEhRUUIzUFUyVUNtCQEAAAAFdmFsdWUAAAABCQAEJgAAAAECAAAAIzNNd0RaYWdvWUVpTmZRTGMzMWNHcFlvYUU1NE1HTXdvRnJaAAAAAA13aGl0ZWxpc3REYXBwCQEAAAAFdmFsdWUAAAABCQAEJgAAAAECAAAAIzNONkJhVjFkQ0I0emc0M2dvTk5IYUN0dlIxM0JjeUo1R3NxAAAAAAtzaWduQXNzZXRJZAEAAAAg6KVqvMp3QvJwYTI1Sk9Fg7m5HuWZZxfDcerZC6EEresAAAAAC3VzZG5Bc3NldElkAQAAACAP8hwSrOTEPJrsRhqrJaiw7LoHK0bMbYhy8LXikkkBtAAAAAAMd2F2ZXNBc3NldElkAQAAAAAAAAAABWNocmlzAgAAACMzTXNHNmpQTkNyVkpVdFlCN1hKQnhTN3V0V3NYQWY0bjlWcAAAAAAEam9lcAIAAAAjM016bTRWTHdzTjl1WndiVE16UGozWHV4VjZrRWZBUjhVRE4AAAAAB3NpZ25DdXQAAAAAAAAAAAcAAAAAC3VzZG5XYXZlQ3V0AAAAAAAAAAAKAAAAAA5kZWZhdWx0TGljZW5jZQIAAABHYmFmeWJlaWZ1eW80cHF1NTRpc21xZ3RiNmU0aDZra3ZneDd6ZzR1M3ppYmgycjd5Nm1iNjRpN2J6emEvbGljZW5jZS5wZGYAAAAAEmRlZmF1bHRIYXNoTGljZW5jZQIAAABAYTg3NzU4YzM1NGUzMGE5ZTc4ZmI4NGZhM2EwMDEwYTUwOTBhYjIwZGYwYmUxMWFkNDViNTcyMGNjMTg3ZTYzOQAAAAALZGFwcFJ1bm5pbmcJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQbAAAAAgUAAAAIdXNlckRhcHACAAAAFGNvbmZfZGFwcF9pc19ydW5uaW5nBgAAAAAObWFpbnRlbmFuY2VNU0cJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQdAAAAAgUAAAAIdXNlckRhcHACAAAAFGNvbmZfbWFpbnRlbmFuY2VfbXNnAgAAAAAAAAAADXVzZXJTdXNwZW5kZWQCAAAACVNVU1BFTkRFRAAAAAALdXNlclJlbW92ZWQCAAAAB1JFTU9WRUQAAAAAEHVzZXJVbnJlZ2lzdGVyZWQCAAAADFVOUkVHSVNURVJFRAAAAAALdXNlckFsbG93ZWQCAAAAB0FMTE9XRUQBAAAAF2dldFN0cmluZ0J5S2V5RnJvbVVzZXJzAAAAAQAAAANrZXkJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQdAAAAAgUAAAAIdXNlckRhcHAFAAAAA2tleQIAAAAAAQAAAA5nZXRTdHJpbmdCeUtleQAAAAEAAAADa2V5CQEAAAALdmFsdWVPckVsc2UAAAACCQAEHQAAAAIFAAAABHRoaXMFAAAAA2tleQIAAAAAAQAAABlnZXRJbnRlZ2VyQnlLZXlGcm9tT3JhY2xlAAAAAQAAAANrZXkJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABBoAAAACBQAAAAlvcmFjbGVGZWUFAAAAA2tleQIAAAAfSW50ZWdlciB1bmRlZmluZSBvciAwIGluIG9yYWNsZQEAAAAPZ2V0SW50ZWdlckJ5S2V5AAAAAQAAAANrZXkJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQaAAAAAgUAAAAEdGhpcwUAAAADa2V5AAAAAAAAAAAAAQAAAA5jaGVja1doaXRlbGlzdAAAAAEAAAADa2V5CQEAAAALdmFsdWVPckVsc2UAAAACCQAEGgAAAAIFAAAADXdoaXRlbGlzdERhcHAFAAAAA2tl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AAAACQAAAgAAAAECAAAAGEZpZWxkIGNhbm5vdCBiZSBpcyBlbXB0eQMJAABmAAAAAgkAATEAAAABBQAAAANzdHIFAAAAA21heAkAAAIAAAABCQABLAAAAAIFAAAAA3N0cgIAAAAMIGlzIHRvbyBsb25nBgEAAAAMdmFsaWRhdGVVc2VyAAAAAQAAAAZjYWxsZXIEAAAACnVzZXJTdGF0dXMJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQdAAAAAgUAAAAIdXNlckRhcHAJAQAAAA1rZXlVc2VyU3RhdHVzAAAAAQUAAAAGY2FsbGVyBQAAABB1c2VyVW5yZWdpc3RlcmVkAwMJAAAAAAAAAgUAAAAKdXNlclN0YXR1cwUAAAAQdXNlclVucmVnaXN0ZXJlZAYJAAAAAAAAAgUAAAAKdXNlclN0YXR1cwUAAAALdXNlckFsbG93ZWQCAAAALlJlZ2lzdGVyIHRoaXMgYWNjb3VudCBmaXJzdCB3aXRoICJBY2NvdW50IiB0YWIDCQAAAAAAAAIFAAAACnVzZXJTdGF0dXMFAAAADXVzZXJTdXNwZW5kZWQCAAAAEUFjY291bnQgc3VzcGVuZGVkAwkAAAAAAAACBQAAAAp1c2VyU3RhdHVzBQAAAAt1c2VyUmVtb3ZlZAIAAAAPQWNjb3VudCByZW1vdmVkAgAAAAABAAAACnNldExJY2VuY2UAAAACAAAACmNpZExpY2VuY2UAAAANc2hhMjU2TGljZW5jZQQAAAADY2lkAwkAAAAAAAACCQABMQAAAAEFAAAACmNpZExpY2VuY2UAAAAAAAAAAAAFAAAADmRlZmF1bHRMaWNlbmNlBQAAAApjaWRMaWNlbmNlBAAAAARoYXNoAwkAAAAAAAACCQABMQAAAAEFAAAADXNoYTI1NkxpY2VuY2UAAAAAAAAAAAAFAAAAEmRlZmF1bHRIYXNoTGljZW5jZQUAAAANc2hhMjU2TGljZW5jZQkABRQAAAACBQAAAANjaWQFAAAABGhhc2gBAAAAE3ZhbGlkYXRlQXJ0d29ya0RhdGEAAAAKAAAABmNhbGxlcgAAAApjaWREaXNwbGF5AAAACWNpZEV4cG9ydAAAAApsaWNlbmNlQ0lEAAAADHNoYTI1NkV4cG9ydAAAAAtsaWNlbmNlSGFzaAAAAARuYW1lAAAAC2Rl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AAAAFHZhbGlkYXRlUHJpY2VBc3NldElkAAAABAUAAAABaQUAAAAGaXNzdWVyBQAAAAxwcmljZUFzc2V0SWQFAAAADGFydHdvcmtQcmljZQQAAAAGYW1vdW50CAUAAAANJHQwMTM3NTcxMzg5NAAAAAJfMQQAAAAHYXNzZXRJZAgFAAAADSR0MDEzNzU3MTM4OTQAAAACXzIJAAUVAAAAAwUAAAAKYmlkRGF0YUtleQUAAAAGYW1vdW50BQAAAAdhc3NldElkAQAAABFnZXRDb21taXNzaW9uRGF0YQAAAAUAAAAGaXNzdWVyAAAADHByaWNlQXNzZXRJZAAAAAZhbW91bnQAAAAKYW1vdW50U29sZAAAAAptYXhDYW5TZWxsBAAAAA1pc1doaXRlbGlzdGVkCQEAAAAOY2hlY2tXaGl0ZWxpc3QAAAABBQAAAAZpc3N1ZXIEAAAAA2N1dAMJAABmAAAAAgUAAAANaXNXaGl0ZWxpc3RlZAUAAAAGaGVpZ2h0AAAAAAAAAAAAAwkAAAAAAAACBQAAAAxwcmljZUFzc2V0SWQJAAJYAAAAAQUAAAALc2lnbkFzc2V0SWQFAAAAB3NpZ25DdXQFAAAAC3VzZG5XYXZlQ3V0BAAAAA1hbW91bnRGb3JTaWduCQAAawAAAAMFAAAABmFtb3VudAUAAAADY3V0AAAAAAAAAABkBAAAABBhbW91bnRGb3JDcmVhdG9yCQAAZQAAAAIFAAAABmFtb3VudAUAAAANYW1vdW50Rm9yU2lnbgMJAAAAAAAAAgUAAAAKYW1vdW50U29sZAUAAAAKbWF4Q2FuU2VsbAkAAAIAAAABAgAAAAxBcnQgc29sZCBvdXQEAAAADW5ld0Ftb3VudFNvbGQJAABkAAAAAgUAAAAKYW1vdW50U29sZAAAAAAAAAAAAQkABRUAAAADBQAAAA1hbW91bnRGb3JTaWduBQAAABBhbW91bnRGb3JDcmVhdG9yBQAAAA1uZXdBbW91bnRTb2xkAQAAAAxnZXRJc3N1ZURhdGEAAAALAAAABmlzc3VlcgAAAAVhcnRJZAAAAAZzaWduSUQAAAALYXJ0d29ya05hbWUAAAANbmV3QW1vdW50U29sZAAAAAptYXhDYW5TZWxsAAAACHRvdGFsTkZUAAAABmNhbGxlcgAAAAhiaWRPd25lcgAAAAVi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dDAxNTg3NzE2MDE4AAAAAl83BAAAAA0kdDAxNjAyMzE2MTY5CQEAAAAKZ2V0QmlkRGF0YQAAAAkFAAAAAWkFAAAABmNhbGxlcgUAAAAGaXNzdWVyBQAAAAVhcnRJZAUAAAAIYmlkT3duZXIFAAAABWJpZElkBQAAAAxwcmljZUFzc2V0SWQFAAAADGFydHdvcmtQcmljZQUAAAAFaXNCaWQEAAAACmJpZERhdGFLZXkIBQAAAA0kdDAxNjAyMzE2MTY5AAAAAl8xBAAAAAZhbW91bnQIBQAAAA0kdDAxNjAyMzE2MTY5AAAAAl8yBAAAAAdhc3NldElkCAUAAAANJHQwMTYwMjMxNjE2OQAAAAJfMwQAAAANJHQwMTYxNzQxNjMyMQkBAAAAEWdldENvbW1pc3Npb25EYXRhAAAABQUAAAAGaXNzdWVyBQAAAAxwcmljZUFzc2V0SWQFAAAABmFtb3VudAUAAAAKYW1vdW50U29sZAUAAAAKbWF4Q2FuU2VsbAQAAAANYW1vdW50Rm9yU2lnbggFAAAADSR0MDE2MTc0MTYzMjEAAAACXzEEAAAAEGFtb3VudEZvckNyZWF0b3IIBQAAAA0kdDAxNjE3NDE2MzIxAAAAAl8yBAAAAA1uZXdBbW91bnRTb2xkCAUAAAANJHQwMTYxNzQxNjMyMQAAAAJfMwQAAAANJHQwMTYzMjYxNjUwNgkBAAAADGdldElzc3VlRGF0YQAAAAsFAAAABmlzc3VlcgUAAAAFYXJ0SWQFAAAABnNpZ25JRAUAAAALYXJ0d29ya05hbWUFAAAADW5ld0Ftb3VudFNvbGQFAAAACm1heENhblNlbGwFAAAACHRvdGFsTkZUBQAAAAZjYWxsZXIFAAAACGJpZE93bmVyBQAAAAViaWRJZAUAAAABaQQAAAAIaXNzdWVORlQIBQAAAA0kdDAxNjMyNjE2NTA2AAAAAl8xBAAAAAVpZE5GVAgFAAAADSR0MDE2MzI2MTY1MDYAAAACXzIEAAAACnNlbGxTdGF0dXMIBQAAAA0kdDAxNjMyNjE2NTA2AAAAAl8zBAAAAApyZWNlaXZlTkZUCAUAAAANJHQwMTYzMjYxNjUwNgAAAAJfNAQAAAANJHQwMTY1MTExNjYxMAkBAAAADGdldEJpZEtleVZhbAAAAAMFAAAAB2Fzc2V0SWQF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AAAAAWkEAAAABWFydElkCAUAAAANJHQwMTc5NzAxODAxMQAAAAJfMQQAAAAGY2FsbGVyCAUAAAANJHQwMTc5NzAxODAxMQAAAAJfMgQAAAAEZGF0ZQgFAAAADSR0MDE3OTcwMTgwMTEAAAACXzMDCQEAAAABIQAAAAEJAQAAAAx2YWxpZGF0ZUhhc2gAAAABBQAAAApzaGEyNTZIYXNoCQAAAgAAAAECAAAAJEhhc2ggc2hvdWxkIGJlIDY0IGNoYXJhY3RlcnMgbWF4aW11bQQAAAANJHQwMTgxMTIxODE4MQkBAAAACnNldExJY2VuY2UAAAACBQAAAApjaWRMaWNlbmNlBQAAAA1zaGEyNTZMaWNlbmNlBAAAAApsaWNlbmNlQ0lECAUAAAANJHQwMTgxMTIxODE4MQAAAAJfMQQAAAALbGljZW5jZUhhc2gIBQAAAA0kdDAxODExMjE4MTgxAAAAAl8yBAAAAA92YWxpZGF0ZUFydHdvcmsJAQAAABN2YWxpZGF0ZUFydHdvcmtEYXRhAAAACgUAAAAGY2FsbGVyBQAAAApjaWREaXNwbGF5BQAAAAljaWRFeHBvcnQFAAAACmxpY2VuY2VDSUQFAAAADHNoYTI1NkV4cG9ydAUAAAALbGljZW5jZUhhc2gFAAAABG5hbWUFAAAAC2Rlc2NyaXB0aW9uBQAAAAR0YWdzBQAAAAdtYXhtaW50AwkBAAAAAiE9AAAAAgUAAAAPdmFsaWRhdGVBcnR3b3JrAgAAAAAJAAACAAAAAQIAAAAVU29tZXRoaW5nIHdlbnQgd3JvbmchBAAAAA0kdDAxODQwOTE4NDUxCQEAAAAPdmFsaWRhdGVQYXltZW50AAAAAQUAAAABaQQAAAAGYW1vdW50CAUAAAANJHQwMTg0MDkxODQ1MQAAAAJfMQQAAAAHYXNzZXRJZAgFAAAADSR0MDE4NDA5MTg0NTEAAAACXzIDCQEAAAABIQAAAAEJAQAAAAlpc0RlZmluZWQAAAABBQAAAAZhbW91bnQJAAACAAAAAQIAAAAUU29tZXRoaW5nIHdlbnQgd3JvbmcEAAAACmVudHJ5RXhpc3QJAQAAAA5nZXRTdHJpbmdCeUtleQAAAAEJAQAAABJrZXlUeGlkQnlIYXNoT3duZXIAAAACBQAAAApzaGEyNTZIYXNoBQAAAAZjYWxsZXIDCQEAAAACIT0AAAACBQAAAAplbnRyeUV4aXN0AgAAAAAJAAACAAAAAQIAAAAUWW91IGFscmVhZHkgYWRkZWQgaXQEAAAACWhhc2hFeGlzdAkBAAAADmdldFN0cmluZ0J5S2V5AAAAAQkBAAAADmtleU93bmVyQnlIYXNoAAAAAQUAAAAKc2hhMjU2SGFzaAMJAQAAAAIhPQAAAAIFAAAACWhhc2hFeGlzdAIAAAAACQAAAgAAAAECAAAAF0hhc2ggYWxyZWFkeSByZWdpc3RlcmVkBAAAAA9pc1NpZ25DZXJ0aWZpZWQJAQAAABRjaGVja1NpZ25DZXJ0aWZpY2F0ZQAAAAMFAAAABnNpZ25JRAUAAAAGY2FsbGVyBQAAAApzaGEyNTZIYXNoAwkBAAAAASEAAAABBQAAAA9pc1NpZ25DZXJ0aWZpZWQJAAACAAAAAQIAAAAsU2lnbiBDZXJ0aWZpY2F0ZSBub3QgZm91bmQgZm9yIHRoaXMgYWRkcmVzcy4JAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAADmtleU93bmVyQnlIYXNoAAAAAQUAAAAKc2hhMjU2SGFzaAUAAAAGY2FsbGVyCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAABJrZXlUeGlkQnlIYXNoT3duZXIAAAACBQAAAApzaGEyNTZIYXNoBQAAAAZjYWxsZXIFAAAABWFydElkCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAAHa2V5RGF0ZQAAAAIFAAAABmNhbGxlcgUAAAAFYXJ0SWQFAAAABGRhdGUJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAAB2tleU5hbWUAAAACBQAAAAZjYWxsZXIFAAAABWFydElkBQAAAARuYW1lCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAAAdrZXlEZXNjAAAAAgUAAAAGY2FsbGVyBQAAAAVhcnRJZAUAAAALZGVzY3JpcHRpb24JAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAADWtleURpc3BsYXlDaWQAAAACBQAAAAZjYWxsZXIFAAAABWFydElkBQAAAApjaWREaXNwbGF5CQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAAAxrZXlFeHBvcnRDaWQAAAACBQAAAAZjYWxsZXIFAAAABWFydElkBQAAAAljaWRFeHBvcnQJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAADWtleUV4cG9ydEhhc2gAAAACBQAAAAZjYWxsZXIFAAAABWFydElkBQAAAAxzaGEyNTZFeHBvcnQJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAADmtleUxpY2VuY2VIYXNoAAAAAgUAAAAGY2FsbGVyBQAAAAVhcnRJZAUAAAALbGljZW5jZUhhc2gJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAADWtleUxpY2VuY2VDaWQAAAACBQAAAAZjYWxsZXIFAAAABWFydElkBQAAAApsaWNlbmNlQ0lECQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAAAdrZXlUeXBlAAAAAgUAAAAGY2FsbGVyBQAAAAVhcnRJZAUAAAAEdHlwZQkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAAHa2V5VGFncwAAAAIFAAAABmNhbGxlcgUAAAAFYXJ0SWQFAAAABHRhZ3MJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAAAprZXlNYXhNaW50AAAAAgUAAAAGY2FsbGVyBQAAAAVhcnRJZAUAAAAHbWF4bWludAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAAJa2V5U2lnbklEAAAAAgUAAAAGY2FsbGVyBQAAAAVhcnRJZAUAAAAGc2lnbklECQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAAJa2V5SXNzdWVkAAAAAgUAAAAGY2FsbGVyBQAAAAVhcnRJZAAAAAAAAAAAAAkABEwAAAACCQEAAAAMQm9vbGVhbkVudHJ5AAAAAgkBAAAACWtleU9uU2FsZQAAAAIFAAAABmNhbGxlcgUAAAAFYXJ0SWQHCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAAA1rZXlpZEJ5U2lnbmlkAAAAAgUAAAAGY2FsbGVyBQAAAAZzaWduSUQFAAAABWFydElkCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAABFrZXlIYXNoQnlUeGlkQWRkcgAAAAIFAAAABmNhbGxlcgUAAAAFYXJ0SWQFAAAACnNoYTI1Nkhhc2gJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwkBAAAAB0FkZHJlc3MAAAABCQACWQAAAAEFAAAAC2ZlZVJlY2VpdmVyBQAAAAZhbW91bnQFAAAAB2Fzc2V0SWQFAAAAA25pbAAAAAFpAQAAAA11cGRhdGVBcnR3b3JrAAAACwAAAAR0eGlkAAAABG5hbWUAAAALZGVzY3JpcHRpb24AAAAEdGFncwAAAAR0eXBlAAAAB21heG1pbnQAAAAKY2lkRGlzcGxheQAAAAxzaGEyNTZFeHBvcnQAAAAJY2lkRXhwb3J0AAAADXNoYTI1NkxpY2VuY2UAAAAKY2lkTGljZW5jZQMJAQAAAAEhAAAAAQUAAAALZGFwcFJ1bm5pbmcJAAACAAAAAQUAAAAObWFpbnRlbmFuY2VNU0cEAAAABmNhbGxlcgkAAlgAAAABCAgFAAAAAWkAAAAGY2FsbGVyAAAABWJ5dGVzBAAAAA0kdDAyMTE3MjIxMjQxCQEAAAAKc2V0TEljZW5jZQAAAAIFAAAACmNpZExpY2VuY2UFAAAADXNoYTI1NkxpY2VuY2UEAAAACmxpY2VuY2VDSUQIBQAAAA0kdDAyMTE3MjIxMjQxAAAAAl8xBAAAAAtsaWNlbmNlSGFzaAgFAAAADSR0MDIxMTcyMjEyNDEAAAACXzIEAAAAD3ZhbGlkYXRlQXJ0d29yawkBAAAAE3ZhbGlkYXRlQXJ0d29ya0RhdGEAAAAKBQAAAAZjYWxsZXIFAAAACmNpZERpc3BsYXkFAAAACWNpZEV4cG9ydAUAAAAKbGljZW5jZUNJRAUAAAAMc2hhMjU2RXhwb3J0BQAAAAtsaWNlbmNlSGFzaAUAAAAEbmFtZQUAAAALZGVzY3JpcHRpb24FAAAABHRhZ3MFAAAAB21heG1pbnQDCQEAAAACIT0AAAACBQAAAA92YWxpZGF0ZUFydHdvcmsCAAAAAAkAAAIAAAABAgAAABVTb21ldGhpbmcgd2VudCB3cm9uZyEEAAAACmVudHJ5RXhpc3QJAQAAAA5nZXRTdHJpbmdCeUtleQAAAAEJAQAAAAdr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", "height": 1413141, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 5TnjyH7LhsPwHXPWkaRWDxCGSKT2AnzwXLEmnSL6WBwV Next: 3qPihNxtKi8r2uKiKTeLwcSU4HCBx78AXF3LBo3NGkue Diff:
OldNewDifferences
258258 }
259259
260260
261-func validatePriceAssetId (i,priceAssetId,artworkPrice) = {
262- let $t096459681 = isPayment(i)
263- let payment = $t096459681._1
264- let amount = $t096459681._2
265- let assetId = if (!(isDefined(payment.assetId)))
266- then unit
267- else if (if ((size(priceAssetId) > 0))
268- then (toBase58String(value(payment.assetId)) == priceAssetId)
269- else false)
270- then payment.assetId
271- else throw("Wrong asset id")
272- if (if ((assetId == unit))
273- then (priceAssetId != "")
274- else false)
275- then throw("Wrong asset id")
276- else if ((artworkPrice != amount))
277- then throw("Payment don't match")
278- else $Tuple2(amount, assetId)
279- }
280-
281-
282-func acceptedAssetIds (assetId) = if (if (if (if ((assetId != toBase58String(signAssetId)))
283- then (assetId != toBase58String(wavesAssetId))
284- else false)
285- then (assetId != "WAVES")
286- else false)
287- then (assetId != toBase58String(usdnAssetId))
288- else false)
289- then throw("Only SIGN, USDN or WAVES accepted")
290- else true
291-
292-
293261 func validateMinSell (assetId,price) = {
294262 let minSellWaves = if (unitTest)
295263 then 10
320288 then throw("Wrong minimum sell price")
321289 else true
322290 }
291+
292+
293+func validatePriceAssetId (i,issuer,priceAssetId,artworkPrice) = {
294+ let $t01031310349 = isPayment(i)
295+ let payment = $t01031310349._1
296+ let amount = $t01031310349._2
297+ let assetId = if (!(isDefined(payment.assetId)))
298+ then unit
299+ else if (if ((size(priceAssetId) > 0))
300+ then (toBase58String(value(payment.assetId)) == priceAssetId)
301+ else false)
302+ then payment.assetId
303+ else throw("Wrong asset id")
304+ if (if ((assetId == unit))
305+ then (priceAssetId != "")
306+ else false)
307+ then throw("Wrong asset id")
308+ else if (if ((artworkPrice != amount))
309+ then (toBase58String(i.caller.bytes) != issuer)
310+ else false)
311+ then throw("Payment don't match")
312+ else if (if (if ((artworkPrice != amount))
313+ then (toBase58String(i.caller.bytes) == issuer)
314+ else false)
315+ then !(validateMinSell(priceAssetId, artworkPrice))
316+ else false)
317+ then throw("Min sell don't match")
318+ else $Tuple2(amount, assetId)
319+ }
320+
321+
322+func acceptedAssetIds (assetId) = if (if (if (if ((assetId != toBase58String(signAssetId)))
323+ then (assetId != toBase58String(wavesAssetId))
324+ else false)
325+ then (assetId != "WAVES")
326+ else false)
327+ then (assetId != toBase58String(usdnAssetId))
328+ else false)
329+ then throw("Only SIGN, USDN or WAVES accepted")
330+ else true
323331
324332
325333 func getBidAssetId (assetId) = if ((assetId == "WAVES"))
401409 then throw(checkUser)
402410 else {
403411 let bidDataKey = ((((((("bid_" + artId) + "_") + issuer) + "_") + bidOwner) + "_") + bidId)
404- let $t01352813657 = if (isBid)
412+ let $t01375713894 = if (isBid)
405413 then getPriceAssetIdFromBid(bidDataKey)
406- else validatePriceAssetId(i, priceAssetId, artworkPrice)
407- let amount = $t01352813657._1
408- let assetId = $t01352813657._2
414+ else validatePriceAssetId(i, issuer, priceAssetId, artworkPrice)
415+ let amount = $t01375713894._1
416+ let assetId = $t01375713894._2
409417 $Tuple3(bidDataKey, amount, assetId)
410418 }
411419 }
463471
464472
465473 func buyMint (i,artId,issuer,bidId,bidOwner) = {
466- let $t01551015560 = idCallerDate(i)
467- let id = $t01551015560._1
468- let caller = $t01551015560._2
469- let date = $t01551015560._3
474+ let $t01574715797 = idCallerDate(i)
475+ let id = $t01574715797._1
476+ let caller = $t01574715797._2
477+ let date = $t01574715797._3
470478 let isBid = isBidCheck(i, issuer, bidOwner, bidId)
471- let $t01564015781 = getArtData(i, issuer, artId, isBid)
472- let totalNFT = $t01564015781._1
473- let signID = $t01564015781._2
474- let artworkName = $t01564015781._3
475- let amountSold = $t01564015781._4
476- let artworkPrice = $t01564015781._5
477- let priceAssetId = $t01564015781._6
478- let maxCanSell = $t01564015781._7
479- let $t01578615932 = getBidData(i, caller, issuer, artId, bidOwner, bidId, priceAssetId, artworkPrice, isBid)
480- let bidDataKey = $t01578615932._1
481- let amount = $t01578615932._2
482- let assetId = $t01578615932._3
483- let $t01593716084 = getCommissionData(issuer, priceAssetId, amount, amountSold, maxCanSell)
484- let amountForSign = $t01593716084._1
485- let amountForCreator = $t01593716084._2
486- let newAmountSold = $t01593716084._3
487- let $t01608916269 = getIssueData(issuer, artId, signID, artworkName, newAmountSold, maxCanSell, totalNFT, caller, bidOwner, bidId, i)
488- let issueNFT = $t01608916269._1
489- let idNFT = $t01608916269._2
490- let sellStatus = $t01608916269._3
491- let receiveNFT = $t01608916269._4
492- let $t01627416373 = getBidKeyVal(assetId, bidDataKey, date)
493- let assetIdBid = $t01627416373._1
494- let bidDelOld = $t01627416373._2
495- let bidUpdate = $t01627416373._3
479+ let $t01587716018 = getArtData(i, issuer, artId, isBid)
480+ let totalNFT = $t01587716018._1
481+ let signID = $t01587716018._2
482+ let artworkName = $t01587716018._3
483+ let amountSold = $t01587716018._4
484+ let artworkPrice = $t01587716018._5
485+ let priceAssetId = $t01587716018._6
486+ let maxCanSell = $t01587716018._7
487+ let $t01602316169 = getBidData(i, caller, issuer, artId, bidOwner, bidId, priceAssetId, artworkPrice, isBid)
488+ let bidDataKey = $t01602316169._1
489+ let amount = $t01602316169._2
490+ let assetId = $t01602316169._3
491+ let $t01617416321 = getCommissionData(issuer, priceAssetId, amount, amountSold, maxCanSell)
492+ let amountForSign = $t01617416321._1
493+ let amountForCreator = $t01617416321._2
494+ let newAmountSold = $t01617416321._3
495+ let $t01632616506 = getIssueData(issuer, artId, signID, artworkName, newAmountSold, maxCanSell, totalNFT, caller, bidOwner, bidId, i)
496+ let issueNFT = $t01632616506._1
497+ let idNFT = $t01632616506._2
498+ let sellStatus = $t01632616506._3
499+ let receiveNFT = $t01632616506._4
500+ let $t01651116610 = getBidKeyVal(assetId, bidDataKey, date)
501+ let assetIdBid = $t01651116610._1
502+ let bidDelOld = $t01651116610._2
503+ let bidUpdate = $t01651116610._3
496504 let soldKey = ((((((("art_sold_" + toString(newAmountSold)) + "_of_") + toString(maxCanSell)) + "_") + artId) + "_") + issuer)
497505 let soldValue = if (!(isBid))
498506 then ((((((((((caller + "_") + toString(date)) + "_") + id) + "_") + toString(artworkPrice)) + "_") + priceAssetId) + "_") + toBase58String(idNFT))
507515
508516 @Callable(i)
509517 func addArtwork (sha256Hash,signID,name,description,tags,type,maxmint,cidDisplay,sha256Export,cidExport,sha256Licence,cidLicence) = {
510- let $t01773317774 = idCallerDate(i)
511- let artId = $t01773317774._1
512- let caller = $t01773317774._2
513- let date = $t01773317774._3
518+ let $t01797018011 = idCallerDate(i)
519+ let artId = $t01797018011._1
520+ let caller = $t01797018011._2
521+ let date = $t01797018011._3
514522 if (!(validateHash(sha256Hash)))
515523 then throw("Hash should be 64 characters maximum")
516524 else {
517- let $t01787517944 = setLIcence(cidLicence, sha256Licence)
518- let licenceCID = $t01787517944._1
519- let licenceHash = $t01787517944._2
525+ let $t01811218181 = setLIcence(cidLicence, sha256Licence)
526+ let licenceCID = $t01811218181._1
527+ let licenceHash = $t01811218181._2
520528 let validateArtwork = validateArtworkData(caller, cidDisplay, cidExport, licenceCID, sha256Export, licenceHash, name, description, tags, maxmint)
521529 if ((validateArtwork != ""))
522530 then throw("Something went wrong!")
523531 else {
524- let $t01817218214 = validatePayment(i)
525- let amount = $t01817218214._1
526- let assetId = $t01817218214._2
532+ let $t01840918451 = validatePayment(i)
533+ let amount = $t01840918451._1
534+ let assetId = $t01840918451._2
527535 if (!(isDefined(amount)))
528536 then throw("Something went wrong")
529537 else {
553561 then throw(maintenanceMSG)
554562 else {
555563 let caller = toBase58String(i.caller.bytes)
556- let $t02093521004 = setLIcence(cidLicence, sha256Licence)
557- let licenceCID = $t02093521004._1
558- let licenceHash = $t02093521004._2
564+ let $t02117221241 = setLIcence(cidLicence, sha256Licence)
565+ let licenceCID = $t02117221241._1
566+ let licenceHash = $t02117221241._2
559567 let validateArtwork = validateArtworkData(caller, cidDisplay, cidExport, licenceCID, sha256Export, licenceHash, name, description, tags, maxmint)
560568 if ((validateArtwork != ""))
561569 then throw("Something went wrong!")
578586
579587 @Callable(i)
580588 func flagArtwork (artId,addr,flag) = {
581- let $t02247722510 = idCallerDate(i)
582- let id = $t02247722510._1
583- let caller = $t02247722510._2
589+ let $t02271422747 = idCallerDate(i)
590+ let id = $t02271422747._1
591+ let caller = $t02271422747._2
584592 if (containsElement([chris, joep, toString(this)], caller))
585593 then if ((flag == "CONSENT"))
586594 then [StringEntry(keyFlag(addr, artId), flag)]
600608
601609 @Callable(i)
602610 func deleteArtwork (artId,addr) = {
603- let $t02352923562 = idCallerDate(i)
604- let id = $t02352923562._1
605- let caller = $t02352923562._2
611+ let $t02376623799 = idCallerDate(i)
612+ let id = $t02376623799._1
613+ let caller = $t02376623799._2
606614 let addrToUse = if (containsElement([chris, joep, toString(this)], caller))
607615 then addr
608616 else caller
635643
636644 @Callable(i)
637645 func sellArtwork (artId,price,maxMint,assetId) = {
638- let $t02592825961 = idCallerDate(i)
639- let id = $t02592825961._1
640- let caller = $t02592825961._2
646+ let $t02616526198 = idCallerDate(i)
647+ let id = $t02616526198._1
648+ let caller = $t02616526198._2
641649 let artworkName = getStringByKey(keyName(caller, artId))
642650 if ((artworkName == ""))
643651 then throw("This art doesn't match your account")
688696
689697 @Callable(i)
690698 func setBid (artId,issuer) = {
691- let $t02775727795 = idCallerDate(i)
692- let id = $t02775727795._1
693- let caller = $t02775727795._2
694- let date = $t02775727795._3
695- let $t02780027836 = isPayment(i)
696- let payment = $t02780027836._1
697- let amount = $t02780027836._2
699+ let $t02799428032 = idCallerDate(i)
700+ let id = $t02799428032._1
701+ let caller = $t02799428032._2
702+ let date = $t02799428032._3
703+ let $t02803728073 = isPayment(i)
704+ let payment = $t02803728073._1
705+ let amount = $t02803728073._2
698706 let assetId = if (!(isDefined(payment.assetId)))
699707 then "WAVES"
700708 else toBase58String(value(payment.assetId))
727735
728736 @Callable(i)
729737 func cancelBid (artId,issuer,bidId) = {
730- let $t02886829020 = idCallerDate(i)
731- let id = $t02886829020._1
732- let caller = $t02886829020._2
733- let date = $t02886829020._3
738+ let $t02910529257 = idCallerDate(i)
739+ let id = $t02910529257._1
740+ let caller = $t02910529257._2
741+ let date = $t02910529257._3
734742 let bidDataKey = ((((((("bid_" + artId) + "_") + issuer) + "_") + caller) + "_") + bidId)
735743 let bidData = getStringByKey((bidDataKey + "_OPEN"))
736744 if ((bidData == ""))
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 4 #-}
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("3MwDZagoYEiNfQLc31cGpYoaE54MGMwoFrZ"))
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 getStringByKeyFromUsers (key) = valueOrElse(getString(userDapp, key), "")
4949
5050
5151 func getStringByKey (key) = valueOrElse(getString(this, key), "")
5252
5353
5454 func getIntegerByKeyFromOracle (key) = valueOrErrorMessage(getInteger(oracleFee, key), "Integer undefine or 0 in oracle")
5555
5656
5757 func getIntegerByKey (key) = valueOrElse(getInteger(this, key), 0)
5858
5959
6060 func checkWhitelist (key) = valueOrElse(getInteger(whitelistDapp, key), 0)
6161
6262
6363 func getBooleanByKey (key) = valueOrElse(getBoolean(this, key), false)
6464
6565
6666 func checkSignCertificate (signID,Owner,sha256Hash) = match getString(signDapp, ((("data_fc_" + signID) + "_") + Owner)) {
6767 case a: String =>
6868 if (contains(a, sha256Hash))
6969 then true
7070 else false
7171 case _ =>
7272 false
7373 }
7474
7575
7676 func validateCID (cid) = if (contains(cid, "/"))
7777 then if (if ((76 > size(cid)))
7878 then (size(split(cid, "/")[0]) == 59)
7979 else false)
8080 then (16 > size(split(cid, "/")[1]))
8181 else false
8282 else false
8383
8484
8585 func validateHash (hash) = (size(hash) == 64)
8686
8787
8888 func keyUserStatus (caller) = ("user_status_" + caller)
8989
9090
9191 func keyDate (caller,artId) = ((("art_date_" + artId) + "_") + caller)
9292
9393
9494 func keyName (caller,artId) = ((("art_name_" + artId) + "_") + caller)
9595
9696
9797 func keyDesc (caller,artId) = ((("art_desc_" + artId) + "_") + caller)
9898
9999
100100 func keyDisplayCid (caller,artId) = ((("art_display_cid_" + artId) + "_") + caller)
101101
102102
103103 func keyExportHash (caller,artId) = ((("art_export_hash_" + artId) + "_") + caller)
104104
105105
106106 func keyExportCid (caller,artId) = ((("art_export_cid_" + artId) + "_") + caller)
107107
108108
109109 func keyMaxMint (caller,artId) = ((("art_maxmint_" + artId) + "_") + caller)
110110
111111
112112 func keySignID (caller,artId) = ((("art_signid_" + artId) + "_") + caller)
113113
114114
115115 func keyIssued (caller,artId) = ((("art_issued_" + artId) + "_") + caller)
116116
117117
118118 func keyOnSale (caller,artId) = ((("art_onsale_" + artId) + "_") + caller)
119119
120120
121121 func keyLicenceHash (caller,artId) = ((("art_licence_hash_" + artId) + "_") + caller)
122122
123123
124124 func keyLicenceCid (caller,artId) = ((("art_licence_cid_" + artId) + "_") + caller)
125125
126126
127127 func keyTags (caller,artId) = ((("art_tags_" + artId) + "_") + caller)
128128
129129
130130 func keyType (caller,artId) = ((("art_type_" + artId) + "_") + caller)
131131
132132
133133 func keyPrice (caller,artId) = ((("art_price_" + artId) + "_") + caller)
134134
135135
136136 func keyAssetIdAccepted (caller,artId) = ((("art_assetAccepted_" + artId) + "_") + caller)
137137
138138
139139 func keyFlag (caller,artId) = ((("art_flag_" + artId) + "_") + caller)
140140
141141
142142 func keyHashByTxidAddr (caller,txid) = ((("get_hashbytxidaddr_" + txid) + "_") + caller)
143143
144144
145145 func keyOwnerByHash (sha256Hash) = ("get_owner_by_hash_" + sha256Hash)
146146
147147
148148 func keyidBySignid (caller,signId) = ((("get_artidbysignid_" + signId) + "_") + caller)
149149
150150
151151 func keyTxidByHashOwner (sha256Hash,caller) = ("get_txid_by_hash_owner_" + toBase58String(sha256_16Kb(toBytes((sha256Hash + caller)))))
152152
153153
154154 func validateAllCID (cidDisplay,cidExport,cidLicence) = if (!(validateCID(cidDisplay)))
155155 then throw("Wrong Display CID")
156156 else if (!(validateCID(cidExport)))
157157 then throw("Wrong Export CID")
158158 else if (if ((cidLicence != ""))
159159 then !(validateCID(cidLicence))
160160 else false)
161161 then throw("Wrong Licence CID")
162162 else true
163163
164164
165165 func validateAllHash (sha256Export,sha256Licence) = if (!(validateHash(sha256Export)))
166166 then throw("Export Hash 64 char. max")
167167 else if (!(validateHash(sha256Licence)))
168168 then throw("Licence Hash 64 char. max")
169169 else true
170170
171171
172172 func validateString (str,max) = if ((size(str) == 0))
173173 then throw("Field cannot be is empty")
174174 else if ((size(str) > max))
175175 then throw((str + " is too long"))
176176 else true
177177
178178
179179 func validateUser (caller) = {
180180 let userStatus = valueOrElse(getString(userDapp, keyUserStatus(caller)), userUnregistered)
181181 if (if ((userStatus == userUnregistered))
182182 then true
183183 else (userStatus == userAllowed))
184184 then "Register this account first with \"Account\" tab"
185185 else if ((userStatus == userSuspended))
186186 then "Account suspended"
187187 else if ((userStatus == userRemoved))
188188 then "Account removed"
189189 else ""
190190 }
191191
192192
193193 func setLIcence (cidLicence,sha256Licence) = {
194194 let cid = if ((size(cidLicence) == 0))
195195 then defaultLicence
196196 else cidLicence
197197 let hash = if ((size(sha256Licence) == 0))
198198 then defaultHashLicence
199199 else sha256Licence
200200 $Tuple2(cid, hash)
201201 }
202202
203203
204204 func validateArtworkData (caller,cidDisplay,cidExport,licenceCID,sha256Export,licenceHash,name,description,tags,maxmint) = {
205205 let checkUser = validateUser(caller)
206206 if ((checkUser != ""))
207207 then throw(checkUser)
208208 else if ((size(cidDisplay) == 0))
209209 then throw("Display CID cannot be empty")
210210 else if (!(validateAllCID(cidDisplay, cidExport, licenceCID)))
211211 then throw("Problem with CID")
212212 else if (!(validateAllHash(sha256Export, licenceHash)))
213213 then throw("Problem with Hashes")
214214 else if (!(validateString(name, 100)))
215215 then throw("100 Char. max name")
216216 else if (!(validateString(description, 1000)))
217217 then throw("1000 Char. max description")
218218 else if ((size(split(tags, ",")) > 5))
219219 then throw("5 tags max.")
220220 else if ((maxmint > 10))
221221 then throw("10 editions max per artwork")
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) = {
236236 let $t089098945 = isPayment(i)
237237 let payment = $t089098945._1
238238 let amount = $t089098945._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 let currentCertificationPrice = getIntegerByKeyFromOracle(("certification_fee_" + toBase58String(signAssetId)))
245245 if ((amount != currentCertificationPrice))
246246 then throw(("Payment amount should be " + toString(currentCertificationPrice)))
247247 else $Tuple2(amount, assetId)
248248 }
249249
250250
251251 func isArtMinted (addrToUse,artId) = match getInteger(this, keyIssued(addrToUse, artId)) {
252252 case b: Int =>
253253 if ((b != 0))
254254 then true
255255 else false
256256 case _ =>
257257 false
258258 }
259259
260260
261-func validatePriceAssetId (i,priceAssetId,artworkPrice) = {
262- let $t096459681 = isPayment(i)
263- let payment = $t096459681._1
264- let amount = $t096459681._2
265- let assetId = if (!(isDefined(payment.assetId)))
266- then unit
267- else if (if ((size(priceAssetId) > 0))
268- then (toBase58String(value(payment.assetId)) == priceAssetId)
269- else false)
270- then payment.assetId
271- else throw("Wrong asset id")
272- if (if ((assetId == unit))
273- then (priceAssetId != "")
274- else false)
275- then throw("Wrong asset id")
276- else if ((artworkPrice != amount))
277- then throw("Payment don't match")
278- else $Tuple2(amount, assetId)
279- }
280-
281-
282-func acceptedAssetIds (assetId) = if (if (if (if ((assetId != toBase58String(signAssetId)))
283- then (assetId != toBase58String(wavesAssetId))
284- else false)
285- then (assetId != "WAVES")
286- else false)
287- then (assetId != toBase58String(usdnAssetId))
288- else false)
289- then throw("Only SIGN, USDN or WAVES accepted")
290- else true
291-
292-
293261 func validateMinSell (assetId,price) = {
294262 let minSellWaves = if (unitTest)
295263 then 10
296264 else getIntegerByKeyFromOracle("waves_min_sell")
297265 let minSellUsdn = 1000000
298266 let minSellSign = if (unitTest)
299267 then 1
300268 else (getIntegerByKeyFromOracle(("certification_fee_" + toBase58String(signAssetId))) * 2)
301269 if (if (if (if (if ((assetId == toBase58String(usdnAssetId)))
302270 then (minSellUsdn > price)
303271 else false)
304272 then (price != 0)
305273 else false)
306274 then true
307275 else if (if ((assetId == toBase58String(signAssetId)))
308276 then (minSellSign > price)
309277 else false)
310278 then (price != 0)
311279 else false)
312280 then true
313281 else if (if (if ((assetId == toBase58String(wavesAssetId)))
314282 then true
315283 else (assetId == "WAVES"))
316284 then (minSellWaves > price)
317285 else false)
318286 then (price != 0)
319287 else false)
320288 then throw("Wrong minimum sell price")
321289 else true
322290 }
291+
292+
293+func validatePriceAssetId (i,issuer,priceAssetId,artworkPrice) = {
294+ let $t01031310349 = isPayment(i)
295+ let payment = $t01031310349._1
296+ let amount = $t01031310349._2
297+ let assetId = if (!(isDefined(payment.assetId)))
298+ then unit
299+ else if (if ((size(priceAssetId) > 0))
300+ then (toBase58String(value(payment.assetId)) == priceAssetId)
301+ else false)
302+ then payment.assetId
303+ else throw("Wrong asset id")
304+ if (if ((assetId == unit))
305+ then (priceAssetId != "")
306+ else false)
307+ then throw("Wrong asset id")
308+ else if (if ((artworkPrice != amount))
309+ then (toBase58String(i.caller.bytes) != issuer)
310+ else false)
311+ then throw("Payment don't match")
312+ else if (if (if ((artworkPrice != amount))
313+ then (toBase58String(i.caller.bytes) == issuer)
314+ else false)
315+ then !(validateMinSell(priceAssetId, artworkPrice))
316+ else false)
317+ then throw("Min sell don't match")
318+ else $Tuple2(amount, assetId)
319+ }
320+
321+
322+func acceptedAssetIds (assetId) = if (if (if (if ((assetId != toBase58String(signAssetId)))
323+ then (assetId != toBase58String(wavesAssetId))
324+ else false)
325+ then (assetId != "WAVES")
326+ else false)
327+ then (assetId != toBase58String(usdnAssetId))
328+ else false)
329+ then throw("Only SIGN, USDN or WAVES accepted")
330+ else true
323331
324332
325333 func getBidAssetId (assetId) = if ((assetId == "WAVES"))
326334 then unit
327335 else fromBase58String(assetId)
328336
329337
330338 func getPriceAssetIdFromBid (bidDataKey) = {
331339 let bidData = getStringByKey((bidDataKey + "_OPEN"))
332340 if ((bidData == ""))
333341 then throw("Bid not found")
334342 else {
335343 let bidDataArr = split(bidData, "_")
336344 let bidAmount = parseIntValue(bidDataArr[1])
337345 let bidAssetId = getBidAssetId(bidDataArr[0])
338346 if ((0 >= bidAmount))
339347 then throw("Wrong amount")
340348 else $Tuple2(bidAmount, bidAssetId)
341349 }
342350 }
343351
344352
345353 func idCallerDate (i) = if (!(dappRunning))
346354 then throw(maintenanceMSG)
347355 else $Tuple3(toBase58String(i.transactionId), toBase58String(i.caller.bytes), lastBlock.timestamp)
348356
349357
350358 func isBidCheck (i,issuer,bidOwner,bidId) = if (if (if ((toBase58String(i.caller.bytes) == issuer))
351359 then (bidOwner != "")
352360 else false)
353361 then (bidId != "")
354362 else false)
355363 then true
356364 else false
357365
358366
359367 func getArtData (i,issuer,artId,isBid) = {
360368 let totalNFT = getIntegerByKey("total_nft_issued")
361369 let signID = getStringByKey(keySignID(issuer, artId))
362370 let artworkName = getStringByKey(keyName(issuer, artId))
363371 if ((artworkName == ""))
364372 then throw("Art doesn't exist")
365373 else {
366374 let isOnSale = getBooleanByKey(keyOnSale(issuer, artId))
367375 let amountSold = getIntegerByKey(keyIssued(issuer, artId))
368376 let artworkPrice = getIntegerByKey(keyPrice(issuer, artId))
369377 let priceAssetId = getStringByKey(keyAssetIdAccepted(issuer, artId))
370378 let maxCanSell = getIntegerByKey(keyMaxMint(issuer, artId))
371379 if (if (if (if (if (!(isBid))
372380 then (toBase58String(i.caller.bytes) != issuer)
373381 else false)
374382 then (0 >= artworkPrice)
375383 else false)
376384 then true
377385 else !(isOnSale))
378386 then true
379387 else (0 >= maxCanSell))
380388 then throw("Art not for sale")
381389 else if (if (if (!(isBid))
382390 then (toBase58String(i.caller.bytes) == issuer)
383391 else false)
384392 then (0 >= maxCanSell)
385393 else false)
386394 then throw("Max issuable")
387395 else if (if (isBid)
388396 then (0 >= maxCanSell)
389397 else false)
390398 then throw("Art not open for Offer")
391399 else $Tuple7(totalNFT, signID, artworkName, amountSold, artworkPrice, priceAssetId, maxCanSell)
392400 }
393401 }
394402
395403
396404 func getBidData (i,caller,issuer,artId,bidOwner,bidId,priceAssetId,artworkPrice,isBid) = {
397405 let checkUser = validateUser(issuer)
398406 if (if (isBid)
399407 then (checkUser != "")
400408 else false)
401409 then throw(checkUser)
402410 else {
403411 let bidDataKey = ((((((("bid_" + artId) + "_") + issuer) + "_") + bidOwner) + "_") + bidId)
404- let $t01352813657 = if (isBid)
412+ let $t01375713894 = if (isBid)
405413 then getPriceAssetIdFromBid(bidDataKey)
406- else validatePriceAssetId(i, priceAssetId, artworkPrice)
407- let amount = $t01352813657._1
408- let assetId = $t01352813657._2
414+ else validatePriceAssetId(i, issuer, priceAssetId, artworkPrice)
415+ let amount = $t01375713894._1
416+ let assetId = $t01375713894._2
409417 $Tuple3(bidDataKey, amount, assetId)
410418 }
411419 }
412420
413421
414422 func getCommissionData (issuer,priceAssetId,amount,amountSold,maxCanSell) = {
415423 let isWhitelisted = checkWhitelist(issuer)
416424 let cut = if ((isWhitelisted > height))
417425 then 0
418426 else if ((priceAssetId == toBase58String(signAssetId)))
419427 then signCut
420428 else usdnWaveCut
421429 let amountForSign = fraction(amount, cut, 100)
422430 let amountForCreator = (amount - amountForSign)
423431 if ((amountSold == maxCanSell))
424432 then throw("Art sold out")
425433 else {
426434 let newAmountSold = (amountSold + 1)
427435 $Tuple3(amountForSign, amountForCreator, newAmountSold)
428436 }
429437 }
430438
431439
432440 func getIssueData (issuer,artId,signID,artworkName,newAmountSold,maxCanSell,totalNFT,caller,bidOwner,bidId,i) = {
433441 let issueMeta = ((((((((((("Creator: " + issuer) + ",
434442 ArtID: ") + artId) + ",
435443 SignID: ") + signID) + ",
436444 Artwork name: ") + artworkName) + ",
437445 Issue: ") + toString(newAmountSold)) + "/") + toString(maxCanSell))
438446 let issueNFT = Issue(("SA_" + toString((totalNFT + 1))), issueMeta, 1, 0, false)
439447 let idNFT = calculateAssetId(issueNFT)
440448 let sellStatus = if ((newAmountSold == maxCanSell))
441449 then false
442450 else true
443451 let receiveNFT = if (if (if ((caller == issuer))
444452 then (bidOwner != "")
445453 else false)
446454 then (bidId != "")
447455 else false)
448456 then addressFromStringValue(bidOwner)
449457 else i.caller
450458 $Tuple4(issueNFT, idNFT, sellStatus, receiveNFT)
451459 }
452460
453461
454462 func getBidKeyVal (assetId,bidDataKey,date) = {
455463 let assetIdBid = if (!(isDefined(assetId)))
456464 then "WAVES"
457465 else toBase58String(value(assetId))
458466 let bidData = getStringByKey((bidDataKey + "_OPEN"))
459467 let bidDelOld = DeleteEntry((bidDataKey + "_OPEN"))
460468 let bidUpdate = StringEntry((bidDataKey + "_CLOSED"), ((bidData + "_") + toString(date)))
461469 $Tuple3(assetIdBid, bidDelOld, bidUpdate)
462470 }
463471
464472
465473 func buyMint (i,artId,issuer,bidId,bidOwner) = {
466- let $t01551015560 = idCallerDate(i)
467- let id = $t01551015560._1
468- let caller = $t01551015560._2
469- let date = $t01551015560._3
474+ let $t01574715797 = idCallerDate(i)
475+ let id = $t01574715797._1
476+ let caller = $t01574715797._2
477+ let date = $t01574715797._3
470478 let isBid = isBidCheck(i, issuer, bidOwner, bidId)
471- let $t01564015781 = getArtData(i, issuer, artId, isBid)
472- let totalNFT = $t01564015781._1
473- let signID = $t01564015781._2
474- let artworkName = $t01564015781._3
475- let amountSold = $t01564015781._4
476- let artworkPrice = $t01564015781._5
477- let priceAssetId = $t01564015781._6
478- let maxCanSell = $t01564015781._7
479- let $t01578615932 = getBidData(i, caller, issuer, artId, bidOwner, bidId, priceAssetId, artworkPrice, isBid)
480- let bidDataKey = $t01578615932._1
481- let amount = $t01578615932._2
482- let assetId = $t01578615932._3
483- let $t01593716084 = getCommissionData(issuer, priceAssetId, amount, amountSold, maxCanSell)
484- let amountForSign = $t01593716084._1
485- let amountForCreator = $t01593716084._2
486- let newAmountSold = $t01593716084._3
487- let $t01608916269 = getIssueData(issuer, artId, signID, artworkName, newAmountSold, maxCanSell, totalNFT, caller, bidOwner, bidId, i)
488- let issueNFT = $t01608916269._1
489- let idNFT = $t01608916269._2
490- let sellStatus = $t01608916269._3
491- let receiveNFT = $t01608916269._4
492- let $t01627416373 = getBidKeyVal(assetId, bidDataKey, date)
493- let assetIdBid = $t01627416373._1
494- let bidDelOld = $t01627416373._2
495- let bidUpdate = $t01627416373._3
479+ let $t01587716018 = getArtData(i, issuer, artId, isBid)
480+ let totalNFT = $t01587716018._1
481+ let signID = $t01587716018._2
482+ let artworkName = $t01587716018._3
483+ let amountSold = $t01587716018._4
484+ let artworkPrice = $t01587716018._5
485+ let priceAssetId = $t01587716018._6
486+ let maxCanSell = $t01587716018._7
487+ let $t01602316169 = getBidData(i, caller, issuer, artId, bidOwner, bidId, priceAssetId, artworkPrice, isBid)
488+ let bidDataKey = $t01602316169._1
489+ let amount = $t01602316169._2
490+ let assetId = $t01602316169._3
491+ let $t01617416321 = getCommissionData(issuer, priceAssetId, amount, amountSold, maxCanSell)
492+ let amountForSign = $t01617416321._1
493+ let amountForCreator = $t01617416321._2
494+ let newAmountSold = $t01617416321._3
495+ let $t01632616506 = getIssueData(issuer, artId, signID, artworkName, newAmountSold, maxCanSell, totalNFT, caller, bidOwner, bidId, i)
496+ let issueNFT = $t01632616506._1
497+ let idNFT = $t01632616506._2
498+ let sellStatus = $t01632616506._3
499+ let receiveNFT = $t01632616506._4
500+ let $t01651116610 = getBidKeyVal(assetId, bidDataKey, date)
501+ let assetIdBid = $t01651116610._1
502+ let bidDelOld = $t01651116610._2
503+ let bidUpdate = $t01651116610._3
496504 let soldKey = ((((((("art_sold_" + toString(newAmountSold)) + "_of_") + toString(maxCanSell)) + "_") + artId) + "_") + issuer)
497505 let soldValue = if (!(isBid))
498506 then ((((((((((caller + "_") + toString(date)) + "_") + id) + "_") + toString(artworkPrice)) + "_") + priceAssetId) + "_") + toBase58String(idNFT))
499507 else ((((((((((toString(receiveNFT) + "_") + toString(date)) + "_") + id) + "_") + toString(amount)) + "_") + assetIdBid) + "_") + toBase58String(idNFT))
500508 let soldData = StringEntry(soldKey, soldValue)
501509 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)), amountForSign, assetId), ScriptTransfer(receiveNFT, 1, idNFT)]
502510 if (isBid)
503511 then [soldData, bidUpdate, bidDelOld] :: buyRes
504512 else soldData :: buyRes
505513 }
506514
507515
508516 @Callable(i)
509517 func addArtwork (sha256Hash,signID,name,description,tags,type,maxmint,cidDisplay,sha256Export,cidExport,sha256Licence,cidLicence) = {
510- let $t01773317774 = idCallerDate(i)
511- let artId = $t01773317774._1
512- let caller = $t01773317774._2
513- let date = $t01773317774._3
518+ let $t01797018011 = idCallerDate(i)
519+ let artId = $t01797018011._1
520+ let caller = $t01797018011._2
521+ let date = $t01797018011._3
514522 if (!(validateHash(sha256Hash)))
515523 then throw("Hash should be 64 characters maximum")
516524 else {
517- let $t01787517944 = setLIcence(cidLicence, sha256Licence)
518- let licenceCID = $t01787517944._1
519- let licenceHash = $t01787517944._2
525+ let $t01811218181 = setLIcence(cidLicence, sha256Licence)
526+ let licenceCID = $t01811218181._1
527+ let licenceHash = $t01811218181._2
520528 let validateArtwork = validateArtworkData(caller, cidDisplay, cidExport, licenceCID, sha256Export, licenceHash, name, description, tags, maxmint)
521529 if ((validateArtwork != ""))
522530 then throw("Something went wrong!")
523531 else {
524- let $t01817218214 = validatePayment(i)
525- let amount = $t01817218214._1
526- let assetId = $t01817218214._2
532+ let $t01840918451 = validatePayment(i)
533+ let amount = $t01840918451._1
534+ let assetId = $t01840918451._2
527535 if (!(isDefined(amount)))
528536 then throw("Something went wrong")
529537 else {
530538 let entryExist = getStringByKey(keyTxidByHashOwner(sha256Hash, caller))
531539 if ((entryExist != ""))
532540 then throw("You already added it")
533541 else {
534542 let hashExist = getStringByKey(keyOwnerByHash(sha256Hash))
535543 if ((hashExist != ""))
536544 then throw("Hash already registered")
537545 else {
538546 let isSignCertified = checkSignCertificate(signID, caller, sha256Hash)
539547 if (!(isSignCertified))
540548 then throw("Sign Certificate not found for this address.")
541549 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), maxmint), 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)]
542550 }
543551 }
544552 }
545553 }
546554 }
547555 }
548556
549557
550558
551559 @Callable(i)
552560 func updateArtwork (txid,name,description,tags,type,maxmint,cidDisplay,sha256Export,cidExport,sha256Licence,cidLicence) = if (!(dappRunning))
553561 then throw(maintenanceMSG)
554562 else {
555563 let caller = toBase58String(i.caller.bytes)
556- let $t02093521004 = setLIcence(cidLicence, sha256Licence)
557- let licenceCID = $t02093521004._1
558- let licenceHash = $t02093521004._2
564+ let $t02117221241 = setLIcence(cidLicence, sha256Licence)
565+ let licenceCID = $t02117221241._1
566+ let licenceHash = $t02117221241._2
559567 let validateArtwork = validateArtworkData(caller, cidDisplay, cidExport, licenceCID, sha256Export, licenceHash, name, description, tags, maxmint)
560568 if ((validateArtwork != ""))
561569 then throw("Something went wrong!")
562570 else {
563571 let entryExist = getStringByKey(keyName(caller, txid))
564572 if ((entryExist == ""))
565573 then throw("Entry not found")
566574 else {
567575 let flag = getStringByKey(keyFlag(caller, txid))
568576 if ((flag == "ILLEGAL"))
569577 then throw("Cannot update ILLEGAL artwork")
570578 else if (!(isArtMinted(caller, txid)))
571579 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), IntegerEntry(keyMaxMint(caller, txid), maxmint), StringEntry(keyTags(caller, txid), tags), StringEntry(keyType(caller, txid), type)]
572580 else throw("Already minted")
573581 }
574582 }
575583 }
576584
577585
578586
579587 @Callable(i)
580588 func flagArtwork (artId,addr,flag) = {
581- let $t02247722510 = idCallerDate(i)
582- let id = $t02247722510._1
583- let caller = $t02247722510._2
589+ let $t02271422747 = idCallerDate(i)
590+ let id = $t02271422747._1
591+ let caller = $t02271422747._2
584592 if (containsElement([chris, joep, toString(this)], caller))
585593 then if ((flag == "CONSENT"))
586594 then [StringEntry(keyFlag(addr, artId), flag)]
587595 else if ((flag == ""))
588596 then [StringEntry(keyFlag(addr, artId), flag)]
589597 else if ((flag == "CHANGE_REQUIRED"))
590598 then [StringEntry(keyFlag(addr, artId), flag)]
591599 else if (if ((flag == "ILLEGAL"))
592600 then containsElement([chris, toString(this)], caller)
593601 else false)
594602 then [StringEntry(keyFlag(addr, artId), flag), StringEntry(keyName(addr, artId), "ILLEGAL CONTENT"), StringEntry(keyDesc(addr, artId), "ILLEGAL CONTENT"), StringEntry(keyDisplayCid(addr, artId), ""), StringEntry(keyExportCid(addr, artId), ""), StringEntry(keyLicenceCid(addr, artId), "")]
595603 else throw(("Unknow status " + flag))
596604 else throw("You are not allowed")
597605 }
598606
599607
600608
601609 @Callable(i)
602610 func deleteArtwork (artId,addr) = {
603- let $t02352923562 = idCallerDate(i)
604- let id = $t02352923562._1
605- let caller = $t02352923562._2
611+ let $t02376623799 = idCallerDate(i)
612+ let id = $t02376623799._1
613+ let caller = $t02376623799._2
606614 let addrToUse = if (containsElement([chris, joep, toString(this)], caller))
607615 then addr
608616 else caller
609617 let entryExist = valueOrErrorMessage(getStringByKey(keyName(addrToUse, artId)), "No art matching for this address")
610618 if ((entryExist == ""))
611619 then throw("No art matching for this address")
612620 else {
613621 let sha256Hash = getStringByKey(keyHashByTxidAddr(addrToUse, artId))
614622 if ((sha256Hash == ""))
615623 then throw("No art hash matching for this address")
616624 else {
617625 let signID = getStringByKey(keySignID(addrToUse, artId))
618626 if ((signID == ""))
619627 then throw("No SIGN ID matching")
620628 else {
621629 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))]
622630 if (!(isArtMinted(addrToUse, artId)))
623631 then if (!(dappRunning))
624632 then throw(maintenanceMSG)
625633 else dataToDelete
626634 else if (containsElement([chris, toString(this)], caller))
627635 then dataToDelete
628636 else throw("Art already minted, you cannot delete it")
629637 }
630638 }
631639 }
632640 }
633641
634642
635643
636644 @Callable(i)
637645 func sellArtwork (artId,price,maxMint,assetId) = {
638- let $t02592825961 = idCallerDate(i)
639- let id = $t02592825961._1
640- let caller = $t02592825961._2
646+ let $t02616526198 = idCallerDate(i)
647+ let id = $t02616526198._1
648+ let caller = $t02616526198._2
641649 let artworkName = getStringByKey(keyName(caller, artId))
642650 if ((artworkName == ""))
643651 then throw("This art doesn't match your account")
644652 else {
645653 let exportCID = getStringByKey(keyExportCid(caller, artId))
646654 if ((size(split(exportCID, "/")[0]) != 59))
647655 then throw("You cannot sell art with no export file")
648656 else if (!(acceptedAssetIds(assetId)))
649657 then throw("Something went wrong!")
650658 else if (!(validateMinSell(assetId, price)))
651659 then throw("Something went wrong!")
652660 else {
653661 let checkUser = validateUser(caller)
654662 if ((checkUser != ""))
655663 then throw(checkUser)
656664 else {
657665 let amountSold = getIntegerByKey(keyIssued(caller, artId))
658666 let maxCanSell = getIntegerByKey(keyMaxMint(caller, artId))
659667 if ((maxMint > 10))
660668 then throw("10 editions max per artwork")
661669 else if (if ((amountSold != 0))
662670 then (amountSold == maxCanSell)
663671 else false)
664672 then throw("Max edition reached.")
665673 else if (if ((amountSold > 0))
666674 then (maxCanSell != maxMint)
667675 else false)
668676 then throw("Cannot change maximum issuable anymore")
669677 else {
670678 let sellStatus = if (if ((price > 0))
671679 then (maxMint > 0)
672680 else false)
673681 then true
674682 else false
675683 [BooleanEntry(keyOnSale(caller, artId), sellStatus), IntegerEntry(keyPrice(caller, artId), price), IntegerEntry(keyMaxMint(caller, artId), maxMint), StringEntry(keyAssetIdAccepted(caller, artId), assetId)]
676684 }
677685 }
678686 }
679687 }
680688 }
681689
682690
683691
684692 @Callable(i)
685693 func buyArtwork (artId,issuer) = buyMint(i, artId, issuer, "", "")
686694
687695
688696
689697 @Callable(i)
690698 func setBid (artId,issuer) = {
691- let $t02775727795 = idCallerDate(i)
692- let id = $t02775727795._1
693- let caller = $t02775727795._2
694- let date = $t02775727795._3
695- let $t02780027836 = isPayment(i)
696- let payment = $t02780027836._1
697- let amount = $t02780027836._2
699+ let $t02799428032 = idCallerDate(i)
700+ let id = $t02799428032._1
701+ let caller = $t02799428032._2
702+ let date = $t02799428032._3
703+ let $t02803728073 = isPayment(i)
704+ let payment = $t02803728073._1
705+ let amount = $t02803728073._2
698706 let assetId = if (!(isDefined(payment.assetId)))
699707 then "WAVES"
700708 else toBase58String(value(payment.assetId))
701709 if (!(acceptedAssetIds(assetId)))
702710 then throw("asset not accepted")
703711 else if (!(validateMinSell(assetId, amount)))
704712 then throw("Wrong min sell")
705713 else {
706714 let amountSold = getIntegerByKey(keyIssued(issuer, artId))
707715 let maxCanSell = getIntegerByKey(keyMaxMint(issuer, artId))
708716 if ((0 >= maxCanSell))
709717 then throw("No max edition set for this artwork")
710718 else if ((amountSold >= maxCanSell))
711719 then throw("Sold out, you cannot bid")
712720 else [StringEntry((((((((("bid_" + artId) + "_") + issuer) + "_") + caller) + "_") + id) + "_OPEN"), ((((assetId + "_") + toString(amount)) + "_") + toString(date)))]
713721 }
714722 }
715723
716724
717725
718726 @Callable(i)
719727 func acceptBid (artId,issuer,bidId,bidOwner) = {
720728 let caller = toBase58String(i.caller.bytes)
721729 if ((caller != issuer))
722730 then throw("You cannot do this action")
723731 else buyMint(i, artId, issuer, bidId, bidOwner)
724732 }
725733
726734
727735
728736 @Callable(i)
729737 func cancelBid (artId,issuer,bidId) = {
730- let $t02886829020 = idCallerDate(i)
731- let id = $t02886829020._1
732- let caller = $t02886829020._2
733- let date = $t02886829020._3
738+ let $t02910529257 = idCallerDate(i)
739+ let id = $t02910529257._1
740+ let caller = $t02910529257._2
741+ let date = $t02910529257._3
734742 let bidDataKey = ((((((("bid_" + artId) + "_") + issuer) + "_") + caller) + "_") + bidId)
735743 let bidData = getStringByKey((bidDataKey + "_OPEN"))
736744 if ((bidData == ""))
737745 then throw("Bid not found")
738746 else {
739747 let bidDataArr = split(bidData, "_")
740748 let assetId = getBidAssetId(bidDataArr[0])
741749 let bidStatus = "CANCELED"
742750 [DeleteEntry((bidDataKey + "_OPEN")), StringEntry(((bidDataKey + "_") + bidStatus), ((bidData + "_") + toString(date))), ScriptTransfer(Address(fromBase58String(caller)), parseIntValue(bidDataArr[1]), assetId)]
743751 }
744752 }
745753
746754
747755
748756 @Callable(i)
749757 func deleteEntry (entry) = {
750758 let caller = toString(addressFromPublicKey(i.callerPublicKey))
751759 if ((caller == chris))
752760 then [DeleteEntry(entry)]
753761 else throw("no")
754762 }
755763
756764

github/deemru/w8io/169f3d6 
110.27 ms