tx · 5P7GK5jmKxJuohNRFurexnuZrfiXfuT1utbqABLG8Z11

3NBegQZ2nQzhyAw5acz2w3dQtSr97S113xv:  -0.01400000 Waves

2020.09.17 11:57 [1181058] smart account 3NBegQZ2nQzhyAw5acz2w3dQtSr97S113xv > SELF 0.00000000 Waves

{ "type": 13, "id": "5P7GK5jmKxJuohNRFurexnuZrfiXfuT1utbqABLG8Z11", "fee": 1400000, "feeAssetId": null, "timestamp": 1600333064264, "version": 2, "chainId": 84, "sender": "3NBegQZ2nQzhyAw5acz2w3dQtSr97S113xv", "senderPublicKey": "BtPnYKkAuL3EfH845GBBfaiSZ4DeT3PPS4Ms7xkdBz4k", "proofs": [ "23YKKVvQsaahxeHM1kDh7X7RGa2wRREypY2WRwpN4SBJy9fZBotLKp54tX9nrtd2oBsiCyDQDnZRA6n8NgRdaiPZ" ], "script": "base64:AAIEAAAAAAAAAE0IAhIGCgQICAgIEgYKBAgICAgSAwoBCBIDCgEIEg4KDAgICAgICAEICAgICBINCgsICAgICAEICAgICBIECgIICBIECgIIARIECgIICAAAAC4AAAAAD3N0b3JhZ2VWZXJpZmllcgkBAAAABXZhbHVlAAAAAQkABCYAAAABAgAAACMzTjJzNVJ0YUhQQmVuQ3N4MkVDY29GUmJZSHgzbm9aaFhXMQAAAAANdXNlcldoaXRlbGlzdAkBAAAABXZhbHVlAAAAAQkABCYAAAABAgAAACMzTXBKRWIzNlpReWsxaGFLbm9jYXlKY1lNMzFjTlBYUGlLMwAAAAAMc2lnblZlcmlmaWVyCQEAAAAFdmFsdWUAAAABCQAEJgAAAAECAAAAIzNOQzI4aFNpdnJtc1RVWGFZRDF4NkwzNjJKNFpwVW5vVGRCAAAAAAtmZWVSZWNlaXZlcgIAAAAjM04xRTZ0WGRkUm9WYVJmUTlkUTN2ZzVMYVcyZnNkOEhLdWIAAAAAC3NpZ25Bc3NldElkAQAAACDopWq8yndC8nBhMjVKT0WDubke5ZlnF8Nx6tkLoQSt6wAAAAAGdXNkbklEAgAAACwzS0ZYQkdHTENqQTVaMkR1VzREcTlmRERySGpKSlAxWkVrYW9halN6dUtzQwAAAAAFYWRtaW4CAAAAIzNOQ3FwZGI4akhXMWQxaHFaZ2VTOUFFMk1KMktlaDk1ak1DAAAAAA9XSElURUxJU1RFRE9OTFkGAAAAAAt1c2VyQ3JlYXRlZAIAAAAHQ1JFQVRFRAAAAAAMdXNlclZlcmlmaWVkAgAAAAhWRVJJRklFRAAAAAANdXNlclN1c3BlbmRlZAIAAAAJU1VTUEVOREVEAAAAAAt1c2VyUmVtb3ZlZAIAAAAHUkVNT1ZFRAAAAAAQdXNlclVucmVnaXN0ZXJlZAIAAAAMVU5SRUdJU1RFUkVEAAAAAAZvblNhbGUCAAAAB09OX1NBTEUAAAAABHNvbGQCAAAABFNPTEQAAAAACGNhbmNlbGVkAgAAAAhDQU5DRUxFRAEAAAAOZ2V0U3RyaW5nQnlLZXkAAAABAAAAA2tleQQAAAAHJG1hdGNoMAkABB0AAAACBQAAAAR0aGlzBQAAAANrZXkDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAABlN0cmluZwQAAAABYQUAAAAHJG1hdGNoMAUAAAABYQIAAAAAAQAAAA9nZXRJbnRlZ2VyQnlLZXkAAAABAAAAA2tleQQAAAAHJG1hdGNoMAkABBoAAAACBQAAAAR0aGlzBQAAAANrZXkDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAA0ludAQAAAABaQUAAAAHJG1hdGNoMAUAAAABaQAAAAAAAAAAAAEAAAAUY2hlY2tTaWduQ2VydGlmaWNhdGUAAAADAAAABnNpZ25JRAAAAAVPd25lcgAAAApzaGEyNTZIYXNoBAAAAAckbWF0Y2gwCQAEHQAAAAIFAAAADHNpZ25WZXJpZmllcgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAIZGF0YV9mY18FAAAABnNpZ25JRAIAAAABXwUAAAAFT3duZXIDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAABlN0cmluZwQAAAABYQUAAAAHJG1hdGNoMAMJAQAAAAhjb250YWlucwAAAAIFAAAAAWEFAAAACnNoYTI1Nkhhc2gGBwcBAAAADHZhbGlkYXRlTkZUcwAAAAIAAAALYWNjdW11bGF0b3IAAAACaWQEAAAADGFzc2V0RGV0YWlscwkBAAAABXZhbHVlAAAAAQkAA+wAAAABCQACWQAAAAEFAAAAAmlkAwMDCQEAAAACIT0AAAACCAUAAAAMYXNzZXREZXRhaWxzAAAACHF1YW50aXR5AAAAAAAAAAABBgkBAAAAAiE9AAAAAggFAAAADGFzc2V0RGV0YWlscwAAAAhkZWNpbWFscwAAAAAAAAAAAAYJAQAAAAIhPQAAAAIIBQAAAAxhc3NldERldGFpbHMAAAAKcmVpc3N1YWJsZQcJAABkAAAAAgUAAAALYWNjdW11bGF0b3IAAAAAAAAAAAAJAABkAAAAAgUAAAALYWNjdW11bGF0b3IAAAAAAAAAAAEBAAAADXZlcmlmeUFkZHJlc3MAAAABAAAABGFkZHIDCQEAAAABIQAAAAEFAAAAD1dISVRFTElTVEVET05MWQYEAAAAByRtYXRjaDAJAAQbAAAAAgUAAAANdXNlcldoaXRlbGlzdAUAAAAEYWRkcgMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAHQm9vbGVhbgQAAAABYgUAAAAHJG1hdGNoMAUAAAABYgkAAAIAAAABAgAAAC1Zb3UgYXJlIG5vdCBhbGxvd2VkLCBwbGVhc2UgY29udGFjdCB1cyBmaXJzdC4BAAAADHZlcmlmeVN0YXR1cwAAAAEAAAAEYWRkcgQAAAAHJG1hdGNoMAkABB0AAAACBQAAAAR0aGlzCQABLAAAAAICAAAADHVzZXJfc3RhdHVzXwUAAAAEYWRkcgMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAGU3RyaW5nBAAAAAFiBQAAAAckbWF0Y2gwBQAAAAFiCQAAAgAAAAECAAAAFVNvbWV0aGluZyB3ZW50IHdyb25nLgEAAAALa2V5VXNlckFkZHIAAAABAAAACmNhbGxlckFkZHIJAAEsAAAAAgIAAAAFdXNlcl8FAAAACmNhbGxlckFkZHIBAAAAC2tleVVzZXJOYW1lAAAAAQAAAApjYWxsZXJBZGRyCQABLAAAAAICAAAACnVzZXJfbmFtZV8FAAAACmNhbGxlckFkZHIBAAAAC2tleVVzZXJEZXNjAAAAAQAAAApjYWxsZXJBZGRyCQABLAAAAAICAAAACnVzZXJfZGVzY18FAAAACmNhbGxlckFkZHIBAAAADWtleVVzZXJTb2NpYWwAAAABAAAACmNhbGxlckFkZHIJAAEsAAAAAgIAAAAMdXNlcl9zb2NpYWxfBQAAAApjYWxsZXJBZGRyAQAAAAxrZXlVc2VyVGh1bWIAAAABAAAACmNhbGxlckFkZHIJAAEsAAAAAgIAAAALdXNlcl90aHVtYl8FAAAACmNhbGxlckFkZHIBAAAAD2tleVVzZXJJc0FydGlzdAAAAAEAAAAKY2FsbGVyQWRkcgkAASwAAAACAgAAAA51c2VyX2lzYXJ0aXN0XwUAAAAKY2FsbGVyQWRkcgEAAAANa2V5VXNlclN0YXR1cwAAAAEAAAAKY2FsbGVyQWRkcgkAASwAAAACAgAAAAx1c2VyX3N0YXR1c18FAAAACmNhbGxlckFkZHIBAAAAC2tleVVzZXJEYXRlAAAAAQAAAApjYWxsZXJBZGRyCQABLAAAAAICAAAACnVzZXJfZGF0ZV8FAAAACmNhbGxlckFkZHIBAAAACmtleUFydERhdGUAAAACAAAACmNhbGxlckFkZHIAAAAFYXJ0SWQJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAACWFydF9k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AAAJdGltZXN0YW1wCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAAAtrZXlVc2VyTmFtZQAAAAEFAAAACmNhbGxlckFkZHIFAAAABG5hbWUJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAAC2tleVVzZXJEZXNjAAAAAQUAAAAKY2FsbGVyQWRkcgUAAAALZGVzY3JpcHRpb24JAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAADWtleVVzZXJTb2NpYWwAAAABBQAAAApjYWxsZXJBZGRyBQAAAAZzb2NpYWwJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAADGtleVVzZXJUaHVtYgAAAAEFAAAACmNhbGxlckFkZHIFAAAABXRodW1iCQAETAAAAAIJAQAAAAxCb29sZWFuRW50cnkAAAACCQEAAAAPa2V5VXNlcklzQXJ0aXN0AAAAAQUAAAAKY2FsbGVyQWRkcgcJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAADWtleVVzZXJTdGF0dXMAAAABBQAAAApjYWxsZXJBZGRyBQAAAAt1c2VyQ3JlYXRlZAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACAgAAAA5sYXN0X2ludm9rZV9pZAUAAAACaWQFAAAAA25pbAkAAAIAAAABAgAAADdUaGlzIHVzZXIgaXMgYWxyZWFkeSByZWdpc3RlcmVkLCB1c2UgdXBkYXRlVXNlciBpbnN0ZWFkAAAAAWkBAAAACnVwZGF0ZVVzZXIAAAAEAAAABG5hbWUAAAALZGVzY3JpcHRpb24AAAAFdGh1bWIAAAAGc29jaWFsBAAAAApjYWxsZXJBZGRyCQAEJQAAAAEJAQAAABRhZGRyZXNzRnJvbVB1YmxpY0tleQAAAAEIBQAAAAFpAAAAD2NhbGxlclB1YmxpY0tleQQAAAALdXNlckFsbG93ZWQJAQAAAA12ZXJpZnlBZGRyZXNzAAAAAQUAAAAKY2FsbGVyQWRkcgMJAQAAAAEhAAAAAQUAAAALdXNlckFsbG93ZWQJAAACAAAAAQIAAAAxWW91IGFyZSBub3cgYWxsb3dlZCB0byB1cGRhdGUgeW91ciBpbmZvcyBhbnltb3JlLgQAAAAC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AAAAAQgFAAAAB3BheW1lbnQAAAAGYW1vdW50BAAAAAdhc3NldElkAwMJAQAAAAlpc0RlZmluZWQAAAABCAUAAAAHcGF5bWVudAAAAAdhc3NldElkCQAAAAAAAAIIBQAAAAdwYXltZW50AAAAB2Fzc2V0SWQFAAAAC3NpZ25Bc3NldElkBwgFAAAAB3BheW1lbnQAAAAHYXNzZXRJZAkAAAIAAAABAgAAACZPbmx5IFNJR04gdG9rZW4gYWNjZXB0ZWQgYXQgdGhlIG1vbWVudAQAAAAZY3VycmVudENlcnRpZmljYXRpb25QcmljZQQAAAAHJG1hdGNoMAkABBoAAAACBQAAAA9zdG9yYWdlVmVyaWZpZXIJAAEsAAAAAgIAAAASY2VydGlmaWNhdGlvbl9mZWVfCQACWAAAAAEFAAAAC3NpZ25Bc3NldElkAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAANJbnQEAAAABXByaWNlBQAAAAckbWF0Y2gwBQAAAAVwcmljZQkAAAIAAAABAgAAABlQcmljZSB1bmRlZmluZWQgaW4gb3JhY2xlAwkBAAAAAiE9AAAAAgUAAAAGYW1vdW50BQAAABljdXJyZW50Q2VydGlmaWNhdGlvblByaWNlCQAAAgAAAAEJAAEsAAAAAgIAAAAZUGF5bWVudCBhbW91bnQgc2hvdWxkIGJlIAkAAaQAAAABBQAAABljdXJyZW50Q2VydGlmaWNhdGlvblByaWNlBAAAAAplbnRyeUV4aXN0CQEAAAAOZ2V0U3RyaW5nQnlLZXkAAAABCQEAAAAVa2V5QXJ0VHhpZEJ5SGFzaE93bmVyAAAAAgUAAAAKc2hhMjU2SGFzaAUAAAANY2FsbGVyQWRkcmVzcwMJAQAAAAIhPQAAAAIFAAAACmVudHJ5RXhpc3QCAAAAAAkAAAIAAAABAgAAACpZb3UgYWxyZWFkeSBhZGRlZCB0aGlzIGFydHdvcmsgb24gU2lnbiBBcnQEAAAACWhhc2hFeGlzdAkBAAAADmdldFN0cmluZ0J5S2V5AAAAAQkBAAAAEWtleUFydE93bmVyQnlIYXNoAAAAAQUAAAAKc2hhMjU2SGFzaAMJAQAAAAIhPQAAAAIFAAAACWhhc2hFeGlzdAIAAAAACQAAAgAAAAECAAAAM1RoaXMgYXJ0d29yayBoYXNoIGlzIGFscmVhZHkgcmVnaXN0ZXJlZCBvbiBTaWduIEFydAQAAAAPaXNTaWduQ2VydGlmaWVkCQEAAAAUY2hlY2tTaWduQ2VydGlmaWNhdGUAAAADBQAAAAZzaWduSUQFAAAADWNhbGxlckFkZHJlc3MFAAAACnNoYTI1Nkhhc2gDCQEAAAABIQAAAAEFAAAAD2lzU2lnbkNlcnRpZmllZAkAAAIAAAABAgAAAEtTaWduIENlcnRpZmljYXRlIG5vdCBmb3VuZCBvbiBTaWduLXdlYi5hcHAgc21hcnQgY29udHJhY3QgZm9yIHRoaXMgYWRkcmVzcy4DCQAAAAAAAAIJAAExAAAAAQUAAAAKY2lkRGlzcGxheQAAAAAAAAAAAAkAAAIAAAABAgAAABtEaXNwbGF5IENJRCBjYW5ub3QgYmUgZW1wdHkDCQAAAAAAAAIJAAExAAAAAQUAAAAEbmFtZQAAAAAAAAAAAAkAAAIAAAABAgAAABVUaXRsZSBjYW5ub3QgYmUgZW1wdHkDCQAAZgAAAAIJAAExAAAAAQUAAAAEbmFtZQAAAAAAAAAAZAkAAAIAAAABAgAAACMxMDAgQ2hhcmFjdGVycyBtYXhpbXVtIGZvciB0aGUgbmFtZQMJAABmAAAAAgkAATEAAAABBQAAAAtkZXNjcmlwdGlvbgAAAAAAAAAD6AkAAAIAAAABAgAAACsxMDAwIENoYXJhY3RlcnMgbWF4aW11bSBmb3IgdGhlIGRlc2NyaXB0aW9uAwkAAAAAAAACCQABMQAAAAEFAAAAC2Rlc2NyaXB0aW9uAAAAAAAAAAAACQAAAgAAAAECAAAAG0Rlc2NyaXB0aW9uIGNhbm5vdCBiZSBlbXB0eQQAAAAIdGFnc0xpc3QJAAS1AAAAAgUAAAAEdGFncwIAAAABLAMJAABmAAAAAgkAAZAAAAABBQAAAAh0YWdzTGlzdAAAAAAAAAAABQkAAAIAAAABAgAAADhUYWdzIHNob3VsZCBiZSBtYXhpbXVtIDUgc2luZ2xlIHdvcmQgc2VwYXJhdGVkIGJ5IHNwYWNlLgQAAAAQdXNlcklzUmVnaXN0ZXJlZAQAAAAHJG1hdGNoMAkABB0AAAACBQAAAAR0aGlzCQABLAAAAAICAAAADHVzZXJfc3RhdHVzXwUAAAANY2FsbGVyQWRkcmVzcwMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAGU3RyaW5nBAAAAAFzBQAAAAckbWF0Y2gwBQAAAAFzBQAAABB1c2VyVW5yZWdpc3RlcmVkBAAAAAl0aW1lc3RhbXAIBQAAAAlsYXN0QmxvY2sAAAAJdGltZXN0YW1wAwMJAQAAAAlpc0RlZmluZWQAAAABBQAAABB1c2VySXNSZWdpc3RlcmVkCQAAAAAAAAIFAAAAEHVzZXJJc1JlZ2lzdGVyZWQFAAAAEHVzZXJVbnJlZ2lzdGVyZWQHCQAAAgAAAAECAAAAOFBsZWFzZSByZWdpc3RlciB0aGlzIGFjY291bnQgZmlyc3Qgd2l0aCAiVXNlciBpbmZvcyIgdGFiAwkAAAAAAAACBQAAABB1c2VySXNSZWdpc3RlcmVkBQAAAA11c2VyU3VzcGVuZGVkCQAAAgAAAAECAAAAGVlvdXIgYWNjb3VudCBpcyBzdXNwZW5kZWQDCQAAAAAAAAIFAAAAEHVzZXJJc1JlZ2lzdGVyZWQFAAAAC3VzZXJSZW1vdmVkCQAAAgAAAAECAAAAHllvdXIgYWNjb3VudCBoYXZlIGJlZW4gcmVtb3ZlZAMJAABmAAAAAgUAAAAHbWF4bWludAAAAAAAAAAACgkAAAIAAAABAgAAAB9NYXhpbXVtIDEwIGVkaXRpb25zIHBlciBhcnR3b3JrAwkBAAAAAiE9AAAAAgkAATEAAAABBQAAAApzaGEyNTZIYXNoAAAAAAAAAABACQAAAgAAAAECAAAAMUhhc2ggc2hvdWxkIGJlIHNoYTI1NiBzdHJpbmcgY29tcG9zZWQgb2YgNjQgY2hhci4JAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAAEWtleUFydE93bmVyQnlIYXNoAAAAAQUAAAAKc2hhMjU2SGFzaAUAAAANY2FsbGVyQWRkcmVzcwkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAAVa2V5QXJ0VHhpZEJ5SGFzaE93bmVyAAAAAgUAAAAKc2hhMjU2SGFzaAUAAAANY2FsbGVyQWRkcmVzcwUAAAAFYXJ0SWQJAARMAAAAAgkBAAAADEJvb2xlYW5FbnRyeQAAAAIJAQAAAA9rZXlVc2VySXNBcnRpc3QAAAABBQAAAA1jYWxsZXJBZGRyZXNzBgkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkBAAAACmtleUFydERhdGUAAAACBQAAAA1jYWxsZXJBZGRyZXNzBQAAAAVhcnRJZAUAAAAJdGltZXN0YW1wCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAAAprZXlBcnROYW1lAAAAAgUAAAANY2FsbGVyQWRkcmVzcwUAAAAFYXJ0SWQFAAAABG5hbWUJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAACmtleUFydERlc2MAAAACBQAAAA1jYWxsZXJBZGRyZXNzBQAAAAVhcnRJZAUAAAALZGVzY3JpcHRpb24JAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAAEGtleUFydERpc3BsYXlDaWQAAAACBQAAAA1jYWxsZXJBZGRyZXNzBQAAAAVhcnRJZAUAAAAKY2lkRGlzcGxheQkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAAPa2V5QXJ0RXhwb3J0Q2lkAAAAAgUAAAANY2FsbGVyQWRkcmVzcwUAAAAFYXJ0SWQFAAAACWNpZEV4cG9ydAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAAQa2V5QXJ0RXhwb3J0SGFzaAAAAAIFAAAADWNhbGxlckFkZHJlc3MFAAAABWFydElkBQAAAAxzaGEyNTZFeHBvcnQJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAAEWtleUFydExpY2VuY2VIYXNoAAAAAgUAAAANY2FsbGVyQWRkcmVzcwUAAAAFYXJ0SWQFAAAADXNoYTI1NkxpY2VuY2UJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAAEGtleUFydExpY2VuY2VDaWQAAAACBQAAAA1jYWxsZXJBZGRyZXNzBQAAAAVhcnRJZAUAAAAKY2lkTGljZW5jZQkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAAKa2V5QXJ0VHlwZQAAAAIFAAAADWNhbGxlckFkZHJlc3MFAAAABWFydElkBQAAAAR0eXBlCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAAAprZXlBcnRUYWdzAAAAAgUAAAANY2FsbGVyQWRkcmVzcwUAAAAFYXJ0SWQFAAAABHRhZ3MJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAAA1rZXlBcnRNYXhNaW50AAAAAgUAAAANY2FsbGVyQWRkcmVzcwUAAAAFYXJ0SWQFAAAAB21heG1pbnQJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAADGtleUFydFNpZ25JRAAAAAIFAAAADWNhbGxlckFkZHJlc3MFAAAABWFydElkBQAAAAZzaWduSUQJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAAAxrZXlBcnRJc3N1ZWQAAAACBQAAAA1jYWxsZXJBZGRyZXNzBQAAAAVhcnRJZAAAAAAAAAAAAAkABEwAAAACCQEAAAAMQm9vbGVhbkVudHJ5AAAAAgkBAAAADGtleUFydE9uU2FsZQAAAAIFAAAADWNhbGxlckFkZHJlc3MFAAAABWFydElkBwkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACAgAAAA5sYXN0X2ludm9rZV9pZAUAAAAFYXJ0SWQJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwkBAAAAB0FkZHJlc3MAAAABCQACWQAAAAEFAAAAC2ZlZVJlY2VpdmVyBQAAAAZhbW91bnQFAAAAB2Fzc2V0SWQFAAAAA25pbAAAAAZpbnZva2UBAAAADXVwZGF0ZUFydHdvcmsAAAALAAAABHR4aWQAAAAEbmFtZQAAAAtkZXNjcmlwdGlvbgAAAAR0YWdzAAAABHR5cGUAAAAHbWF4bWludAAAAApjaWREaXNwbGF5AAAADHNoYTI1NkV4cG9ydAAAAAljaWRFeHBvcnQAAAANc2hhMjU2TGljZW5jZQAAAApjaWRMaWNlbmNlBAAAAAh1cGRhdGVJZAkAAlgAAAABCAUAAAAGaW52b2tlAAAADXRyYW5zYWN0aW9uSWQEAAAADWNhbGxlckFkZHJlc3MJAAJYAAAAAQgIBQAAAAZpbnZva2UAAAAGY2FsbGVyAAAABWJ5dGVzBAAAAAplbnRyeUV4aXN0CQEAAAAOZ2V0U3RyaW5nQnlLZXkAAAABCQEAAAAKa2V5QXJ0TmFtZQAAAAIFAAAADWNhbGxlckFkZHJlc3MFAAAABHR4aWQDCQAAAAAAAAIFAAAACmVudHJ5RXhpc3QCAAAAAAkAAAIAAAABAgAAADFUaGlzIGVudHJ5IGRvZXNuJ3QgZXhpc3Qgb3IgeW91IGFyZSBub3QgdGhlIG93bmVyAwkAAAAAAAACCQABMQAAAAEFAAAABG5hbWUAAAAAAAAAAAAJAAACAAAAAQIAAAAVVGl0bGUgY2Fubm90IGJlIGVtcHR5AwkAAGYAAAACCQABMQAAAAEFAAAABG5hbWUAAAAAAAAAAGQJAAACAAAAAQIAAAAjMTAwIENoYXJhY3RlcnMgbWF4aW11bSBmb3IgdGhlIG5hbWUDCQAAZgAAAAIJAAExAAAAAQUAAAALZGVzY3JpcHRpb24AAAAAAAAAA+gJAAACAAAAAQIAAAArMTAwMCBDaGFyYWN0ZXJzIG1heGltdW0gZm9yIHRoZSBkZXNjcmlwdGlvbgMJAAAAAAAAAgkAATEAAAABBQAAAAtkZXNjcmlwdGlvbgAAAAAAAAAAAAkAAAIAAAABAgAAABtEZXNjcmlwdGlvbiBjYW5ub3QgYmUgZW1wdHkEAAAADWFydHdvcmtNaW50ZWQEAAAAByRtYXRjaDAJAAQaAAAAAgUAAAAEdGhpcwkBAAAADGtleUFydElzc3VlZAAAAAIFAAAADWNhbGxlckFkZHJlc3MFAAAABHR4aWQDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAA0ludAQAAAABYgUAAAAHJG1hdGNoMAMJAAAAAAAAAgUAAAABYgAAAAAAAAAAAAcGCQAAAgAAAAECAAAAFVNvbWV0aGluZyB3ZW50IHdyb25nLgQAAAAIdGFnc0xpc3QJAAS1AAAAAgUAAAAEdGFncwIAAAABLAMJAABmAAAAAgkAAZAAAAABBQAAAAh0YWdzTGlzdAAAAAAAAAAABQkAAAIAAAABAgAAADhUYWdzIHNob3VsZCBiZSBtYXhpbXVtIDUgc2luZ2xlIHdvcmQgc2VwYXJhdGVkIGJ5IHNwYWNlLgQAAAAQdXNlcklzUmVnaXN0ZXJlZAQAAAAHJG1hdGNoMAkABB0AAAACBQAAAAR0aGlzCQABLAAAAAICAAAADHVzZXJfc3RhdHVzXwUAAAANY2FsbGVyQWRkcmVzcwMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAGU3RyaW5nBAAAAAFzBQAAAAckbWF0Y2gwBQAAAAFzBQAAABB1c2VyVW5yZWdpc3RlcmVkAwMJAQAAAAlpc0RlZmluZWQAAAABBQAAABB1c2VySXNSZWdpc3RlcmVkCQAAAAAAAAIFAAAAEHVzZXJJc1JlZ2lzdGVyZWQFAAAAEHVzZXJVbnJlZ2lzdGVyZWQHCQAAAgAAAAECAAAAOFBsZWFzZSByZWdpc3RlciB0aGlzIGFjY291bnQgZmlyc3Qgd2l0aCAiVXNlciBpbmZvcyIgdGFiAwkAAAAAAAACBQAAABB1c2VySXNSZWdpc3RlcmVkBQAAAA11c2VyU3VzcGVuZGVkCQAAAgAAAAECAAAAGVlvdXIgYWNjb3VudCBpcyBzdXNwZW5kZWQDCQAAAAAAAAIFAAAAEHVzZXJJc1JlZ2lzdGVyZWQFAAAAC3VzZXJSZW1vdmVkCQAAAgAAAAECAAAAHllvdXIgYWNjb3VudCBoYXZlIGJlZW4gcmVtb3ZlZAMJAABmAAAAAgUAAAAHbWF4bWludAAAAAAAAAAACgkAAAIAAAABAgAAAB9NYXhpbXVtIDEwIGVkaXRpb25zIHBlciBhcnR3b3JrAwkBAAAAASEAAAABBQAAAA1hcnR3b3JrTWludGVkCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAAAprZXlBcnROYW1lAAAAAgUAAAANY2FsbGVyQWRkcmVzcwUAAAAEdHhpZAUAAAAEbmFtZQkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAAKa2V5QXJ0RGVzYwAAAAIFAAAADWNhbGxlckFkZHJlc3MFAAAABHR4aWQFAAAAC2Rlc2NyaXB0aW9uCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAABBrZXlBcnREaXNwbGF5Q2lkAAAAAgUAAAANY2FsbGVyQWRkcmVzcwUAAAAEdHhpZAUAAAAKY2lkRGlzcGxheQkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAAPa2V5QXJ0RXhwb3J0Q2lkAAAAAgUAAAANY2FsbGVyQWRkcmVzcwUAAAAEdHhpZAUAAAAJY2lkRXhwb3J0CQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAABBrZXlBcnRFeHBvcnRIYXNoAAAAAgUAAAANY2FsbGVyQWRkcmVzcwUAAAAEdHhpZAUAAAAMc2hhMjU2RXhwb3J0CQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAABBrZXlBcnRMaWNlbmNlQ2lkAAAAAgUAAAANY2FsbGVyQWRkcmVzcwUAAAAEdHhpZAUAAAAKY2lkTGljZW5jZQkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAARa2V5QXJ0TGljZW5jZUhhc2gAAAACBQAAAA1jYWxsZXJBZGRyZXNzBQAAAAR0eGlkBQAAAA1zaGEyNTZMaWNlbmNlCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAANa2V5QXJ0TWF4TWludAAAAAIFAAAADWNhbGxlckFkZHJlc3MFAAAABHR4aWQFAAAAB21heG1pbnQJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAACmtleUFydFRhZ3MAAAACBQAAAA1jYWxsZXJBZGRyZXNzBQAAAAR0eGlkBQAAAAR0YWdzCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAAAprZXlBcnRUeXBlAAAAAgUAAAANY2FsbGVyQWRkcmVzcwUAAAAEdHhpZAUAAAAEdHlwZQkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACAgAAAA5sYXN0X2ludm9rZV9pZAUAAAAIdXBkYXRlSWQFAAAAA25pbAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAAKa2V5QXJ0TmFtZQAAAAIFAAAADWNhbGxlckFkZHJlc3MFAAAABHR4aWQFAAAABG5hbWUJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAACmtleUFydERlc2MAAAACBQAAAA1jYWxsZXJBZGRyZXNzBQAAAAR0eGlkBQAAAAtkZXNjcmlwdGlvbgkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAAQa2V5QXJ0RGlzcGxheUNpZAAAAAIFAAAADWNhbGxlckFkZHJlc3MFAAAABHR4aWQFAAAACmNpZERpc3BsYXkJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAACmtleUFydFR5cGUAAAACBQAAAA1jYWxsZXJBZGRyZXNzBQAAAAR0eGlkBQAAAAR0eXBlCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAAAprZXlBcnRUYWdzAAAAAgUAAAANY2FsbGVyQWRkcmVzcwUAAAAEdHhpZAUAAAAEdGFncwkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACAgAAAA5sYXN0X2ludm9rZV9pZAUAAAAIdXBkYXRlSWQFAAAAA25pbAAAAAFpAQAAAA1kZWxldGVBcnR3b3JrAAAAAgAAAAVhcnRJZAAAAAxvd25lckFkZHJlc3MEAAAACmNhbGxlckFkZHIJAAQlAAAAAQkBAAAAFGFkZHJlc3NGcm9tUHVibGljS2V5AAAAAQgFAAAAAWkAAAAPY2FsbGVyUHVibGljS2V5BAAAAAJpZAkAAlgAAAABCAUAAAABaQAAAA10cmFuc2FjdGlvbklkAwkBAAAAAiE9AAAAAgUAAAAKY2FsbGVyQWRkcgUAAAAFYWRtaW4JAAACAAAAAQIAAAAeWW91IGFyZSBub3QgYWxsb3dlZCB0byBkbyB0aGF0CQAETAAAAAIJAQAAAAtEZWxldGVFbnRyeQAAAAEJAQAAAAprZXlBcnREYXRlAAAAAgUAAAAMb3duZXJBZGRyZXNzBQAAAAVhcnRJZAkABEwAAAACCQEAAAALRGVsZXRlRW50cnkAAAABCQEAAAAKa2V5QXJ0TmFtZQAAAAIFAAAADG93bmVyQWRkcmVzcwUAAAAFYXJ0SWQJAARMAAAAAgkBAAAAC0RlbGV0ZUVudHJ5AAAAAQkBAAAACmtleUFydERlc2MAAAACBQAAAAxvd25lckFkZHJlc3MFAAAABWFydElkCQAETAAAAAIJAQAAAAtEZWxldGVFbnRyeQAAAAEJAQAAABBrZXlBcnREaXNwbGF5Q2lkAAAAAgUAAAAMb3duZXJBZGRyZXNzBQAAAAVhcnRJZAkABEwAAAACCQEAAAALRGVsZXRlRW50cnkAAAABCQEAAAAPa2V5QXJ0RXhwb3J0Q2lkAAAAAgUAAAAMb3duZXJBZGRyZXNzBQAAAAVhcnRJZAkABEwAAAACCQEAAAALRGVsZXRlRW50cnkAAAABCQEAAAAQa2V5QXJ0RXhwb3J0SGFzaAAAAAIFAAAADG93bmVyQWRkcmVzcwUAAAAFYXJ0SWQJAARMAAAAAgkBAAAAC0RlbGV0ZUVudHJ5AAAAAQkBAAAAEWtleUFydExpY2VuY2VIYXNoAAAAAgUAAAAMb3duZXJBZGRyZXNzBQAAAAVhcnRJZAkABEwAAAACCQEAAAALRGVsZXRlRW50cnkAAAABCQEAAAAQa2V5QXJ0TGljZW5jZUNpZAAAAAIFAAAADG93bmVyQWRkcmVzcwUAAAAFYXJ0SWQJAARMAAAAAgkBAAAAC0RlbGV0ZUVudHJ5AAAAAQkBAAAACmtleUFydFR5cGUAAAACBQAAAAxvd25lckFkZHJlc3MFAAAABWFydElkCQAETAAAAAIJAQAAAAtEZWxldGVFbnRyeQAAAAEJAQAAAAprZXlBcnRUYWdzAAAAAgUAAAAMb3duZXJBZGRyZXNzBQAAAAVhcnRJZAkABEwAAAACCQEAAAALRGVsZXRlRW50cnkAAAABCQEAAAANa2V5QXJ0TWF4TWludAAAAAIFAAAADG93bmVyQWRkcmVzcwUAAAAFYXJ0SWQJAARMAAAAAgkBAAAAC0RlbGV0ZUVudHJ5AAAAAQkBAAAADGtleUFydFNpZ25JRAAAAAIFAAAADG93bmVyQWRkcmVzcwUAAAAFYXJ0SWQJAARMAAAAAgkBAAAAC0RlbGV0ZUVudHJ5AAAAAQkBAAAADGtleUFydElzc3VlZAAAAAIFAAAADG93bmVyQWRkcmVzcwUAAAAFYXJ0SWQJAARMAAAAAgkBAAAAC0RlbGV0ZUVudHJ5AAAAAQkBAAAADGtleUFydE9uU2FsZQAAAAIFAAAADG93bmVyQWRkcmVzcwUAAAAFYXJ0SWQJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgIAAAAObGFzdF9pbnZva2VfaWQFAAAAAmlkBQAAAANuaWwAAAAGaW52b2tlAQAAAAtzZWxsQXJ0d29yawAAAAIAAAAEaGFzaAAAAAVwcmljZQQAAAACaWQJAAJYAAAAAQgFAAAABmludm9rZQAAAA10cmFuc2FjdGlvbklkBAAAAA1jYWxsZXJBZGRyZXNzCQACWAAAAAEICAUAAAAGaW52b2tlAAAABmNhbGxlcgAAAAVieXRlcwQAAAAJZW50cnlEYXRlCAUAAAAJbGFzdEJsb2Nr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", "height": 1181058, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 9hZyoC1vriiyipvjYvUUava3bTmGBgd6tmbAarUx3vss Next: FrteYbvaLyE1wh74jbRPj7GGX6cu1EEuJMXec3arb2Ew Diff:
OldNewDifferences
77
88 let c = value(addressFromString("3NC28hSivrmsTUXaYD1x6L362J4ZpUnoTdB"))
99
10-let d = base58'Gf9t8FA4H3ssoZPCwrg3KwUFCci8zuUFP9ssRsUY3s6a'
10+let d = "3N1E6tXddRoVaRfQ9dQ3vg5LaW2fsd8HKub"
1111
12-let e = "3KFXBGGLCjA5Z2DuW4Dq9fDDrHjJJP1ZEkaoajSzuKsC"
12+let e = base58'Gf9t8FA4H3ssoZPCwrg3KwUFCci8zuUFP9ssRsUY3s6a'
1313
14-let f = "3NCqpdb8jHW1d1hqZgeS9AE2MJ2Keh95jMC"
14+let f = "3KFXBGGLCjA5Z2DuW4Dq9fDDrHjJJP1ZEkaoajSzuKsC"
1515
16-let g = true
16+let g = "3NCqpdb8jHW1d1hqZgeS9AE2MJ2Keh95jMC"
1717
18-let h = "CREATED"
18+let h = true
1919
20-let i = "VERIFIED"
20+let i = "CREATED"
2121
22-let j = "SUSPENDED"
22+let j = "VERIFIED"
2323
24-let k = "REMOVED"
24+let k = "SUSPENDED"
2525
26-let l = "UNREGISTERED"
26+let l = "REMOVED"
2727
28-let m = "ON_SALE"
28+let m = "UNREGISTERED"
2929
30-let n = "SOLD"
30+let n = "ON_SALE"
3131
32-let o = "CANCELED"
32+let o = "SOLD"
3333
34-func p (q) = {
35- let r = getString(this, q)
36- if ($isInstanceOf(r, "String"))
34+let p = "CANCELED"
35+
36+func q (r) = {
37+ let s = getString(this, r)
38+ if ($isInstanceOf(s, "String"))
3739 then {
38- let s = r
39- s
40+ let t = s
41+ t
4042 }
4143 else ""
4244 }
4345
4446
45-func t (q) = {
46- let r = getInteger(this, q)
47- if ($isInstanceOf(r, "Int"))
47+func u (r) = {
48+ let s = getInteger(this, r)
49+ if ($isInstanceOf(s, "Int"))
4850 then {
49- let u = r
50- u
51+ let v = s
52+ v
5153 }
5254 else 0
5355 }
5456
5557
56-func v (w,x,y) = {
57- let r = getString(c, ((("data_fc_" + w) + "_") + x))
58- if ($isInstanceOf(r, "String"))
58+func w (x,y,z) = {
59+ let s = getString(c, ((("data_fc_" + x) + "_") + y))
60+ if ($isInstanceOf(s, "String"))
5961 then {
60- let s = r
61- if (contains(s, y))
62+ let t = s
63+ if (contains(t, z))
6264 then true
6365 else false
6466 }
6668 }
6769
6870
69-func z (A,B) = {
70- let C = value(assetInfo(fromBase58String(B)))
71- if (if (if ((C.quantity != 1))
71+func A (B,C) = {
72+ let D = value(assetInfo(fromBase58String(C)))
73+ if (if (if ((D.quantity != 1))
7274 then true
73- else (C.decimals != 0))
75+ else (D.decimals != 0))
7476 then true
75- else (C.reissuable != false))
76- then (A + 0)
77- else (A + 1)
77+ else (D.reissuable != false))
78+ then (B + 0)
79+ else (B + 1)
7880 }
7981
8082
81-func D (E) = if (!(g))
83+func E (F) = if (!(h))
8284 then true
8385 else {
84- let r = getBoolean(b, E)
85- if ($isInstanceOf(r, "Boolean"))
86+ let s = getBoolean(b, F)
87+ if ($isInstanceOf(s, "Boolean"))
8688 then {
87- let F = r
88- F
89+ let G = s
90+ G
8991 }
9092 else throw("You are not allowed, please contact us first.")
9193 }
9294
9395
94-func G (E) = {
95- let r = getString(this, ("user_status_" + E))
96- if ($isInstanceOf(r, "String"))
96+func H (F) = {
97+ let s = getString(this, ("user_status_" + F))
98+ if ($isInstanceOf(s, "String"))
9799 then {
98- let F = r
99- F
100+ let G = s
101+ G
100102 }
101103 else throw("Something went wrong.")
102104 }
103105
104106
105-func H (I) = ("user_" + I)
107+func I (J) = ("user_" + J)
106108
107109
108-func J (I) = ("user_name_" + I)
110+func K (J) = ("user_name_" + J)
109111
110112
111-func K (I) = ("user_desc_" + I)
113+func L (J) = ("user_desc_" + J)
112114
113115
114-func L (I) = ("user_social_" + I)
116+func M (J) = ("user_social_" + J)
115117
116118
117-func M (I) = ("user_thumb_" + I)
119+func N (J) = ("user_thumb_" + J)
118120
119121
120-func N (I) = ("user_isartist_" + I)
122+func O (J) = ("user_isartist_" + J)
121123
122124
123-func O (I) = ("user_status_" + I)
125+func P (J) = ("user_status_" + J)
124126
125127
126-func P (I) = ("user_date_" + I)
128+func Q (J) = ("user_date_" + J)
127129
128130
129-func Q (I,R) = ((("art_date_" + R) + "_") + I)
131+func R (J,S) = ((("art_date_" + S) + "_") + J)
130132
131133
132-func S (I,R) = ((("art_name_" + R) + "_") + I)
134+func T (J,S) = ((("art_name_" + S) + "_") + J)
133135
134136
135-func T (I,R) = ((("art_desc_" + R) + "_") + I)
137+func U (J,S) = ((("art_desc_" + S) + "_") + J)
136138
137139
138-func U (I,R) = ((("art_display_cid_" + R) + "_") + I)
140+func V (J,S) = ((("art_display_cid_" + S) + "_") + J)
139141
140142
141-func V (I,R) = ((("art_export_hash_" + R) + "_") + I)
143+func W (J,S) = ((("art_export_hash_" + S) + "_") + J)
142144
143145
144-func W (I,R) = ((("art_export_cid_" + R) + "_") + I)
146+func X (J,S) = ((("art_export_cid_" + S) + "_") + J)
145147
146148
147-func X (I,R) = ((("art_maxmint_" + R) + "_") + I)
149+func Y (J,S) = ((("art_maxmint_" + S) + "_") + J)
148150
149151
150-func Y (I,R) = ((("art_signid_" + R) + "_") + I)
152+func Z (J,S) = ((("art_signid_" + S) + "_") + J)
151153
152154
153-func Z (I,R) = ((("art_issued_" + R) + "_") + I)
155+func aa (J,S) = ((("art_issued_" + S) + "_") + J)
154156
155157
156-func aa (I,R) = ((("art_onsale_" + R) + "_") + I)
158+func ab (J,S) = ((("art_onsale_" + S) + "_") + J)
157159
158160
159-func ab (I,R) = ((("art_licence_hash_" + R) + "_") + I)
161+func ac (J,S) = ((("art_licence_hash_" + S) + "_") + J)
160162
161163
162-func ac (I,R) = ((("art_licence_cid_" + R) + "_") + I)
164+func ad (J,S) = ((("art_licence_cid_" + S) + "_") + J)
163165
164166
165-func ad (I,R) = ((("art_tags_" + R) + "_") + I)
167+func ae (J,S) = ((("art_tags_" + S) + "_") + J)
166168
167169
168-func ae (I,R) = ((("art_type_" + R) + "_") + I)
170+func af (J,S) = ((("art_type_" + S) + "_") + J)
169171
170172
171-func af (y) = ("art_owner_by_hash_" + y)
173+func ag (z) = ("art_owner_by_hash_" + z)
172174
173175
174-func ag (y,I) = ("art_txid_by_hash_owner_" + toBase58String(sha256_16Kb(toBytes((y + I)))))
176+func ah (z,J) = ("art_txid_by_hash_owner_" + toBase58String(sha256_16Kb(toBytes((z + J)))))
175177
176178
177-@Callable(u)
178-func registerUser (ah,ai,aj,ak) = {
179- let I = toString(addressFromPublicKey(u.callerPublicKey))
180- let al = D(I)
181- let B = toBase58String(u.transactionId)
182- let am = p(("user_" + I))
183- let an = lastBlock.timestamp
184- if (!(al))
179+@Callable(v)
180+func registerUser (ai,aj,ak,al) = {
181+ let J = toString(addressFromPublicKey(v.callerPublicKey))
182+ let am = E(J)
183+ let C = toBase58String(v.transactionId)
184+ let an = q(("user_" + J))
185+ let ao = lastBlock.timestamp
186+ if (!(am))
185187 then throw("You are now allowed to register yet, please contact us first to get approved.")
186- else if (if ((ah == ""))
188+ else if (if ((ai == ""))
187189 then true
188- else (ai == ""))
190+ else (aj == ""))
189191 then throw("Name and description cannot be empty")
190- else if ((size(ai) > 600))
192+ else if ((size(aj) > 600))
191193 then throw("600 Characters maximum for the description")
192- else if ((am == ""))
193- then [IntegerEntry(P(I), an), StringEntry(H(I), ((B + "_") + toString(lastBlock.timestamp))), StringEntry(J(I), ah), StringEntry(K(I), ai), StringEntry(L(I), ak), StringEntry(M(I), aj), BooleanEntry(N(I), false), StringEntry(O(I), h), StringEntry("last_invoke_id", B)]
194+ else if ((an == ""))
195+ then [IntegerEntry(Q(J), ao), StringEntry(I(J), ((C + "_") + toString(lastBlock.timestamp))), StringEntry(K(J), ai), StringEntry(L(J), aj), StringEntry(M(J), al), StringEntry(N(J), ak), BooleanEntry(O(J), false), StringEntry(P(J), i), StringEntry("last_invoke_id", C)]
194196 else throw("This user is already registered, use updateUser instead")
195197 }
196198
197199
198200
199-@Callable(u)
200-func updateUser (ah,ai,aj,ak) = {
201- let I = toString(addressFromPublicKey(u.callerPublicKey))
202- let al = D(I)
203- if (!(al))
201+@Callable(v)
202+func updateUser (ai,aj,ak,al) = {
203+ let J = toString(addressFromPublicKey(v.callerPublicKey))
204+ let am = E(J)
205+ if (!(am))
204206 then throw("You are now allowed to update your infos anymore.")
205207 else {
206- let B = toBase58String(u.transactionId)
207- let am = p(("user_" + I))
208- let an = lastBlock.timestamp
209- let ao = G(I)
210- if ((ao == j))
208+ let C = toBase58String(v.transactionId)
209+ let an = q(("user_" + J))
210+ let ao = lastBlock.timestamp
211+ let ap = H(J)
212+ if ((ap == k))
211213 then throw("Your account have been suspended")
212- else if ((ao == k))
214+ else if ((ap == l))
213215 then throw("Your account have been removed")
214- else if (if ((ah == ""))
216+ else if (if ((ai == ""))
215217 then true
216- else (ai == ""))
218+ else (aj == ""))
217219 then throw("Name and description cannot be empty")
218- else if ((size(ai) > 600))
220+ else if ((size(aj) > 600))
219221 then throw("600 Characters maximum for the description")
220- else if ((am != ""))
221- then [StringEntry(J(I), ah), StringEntry(K(I), ai), StringEntry(L(I), ak), StringEntry(M(I), aj), StringEntry("last_invoke_id", B)]
222+ else if ((an != ""))
223+ then [StringEntry(K(J), ai), StringEntry(L(J), aj), StringEntry(M(J), al), StringEntry(N(J), ak), StringEntry("last_invoke_id", C)]
222224 else throw("Please register first with registerUser")
223225 }
224226 }
225227
226228
227229
228-@Callable(u)
229-func deleteUser (ap) = {
230- let I = toString(addressFromPublicKey(u.callerPublicKey))
231- let B = toBase58String(u.transactionId)
232- if ((I != f))
230+@Callable(v)
231+func deleteUser (aq) = {
232+ let J = toString(addressFromPublicKey(v.callerPublicKey))
233+ let C = toBase58String(v.transactionId)
234+ if ((J != g))
233235 then throw("You are not allowed to do that")
234- else [DeleteEntry(P(I)), DeleteEntry(H(I)), DeleteEntry(J(I)), DeleteEntry(K(I)), DeleteEntry(L(I)), DeleteEntry(M(I)), DeleteEntry(N(I)), StringEntry(O(I), k), StringEntry("last_invoke_id", B)]
236+ else [DeleteEntry(Q(J)), DeleteEntry(I(J)), DeleteEntry(K(J)), DeleteEntry(L(J)), DeleteEntry(M(J)), DeleteEntry(N(J)), DeleteEntry(O(J)), StringEntry(P(J), l), StringEntry("last_invoke_id", C)]
235237 }
236238
237239
238240
239-@Callable(u)
240-func suspendUser (ap) = {
241- let I = toString(addressFromPublicKey(u.callerPublicKey))
242- let B = toBase58String(u.transactionId)
243- if ((I != f))
241+@Callable(v)
242+func suspendUser (aq) = {
243+ let J = toString(addressFromPublicKey(v.callerPublicKey))
244+ let C = toBase58String(v.transactionId)
245+ if ((J != g))
244246 then throw("You are not allowed to do that")
245- else [StringEntry(O(I), j), StringEntry("last_invoke_id", B)]
247+ else [StringEntry(P(J), k), StringEntry("last_invoke_id", C)]
246248 }
247249
248250
249251
250-@Callable(aq)
251-func addArtwork (y,w,ah,ai,ar,as,at,au,av,aw,ax,ay) = {
252- let R = toBase58String(aq.transactionId)
253- let az = toBase58String(aq.caller.bytes)
254- let aA = p(ag(y, az))
255- if ((aA != ""))
256- then throw("You already added this artwork on Sign Art")
252+@Callable(ar)
253+func addArtwork (z,x,ai,aj,as,at,au,av,aw,ax,ay,az) = {
254+ let S = toBase58String(ar.transactionId)
255+ let aA = toBase58String(ar.caller.bytes)
256+ if ((size(ar.payments) == 0))
257+ then throw("No payment attached")
257258 else {
258- let aB = p(af(y))
259- if ((aB != ""))
260- then throw("This artwork hash is already registered on Sign Art")
259+ let aB = value(ar.payments[0])
260+ let aC = value(aB.amount)
261+ let aD = if (if (isDefined(aB.assetId))
262+ then (aB.assetId == e)
263+ else false)
264+ then aB.assetId
265+ else throw("Only SIGN token accepted at the moment")
266+ let aE = {
267+ let s = getInteger(a, ("certification_fee_" + toBase58String(e)))
268+ if ($isInstanceOf(s, "Int"))
269+ then {
270+ let aF = s
271+ aF
272+ }
273+ else throw("Price undefined in oracle")
274+ }
275+ if ((aC != aE))
276+ then throw(("Payment amount should be " + toString(aE)))
261277 else {
262- let aC = v(w, az, y)
263- if (!(aC))
264- then throw("Sign Certificate not found on Sign-web.app smart contract for this address.")
265- else if ((size(ah) == 0))
266- then throw("Title cannot be empty")
267- else if ((size(ah) > 100))
268- then throw("100 Characters maximum for the name")
269- else if ((size(ai) > 1000))
270- then throw("1000 Characters maximum for the description")
271- else if ((size(ai) == 0))
272- then throw("Description cannot be empty")
273- else {
274- let aD = split(ar, ",")
275- if ((size(aD) > 5))
276- then throw("Tags should be maximum 5 single word separated by space.")
277- else {
278- let aE = {
279- let r = getString(this, ("user_status_" + az))
280- if ($isInstanceOf(r, "String"))
281- then {
282- let aF = r
283- aF
278+ let aG = q(ah(z, aA))
279+ if ((aG != ""))
280+ then throw("You already added this artwork on Sign Art")
281+ else {
282+ let aH = q(ag(z))
283+ if ((aH != ""))
284+ then throw("This artwork hash is already registered on Sign Art")
285+ else {
286+ let aI = w(x, aA, z)
287+ if (!(aI))
288+ then throw("Sign Certificate not found on Sign-web.app smart contract for this address.")
289+ else if ((size(av) == 0))
290+ then throw("Display CID cannot be empty")
291+ else if ((size(ai) == 0))
292+ then throw("Title cannot be empty")
293+ else if ((size(ai) > 100))
294+ then throw("100 Characters maximum for the name")
295+ else if ((size(aj) > 1000))
296+ then throw("1000 Characters maximum for the description")
297+ else if ((size(aj) == 0))
298+ then throw("Description cannot be empty")
299+ else {
300+ let aJ = split(as, ",")
301+ if ((size(aJ) > 5))
302+ then throw("Tags should be maximum 5 single word separated by space.")
303+ else {
304+ let aK = {
305+ let s = getString(this, ("user_status_" + aA))
306+ if ($isInstanceOf(s, "String"))
307+ then {
308+ let aL = s
309+ aL
310+ }
311+ else m
312+ }
313+ let ao = lastBlock.timestamp
314+ if (if (isDefined(aK))
315+ then (aK == m)
316+ else false)
317+ then throw("Please register this account first with \"User infos\" tab")
318+ else if ((aK == k))
319+ then throw("Your account is suspended")
320+ else if ((aK == l))
321+ then throw("Your account have been removed")
322+ else if ((au > 10))
323+ then throw("Maximum 10 editions per artwork")
324+ else if ((size(z) != 64))
325+ then throw("Hash should be sha256 string composed of 64 char.")
326+ else [StringEntry(ag(z), aA), StringEntry(ah(z, aA), S), BooleanEntry(O(aA), true), IntegerEntry(R(aA, S), ao), StringEntry(T(aA, S), ai), StringEntry(U(aA, S), aj), StringEntry(V(aA, S), av), StringEntry(X(aA, S), ax), StringEntry(W(aA, S), aw), StringEntry(ac(aA, S), ay), StringEntry(ad(aA, S), az), StringEntry(af(aA, S), at), StringEntry(ae(aA, S), as), IntegerEntry(Y(aA, S), au), StringEntry(Z(aA, S), x), IntegerEntry(aa(aA, S), 0), BooleanEntry(ab(aA, S), false), StringEntry("last_invoke_id", S), ScriptTransfer(Address(fromBase58String(d)), aC, aD)]
327+ }
284328 }
285- else l
286- }
287- let an = lastBlock.timestamp
288- if (if (isDefined(aE))
289- then (aE == l)
290- else false)
291- then throw("Please register this account first with \"User infos\" tab")
292- else if ((aE == j))
293- then throw("Your account is suspended")
294- else if ((aE == k))
295- then throw("Your account have been removed")
296- else if ((at > 10))
297- then throw("Maximum 10 editions per artwork")
298- else if ((size(y) != 64))
299- then throw("Hash should be sha256 string composed of 64 char.")
300- else [StringEntry(af(y), az), StringEntry(ag(y, az), R), BooleanEntry(N(az), true), IntegerEntry(Q(az, R), an), StringEntry(S(az, R), ah), StringEntry(T(az, R), ai), StringEntry(U(az, R), au), StringEntry(W(az, R), aw), StringEntry(V(az, R), av), StringEntry(ab(az, R), ax), StringEntry(ac(az, R), ay), StringEntry(ae(az, R), as), StringEntry(ad(az, R), ar), IntegerEntry(X(az, R), at), StringEntry(Y(az, R), w), IntegerEntry(Z(az, R), 0), BooleanEntry(aa(az, R), false), StringEntry("last_invoke_id", R)]
301- }
302- }
329+ }
330+ }
303331 }
304332 }
305333 }
306334
307335
308336
309-@Callable(aq)
310-func updateArtwork (aG,ah,ai,ar,as,at,au,av,aw,ax,ay) = {
311- let aH = toBase58String(aq.transactionId)
312- let az = toBase58String(aq.caller.bytes)
313- let aA = p(S(az, aG))
314- if ((aA == ""))
337+@Callable(ar)
338+func updateArtwork (aM,ai,aj,as,at,au,av,aw,ax,ay,az) = {
339+ let aN = toBase58String(ar.transactionId)
340+ let aA = toBase58String(ar.caller.bytes)
341+ let aG = q(T(aA, aM))
342+ if ((aG == ""))
315343 then throw("This entry doesn't exist or you are not the owner")
316- else if ((size(ah) == 0))
344+ else if ((size(ai) == 0))
317345 then throw("Title cannot be empty")
318- else if ((size(ah) > 100))
346+ else if ((size(ai) > 100))
319347 then throw("100 Characters maximum for the name")
320- else if ((size(ai) > 1000))
348+ else if ((size(aj) > 1000))
321349 then throw("1000 Characters maximum for the description")
322- else if ((size(ai) == 0))
350+ else if ((size(aj) == 0))
323351 then throw("Description cannot be empty")
324352 else {
325- let aI = {
326- let r = getInteger(this, Z(az, aG))
327- if ($isInstanceOf(r, "Int"))
353+ let aO = {
354+ let s = getInteger(this, aa(aA, aM))
355+ if ($isInstanceOf(s, "Int"))
328356 then {
329- let F = r
330- if ((F == 0))
357+ let G = s
358+ if ((G == 0))
331359 then false
332360 else true
333361 }
334362 else throw("Something went wrong.")
335363 }
336- let aD = split(ar, ",")
337- if ((size(aD) > 5))
364+ let aJ = split(as, ",")
365+ if ((size(aJ) > 5))
338366 then throw("Tags should be maximum 5 single word separated by space.")
339367 else {
340- let aE = {
341- let r = getString(this, ("user_status_" + az))
342- if ($isInstanceOf(r, "String"))
368+ let aK = {
369+ let s = getString(this, ("user_status_" + aA))
370+ if ($isInstanceOf(s, "String"))
343371 then {
344- let aF = r
345- aF
372+ let aL = s
373+ aL
346374 }
347- else l
375+ else m
348376 }
349- if (if (isDefined(aE))
350- then (aE == l)
377+ if (if (isDefined(aK))
378+ then (aK == m)
351379 else false)
352380 then throw("Please register this account first with \"User infos\" tab")
353- else if ((aE == j))
381+ else if ((aK == k))
354382 then throw("Your account is suspended")
355- else if ((aE == k))
383+ else if ((aK == l))
356384 then throw("Your account have been removed")
357- else if ((at > 10))
385+ else if ((au > 10))
358386 then throw("Maximum 10 editions per artwork")
359- else if (!(aI))
360- then [StringEntry(S(az, aG), ah), StringEntry(T(az, aG), ai), StringEntry(U(az, aG), au), StringEntry(W(az, aG), aw), StringEntry(V(az, aG), av), StringEntry(ac(az, aG), ay), StringEntry(ab(az, aG), ax), IntegerEntry(X(az, aG), at), StringEntry(ad(az, aG), ar), StringEntry(ae(az, aG), as), StringEntry("last_invoke_id", aH)]
361- else [StringEntry(S(az, aG), ah), StringEntry(T(az, aG), ai), StringEntry(U(az, aG), au), StringEntry(ae(az, aG), as), StringEntry(ad(az, aG), ar), StringEntry("last_invoke_id", aH)]
387+ else if (!(aO))
388+ then [StringEntry(T(aA, aM), ai), StringEntry(U(aA, aM), aj), StringEntry(V(aA, aM), av), StringEntry(X(aA, aM), ax), StringEntry(W(aA, aM), aw), StringEntry(ad(aA, aM), az), StringEntry(ac(aA, aM), ay), IntegerEntry(Y(aA, aM), au), StringEntry(ae(aA, aM), as), StringEntry(af(aA, aM), at), StringEntry("last_invoke_id", aN)]
389+ else [StringEntry(T(aA, aM), ai), StringEntry(U(aA, aM), aj), StringEntry(V(aA, aM), av), StringEntry(af(aA, aM), at), StringEntry(ae(aA, aM), as), StringEntry("last_invoke_id", aN)]
362390 }
363391 }
364392 }
365393
366394
367395
368-@Callable(u)
369-func deleteArtwork (R,aJ) = {
370- let I = toString(addressFromPublicKey(u.callerPublicKey))
371- let B = toBase58String(u.transactionId)
372- if ((I != f))
396+@Callable(v)
397+func deleteArtwork (S,aP) = {
398+ let J = toString(addressFromPublicKey(v.callerPublicKey))
399+ let C = toBase58String(v.transactionId)
400+ if ((J != g))
373401 then throw("You are not allowed to do that")
374- else [DeleteEntry(Q(aJ, R)), DeleteEntry(S(aJ, R)), DeleteEntry(T(aJ, R)), DeleteEntry(U(aJ, R)), DeleteEntry(W(aJ, R)), DeleteEntry(V(aJ, R)), DeleteEntry(ab(aJ, R)), DeleteEntry(ac(aJ, R)), DeleteEntry(ae(aJ, R)), DeleteEntry(ad(aJ, R)), DeleteEntry(X(aJ, R)), DeleteEntry(Y(aJ, R)), DeleteEntry(Z(aJ, R)), DeleteEntry(aa(aJ, R)), StringEntry("last_invoke_id", B)]
402+ else [DeleteEntry(R(aP, S)), DeleteEntry(T(aP, S)), DeleteEntry(U(aP, S)), DeleteEntry(V(aP, S)), DeleteEntry(X(aP, S)), DeleteEntry(W(aP, S)), DeleteEntry(ac(aP, S)), DeleteEntry(ad(aP, S)), DeleteEntry(af(aP, S)), DeleteEntry(ae(aP, S)), DeleteEntry(Y(aP, S)), DeleteEntry(Z(aP, S)), DeleteEntry(aa(aP, S)), DeleteEntry(ab(aP, S)), StringEntry("last_invoke_id", C)]
375403 }
376404
377405
378406
379-@Callable(aq)
380-func sellArtwork (aK,aL) = {
381- let B = toBase58String(aq.transactionId)
382- let az = toBase58String(aq.caller.bytes)
383- let aM = lastBlock.timestamp
384- let aN = p(((aK + "_") + az))
385- if (!(isDefined(aN)))
407+@Callable(ar)
408+func sellArtwork (aQ,aF) = {
409+ let C = toBase58String(ar.transactionId)
410+ let aA = toBase58String(ar.caller.bytes)
411+ let aR = lastBlock.timestamp
412+ let aS = q(((aQ + "_") + aA))
413+ if (!(isDefined(aS)))
386414 then throw("This artwork doesn't exit or you are not the owner")
387415 else {
388- let aE = p(("user_status_" + az))
389- if ((aE == ""))
416+ let aK = q(("user_status_" + aA))
417+ if ((aK == ""))
390418 then throw("Please register this account first")
391419 else {
392- let aO = t(((("art_issued_" + aN) + "_") + az))
393- let aP = t(((("art_maxmint_" + aN) + "_") + az))
394- if ((aO == aP))
420+ let aT = u(((("art_issued_" + aS) + "_") + aA))
421+ let aU = u(((("art_maxmint_" + aS) + "_") + aA))
422+ if ((aT == aU))
395423 then throw("You reached the max edition allowed to sell for this edition.")
396- else if ((aE == j))
424+ else if ((aK == k))
397425 then throw("Your account is suspended")
398- else if (!(isDefined(aN)))
426+ else if (!(isDefined(aS)))
399427 then throw("This artwork desn't exist")
400- else if ((size(aK) != 64))
428+ else if ((size(aQ) != 64))
401429 then throw("This hash is incorrect.")
402430 else {
403- let aQ = if ((aL > 0))
431+ let aV = if ((aF > 0))
404432 then true
405433 else false
406-[BooleanEntry(((("art_onsale_" + aN) + "_") + az), aQ), IntegerEntry(((("art_price_" + aN) + "_") + az), aL), StringEntry("last_invoke_id", B)]
434+[BooleanEntry(((("art_onsale_" + aS) + "_") + aA), aV), IntegerEntry(((("art_price_" + aS) + "_") + aA), aF), StringEntry("last_invoke_id", C)]
407435 }
408436 }
409437 }
411439
412440
413441
414-@Callable(aq)
415-func buyArtwork (aK,aR) = {
416- let B = toBase58String(aq.transactionId)
417- let az = toBase58String(aq.caller.bytes)
418- let aS = t("total_nft_issued")
419- let aN = p(((aK + "_") + aR))
420- if ((aN == ""))
442+@Callable(ar)
443+func buyArtwork (aQ,aW) = {
444+ let C = toBase58String(ar.transactionId)
445+ let aA = toBase58String(ar.caller.bytes)
446+ let aX = u("total_nft_issued")
447+ let aS = q(((aQ + "_") + aW))
448+ if ((aS == ""))
421449 then throw("This artwork doesn't exit or you are not the owner")
422450 else {
423- let aE = p(("user_status_" + az))
424- if (!(isDefined(aE)))
451+ let aK = q(("user_status_" + aA))
452+ if (!(isDefined(aK)))
425453 then throw("Please register this account first")
426454 else {
427- let aT = p(((("art_sold_" + aN) + "_") + aR))
428- let aO = t(((("art_issued_" + aN) + "_") + aR))
429- let aU = t(((("art_price_" + aN) + "_") + aR))
430- if ((aU == 0))
455+ let aY = q(((("art_sold_" + aS) + "_") + aW))
456+ let aT = u(((("art_issued_" + aS) + "_") + aW))
457+ let aZ = u(((("art_price_" + aS) + "_") + aW))
458+ if ((aZ == 0))
431459 then throw("This artwork is not for sell")
432460 else {
433- let aP = t(((("art_maxmint_" + aN) + "_") + aR))
434- let aV = value(aq.payments[0])
435- let aW = value(aV.amount)
436- let aX = if (isDefined(aV.assetId))
461+ let aU = u(((("art_maxmint_" + aS) + "_") + aW))
462+ let aB = value(ar.payments[0])
463+ let aC = value(aB.amount)
464+ let aD = if (isDefined(aB.assetId))
437465 then throw("Only Waves token accepted at the moment")
438466 else unit
439- if ((aO == aP))
467+ if ((aT == aU))
440468 then throw("Cannot buy this artwork anymore")
441- else if ((aU != aW))
469+ else if ((aZ != aC))
442470 then throw("Payment don't match seller price")
443471 else {
444- let aY = (aO + 1)
445- let aM = lastBlock.timestamp
446- let aZ = (((((((((((((("{\"version\": 1,\"artID\": \"" + aN) + "\",\"maxIssuable\": \"") + toString(aP)) + "\",\"signID\": \"SA_") + toString((aS + 1))) + "\", \"creator\": \"") + aR) + "\", \"issue\": \"") + toString(aY)) + "/") + toString(aP)) + "\", \"hash\": ") + aK) + "}")
447- let ba = Issue(("SA_" + toString((aS + 1))), aZ, 1, 0, false)
448- let bb = calculateAssetId(ba)
449- let aQ = if ((aY == aP))
472+ let ba = (aT + 1)
473+ let aR = lastBlock.timestamp
474+ let bb = (((((((((((((("{\"version\": 1,\"artID\": \"" + aS) + "\",\"maxIssuable\": \"") + toString(aU)) + "\",\"signID\": \"SA_") + toString((aX + 1))) + "\", \"creator\": \"") + aW) + "\", \"issue\": \"") + toString(ba)) + "/") + toString(aU)) + "\", \"hash\": ") + aQ) + "}")
475+ let bc = Issue(("SA_" + toString((aX + 1))), bb, 1, 0, false)
476+ let bd = calculateAssetId(bc)
477+ let aV = if ((ba == aU))
450478 then false
451479 else true
452-[IntegerEntry(((("art_issued_" + aN) + "_") + aR), aY), StringEntry(((((((("art_sold_" + toString(aY)) + "_of_") + toString(aP)) + "_") + aN) + "_") + aR), ((((((az + "_") + toString(aM)) + "_") + B) + "_") + toString(aU))), IntegerEntry("total_nft_issued", (aS + 1)), StringEntry("last_invoke_id", B), ba, BooleanEntry(((("art_onsale_" + aN) + "_") + az), aQ), ScriptTransfer(Address(fromBase58String(aR)), aW, aX), ScriptTransfer(aq.caller, 1, bb)]
480+[IntegerEntry(((("art_issued_" + aS) + "_") + aW), ba), StringEntry(((((((("art_sold_" + toString(ba)) + "_of_") + toString(aU)) + "_") + aS) + "_") + aW), ((((((aA + "_") + toString(aR)) + "_") + C) + "_") + toString(aZ))), IntegerEntry("total_nft_issued", (aX + 1)), StringEntry("last_invoke_id", C), bc, BooleanEntry(((("art_onsale_" + aS) + "_") + aA), aV), ScriptTransfer(Address(fromBase58String(aW)), aC, aD), ScriptTransfer(ar.caller, 1, bd)]
453481 }
454482 }
455483 }
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 4 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = value(addressFromString("3N2s5RtaHPBenCsx2ECcoFRbYHx3noZhXW1"))
55
66 let b = value(addressFromString("3MpJEb36ZQyk1haKnocayJcYM31cNPXPiK3"))
77
88 let c = value(addressFromString("3NC28hSivrmsTUXaYD1x6L362J4ZpUnoTdB"))
99
10-let d = base58'Gf9t8FA4H3ssoZPCwrg3KwUFCci8zuUFP9ssRsUY3s6a'
10+let d = "3N1E6tXddRoVaRfQ9dQ3vg5LaW2fsd8HKub"
1111
12-let e = "3KFXBGGLCjA5Z2DuW4Dq9fDDrHjJJP1ZEkaoajSzuKsC"
12+let e = base58'Gf9t8FA4H3ssoZPCwrg3KwUFCci8zuUFP9ssRsUY3s6a'
1313
14-let f = "3NCqpdb8jHW1d1hqZgeS9AE2MJ2Keh95jMC"
14+let f = "3KFXBGGLCjA5Z2DuW4Dq9fDDrHjJJP1ZEkaoajSzuKsC"
1515
16-let g = true
16+let g = "3NCqpdb8jHW1d1hqZgeS9AE2MJ2Keh95jMC"
1717
18-let h = "CREATED"
18+let h = true
1919
20-let i = "VERIFIED"
20+let i = "CREATED"
2121
22-let j = "SUSPENDED"
22+let j = "VERIFIED"
2323
24-let k = "REMOVED"
24+let k = "SUSPENDED"
2525
26-let l = "UNREGISTERED"
26+let l = "REMOVED"
2727
28-let m = "ON_SALE"
28+let m = "UNREGISTERED"
2929
30-let n = "SOLD"
30+let n = "ON_SALE"
3131
32-let o = "CANCELED"
32+let o = "SOLD"
3333
34-func p (q) = {
35- let r = getString(this, q)
36- if ($isInstanceOf(r, "String"))
34+let p = "CANCELED"
35+
36+func q (r) = {
37+ let s = getString(this, r)
38+ if ($isInstanceOf(s, "String"))
3739 then {
38- let s = r
39- s
40+ let t = s
41+ t
4042 }
4143 else ""
4244 }
4345
4446
45-func t (q) = {
46- let r = getInteger(this, q)
47- if ($isInstanceOf(r, "Int"))
47+func u (r) = {
48+ let s = getInteger(this, r)
49+ if ($isInstanceOf(s, "Int"))
4850 then {
49- let u = r
50- u
51+ let v = s
52+ v
5153 }
5254 else 0
5355 }
5456
5557
56-func v (w,x,y) = {
57- let r = getString(c, ((("data_fc_" + w) + "_") + x))
58- if ($isInstanceOf(r, "String"))
58+func w (x,y,z) = {
59+ let s = getString(c, ((("data_fc_" + x) + "_") + y))
60+ if ($isInstanceOf(s, "String"))
5961 then {
60- let s = r
61- if (contains(s, y))
62+ let t = s
63+ if (contains(t, z))
6264 then true
6365 else false
6466 }
6567 else false
6668 }
6769
6870
69-func z (A,B) = {
70- let C = value(assetInfo(fromBase58String(B)))
71- if (if (if ((C.quantity != 1))
71+func A (B,C) = {
72+ let D = value(assetInfo(fromBase58String(C)))
73+ if (if (if ((D.quantity != 1))
7274 then true
73- else (C.decimals != 0))
75+ else (D.decimals != 0))
7476 then true
75- else (C.reissuable != false))
76- then (A + 0)
77- else (A + 1)
77+ else (D.reissuable != false))
78+ then (B + 0)
79+ else (B + 1)
7880 }
7981
8082
81-func D (E) = if (!(g))
83+func E (F) = if (!(h))
8284 then true
8385 else {
84- let r = getBoolean(b, E)
85- if ($isInstanceOf(r, "Boolean"))
86+ let s = getBoolean(b, F)
87+ if ($isInstanceOf(s, "Boolean"))
8688 then {
87- let F = r
88- F
89+ let G = s
90+ G
8991 }
9092 else throw("You are not allowed, please contact us first.")
9193 }
9294
9395
94-func G (E) = {
95- let r = getString(this, ("user_status_" + E))
96- if ($isInstanceOf(r, "String"))
96+func H (F) = {
97+ let s = getString(this, ("user_status_" + F))
98+ if ($isInstanceOf(s, "String"))
9799 then {
98- let F = r
99- F
100+ let G = s
101+ G
100102 }
101103 else throw("Something went wrong.")
102104 }
103105
104106
105-func H (I) = ("user_" + I)
107+func I (J) = ("user_" + J)
106108
107109
108-func J (I) = ("user_name_" + I)
110+func K (J) = ("user_name_" + J)
109111
110112
111-func K (I) = ("user_desc_" + I)
113+func L (J) = ("user_desc_" + J)
112114
113115
114-func L (I) = ("user_social_" + I)
116+func M (J) = ("user_social_" + J)
115117
116118
117-func M (I) = ("user_thumb_" + I)
119+func N (J) = ("user_thumb_" + J)
118120
119121
120-func N (I) = ("user_isartist_" + I)
122+func O (J) = ("user_isartist_" + J)
121123
122124
123-func O (I) = ("user_status_" + I)
125+func P (J) = ("user_status_" + J)
124126
125127
126-func P (I) = ("user_date_" + I)
128+func Q (J) = ("user_date_" + J)
127129
128130
129-func Q (I,R) = ((("art_date_" + R) + "_") + I)
131+func R (J,S) = ((("art_date_" + S) + "_") + J)
130132
131133
132-func S (I,R) = ((("art_name_" + R) + "_") + I)
134+func T (J,S) = ((("art_name_" + S) + "_") + J)
133135
134136
135-func T (I,R) = ((("art_desc_" + R) + "_") + I)
137+func U (J,S) = ((("art_desc_" + S) + "_") + J)
136138
137139
138-func U (I,R) = ((("art_display_cid_" + R) + "_") + I)
140+func V (J,S) = ((("art_display_cid_" + S) + "_") + J)
139141
140142
141-func V (I,R) = ((("art_export_hash_" + R) + "_") + I)
143+func W (J,S) = ((("art_export_hash_" + S) + "_") + J)
142144
143145
144-func W (I,R) = ((("art_export_cid_" + R) + "_") + I)
146+func X (J,S) = ((("art_export_cid_" + S) + "_") + J)
145147
146148
147-func X (I,R) = ((("art_maxmint_" + R) + "_") + I)
149+func Y (J,S) = ((("art_maxmint_" + S) + "_") + J)
148150
149151
150-func Y (I,R) = ((("art_signid_" + R) + "_") + I)
152+func Z (J,S) = ((("art_signid_" + S) + "_") + J)
151153
152154
153-func Z (I,R) = ((("art_issued_" + R) + "_") + I)
155+func aa (J,S) = ((("art_issued_" + S) + "_") + J)
154156
155157
156-func aa (I,R) = ((("art_onsale_" + R) + "_") + I)
158+func ab (J,S) = ((("art_onsale_" + S) + "_") + J)
157159
158160
159-func ab (I,R) = ((("art_licence_hash_" + R) + "_") + I)
161+func ac (J,S) = ((("art_licence_hash_" + S) + "_") + J)
160162
161163
162-func ac (I,R) = ((("art_licence_cid_" + R) + "_") + I)
164+func ad (J,S) = ((("art_licence_cid_" + S) + "_") + J)
163165
164166
165-func ad (I,R) = ((("art_tags_" + R) + "_") + I)
167+func ae (J,S) = ((("art_tags_" + S) + "_") + J)
166168
167169
168-func ae (I,R) = ((("art_type_" + R) + "_") + I)
170+func af (J,S) = ((("art_type_" + S) + "_") + J)
169171
170172
171-func af (y) = ("art_owner_by_hash_" + y)
173+func ag (z) = ("art_owner_by_hash_" + z)
172174
173175
174-func ag (y,I) = ("art_txid_by_hash_owner_" + toBase58String(sha256_16Kb(toBytes((y + I)))))
176+func ah (z,J) = ("art_txid_by_hash_owner_" + toBase58String(sha256_16Kb(toBytes((z + J)))))
175177
176178
177-@Callable(u)
178-func registerUser (ah,ai,aj,ak) = {
179- let I = toString(addressFromPublicKey(u.callerPublicKey))
180- let al = D(I)
181- let B = toBase58String(u.transactionId)
182- let am = p(("user_" + I))
183- let an = lastBlock.timestamp
184- if (!(al))
179+@Callable(v)
180+func registerUser (ai,aj,ak,al) = {
181+ let J = toString(addressFromPublicKey(v.callerPublicKey))
182+ let am = E(J)
183+ let C = toBase58String(v.transactionId)
184+ let an = q(("user_" + J))
185+ let ao = lastBlock.timestamp
186+ if (!(am))
185187 then throw("You are now allowed to register yet, please contact us first to get approved.")
186- else if (if ((ah == ""))
188+ else if (if ((ai == ""))
187189 then true
188- else (ai == ""))
190+ else (aj == ""))
189191 then throw("Name and description cannot be empty")
190- else if ((size(ai) > 600))
192+ else if ((size(aj) > 600))
191193 then throw("600 Characters maximum for the description")
192- else if ((am == ""))
193- then [IntegerEntry(P(I), an), StringEntry(H(I), ((B + "_") + toString(lastBlock.timestamp))), StringEntry(J(I), ah), StringEntry(K(I), ai), StringEntry(L(I), ak), StringEntry(M(I), aj), BooleanEntry(N(I), false), StringEntry(O(I), h), StringEntry("last_invoke_id", B)]
194+ else if ((an == ""))
195+ then [IntegerEntry(Q(J), ao), StringEntry(I(J), ((C + "_") + toString(lastBlock.timestamp))), StringEntry(K(J), ai), StringEntry(L(J), aj), StringEntry(M(J), al), StringEntry(N(J), ak), BooleanEntry(O(J), false), StringEntry(P(J), i), StringEntry("last_invoke_id", C)]
194196 else throw("This user is already registered, use updateUser instead")
195197 }
196198
197199
198200
199-@Callable(u)
200-func updateUser (ah,ai,aj,ak) = {
201- let I = toString(addressFromPublicKey(u.callerPublicKey))
202- let al = D(I)
203- if (!(al))
201+@Callable(v)
202+func updateUser (ai,aj,ak,al) = {
203+ let J = toString(addressFromPublicKey(v.callerPublicKey))
204+ let am = E(J)
205+ if (!(am))
204206 then throw("You are now allowed to update your infos anymore.")
205207 else {
206- let B = toBase58String(u.transactionId)
207- let am = p(("user_" + I))
208- let an = lastBlock.timestamp
209- let ao = G(I)
210- if ((ao == j))
208+ let C = toBase58String(v.transactionId)
209+ let an = q(("user_" + J))
210+ let ao = lastBlock.timestamp
211+ let ap = H(J)
212+ if ((ap == k))
211213 then throw("Your account have been suspended")
212- else if ((ao == k))
214+ else if ((ap == l))
213215 then throw("Your account have been removed")
214- else if (if ((ah == ""))
216+ else if (if ((ai == ""))
215217 then true
216- else (ai == ""))
218+ else (aj == ""))
217219 then throw("Name and description cannot be empty")
218- else if ((size(ai) > 600))
220+ else if ((size(aj) > 600))
219221 then throw("600 Characters maximum for the description")
220- else if ((am != ""))
221- then [StringEntry(J(I), ah), StringEntry(K(I), ai), StringEntry(L(I), ak), StringEntry(M(I), aj), StringEntry("last_invoke_id", B)]
222+ else if ((an != ""))
223+ then [StringEntry(K(J), ai), StringEntry(L(J), aj), StringEntry(M(J), al), StringEntry(N(J), ak), StringEntry("last_invoke_id", C)]
222224 else throw("Please register first with registerUser")
223225 }
224226 }
225227
226228
227229
228-@Callable(u)
229-func deleteUser (ap) = {
230- let I = toString(addressFromPublicKey(u.callerPublicKey))
231- let B = toBase58String(u.transactionId)
232- if ((I != f))
230+@Callable(v)
231+func deleteUser (aq) = {
232+ let J = toString(addressFromPublicKey(v.callerPublicKey))
233+ let C = toBase58String(v.transactionId)
234+ if ((J != g))
233235 then throw("You are not allowed to do that")
234- else [DeleteEntry(P(I)), DeleteEntry(H(I)), DeleteEntry(J(I)), DeleteEntry(K(I)), DeleteEntry(L(I)), DeleteEntry(M(I)), DeleteEntry(N(I)), StringEntry(O(I), k), StringEntry("last_invoke_id", B)]
236+ else [DeleteEntry(Q(J)), DeleteEntry(I(J)), DeleteEntry(K(J)), DeleteEntry(L(J)), DeleteEntry(M(J)), DeleteEntry(N(J)), DeleteEntry(O(J)), StringEntry(P(J), l), StringEntry("last_invoke_id", C)]
235237 }
236238
237239
238240
239-@Callable(u)
240-func suspendUser (ap) = {
241- let I = toString(addressFromPublicKey(u.callerPublicKey))
242- let B = toBase58String(u.transactionId)
243- if ((I != f))
241+@Callable(v)
242+func suspendUser (aq) = {
243+ let J = toString(addressFromPublicKey(v.callerPublicKey))
244+ let C = toBase58String(v.transactionId)
245+ if ((J != g))
244246 then throw("You are not allowed to do that")
245- else [StringEntry(O(I), j), StringEntry("last_invoke_id", B)]
247+ else [StringEntry(P(J), k), StringEntry("last_invoke_id", C)]
246248 }
247249
248250
249251
250-@Callable(aq)
251-func addArtwork (y,w,ah,ai,ar,as,at,au,av,aw,ax,ay) = {
252- let R = toBase58String(aq.transactionId)
253- let az = toBase58String(aq.caller.bytes)
254- let aA = p(ag(y, az))
255- if ((aA != ""))
256- then throw("You already added this artwork on Sign Art")
252+@Callable(ar)
253+func addArtwork (z,x,ai,aj,as,at,au,av,aw,ax,ay,az) = {
254+ let S = toBase58String(ar.transactionId)
255+ let aA = toBase58String(ar.caller.bytes)
256+ if ((size(ar.payments) == 0))
257+ then throw("No payment attached")
257258 else {
258- let aB = p(af(y))
259- if ((aB != ""))
260- then throw("This artwork hash is already registered on Sign Art")
259+ let aB = value(ar.payments[0])
260+ let aC = value(aB.amount)
261+ let aD = if (if (isDefined(aB.assetId))
262+ then (aB.assetId == e)
263+ else false)
264+ then aB.assetId
265+ else throw("Only SIGN token accepted at the moment")
266+ let aE = {
267+ let s = getInteger(a, ("certification_fee_" + toBase58String(e)))
268+ if ($isInstanceOf(s, "Int"))
269+ then {
270+ let aF = s
271+ aF
272+ }
273+ else throw("Price undefined in oracle")
274+ }
275+ if ((aC != aE))
276+ then throw(("Payment amount should be " + toString(aE)))
261277 else {
262- let aC = v(w, az, y)
263- if (!(aC))
264- then throw("Sign Certificate not found on Sign-web.app smart contract for this address.")
265- else if ((size(ah) == 0))
266- then throw("Title cannot be empty")
267- else if ((size(ah) > 100))
268- then throw("100 Characters maximum for the name")
269- else if ((size(ai) > 1000))
270- then throw("1000 Characters maximum for the description")
271- else if ((size(ai) == 0))
272- then throw("Description cannot be empty")
273- else {
274- let aD = split(ar, ",")
275- if ((size(aD) > 5))
276- then throw("Tags should be maximum 5 single word separated by space.")
277- else {
278- let aE = {
279- let r = getString(this, ("user_status_" + az))
280- if ($isInstanceOf(r, "String"))
281- then {
282- let aF = r
283- aF
278+ let aG = q(ah(z, aA))
279+ if ((aG != ""))
280+ then throw("You already added this artwork on Sign Art")
281+ else {
282+ let aH = q(ag(z))
283+ if ((aH != ""))
284+ then throw("This artwork hash is already registered on Sign Art")
285+ else {
286+ let aI = w(x, aA, z)
287+ if (!(aI))
288+ then throw("Sign Certificate not found on Sign-web.app smart contract for this address.")
289+ else if ((size(av) == 0))
290+ then throw("Display CID cannot be empty")
291+ else if ((size(ai) == 0))
292+ then throw("Title cannot be empty")
293+ else if ((size(ai) > 100))
294+ then throw("100 Characters maximum for the name")
295+ else if ((size(aj) > 1000))
296+ then throw("1000 Characters maximum for the description")
297+ else if ((size(aj) == 0))
298+ then throw("Description cannot be empty")
299+ else {
300+ let aJ = split(as, ",")
301+ if ((size(aJ) > 5))
302+ then throw("Tags should be maximum 5 single word separated by space.")
303+ else {
304+ let aK = {
305+ let s = getString(this, ("user_status_" + aA))
306+ if ($isInstanceOf(s, "String"))
307+ then {
308+ let aL = s
309+ aL
310+ }
311+ else m
312+ }
313+ let ao = lastBlock.timestamp
314+ if (if (isDefined(aK))
315+ then (aK == m)
316+ else false)
317+ then throw("Please register this account first with \"User infos\" tab")
318+ else if ((aK == k))
319+ then throw("Your account is suspended")
320+ else if ((aK == l))
321+ then throw("Your account have been removed")
322+ else if ((au > 10))
323+ then throw("Maximum 10 editions per artwork")
324+ else if ((size(z) != 64))
325+ then throw("Hash should be sha256 string composed of 64 char.")
326+ else [StringEntry(ag(z), aA), StringEntry(ah(z, aA), S), BooleanEntry(O(aA), true), IntegerEntry(R(aA, S), ao), StringEntry(T(aA, S), ai), StringEntry(U(aA, S), aj), StringEntry(V(aA, S), av), StringEntry(X(aA, S), ax), StringEntry(W(aA, S), aw), StringEntry(ac(aA, S), ay), StringEntry(ad(aA, S), az), StringEntry(af(aA, S), at), StringEntry(ae(aA, S), as), IntegerEntry(Y(aA, S), au), StringEntry(Z(aA, S), x), IntegerEntry(aa(aA, S), 0), BooleanEntry(ab(aA, S), false), StringEntry("last_invoke_id", S), ScriptTransfer(Address(fromBase58String(d)), aC, aD)]
327+ }
284328 }
285- else l
286- }
287- let an = lastBlock.timestamp
288- if (if (isDefined(aE))
289- then (aE == l)
290- else false)
291- then throw("Please register this account first with \"User infos\" tab")
292- else if ((aE == j))
293- then throw("Your account is suspended")
294- else if ((aE == k))
295- then throw("Your account have been removed")
296- else if ((at > 10))
297- then throw("Maximum 10 editions per artwork")
298- else if ((size(y) != 64))
299- then throw("Hash should be sha256 string composed of 64 char.")
300- else [StringEntry(af(y), az), StringEntry(ag(y, az), R), BooleanEntry(N(az), true), IntegerEntry(Q(az, R), an), StringEntry(S(az, R), ah), StringEntry(T(az, R), ai), StringEntry(U(az, R), au), StringEntry(W(az, R), aw), StringEntry(V(az, R), av), StringEntry(ab(az, R), ax), StringEntry(ac(az, R), ay), StringEntry(ae(az, R), as), StringEntry(ad(az, R), ar), IntegerEntry(X(az, R), at), StringEntry(Y(az, R), w), IntegerEntry(Z(az, R), 0), BooleanEntry(aa(az, R), false), StringEntry("last_invoke_id", R)]
301- }
302- }
329+ }
330+ }
303331 }
304332 }
305333 }
306334
307335
308336
309-@Callable(aq)
310-func updateArtwork (aG,ah,ai,ar,as,at,au,av,aw,ax,ay) = {
311- let aH = toBase58String(aq.transactionId)
312- let az = toBase58String(aq.caller.bytes)
313- let aA = p(S(az, aG))
314- if ((aA == ""))
337+@Callable(ar)
338+func updateArtwork (aM,ai,aj,as,at,au,av,aw,ax,ay,az) = {
339+ let aN = toBase58String(ar.transactionId)
340+ let aA = toBase58String(ar.caller.bytes)
341+ let aG = q(T(aA, aM))
342+ if ((aG == ""))
315343 then throw("This entry doesn't exist or you are not the owner")
316- else if ((size(ah) == 0))
344+ else if ((size(ai) == 0))
317345 then throw("Title cannot be empty")
318- else if ((size(ah) > 100))
346+ else if ((size(ai) > 100))
319347 then throw("100 Characters maximum for the name")
320- else if ((size(ai) > 1000))
348+ else if ((size(aj) > 1000))
321349 then throw("1000 Characters maximum for the description")
322- else if ((size(ai) == 0))
350+ else if ((size(aj) == 0))
323351 then throw("Description cannot be empty")
324352 else {
325- let aI = {
326- let r = getInteger(this, Z(az, aG))
327- if ($isInstanceOf(r, "Int"))
353+ let aO = {
354+ let s = getInteger(this, aa(aA, aM))
355+ if ($isInstanceOf(s, "Int"))
328356 then {
329- let F = r
330- if ((F == 0))
357+ let G = s
358+ if ((G == 0))
331359 then false
332360 else true
333361 }
334362 else throw("Something went wrong.")
335363 }
336- let aD = split(ar, ",")
337- if ((size(aD) > 5))
364+ let aJ = split(as, ",")
365+ if ((size(aJ) > 5))
338366 then throw("Tags should be maximum 5 single word separated by space.")
339367 else {
340- let aE = {
341- let r = getString(this, ("user_status_" + az))
342- if ($isInstanceOf(r, "String"))
368+ let aK = {
369+ let s = getString(this, ("user_status_" + aA))
370+ if ($isInstanceOf(s, "String"))
343371 then {
344- let aF = r
345- aF
372+ let aL = s
373+ aL
346374 }
347- else l
375+ else m
348376 }
349- if (if (isDefined(aE))
350- then (aE == l)
377+ if (if (isDefined(aK))
378+ then (aK == m)
351379 else false)
352380 then throw("Please register this account first with \"User infos\" tab")
353- else if ((aE == j))
381+ else if ((aK == k))
354382 then throw("Your account is suspended")
355- else if ((aE == k))
383+ else if ((aK == l))
356384 then throw("Your account have been removed")
357- else if ((at > 10))
385+ else if ((au > 10))
358386 then throw("Maximum 10 editions per artwork")
359- else if (!(aI))
360- then [StringEntry(S(az, aG), ah), StringEntry(T(az, aG), ai), StringEntry(U(az, aG), au), StringEntry(W(az, aG), aw), StringEntry(V(az, aG), av), StringEntry(ac(az, aG), ay), StringEntry(ab(az, aG), ax), IntegerEntry(X(az, aG), at), StringEntry(ad(az, aG), ar), StringEntry(ae(az, aG), as), StringEntry("last_invoke_id", aH)]
361- else [StringEntry(S(az, aG), ah), StringEntry(T(az, aG), ai), StringEntry(U(az, aG), au), StringEntry(ae(az, aG), as), StringEntry(ad(az, aG), ar), StringEntry("last_invoke_id", aH)]
387+ else if (!(aO))
388+ then [StringEntry(T(aA, aM), ai), StringEntry(U(aA, aM), aj), StringEntry(V(aA, aM), av), StringEntry(X(aA, aM), ax), StringEntry(W(aA, aM), aw), StringEntry(ad(aA, aM), az), StringEntry(ac(aA, aM), ay), IntegerEntry(Y(aA, aM), au), StringEntry(ae(aA, aM), as), StringEntry(af(aA, aM), at), StringEntry("last_invoke_id", aN)]
389+ else [StringEntry(T(aA, aM), ai), StringEntry(U(aA, aM), aj), StringEntry(V(aA, aM), av), StringEntry(af(aA, aM), at), StringEntry(ae(aA, aM), as), StringEntry("last_invoke_id", aN)]
362390 }
363391 }
364392 }
365393
366394
367395
368-@Callable(u)
369-func deleteArtwork (R,aJ) = {
370- let I = toString(addressFromPublicKey(u.callerPublicKey))
371- let B = toBase58String(u.transactionId)
372- if ((I != f))
396+@Callable(v)
397+func deleteArtwork (S,aP) = {
398+ let J = toString(addressFromPublicKey(v.callerPublicKey))
399+ let C = toBase58String(v.transactionId)
400+ if ((J != g))
373401 then throw("You are not allowed to do that")
374- else [DeleteEntry(Q(aJ, R)), DeleteEntry(S(aJ, R)), DeleteEntry(T(aJ, R)), DeleteEntry(U(aJ, R)), DeleteEntry(W(aJ, R)), DeleteEntry(V(aJ, R)), DeleteEntry(ab(aJ, R)), DeleteEntry(ac(aJ, R)), DeleteEntry(ae(aJ, R)), DeleteEntry(ad(aJ, R)), DeleteEntry(X(aJ, R)), DeleteEntry(Y(aJ, R)), DeleteEntry(Z(aJ, R)), DeleteEntry(aa(aJ, R)), StringEntry("last_invoke_id", B)]
402+ else [DeleteEntry(R(aP, S)), DeleteEntry(T(aP, S)), DeleteEntry(U(aP, S)), DeleteEntry(V(aP, S)), DeleteEntry(X(aP, S)), DeleteEntry(W(aP, S)), DeleteEntry(ac(aP, S)), DeleteEntry(ad(aP, S)), DeleteEntry(af(aP, S)), DeleteEntry(ae(aP, S)), DeleteEntry(Y(aP, S)), DeleteEntry(Z(aP, S)), DeleteEntry(aa(aP, S)), DeleteEntry(ab(aP, S)), StringEntry("last_invoke_id", C)]
375403 }
376404
377405
378406
379-@Callable(aq)
380-func sellArtwork (aK,aL) = {
381- let B = toBase58String(aq.transactionId)
382- let az = toBase58String(aq.caller.bytes)
383- let aM = lastBlock.timestamp
384- let aN = p(((aK + "_") + az))
385- if (!(isDefined(aN)))
407+@Callable(ar)
408+func sellArtwork (aQ,aF) = {
409+ let C = toBase58String(ar.transactionId)
410+ let aA = toBase58String(ar.caller.bytes)
411+ let aR = lastBlock.timestamp
412+ let aS = q(((aQ + "_") + aA))
413+ if (!(isDefined(aS)))
386414 then throw("This artwork doesn't exit or you are not the owner")
387415 else {
388- let aE = p(("user_status_" + az))
389- if ((aE == ""))
416+ let aK = q(("user_status_" + aA))
417+ if ((aK == ""))
390418 then throw("Please register this account first")
391419 else {
392- let aO = t(((("art_issued_" + aN) + "_") + az))
393- let aP = t(((("art_maxmint_" + aN) + "_") + az))
394- if ((aO == aP))
420+ let aT = u(((("art_issued_" + aS) + "_") + aA))
421+ let aU = u(((("art_maxmint_" + aS) + "_") + aA))
422+ if ((aT == aU))
395423 then throw("You reached the max edition allowed to sell for this edition.")
396- else if ((aE == j))
424+ else if ((aK == k))
397425 then throw("Your account is suspended")
398- else if (!(isDefined(aN)))
426+ else if (!(isDefined(aS)))
399427 then throw("This artwork desn't exist")
400- else if ((size(aK) != 64))
428+ else if ((size(aQ) != 64))
401429 then throw("This hash is incorrect.")
402430 else {
403- let aQ = if ((aL > 0))
431+ let aV = if ((aF > 0))
404432 then true
405433 else false
406-[BooleanEntry(((("art_onsale_" + aN) + "_") + az), aQ), IntegerEntry(((("art_price_" + aN) + "_") + az), aL), StringEntry("last_invoke_id", B)]
434+[BooleanEntry(((("art_onsale_" + aS) + "_") + aA), aV), IntegerEntry(((("art_price_" + aS) + "_") + aA), aF), StringEntry("last_invoke_id", C)]
407435 }
408436 }
409437 }
410438 }
411439
412440
413441
414-@Callable(aq)
415-func buyArtwork (aK,aR) = {
416- let B = toBase58String(aq.transactionId)
417- let az = toBase58String(aq.caller.bytes)
418- let aS = t("total_nft_issued")
419- let aN = p(((aK + "_") + aR))
420- if ((aN == ""))
442+@Callable(ar)
443+func buyArtwork (aQ,aW) = {
444+ let C = toBase58String(ar.transactionId)
445+ let aA = toBase58String(ar.caller.bytes)
446+ let aX = u("total_nft_issued")
447+ let aS = q(((aQ + "_") + aW))
448+ if ((aS == ""))
421449 then throw("This artwork doesn't exit or you are not the owner")
422450 else {
423- let aE = p(("user_status_" + az))
424- if (!(isDefined(aE)))
451+ let aK = q(("user_status_" + aA))
452+ if (!(isDefined(aK)))
425453 then throw("Please register this account first")
426454 else {
427- let aT = p(((("art_sold_" + aN) + "_") + aR))
428- let aO = t(((("art_issued_" + aN) + "_") + aR))
429- let aU = t(((("art_price_" + aN) + "_") + aR))
430- if ((aU == 0))
455+ let aY = q(((("art_sold_" + aS) + "_") + aW))
456+ let aT = u(((("art_issued_" + aS) + "_") + aW))
457+ let aZ = u(((("art_price_" + aS) + "_") + aW))
458+ if ((aZ == 0))
431459 then throw("This artwork is not for sell")
432460 else {
433- let aP = t(((("art_maxmint_" + aN) + "_") + aR))
434- let aV = value(aq.payments[0])
435- let aW = value(aV.amount)
436- let aX = if (isDefined(aV.assetId))
461+ let aU = u(((("art_maxmint_" + aS) + "_") + aW))
462+ let aB = value(ar.payments[0])
463+ let aC = value(aB.amount)
464+ let aD = if (isDefined(aB.assetId))
437465 then throw("Only Waves token accepted at the moment")
438466 else unit
439- if ((aO == aP))
467+ if ((aT == aU))
440468 then throw("Cannot buy this artwork anymore")
441- else if ((aU != aW))
469+ else if ((aZ != aC))
442470 then throw("Payment don't match seller price")
443471 else {
444- let aY = (aO + 1)
445- let aM = lastBlock.timestamp
446- let aZ = (((((((((((((("{\"version\": 1,\"artID\": \"" + aN) + "\",\"maxIssuable\": \"") + toString(aP)) + "\",\"signID\": \"SA_") + toString((aS + 1))) + "\", \"creator\": \"") + aR) + "\", \"issue\": \"") + toString(aY)) + "/") + toString(aP)) + "\", \"hash\": ") + aK) + "}")
447- let ba = Issue(("SA_" + toString((aS + 1))), aZ, 1, 0, false)
448- let bb = calculateAssetId(ba)
449- let aQ = if ((aY == aP))
472+ let ba = (aT + 1)
473+ let aR = lastBlock.timestamp
474+ let bb = (((((((((((((("{\"version\": 1,\"artID\": \"" + aS) + "\",\"maxIssuable\": \"") + toString(aU)) + "\",\"signID\": \"SA_") + toString((aX + 1))) + "\", \"creator\": \"") + aW) + "\", \"issue\": \"") + toString(ba)) + "/") + toString(aU)) + "\", \"hash\": ") + aQ) + "}")
475+ let bc = Issue(("SA_" + toString((aX + 1))), bb, 1, 0, false)
476+ let bd = calculateAssetId(bc)
477+ let aV = if ((ba == aU))
450478 then false
451479 else true
452-[IntegerEntry(((("art_issued_" + aN) + "_") + aR), aY), StringEntry(((((((("art_sold_" + toString(aY)) + "_of_") + toString(aP)) + "_") + aN) + "_") + aR), ((((((az + "_") + toString(aM)) + "_") + B) + "_") + toString(aU))), IntegerEntry("total_nft_issued", (aS + 1)), StringEntry("last_invoke_id", B), ba, BooleanEntry(((("art_onsale_" + aN) + "_") + az), aQ), ScriptTransfer(Address(fromBase58String(aR)), aW, aX), ScriptTransfer(aq.caller, 1, bb)]
480+[IntegerEntry(((("art_issued_" + aS) + "_") + aW), ba), StringEntry(((((((("art_sold_" + toString(ba)) + "_of_") + toString(aU)) + "_") + aS) + "_") + aW), ((((((aA + "_") + toString(aR)) + "_") + C) + "_") + toString(aZ))), IntegerEntry("total_nft_issued", (aX + 1)), StringEntry("last_invoke_id", C), bc, BooleanEntry(((("art_onsale_" + aS) + "_") + aA), aV), ScriptTransfer(Address(fromBase58String(aW)), aC, aD), ScriptTransfer(ar.caller, 1, bd)]
453481 }
454482 }
455483 }
456484 }
457485 }
458486
459487

github/deemru/w8io/3ef1775 
264.91 ms