tx · 7MK1qWwKhhQ1uZrVf4N3XqyDp3PbFKS44ntZFmdyZZw7

3NBegQZ2nQzhyAw5acz2w3dQtSr97S113xv:  -0.01400000 Waves

2020.09.18 14:50 [1182687] smart account 3NBegQZ2nQzhyAw5acz2w3dQtSr97S113xv > SELF 0.00000000 Waves

{ "type": 13, "id": "7MK1qWwKhhQ1uZrVf4N3XqyDp3PbFKS44ntZFmdyZZw7", "fee": 1400000, "feeAssetId": null, "timestamp": 1600429841257, "version": 2, "chainId": 84, "sender": "3NBegQZ2nQzhyAw5acz2w3dQtSr97S113xv", "senderPublicKey": "BtPnYKkAuL3EfH845GBBfaiSZ4DeT3PPS4Ms7xkdBz4k", "proofs": [ "5SkNrep6CTQpi1ECgTkhqG2bz5JFK8hTJin4pKpa2qWJxN5SzxzixHyS2BTB9qBgJ8wVZWRCGcWPSPNwgHZU4H8D" ], "script": "base64:AAIEAAAAAAAAAE4IAhIGCgQICAgIEgYKBAgICAgSBAoCCAgSAwoBCBIOCgwICAgICAgBCAgICAgSDQoLCAgICAgBCAgICAgSBAoCCAgSBAoCCAESBAoCCAgAAAAxAAAAAA9zdG9yYWdlVmVyaWZpZXIJAQAAAAV2YWx1ZQAAAAEJAAQmAAAAAQIAAAAjM04yczVSdGFIUEJlbkNzeDJFQ2NvRlJiWUh4M25vWmhYVzEAAAAADXVzZXJXaGl0ZWxpc3QJAQAAAAV2YWx1ZQAAAAEJAAQmAAAAAQIAAAAjM01wSkViMzZaUXlrMWhhS25vY2F5SmNZTTMxY05QWFBpSzMAAAAADHNpZ25WZXJpZmllcgkBAAAABXZhbHVlAAAAAQkABCYAAAABAgAAACMzTkMyOGhTaXZybXNUVVhhWUQxeDZMMzYySjRacFVub1RkQgAAAAALZmVlUmVjZWl2ZXICAAAAIzNOMUU2dFhkZFJvVmFSZlE5ZFEzdmc1TGFXMmZzZDhIS3ViAAAAAAtzaWduQXNzZXRJZAEAAAAg6KVqvMp3QvJwYTI1Sk9Fg7m5HuWZZxfDcerZC6EEresAAAAABnVzZG5JRAIAAAAsM0tGWEJHR0xDakE1WjJEdVc0RHE5ZkREckhqSkpQMVpFa2FvYWpTenVLc0MAAAAABWFkbWluAgAAACMzTXNHNmpQTkNyVkpVdFlCN1hKQnhTN3V0V3NYQWY0bjlWcAAAAAAGYWRtaW4yAgAAACMzTXptNFZMd3NOOXVad2JUTXpQajNYdXhWNmtFZkFSOFVETgAAAAAPV0hJVEVMSVNURURPTkxZBgAAAAALdXNlckFsbG93ZWQCAAAAB0FMTE9XRUQAAAAADnVzZXJSZWdpc3RlcmVkAgAAAApSRUdJU1RFUkVEAAAAAAx1c2VyVmVyaWZpZWQCAAAACFZFUklGSUVEAAAAAA11c2VyU3VzcGVuZGVkAgAAAAlTVVNQRU5ERUQAAAAAC3VzZXJSZW1vdmVkAgAAAAdSRU1PVkVEAAAAABB1c2VyVW5yZWdpc3RlcmVkAgAAAAxVTlJFR0lTVEVSRUQAAAAABm9uU2FsZQIAAAAHT05fU0FMRQAAAAAEc29sZAIAAAAEU09MRAAAAAAIY2FuY2VsZWQCAAAACENBTkNFTEVEAQAAAA5nZXRTdHJpbmdCeUtleQAAAAEAAAADa2V5BAAAAAckbWF0Y2gwCQAEHQAAAAIFAAAABHRoaXMFAAAAA2tleQMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAGU3RyaW5nBAAAAAFhBQAAAAckbWF0Y2gwBQAAAAFhAgAAAAABAAAAD2dldEludGVnZXJCeUtleQAAAAEAAAADa2V5BAAAAAckbWF0Y2gwCQAEGgAAAAIFAAAABHRoaXMFAAAAA2tleQMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAADSW50BAAAAAFpBQAAAAckbWF0Y2gwBQAAAAFpAAAAAAAAAAAAAQAAABRjaGVja1NpZ25DZXJ0aWZpY2F0ZQAAAAMAAAAGc2lnbklEAAAABU93bmVyAAAACnNoYTI1Nkhhc2gEAAAAByRtYXRjaDAJAAQdAAAAAgUAAAAMc2lnblZlcmlmaWVyCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAhkYXRhX2ZjXwUAAAAGc2lnbklEAgAAAAFfBQAAAAVPd25lcgMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAGU3RyaW5nBAAAAAFhBQAAAAckbWF0Y2gwAwkBAAAACGNvbnRhaW5zAAAAAgUAAAABYQUAAAAKc2hhMjU2SGFzaAYHBwEAAAAMdmFsaWRhdGVORlRzAAAAAgAAAAthY2N1bXVsYXRvcgAAAAJpZAQAAAAMYXNzZXREZXRhaWxzCQEAAAAFdmFsdWUAAAABCQAD7AAAAAEJAAJZAAAAAQUAAAACaWQDAwMJAQAAAAIhPQAAAAIIBQAAAAxhc3NldERldGFpbHMAAAAIcXVhbnRpdHkAAAAAAAAAAAEGCQEAAAACIT0AAAACCAUAAAAMYXNzZXREZXRhaWxzAAAACGRlY2ltYWxzAAAAAAAAAAAABgkBAAAAAiE9AAAAAggFAAAADGFzc2V0RGV0YWlscwAAAApyZWlzc3VhYmxlBwkAAGQAAAACBQAAAAthY2N1bXVsYXRvcgAAAAAAAAAAAAkAAGQAAAACBQAAAAthY2N1bXVsYXRvcgAAAAAAAAAAAQEAAAANdmVyaWZ5QWRkcmVzcwAAAAEAAAAEYWRkcgMJAQAAAAEhAAAAAQUAAAAPV0hJVEVMSVNURURPTkxZBgQAAAAHJG1hdGNoMAkABBsAAAACBQAAAA11c2VyV2hpdGVsaXN0BQAAAARhZGRyAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAAdCb29sZWFuBAAAAAFiBQAAAAckbWF0Y2gwBQAAAAFiCQAAAgAAAAECAAAALVlvdSBhcmUgbm90IGFsbG93ZWQsIHBsZWFzZSBjb250YWN0IHVzIGZpcnN0LgEAAAAMdmVyaWZ5U3RhdHVzAAAAAQAAAARhZGRyBAAAAAckbWF0Y2gwCQAEHQAAAAIFAAAABHRoaXMJAAEsAAAAAgIAAAAMdXNlcl9zdGF0dXNfBQAAAARhZGRyAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAAZTdHJpbmcEAAAAAWIFAAAAByRtYXRjaDAFAAAAAWIJAAACAAAAAQIAAAAVU29tZXRoaW5nIHdlbnQgd3JvbmcuAQAAAAtrZXlVc2VyQWRkcgAAAAEAAAAKY2FsbGVyQWRkcgkAASwAAAACAgAAAAV1c2VyXwUAAAAKY2FsbGVyQWRkcgEAAAALa2V5VXNlck5hbWUAAAABAAAACmNhbGxlckFkZHIJAAEsAAAAAgIAAAAKdXNlcl9uYW1lXwUAAAAKY2FsbGVyQWRkcgEAAAALa2V5VXNlckRlc2MAAAABAAAACmNhbGxlckFkZHIJAAEsAAAAAgIAAAAKdXNlcl9kZXNjXwUAAAAKY2FsbGVyQWRkcgEAAAANa2V5VXNlclNvY2lhbAAAAAEAAAAKY2FsbGVyQWRkcgkAASwAAAACAgAAAAx1c2VyX3NvY2lhbF8FAAAACmNhbGxlckFkZHIBAAAADGtleVVzZXJUaHVtYgAAAAEAAAAKY2FsbGVyQWRkcgkAASwAAAACAgAAAAt1c2VyX3RodW1iXwUAAAAKY2FsbGVyQWRkcgEAAAAPa2V5VXNlcklzQXJ0aXN0AAAAAQAAAApjYWxsZXJBZGRyCQABLAAAAAICAAAADnVzZXJfaXNhcnRpc3RfBQAAAApjYWxsZXJBZGRyAQAAAA1rZXlVc2VyU3RhdHVzAAAAAQAAAApjYWxsZXJBZGRyCQABLAAAAAICAAAADHVzZXJfc3RhdHVzXwUAAAAKY2FsbGVyQWRkcgEAAAALa2V5VXNlckRhdGUAAAABAAAACmNhbGxlckFkZHIJAAEsAAAAAgIAAAAKdXNlcl9kYXRlXwUAAAAK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AgkAASwAAAACAgAAABJhcnRfYXJ0aWRieXNpZ25pZF8FAAAABnNpZ25JZAIAAAABXwUAAAAKY2FsbGVyQWRkcgEAAAAVa2V5QXJ0VHhpZEJ5SGFzaE93bmVyAAAAAgAAAApzaGEyNTZIYXNoAAAACmNhbGxlckFkZHIJAAEsAAAAAgIAAAAXYXJ0X3R4aWRfYnlfaGFzaF9vd25lcl8JAAJYAAAAAQkAC1QAAAABCQABmwAAAAEJAAEsAAAAAgUAAAAKc2hhMjU2SGFzaAUAAAAKY2FsbGVyQWRkcgAAAAkAAAABaQEAAAAMcmVnaXN0ZXJVc2VyAAAABAAAAARuYW1lAAAAC2Rlc2NyaXB0aW9uAAAABXRodW1iAAAABnNvY2lhbAQAAAAKY2FsbGVyQWRkcgkABCUAAAABCQEAAAAUYWRkcmVzc0Zyb21QdWJsaWNLZXkAAAABCAUAAAABaQAAAA9jYWxsZXJQdWJsaWNLZXkEAAAAD3VzZXJDYW5SZWdpc3RlcgkBAAAADmdldFN0cmluZ0J5S2V5AAAAAQkBAAAADWtleVVzZXJTdGF0dXMAAAABBQAAAApjYWxsZXJBZGRyBAAAAAJpZAkAAlgAAAABCAUAAAABaQAAAA10cmFuc2FjdGlvbklkBAAAAAl0aW1lc3RhbXAIBQAAAAlsYXN0QmxvY2sAAAAJdGltZXN0YW1wAwMJAAAAAAAAAgUAAAAPdXNlckNhblJlZ2lzdGVyBQAAAA11c2VyU3VzcGVuZGVkBgkAAAAAAAACBQAAAA91c2VyQ2FuUmVnaXN0ZXIFAAAAC3VzZXJSZW1vdmVkCQAAAgAAAAECAAAAS1lvdSBhcmUgbm93IGFsbG93ZWQgdG8gcmVnaXN0ZXIsIHlvdXIgYWNjb3VudCBoYXZlIGJlZW4gc3VzcGVuZGVkLyByZW1vdmVkLgMJAAAAAAAAAgUAAAAPdXNlckNhblJlZ2lzdGVyBQAAAA51c2VyUmVnaXN0ZXJlZAkAAAIAAAABAgAAAD1Zb3UgYXJlIGFscmVhZHkgcmVnaXN0ZXJlZCwgcGxlYXNlIHVzZSB1cGRhdGUgbWV0aG9kIGluc3RlYWQuAwMJAAAAAAAAAgUAAAAPdXNlckNhblJlZ2lzdGVyAgAAAAAFAAAAD1dISVRFTElTVEVET05MWQcJAAACAAAAAQIAAABNWW91IGFyZSBub3cgYWxsb3dlZCB0byByZWdpc3RlciB5ZXQsIHBsZWFzZSBjb250YWN0IHVzIGZpcnN0IHRvIGdldCBhcHByb3ZlZC4DAwkAAAAAAAACBQAAAARuYW1lAgAAAAAGCQAAAAAAAAIFAAAAC2Rlc2NyaXB0aW9uAgAAAAAJAAACAAAAAQIAAAAkTmFtZSBhbmQgZGVzY3JpcHRpb24gY2Fubm90IGJlIGVtcHR5AwkAAGYAAAACCQABMQAAAAEFAAAAC2Rlc2NyaXB0aW9uAAAAAAAAAAJYCQAAAgAAAAECAAAAKjYwMCBDaGFyYWN0ZXJzIG1heGltdW0gZm9yIHRoZSBkZXNjcmlwdGlvbgkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkBAAAAC2tleVVzZXJEYXRlAAAAAQUAAAAKY2FsbGVyQWRkcgUAAAAJdGltZXN0YW1wCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAAAtrZXlVc2VyQWRkcgAAAAEFAAAACmNhbGxlckFkZHIJAAEsAAAAAgkAASwAAAACBQAAAAJpZAIAAAABXwkAAaQAAAABCAUAAAAJbGFzdEJsb2NrAAAACXRpbWVzdGFtcAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAALa2V5VXNlck5hbWUAAAABBQAAAApjYWxsZXJBZGRyBQAAAARuYW1lCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAAAtrZXlVc2VyRGVzYwAAAAEFAAAACmNhbGxlckFkZHIFAAAAC2Rlc2NyaXB0aW9uCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAAA1rZXlVc2VyU29jaWFsAAAAAQUAAAAKY2FsbGVyQWRkcgUAAAAGc29jaWFsCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAAAxrZXlVc2VyVGh1bWIAAAABBQAAAApjYWxsZXJBZGRyBQAAAAV0aHVtYgkABEwAAAACCQEAAAAMQm9vbGVhbkVudHJ5AAAAAgkBAAAAD2tleVVzZXJJc0FydGlzdAAAAAEFAAAACmNhbGxlckFkZHIHCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAAA1rZXlVc2VyU3RhdHVzAAAAAQUAAAAKY2FsbGVyQWRkcgUAAAAOdXNlclJlZ2lzdGVyZWQJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgIAAAAObGFzdF9pbnZva2VfaWQFAAAAAmlkBQAAAANuaWwAAAABaQEAAAAKdXBkYXRlVXNlcgAAAAQAAAAEbmFtZQAAAAtkZXNjcmlwdGlvbgAAAAV0aHVtYgAAAAZzb2NpYWwEAAAACmNhbGxlckFkZHIJAAQlAAAAAQkBAAAAFGFkZHJlc3NGcm9tUHVibGljS2V5AAAAAQgFAAAAAWkAAAAPY2FsbGVyUHVibGljS2V5BAAAAA91c2VyQ2FuUmVnaXN0ZXIJAQAAAA5nZXRTdHJpbmdCeUtleQAAAAEJAQAAAA1rZXlVc2VyU3RhdHVzAAAAAQUAAAAKY2FsbGVyQWRkcgMDCQAAAAAAAAIFAAAAD3VzZXJDYW5SZWdpc3RlcgUAAAANdXNlclN1c3BlbmRlZAYJAAAAAAAAAgUAAAAPdXNlckNhblJlZ2lzdGVyBQAAAAt1c2VyUmVtb3ZlZAkAAAIAAAABAgAAAEtZb3UgYXJlIG5vdyBhbGxvd2VkIHRvIHJlZ2lzdGVyLCB5b3VyIGFjY291bnQgaGF2ZSBiZWVuIHN1c3BlbmRlZC8gcmVtb3ZlZC4DAwkAAAAAAAACBQAAAA91c2VyQ2FuUmVnaXN0ZXICAAAAAAYJAAAAAAAAAgUAAAAPdXNlckNhblJlZ2lzdGVyBQAAAAt1c2VyQWxsb3dlZAkAAAIAAAABAgAAACdQbGVhc2UgcmVnaXN0ZXIgZmlyc3Qgd2l0aCByZWdpc3RlclVzZXIEAAAAAmlkCQACWAAAAAEIBQAAAAFpAAAADXRyYW5zYWN0aW9uSWQEAAAACXRpbWVzdGFtcAgFAAAACWxhc3RCbG9jawAAAAl0aW1lc3RhbXADAwkAAAAAAAACBQAAAARuYW1lAgAAAAAGCQAAAAAAAAIFAAAAC2Rlc2NyaXB0aW9uAgAAAAAJAAACAAAAAQIAAAAkTmFtZSBhbmQgZGVzY3JpcHRpb24gY2Fubm90IGJlIGVtcHR5AwkAAGYAAAACCQABMQAAAAEFAAAAC2Rlc2NyaXB0aW9uAAAAAAAAAAJYCQAAAgAAAAECAAAAKjYwMCBDaGFyYWN0ZXJzIG1heGltdW0gZm9yIHRoZSBkZXNjcmlwdGlvbgkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAALa2V5VXNlck5hbWUAAAABBQAAAApjYWxsZXJBZGRyBQAAAARuYW1lCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAAAtrZXlVc2VyRGVzYwAAAAEFAAAACmNhbGxlckFkZHIFAAAAC2Rlc2NyaXB0aW9uCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAAA1rZXlVc2VyU29jaWFsAAAAAQUAAAAKY2FsbGVyQWRkcgUAAAAGc29jaWFsCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAAAxrZXlVc2VyVGh1bWIAAAABBQAAAApjYWxsZXJBZGRyBQAAAAV0aHVtYgkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACAgAAAA5sYXN0X2ludm9rZV9pZAUAAAACaWQFAAAAA25pbAAAAAFpAQAAABBjaGFuZ2VVc2VyU3RhdHVzAAAAAgAAAAdhZGRyZXNzAAAABnN0YXR1cwQAAAAKY2FsbGVyQWRkcgkABCUAAAABCQEAAAAUYWRkcmVzc0Zyb21QdWJsaWNLZXkAAAABCAUAAAABaQAAAA9jYWxsZXJQdWJsaWNLZXkEAAAAAmlkCQACWAAAAAEIBQAAAAFpAAAADXRyYW5zYWN0aW9uSWQEAAAAC3N0YXR1c1RvU2V0AwkAAAAAAAACBQAAAAZzdGF0dXMFAAAADHVzZXJWZXJpZmllZAUAAAAMdXNlclZlcmlmaWVkAwkAAAAAAAACBQAAAAZzdGF0dXMFAAAADnVzZXJSZWdpc3RlcmVkBQAAAA51c2VyUmVnaXN0ZXJlZAMJAAAAAAAAAgUAAAAGc3RhdHVzBQAAAA11c2VyU3VzcGVuZGVkBQAAAA11c2VyU3VzcGVuZGVkAwkAAAAAAAACBQAAAAZzdGF0dXMFAAAAC3VzZXJSZW1vdmVkBQAAAAt1c2VyUmVtb3ZlZAMJAAAAAAAAAgUAAAAGc3RhdHVzBQAAAAt1c2VyQWxsb3dlZAUAAAALdXNlckFsbG93ZWQJAAACAAAAAQIAAAAOVW5rbm93biBzdGF0dXMD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bHkgU0lHTiB0b2tlbiBhY2NlcHRlZCBhdCB0aGUgbW9tZW50BAAAABljdXJyZW50Q2VydGlmaWNhdGlvblByaWNlBAAAAAckbWF0Y2gwCQAEGgAAAAIFAAAAD3N0b3JhZ2VWZXJpZmllcgkAASwAAAACAgAAABJjZXJ0aWZpY2F0aW9uX2ZlZV8JAAJYAAAAAQUAAAALc2lnbkFzc2V0SWQDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAA0ludAQAAAAFcHJpY2UFAAAAByRtYXRjaDAFAAAABXByaWNlCQAAAgAAAAECAAAAGVByaWNlIHVuZGVmaW5lZCBpbiBvcmFjbGUDCQEAAAACIT0AAAACBQAAAAZhbW91bnQFAAAAGWN1cnJlbnRDZXJ0aWZpY2F0aW9uUHJpY2UJAAACAAAAAQkAASwAAAACAgAAABlQYXltZW50IGFtb3VudCBzaG91bGQgYmUgCQABpAAAAAEFAAAAGWN1cnJlbnRDZXJ0aWZpY2F0aW9uUHJpY2UEAAAACmVudHJ5RXhpc3QJAQAAAA5nZXRTdHJpbmdCeUtleQAAAAEJAQAAABVrZXlBcnRUeGlkQnlIYXNoT3duZXIAAAACBQAAAApzaGEyNTZIYXNoBQAAAA1jYWxsZXJBZGRyZXNzAwkBAAAAAiE9AAAAAgUAAAAKZW50cnlFeGlzdAIAAAAACQAAAgAAAAECAAAAKllvdSBhbHJlYWR5IGFkZGVkIHRoaXMgYXJ0d29yayBvbiBTaWduIEFydAQAAAAJaGFzaEV4aXN0CQEAAAAOZ2V0U3RyaW5nQnlLZXkAAAABCQEAAAARa2V5QXJ0T3duZXJCeUhhc2gAAAABBQAAAApzaGEyNTZIYXNoAwkBAAAAAiE9AAAAAgUAAAAJaGFzaEV4aXN0AgAAAAAJAAACAAAAAQIAAAAzVGhpcyBhcnR3b3JrIGhhc2ggaXMgYWxyZWFkeSByZWdpc3RlcmVkIG9uIFNpZ24gQXJ0BAAAAA9pc1NpZ25DZXJ0aWZpZWQJAQAAABRjaGVja1NpZ25DZXJ0aWZpY2F0ZQAAAAMFAAAABnNpZ25JRAUAAAANY2FsbGVyQWRkcmVzcwUAAAAKc2hhMjU2SGFzaAMJAQAAAAEhAAAAAQUAAAAPaXNTaWduQ2VydGlmaWVkCQAAAgAAAAECAAAAS1NpZ24gQ2VydGlmaWNhdGUgbm90IGZvdW5kIG9uIFNpZ24td2ViLmFwcCBzbWFydCBjb250cmFjdCBmb3IgdGhpcyBhZGRyZXNzLgMJAAAAAAAAAgkAATEAAAABBQAAAApjaWREaXNwbGF5AAAAAAAAAAAACQAAAgAAAAECAAAAG0Rpc3BsYXkgQ0lEIGNhbm5vdCBiZSBlbXB0eQMJAAAAAAAAAgkAATEAAAABBQAAAARuYW1lAAAAAAAAAAAACQAAAgAAAAECAAAAFVRpdGxlIGNhbm5vdCBiZSBlbXB0eQMJAABmAAAAAgkAATEAAAABBQAAAARuYW1lAAAAAAAAAABkCQAAAgAAAAECAAAAIzEwMCBDaGFyYWN0ZXJzIG1heGltdW0gZm9yIHRoZSBuYW1lAwkAAGYAAAACCQABMQAAAAEFAAAAC2Rlc2NyaXB0aW9uAAAAAAAAAAPoCQAAAgAAAAECAAAAKzEwMDAgQ2hhcmFjdGVycyBtYXhpbXVtIGZvciB0aGUgZGVzY3JpcHRpb24DCQAAAAAAAAIJAAExAAAAAQUAAAALZGVzY3JpcHRpb24AAAAAAAAAAAAJAAACAAAAAQIAAAAbRGVzY3JpcHRpb24gY2Fubm90IGJlIGVtcHR5BAAAAAh0YWdzTGlzdAkABLUAAAACBQAAAAR0YWdzAgAAAAEsAwkAAGYAAAACCQABkAAAAAEFAAAACHRhZ3NMaXN0AAAAAAAAAAAFCQAAAgAAAAECAAAAOFRhZ3Mgc2hvdWxkIGJlIG1heGltdW0gNSBzaW5nbGUgd29yZCBzZXBhcmF0ZWQgYnkgc3BhY2UuBAAAABB1c2VySXNSZWdpc3RlcmVkBAAAAAckbWF0Y2gwCQAEHQAAAAIFAAAABHRoaXMJAAEsAAAAAgIAAAAMdXNlcl9zdGF0dXNfBQAAAA1jYWxsZXJBZGRyZXNzAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAAZTdHJpbmcEAAAAAXMFAAAAByRtYXRjaDAFAAAAAXMFAAAAEHVzZXJVbnJlZ2lzdGVyZWQEAAAACXRpbWVzdGFtcAgFAAAACWxhc3RCbG9jawAAAAl0aW1lc3RhbXADAwkBAAAACWlzRGVmaW5lZAAAAAEFAAAAEHVzZXJJc1JlZ2lzdGVyZWQJAAAAAAAAAgUAAAAQdXNlcklzUmVnaXN0ZXJlZAUAAAAQdXNlclVucmVnaXN0ZXJlZAcJAAACAAAAAQIAAAA4UGxlYXNlIHJlZ2lzdGVyIHRoaXMgYWNjb3VudCBmaXJzdCB3aXRoICJVc2VyIGluZm9zIiB0YWIDCQAAAAAAAAIFAAAAEHVzZXJJc1JlZ2lzdGVyZWQFAAAADXVzZXJTdXNwZW5kZWQJAAACAAAAAQIAAAAZWW91ciBhY2NvdW50IGlzIHN1c3BlbmRlZAMJAAAAAAAAAgUAAAAQdXNlcklzUmVnaXN0ZXJlZAUAAAALdXNlclJlbW92ZWQJAAACAAAAAQIAAAAeWW91ciBhY2NvdW50IGhhdmUgYmVlbiByZW1vdmVkAwkAAGYAAAACBQAAAAdtYXhtaW50AAAAAAAAAAAKCQAAAgAAAAECAAAAH01heGltdW0gMTAgZWRpdGlvbnMgcGVyIGFydHdvcmsDCQEAAAACIT0AAAACCQABMQAAAAEFAAAACnNoYTI1Nkhhc2gAAAAAAAAAAEAJAAACAAAAAQIAAAAxSGFzaCBzaG91bGQgYmUgc2hhMjU2IHN0cmluZyBjb21wb3NlZCBvZiA2NCBjaGFyLgkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAARa2V5QXJ0T3duZXJCeUhhc2gAAAABBQAAAApzaGEyNTZIYXNoBQAAAA1jYWxsZXJBZGRyZXNzCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAABVrZXlBcnRUeGlkQnlIYXNoT3duZXIAAAACBQAAAApzaGEyNTZIYXNoBQAAAA1jYWxsZXJBZGRyZXNzBQAAAAVhcnRJZAkABEwAAAACCQEAAAAMQm9vbGVhbkVudHJ5AAAAAgkBAAAAD2tleVVzZXJJc0FydGlzdAAAAAEFAAAADWNhbGxlckFkZHJlc3MGCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAAKa2V5QXJ0RGF0ZQAAAAIFAAAADWNhbGxlckFkZHJlc3MFAAAABWFydElkBQAAAAl0aW1lc3RhbXAJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAACmtleUFydE5hbWUAAAACBQAAAA1jYWxsZXJBZGRyZXNzBQAAAAVhcnRJZAUAAAAEbmFtZQkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAAKa2V5QXJ0RGVzYwAAAAIFAAAADWNhbGxlckFkZHJlc3MFAAAABWFydElkBQAAAAtkZXNjcmlwdGlvbgkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAAQa2V5QXJ0RGlzcGxheUNpZAAAAAIFAAAADWNhbGxlckFkZHJlc3MFAAAABWFydElkBQAAAApjaWREaXNwbGF5CQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAAA9rZXlBcnRFeHBvcnRDaWQAAAACBQAAAA1jYWxsZXJBZGRyZXNzBQAAAAVhcnRJZAUAAAAJY2lkRXhwb3J0CQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAABBrZXlBcnRFeHBvcnRIYXNoAAAAAgUAAAANY2FsbGVyQWRkcmVzcwUAAAAFYXJ0SWQFAAAADHNoYTI1NkV4cG9ydAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAARa2V5QXJ0TGljZW5jZUhhc2gAAAACBQAAAA1jYWxsZXJBZGRyZXNzBQAAAAVhcnRJZAUAAAANc2hhMjU2TGljZW5jZQkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAAQa2V5QXJ0TGljZW5jZUNpZAAAAAIFAAAADWNhbGxlckFkZHJlc3MFAAAABWFydElkBQAAAApjaWRMaWNlbmNlCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAAAprZXlBcnRUeXBlAAAAAgUAAAANY2FsbGVyQWRkcmVzcwUAAAAFYXJ0SWQFAAAABHR5cGUJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAACmtleUFydFRhZ3MAAAACBQAAAA1jYWxsZXJBZGRyZXNzBQAAAAVhcnRJZAUAAAAEdGFncwkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkBAAAADWtleUFydE1heE1pbnQAAAACBQAAAA1jYWxsZXJBZGRyZXNzBQAAAAVhcnRJZAUAAAAHbWF4bWludAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAAMa2V5QXJ0U2lnbklEAAAAAgUAAAANY2FsbGVyQWRkcmVzcwUAAAAFYXJ0SWQFAAAABnNpZ25JRAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkBAAAADGtleUFydElzc3VlZAAAAAIFAAAADWNhbGxlckFkZHJlc3MFAAAABWFydElkAAAAAAAAAAAACQAETAAAAAIJAQAAAAxCb29sZWFuRW50cnkAAAACCQEAAAAMa2V5QXJ0T25TYWxlAAAAAgUAAAANY2FsbGVyQWRkcmVzcwUAAAAFYXJ0SWQHCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAABNrZXlBcnRBcnRpZEJ5U2lnbmlkAAAAAgUAAAANY2FsbGVyQWRkcmVzcwUAAAAGc2lnbklEBQAAAAVhcnRJZAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACAgAAAA5sYXN0X2ludm9rZV9pZAUAAAAFYXJ0SWQJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwkBAAAAB0FkZHJlc3MAAAABCQACWQAAAAEFAAAAC2ZlZVJlY2VpdmVyBQAAAAZhbW91bnQFAAAAB2Fzc2V0SWQFAAAAA25pbAAAAAZpbnZva2UBAAAADXVwZGF0ZUFydHdvcmsAAAALAAAABHR4aWQAAAAEbmFtZQAAAAtkZXNjcmlwdGlvbgAAAAR0YWdzAAAABHR5cGUAAAAHbWF4bWludAAAAApjaWREaXNwbGF5AAAADHNoYTI1NkV4cG9ydAAAAAljaWRFeHBvcnQAAAANc2hhMjU2TGljZW5jZQAAAApjaWRMaWNlbmNlBAAAAAh1cGRhdGVJZAkAAlgAAAABCAUAAAAGaW52b2tlAAAADXRyYW5zYWN0aW9uSWQEAAAADWNhbGxlckFkZHJlc3MJAAJYAAAAAQgIBQAAAAZpbnZva2UAAAAGY2FsbGVyAAAABWJ5dGVzBAAAAAplbnRyeUV4aXN0CQEAAAAOZ2V0U3RyaW5nQnlLZXkAAAABCQEAAAAKa2V5QXJ0TmFtZQAAAAIFAAAADWNhbGxlckFkZHJlc3MFAAAABHR4aWQDCQAAAAAAAAIFAAAACmVudHJ5RXhpc3QCAAAAAAkAAAIAAAABAgAAADFUaGlzIGVudHJ5IGRvZXNuJ3QgZXhpc3Qgb3IgeW91IGFyZSBub3QgdGhlIG93bmVyAwkAAAAAAAACCQABMQAAAAEFAAAABG5hbWUAAAAAAAAAAAAJAAACAAAAAQIAAAAVVGl0bGUgY2Fubm90IGJlIGVtcHR5AwkAAGYAAAACCQABMQAAAAEFAAAABG5hbWUAAAAAAAAAAGQJAAACAAAAAQIAAAAjMTAwIENoYXJhY3RlcnMgbWF4aW11bSBmb3IgdGhlIG5hbWUDCQAAZgAAAAIJAAExAAAAAQUAAAALZGVzY3JpcHRpb24AAAAAAAAAA+gJAAACAAAAAQIAAAArMTAwMCBDaGFyYWN0ZXJzIG1heGltdW0gZm9yIHRoZSBkZXNjcmlwdGlvbgMJAAAAAAAAAgkAATEAAAABBQAAAAtkZXNjcmlwdGlvbgAAAAAAAAAAAAkAAAIAAAABAgAAABtEZXNjcmlwdGlvbiBjYW5ub3QgYmUgZW1wdHkEAAAADWFydHdvcmtNaW50ZWQEAAAAByRtYXRjaDAJAAQaAAAAAgUAAAAEdGhpcwkBAAAADGtleUFydElzc3VlZAAAAAIFAAAADWNhbGxlckFkZHJlc3MFAAAABHR4aWQDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAA0ludAQAAAABYgUAAAAHJG1hdGNoMAMJAAAAAAAAAgUAAAABYgAAAAAAAAAAAAcGCQAAAgAAAAECAAAAFVNvbWV0aGluZyB3ZW50IHdyb25nLgQAAAAIdGFnc0xpc3QJAAS1AAAAAgUAAAAEdGFncwIAAAABLAMJAABmAAAAAgkAAZAAAAABBQAAAAh0YWdzTGlzdAAAAAAAAAAABQkAAAIAAAABAgAAADhUYWdzIHNob3VsZCBiZSBtYXhpbXVtIDUgc2luZ2xlIHdvcmQgc2VwYXJhdGVkIGJ5IHNwYWNlLgQAAAAQdXNlcklzUmVnaXN0ZXJlZAQAAAAHJG1hdGNoMAkABB0AAAACBQAAAAR0aGlzCQABLAAAAAICAAAADHVzZXJfc3RhdHVzXwUAAAANY2FsbGVyQWRkcmVzcwMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAGU3RyaW5nBAAAAAFzBQAAAAckbWF0Y2gwBQAAAAFzBQAAABB1c2VyVW5yZWdpc3RlcmVkAwMJAQAAAAlpc0RlZmluZWQAAAABBQAAABB1c2VySXNSZWdpc3RlcmVkCQAAAAAAAAIFAAAAEHVzZXJJc1JlZ2lzdGVyZWQFAAAAEHVzZXJVbnJlZ2lzdGVyZWQHCQAAAgAAAAECAAAAOFBsZWFzZSByZWdpc3RlciB0aGlzIGFjY291bnQgZmlyc3Qgd2l0aCAiVXNlciBpbmZvcyIgdGFiAwkAAAAAAAACBQAAABB1c2VySXNSZWdpc3RlcmVkBQAAAA11c2VyU3VzcGVuZGVkCQAAAgAAAAECAAAAGVlvdXIgYWNjb3VudCBpcyBzdXNwZW5kZWQDCQAAAAAAAAIFAAAAEHVzZXJJc1JlZ2lzdGVyZWQFAAAAC3VzZXJSZW1vdmVkCQAAAgAAAAECAAAAHllvdXIgYWNjb3VudCBoYXZlIGJlZW4gcmVtb3ZlZAMJAABmAAAAAgUAAAAHbWF4bWludAAAAAAAAAAACgkAAAIAAAABAgAAAB9NYXhpbXVtIDEwIGVkaXRpb25zIHBlciBhcnR3b3JrAwkBAAAAASEAAAABBQAAAA1hcnR3b3JrTWludGVkCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAAAprZXlBcnROYW1lAAAAAgUAAAANY2FsbGVyQWRkcmVzcwUAAAAEdHhpZAUAAAAEbmFtZQkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAAKa2V5QXJ0RGVzYwAAAAIFAAAADWNhbGxlckFkZHJlc3MFAAAABHR4aWQFAAAAC2Rlc2NyaXB0aW9uCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAABBrZXlBcnREaXNwbGF5Q2lkAAAAAgUAAAANY2FsbGVyQWRkcmVzcwUAAAAEdHhpZAUAAAAKY2lkRGlzcGxheQkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAAPa2V5QXJ0RXhwb3J0Q2lkAAAAAgUAAAANY2FsbGVyQWRkcmVzcwUAAAAEdHhpZAUAAAAJY2lkRXhwb3J0CQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAABBrZXlBcnRFeHBvcnRIYXNoAAAAAgUAAAANY2FsbGVyQWRkcmVzcwUAAAAEdHhpZAUAAAAMc2hhMjU2RXhwb3J0CQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAABBrZXlBcnRMaWNlbmNlQ2lkAAAAAgUAAAANY2FsbGVyQWRkcmVzcwUAAAAEdHhpZAUAAAAKY2lkTGljZW5jZQkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAARa2V5QXJ0TGljZW5jZUhhc2gAAAACBQAAAA1jYWxsZXJBZGRyZXNzBQAAAAR0eGlkBQAAAA1zaGEyNTZMaWNlbmNlCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAANa2V5QXJ0TWF4TWludAAAAAIFAAAADWNhbGxlckFkZHJlc3MFAAAABHR4aWQFAAAAB21heG1pbnQJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAACmtleUFydFRhZ3MAAAACBQAAAA1jYWxsZXJBZGRyZXNzBQAAAAR0eGlkBQAAAAR0YWdzCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAAAprZXlBcnRUeXBlAAAAAgUAAAANY2FsbGVyQWRkcmVzcwUAAAAEdHhpZAUAAAAEdHlwZQkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACAgAAAA5sYXN0X2ludm9rZV9pZAUAAAAIdXBkYXRlSWQFAAAAA25pbAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAAKa2V5QXJ0TmFtZQAAAAIFAAAADWNhbGxlckFkZHJlc3MFAAAABHR4aWQFAAAABG5hbWUJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAACmtleUFydERlc2MAAAACBQAAAA1jYWxsZXJBZGRyZXNzBQAAAAR0eGlkBQAAAAtkZXNjcmlwdGlvbgkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAAQa2V5QXJ0RGlzcGxheUNpZAAAAAIFAAAADWNhbGxlckFkZHJlc3MFAAAABHR4aWQFAAAACmNpZERpc3BsYXkJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAACmtleUFydFR5cGUAAAACBQAAAA1jYWxsZXJBZGRyZXNzBQAAAAR0eGlkBQAAAAR0eXBlCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAAAprZXlBcnRUYWdzAAAAAgUAAAANY2FsbGVyQWRkcmVzcwUAAAAEdHhpZAUAAAAEdGFncwkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACAgAAAA5sYXN0X2ludm9rZV9pZAUAAAAIdXBkYXRlSWQFAAAAA25pbAAAAAFpAQAAAA1kZWxldGVBcnR3b3JrAAAAAgAAAAVhcnRJZAAAAAxvd25lckFkZHJlc3MEAAAACmNhbGxlckFkZHIJAAQlAAAAAQkBAAAAFGFkZHJlc3NGcm9tUHVibGljS2V5AAAAAQgFAAAAAWkAAAAPY2FsbGVyUHVibGljS2V5BAAAAAJpZAkAAlgAAAABCAUAAAABaQAAAA10cmFuc2FjdGlvbklkAwkBAAAAAiE9AAAAAgUAAAAKY2FsbGVyQWRkcgUAAAAFYWRtaW4JAAACAAAAAQIAAAAeWW91IGFyZSBub3QgYWxsb3dlZCB0byBkbyB0aGF0CQAETAAAAAIJAQAAAAtEZWxldGVFbnRyeQAAAAEJAQAAAAprZXlBcnREYXRlAAAAAgUAAAAMb3duZXJBZGRyZXNzBQAAAAVhcnRJZAkABEwAAAACCQEAAAALRGVsZXRlRW50cnkAAAABCQEAAAAKa2V5QXJ0TmFtZQAAAAIFAAAADG93bmVyQWRkcmVzcwUAAAAFYXJ0SWQJAARMAAAAAgkBAAAAC0RlbGV0ZUVudHJ5AAAAAQkBAAAACmtleUFydERlc2MAAAACBQAAAAxvd25lckFkZHJlc3MFAAAABWFydElkCQAETAAAAAIJAQAAAAtEZWxldGVFbnRyeQAAAAEJAQAAABBrZXlBcnREaXNwbGF5Q2lkAAAAAgUAAAAMb3duZXJBZGRyZXNzBQAAAAVhcnRJZAkABEwAAAACCQEAAAALRGVsZXRlRW50cnkAAAABCQEAAAAPa2V5QXJ0RXhwb3J0Q2lkAAAAAgUAAAAMb3duZXJBZGRyZXNzBQAAAAVhcnRJZAkABEwAAAACCQEAAAALRGVsZXRlRW50cnkAAAABCQEAAAAQa2V5QXJ0RXhwb3J0SGFzaAAAAAIFAAAADG93bmVyQWRkcmVzcwUAAAAFYXJ0SWQJAARMAAAAAgkBAAAAC0RlbGV0ZUVudHJ5AAAAAQkBAAAAEWtleUFydExpY2VuY2VIYXNoAAAAAgUAAAAMb3duZXJBZGRyZXNzBQAAAAVhcnRJZAkABEwAAAACCQEAAAALRGVsZXRlRW50cnkAAAABCQEAAAAQa2V5QXJ0TGljZW5jZUNpZAAAAAIFAAAADG93bmVyQWRkcmVzcwUAAAAFYXJ0SWQJAARMAAAAAgkBAAAAC0RlbGV0ZUVudHJ5AAAAAQkBAAAACmtleUFydFR5cGUAAAACBQAAAAxvd25lckFkZHJlc3MFAAAABWFydElkCQAETAAAAAIJAQAAAAtEZWxldGVFbnRyeQAAAAEJAQAAAAprZXlBcnRUYWdzAAAAAgUAAAAMb3duZXJBZGRyZXNzBQAAAAVhcnRJZAkABEwAAAACCQEAAAALRGVsZXRlRW50cnkAAAABCQEAAAANa2V5QXJ0TWF4TWludAAAAAIFAAAADG93bmVyQWRkcmVzcwUAAAAFYXJ0SWQJAARMAAAAAgkBAAAAC0RlbGV0ZUVudHJ5AAAAAQkBAAAADGtleUFydFNpZ25JRAAAAAIFAAAADG93bmVyQWRkcmVzcwUAAAAFYXJ0SWQJAARMAAAAAgkBAAAAC0RlbGV0ZUVudHJ5AAAAAQkBAAAADGtleUFydElzc3VlZAAAAAIFAAAADG93bmVyQWRkcmVzcwUAAAAFYXJ0SWQJAARMAAAAAgkBAAAAC0RlbGV0ZUVudHJ5AAAAAQkBAAAADGtleUFydE9uU2FsZQAAAAIFAAAADG93bmVyQWRkcmVzcwUAAAAFYXJ0SWQJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgIAAAAObGFzdF9pbnZva2VfaWQFAAAAAmlkBQAAAANuaWwAAAAGaW52b2tlAQAAAAtzZWxsQXJ0d29yawAAAAIAAAAEaGFzaAAAAAVwcmljZQQAAAACaWQJAAJYAAAAAQgFAAAABmludm9rZQAAAA10cmFuc2FjdGlvbklkBAAAAA1jYWxsZXJBZGRyZXNzCQACWAAAAAEICAUAAAAGaW52b2tlAAAABmNhbGxlcgAAAAVieXRlcwQAAAAJZW50cnlEYXRlCAUAAAAJbGFzdEJsb2NrAAAACXRpbWVzdGFtcAQAAAAHZW50cnlJRAkBAAAADmdldFN0cmluZ0J5S2V5AAAAAQkAASwAAAACCQABLAAAAAIFAAAABGhhc2gC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", "height": 1182687, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: F5aRfWoyV56tugn3nNfpaic1z8LvtZ3y2VBsw4bV2JJm Next: 5FMxbg5tKDBHFMCzmx8eWZ3tDGHLUjyCbVfRorRNPWuS Diff:
OldNewDifferences
177177 func ai (B) = ("art_owner_by_hash_" + B)
178178
179179
180-func aj (B,L) = ("art_txid_by_hash_owner_" + toBase58String(sha256_16Kb(toBytes((B + L)))))
180+func aj (L,ak) = ((("art_artidbysignid_" + ak) + "_") + L)
181+
182+
183+func al (B,L) = ("art_txid_by_hash_owner_" + toBase58String(sha256_16Kb(toBytes((B + L)))))
181184
182185
183186 @Callable(x)
184-func registerUser (ak,al,am,an) = {
187+func registerUser (am,an,ao,ap) = {
185188 let L = toString(addressFromPublicKey(x.callerPublicKey))
186- let ao = s(R(L))
189+ let aq = s(R(L))
187190 let E = toBase58String(x.transactionId)
188- let ap = lastBlock.timestamp
189- if (if ((ao == m))
191+ let ar = lastBlock.timestamp
192+ if (if ((aq == m))
190193 then true
191- else (ao == n))
194+ else (aq == n))
192195 then throw("You are now allowed to register, your account have been suspended/ removed.")
193- else if ((ao == k))
196+ else if ((aq == k))
194197 then throw("You are already registered, please use update method instead.")
195- else if (if ((ao == ""))
198+ else if (if ((aq == ""))
196199 then i
197200 else false)
198201 then throw("You are now allowed to register yet, please contact us first to get approved.")
199- else if (if ((ak == ""))
202+ else if (if ((am == ""))
200203 then true
201- else (al == ""))
204+ else (an == ""))
202205 then throw("Name and description cannot be empty")
203- else if ((size(al) > 600))
206+ else if ((size(an) > 600))
204207 then throw("600 Characters maximum for the description")
205- else [IntegerEntry(S(L), ap), StringEntry(K(L), ((E + "_") + toString(lastBlock.timestamp))), StringEntry(M(L), ak), StringEntry(N(L), al), StringEntry(O(L), an), StringEntry(P(L), am), BooleanEntry(Q(L), false), StringEntry(R(L), k), StringEntry("last_invoke_id", E)]
208+ else [IntegerEntry(S(L), ar), StringEntry(K(L), ((E + "_") + toString(lastBlock.timestamp))), StringEntry(M(L), am), StringEntry(N(L), an), StringEntry(O(L), ap), StringEntry(P(L), ao), BooleanEntry(Q(L), false), StringEntry(R(L), k), StringEntry("last_invoke_id", E)]
206209 }
207210
208211
209212
210213 @Callable(x)
211-func updateUser (ak,al,am,an) = {
214+func updateUser (am,an,ao,ap) = {
212215 let L = toString(addressFromPublicKey(x.callerPublicKey))
213- let ao = s(R(L))
214- if (if ((ao == m))
216+ let aq = s(R(L))
217+ if (if ((aq == m))
215218 then true
216- else (ao == n))
219+ else (aq == n))
217220 then throw("You are now allowed to register, your account have been suspended/ removed.")
218- else if (if ((ao == ""))
221+ else if (if ((aq == ""))
219222 then true
220- else (ao == j))
223+ else (aq == j))
221224 then throw("Please register first with registerUser")
222225 else {
223226 let E = toBase58String(x.transactionId)
224- let ap = lastBlock.timestamp
225- if (if ((ak == ""))
227+ let ar = lastBlock.timestamp
228+ if (if ((am == ""))
226229 then true
227- else (al == ""))
230+ else (an == ""))
228231 then throw("Name and description cannot be empty")
229- else if ((size(al) > 600))
232+ else if ((size(an) > 600))
230233 then throw("600 Characters maximum for the description")
231- else [StringEntry(M(L), ak), StringEntry(N(L), al), StringEntry(O(L), an), StringEntry(P(L), am), StringEntry("last_invoke_id", E)]
234+ else [StringEntry(M(L), am), StringEntry(N(L), an), StringEntry(O(L), ap), StringEntry(P(L), ao), StringEntry("last_invoke_id", E)]
232235 }
233236 }
234237
235238
236239
237240 @Callable(x)
238-func changeUserStatus (aq,ar) = {
241+func changeUserStatus (as,at) = {
239242 let L = toString(addressFromPublicKey(x.callerPublicKey))
240243 let E = toBase58String(x.transactionId)
241- let as = if ((ar == l))
244+ let au = if ((at == l))
242245 then l
243- else if ((ar == k))
246+ else if ((at == k))
244247 then k
245- else if ((ar == m))
248+ else if ((at == m))
246249 then m
247- else if ((ar == n))
250+ else if ((at == n))
248251 then n
249- else if ((ar == j))
252+ else if ((at == j))
250253 then j
251254 else throw("Unknown status")
252255 if (if ((L == g))
253256 then true
254257 else (L == h))
255- then [StringEntry(R(aq), as), StringEntry("last_invoke_id", E)]
258+ then [StringEntry(R(as), au), StringEntry("last_invoke_id", E)]
256259 else throw(((("You are not allowed to change user status " + L) + " / ") + g))
257260 }
258261
259262
260263
261264 @Callable(x)
262-func deleteUser (aq) = {
265+func deleteUser (as) = {
263266 let L = toString(addressFromPublicKey(x.callerPublicKey))
264267 let E = toBase58String(x.transactionId)
265268 if (if ((L == g))
266269 then true
267270 else (L == h))
268- then [DeleteEntry(S(aq)), DeleteEntry(K(aq)), DeleteEntry(M(aq)), DeleteEntry(N(aq)), DeleteEntry(O(aq)), DeleteEntry(P(aq)), DeleteEntry(Q(aq)), StringEntry(R(aq), n), StringEntry("last_invoke_id", E)]
271+ then [DeleteEntry(S(as)), DeleteEntry(K(as)), DeleteEntry(M(as)), DeleteEntry(N(as)), DeleteEntry(O(as)), DeleteEntry(P(as)), DeleteEntry(Q(as)), StringEntry(R(as), n), StringEntry("last_invoke_id", E)]
269272 else throw("You are not allowed to do that")
270273 }
271274
272275
273276
274-@Callable(at)
275-func addArtwork (B,z,ak,al,au,av,aw,ax,ay,az,aA,aB) = {
276- let U = toBase58String(at.transactionId)
277- let aC = toBase58String(at.caller.bytes)
278- if ((size(at.payments) == 0))
277+@Callable(av)
278+func addArtwork (B,z,am,an,aw,ax,ay,az,aA,aB,aC,aD) = {
279+ let U = toBase58String(av.transactionId)
280+ let aE = toBase58String(av.caller.bytes)
281+ if ((size(av.payments) == 0))
279282 then throw("No payment attached")
280283 else {
281- let aD = value(at.payments[0])
282- let aE = value(aD.amount)
283- let aF = if (if (isDefined(aD.assetId))
284- then (aD.assetId == e)
284+ let aF = value(av.payments[0])
285+ let aG = value(aF.amount)
286+ let aH = if (if (isDefined(aF.assetId))
287+ then (aF.assetId == e)
285288 else false)
286- then aD.assetId
289+ then aF.assetId
287290 else throw("Only SIGN token accepted at the moment")
288- let aG = {
291+ let aI = {
289292 let u = getInteger(a, ("certification_fee_" + toBase58String(e)))
290293 if ($isInstanceOf(u, "Int"))
291294 then {
292- let aH = u
293- aH
295+ let aJ = u
296+ aJ
294297 }
295298 else throw("Price undefined in oracle")
296299 }
297- if ((aE != aG))
298- then throw(("Payment amount should be " + toString(aG)))
300+ if ((aG != aI))
301+ then throw(("Payment amount should be " + toString(aI)))
299302 else {
300- let aI = s(aj(B, aC))
301- if ((aI != ""))
303+ let aK = s(al(B, aE))
304+ if ((aK != ""))
302305 then throw("You already added this artwork on Sign Art")
303306 else {
304- let aJ = s(ai(B))
305- if ((aJ != ""))
307+ let aL = s(ai(B))
308+ if ((aL != ""))
306309 then throw("This artwork hash is already registered on Sign Art")
307310 else {
308- let aK = y(z, aC, B)
309- if (!(aK))
311+ let aM = y(z, aE, B)
312+ if (!(aM))
310313 then throw("Sign Certificate not found on Sign-web.app smart contract for this address.")
311- else if ((size(ax) == 0))
314+ else if ((size(az) == 0))
312315 then throw("Display CID cannot be empty")
313- else if ((size(ak) == 0))
316+ else if ((size(am) == 0))
314317 then throw("Title cannot be empty")
315- else if ((size(ak) > 100))
318+ else if ((size(am) > 100))
316319 then throw("100 Characters maximum for the name")
317- else if ((size(al) > 1000))
320+ else if ((size(an) > 1000))
318321 then throw("1000 Characters maximum for the description")
319- else if ((size(al) == 0))
322+ else if ((size(an) == 0))
320323 then throw("Description cannot be empty")
321324 else {
322- let aL = split(au, ",")
323- if ((size(aL) > 5))
325+ let aN = split(aw, ",")
326+ if ((size(aN) > 5))
324327 then throw("Tags should be maximum 5 single word separated by space.")
325328 else {
326- let aM = {
327- let u = getString(this, ("user_status_" + aC))
329+ let aO = {
330+ let u = getString(this, ("user_status_" + aE))
328331 if ($isInstanceOf(u, "String"))
329332 then {
330- let aN = u
331- aN
333+ let aP = u
334+ aP
332335 }
333336 else o
334337 }
335- let ap = lastBlock.timestamp
336- if (if (isDefined(aM))
337- then (aM == o)
338+ let ar = lastBlock.timestamp
339+ if (if (isDefined(aO))
340+ then (aO == o)
338341 else false)
339342 then throw("Please register this account first with \"User infos\" tab")
340- else if ((aM == m))
343+ else if ((aO == m))
341344 then throw("Your account is suspended")
342- else if ((aM == n))
345+ else if ((aO == n))
343346 then throw("Your account have been removed")
344- else if ((aw > 10))
347+ else if ((ay > 10))
345348 then throw("Maximum 10 editions per artwork")
346349 else if ((size(B) != 64))
347350 then throw("Hash should be sha256 string composed of 64 char.")
348- else [StringEntry(ai(B), aC), StringEntry(aj(B, aC), U), BooleanEntry(Q(aC), true), IntegerEntry(T(aC, U), ap), StringEntry(V(aC, U), ak), StringEntry(W(aC, U), al), StringEntry(X(aC, U), ax), StringEntry(Z(aC, U), az), StringEntry(Y(aC, U), ay), StringEntry(ae(aC, U), aA), StringEntry(af(aC, U), aB), StringEntry(ah(aC, U), av), StringEntry(ag(aC, U), au), IntegerEntry(aa(aC, U), aw), StringEntry(ab(aC, U), z), IntegerEntry(ac(aC, U), 0), BooleanEntry(ad(aC, U), false), StringEntry("last_invoke_id", U), ScriptTransfer(Address(fromBase58String(d)), aE, aF)]
351+ else [StringEntry(ai(B), aE), StringEntry(al(B, aE), U), BooleanEntry(Q(aE), true), IntegerEntry(T(aE, U), ar), StringEntry(V(aE, U), am), StringEntry(W(aE, U), an), StringEntry(X(aE, U), az), StringEntry(Z(aE, U), aB), StringEntry(Y(aE, U), aA), StringEntry(ae(aE, U), aC), StringEntry(af(aE, U), aD), StringEntry(ah(aE, U), ax), StringEntry(ag(aE, U), aw), IntegerEntry(aa(aE, U), ay), StringEntry(ab(aE, U), z), IntegerEntry(ac(aE, U), 0), BooleanEntry(ad(aE, U), false), StringEntry(aj(aE, z), U), StringEntry("last_invoke_id", U), ScriptTransfer(Address(fromBase58String(d)), aG, aH)]
349352 }
350353 }
351354 }
356359
357360
358361
359-@Callable(at)
360-func updateArtwork (aO,ak,al,au,av,aw,ax,ay,az,aA,aB) = {
361- let aP = toBase58String(at.transactionId)
362- let aC = toBase58String(at.caller.bytes)
363- let aI = s(V(aC, aO))
364- if ((aI == ""))
362+@Callable(av)
363+func updateArtwork (aQ,am,an,aw,ax,ay,az,aA,aB,aC,aD) = {
364+ let aR = toBase58String(av.transactionId)
365+ let aE = toBase58String(av.caller.bytes)
366+ let aK = s(V(aE, aQ))
367+ if ((aK == ""))
365368 then throw("This entry doesn't exist or you are not the owner")
366- else if ((size(ak) == 0))
369+ else if ((size(am) == 0))
367370 then throw("Title cannot be empty")
368- else if ((size(ak) > 100))
371+ else if ((size(am) > 100))
369372 then throw("100 Characters maximum for the name")
370- else if ((size(al) > 1000))
373+ else if ((size(an) > 1000))
371374 then throw("1000 Characters maximum for the description")
372- else if ((size(al) == 0))
375+ else if ((size(an) == 0))
373376 then throw("Description cannot be empty")
374377 else {
375- let aQ = {
376- let u = getInteger(this, ac(aC, aO))
378+ let aS = {
379+ let u = getInteger(this, ac(aE, aQ))
377380 if ($isInstanceOf(u, "Int"))
378381 then {
379382 let I = u
383386 }
384387 else throw("Something went wrong.")
385388 }
386- let aL = split(au, ",")
387- if ((size(aL) > 5))
389+ let aN = split(aw, ",")
390+ if ((size(aN) > 5))
388391 then throw("Tags should be maximum 5 single word separated by space.")
389392 else {
390- let aM = {
391- let u = getString(this, ("user_status_" + aC))
393+ let aO = {
394+ let u = getString(this, ("user_status_" + aE))
392395 if ($isInstanceOf(u, "String"))
393396 then {
394- let aN = u
395- aN
397+ let aP = u
398+ aP
396399 }
397400 else o
398401 }
399- if (if (isDefined(aM))
400- then (aM == o)
402+ if (if (isDefined(aO))
403+ then (aO == o)
401404 else false)
402405 then throw("Please register this account first with \"User infos\" tab")
403- else if ((aM == m))
406+ else if ((aO == m))
404407 then throw("Your account is suspended")
405- else if ((aM == n))
408+ else if ((aO == n))
406409 then throw("Your account have been removed")
407- else if ((aw > 10))
410+ else if ((ay > 10))
408411 then throw("Maximum 10 editions per artwork")
409- else if (!(aQ))
410- then [StringEntry(V(aC, aO), ak), StringEntry(W(aC, aO), al), StringEntry(X(aC, aO), ax), StringEntry(Z(aC, aO), az), StringEntry(Y(aC, aO), ay), StringEntry(af(aC, aO), aB), StringEntry(ae(aC, aO), aA), IntegerEntry(aa(aC, aO), aw), StringEntry(ag(aC, aO), au), StringEntry(ah(aC, aO), av), StringEntry("last_invoke_id", aP)]
411- else [StringEntry(V(aC, aO), ak), StringEntry(W(aC, aO), al), StringEntry(X(aC, aO), ax), StringEntry(ah(aC, aO), av), StringEntry(ag(aC, aO), au), StringEntry("last_invoke_id", aP)]
412+ else if (!(aS))
413+ then [StringEntry(V(aE, aQ), am), StringEntry(W(aE, aQ), an), StringEntry(X(aE, aQ), az), StringEntry(Z(aE, aQ), aB), StringEntry(Y(aE, aQ), aA), StringEntry(af(aE, aQ), aD), StringEntry(ae(aE, aQ), aC), IntegerEntry(aa(aE, aQ), ay), StringEntry(ag(aE, aQ), aw), StringEntry(ah(aE, aQ), ax), StringEntry("last_invoke_id", aR)]
414+ else [StringEntry(V(aE, aQ), am), StringEntry(W(aE, aQ), an), StringEntry(X(aE, aQ), az), StringEntry(ah(aE, aQ), ax), StringEntry(ag(aE, aQ), aw), StringEntry("last_invoke_id", aR)]
412415 }
413416 }
414417 }
416419
417420
418421 @Callable(x)
419-func deleteArtwork (U,aR) = {
422+func deleteArtwork (U,aT) = {
420423 let L = toString(addressFromPublicKey(x.callerPublicKey))
421424 let E = toBase58String(x.transactionId)
422425 if ((L != g))
423426 then throw("You are not allowed to do that")
424- else [DeleteEntry(T(aR, U)), DeleteEntry(V(aR, U)), DeleteEntry(W(aR, U)), DeleteEntry(X(aR, U)), DeleteEntry(Z(aR, U)), DeleteEntry(Y(aR, U)), DeleteEntry(ae(aR, U)), DeleteEntry(af(aR, U)), DeleteEntry(ah(aR, U)), DeleteEntry(ag(aR, U)), DeleteEntry(aa(aR, U)), DeleteEntry(ab(aR, U)), DeleteEntry(ac(aR, U)), DeleteEntry(ad(aR, U)), StringEntry("last_invoke_id", E)]
427+ else [DeleteEntry(T(aT, U)), DeleteEntry(V(aT, U)), DeleteEntry(W(aT, U)), DeleteEntry(X(aT, U)), DeleteEntry(Z(aT, U)), DeleteEntry(Y(aT, U)), DeleteEntry(ae(aT, U)), DeleteEntry(af(aT, U)), DeleteEntry(ah(aT, U)), DeleteEntry(ag(aT, U)), DeleteEntry(aa(aT, U)), DeleteEntry(ab(aT, U)), DeleteEntry(ac(aT, U)), DeleteEntry(ad(aT, U)), StringEntry("last_invoke_id", E)]
425428 }
426429
427430
428431
429-@Callable(at)
430-func sellArtwork (aS,aH) = {
431- let E = toBase58String(at.transactionId)
432- let aC = toBase58String(at.caller.bytes)
433- let aT = lastBlock.timestamp
434- let aU = s(((aS + "_") + aC))
435- if (!(isDefined(aU)))
432+@Callable(av)
433+func sellArtwork (aU,aJ) = {
434+ let E = toBase58String(av.transactionId)
435+ let aE = toBase58String(av.caller.bytes)
436+ let aV = lastBlock.timestamp
437+ let aW = s(((aU + "_") + aE))
438+ if (!(isDefined(aW)))
436439 then throw("This artwork doesn't exit or you are not the owner")
437440 else {
438- let aM = s(("user_status_" + aC))
439- if ((aM == ""))
441+ let aO = s(("user_status_" + aE))
442+ if ((aO == ""))
440443 then throw("Please register this account first")
441444 else {
442- let aV = w(((("art_issued_" + aU) + "_") + aC))
443- let aW = w(((("art_maxmint_" + aU) + "_") + aC))
444- if ((aV == aW))
445+ let aX = w(((("art_issued_" + aW) + "_") + aE))
446+ let aY = w(((("art_maxmint_" + aW) + "_") + aE))
447+ if ((aX == aY))
445448 then throw("You reached the max edition allowed to sell for this edition.")
446- else if ((aM == m))
449+ else if ((aO == m))
447450 then throw("Your account is suspended")
448- else if (!(isDefined(aU)))
451+ else if (!(isDefined(aW)))
449452 then throw("This artwork desn't exist")
450- else if ((size(aS) != 64))
453+ else if ((size(aU) != 64))
451454 then throw("This hash is incorrect.")
452455 else {
453- let aX = if ((aH > 0))
456+ let aZ = if ((aJ > 0))
454457 then true
455458 else false
456-[BooleanEntry(((("art_onsale_" + aU) + "_") + aC), aX), IntegerEntry(((("art_price_" + aU) + "_") + aC), aH), StringEntry("last_invoke_id", E)]
459+[BooleanEntry(((("art_onsale_" + aW) + "_") + aE), aZ), IntegerEntry(((("art_price_" + aW) + "_") + aE), aJ), StringEntry("last_invoke_id", E)]
457460 }
458461 }
459462 }
461464
462465
463466
464-@Callable(at)
465-func buyArtwork (aS,aY) = {
466- let E = toBase58String(at.transactionId)
467- let aC = toBase58String(at.caller.bytes)
468- let aZ = w("total_nft_issued")
469- let aU = s(((aS + "_") + aY))
470- if ((aU == ""))
467+@Callable(av)
468+func buyArtwork (aU,ba) = {
469+ let E = toBase58String(av.transactionId)
470+ let aE = toBase58String(av.caller.bytes)
471+ let bb = w("total_nft_issued")
472+ let aW = s(((aU + "_") + ba))
473+ if ((aW == ""))
471474 then throw("This artwork doesn't exit or you are not the owner")
472475 else {
473- let aM = s(("user_status_" + aC))
474- if (!(isDefined(aM)))
476+ let aO = s(("user_status_" + aE))
477+ if (!(isDefined(aO)))
475478 then throw("Please register this account first")
476479 else {
477- let ba = s(((("art_sold_" + aU) + "_") + aY))
478- let aV = w(((("art_issued_" + aU) + "_") + aY))
479- let bb = w(((("art_price_" + aU) + "_") + aY))
480- if ((bb == 0))
480+ let bc = s(((("art_sold_" + aW) + "_") + ba))
481+ let aX = w(((("art_issued_" + aW) + "_") + ba))
482+ let bd = w(((("art_price_" + aW) + "_") + ba))
483+ if ((bd == 0))
481484 then throw("This artwork is not for sell")
482485 else {
483- let aW = w(((("art_maxmint_" + aU) + "_") + aY))
484- let aD = value(at.payments[0])
485- let aE = value(aD.amount)
486- let aF = if (isDefined(aD.assetId))
486+ let aY = w(((("art_maxmint_" + aW) + "_") + ba))
487+ let aF = value(av.payments[0])
488+ let aG = value(aF.amount)
489+ let aH = if (isDefined(aF.assetId))
487490 then throw("Only Waves token accepted at the moment")
488491 else unit
489- if ((aV == aW))
492+ if ((aX == aY))
490493 then throw("Cannot buy this artwork anymore")
491- else if ((bb != aE))
494+ else if ((bd != aG))
492495 then throw("Payment don't match seller price")
493496 else {
494- let bc = (aV + 1)
495- let aT = lastBlock.timestamp
496- let bd = (((((((((((((("{\"version\": 1,\"artID\": \"" + aU) + "\",\"maxIssuable\": \"") + toString(aW)) + "\",\"signID\": \"SA_") + toString((aZ + 1))) + "\", \"creator\": \"") + aY) + "\", \"issue\": \"") + toString(bc)) + "/") + toString(aW)) + "\", \"hash\": ") + aS) + "}")
497- let be = Issue(("SA_" + toString((aZ + 1))), bd, 1, 0, false)
498- let bf = calculateAssetId(be)
499- let aX = if ((bc == aW))
497+ let be = (aX + 1)
498+ let aV = lastBlock.timestamp
499+ let bf = (((((((((((((("{\"version\": 1,\"artID\": \"" + aW) + "\",\"maxIssuable\": \"") + toString(aY)) + "\",\"signID\": \"SA_") + toString((bb + 1))) + "\", \"creator\": \"") + ba) + "\", \"issue\": \"") + toString(be)) + "/") + toString(aY)) + "\", \"hash\": ") + aU) + "}")
500+ let bg = Issue(("SA_" + toString((bb + 1))), bf, 1, 0, false)
501+ let bh = calculateAssetId(bg)
502+ let aZ = if ((be == aY))
500503 then false
501504 else true
502-[IntegerEntry(((("art_issued_" + aU) + "_") + aY), bc), StringEntry(((((((("art_sold_" + toString(bc)) + "_of_") + toString(aW)) + "_") + aU) + "_") + aY), ((((((aC + "_") + toString(aT)) + "_") + E) + "_") + toString(bb))), IntegerEntry("total_nft_issued", (aZ + 1)), StringEntry("last_invoke_id", E), be, BooleanEntry(((("art_onsale_" + aU) + "_") + aC), aX), ScriptTransfer(Address(fromBase58String(aY)), aE, aF), ScriptTransfer(at.caller, 1, bf)]
505+[IntegerEntry(((("art_issued_" + aW) + "_") + ba), be), StringEntry(((((((("art_sold_" + toString(be)) + "_of_") + toString(aY)) + "_") + aW) + "_") + ba), ((((((aE + "_") + toString(aV)) + "_") + E) + "_") + toString(bd))), IntegerEntry("total_nft_issued", (bb + 1)), StringEntry("last_invoke_id", E), bg, BooleanEntry(((("art_onsale_" + aW) + "_") + aE), aZ), ScriptTransfer(Address(fromBase58String(ba)), aG, aH), ScriptTransfer(av.caller, 1, bh)]
503506 }
504507 }
505508 }
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
1010 let d = "3N1E6tXddRoVaRfQ9dQ3vg5LaW2fsd8HKub"
1111
1212 let e = base58'Gf9t8FA4H3ssoZPCwrg3KwUFCci8zuUFP9ssRsUY3s6a'
1313
1414 let f = "3KFXBGGLCjA5Z2DuW4Dq9fDDrHjJJP1ZEkaoajSzuKsC"
1515
1616 let g = "3MsG6jPNCrVJUtYB7XJBxS7utWsXAf4n9Vp"
1717
1818 let h = "3Mzm4VLwsN9uZwbTMzPj3XuxV6kEfAR8UDN"
1919
2020 let i = true
2121
2222 let j = "ALLOWED"
2323
2424 let k = "REGISTERED"
2525
2626 let l = "VERIFIED"
2727
2828 let m = "SUSPENDED"
2929
3030 let n = "REMOVED"
3131
3232 let o = "UNREGISTERED"
3333
3434 let p = "ON_SALE"
3535
3636 let q = "SOLD"
3737
3838 let r = "CANCELED"
3939
4040 func s (t) = {
4141 let u = getString(this, t)
4242 if ($isInstanceOf(u, "String"))
4343 then {
4444 let v = u
4545 v
4646 }
4747 else ""
4848 }
4949
5050
5151 func w (t) = {
5252 let u = getInteger(this, t)
5353 if ($isInstanceOf(u, "Int"))
5454 then {
5555 let x = u
5656 x
5757 }
5858 else 0
5959 }
6060
6161
6262 func y (z,A,B) = {
6363 let u = getString(c, ((("data_fc_" + z) + "_") + A))
6464 if ($isInstanceOf(u, "String"))
6565 then {
6666 let v = u
6767 if (contains(v, B))
6868 then true
6969 else false
7070 }
7171 else false
7272 }
7373
7474
7575 func C (D,E) = {
7676 let F = value(assetInfo(fromBase58String(E)))
7777 if (if (if ((F.quantity != 1))
7878 then true
7979 else (F.decimals != 0))
8080 then true
8181 else (F.reissuable != false))
8282 then (D + 0)
8383 else (D + 1)
8484 }
8585
8686
8787 func G (H) = if (!(i))
8888 then true
8989 else {
9090 let u = getBoolean(b, H)
9191 if ($isInstanceOf(u, "Boolean"))
9292 then {
9393 let I = u
9494 I
9595 }
9696 else throw("You are not allowed, please contact us first.")
9797 }
9898
9999
100100 func J (H) = {
101101 let u = getString(this, ("user_status_" + H))
102102 if ($isInstanceOf(u, "String"))
103103 then {
104104 let I = u
105105 I
106106 }
107107 else throw("Something went wrong.")
108108 }
109109
110110
111111 func K (L) = ("user_" + L)
112112
113113
114114 func M (L) = ("user_name_" + L)
115115
116116
117117 func N (L) = ("user_desc_" + L)
118118
119119
120120 func O (L) = ("user_social_" + L)
121121
122122
123123 func P (L) = ("user_thumb_" + L)
124124
125125
126126 func Q (L) = ("user_isartist_" + L)
127127
128128
129129 func R (L) = ("user_status_" + L)
130130
131131
132132 func S (L) = ("user_date_" + L)
133133
134134
135135 func T (L,U) = ((("art_date_" + U) + "_") + L)
136136
137137
138138 func V (L,U) = ((("art_name_" + U) + "_") + L)
139139
140140
141141 func W (L,U) = ((("art_desc_" + U) + "_") + L)
142142
143143
144144 func X (L,U) = ((("art_display_cid_" + U) + "_") + L)
145145
146146
147147 func Y (L,U) = ((("art_export_hash_" + U) + "_") + L)
148148
149149
150150 func Z (L,U) = ((("art_export_cid_" + U) + "_") + L)
151151
152152
153153 func aa (L,U) = ((("art_maxmint_" + U) + "_") + L)
154154
155155
156156 func ab (L,U) = ((("art_signid_" + U) + "_") + L)
157157
158158
159159 func ac (L,U) = ((("art_issued_" + U) + "_") + L)
160160
161161
162162 func ad (L,U) = ((("art_onsale_" + U) + "_") + L)
163163
164164
165165 func ae (L,U) = ((("art_licence_hash_" + U) + "_") + L)
166166
167167
168168 func af (L,U) = ((("art_licence_cid_" + U) + "_") + L)
169169
170170
171171 func ag (L,U) = ((("art_tags_" + U) + "_") + L)
172172
173173
174174 func ah (L,U) = ((("art_type_" + U) + "_") + L)
175175
176176
177177 func ai (B) = ("art_owner_by_hash_" + B)
178178
179179
180-func aj (B,L) = ("art_txid_by_hash_owner_" + toBase58String(sha256_16Kb(toBytes((B + L)))))
180+func aj (L,ak) = ((("art_artidbysignid_" + ak) + "_") + L)
181+
182+
183+func al (B,L) = ("art_txid_by_hash_owner_" + toBase58String(sha256_16Kb(toBytes((B + L)))))
181184
182185
183186 @Callable(x)
184-func registerUser (ak,al,am,an) = {
187+func registerUser (am,an,ao,ap) = {
185188 let L = toString(addressFromPublicKey(x.callerPublicKey))
186- let ao = s(R(L))
189+ let aq = s(R(L))
187190 let E = toBase58String(x.transactionId)
188- let ap = lastBlock.timestamp
189- if (if ((ao == m))
191+ let ar = lastBlock.timestamp
192+ if (if ((aq == m))
190193 then true
191- else (ao == n))
194+ else (aq == n))
192195 then throw("You are now allowed to register, your account have been suspended/ removed.")
193- else if ((ao == k))
196+ else if ((aq == k))
194197 then throw("You are already registered, please use update method instead.")
195- else if (if ((ao == ""))
198+ else if (if ((aq == ""))
196199 then i
197200 else false)
198201 then throw("You are now allowed to register yet, please contact us first to get approved.")
199- else if (if ((ak == ""))
202+ else if (if ((am == ""))
200203 then true
201- else (al == ""))
204+ else (an == ""))
202205 then throw("Name and description cannot be empty")
203- else if ((size(al) > 600))
206+ else if ((size(an) > 600))
204207 then throw("600 Characters maximum for the description")
205- else [IntegerEntry(S(L), ap), StringEntry(K(L), ((E + "_") + toString(lastBlock.timestamp))), StringEntry(M(L), ak), StringEntry(N(L), al), StringEntry(O(L), an), StringEntry(P(L), am), BooleanEntry(Q(L), false), StringEntry(R(L), k), StringEntry("last_invoke_id", E)]
208+ else [IntegerEntry(S(L), ar), StringEntry(K(L), ((E + "_") + toString(lastBlock.timestamp))), StringEntry(M(L), am), StringEntry(N(L), an), StringEntry(O(L), ap), StringEntry(P(L), ao), BooleanEntry(Q(L), false), StringEntry(R(L), k), StringEntry("last_invoke_id", E)]
206209 }
207210
208211
209212
210213 @Callable(x)
211-func updateUser (ak,al,am,an) = {
214+func updateUser (am,an,ao,ap) = {
212215 let L = toString(addressFromPublicKey(x.callerPublicKey))
213- let ao = s(R(L))
214- if (if ((ao == m))
216+ let aq = s(R(L))
217+ if (if ((aq == m))
215218 then true
216- else (ao == n))
219+ else (aq == n))
217220 then throw("You are now allowed to register, your account have been suspended/ removed.")
218- else if (if ((ao == ""))
221+ else if (if ((aq == ""))
219222 then true
220- else (ao == j))
223+ else (aq == j))
221224 then throw("Please register first with registerUser")
222225 else {
223226 let E = toBase58String(x.transactionId)
224- let ap = lastBlock.timestamp
225- if (if ((ak == ""))
227+ let ar = lastBlock.timestamp
228+ if (if ((am == ""))
226229 then true
227- else (al == ""))
230+ else (an == ""))
228231 then throw("Name and description cannot be empty")
229- else if ((size(al) > 600))
232+ else if ((size(an) > 600))
230233 then throw("600 Characters maximum for the description")
231- else [StringEntry(M(L), ak), StringEntry(N(L), al), StringEntry(O(L), an), StringEntry(P(L), am), StringEntry("last_invoke_id", E)]
234+ else [StringEntry(M(L), am), StringEntry(N(L), an), StringEntry(O(L), ap), StringEntry(P(L), ao), StringEntry("last_invoke_id", E)]
232235 }
233236 }
234237
235238
236239
237240 @Callable(x)
238-func changeUserStatus (aq,ar) = {
241+func changeUserStatus (as,at) = {
239242 let L = toString(addressFromPublicKey(x.callerPublicKey))
240243 let E = toBase58String(x.transactionId)
241- let as = if ((ar == l))
244+ let au = if ((at == l))
242245 then l
243- else if ((ar == k))
246+ else if ((at == k))
244247 then k
245- else if ((ar == m))
248+ else if ((at == m))
246249 then m
247- else if ((ar == n))
250+ else if ((at == n))
248251 then n
249- else if ((ar == j))
252+ else if ((at == j))
250253 then j
251254 else throw("Unknown status")
252255 if (if ((L == g))
253256 then true
254257 else (L == h))
255- then [StringEntry(R(aq), as), StringEntry("last_invoke_id", E)]
258+ then [StringEntry(R(as), au), StringEntry("last_invoke_id", E)]
256259 else throw(((("You are not allowed to change user status " + L) + " / ") + g))
257260 }
258261
259262
260263
261264 @Callable(x)
262-func deleteUser (aq) = {
265+func deleteUser (as) = {
263266 let L = toString(addressFromPublicKey(x.callerPublicKey))
264267 let E = toBase58String(x.transactionId)
265268 if (if ((L == g))
266269 then true
267270 else (L == h))
268- then [DeleteEntry(S(aq)), DeleteEntry(K(aq)), DeleteEntry(M(aq)), DeleteEntry(N(aq)), DeleteEntry(O(aq)), DeleteEntry(P(aq)), DeleteEntry(Q(aq)), StringEntry(R(aq), n), StringEntry("last_invoke_id", E)]
271+ then [DeleteEntry(S(as)), DeleteEntry(K(as)), DeleteEntry(M(as)), DeleteEntry(N(as)), DeleteEntry(O(as)), DeleteEntry(P(as)), DeleteEntry(Q(as)), StringEntry(R(as), n), StringEntry("last_invoke_id", E)]
269272 else throw("You are not allowed to do that")
270273 }
271274
272275
273276
274-@Callable(at)
275-func addArtwork (B,z,ak,al,au,av,aw,ax,ay,az,aA,aB) = {
276- let U = toBase58String(at.transactionId)
277- let aC = toBase58String(at.caller.bytes)
278- if ((size(at.payments) == 0))
277+@Callable(av)
278+func addArtwork (B,z,am,an,aw,ax,ay,az,aA,aB,aC,aD) = {
279+ let U = toBase58String(av.transactionId)
280+ let aE = toBase58String(av.caller.bytes)
281+ if ((size(av.payments) == 0))
279282 then throw("No payment attached")
280283 else {
281- let aD = value(at.payments[0])
282- let aE = value(aD.amount)
283- let aF = if (if (isDefined(aD.assetId))
284- then (aD.assetId == e)
284+ let aF = value(av.payments[0])
285+ let aG = value(aF.amount)
286+ let aH = if (if (isDefined(aF.assetId))
287+ then (aF.assetId == e)
285288 else false)
286- then aD.assetId
289+ then aF.assetId
287290 else throw("Only SIGN token accepted at the moment")
288- let aG = {
291+ let aI = {
289292 let u = getInteger(a, ("certification_fee_" + toBase58String(e)))
290293 if ($isInstanceOf(u, "Int"))
291294 then {
292- let aH = u
293- aH
295+ let aJ = u
296+ aJ
294297 }
295298 else throw("Price undefined in oracle")
296299 }
297- if ((aE != aG))
298- then throw(("Payment amount should be " + toString(aG)))
300+ if ((aG != aI))
301+ then throw(("Payment amount should be " + toString(aI)))
299302 else {
300- let aI = s(aj(B, aC))
301- if ((aI != ""))
303+ let aK = s(al(B, aE))
304+ if ((aK != ""))
302305 then throw("You already added this artwork on Sign Art")
303306 else {
304- let aJ = s(ai(B))
305- if ((aJ != ""))
307+ let aL = s(ai(B))
308+ if ((aL != ""))
306309 then throw("This artwork hash is already registered on Sign Art")
307310 else {
308- let aK = y(z, aC, B)
309- if (!(aK))
311+ let aM = y(z, aE, B)
312+ if (!(aM))
310313 then throw("Sign Certificate not found on Sign-web.app smart contract for this address.")
311- else if ((size(ax) == 0))
314+ else if ((size(az) == 0))
312315 then throw("Display CID cannot be empty")
313- else if ((size(ak) == 0))
316+ else if ((size(am) == 0))
314317 then throw("Title cannot be empty")
315- else if ((size(ak) > 100))
318+ else if ((size(am) > 100))
316319 then throw("100 Characters maximum for the name")
317- else if ((size(al) > 1000))
320+ else if ((size(an) > 1000))
318321 then throw("1000 Characters maximum for the description")
319- else if ((size(al) == 0))
322+ else if ((size(an) == 0))
320323 then throw("Description cannot be empty")
321324 else {
322- let aL = split(au, ",")
323- if ((size(aL) > 5))
325+ let aN = split(aw, ",")
326+ if ((size(aN) > 5))
324327 then throw("Tags should be maximum 5 single word separated by space.")
325328 else {
326- let aM = {
327- let u = getString(this, ("user_status_" + aC))
329+ let aO = {
330+ let u = getString(this, ("user_status_" + aE))
328331 if ($isInstanceOf(u, "String"))
329332 then {
330- let aN = u
331- aN
333+ let aP = u
334+ aP
332335 }
333336 else o
334337 }
335- let ap = lastBlock.timestamp
336- if (if (isDefined(aM))
337- then (aM == o)
338+ let ar = lastBlock.timestamp
339+ if (if (isDefined(aO))
340+ then (aO == o)
338341 else false)
339342 then throw("Please register this account first with \"User infos\" tab")
340- else if ((aM == m))
343+ else if ((aO == m))
341344 then throw("Your account is suspended")
342- else if ((aM == n))
345+ else if ((aO == n))
343346 then throw("Your account have been removed")
344- else if ((aw > 10))
347+ else if ((ay > 10))
345348 then throw("Maximum 10 editions per artwork")
346349 else if ((size(B) != 64))
347350 then throw("Hash should be sha256 string composed of 64 char.")
348- else [StringEntry(ai(B), aC), StringEntry(aj(B, aC), U), BooleanEntry(Q(aC), true), IntegerEntry(T(aC, U), ap), StringEntry(V(aC, U), ak), StringEntry(W(aC, U), al), StringEntry(X(aC, U), ax), StringEntry(Z(aC, U), az), StringEntry(Y(aC, U), ay), StringEntry(ae(aC, U), aA), StringEntry(af(aC, U), aB), StringEntry(ah(aC, U), av), StringEntry(ag(aC, U), au), IntegerEntry(aa(aC, U), aw), StringEntry(ab(aC, U), z), IntegerEntry(ac(aC, U), 0), BooleanEntry(ad(aC, U), false), StringEntry("last_invoke_id", U), ScriptTransfer(Address(fromBase58String(d)), aE, aF)]
351+ else [StringEntry(ai(B), aE), StringEntry(al(B, aE), U), BooleanEntry(Q(aE), true), IntegerEntry(T(aE, U), ar), StringEntry(V(aE, U), am), StringEntry(W(aE, U), an), StringEntry(X(aE, U), az), StringEntry(Z(aE, U), aB), StringEntry(Y(aE, U), aA), StringEntry(ae(aE, U), aC), StringEntry(af(aE, U), aD), StringEntry(ah(aE, U), ax), StringEntry(ag(aE, U), aw), IntegerEntry(aa(aE, U), ay), StringEntry(ab(aE, U), z), IntegerEntry(ac(aE, U), 0), BooleanEntry(ad(aE, U), false), StringEntry(aj(aE, z), U), StringEntry("last_invoke_id", U), ScriptTransfer(Address(fromBase58String(d)), aG, aH)]
349352 }
350353 }
351354 }
352355 }
353356 }
354357 }
355358 }
356359
357360
358361
359-@Callable(at)
360-func updateArtwork (aO,ak,al,au,av,aw,ax,ay,az,aA,aB) = {
361- let aP = toBase58String(at.transactionId)
362- let aC = toBase58String(at.caller.bytes)
363- let aI = s(V(aC, aO))
364- if ((aI == ""))
362+@Callable(av)
363+func updateArtwork (aQ,am,an,aw,ax,ay,az,aA,aB,aC,aD) = {
364+ let aR = toBase58String(av.transactionId)
365+ let aE = toBase58String(av.caller.bytes)
366+ let aK = s(V(aE, aQ))
367+ if ((aK == ""))
365368 then throw("This entry doesn't exist or you are not the owner")
366- else if ((size(ak) == 0))
369+ else if ((size(am) == 0))
367370 then throw("Title cannot be empty")
368- else if ((size(ak) > 100))
371+ else if ((size(am) > 100))
369372 then throw("100 Characters maximum for the name")
370- else if ((size(al) > 1000))
373+ else if ((size(an) > 1000))
371374 then throw("1000 Characters maximum for the description")
372- else if ((size(al) == 0))
375+ else if ((size(an) == 0))
373376 then throw("Description cannot be empty")
374377 else {
375- let aQ = {
376- let u = getInteger(this, ac(aC, aO))
378+ let aS = {
379+ let u = getInteger(this, ac(aE, aQ))
377380 if ($isInstanceOf(u, "Int"))
378381 then {
379382 let I = u
380383 if ((I == 0))
381384 then false
382385 else true
383386 }
384387 else throw("Something went wrong.")
385388 }
386- let aL = split(au, ",")
387- if ((size(aL) > 5))
389+ let aN = split(aw, ",")
390+ if ((size(aN) > 5))
388391 then throw("Tags should be maximum 5 single word separated by space.")
389392 else {
390- let aM = {
391- let u = getString(this, ("user_status_" + aC))
393+ let aO = {
394+ let u = getString(this, ("user_status_" + aE))
392395 if ($isInstanceOf(u, "String"))
393396 then {
394- let aN = u
395- aN
397+ let aP = u
398+ aP
396399 }
397400 else o
398401 }
399- if (if (isDefined(aM))
400- then (aM == o)
402+ if (if (isDefined(aO))
403+ then (aO == o)
401404 else false)
402405 then throw("Please register this account first with \"User infos\" tab")
403- else if ((aM == m))
406+ else if ((aO == m))
404407 then throw("Your account is suspended")
405- else if ((aM == n))
408+ else if ((aO == n))
406409 then throw("Your account have been removed")
407- else if ((aw > 10))
410+ else if ((ay > 10))
408411 then throw("Maximum 10 editions per artwork")
409- else if (!(aQ))
410- then [StringEntry(V(aC, aO), ak), StringEntry(W(aC, aO), al), StringEntry(X(aC, aO), ax), StringEntry(Z(aC, aO), az), StringEntry(Y(aC, aO), ay), StringEntry(af(aC, aO), aB), StringEntry(ae(aC, aO), aA), IntegerEntry(aa(aC, aO), aw), StringEntry(ag(aC, aO), au), StringEntry(ah(aC, aO), av), StringEntry("last_invoke_id", aP)]
411- else [StringEntry(V(aC, aO), ak), StringEntry(W(aC, aO), al), StringEntry(X(aC, aO), ax), StringEntry(ah(aC, aO), av), StringEntry(ag(aC, aO), au), StringEntry("last_invoke_id", aP)]
412+ else if (!(aS))
413+ then [StringEntry(V(aE, aQ), am), StringEntry(W(aE, aQ), an), StringEntry(X(aE, aQ), az), StringEntry(Z(aE, aQ), aB), StringEntry(Y(aE, aQ), aA), StringEntry(af(aE, aQ), aD), StringEntry(ae(aE, aQ), aC), IntegerEntry(aa(aE, aQ), ay), StringEntry(ag(aE, aQ), aw), StringEntry(ah(aE, aQ), ax), StringEntry("last_invoke_id", aR)]
414+ else [StringEntry(V(aE, aQ), am), StringEntry(W(aE, aQ), an), StringEntry(X(aE, aQ), az), StringEntry(ah(aE, aQ), ax), StringEntry(ag(aE, aQ), aw), StringEntry("last_invoke_id", aR)]
412415 }
413416 }
414417 }
415418
416419
417420
418421 @Callable(x)
419-func deleteArtwork (U,aR) = {
422+func deleteArtwork (U,aT) = {
420423 let L = toString(addressFromPublicKey(x.callerPublicKey))
421424 let E = toBase58String(x.transactionId)
422425 if ((L != g))
423426 then throw("You are not allowed to do that")
424- else [DeleteEntry(T(aR, U)), DeleteEntry(V(aR, U)), DeleteEntry(W(aR, U)), DeleteEntry(X(aR, U)), DeleteEntry(Z(aR, U)), DeleteEntry(Y(aR, U)), DeleteEntry(ae(aR, U)), DeleteEntry(af(aR, U)), DeleteEntry(ah(aR, U)), DeleteEntry(ag(aR, U)), DeleteEntry(aa(aR, U)), DeleteEntry(ab(aR, U)), DeleteEntry(ac(aR, U)), DeleteEntry(ad(aR, U)), StringEntry("last_invoke_id", E)]
427+ else [DeleteEntry(T(aT, U)), DeleteEntry(V(aT, U)), DeleteEntry(W(aT, U)), DeleteEntry(X(aT, U)), DeleteEntry(Z(aT, U)), DeleteEntry(Y(aT, U)), DeleteEntry(ae(aT, U)), DeleteEntry(af(aT, U)), DeleteEntry(ah(aT, U)), DeleteEntry(ag(aT, U)), DeleteEntry(aa(aT, U)), DeleteEntry(ab(aT, U)), DeleteEntry(ac(aT, U)), DeleteEntry(ad(aT, U)), StringEntry("last_invoke_id", E)]
425428 }
426429
427430
428431
429-@Callable(at)
430-func sellArtwork (aS,aH) = {
431- let E = toBase58String(at.transactionId)
432- let aC = toBase58String(at.caller.bytes)
433- let aT = lastBlock.timestamp
434- let aU = s(((aS + "_") + aC))
435- if (!(isDefined(aU)))
432+@Callable(av)
433+func sellArtwork (aU,aJ) = {
434+ let E = toBase58String(av.transactionId)
435+ let aE = toBase58String(av.caller.bytes)
436+ let aV = lastBlock.timestamp
437+ let aW = s(((aU + "_") + aE))
438+ if (!(isDefined(aW)))
436439 then throw("This artwork doesn't exit or you are not the owner")
437440 else {
438- let aM = s(("user_status_" + aC))
439- if ((aM == ""))
441+ let aO = s(("user_status_" + aE))
442+ if ((aO == ""))
440443 then throw("Please register this account first")
441444 else {
442- let aV = w(((("art_issued_" + aU) + "_") + aC))
443- let aW = w(((("art_maxmint_" + aU) + "_") + aC))
444- if ((aV == aW))
445+ let aX = w(((("art_issued_" + aW) + "_") + aE))
446+ let aY = w(((("art_maxmint_" + aW) + "_") + aE))
447+ if ((aX == aY))
445448 then throw("You reached the max edition allowed to sell for this edition.")
446- else if ((aM == m))
449+ else if ((aO == m))
447450 then throw("Your account is suspended")
448- else if (!(isDefined(aU)))
451+ else if (!(isDefined(aW)))
449452 then throw("This artwork desn't exist")
450- else if ((size(aS) != 64))
453+ else if ((size(aU) != 64))
451454 then throw("This hash is incorrect.")
452455 else {
453- let aX = if ((aH > 0))
456+ let aZ = if ((aJ > 0))
454457 then true
455458 else false
456-[BooleanEntry(((("art_onsale_" + aU) + "_") + aC), aX), IntegerEntry(((("art_price_" + aU) + "_") + aC), aH), StringEntry("last_invoke_id", E)]
459+[BooleanEntry(((("art_onsale_" + aW) + "_") + aE), aZ), IntegerEntry(((("art_price_" + aW) + "_") + aE), aJ), StringEntry("last_invoke_id", E)]
457460 }
458461 }
459462 }
460463 }
461464
462465
463466
464-@Callable(at)
465-func buyArtwork (aS,aY) = {
466- let E = toBase58String(at.transactionId)
467- let aC = toBase58String(at.caller.bytes)
468- let aZ = w("total_nft_issued")
469- let aU = s(((aS + "_") + aY))
470- if ((aU == ""))
467+@Callable(av)
468+func buyArtwork (aU,ba) = {
469+ let E = toBase58String(av.transactionId)
470+ let aE = toBase58String(av.caller.bytes)
471+ let bb = w("total_nft_issued")
472+ let aW = s(((aU + "_") + ba))
473+ if ((aW == ""))
471474 then throw("This artwork doesn't exit or you are not the owner")
472475 else {
473- let aM = s(("user_status_" + aC))
474- if (!(isDefined(aM)))
476+ let aO = s(("user_status_" + aE))
477+ if (!(isDefined(aO)))
475478 then throw("Please register this account first")
476479 else {
477- let ba = s(((("art_sold_" + aU) + "_") + aY))
478- let aV = w(((("art_issued_" + aU) + "_") + aY))
479- let bb = w(((("art_price_" + aU) + "_") + aY))
480- if ((bb == 0))
480+ let bc = s(((("art_sold_" + aW) + "_") + ba))
481+ let aX = w(((("art_issued_" + aW) + "_") + ba))
482+ let bd = w(((("art_price_" + aW) + "_") + ba))
483+ if ((bd == 0))
481484 then throw("This artwork is not for sell")
482485 else {
483- let aW = w(((("art_maxmint_" + aU) + "_") + aY))
484- let aD = value(at.payments[0])
485- let aE = value(aD.amount)
486- let aF = if (isDefined(aD.assetId))
486+ let aY = w(((("art_maxmint_" + aW) + "_") + ba))
487+ let aF = value(av.payments[0])
488+ let aG = value(aF.amount)
489+ let aH = if (isDefined(aF.assetId))
487490 then throw("Only Waves token accepted at the moment")
488491 else unit
489- if ((aV == aW))
492+ if ((aX == aY))
490493 then throw("Cannot buy this artwork anymore")
491- else if ((bb != aE))
494+ else if ((bd != aG))
492495 then throw("Payment don't match seller price")
493496 else {
494- let bc = (aV + 1)
495- let aT = lastBlock.timestamp
496- let bd = (((((((((((((("{\"version\": 1,\"artID\": \"" + aU) + "\",\"maxIssuable\": \"") + toString(aW)) + "\",\"signID\": \"SA_") + toString((aZ + 1))) + "\", \"creator\": \"") + aY) + "\", \"issue\": \"") + toString(bc)) + "/") + toString(aW)) + "\", \"hash\": ") + aS) + "}")
497- let be = Issue(("SA_" + toString((aZ + 1))), bd, 1, 0, false)
498- let bf = calculateAssetId(be)
499- let aX = if ((bc == aW))
497+ let be = (aX + 1)
498+ let aV = lastBlock.timestamp
499+ let bf = (((((((((((((("{\"version\": 1,\"artID\": \"" + aW) + "\",\"maxIssuable\": \"") + toString(aY)) + "\",\"signID\": \"SA_") + toString((bb + 1))) + "\", \"creator\": \"") + ba) + "\", \"issue\": \"") + toString(be)) + "/") + toString(aY)) + "\", \"hash\": ") + aU) + "}")
500+ let bg = Issue(("SA_" + toString((bb + 1))), bf, 1, 0, false)
501+ let bh = calculateAssetId(bg)
502+ let aZ = if ((be == aY))
500503 then false
501504 else true
502-[IntegerEntry(((("art_issued_" + aU) + "_") + aY), bc), StringEntry(((((((("art_sold_" + toString(bc)) + "_of_") + toString(aW)) + "_") + aU) + "_") + aY), ((((((aC + "_") + toString(aT)) + "_") + E) + "_") + toString(bb))), IntegerEntry("total_nft_issued", (aZ + 1)), StringEntry("last_invoke_id", E), be, BooleanEntry(((("art_onsale_" + aU) + "_") + aC), aX), ScriptTransfer(Address(fromBase58String(aY)), aE, aF), ScriptTransfer(at.caller, 1, bf)]
505+[IntegerEntry(((("art_issued_" + aW) + "_") + ba), be), StringEntry(((((((("art_sold_" + toString(be)) + "_of_") + toString(aY)) + "_") + aW) + "_") + ba), ((((((aE + "_") + toString(aV)) + "_") + E) + "_") + toString(bd))), IntegerEntry("total_nft_issued", (bb + 1)), StringEntry("last_invoke_id", E), bg, BooleanEntry(((("art_onsale_" + aW) + "_") + aE), aZ), ScriptTransfer(Address(fromBase58String(ba)), aG, aH), ScriptTransfer(av.caller, 1, bh)]
503506 }
504507 }
505508 }
506509 }
507510 }
508511
509512

github/deemru/w8io/6500d08 
288.81 ms