tx · FZrPqpPbS6bGhqZEy7cBkXRkRjx3Mt44C8eEhF8Wc4mt

3NBquYd5fTq8HRDkagrtNLQ3HmWd7wcZoeL:  -0.01400000 Waves

2021.01.23 07:50 [1365711] smart account 3NBquYd5fTq8HRDkagrtNLQ3HmWd7wcZoeL > SELF 0.00000000 Waves

{ "type": 13, "id": "FZrPqpPbS6bGhqZEy7cBkXRkRjx3Mt44C8eEhF8Wc4mt", "fee": 1400000, "feeAssetId": null, "timestamp": 1611377506508, "version": 2, "chainId": 84, "sender": "3NBquYd5fTq8HRDkagrtNLQ3HmWd7wcZoeL", "senderPublicKey": "7irc2VpK5czoyVdwrCuQqr2JU9ZaZnEZn8RPChnfi3yL", "proofs": [ "srimbxn85YgWdpTEsjqrxxEmhMhyBMYSG8P3KMe8s4UfuhFzPaHAtjhXMgoMx2DyFQwLpi8HNVbsP3JXLqJSXt4" ], "script": "base64:AAIEAAAAAAAAAFcIAhIOCgwICAgICAgBCAgICAgSDQoLCAgICAgBCAgICAgSBQoDCAgIEgQKAggIEgYKBAgBAQgSBAoCCAgSBAoCCAgSBgoECAgICBIGCgQICAgIEgMKAQgAAABDAAAAAAh1bml0VGVzdAcAAAAACW9yYWNsZUZlZQkBAAAABXZhbHVlAAAAAQkABCYAAAABAgAAACMzTjJzNVJ0YUhQQmVuQ3N4MkVDY29GUmJZSHgzbm9aaFhXMQAAAAAIc2lnbkRhcHAJAQAAAAV2YWx1ZQAAAAEJAAQmAAAAAQIAAAAjM05DMjhoU2l2cm1zVFVYYVlEMXg2TDM2Mko0WnBVbm9UZEIAAAAAC2ZlZVJlY2VpdmVyAgAAACMzTjFFNnRYZGRSb1ZhUmZROWRRM3ZnNUxhVzJmc2Q4SEt1YgAAAAAIdXNlckRhcHADBQAAAAh1bml0VGVzdAkBAAAABXZhbHVlAAAAAQkABCYAAAABAgAAACMzTXQ0UkdNRXlqU1dZQW9jVFBxZDU1d2RIUVFCM1BVMlVDbQkBAAAABXZhbHVlAAAAAQkABCYAAAABAgAAACMzTXdEWmFnb1lFaU5mUUxjMzFjR3BZb2FFNTRNR013b0ZyWgAAAAANd2hpdGVsaXN0RGFwcAkBAAAABXZhbHVlAAAAAQkABCYAAAABAgAAACMzTjZCYVYxZENCNHpnNDNnb05OSGFDdHZSMTNCY3lKNUdzcQAAAAALc2lnbkFzc2V0SWQBAAAAIOilarzKd0LycGEyNUpPRYO5uR7lmWcXw3Hq2QuhBK3rAAAAAAt1c2RuQXNzZXRJZAEAAAAgD/IcEqzkxDya7EYaqyWosOy6BytGzG2IcvC14pJJAbQAAAAADHdhdmVzQXNzZXRJZAEAAAAAAAAAAAVjaHJpcwIAAAAjM01zRzZqUE5DclZKVXRZQjdYSkJ4Uzd1dFdzWEFmNG45VnAAAAAABGpvZXACAAAAIzNNem00Vkx3c045dVp3YlRNelBqM1h1eFY2a0VmQVI4VUROAAAAAAdzaWduQ3V0AAAAAAAAAAAHAAAAAAt1c2RuV2F2ZUN1dAAAAAAAAAAACgAAAAAOZGVmYXVsdExpY2VuY2UCAAAAR2JhZnliZWlmdXlvNHBxdTU0aXNtcWd0YjZlNGg2a2t2Z3g3emc0dTN6aWJoMnI3eTZtYjY0aTdienphL2xpY2VuY2UucGRmAAAAABJkZWZhdWx0SGFzaExpY2VuY2UCAAAAQGE4Nzc1OGMzNTRlMzBhOWU3OGZiODRmYTNhMDAxMGE1MDkwYWIyMGRmMGJlMTFhZDQ1YjU3MjBjYzE4N2U2MzkAAAAAC2RhcHBSdW5uaW5nCQEAAAALdmFsdWVPckVsc2UAAAACCQAEGwAAAAIFAAAACHVzZXJEYXBwAgAAABRjb25mX2RhcHBfaXNfcnVubmluZwYAAAAADm1haW50ZW5hbmNlTVNHCQEAAAALdmFsdWVPckVsc2UAAAACCQAEHQAAAAIFAAAACHVzZXJEYXBwAgAAABRjb25mX21haW50ZW5hbmNlX21zZwIAAAAAAAAAAA11c2VyU3VzcGVuZGVkAgAAAAlTVVNQRU5ERUQAAAAAC3VzZXJSZW1vdmVkAgAAAAdSRU1PVkVEAAAAABB1c2VyVW5yZWdpc3RlcmVkAgAAAAxVTlJFR0lTVEVSRUQAAAAAC3VzZXJBbGxvd2VkAgAAAAdBTExPV0VEAQAAABdnZXRTdHJpbmdCeUtleUZyb21Vc2VycwAAAAEAAAADa2V5CQEAAAALdmFsdWVPckVsc2UAAAACCQAEHQAAAAIFAAAACHVzZXJEYXBwBQAAAANrZXkCAAAAAAEAAAAOZ2V0U3RyaW5nQnlLZXkAAAABAAAAA2tleQkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABB0AAAACBQAAAAR0aGlzBQAAAANrZXkCAAAAAAEAAAAZZ2V0SW50ZWdlckJ5S2V5RnJvbU9yYWNsZQAAAAEAAAADa2V5CQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQaAAAAAgUAAAAJb3JhY2xlRmVlBQAAAANrZXkCAAAAH0ludGVnZXIgdW5kZWZpbmUgb3IgMCBpbiBvcmFjbGUBAAAAD2dldEludGVnZXJCeUtleQAAAAEAAAADa2V5CQEAAAALdmFsdWVPckVsc2UAAAACCQAEGgAAAAIFAAAABHRoaXMFAAAAA2tleQAAAAAAAAAAAAEAAAAOY2hlY2tXaGl0ZWxpc3QAAAABAAAAA2tleQkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABBoAAAACBQAAAA13aGl0ZWxpc3REYXBwBQAAAANr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AAAAAAkAAAIAAAABAgAAABhGaWVsZCBjYW5ub3QgYmUgaXMgZW1wdHkDCQAAZgAAAAIJAAExAAAAAQUAAAADc3RyBQAAAANtYXgJAAACAAAAAQkAASwAAAACBQAAAANzdHICAAAADCBpcyB0b28gbG9uZwYBAAAADHZhbGlkYXRlVXNlcgAAAAEAAAAGY2FsbGVyBAAAAAp1c2VyU3RhdHVzCQEAAAALdmFsdWVPckVsc2UAAAACCQAEHQAAAAIFAAAACHVzZXJEYXBwCQEAAAANa2V5VXNlclN0YXR1cwAAAAEFAAAABmNhbGxlcgUAAAAQdXNlclVucmVnaXN0ZXJlZAMDCQAAAAAAAAIFAAAACnVzZXJTdGF0dXMFAAAAEHVzZXJVbnJlZ2lzdGVyZWQGCQAAAAAAAAIFAAAACnVzZXJTdGF0dXMFAAAAC3VzZXJBbGxvd2VkAgAAAC5SZWdpc3RlciB0aGlzIGFjY291bnQgZmlyc3Qgd2l0aCAiQWNjb3VudCIgdGFiAwkAAAAAAAACBQAAAAp1c2VyU3RhdHVzBQAAAA11c2VyU3VzcGVuZGVkAgAAABFBY2NvdW50IHN1c3BlbmRlZAMJAAAAAAAAAgUAAAAKdXNlclN0YXR1cwUAAAALdXNlclJlbW92ZWQCAAAAD0FjY291bnQgcmVtb3ZlZAIAAAAAAQAAAApzZXRMSWNlbmNlAAAAAgAAAApjaWRMaWNlbmNlAAAADXNoYTI1NkxpY2VuY2UEAAAAA2NpZAMJAAAAAAAAAgkAATEAAAABBQAAAApjaWRMaWNlbmNlAAAAAAAAAAAABQAAAA5kZWZhdWx0TGljZW5jZQUAAAAKY2lkTGljZW5jZQQAAAAEaGFzaAMJAAAAAAAAAgkAATEAAAABBQAAAA1zaGEyNTZMaWNlbmNlAAAAAAAAAAAABQAAABJkZWZhdWx0SGFzaExpY2VuY2UFAAAADXNoYTI1NkxpY2VuY2UJAAUUAAAAAgUAAAADY2lkBQAAAARoYXNoAQAAABN2YWxpZGF0ZUFydHdvcmtEYXRhAAAACgAAAAZjYWxsZXIAAAAKY2lkRGlzcGxheQAAAAljaWRFeHBvcnQAAAAKbGljZW5jZUNJRAAAAAxzaGEyNTZFeHBvcnQAAAALbGljZW5jZUhhc2gAAAAEbmFtZQAAAAtkZXNjcmlwdGlvbgAAAAR0YWdzAAAAB21heG1pbnQEAAAACWNoZWNrVXNlcgkBAAAADHZhbGlkYXRlVXNlcgAAAAEFAAAABmNhbGxlcgMJAQAAAAIhPQAAAAIFAAAACWNoZWNrVXNlcgIAAAAACQAAAgAAAAEFAAAACWNoZWNrVXNlcgMJAAAAAAAAAgkAATEAAAABBQAAAApjaWREaXNwbGF5AAAAAAAAAAAACQAAAgAAAAECAAAAG0Rpc3BsYXkgQ0lEIGNhbm5vdCBiZSBlbXB0eQMJAQAAAAEhAAAAAQkBAAAADnZhbGlkYXRlQWxsQ0lEAAAAAwUAAAAKY2lkRGlzcGxheQUAAAAJY2lkRXhwb3J0BQAAAApsaWNlbmNlQ0lECQAAAgAAAAECAAAAEFByb2JsZW0gd2l0aCBDSUQDCQEAAAABIQAAAAEJAQAAAA92YWxpZGF0ZUFsbEhhc2gAAAACBQAAAAxzaGEyNTZFeHBvcnQFAAAAC2xpY2VuY2VIYXNoCQAAAgAAAAECAAAAE1Byb2JsZW0gd2l0aCBIYXNoZXMDCQEAAAABIQAAAAEJAQAAAA52YWxpZGF0ZVN0cmluZwAAAAIFAAAABG5hbWUAAAAAAAAAAGQJAAACAAAAAQIAAAASMTAwIENoYXIuIG1heCBuYW1lAwkBAAAAASEAAAABCQEAAAAOdmFsaWRhdGVTdHJpbmcAAAACBQAAAAtkZXNjcmlwdGlvbgAAAAAAAAAD6AkAAAIAAAABAgAAABoxMDAwIENoYXIuIG1heCBkZXNjcmlwdGlvbgMJAABmAAAAAgkAAZAAAAABCQAEtQAAAAIFAAAABHRhZ3MCAAAAASwAAAAAAAAAAAUJAAACAAAAAQIAAAALNSB0YWdzIG1heC4DCQAAZgAAAAIFAAAAB21heG1pbnQAAAAAAAAAAAoJAAACAAAAAQIAAAAbMTAgZWRpdGlvbnMgbWF4IHBlciBhcnR3b3JrAgAAAAABAAAACWlzUGF5bWVudAAAAAEAAAABaQMJAAAAAAAAAgkAAZAAAAABCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAkAAAIAAAABAgAAABNObyBwYXltZW50IGF0dGFjaGVkBAAAAAdwYXltZW50CQEAAAAFdmFsdWUAAAABCQABkQAAAAIIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAAABAAAAAZhbW91bnQJAQAAAAV2YWx1ZQAAAAEIBQAAAAdwYXltZW50AAAABmFtb3VudAkABRQAAAACBQAAAAdwYXltZW50BQAAAAZhbW91bnQBAAAAD3ZhbGlkYXRlUGF5bWVudAAAAAEAAAABaQQAAAALJHQwODkwMzg5MzkJAQAAAAlpc1BheW1lbnQAAAABBQAAAAFpBAAAAAdwYXltZW50CAUAAAALJHQwODkwMzg5MzkAAAACXzEEAAAABmFtb3VudAgFAAAACyR0MDg5MDM4OTM5AAAAAl8yBAAAAAdhc3NldElkAwMJAQAAAAlpc0RlZmluZWQAAAABCAUAAAAHcGF5bWVudAAAAAdhc3NldElkCQAAAAAAAAIIBQAAAAdwYXltZW50AAAAB2Fzc2V0SWQFAAAAC3NpZ25Bc3NldElkBwgFAAAAB3BheW1lbnQAAAAHYXNzZXRJZAkAAAIAAAABAgAAACtPbmx5IFNJR04gdG9rZW4gYWNjZXB0ZWQgYXMgdHJhbnNhY3Rpb24gZmVlBAAAABljdXJyZW50Q2VydGlmaWNhdGlvblByaWNlCQEAAAAZZ2V0SW50ZWdlckJ5S2V5RnJvbU9yYWNsZQAAAAEJAAEsAAAAAgIAAAASY2VydGlmaWNhdGlvbl9mZWVfCQACWAAAAAEFAAAAC3NpZ25Bc3NldElkAwkBAAAAAiE9AAAAAgUAAAAGYW1vdW50BQAAABljdXJyZW50Q2VydGlmaWNhdGlvblByaWNlCQAAAgAAAAEJAAEsAAAAAgIAAAAZUGF5bWVudCBhbW91bnQgc2hvdWxkIGJlIAkAAaQAAAABBQAAABljdXJyZW50Q2VydGlmaWNhdGlvblByaWNlCQAFFAAAAAIFAAAABmFtb3VudAUAAAAHYXNzZXRJZAEAAAALaXNBcnRNaW50ZWQAAAACAAAACWFkZHJUb1VzZQAAAAVhcnRJZAQAAAAHJG1hdGNoMAkABBoAAAACBQAAAAR0aGlzCQEAAAAJa2V5SXNzdWVkAAAAAgUAAAAJYWRkclRvVXNlBQAAAAVhcnRJZAMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAADSW50BAAAAAFiBQAAAAckbWF0Y2gwAwkBAAAAAiE9AAAAAgUAAAABYgAAAAAAAAAAAAYHBwEAAAAUdmFsaWRhdGVQcmljZUFzc2V0SWQAAAADAAAAAWkAAAAMcHJpY2VBc3NldElkAAAADGFydHdvcmtQcmljZQQAAAALJHQwOTYzOTk2NzUJAQAAAAlpc1BheW1lbnQAAAABBQAAAAFpBAAAAAdwYXltZW50CAUAAAALJHQwOTYzOTk2NzUAAAACXzEEAAAABmFtb3VudAgFAAAACyR0MDk2Mzk5Njc1AAAAAl8yBAAAAAdhc3NldElkAwkBAAAAASEAAAABCQEAAAAJaXNEZWZpbmVkAAAAAQgFAAAAB3BheW1lbnQAAAAHYXNzZXRJZAUAAAAEdW5pdAMDCQAAZgAAAAIJAAExAAAAAQUAAAAMcHJpY2VBc3NldElkAAAAAAAAAAAACQAAAAAAAAIJAAJYAAAAAQkBAAAABXZhbHVlAAAAAQgFAAAAB3BheW1lbnQAAAAHYXNzZXRJZAUAAAAMcHJpY2VBc3NldElkBwgFAAAAB3BheW1lbnQAAAAHYXNzZXRJZAkAAAIAAAABAgAAAA5Xcm9uZyBhc3NldCBpZAMDCQAAAAAAAAIFAAAAB2Fzc2V0SWQFAAAABHVuaXQJAQAAAAIhPQAAAAIFAAAADHByaWNlQXNzZXRJZAIAAAAABwkAAAIAAAABAgAAAA5Xcm9uZyBhc3NldCBpZAMJAQAAAAIhPQAAAAIFAAAADGFydHdvcmtQcmljZQUAAAAGYW1vdW50CQAAAgAAAAECAAAAE1BheW1lbnQgZG9uJ3QgbWF0Y2gJAAUUAAAAAgUAAAAGYW1vdW50BQAAAAdhc3NldElkAQAAABBhY2NlcHRlZEFzc2V0SWRzAAAAAQAAAAdhc3NldElkAwMDCQEAAAACIT0AAAACBQAAAAdhc3NldElkCQACWAAAAAEFAAAAC3NpZ25Bc3NldElkCQEAAAACIT0AAAACBQAAAAdhc3NldElkCQACWAAAAAEFAAAADHdhdmVzQXNzZXRJZAcJAQAAAAIhPQAAAAIFAAAAB2Fzc2V0SWQJAAJYAAAAAQUAAAALdXNkbkFzc2V0SWQHCQAAAgAAAAECAAAAIU9ubHkgU0lHTiwgVVNETiBvciBXQVZFUyBhY2NlcHRlZAYBAAAAD3ZhbGlkYXRlTWluU2VsbAAAAAIAAAAHYXNzZXRJZAAAAAVwcmljZQQAAAAMbWluU2VsbFdhdmVzAwUAAAAIdW5pdFRlc3QAAAAAAAAAAAEJAQAAABlnZXRJbnRlZ2VyQnlLZXlGcm9tT3JhY2xlAAAAAQIAAAAOd2F2ZXNfbWluX3NlbGwEAAAAC21pblNlbGxVc2RuAAAAAAAAD0JABAAAAAttaW5TZWxsU2lnbgMFAAAACHVuaXRUZXN0AAAAAAAAAAABCQAAaAAAAAIJAQAAABlnZXRJbnRlZ2VyQnlLZXlGcm9tT3JhY2xlAAAAAQkAASwAAAACAgAAABJjZXJ0aWZpY2F0aW9uX2ZlZV8JAAJYAAAAAQUAAAALc2lnbkFzc2V0SWQAAAAAAAAAAAIDAwMDAwkAAAAAAAACBQAAAAdhc3NldElkCQACWAAAAAEFAAAAC3VzZG5Bc3NldElkCQAAZgAAAAIFAAAAC21pblNlbGxVc2RuBQAAAAVwcmljZQcJAQAAAAIhPQAAAAIFAAAABXByaWNlAAAAAAAAAAAABwYDAwkAAAAAAAACBQAAAAdhc3NldElkCQACWAAAAAEFAAAAC3NpZ25Bc3NldElkCQAAZgAAAAIFAAAAC21pblNlbGxTaWduBQAAAAVwcmljZQcJAQAAAAIhPQAAAAIFAAAABXByaWNlAAAAAAAAAAAABwYDAwkAAAAAAAACBQAAAAdhc3NldElkCQACWAAAAAEFAAAADHdhdmVzQXNzZXRJZAkAAGYAAAACBQAAAAxtaW5TZWxsV2F2ZXMFAAAABXByaWNlBwkBAAAAAiE9AAAAAgUAAAAFcHJpY2UAAAAAAAAAAAAHCQAAAgAAAAECAAAAGFdyb25nIG1pbmltdW0gc2VsbCBwcmljZQYBAAAAFmdldFByaWNlQXNzZXRJZEZyb21CaWQAAAABAAAACmJpZERhdGFLZXkEAAAAB2JpZERhdGEJAQAAAA5nZXRTdHJpbmdCeUtleQAAAAEJAAEsAAAAAgUAAAAKYmlkRGF0YUtleQIAAAAFX09QRU4DCQAAAAAAAAIFAAAAB2JpZERhdGECAAAAAAkAAAIAAAABAgAAAA1CaWQgbm90IGZvdW5kBAAAAApiaWREYXRhQXJyCQAEtQAAAAIFAAAAB2JpZERhdGECAAAAAV8EAAAACWJpZEFtb3VudAkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAACmJpZERhdGFBcnIAAAAAAAAAAAEEAAAACmJpZEFzc2V0SWQDCQAAAAAAAAIJAAGRAAAAAgUAAAAKYmlkRGF0YUFycgAAAAAAAAAAAAIAAAAFV0FWRVMFAAAABHVuaXQJAAJZAAAAAQkAAZEAAAACBQAAAApiaWREYXRhQXJyAAAAAAAAAAAAAwkAAGcAAAACAAAAAAAAAAAABQAAAAliaWRBbW91bnQJAAACAAAAAQIAAAAMV3JvbmcgYW1vdW50CQAFFAAAAAIFAAAACWJpZEFtb3VudAUAAAAKYmlkQXNzZXRJZAEAAAAMaWRDYWxsZXJEYXRlAAAAAQAAAAFpAwkBAAAAASEAAAABBQAAAAtkYXBwUnVubmluZwkAAAIAAAABBQAAAA5tYWludGVuYW5jZU1TRwkABRUAAAADCQACWAAAAAEIBQAAAAFpAAAADXRyYW5zYWN0aW9uSWQJAAJYAAAAAQgIBQAAAAFpAAAABmNhbGxlcgAAAAVieXRlcwgFAAAACWxhc3RCbG9jawAAAAl0aW1lc3RhbXABAAAAB2J1eU1pbnQAAAAFAAAAAWkAAAAFYXJ0SWQAAAAGaXNzdWVyAAAABWJpZElkAAAACGJpZE93bmVyBAAAAA0kdDAxMTc1NDExNzkyCQEAAAAMaWRDYWxsZXJEYXRlAAAAAQUAAAABaQQAAAACaWQIBQAAAA0kdDAxMTc1NDExNzkyAAAAAl8xBAAAAAZjYWxsZXIIBQAAAA0kdDAxMTc1NDExNzkyAAAAAl8yBAAAAARkYXRlCAUAAAANJHQwMTE3NTQxMTc5MgAAAAJfMwQAAAAIdG90YWxORlQJAQAAAA9nZXRJbnRlZ2VyQnlLZXkAAAABAgAAABB0b3RhbF9uZnRfaXNzdWVkBAAAAAZzaWduSUQJAQAAAA5nZXRTdHJpbmdCeUtleQAAAAEJAQAAAAlrZXlTaWduSUQAAAACBQAAAAZpc3N1ZXIFAAAABWFydElkBAAAAAthcnR3b3JrTmFtZQkBAAAADmdldFN0cmluZ0J5S2V5AAAAAQkBAAAAB2tleU5hbWUAAAACBQAAAAZpc3N1ZXIFAAAABWFydElkAwkAAAAAAAACBQAAAAthcnR3b3JrTmFtZQIAAAAACQAAAgAAAAECAAAAEUFydCBkb2Vzbid0IGV4aXN0BAAAAAhpc09uU2FsZQkBAAAAD2dldEJvb2xlYW5CeUtleQAAAAEJAQAAAAlrZXlPblNhbGUAAAACBQAAAAZpc3N1ZXIFAAAABWFydElkBAAAAAphbW91bnRTb2xkCQEAAAAPZ2V0SW50ZWdlckJ5S2V5AAAAAQkBAAAACWtleUlzc3VlZAAAAAIFAAAABmlzc3VlcgUAAAAFYXJ0SWQEAAAADGFydHdvcmtQcmljZQkBAAAAD2dldEludGVnZXJCeUtleQAAAAEJAQAAAAhrZXlQcmljZQAAAAIFAAAABmlzc3VlcgUAAAAFYXJ0SWQEAAAADHByaWNlQXNzZXRJZAkBAAAADmdldFN0cmluZ0J5S2V5AAAAAQkBAAAAEmtleUFzc2V0SWRBY2NlcHRlZAAAAAIFAAAABmlzc3VlcgUAAAAFYXJ0SWQEAAAACm1heENhblNlbGwJAQAAAA9nZXRJbnRlZ2VyQnlLZXkAAAABCQEAAAAKa2V5TWF4TWludAAAAAIFAAAABmlzc3VlcgUAAAAFYXJ0SWQEAAAABWlzQmlkAwMDCQAAAAAAAAIFAAAABmNhbGxlcgUAAAAGaXNzdWVyCQEAAAACIT0AAAACBQAAAAhiaWRPd25lcgIAAAAABwkBAAAAAiE9AAAAAgUAAAAFYmlkSWQCAAAAAAcGBwQAAAAKYmlkRGF0YUtleQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAARiaWRfBQAAAAVhcnRJZAIAAAABXwUAAAAGaXNzdWVyAgAAAAFfBQAAAAhiaWRPd25lcgIAAAABXwUAAAAFYmlkSWQDAwMJAABnAAAAAgAAAAAAAAAAAAUAAAAMYXJ0d29ya1ByaWNlBgkBAAAAASEAAAABBQAAAAhpc09uU2FsZQYJAABnAAAAAgAAAAAAAAAAAAUAAAAKbWF4Q2FuU2VsbAkAAAIAAAABAgAAABBBcnQgbm90IGZvciBzYWxlBAAAAA0kdDAxMjYzOTEyNzY4AwUAAAAFaXNCaWQJAQAAABZnZXRQcmljZUFzc2V0SWRGcm9tQmlkAAAAAQUAAAAKYmlkRGF0YUtleQkBAAAAFHZhbGlkYXRlUHJpY2VBc3NldElkAAAAAwUAAAABaQUAAAAMcHJpY2VBc3NldElkBQAAAAxhcnR3b3JrUHJpY2UEAAAABmFtb3VudAgFAAAADSR0MDEyNjM5MTI3NjgAAAACXzEEAAAAB2Fzc2V0SWQIBQAAAA0kdDAxMjYzOTEyNzY4AAAAAl8yBAAAAA1pc1doaXRlbGlzdGVkCQEAAAAOY2hlY2tXaGl0ZWxpc3QAAAABBQAAAAZpc3N1ZXIEAAAAA2N1dAMJAABmAAAAAgUAAAANaXNXaGl0ZWxpc3RlZAUAAAAGaGVpZ2h0AAAAAAAAAAAAAwkAAAAAAAACBQAAAAxwcmljZUFzc2V0SWQJAAJYAAAAAQUAAAALc2lnbkFzc2V0SWQFAAAAB3NpZ25DdXQFAAAAC3VzZG5XYXZlQ3V0BAAAAA1hbW91bnRGb3JTaWduCQAAawAAAAMFAAAABmFtb3VudAUAAAADY3V0AAAAAAAAAABkBAAAABBhbW91bnRGb3JDcmVhdG9yCQAAZQAAAAIFAAAABmFtb3VudAUAAAANYW1vdW50Rm9yU2lnbgMJAAAAAAAAAgUAAAAKYW1vdW50U29sZAUAAAAKbWF4Q2FuU2VsbAkAAAIAAAABAgAAAAxBcnQgc29sZCBvdXQEAAAADW5ld0Ftb3VudFNvbGQJAABkAAAAAgUAAAAKYW1vdW50U29sZAAAAAAAAAAAAQQAAAAJaXNzdWVNZXRhCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAJQ3JlYXRvcjogBQAAAAZpc3N1ZXICAAAACiwKIEFydElEOiAFAAAABWFydElkAgAAAAssCiBTaWduSUQ6IAUAAAAGc2lnbklEAgAAABEsCiBBcnR3b3JrIG5hbWU6IAUAAAALYXJ0d29ya05hbWUCAAAACiwKIElzc3VlOiAJAAGkAAAAAQUAAAANbmV3QW1vdW50U29sZAIAAAABLwkAAaQAAAABBQAAAAptYXhDYW5TZWxsBAAAAAhpc3N1ZU5GVAkABEIAAAAFCQABLAAAAAICAAAAA1NBXwkAAaQAAAABCQAAZAAAAAIFAAAACHRvdGFsTkZUAAAAAAAAAAABBQAAAAlpc3N1ZU1ldGEAAAAAAAAAAAEAAAAAAAAAAAAHBAAAAAVpZE5GVAkABDgAAAABBQAAAAhpc3N1ZU5GVAQAAAAKc2VsbFN0YXR1cwMJAAAAAAAAAgUAAAANbmV3QW1vdW50U29sZAUAAAAKbWF4Q2FuU2VsbAcGBAAAAApyZWNlaXZlTkZUAwMDCQAAAAAAAAIFAAAABmNhbGxlcgUAAAAGaXNzdWVyCQEAAAACIT0AAAACBQAAAAhiaWRPd25lcgIAAAAABwkBAAAAAiE9AAAAAgUAAAAFYmlkSWQCAAAAAAcJAQAAABFAZXh0ck5hdGl2ZSgxMDYyKQAAAAEFAAAACGJpZE93bmVyCAUAAAABaQAAAAZjYWxsZXIEAAAABmJ1eVJlcwkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkBAAAACWtleUlzc3VlZAAAAAIFAAAABmlzc3VlcgUAAAAFYXJ0SWQFAAAADW5ld0Ftb3VudFNvbGQJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkAASwAAAACAgAAAARuZnRfCQACWAAAAAEFAAAABWlkTkZUCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAACWFydF9zb2xkXwkAAaQAAAABBQAAAA1uZXdBbW91bnRTb2xkAgAAAARfb2ZfCQABpAAAAAEFAAAACm1heENhblNlbGwCAAAAAV8FAAAABWFydElkAgAAAAFfBQAAAAZpc3N1ZXIJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAICAAAAEHRvdGFsX25mdF9pc3N1ZWQJAABkAAAAAgUAAAAIdG90YWxORlQAAAAAAAAAAAEJAARMAAAAAgkBAAAADEJvb2xlYW5FbnRyeQAAAAIJAQAAAAlrZXlPblNhbGUAAAACBQAAAAZpc3N1ZXIFAAAABWFydElkBQAAAApzZWxsU3RhdHVzCQAETAAAAAIFAAAACGlzc3VlTkZUCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMJAQAAAAdBZGRyZXNzAAAAAQkAAlkAAAABBQAAAAZpc3N1ZXIFAAAAEGFtb3VudEZvckNyZWF0b3IFAAAAB2Fzc2V0SWQJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwkBAAAAB0FkZHJlc3MAAAABCQACWQAAAAEFAAAAC2ZlZVJlY2VpdmVyBQAAAA1hbW91bnRGb3JTaWduBQAAAAdhc3NldElkCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMFAAAACnJlY2VpdmVORlQAAAAAAAAAAAEFAAAABWlkTkZUBQAAAANuaWwEAAAACmFzc2V0SWRCaWQDCQEAAAABIQAAAAEJAQAAAAlpc0RlZmluZWQAAAABBQAAAAdhc3NldElkAgAAAAVXQVZFUwkAAlgAAAABCQEAAAAFdmFsdWUAAAABBQAAAAdhc3NldElkBAAAAApnZXRCaWREYXRhCQEAAAAOZ2V0U3RyaW5nQnlLZXkAAAABCQABLAAAAAIFAAAACmJpZERhdGFLZXkCAAAABV9PUEVOBAAAAAliaWREZWxPbGQJAQAAAAtEZWxldGVFbnRyeQAAAAEJAAEsAAAAAgUAAAAKYmlkRGF0YUtleQIAAAAFX09QRU4EAAAACWJpZFVwZGF0ZQkBAAAAC1N0cmluZ0VudHJ5AAAAAgkAASwAAAACBQAAAApiaWREYXRhS2V5AgAAAAdfQ0xPU0VECQABLAAAAAIJAAEsAAAAAgUAAAAKZ2V0QmlkRGF0YQIAAAABXwkAAaQAAAABBQAAAARkYXRlBAAAAAlzb2xkVmFsdWUDCQEAAAABIQAAAAEFAAAABWlzQmlkCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIFAAAABmNhbGxlcgIAAAABXwkAAaQAAAABBQAAAARkYXRlAgAAAAFfBQAAAAJpZAIAAAABXwkAAaQAAAABBQAAAAxhcnR3b3JrUHJpY2UCAAAAAV8FAAAADHByaWNlQXNzZXRJZAIAAAABXwkAAlgAAAABBQAAAAVpZE5GVAkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQAEJQAAAAEFAAAACnJlY2VpdmVORlQCAAAAAV8JAAGkAAAAAQUAAAAEZGF0ZQIAAAABXwUAAAACaWQCAAAAAV8JAAGkAAAAAQUAAAAGYW1vdW50AgAAAAFfBQAAAAphc3NldElkQmlkAgAAAAFfCQACWAAAAAEFAAAABWlkTkZUBAAAAAhzb2xkRGF0YQkBAAAAC1N0cmluZ0VudHJ5AAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAlhcnRfc29sZF8JAAGkAAAAAQUAAAANbmV3QW1vdW50U29sZAIAAAAEX29mXwkAAaQAAAABBQAAAAptYXhDYW5TZWxsAgAAAAFfBQAAAAVhcnRJZAIAAAABXwUAAAAGaXNzdWVyBQAAAAlzb2xkVmFsdWUDBQAAAAVpc0JpZAkABEwAAAACBQAAAAhzb2xkRGF0YQkABEwAAAACBQAAAAliaWRVcGRhdGUJAARMAAAAAgUAAAAJYmlkRGVsT2xkBQAAAAZidXlSZXMJAARMAAAAAgUAAAAIc29sZERhdGEFAAAABmJ1eVJlcwAAAAoAAAABaQEAAAAKYWRkQXJ0d29yawAAAAwAAAAKc2hhMjU2SGFzaAAAAAZzaWduSUQAAAAEbmFtZQAAAAtkZXNjcmlwdGlvbgAAAAR0YWdzAAAABHR5cGUAAAAHbWF4bWludAAAAApjaWREaXNwbGF5AAAADHNoYTI1NkV4cG9ydAAAAAljaWRFeHBvcnQAAAANc2hhMjU2TGljZW5jZQAAAApjaWRMaWNlbmNlBAAAAA0kdDAxNTc5NDE1ODM1CQEAAAAMaWRDYWxsZXJEYXRlAAAAAQUAAAABaQQAAAAFYXJ0SWQIBQAAAA0kdDAxNTc5NDE1ODM1AAAAAl8xBAAAAAZjYWxsZXIIBQAAAA0kdDAxNTc5NDE1ODM1AAAAAl8yBAAAAARkYXRlCAUAAAANJHQwMTU3OTQxNTgzNQAAAAJfMwMJAQAAAAEhAAAAAQkBAAAADHZhbGlkYXRlSGFzaAAAAAEFAAAACnNoYTI1Nkhhc2gJAAACAAAAAQIAAAAkSGFzaCBzaG91bGQgYmUgNjQgY2hhcmFjdGVycyBtYXhpbXVtBAAAAA0kdDAxNTkzNjE2MDA1CQEAAAAKc2V0TEljZW5jZQAAAAIFAAAACmNpZExpY2VuY2UFAAAADXNoYTI1NkxpY2VuY2UEAAAACmxpY2VuY2VDSUQIBQAAAA0kdDAxNTkzNjE2MDA1AAAAAl8xBAAAAAtsaWNlbmNlSGFzaAgFAAAADSR0MDE1OTM2MTYwMDUAAAACXzIEAAAAD3ZhbGlkYXRlQXJ0d29yawkBAAAAE3ZhbGlkYXRlQXJ0d29ya0RhdGEAAAAKBQAAAAZjYWxsZXIFAAAACmNpZERpc3BsYXkFAAAACWNpZEV4cG9ydAUAAAAKbGljZW5jZUNJRAUAAAAMc2hhMjU2RXhwb3J0BQAAAAtsaWNlbmNlSGFzaAUAAAAEbmFtZQUAAAALZGVzY3JpcHRpb24FAAAABHRhZ3MFAAAAB21heG1pbnQDCQEAAAACIT0AAAACBQAAAA92YWxpZGF0ZUFydHdvcmsCAAAAAAkAAAIAAAABAgAAABVTb21ldGhpbmcgd2VudCB3cm9uZyEEAAAADSR0MDE2MjMzMTYyNzUJAQAAAA92YWxpZGF0ZVBheW1lbnQAAAABBQAAAAFpBAAAAAZhbW91bnQIBQAAAA0kdDAxNjIzMzE2Mjc1AAAAAl8xBAAAAAdhc3NldElkCAUAAAANJHQwMTYyMzMxNjI3NQAAAAJfMgMJAQAAAAEhAAAAAQkBAAAACWlzRGVmaW5lZAAAAAEFAAAABmFtb3VudAkAAAIAAAABAgAAABRTb21ldGhpbmcgd2VudCB3cm9uZwQAAAAKZW50cnlFeGlzdAkBAAAADmdldFN0cmluZ0J5S2V5AAAAAQkBAAAAEmtleVR4aWRCeUhhc2hPd25lcgAAAAIFAAAACnNoYTI1Nkhhc2gFAAAABmNhbGxlcgMJAQAAAAIhPQAAAAIFAAAACmVudHJ5RXhpc3QCAAAAAAkAAAIAAAABAgAAABRZb3UgYWxyZWFkeSBhZGRlZCBpdAQAAAAJaGFzaEV4aXN0CQEAAAAOZ2V0U3RyaW5nQnlLZXkAAAABCQEAAAAOa2V5T3duZXJCeUhhc2gAAAABBQAAAApzaGEyNTZIYXNoAwkBAAAAAiE9AAAAAgUAAAAJaGFzaEV4aXN0AgAAAAAJAAACAAAAAQIAAAAXSGFzaCBhbHJlYWR5IHJlZ2lzdGVyZWQEAAAAD2lzU2lnbkNlcnRpZmllZAkBAAAAFGNoZWNrU2lnbkNlcnRpZmljYXRlAAAAAwUAAAAGc2lnbklEBQAAAAZjYWxsZXIFAAAA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YTI1NkV4cG9ydAAAAAljaWRFeHBvcnQAAAANc2hhMjU2TGljZW5jZQAAAApjaWRMaWNlbmNlAwkBAAAAASEAAAABBQAAAAtkYXBwUnVubmluZwkAAAIAAAABBQAAAA5tYWludGVuYW5jZU1TRwQAAAAGY2FsbGVyCQACWAAAAAEICAUAAAABaQAAAAZjYWxsZXIAAAAFYnl0ZXMEAAAADSR0MDE4OTk2MTkwNjUJAQAAAApzZXRMSWNlbmNlAAAAAgUAAAAKY2lkTGljZW5jZQUAAAANc2hhMjU2TGljZW5jZQQAAAAKbGljZW5jZUNJRAgFAAAADSR0MDE4OTk2MTkwNjUAAAACXzEEAAAAC2xpY2VuY2VIYXNoCAUAAAANJHQwMTg5OTYxOTA2NQAAAAJfMgQAAAAPdmFsaWRhdGVBcnR3b3JrCQEAAAATdmFsaWRhdGVBcnR3b3JrRGF0YQAAAAoFAAAABmNhbGxlcgUAAAAKY2lkRGlzcGxheQUAAAAJY2lkRXhwb3J0BQAAAApsaWNlbmNlQ0lEBQAAAAxzaGEyNTZFeHBvcnQFAAAAC2xpY2VuY2VIYXNoBQAAAARuYW1lBQAAAAtkZXNjcmlwdGlvbgUAAAAEdGFncwUAAAAHbWF4bWludAMJAQAAAAIhPQAAAAIFAAAAD3ZhbGlkYXRlQXJ0d29yawIAAAAACQAAAgAAAAECAAAAFVNvbWV0aGluZyB3ZW50IHdyb25nIQQAAAAKZW50cnlFeGlzdAkBAAAADmdldFN0cmluZ0J5S2V5AAAAAQkBAAAAB2tleU5hbWUAAAACBQAAAAZjYWxsZXIFAAAABHR4aWQDCQAAAAAAAAIFAAAACmVudHJ5RXhpc3QCAAAAAAkAAAIAAAABAgAAAA9FbnRyeSBub3QgZm91bmQEAAAABGZsYWcJAQAAAA5nZXRTdHJpbmdCeUtleQAAAAEJAQAAAAdrZXlGbGFnAAAAAgUAAAAGY2FsbGVyBQAAAAR0eGlkAwkAAAAAAAACBQAAAARmbGFnAgAAAAdJTExFR0FMCQAAAgAAAAECAAAAHUNhbm5vdCB1cGRhdGUgSUxMRUdBTCBhcnR3b3JrAwkBAAAAASEAAAABCQEAAAALaXNBcnRNaW50ZWQAAAACBQAAAAZjYWxsZXIFAAAABHR4aWQJAARMAAAAAgkB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", "height": 1365711, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: BE178mNRfBW1KcafUULrLaR1BWR5KMfyAiwjH4KAtRrn Next: 29wJxFYtqMHQ8PCwGB5WhFMc4NTJAN7G3JeJQPsG9nPE Diff:
OldNewDifferences
231231 else {
232232 let aJ = value(aI.payments[0])
233233 let aK = value(aJ.amount)
234- let aL = if (if (isDefined(aJ.assetId))
235- then (aJ.assetId == g)
236- else false)
237- then aJ.assetId
238- else throw("Only SIGN token accepted as transaction fee")
239- let aM = y(("certification_fee_" + toBase58String(g)))
240- if ((aK != aM))
241- then throw(("Payment amount should be " + toString(aM)))
242- else $Tuple2(aK, aL)
234+ $Tuple2(aJ, aK)
243235 }
244236
245237
246-func aN (aO,P) = {
247- let G = getInteger(this, X(aO, P))
238+func aL (aI) = {
239+ let aM = aH(aI)
240+ let aJ = aM._1
241+ let aK = aM._2
242+ let aN = if (if (isDefined(aJ.assetId))
243+ then (aJ.assetId == g)
244+ else false)
245+ then aJ.assetId
246+ else throw("Only SIGN token accepted as transaction fee")
247+ let aO = y(("certification_fee_" + toBase58String(g)))
248+ if ((aK != aO))
249+ then throw(("Payment amount should be " + toString(aO)))
250+ else $Tuple2(aK, aN)
251+ }
252+
253+
254+func aP (aQ,P) = {
255+ let G = getInteger(this, X(aQ, P))
248256 if ($isInstanceOf(G, "Int"))
249257 then {
250- let aP = G
251- if ((aP != 0))
258+ let aR = G
259+ if ((aR != 0))
252260 then true
253261 else false
254262 }
256264 }
257265
258266
259-func aQ (aI,aR,aS) = {
260- let aJ = value(aI.payments[0])
261- let aK = value(aJ.amount)
262- let aL = if (!(isDefined(aJ.assetId)))
267+func aS (aI,aT,aU) = {
268+ let aV = aH(aI)
269+ let aJ = aV._1
270+ let aK = aV._2
271+ let aN = if (!(isDefined(aJ.assetId)))
263272 then unit
264- else if (if ((size(aR) > 0))
265- then (toBase58String(value(aJ.assetId)) == aR)
273+ else if (if ((size(aT) > 0))
274+ then (toBase58String(value(aJ.assetId)) == aT)
266275 else false)
267276 then aJ.assetId
268277 else throw("Wrong asset id")
269- if (if ((aL == unit))
270- then (aR != "")
278+ if (if ((aN == unit))
279+ then (aT != "")
271280 else false)
272281 then throw("Wrong asset id")
273- else if ((aS != aK))
282+ else if ((aU != aK))
274283 then throw("Payment don't match")
275- else $Tuple2(aK, aL)
284+ else $Tuple2(aK, aN)
276285 }
277286
278287
279-func aT (aL) = if (if (if ((aL != toBase58String(g)))
280- then (aL != toBase58String(i))
288+func aW (aN) = if (if (if ((aN != toBase58String(g)))
289+ then (aN != toBase58String(i))
281290 else false)
282- then (aL != toBase58String(h))
291+ then (aN != toBase58String(h))
283292 else false)
284293 then throw("Only SIGN, USDN or WAVES accepted")
285294 else true
286295
287296
288-func aU (aL,aV) = {
289- let aW = if (a)
297+func aX (aN,aY) = {
298+ let aZ = if (a)
290299 then 1
291300 else y("waves_min_sell")
292- let aX = 1000000
293- let aY = if (a)
301+ let ba = 1000000
302+ let bb = if (a)
294303 then 1
295304 else (y(("certification_fee_" + toBase58String(g))) * 2)
296- if (if (if (if (if ((aL == toBase58String(h)))
297- then (aX > aV)
305+ if (if (if (if (if ((aN == toBase58String(h)))
306+ then (ba > aY)
298307 else false)
299- then (aV != 0)
308+ then (aY != 0)
300309 else false)
301310 then true
302- else if (if ((aL == toBase58String(g)))
303- then (aY > aV)
311+ else if (if ((aN == toBase58String(g)))
312+ then (bb > aY)
304313 else false)
305- then (aV != 0)
314+ then (aY != 0)
306315 else false)
307316 then true
308- else if (if ((aL == toBase58String(i)))
309- then (aW > aV)
317+ else if (if ((aN == toBase58String(i)))
318+ then (aZ > aY)
310319 else false)
311- then (aV != 0)
320+ then (aY != 0)
312321 else false)
313322 then throw("Wrong minimum sell price")
314323 else true
315324 }
316325
317326
318-func aZ (ba) = {
319- let bb = x((ba + "_OPEN"))
320- if ((bb == ""))
327+func bc (bd) = {
328+ let be = x((bd + "_OPEN"))
329+ if ((be == ""))
321330 then throw("Bid not found")
322331 else {
323- let bc = split(bb, "_")
324- let bd = parseIntValue(bc[1])
325- let be = if ((bc[0] == "WAVES"))
332+ let bf = split(be, "_")
333+ let bg = parseIntValue(bf[1])
334+ let bh = if ((bf[0] == "WAVES"))
326335 then unit
327- else fromBase58String(bc[0])
328- if ((0 >= bd))
336+ else fromBase58String(bf[0])
337+ if ((0 >= bg))
329338 then throw("Wrong amount")
330- else $Tuple2(bd, be)
339+ else $Tuple2(bg, bh)
331340 }
332341 }
333342
334343
335-func bf (aI,P,bg,bh,bi) = {
336- let bj = toBase58String(aI.transactionId)
337- let N = toBase58String(aI.caller.bytes)
338- let bk = z("total_nft_issued")
339- let D = x(W(bg, P))
340- let bl = x(Q(bg, P))
341- if ((bl == ""))
344+func bi (aI) = if (!(p))
345+ then throw(q)
346+ else $Tuple3(toBase58String(aI.transactionId), toBase58String(aI.caller.bytes), lastBlock.timestamp)
347+
348+
349+func bj (aI,P,bk,bl,bm) = {
350+ let bn = bi(aI)
351+ let bo = bn._1
352+ let N = bn._2
353+ let bp = bn._3
354+ let bq = z("total_nft_issued")
355+ let D = x(W(bk, P))
356+ let br = x(Q(bk, P))
357+ if ((br == ""))
342358 then throw("Art doesn't exist")
343359 else {
344- let bm = x(S(bg, P))
345- let bn = x(U(bg, P))
346- let bo = x(T(bg, P))
347- let aA = x(aa(bg, P))
348- let aB = x(Z(bg, P))
349- let aD = take(x(R(bg, P)), 50)
350- let bp = B(Y(bg, P))
351- let bq = z(X(bg, P))
352- let aS = z(ad(bg, P))
353- let aR = x(ae(bg, P))
354- let br = x(ag(bg, P))
355- let bs = z(V(bg, P))
356- let bt = if (if (if ((N == bg))
357- then (bi != "")
360+ let bs = B(Y(bk, P))
361+ let bt = z(X(bk, P))
362+ let aU = z(ad(bk, P))
363+ let aT = x(ae(bk, P))
364+ let bu = z(V(bk, P))
365+ let bv = if (if (if ((N == bk))
366+ then (bm != "")
358367 else false)
359- then (bh != "")
368+ then (bl != "")
360369 else false)
361370 then true
362371 else false
363- let ba = ((((((("bid_" + P) + "_") + bg) + "_") + bi) + "_") + bh)
364- if (if (if ((0 >= aS))
372+ let bd = ((((((("bid_" + P) + "_") + bk) + "_") + bm) + "_") + bl)
373+ if (if (if ((0 >= aU))
365374 then true
366- else !(bp))
375+ else !(bs))
367376 then true
368- else (0 >= bs))
377+ else (0 >= bu))
369378 then throw("Art not for sale")
370379 else {
371- let bu = if (bt)
372- then aZ(ba)
373- else aQ(aI, aR, aS)
374- let aK = bu._1
375- let aL = bu._2
376- let bv = A(bg)
377- let bw = if ((bv > height))
380+ let bw = if (bv)
381+ then bc(bd)
382+ else aS(aI, aT, aU)
383+ let aK = bw._1
384+ let aN = bw._2
385+ let bx = A(bk)
386+ let by = if ((bx > height))
378387 then 0
379- else if ((aR == toBase58String(g)))
388+ else if ((aT == toBase58String(g)))
380389 then l
381390 else m
382- let bx = fraction(aK, bw, 100)
383- let by = (aK - bx)
384- if ((bq == bs))
391+ let bz = fraction(aK, by, 100)
392+ let bA = (aK - bz)
393+ if ((bt == bu))
385394 then throw("Art sold out")
386395 else {
387- let bz = (bq + 1)
388- let bA = toString(lastBlock.timestamp)
389- let bB = ((((((((((((((((((((((((((("Creator: " + bg) + ",
396+ let bB = (bt + 1)
397+ let bC = ((((((((((("Creator: " + bk) + ",
390398 ArtID: ") + P) + ",
391399 SignID: ") + D) + ",
392- Artwork name: ") + bl) + ",
393- Artwork description: ") + aD) + ",
394- Issue: ") + toString(bz)) + "/") + toString(bs)) + ",
395- Max issuable: ") + toString(bs)) + ",
396- Source hash: ") + br) + ",
397- Display cid: ") + bm) + ",
398- Export cid: ") + bn) + ",
399- Export hash: ") + bo) + ",
400- Licence cid: ") + aA) + ",
401- Licence hash: ") + aB)
402- let bC = Issue(("SA_" + toString((bk + 1))), bB, 1, 0, false)
403- let bD = calculateAssetId(bC)
404- let bE = if ((bz == bs))
400+ Artwork name: ") + br) + ",
401+ Issue: ") + toString(bB)) + "/") + toString(bu))
402+ let bD = Issue(("SA_" + toString((bq + 1))), bC, 1, 0, false)
403+ let bE = calculateAssetId(bD)
404+ let bF = if ((bB == bu))
405405 then false
406406 else true
407- let bF = if (if (if ((N == bg))
408- then (bi != "")
407+ let bG = if (if (if ((N == bk))
408+ then (bm != "")
409409 else false)
410- then (bh != "")
410+ then (bl != "")
411411 else false)
412- then addressFromStringValue(bi)
412+ then addressFromStringValue(bm)
413413 else aI.caller
414- let bG = [IntegerEntry(X(bg, P), bz), StringEntry(("nft_" + toBase58String(bD)), ((((((("art_sold_" + toString(bz)) + "_of_") + toString(bs)) + "_") + P) + "_") + bg)), IntegerEntry("total_nft_issued", (bk + 1)), BooleanEntry(Y(bg, P), bE), bC, ScriptTransfer(Address(fromBase58String(bg)), by, aL), ScriptTransfer(Address(fromBase58String(d)), bx, aL), ScriptTransfer(bF, 1, bD)]
415- let bH = if (!(isDefined(aL)))
414+ let bH = [IntegerEntry(X(bk, P), bB), StringEntry(("nft_" + toBase58String(bE)), ((((((("art_sold_" + toString(bB)) + "_of_") + toString(bu)) + "_") + P) + "_") + bk)), IntegerEntry("total_nft_issued", (bq + 1)), BooleanEntry(Y(bk, P), bF), bD, ScriptTransfer(Address(fromBase58String(bk)), bA, aN), ScriptTransfer(Address(fromBase58String(d)), bz, aN), ScriptTransfer(bG, 1, bE)]
415+ let bI = if (!(isDefined(aN)))
416416 then "WAVES"
417- else toBase58String(value(aL))
418- let bI = x((ba + "_OPEN"))
419- let bJ = DeleteEntry((ba + "_OPEN"))
420- let bK = StringEntry((ba + "_CLOSED"), ((bI + "_") + bA))
421- let bL = if (!(bt))
422- then ((((((((((N + "_") + bA) + "_") + bj) + "_") + toString(aS)) + "_") + aR) + "_") + toBase58String(bD))
423- else ((((((((((toString(bF) + "_") + bA) + "_") + bj) + "_") + toString(aK)) + "_") + bH) + "_") + toBase58String(bD))
424- let bM = StringEntry(((((((("art_sold_" + toString(bz)) + "_of_") + toString(bs)) + "_") + P) + "_") + bg), bL)
425- if (bt)
426- then [bM, bK, bJ] :: bG
427- else bM :: bG
417+ else toBase58String(value(aN))
418+ let bJ = x((bd + "_OPEN"))
419+ let bK = DeleteEntry((bd + "_OPEN"))
420+ let bL = StringEntry((bd + "_CLOSED"), ((bJ + "_") + toString(bp)))
421+ let bM = if (!(bv))
422+ then ((((((((((N + "_") + toString(bp)) + "_") + bo) + "_") + toString(aU)) + "_") + aT) + "_") + toBase58String(bE))
423+ else ((((((((((toString(bG) + "_") + toString(bp)) + "_") + bo) + "_") + toString(aK)) + "_") + bI) + "_") + toBase58String(bE))
424+ let bN = StringEntry(((((((("art_sold_" + toString(bB)) + "_of_") + toString(bu)) + "_") + P) + "_") + bk), bM)
425+ if (bv)
426+ then [bN, bL, bK] :: bH
427+ else bN :: bH
428428 }
429429 }
430430 }
432432
433433
434434 @Callable(aI)
435-func addArtwork (F,D,aC,aD,aE,bN,aF,an,ar,ao,as,ap) = if (!(p))
436- then throw(q)
437- else {
438- let P = toBase58String(aI.transactionId)
439- let bO = lastBlock.timestamp
440- let N = toBase58String(aI.caller.bytes)
441- if (!(K(F)))
442- then throw("Hash should be 64 characters maximum")
443- else {
444- let bP = ay(ap, as)
445- let aA = bP._1
446- let aB = bP._2
447- let bQ = az(N, an, ao, aA, ar, aB, aC, aD, aE, aF)
448- if ((bQ != ""))
449- then throw("Something went wrong!")
450- else {
451- let bR = aH(aI)
452- let aK = bR._1
453- let aL = bR._2
454- if (!(isDefined(aK)))
455- then throw("Something went wrong")
456- else {
457- let bS = x(al(F, N))
458- if ((bS != ""))
459- then throw("You already added it")
460- else {
461- let bT = x(ai(F))
462- if ((bT != ""))
463- then throw("Hash already registered")
464- else {
465- let bU = C(D, N, F)
466- if (!(bU))
467- then throw("Sign Certificate not found for this address.")
468- else [StringEntry(ai(F), N), StringEntry(al(F, N), P), IntegerEntry(O(N, P), bO), StringEntry(Q(N, P), aC), StringEntry(R(N, P), aD), StringEntry(S(N, P), an), StringEntry(U(N, P), ao), StringEntry(T(N, P), ar), StringEntry(Z(N, P), aB), StringEntry(aa(N, P), aA), StringEntry(ac(N, P), bN), StringEntry(ab(N, P), aE), IntegerEntry(V(N, P), aF), StringEntry(W(N, P), D), IntegerEntry(X(N, P), 0), BooleanEntry(Y(N, P), false), StringEntry(aj(N, D), P), StringEntry(ag(N, P), F), ScriptTransfer(Address(fromBase58String(d)), aK, aL)]
469- }
470- }
471- }
472- }
473- }
474- }
435+func addArtwork (F,D,aC,aD,aE,bO,aF,an,ar,ao,as,ap) = {
436+ let bP = bi(aI)
437+ let P = bP._1
438+ let N = bP._2
439+ let bp = bP._3
440+ if (!(K(F)))
441+ then throw("Hash should be 64 characters maximum")
442+ else {
443+ let bQ = ay(ap, as)
444+ let aA = bQ._1
445+ let aB = bQ._2
446+ let bR = az(N, an, ao, aA, ar, aB, aC, aD, aE, aF)
447+ if ((bR != ""))
448+ then throw("Something went wrong!")
449+ else {
450+ let bS = aL(aI)
451+ let aK = bS._1
452+ let aN = bS._2
453+ if (!(isDefined(aK)))
454+ then throw("Something went wrong")
455+ else {
456+ let bT = x(al(F, N))
457+ if ((bT != ""))
458+ then throw("You already added it")
459+ else {
460+ let bU = x(ai(F))
461+ if ((bU != ""))
462+ then throw("Hash already registered")
463+ else {
464+ let bV = C(D, N, F)
465+ if (!(bV))
466+ then throw("Sign Certificate not found for this address.")
467+ else [StringEntry(ai(F), N), StringEntry(al(F, N), P), IntegerEntry(O(N, P), bp), StringEntry(Q(N, P), aC), StringEntry(R(N, P), aD), StringEntry(S(N, P), an), StringEntry(U(N, P), ao), StringEntry(T(N, P), ar), StringEntry(Z(N, P), aB), StringEntry(aa(N, P), aA), StringEntry(ac(N, P), bO), StringEntry(ab(N, P), aE), IntegerEntry(V(N, P), aF), StringEntry(W(N, P), D), IntegerEntry(X(N, P), 0), BooleanEntry(Y(N, P), false), StringEntry(aj(N, D), P), StringEntry(ag(N, P), F), ScriptTransfer(Address(fromBase58String(d)), aK, aN)]
468+ }
469+ }
470+ }
471+ }
472+ }
473+ }
475474
476475
477476
478477 @Callable(aI)
479-func updateArtwork (ah,aC,aD,aE,bN,aF,an,ar,ao,as,ap) = if (!(p))
478+func updateArtwork (ah,aC,aD,aE,bO,aF,an,ar,ao,as,ap) = if (!(p))
480479 then throw(q)
481480 else {
482- let bV = toBase58String(aI.transactionId)
483481 let N = toBase58String(aI.caller.bytes)
484482 let bW = ay(ap, as)
485483 let aA = bW._1
486484 let aB = bW._2
487- let bQ = az(N, an, ao, aA, ar, aB, aC, aD, aE, aF)
488- if ((bQ != ""))
485+ let bR = az(N, an, ao, aA, ar, aB, aC, aD, aE, aF)
486+ if ((bR != ""))
489487 then throw("Something went wrong!")
490488 else {
491- let bS = x(Q(N, ah))
492- if ((bS == ""))
489+ let bT = x(Q(N, ah))
490+ if ((bT == ""))
493491 then throw("Entry not found")
494492 else {
495493 let bX = x(af(N, ah))
496494 if ((bX == "ILLEGAL"))
497495 then throw("Cannot update ILLEGAL artwork")
498- else if (!(aN(N, ah)))
499- then [StringEntry(Q(N, ah), aC), StringEntry(R(N, ah), aD), StringEntry(S(N, ah), an), StringEntry(U(N, ah), ao), StringEntry(T(N, ah), ar), StringEntry(aa(N, ah), aA), StringEntry(Z(N, ah), aB), IntegerEntry(V(N, ah), aF), StringEntry(ab(N, ah), aE), StringEntry(ac(N, ah), bN)]
496+ else if (!(aP(N, ah)))
497+ then [StringEntry(Q(N, ah), aC), StringEntry(R(N, ah), aD), StringEntry(S(N, ah), an), StringEntry(U(N, ah), ao), StringEntry(T(N, ah), ar), StringEntry(aa(N, ah), aA), StringEntry(Z(N, ah), aB), IntegerEntry(V(N, ah), aF), StringEntry(ab(N, ah), aE), StringEntry(ac(N, ah), bO)]
500498 else throw("Already minted")
501499 }
502500 }
506504
507505 @Callable(aI)
508506 func flagArtwork (P,bY,bX) = {
509- let N = toString(addressFromPublicKey(aI.callerPublicKey))
510- let bj = toBase58String(aI.transactionId)
507+ let bZ = bi(aI)
508+ let bo = bZ._1
509+ let N = bZ._2
511510 if (containsElement([j, k, toString(this)], N))
512511 then if ((bX == "CONSENT"))
513512 then [StringEntry(af(bY, P), bX)]
523522
524523 @Callable(aI)
525524 func deleteArtwork (P,bY) = {
526- let N = toString(addressFromPublicKey(aI.callerPublicKey))
527- let bj = toBase58String(aI.transactionId)
528- let aO = if (containsElement([j, k, toString(this)], N))
525+ let ca = bi(aI)
526+ let bo = ca._1
527+ let N = ca._2
528+ let aQ = if (containsElement([j, k, toString(this)], N))
529529 then bY
530530 else N
531- let bS = x(Q(aO, P))
532- if ((bS == ""))
531+ let bT = valueOrErrorMessage(x(Q(aQ, P)), "No art matching for this address")
532+ if ((bT == ""))
533533 then throw("No art matching for this address")
534534 else {
535- let F = x(ag(aO, P))
535+ let F = x(ag(aQ, P))
536536 if ((F == ""))
537537 then throw("No art hash matching for this address")
538538 else {
539- let D = x(W(aO, P))
539+ let D = x(W(aQ, P))
540540 if ((D == ""))
541541 then throw("No SIGN ID matching")
542542 else {
543- let bZ = [DeleteEntry(O(aO, P)), DeleteEntry(Q(aO, P)), DeleteEntry(R(aO, P)), DeleteEntry(S(aO, P)), DeleteEntry(U(aO, P)), DeleteEntry(T(aO, P)), DeleteEntry(Z(aO, P)), DeleteEntry(aa(aO, P)), DeleteEntry(ac(aO, P)), DeleteEntry(ab(aO, P)), DeleteEntry(V(aO, P)), DeleteEntry(W(aO, P)), DeleteEntry(X(aO, P)), DeleteEntry(Y(aO, P)), DeleteEntry(af(bY, P)), DeleteEntry(ad(bY, P)), DeleteEntry(ae(bY, P)), DeleteEntry(ai(F)), DeleteEntry(aj(aO, D)), DeleteEntry(al(F, aO))]
544- if (!(aN(aO, P)))
543+ let cb = [DeleteEntry(O(aQ, P)), DeleteEntry(Q(aQ, P)), DeleteEntry(R(aQ, P)), DeleteEntry(S(aQ, P)), DeleteEntry(U(aQ, P)), DeleteEntry(T(aQ, P)), DeleteEntry(Z(aQ, P)), DeleteEntry(aa(aQ, P)), DeleteEntry(ac(aQ, P)), DeleteEntry(ab(aQ, P)), DeleteEntry(V(aQ, P)), DeleteEntry(W(aQ, P)), DeleteEntry(X(aQ, P)), DeleteEntry(Y(aQ, P)), DeleteEntry(af(bY, P)), DeleteEntry(ad(bY, P)), DeleteEntry(ae(bY, P)), DeleteEntry(ai(F)), DeleteEntry(aj(aQ, D)), DeleteEntry(al(F, aQ))]
544+ if (!(aP(aQ, P)))
545545 then if (!(p))
546546 then throw(q)
547- else bZ
547+ else cb
548548 else if (containsElement([j, toString(this)], N))
549- then bZ
549+ then cb
550550 else throw("Art already minted, you cannot delete it")
551551 }
552552 }
556556
557557
558558 @Callable(aI)
559-func sellArtwork (P,aV,ca,aL) = if (!(p))
560- then throw(q)
561- else {
562- let bj = toBase58String(aI.transactionId)
563- let N = toBase58String(aI.caller.bytes)
564- let cb = lastBlock.timestamp
565- let bl = x(Q(N, P))
566- if ((bl == ""))
567- then throw("This art doesn't match match your account")
568- else {
569- let bn = x(U(N, P))
570- if ((size(split(bn, "/")[0]) != 59))
571- then throw("You cannot sell art with no export file")
572- else {
573- let bo = x(T(N, P))
574- if ((size(bo) != 64))
575- then throw("You cannot sell art with no export hash")
576- else if (!(aT(aL)))
577- then throw("Something went wrong!")
578- else if (!(aU(aL, aV)))
579- then throw("Something went wrong!")
580- else {
581- let aG = aw(N)
582- if ((aG != ""))
583- then throw(aG)
584- else {
585- let bq = z(X(N, P))
586- let bs = z(V(N, P))
587- if ((ca > 10))
588- then throw("10 editions max per artwork")
589- else if (if ((bq != 0))
590- then (bq == bs)
559+func sellArtwork (P,aY,cc,aN) = {
560+ let cd = bi(aI)
561+ let bo = cd._1
562+ let N = cd._2
563+ let br = x(Q(N, P))
564+ if ((br == ""))
565+ then throw("This art doesn't match your account")
566+ else {
567+ let ce = x(U(N, P))
568+ if ((size(split(ce, "/")[0]) != 59))
569+ then throw("You cannot sell art with no export file")
570+ else if (!(aW(aN)))
571+ then throw("Something went wrong!")
572+ else if (!(aX(aN, aY)))
573+ then throw("Something went wrong!")
574+ else {
575+ let aG = aw(N)
576+ if ((aG != ""))
577+ then throw(aG)
578+ else {
579+ let bt = z(X(N, P))
580+ let bu = z(V(N, P))
581+ if ((cc > 10))
582+ then throw("10 editions max per artwork")
583+ else if (if ((bt != 0))
584+ then (bt == bu)
585+ else false)
586+ then throw("Max edition reached.")
587+ else if (if ((bt > 0))
588+ then (bu != cc)
589+ else false)
590+ then throw("Cannot change maximum issuable anymore")
591+ else {
592+ let bF = if (if ((aY > 0))
593+ then (cc > 0)
591594 else false)
592- then throw("Max edition reached.")
593- else if (if ((bq > 0))
594- then (bs != ca)
595- else false)
596- then throw("Cannot change maximum issuable anymore")
597- else {
598- let bE = if (if ((aV > 0))
599- then (ca > 0)
600- else false)
601- then true
602- else false
603-[BooleanEntry(Y(N, P), bE), IntegerEntry(ad(N, P), aV), IntegerEntry(V(N, P), ca), StringEntry(ae(N, P), aL)]
604- }
605- }
606- }
607- }
608- }
609- }
595+ then true
596+ else false
597+[BooleanEntry(Y(N, P), bF), IntegerEntry(ad(N, P), aY), IntegerEntry(V(N, P), cc), StringEntry(ae(N, P), aN)]
598+ }
599+ }
600+ }
601+ }
602+ }
610603
611604
612605
613606 @Callable(aI)
614-func buyArtwork (P,bg) = if (!(p))
615- then throw(q)
616- else bf(aI, P, bg, "", "")
607+func buyArtwork (P,bk) = bj(aI, P, bk, "", "")
617608
618609
619610
620611 @Callable(aI)
621-func setBid (P,bg) = if (!(p))
622- then throw(q)
623- else {
624- let bj = toBase58String(aI.transactionId)
625- let N = toBase58String(aI.caller.bytes)
626- let bO = lastBlock.timestamp
627- if ((size(aI.payments) == 0))
628- then throw("No payment attached")
612+func setBid (P,bk) = {
613+ let cf = bi(aI)
614+ let bo = cf._1
615+ let N = cf._2
616+ let bp = cf._3
617+ let cg = aH(aI)
618+ let aJ = cg._1
619+ let aK = cg._2
620+ let aN = if (!(isDefined(aJ.assetId)))
621+ then "WAVES"
622+ else toBase58String(value(aJ.assetId))
623+ if (!(aW(aN)))
624+ then throw("Something went wrong!")
625+ else if (!(aX(aN, aK)))
626+ then throw("Something went wrong!")
629627 else {
630- let aJ = value(aI.payments[0])
631- let aK = value(aJ.amount)
632- let aL = if (!(isDefined(aJ.assetId)))
633- then "WAVES"
634- else toBase58String(value(aJ.assetId))
635- let bq = z(X(bg, P))
636- let bs = z(V(bg, P))
637- if ((bq >= bs))
628+ let bt = z(X(bk, P))
629+ let bu = z(V(bk, P))
630+ if ((bt >= bu))
638631 then throw("Sold out, you cannot bid")
639- else [StringEntry((((((((("bid_" + P) + "_") + bg) + "_") + N) + "_") + bj) + "_OPEN"), ((((aL + "_") + toString(aK)) + "_") + toString(bO)))]
632+ else [StringEntry((((((((("bid_" + P) + "_") + bk) + "_") + N) + "_") + bo) + "_OPEN"), ((((aN + "_") + toString(aK)) + "_") + toString(bp)))]
640633 }
641- }
634+ }
642635
643636
644637
645638 @Callable(aI)
646-func acceptBid (P,bg,bh,bi) = if (!(p))
647- then throw(q)
648- else {
649- let N = toBase58String(aI.caller.bytes)
650- if ((N != bg))
651- then throw("You cannot do this action")
652- else bf(aI, P, bg, bh, bi)
653- }
639+func acceptBid (P,bk,bl,bm) = {
640+ let N = toBase58String(aI.caller.bytes)
641+ if ((N != bk))
642+ then throw("You cannot do this action")
643+ else bj(aI, P, bk, bl, bm)
644+ }
654645
655646
656647
657648 @Callable(aI)
658-func cancelBid (P,bg,bh,bi) = {
659- let bj = toBase58String(aI.transactionId)
660- let N = toBase58String(aI.caller.bytes)
661- let cc = toString(lastBlock.timestamp)
662- if ((N != bi))
649+func cancelBid (P,bk,bl,bm) = {
650+ let ch = bi(aI)
651+ let bo = ch._1
652+ let N = ch._2
653+ let bp = ch._3
654+ if ((N != bm))
663655 then throw("You cannot do this action")
664656 else {
665- let ba = ((((((("bid_" + P) + "_") + bg) + "_") + bi) + "_") + bh)
666- let bb = x((ba + "_OPEN"))
667- if ((bb == ""))
657+ let bd = ((((((("bid_" + P) + "_") + bk) + "_") + bm) + "_") + bl)
658+ let be = x((bd + "_OPEN"))
659+ if ((be == ""))
668660 then throw("Bid not found")
669661 else {
670- let bc = split(bb, "_")
671- let aL = if ((bc[0] == "WAVES"))
662+ let bf = split(be, "_")
663+ let aN = if ((bf[0] == "WAVES"))
672664 then unit
673- else fromBase58String(bc[0])
674-[DeleteEntry((ba + "_OPEN")), StringEntry((ba + "_CANCELED"), ((bb + "_") + cc)), ScriptTransfer(Address(fromBase58String(N)), parseIntValue(bc[1]), aL)]
665+ else fromBase58String(bf[0])
666+[DeleteEntry((bd + "_OPEN")), StringEntry((bd + "_CANCELED"), ((be + "_") + toString(bp))), ScriptTransfer(Address(fromBase58String(N)), parseIntValue(bf[1]), aN)]
675667 }
676668 }
677669 }
678670
679671
680672
681-@Callable(cd)
682-func deleteEntry (ce) = {
683- let N = toString(addressFromPublicKey(cd.callerPublicKey))
673+@Callable(aI)
674+func deleteEntry (ci) = {
675+ let N = toString(addressFromPublicKey(aI.callerPublicKey))
684676 if ((N == j))
685- then [DeleteEntry(ce)]
677+ then [DeleteEntry(ci)]
686678 else throw("no")
687679 }
688680
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 4 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = false
55
66 let b = value(addressFromString("3N2s5RtaHPBenCsx2ECcoFRbYHx3noZhXW1"))
77
88 let c = value(addressFromString("3NC28hSivrmsTUXaYD1x6L362J4ZpUnoTdB"))
99
1010 let d = "3N1E6tXddRoVaRfQ9dQ3vg5LaW2fsd8HKub"
1111
1212 let e = if (a)
1313 then value(addressFromString("3Mt4RGMEyjSWYAocTPqd55wdHQQB3PU2UCm"))
1414 else value(addressFromString("3MwDZagoYEiNfQLc31cGpYoaE54MGMwoFrZ"))
1515
1616 let f = value(addressFromString("3N6BaV1dCB4zg43goNNHaCtvR13BcyJ5Gsq"))
1717
1818 let g = base58'Gf9t8FA4H3ssoZPCwrg3KwUFCci8zuUFP9ssRsUY3s6a'
1919
2020 let h = base58'25FEqEjRkqK6yCkiT7Lz6SAYz7gUFCtxfCChnrVFD5AT'
2121
2222 let i = base58''
2323
2424 let j = "3MsG6jPNCrVJUtYB7XJBxS7utWsXAf4n9Vp"
2525
2626 let k = "3Mzm4VLwsN9uZwbTMzPj3XuxV6kEfAR8UDN"
2727
2828 let l = 7
2929
3030 let m = 10
3131
3232 let n = "bafybeifuyo4pqu54ismqgtb6e4h6kkvgx7zg4u3zibh2r7y6mb64i7bzza/licence.pdf"
3333
3434 let o = "a87758c354e30a9e78fb84fa3a0010a5090ab20df0be11ad45b5720cc187e639"
3535
3636 let p = valueOrElse(getBoolean(e, "conf_dapp_is_running"), true)
3737
3838 let q = valueOrElse(getString(e, "conf_maintenance_msg"), "")
3939
4040 let r = "SUSPENDED"
4141
4242 let s = "REMOVED"
4343
4444 let t = "UNREGISTERED"
4545
4646 let u = "ALLOWED"
4747
4848 func v (w) = valueOrElse(getString(e, w), "")
4949
5050
5151 func x (w) = valueOrElse(getString(this, w), "")
5252
5353
5454 func y (w) = valueOrErrorMessage(getInteger(b, w), "Integer undefine or 0 in oracle")
5555
5656
5757 func z (w) = valueOrElse(getInteger(this, w), 0)
5858
5959
6060 func A (w) = valueOrElse(getInteger(f, w), 0)
6161
6262
6363 func B (w) = valueOrElse(getBoolean(this, w), false)
6464
6565
6666 func C (D,E,F) = {
6767 let G = getString(c, ((("data_fc_" + D) + "_") + E))
6868 if ($isInstanceOf(G, "String"))
6969 then {
7070 let H = G
7171 if (contains(H, F))
7272 then true
7373 else false
7474 }
7575 else false
7676 }
7777
7878
7979 func I (J) = if (contains(J, "/"))
8080 then if (if ((76 > size(J)))
8181 then (size(split(J, "/")[0]) == 59)
8282 else false)
8383 then (16 > size(split(J, "/")[1]))
8484 else false
8585 else false
8686
8787
8888 func K (L) = (size(L) == 64)
8989
9090
9191 func M (N) = ("user_status_" + N)
9292
9393
9494 func O (N,P) = ((("art_date_" + P) + "_") + N)
9595
9696
9797 func Q (N,P) = ((("art_name_" + P) + "_") + N)
9898
9999
100100 func R (N,P) = ((("art_desc_" + P) + "_") + N)
101101
102102
103103 func S (N,P) = ((("art_display_cid_" + P) + "_") + N)
104104
105105
106106 func T (N,P) = ((("art_export_hash_" + P) + "_") + N)
107107
108108
109109 func U (N,P) = ((("art_export_cid_" + P) + "_") + N)
110110
111111
112112 func V (N,P) = ((("art_maxmint_" + P) + "_") + N)
113113
114114
115115 func W (N,P) = ((("art_signid_" + P) + "_") + N)
116116
117117
118118 func X (N,P) = ((("art_issued_" + P) + "_") + N)
119119
120120
121121 func Y (N,P) = ((("art_onsale_" + P) + "_") + N)
122122
123123
124124 func Z (N,P) = ((("art_licence_hash_" + P) + "_") + N)
125125
126126
127127 func aa (N,P) = ((("art_licence_cid_" + P) + "_") + N)
128128
129129
130130 func ab (N,P) = ((("art_tags_" + P) + "_") + N)
131131
132132
133133 func ac (N,P) = ((("art_type_" + P) + "_") + N)
134134
135135
136136 func ad (N,P) = ((("art_price_" + P) + "_") + N)
137137
138138
139139 func ae (N,P) = ((("art_assetAccepted_" + P) + "_") + N)
140140
141141
142142 func af (N,P) = ((("art_flag_" + P) + "_") + N)
143143
144144
145145 func ag (N,ah) = ((("get_hashbytxidaddr_" + ah) + "_") + N)
146146
147147
148148 func ai (F) = ("get_owner_by_hash_" + F)
149149
150150
151151 func aj (N,ak) = ((("get_artidbysignid_" + ak) + "_") + N)
152152
153153
154154 func al (F,N) = ("get_txid_by_hash_owner_" + toBase58String(sha256_16Kb(toBytes((F + N)))))
155155
156156
157157 func am (an,ao,ap) = if (!(I(an)))
158158 then throw("Wrong Display CID")
159159 else if (!(I(ao)))
160160 then throw("Wrong Export CID")
161161 else if (if ((ap != ""))
162162 then !(I(ap))
163163 else false)
164164 then throw("Wrong Licence CID")
165165 else true
166166
167167
168168 func aq (ar,as) = if (!(K(ar)))
169169 then throw("Export Hash 64 char. max")
170170 else if (!(K(as)))
171171 then throw("Licence Hash 64 char. max")
172172 else true
173173
174174
175175 func at (au,av) = if ((size(au) == 0))
176176 then throw("Field cannot be is empty")
177177 else if ((size(au) > av))
178178 then throw((au + " is too long"))
179179 else true
180180
181181
182182 func aw (N) = {
183183 let ax = valueOrElse(getString(e, M(N)), t)
184184 if (if ((ax == t))
185185 then true
186186 else (ax == u))
187187 then "Register this account first with \"Account\" tab"
188188 else if ((ax == r))
189189 then "Account suspended"
190190 else if ((ax == s))
191191 then "Account removed"
192192 else ""
193193 }
194194
195195
196196 func ay (ap,as) = {
197197 let J = if ((size(ap) == 0))
198198 then n
199199 else ap
200200 let L = if ((size(as) == 0))
201201 then o
202202 else as
203203 $Tuple2(J, L)
204204 }
205205
206206
207207 func az (N,an,ao,aA,ar,aB,aC,aD,aE,aF) = {
208208 let aG = aw(N)
209209 if ((aG != ""))
210210 then throw(aG)
211211 else if ((size(an) == 0))
212212 then throw("Display CID cannot be empty")
213213 else if (!(am(an, ao, aA)))
214214 then throw("Problem with CID")
215215 else if (!(aq(ar, aB)))
216216 then throw("Problem with Hashes")
217217 else if (!(at(aC, 100)))
218218 then throw("100 Char. max name")
219219 else if (!(at(aD, 1000)))
220220 then throw("1000 Char. max description")
221221 else if ((size(split(aE, ",")) > 5))
222222 then throw("5 tags max.")
223223 else if ((aF > 10))
224224 then throw("10 editions max per artwork")
225225 else ""
226226 }
227227
228228
229229 func aH (aI) = if ((size(aI.payments) == 0))
230230 then throw("No payment attached")
231231 else {
232232 let aJ = value(aI.payments[0])
233233 let aK = value(aJ.amount)
234- let aL = if (if (isDefined(aJ.assetId))
235- then (aJ.assetId == g)
236- else false)
237- then aJ.assetId
238- else throw("Only SIGN token accepted as transaction fee")
239- let aM = y(("certification_fee_" + toBase58String(g)))
240- if ((aK != aM))
241- then throw(("Payment amount should be " + toString(aM)))
242- else $Tuple2(aK, aL)
234+ $Tuple2(aJ, aK)
243235 }
244236
245237
246-func aN (aO,P) = {
247- let G = getInteger(this, X(aO, P))
238+func aL (aI) = {
239+ let aM = aH(aI)
240+ let aJ = aM._1
241+ let aK = aM._2
242+ let aN = if (if (isDefined(aJ.assetId))
243+ then (aJ.assetId == g)
244+ else false)
245+ then aJ.assetId
246+ else throw("Only SIGN token accepted as transaction fee")
247+ let aO = y(("certification_fee_" + toBase58String(g)))
248+ if ((aK != aO))
249+ then throw(("Payment amount should be " + toString(aO)))
250+ else $Tuple2(aK, aN)
251+ }
252+
253+
254+func aP (aQ,P) = {
255+ let G = getInteger(this, X(aQ, P))
248256 if ($isInstanceOf(G, "Int"))
249257 then {
250- let aP = G
251- if ((aP != 0))
258+ let aR = G
259+ if ((aR != 0))
252260 then true
253261 else false
254262 }
255263 else false
256264 }
257265
258266
259-func aQ (aI,aR,aS) = {
260- let aJ = value(aI.payments[0])
261- let aK = value(aJ.amount)
262- let aL = if (!(isDefined(aJ.assetId)))
267+func aS (aI,aT,aU) = {
268+ let aV = aH(aI)
269+ let aJ = aV._1
270+ let aK = aV._2
271+ let aN = if (!(isDefined(aJ.assetId)))
263272 then unit
264- else if (if ((size(aR) > 0))
265- then (toBase58String(value(aJ.assetId)) == aR)
273+ else if (if ((size(aT) > 0))
274+ then (toBase58String(value(aJ.assetId)) == aT)
266275 else false)
267276 then aJ.assetId
268277 else throw("Wrong asset id")
269- if (if ((aL == unit))
270- then (aR != "")
278+ if (if ((aN == unit))
279+ then (aT != "")
271280 else false)
272281 then throw("Wrong asset id")
273- else if ((aS != aK))
282+ else if ((aU != aK))
274283 then throw("Payment don't match")
275- else $Tuple2(aK, aL)
284+ else $Tuple2(aK, aN)
276285 }
277286
278287
279-func aT (aL) = if (if (if ((aL != toBase58String(g)))
280- then (aL != toBase58String(i))
288+func aW (aN) = if (if (if ((aN != toBase58String(g)))
289+ then (aN != toBase58String(i))
281290 else false)
282- then (aL != toBase58String(h))
291+ then (aN != toBase58String(h))
283292 else false)
284293 then throw("Only SIGN, USDN or WAVES accepted")
285294 else true
286295
287296
288-func aU (aL,aV) = {
289- let aW = if (a)
297+func aX (aN,aY) = {
298+ let aZ = if (a)
290299 then 1
291300 else y("waves_min_sell")
292- let aX = 1000000
293- let aY = if (a)
301+ let ba = 1000000
302+ let bb = if (a)
294303 then 1
295304 else (y(("certification_fee_" + toBase58String(g))) * 2)
296- if (if (if (if (if ((aL == toBase58String(h)))
297- then (aX > aV)
305+ if (if (if (if (if ((aN == toBase58String(h)))
306+ then (ba > aY)
298307 else false)
299- then (aV != 0)
308+ then (aY != 0)
300309 else false)
301310 then true
302- else if (if ((aL == toBase58String(g)))
303- then (aY > aV)
311+ else if (if ((aN == toBase58String(g)))
312+ then (bb > aY)
304313 else false)
305- then (aV != 0)
314+ then (aY != 0)
306315 else false)
307316 then true
308- else if (if ((aL == toBase58String(i)))
309- then (aW > aV)
317+ else if (if ((aN == toBase58String(i)))
318+ then (aZ > aY)
310319 else false)
311- then (aV != 0)
320+ then (aY != 0)
312321 else false)
313322 then throw("Wrong minimum sell price")
314323 else true
315324 }
316325
317326
318-func aZ (ba) = {
319- let bb = x((ba + "_OPEN"))
320- if ((bb == ""))
327+func bc (bd) = {
328+ let be = x((bd + "_OPEN"))
329+ if ((be == ""))
321330 then throw("Bid not found")
322331 else {
323- let bc = split(bb, "_")
324- let bd = parseIntValue(bc[1])
325- let be = if ((bc[0] == "WAVES"))
332+ let bf = split(be, "_")
333+ let bg = parseIntValue(bf[1])
334+ let bh = if ((bf[0] == "WAVES"))
326335 then unit
327- else fromBase58String(bc[0])
328- if ((0 >= bd))
336+ else fromBase58String(bf[0])
337+ if ((0 >= bg))
329338 then throw("Wrong amount")
330- else $Tuple2(bd, be)
339+ else $Tuple2(bg, bh)
331340 }
332341 }
333342
334343
335-func bf (aI,P,bg,bh,bi) = {
336- let bj = toBase58String(aI.transactionId)
337- let N = toBase58String(aI.caller.bytes)
338- let bk = z("total_nft_issued")
339- let D = x(W(bg, P))
340- let bl = x(Q(bg, P))
341- if ((bl == ""))
344+func bi (aI) = if (!(p))
345+ then throw(q)
346+ else $Tuple3(toBase58String(aI.transactionId), toBase58String(aI.caller.bytes), lastBlock.timestamp)
347+
348+
349+func bj (aI,P,bk,bl,bm) = {
350+ let bn = bi(aI)
351+ let bo = bn._1
352+ let N = bn._2
353+ let bp = bn._3
354+ let bq = z("total_nft_issued")
355+ let D = x(W(bk, P))
356+ let br = x(Q(bk, P))
357+ if ((br == ""))
342358 then throw("Art doesn't exist")
343359 else {
344- let bm = x(S(bg, P))
345- let bn = x(U(bg, P))
346- let bo = x(T(bg, P))
347- let aA = x(aa(bg, P))
348- let aB = x(Z(bg, P))
349- let aD = take(x(R(bg, P)), 50)
350- let bp = B(Y(bg, P))
351- let bq = z(X(bg, P))
352- let aS = z(ad(bg, P))
353- let aR = x(ae(bg, P))
354- let br = x(ag(bg, P))
355- let bs = z(V(bg, P))
356- let bt = if (if (if ((N == bg))
357- then (bi != "")
360+ let bs = B(Y(bk, P))
361+ let bt = z(X(bk, P))
362+ let aU = z(ad(bk, P))
363+ let aT = x(ae(bk, P))
364+ let bu = z(V(bk, P))
365+ let bv = if (if (if ((N == bk))
366+ then (bm != "")
358367 else false)
359- then (bh != "")
368+ then (bl != "")
360369 else false)
361370 then true
362371 else false
363- let ba = ((((((("bid_" + P) + "_") + bg) + "_") + bi) + "_") + bh)
364- if (if (if ((0 >= aS))
372+ let bd = ((((((("bid_" + P) + "_") + bk) + "_") + bm) + "_") + bl)
373+ if (if (if ((0 >= aU))
365374 then true
366- else !(bp))
375+ else !(bs))
367376 then true
368- else (0 >= bs))
377+ else (0 >= bu))
369378 then throw("Art not for sale")
370379 else {
371- let bu = if (bt)
372- then aZ(ba)
373- else aQ(aI, aR, aS)
374- let aK = bu._1
375- let aL = bu._2
376- let bv = A(bg)
377- let bw = if ((bv > height))
380+ let bw = if (bv)
381+ then bc(bd)
382+ else aS(aI, aT, aU)
383+ let aK = bw._1
384+ let aN = bw._2
385+ let bx = A(bk)
386+ let by = if ((bx > height))
378387 then 0
379- else if ((aR == toBase58String(g)))
388+ else if ((aT == toBase58String(g)))
380389 then l
381390 else m
382- let bx = fraction(aK, bw, 100)
383- let by = (aK - bx)
384- if ((bq == bs))
391+ let bz = fraction(aK, by, 100)
392+ let bA = (aK - bz)
393+ if ((bt == bu))
385394 then throw("Art sold out")
386395 else {
387- let bz = (bq + 1)
388- let bA = toString(lastBlock.timestamp)
389- let bB = ((((((((((((((((((((((((((("Creator: " + bg) + ",
396+ let bB = (bt + 1)
397+ let bC = ((((((((((("Creator: " + bk) + ",
390398 ArtID: ") + P) + ",
391399 SignID: ") + D) + ",
392- Artwork name: ") + bl) + ",
393- Artwork description: ") + aD) + ",
394- Issue: ") + toString(bz)) + "/") + toString(bs)) + ",
395- Max issuable: ") + toString(bs)) + ",
396- Source hash: ") + br) + ",
397- Display cid: ") + bm) + ",
398- Export cid: ") + bn) + ",
399- Export hash: ") + bo) + ",
400- Licence cid: ") + aA) + ",
401- Licence hash: ") + aB)
402- let bC = Issue(("SA_" + toString((bk + 1))), bB, 1, 0, false)
403- let bD = calculateAssetId(bC)
404- let bE = if ((bz == bs))
400+ Artwork name: ") + br) + ",
401+ Issue: ") + toString(bB)) + "/") + toString(bu))
402+ let bD = Issue(("SA_" + toString((bq + 1))), bC, 1, 0, false)
403+ let bE = calculateAssetId(bD)
404+ let bF = if ((bB == bu))
405405 then false
406406 else true
407- let bF = if (if (if ((N == bg))
408- then (bi != "")
407+ let bG = if (if (if ((N == bk))
408+ then (bm != "")
409409 else false)
410- then (bh != "")
410+ then (bl != "")
411411 else false)
412- then addressFromStringValue(bi)
412+ then addressFromStringValue(bm)
413413 else aI.caller
414- let bG = [IntegerEntry(X(bg, P), bz), StringEntry(("nft_" + toBase58String(bD)), ((((((("art_sold_" + toString(bz)) + "_of_") + toString(bs)) + "_") + P) + "_") + bg)), IntegerEntry("total_nft_issued", (bk + 1)), BooleanEntry(Y(bg, P), bE), bC, ScriptTransfer(Address(fromBase58String(bg)), by, aL), ScriptTransfer(Address(fromBase58String(d)), bx, aL), ScriptTransfer(bF, 1, bD)]
415- let bH = if (!(isDefined(aL)))
414+ let bH = [IntegerEntry(X(bk, P), bB), StringEntry(("nft_" + toBase58String(bE)), ((((((("art_sold_" + toString(bB)) + "_of_") + toString(bu)) + "_") + P) + "_") + bk)), IntegerEntry("total_nft_issued", (bq + 1)), BooleanEntry(Y(bk, P), bF), bD, ScriptTransfer(Address(fromBase58String(bk)), bA, aN), ScriptTransfer(Address(fromBase58String(d)), bz, aN), ScriptTransfer(bG, 1, bE)]
415+ let bI = if (!(isDefined(aN)))
416416 then "WAVES"
417- else toBase58String(value(aL))
418- let bI = x((ba + "_OPEN"))
419- let bJ = DeleteEntry((ba + "_OPEN"))
420- let bK = StringEntry((ba + "_CLOSED"), ((bI + "_") + bA))
421- let bL = if (!(bt))
422- then ((((((((((N + "_") + bA) + "_") + bj) + "_") + toString(aS)) + "_") + aR) + "_") + toBase58String(bD))
423- else ((((((((((toString(bF) + "_") + bA) + "_") + bj) + "_") + toString(aK)) + "_") + bH) + "_") + toBase58String(bD))
424- let bM = StringEntry(((((((("art_sold_" + toString(bz)) + "_of_") + toString(bs)) + "_") + P) + "_") + bg), bL)
425- if (bt)
426- then [bM, bK, bJ] :: bG
427- else bM :: bG
417+ else toBase58String(value(aN))
418+ let bJ = x((bd + "_OPEN"))
419+ let bK = DeleteEntry((bd + "_OPEN"))
420+ let bL = StringEntry((bd + "_CLOSED"), ((bJ + "_") + toString(bp)))
421+ let bM = if (!(bv))
422+ then ((((((((((N + "_") + toString(bp)) + "_") + bo) + "_") + toString(aU)) + "_") + aT) + "_") + toBase58String(bE))
423+ else ((((((((((toString(bG) + "_") + toString(bp)) + "_") + bo) + "_") + toString(aK)) + "_") + bI) + "_") + toBase58String(bE))
424+ let bN = StringEntry(((((((("art_sold_" + toString(bB)) + "_of_") + toString(bu)) + "_") + P) + "_") + bk), bM)
425+ if (bv)
426+ then [bN, bL, bK] :: bH
427+ else bN :: bH
428428 }
429429 }
430430 }
431431 }
432432
433433
434434 @Callable(aI)
435-func addArtwork (F,D,aC,aD,aE,bN,aF,an,ar,ao,as,ap) = if (!(p))
436- then throw(q)
437- else {
438- let P = toBase58String(aI.transactionId)
439- let bO = lastBlock.timestamp
440- let N = toBase58String(aI.caller.bytes)
441- if (!(K(F)))
442- then throw("Hash should be 64 characters maximum")
443- else {
444- let bP = ay(ap, as)
445- let aA = bP._1
446- let aB = bP._2
447- let bQ = az(N, an, ao, aA, ar, aB, aC, aD, aE, aF)
448- if ((bQ != ""))
449- then throw("Something went wrong!")
450- else {
451- let bR = aH(aI)
452- let aK = bR._1
453- let aL = bR._2
454- if (!(isDefined(aK)))
455- then throw("Something went wrong")
456- else {
457- let bS = x(al(F, N))
458- if ((bS != ""))
459- then throw("You already added it")
460- else {
461- let bT = x(ai(F))
462- if ((bT != ""))
463- then throw("Hash already registered")
464- else {
465- let bU = C(D, N, F)
466- if (!(bU))
467- then throw("Sign Certificate not found for this address.")
468- else [StringEntry(ai(F), N), StringEntry(al(F, N), P), IntegerEntry(O(N, P), bO), StringEntry(Q(N, P), aC), StringEntry(R(N, P), aD), StringEntry(S(N, P), an), StringEntry(U(N, P), ao), StringEntry(T(N, P), ar), StringEntry(Z(N, P), aB), StringEntry(aa(N, P), aA), StringEntry(ac(N, P), bN), StringEntry(ab(N, P), aE), IntegerEntry(V(N, P), aF), StringEntry(W(N, P), D), IntegerEntry(X(N, P), 0), BooleanEntry(Y(N, P), false), StringEntry(aj(N, D), P), StringEntry(ag(N, P), F), ScriptTransfer(Address(fromBase58String(d)), aK, aL)]
469- }
470- }
471- }
472- }
473- }
474- }
435+func addArtwork (F,D,aC,aD,aE,bO,aF,an,ar,ao,as,ap) = {
436+ let bP = bi(aI)
437+ let P = bP._1
438+ let N = bP._2
439+ let bp = bP._3
440+ if (!(K(F)))
441+ then throw("Hash should be 64 characters maximum")
442+ else {
443+ let bQ = ay(ap, as)
444+ let aA = bQ._1
445+ let aB = bQ._2
446+ let bR = az(N, an, ao, aA, ar, aB, aC, aD, aE, aF)
447+ if ((bR != ""))
448+ then throw("Something went wrong!")
449+ else {
450+ let bS = aL(aI)
451+ let aK = bS._1
452+ let aN = bS._2
453+ if (!(isDefined(aK)))
454+ then throw("Something went wrong")
455+ else {
456+ let bT = x(al(F, N))
457+ if ((bT != ""))
458+ then throw("You already added it")
459+ else {
460+ let bU = x(ai(F))
461+ if ((bU != ""))
462+ then throw("Hash already registered")
463+ else {
464+ let bV = C(D, N, F)
465+ if (!(bV))
466+ then throw("Sign Certificate not found for this address.")
467+ else [StringEntry(ai(F), N), StringEntry(al(F, N), P), IntegerEntry(O(N, P), bp), StringEntry(Q(N, P), aC), StringEntry(R(N, P), aD), StringEntry(S(N, P), an), StringEntry(U(N, P), ao), StringEntry(T(N, P), ar), StringEntry(Z(N, P), aB), StringEntry(aa(N, P), aA), StringEntry(ac(N, P), bO), StringEntry(ab(N, P), aE), IntegerEntry(V(N, P), aF), StringEntry(W(N, P), D), IntegerEntry(X(N, P), 0), BooleanEntry(Y(N, P), false), StringEntry(aj(N, D), P), StringEntry(ag(N, P), F), ScriptTransfer(Address(fromBase58String(d)), aK, aN)]
468+ }
469+ }
470+ }
471+ }
472+ }
473+ }
475474
476475
477476
478477 @Callable(aI)
479-func updateArtwork (ah,aC,aD,aE,bN,aF,an,ar,ao,as,ap) = if (!(p))
478+func updateArtwork (ah,aC,aD,aE,bO,aF,an,ar,ao,as,ap) = if (!(p))
480479 then throw(q)
481480 else {
482- let bV = toBase58String(aI.transactionId)
483481 let N = toBase58String(aI.caller.bytes)
484482 let bW = ay(ap, as)
485483 let aA = bW._1
486484 let aB = bW._2
487- let bQ = az(N, an, ao, aA, ar, aB, aC, aD, aE, aF)
488- if ((bQ != ""))
485+ let bR = az(N, an, ao, aA, ar, aB, aC, aD, aE, aF)
486+ if ((bR != ""))
489487 then throw("Something went wrong!")
490488 else {
491- let bS = x(Q(N, ah))
492- if ((bS == ""))
489+ let bT = x(Q(N, ah))
490+ if ((bT == ""))
493491 then throw("Entry not found")
494492 else {
495493 let bX = x(af(N, ah))
496494 if ((bX == "ILLEGAL"))
497495 then throw("Cannot update ILLEGAL artwork")
498- else if (!(aN(N, ah)))
499- then [StringEntry(Q(N, ah), aC), StringEntry(R(N, ah), aD), StringEntry(S(N, ah), an), StringEntry(U(N, ah), ao), StringEntry(T(N, ah), ar), StringEntry(aa(N, ah), aA), StringEntry(Z(N, ah), aB), IntegerEntry(V(N, ah), aF), StringEntry(ab(N, ah), aE), StringEntry(ac(N, ah), bN)]
496+ else if (!(aP(N, ah)))
497+ then [StringEntry(Q(N, ah), aC), StringEntry(R(N, ah), aD), StringEntry(S(N, ah), an), StringEntry(U(N, ah), ao), StringEntry(T(N, ah), ar), StringEntry(aa(N, ah), aA), StringEntry(Z(N, ah), aB), IntegerEntry(V(N, ah), aF), StringEntry(ab(N, ah), aE), StringEntry(ac(N, ah), bO)]
500498 else throw("Already minted")
501499 }
502500 }
503501 }
504502
505503
506504
507505 @Callable(aI)
508506 func flagArtwork (P,bY,bX) = {
509- let N = toString(addressFromPublicKey(aI.callerPublicKey))
510- let bj = toBase58String(aI.transactionId)
507+ let bZ = bi(aI)
508+ let bo = bZ._1
509+ let N = bZ._2
511510 if (containsElement([j, k, toString(this)], N))
512511 then if ((bX == "CONSENT"))
513512 then [StringEntry(af(bY, P), bX)]
514513 else if ((bX == ""))
515514 then [StringEntry(af(bY, P), bX)]
516515 else if ((bX == "ILLEGAL"))
517516 then [StringEntry(af(bY, P), bX), StringEntry(Q(bY, P), "ILLEGAL CONTENT"), StringEntry(R(bY, P), "ILLEGAL CONTENT"), StringEntry(S(bY, P), ""), StringEntry(U(bY, P), ""), StringEntry(aa(bY, P), "")]
518517 else throw(("Unknow status " + bX))
519518 else throw("You are not allowed")
520519 }
521520
522521
523522
524523 @Callable(aI)
525524 func deleteArtwork (P,bY) = {
526- let N = toString(addressFromPublicKey(aI.callerPublicKey))
527- let bj = toBase58String(aI.transactionId)
528- let aO = if (containsElement([j, k, toString(this)], N))
525+ let ca = bi(aI)
526+ let bo = ca._1
527+ let N = ca._2
528+ let aQ = if (containsElement([j, k, toString(this)], N))
529529 then bY
530530 else N
531- let bS = x(Q(aO, P))
532- if ((bS == ""))
531+ let bT = valueOrErrorMessage(x(Q(aQ, P)), "No art matching for this address")
532+ if ((bT == ""))
533533 then throw("No art matching for this address")
534534 else {
535- let F = x(ag(aO, P))
535+ let F = x(ag(aQ, P))
536536 if ((F == ""))
537537 then throw("No art hash matching for this address")
538538 else {
539- let D = x(W(aO, P))
539+ let D = x(W(aQ, P))
540540 if ((D == ""))
541541 then throw("No SIGN ID matching")
542542 else {
543- let bZ = [DeleteEntry(O(aO, P)), DeleteEntry(Q(aO, P)), DeleteEntry(R(aO, P)), DeleteEntry(S(aO, P)), DeleteEntry(U(aO, P)), DeleteEntry(T(aO, P)), DeleteEntry(Z(aO, P)), DeleteEntry(aa(aO, P)), DeleteEntry(ac(aO, P)), DeleteEntry(ab(aO, P)), DeleteEntry(V(aO, P)), DeleteEntry(W(aO, P)), DeleteEntry(X(aO, P)), DeleteEntry(Y(aO, P)), DeleteEntry(af(bY, P)), DeleteEntry(ad(bY, P)), DeleteEntry(ae(bY, P)), DeleteEntry(ai(F)), DeleteEntry(aj(aO, D)), DeleteEntry(al(F, aO))]
544- if (!(aN(aO, P)))
543+ let cb = [DeleteEntry(O(aQ, P)), DeleteEntry(Q(aQ, P)), DeleteEntry(R(aQ, P)), DeleteEntry(S(aQ, P)), DeleteEntry(U(aQ, P)), DeleteEntry(T(aQ, P)), DeleteEntry(Z(aQ, P)), DeleteEntry(aa(aQ, P)), DeleteEntry(ac(aQ, P)), DeleteEntry(ab(aQ, P)), DeleteEntry(V(aQ, P)), DeleteEntry(W(aQ, P)), DeleteEntry(X(aQ, P)), DeleteEntry(Y(aQ, P)), DeleteEntry(af(bY, P)), DeleteEntry(ad(bY, P)), DeleteEntry(ae(bY, P)), DeleteEntry(ai(F)), DeleteEntry(aj(aQ, D)), DeleteEntry(al(F, aQ))]
544+ if (!(aP(aQ, P)))
545545 then if (!(p))
546546 then throw(q)
547- else bZ
547+ else cb
548548 else if (containsElement([j, toString(this)], N))
549- then bZ
549+ then cb
550550 else throw("Art already minted, you cannot delete it")
551551 }
552552 }
553553 }
554554 }
555555
556556
557557
558558 @Callable(aI)
559-func sellArtwork (P,aV,ca,aL) = if (!(p))
560- then throw(q)
561- else {
562- let bj = toBase58String(aI.transactionId)
563- let N = toBase58String(aI.caller.bytes)
564- let cb = lastBlock.timestamp
565- let bl = x(Q(N, P))
566- if ((bl == ""))
567- then throw("This art doesn't match match your account")
568- else {
569- let bn = x(U(N, P))
570- if ((size(split(bn, "/")[0]) != 59))
571- then throw("You cannot sell art with no export file")
572- else {
573- let bo = x(T(N, P))
574- if ((size(bo) != 64))
575- then throw("You cannot sell art with no export hash")
576- else if (!(aT(aL)))
577- then throw("Something went wrong!")
578- else if (!(aU(aL, aV)))
579- then throw("Something went wrong!")
580- else {
581- let aG = aw(N)
582- if ((aG != ""))
583- then throw(aG)
584- else {
585- let bq = z(X(N, P))
586- let bs = z(V(N, P))
587- if ((ca > 10))
588- then throw("10 editions max per artwork")
589- else if (if ((bq != 0))
590- then (bq == bs)
559+func sellArtwork (P,aY,cc,aN) = {
560+ let cd = bi(aI)
561+ let bo = cd._1
562+ let N = cd._2
563+ let br = x(Q(N, P))
564+ if ((br == ""))
565+ then throw("This art doesn't match your account")
566+ else {
567+ let ce = x(U(N, P))
568+ if ((size(split(ce, "/")[0]) != 59))
569+ then throw("You cannot sell art with no export file")
570+ else if (!(aW(aN)))
571+ then throw("Something went wrong!")
572+ else if (!(aX(aN, aY)))
573+ then throw("Something went wrong!")
574+ else {
575+ let aG = aw(N)
576+ if ((aG != ""))
577+ then throw(aG)
578+ else {
579+ let bt = z(X(N, P))
580+ let bu = z(V(N, P))
581+ if ((cc > 10))
582+ then throw("10 editions max per artwork")
583+ else if (if ((bt != 0))
584+ then (bt == bu)
585+ else false)
586+ then throw("Max edition reached.")
587+ else if (if ((bt > 0))
588+ then (bu != cc)
589+ else false)
590+ then throw("Cannot change maximum issuable anymore")
591+ else {
592+ let bF = if (if ((aY > 0))
593+ then (cc > 0)
591594 else false)
592- then throw("Max edition reached.")
593- else if (if ((bq > 0))
594- then (bs != ca)
595- else false)
596- then throw("Cannot change maximum issuable anymore")
597- else {
598- let bE = if (if ((aV > 0))
599- then (ca > 0)
600- else false)
601- then true
602- else false
603-[BooleanEntry(Y(N, P), bE), IntegerEntry(ad(N, P), aV), IntegerEntry(V(N, P), ca), StringEntry(ae(N, P), aL)]
604- }
605- }
606- }
607- }
608- }
609- }
595+ then true
596+ else false
597+[BooleanEntry(Y(N, P), bF), IntegerEntry(ad(N, P), aY), IntegerEntry(V(N, P), cc), StringEntry(ae(N, P), aN)]
598+ }
599+ }
600+ }
601+ }
602+ }
610603
611604
612605
613606 @Callable(aI)
614-func buyArtwork (P,bg) = if (!(p))
615- then throw(q)
616- else bf(aI, P, bg, "", "")
607+func buyArtwork (P,bk) = bj(aI, P, bk, "", "")
617608
618609
619610
620611 @Callable(aI)
621-func setBid (P,bg) = if (!(p))
622- then throw(q)
623- else {
624- let bj = toBase58String(aI.transactionId)
625- let N = toBase58String(aI.caller.bytes)
626- let bO = lastBlock.timestamp
627- if ((size(aI.payments) == 0))
628- then throw("No payment attached")
612+func setBid (P,bk) = {
613+ let cf = bi(aI)
614+ let bo = cf._1
615+ let N = cf._2
616+ let bp = cf._3
617+ let cg = aH(aI)
618+ let aJ = cg._1
619+ let aK = cg._2
620+ let aN = if (!(isDefined(aJ.assetId)))
621+ then "WAVES"
622+ else toBase58String(value(aJ.assetId))
623+ if (!(aW(aN)))
624+ then throw("Something went wrong!")
625+ else if (!(aX(aN, aK)))
626+ then throw("Something went wrong!")
629627 else {
630- let aJ = value(aI.payments[0])
631- let aK = value(aJ.amount)
632- let aL = if (!(isDefined(aJ.assetId)))
633- then "WAVES"
634- else toBase58String(value(aJ.assetId))
635- let bq = z(X(bg, P))
636- let bs = z(V(bg, P))
637- if ((bq >= bs))
628+ let bt = z(X(bk, P))
629+ let bu = z(V(bk, P))
630+ if ((bt >= bu))
638631 then throw("Sold out, you cannot bid")
639- else [StringEntry((((((((("bid_" + P) + "_") + bg) + "_") + N) + "_") + bj) + "_OPEN"), ((((aL + "_") + toString(aK)) + "_") + toString(bO)))]
632+ else [StringEntry((((((((("bid_" + P) + "_") + bk) + "_") + N) + "_") + bo) + "_OPEN"), ((((aN + "_") + toString(aK)) + "_") + toString(bp)))]
640633 }
641- }
634+ }
642635
643636
644637
645638 @Callable(aI)
646-func acceptBid (P,bg,bh,bi) = if (!(p))
647- then throw(q)
648- else {
649- let N = toBase58String(aI.caller.bytes)
650- if ((N != bg))
651- then throw("You cannot do this action")
652- else bf(aI, P, bg, bh, bi)
653- }
639+func acceptBid (P,bk,bl,bm) = {
640+ let N = toBase58String(aI.caller.bytes)
641+ if ((N != bk))
642+ then throw("You cannot do this action")
643+ else bj(aI, P, bk, bl, bm)
644+ }
654645
655646
656647
657648 @Callable(aI)
658-func cancelBid (P,bg,bh,bi) = {
659- let bj = toBase58String(aI.transactionId)
660- let N = toBase58String(aI.caller.bytes)
661- let cc = toString(lastBlock.timestamp)
662- if ((N != bi))
649+func cancelBid (P,bk,bl,bm) = {
650+ let ch = bi(aI)
651+ let bo = ch._1
652+ let N = ch._2
653+ let bp = ch._3
654+ if ((N != bm))
663655 then throw("You cannot do this action")
664656 else {
665- let ba = ((((((("bid_" + P) + "_") + bg) + "_") + bi) + "_") + bh)
666- let bb = x((ba + "_OPEN"))
667- if ((bb == ""))
657+ let bd = ((((((("bid_" + P) + "_") + bk) + "_") + bm) + "_") + bl)
658+ let be = x((bd + "_OPEN"))
659+ if ((be == ""))
668660 then throw("Bid not found")
669661 else {
670- let bc = split(bb, "_")
671- let aL = if ((bc[0] == "WAVES"))
662+ let bf = split(be, "_")
663+ let aN = if ((bf[0] == "WAVES"))
672664 then unit
673- else fromBase58String(bc[0])
674-[DeleteEntry((ba + "_OPEN")), StringEntry((ba + "_CANCELED"), ((bb + "_") + cc)), ScriptTransfer(Address(fromBase58String(N)), parseIntValue(bc[1]), aL)]
665+ else fromBase58String(bf[0])
666+[DeleteEntry((bd + "_OPEN")), StringEntry((bd + "_CANCELED"), ((be + "_") + toString(bp))), ScriptTransfer(Address(fromBase58String(N)), parseIntValue(bf[1]), aN)]
675667 }
676668 }
677669 }
678670
679671
680672
681-@Callable(cd)
682-func deleteEntry (ce) = {
683- let N = toString(addressFromPublicKey(cd.callerPublicKey))
673+@Callable(aI)
674+func deleteEntry (ci) = {
675+ let N = toString(addressFromPublicKey(aI.callerPublicKey))
684676 if ((N == j))
685- then [DeleteEntry(ce)]
677+ then [DeleteEntry(ci)]
686678 else throw("no")
687679 }
688680
689681

github/deemru/w8io/873ac7e 
364.48 ms