tx · FY33uG7zS224nQSnR7s7jed4z3Jx8RjnefAZMcCLUb8n

3My71eA5781UVppziZNzPzoaXoQ79XLfpou:  -0.01400000 Waves

2020.09.18 14:10 [1182648] smart account 3My71eA5781UVppziZNzPzoaXoQ79XLfpou > SELF 0.00000000 Waves

{ "type": 13, "id": "FY33uG7zS224nQSnR7s7jed4z3Jx8RjnefAZMcCLUb8n", "fee": 1400000, "feeAssetId": null, "timestamp": 1600427490627, "version": 2, "chainId": 84, "sender": "3My71eA5781UVppziZNzPzoaXoQ79XLfpou", "senderPublicKey": "xu7oh5A3xfh5PtSRAoZLCyetRFpcf6bq7bCzGtTCUyL", "proofs": [ "At3djJukiKHKWTK9DBYrsM1arUGn3w742RSEyYZguF4LAmiNvrU66aPTAYkPaGHhZfGAZWs6fExqcKCpbicvMzy" ], "script": "base64:AAIEAAAAAAAAAE4IAhIGCgQICAgIEgYKBAgICAgSBAoCCAgSAwoBCBIOCgwICAgICAgBCAgICAgSDQoLCAgICAgBCAgICAgSBAoCCAgSBAoCCAESBAoCCAgAAAAxAAAAAA9zdG9yYWdlVmVyaWZpZXIJAQAAAAV2YWx1ZQAAAAEJAAQmAAAAAQIAAAAjM04yczVSdGFIUEJlbkNzeDJFQ2NvRlJiWUh4M25vWmhYVzEAAAAADXVzZXJXaGl0ZWxpc3QJAQAAAAV2YWx1ZQAAAAEJAAQmAAAAAQIAAAAjM01wSkViMzZaUXlrMWhhS25vY2F5SmNZTTMxY05QWFBpSzMAAAAADHNpZ25WZXJpZmllcgkBAAAABXZhbHVlAAAAAQkABCYAAAABAgAAACMzTkMyOGhTaXZybXNUVVhhWUQxeDZMMzYySjRacFVub1RkQgAAAAALZmVlUmVjZWl2ZXICAAAAIzNOMUU2dFhkZFJvVmFSZlE5ZFEzdmc1TGFXMmZzZDhIS3ViAAAAAAtzaWduQXNzZXRJZAEAAAAg6KVqvMp3QvJwYTI1Sk9Fg7m5HuWZZxfDcerZC6EEresAAAAABnVzZG5JRAIAAAAsM0tGWEJHR0xDakE1WjJEdVc0RHE5ZkREckhqSkpQMVpFa2FvYWpTenVLc0MAAAAABWFkbWluAgAAACMzTXNHNmpQTkNyVkpVdFlCN1hKQnhTN3V0V3NYQWY0bjlWcAAAAAAGYWRtaW4yAgAAACMzTXptNFZMd3NOOXVad2JUTXpQajNYdXhWNmtFZkFSOFVETgAAAAAPV0hJVEVMSVNURURPTkxZBgAAAAALdXNlckFsbG93ZWQCAAAAB0FMTE9XRUQAAAAADnVzZXJSZWdpc3RlcmVkAgAAAApSRUdJU1RFUkVEAAAAAAx1c2VyVmVyaWZpZWQCAAAACFZFUklGSUVEAAAAAA11c2VyU3VzcGVuZGVkAgAAAAlTVVNQRU5ERUQAAAAAC3VzZXJSZW1vdmVkAgAAAAdSRU1PVkVEAAAAABB1c2VyVW5yZWdpc3RlcmVkAgAAAAxVTlJFR0lTVEVSRUQAAAAABm9uU2FsZQIAAAAHT05fU0FMRQAAAAAEc29sZAIAAAAEU09MRAAAAAAIY2FuY2VsZWQCAAAACENBTkNFTEVEAQAAAA5nZXRTdHJpbmdCeUtleQAAAAEAAAADa2V5BAAAAAckbWF0Y2gwCQAEHQAAAAIFAAAABHRoaXMFAAAAA2tleQMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAGU3RyaW5nBAAAAAFhBQAAAAckbWF0Y2gwBQAAAAFhAgAAAAABAAAAD2dldEludGVnZXJCeUtleQAAAAEAAAADa2V5BAAAAAckbWF0Y2gwCQAEGgAAAAIFAAAABHRoaXMFAAAAA2tleQMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAADSW50BAAAAAFpBQAAAAckbWF0Y2gwBQAAAAFpAAAAAAAAAAAAAQAAABRjaGVja1NpZ25DZXJ0aWZpY2F0ZQAAAAMAAAAGc2lnbklEAAAABU93bmVyAAAACnNoYTI1Nkhhc2gEAAAAByRtYXRjaDAJAAQdAAAAAgUAAAAMc2lnblZlcmlmaWVyCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAhkYXRhX2ZjXwUAAAAGc2lnbklEAgAAAAFfBQAAAAVPd25lcgMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAGU3RyaW5nBAAAAAFhBQAAAAckbWF0Y2gwAwkBAAAACGNvbnRhaW5zAAAAAgUAAAABYQUAAAAKc2hhMjU2SGFzaAYHBwEAAAAMdmFsaWRhdGVORlRzAAAAAgAAAAthY2N1bXVsYXRvcgAAAAJpZAQAAAAMYXNzZXREZXRhaWxzCQEAAAAFdmFsdWUAAAABCQAD7AAAAAEJAAJZAAAAAQUAAAACaWQDAwMJAQAAAAIhPQAAAAIIBQAAAAxhc3NldERldGFpbHMAAAAIcXVhbnRpdHkAAAAAAAAAAAEGCQEAAAACIT0AAAACCAUAAAAMYXNzZXREZXRhaWxzAAAACGRlY2ltYWxzAAAAAAAAAAAABgkBAAAAAiE9AAAAAggFAAAADGFzc2V0RGV0YWlscwAAAApyZWlzc3VhYmxlBwkAAGQAAAACBQAAAAthY2N1bXVsYXRvcgAAAAAAAAAAAAkAAGQAAAACBQAAAAthY2N1bXVsYXRvcgAAAAAAAAAAAQEAAAANdmVyaWZ5QWRkcmVzcwAAAAEAAAAEYWRkcgMJAQAAAAEhAAAAAQUAAAAPV0hJVEVMSVNURURPTkxZBgQAAAAHJG1hdGNoMAkABBsAAAACBQAAAA11c2VyV2hpdGVsaXN0BQAAAARhZGRyAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAAdCb29sZWFuBAAAAAFiBQAAAAckbWF0Y2gwBQAAAAFiCQAAAgAAAAECAAAALVlvdSBhcmUgbm90IGFsbG93ZWQsIHBsZWFzZSBjb250YWN0IHVzIGZpcnN0LgEAAAAMdmVyaWZ5U3RhdHVzAAAAAQAAAARhZGRyBAAAAAckbWF0Y2gwCQAEHQAAAAIFAAAABHRoaXMJAAEsAAAAAgIAAAAMdXNlcl9zdGF0dXNfBQAAAARhZGRyAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAAZTdHJpbmcEAAAAAWIFAAAAByRtYXRjaDAFAAAAAWIJAAACAAAAAQIAAAAVU29tZXRoaW5nIHdlbnQgd3JvbmcuAQAAAAtrZXlVc2VyQWRkcgAAAAEAAAAKY2FsbGVyQWRkcgkAASwAAAACAgAAAAV1c2VyXwUAAAAKY2FsbGVyQWRkcgEAAAALa2V5VXNlck5hbWUAAAABAAAACmNhbGxlckFkZHIJAAEsAAAAAgIAAAAKdXNlcl9uYW1lXwUAAAAKY2FsbGVyQWRkcgEAAAALa2V5VXNlckRlc2MAAAABAAAACmNhbGxlckFkZHIJAAEsAAAAAgIAAAAKdXNlcl9kZXNjXwUAAAAKY2FsbGVyQWRkcgEAAAANa2V5VXNlclNvY2lhbAAAAAEAAAAKY2FsbGVyQWRkcgkAASwAAAACAgAAAAx1c2VyX3NvY2lhbF8FAAAACmNhbGxlckFkZHIBAAAADGtleVVzZXJUaHVtYgAAAAEAAAAKY2FsbGVyQWRkcgkAASwAAAACAgAAAAt1c2VyX3RodW1iXwUAAAAKY2FsbGVyQWRkcgEAAAAPa2V5VXNlcklzQXJ0aXN0AAAAAQAAAApjYWxsZXJBZGRyCQABLAAAAAICAAAADnVzZXJfaXNhcnRpc3RfBQAAAApjYWxsZXJBZGRyAQAAAA1rZXlVc2VyU3RhdHVzAAAAAQAAAApjYWxsZXJBZGRyCQABLAAAAAICAAAADHVzZXJfc3RhdHVzXwUAAAAKY2FsbGVyQWRkcgEAAAALa2V5VXNlckRhdGUAAAABAAAACmNhbGxlckFkZHIJAAEsAAAAAgIAAAAKdXNlcl9kYXRlXwUAAAAK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AgkAASwAAAACAgAAABJhcnRfYXJ0aWRieXNpZ25pZF8FAAAABnNpZ25JZAIAAAABXwUAAAAKY2FsbGVyQWRkcgEAAAAVa2V5QXJ0VHhpZEJ5SGFzaE93bmVyAAAAAgAAAApzaGEyNTZIYXNoAAAACmNhbGxlckFkZHIJAAEsAAAAAgIAAAAXYXJ0X3R4aWRfYnlfaGFzaF9vd25lcl8JAAJYAAAAAQkAC1QAAAABCQABmwAAAAEJAAEsAAAAAgUAAAAKc2hhMjU2SGFzaAUAAAAKY2FsbGVyQWRkcgAAAAkAAAABaQEAAAAMcmVnaXN0ZXJVc2VyAAAABAAAAARuYW1lAAAAC2Rlc2NyaXB0aW9uAAAABXRodW1iAAAABnNvY2lhbAQAAAAKY2FsbGVyQWRkcgkABCUAAAABCQEAAAAUYWRkcmVzc0Zyb21QdWJsaWNLZXkAAAABCAUAAAABaQAAAA9jYWxsZXJQdWJsaWNLZXkEAAAAD3VzZXJDYW5SZWdpc3RlcgkBAAAADmdldFN0cmluZ0J5S2V5AAAAAQkBAAAADWtleVVzZXJTdGF0dXMAAAABBQAAAApjYWxsZXJBZGRyBAAAAAJpZAkAAlgAAAABCAUAAAABaQAAAA10cmFuc2FjdGlvbklkBAAAAAl0aW1lc3RhbXAIBQAAAAlsYXN0QmxvY2sAAAAJdGltZXN0YW1wAwMJAAAAAAAAAgUAAAAPdXNlckNhblJlZ2lzdGVyBQAAAA11c2VyU3VzcGVuZGVkBgkAAAAAAAACBQAAAA91c2VyQ2FuUmVnaXN0ZXIFAAAAC3VzZXJSZW1vdmVkCQAAAgAAAAECAAAAS1lvdSBhcmUgbm93IGFsbG93ZWQgdG8gcmVnaXN0ZXIsIHlvdXIgYWNjb3VudCBoYXZlIGJlZW4gc3VzcGVuZGVkLyByZW1vdmVkLgMJAAAAAAAAAgUAAAAPdXNlckNhblJlZ2lzdGVyBQAAAA51c2VyUmVnaXN0ZXJlZAkAAAIAAAABAgAAAD1Zb3UgYXJlIGFscmVhZHkgcmVnaXN0ZXJlZCwgcGxlYXNlIHVzZSB1cGRhdGUgbWV0aG9kIGluc3RlYWQuAwMJAAAAAAAAAgUAAAAPdXNlckNhblJlZ2lzdGVyAgAAAAAFAAAAD1dISVRFTElTVEVET05MWQcJAAACAAAAAQIAAABNWW91IGFyZSBub3cgYWxsb3dlZCB0byByZWdpc3RlciB5ZXQsIHBsZWFzZSBjb250YWN0IHVzIGZpcnN0IHRvIGdldCBhcHByb3ZlZC4DAwkAAAAAAAACBQAAAARuYW1lAgAAAAAGCQAAAAAAAAIFAAAAC2Rlc2NyaXB0aW9uAgAAAAAJAAACAAAAAQIAAAAkTmFtZSBhbmQgZGVzY3JpcHRpb24gY2Fubm90IGJlIGVtcHR5AwkAAGYAAAACCQABMQAAAAEFAAAAC2Rlc2NyaXB0aW9uAAAAAAAAAAJYCQAAAgAAAAECAAAAKjYwMCBDaGFyYWN0ZXJzIG1heGltdW0gZm9yIHRoZSBkZXNjcmlwdGlvbgkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkBAAAAC2tleVVzZXJEYXRlAAAAAQUAAAAKY2FsbGVyQWRkcgUAAAAJdGltZXN0YW1wCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAAAtrZXlVc2VyQWRkcgAAAAEFAAAACmNhbGxlckFkZHIJAAEsAAAAAgkAASwAAAACBQAAAAJpZAIAAAABXwkAAaQAAAABCAUAAAAJbGFzdEJsb2NrAAAACXRpbWVzdGFtcAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAALa2V5VXNlck5hbWUAAAABBQAAAApjYWxsZXJBZGRyBQAAAARuYW1lCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAAAtrZXlVc2VyRGVzYwAAAAEFAAAACmNhbGxlckFkZHIFAAAAC2Rlc2NyaXB0aW9uCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAAA1rZXlVc2VyU29jaWFsAAAAAQUAAAAKY2FsbGVyQWRkcgUAAAAGc29jaWFsCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAAAxrZXlVc2VyVGh1bWIAAAABBQAAAApjYWxsZXJBZGRyBQAAAAV0aHVtYgkABEwAAAACCQEAAAAMQm9vbGVhbkVudHJ5AAAAAgkBAAAAD2tleVVzZXJJc0FydGlzdAAAAAEFAAAACmNhbGxlckFkZHIHCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAAA1rZXlVc2VyU3RhdHVzAAAAAQUAAAAKY2FsbGVyQWRkcgUAAAAOdXNlclJlZ2lzdGVyZWQJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgIAAAAObGFzdF9pbnZva2VfaWQFAAAAAmlkBQAAAANuaWwAAAABaQEAAAAKdXBkYXRlVXNlcgAAAAQAAAAEbmFtZQAAAAtkZXNjcmlwdGlvbgAAAAV0aHVtYgAAAAZzb2NpYWwEAAAACmNhbGxlckFkZHIJAAQlAAAAAQkBAAAAFGFkZHJlc3NGcm9tUHVibGljS2V5AAAAAQgFAAAAAWkAAAAPY2FsbGVyUHVibGljS2V5BAAAAA91c2VyQ2FuUmVnaXN0ZXIJAQAAAA5nZXRTdHJpbmdCeUtleQAAAAEJAQAAAA1rZXlVc2VyU3RhdHVzAAAAAQUAAAAKY2FsbGVyQWRkcgMDCQAAAAAAAAIFAAAAD3VzZXJDYW5SZWdpc3RlcgUAAAANdXNlclN1c3BlbmRlZAYJAAAAAAAAAgUAAAAPdXNlckNhblJlZ2lzdGVyBQAAAAt1c2VyUmVtb3ZlZAkAAAIAAAABAgAAAEtZb3UgYXJlIG5vdyBhbGxvd2VkIHRvIHJlZ2lzdGVyLCB5b3VyIGFjY291bnQgaGF2ZSBiZWVuIHN1c3BlbmRlZC8gcmVtb3ZlZC4DAwkAAAAAAAACBQAAAA91c2VyQ2FuUmVnaXN0ZXICAAAAAAYJAAAAAAAAAgUAAAAPdXNlckNhblJlZ2lzdGVyBQAAAAt1c2VyQWxsb3dlZAkAAAIAAAABAgAAACdQbGVhc2UgcmVnaXN0ZXIgZmlyc3Qgd2l0aCByZWdpc3RlclVzZXIEAAAAAmlkCQACWAAAAAEIBQAAAAFpAAAADXRyYW5zYWN0aW9uSWQEAAAACXRpbWVzdGFtcAgFAAAACWxhc3RCbG9jawAAAAl0aW1lc3RhbXADAwkAAAAAAAACBQAAAARuYW1lAgAAAAAGCQAAAAAAAAIFAAAAC2Rlc2NyaXB0aW9uAgAAAAAJAAACAAAAAQIAAAAkTmFtZSBhbmQgZGVzY3JpcHRpb24gY2Fubm90IGJlIGVtcHR5AwkAAGYAAAACCQABMQAAAAEFAAAAC2Rlc2NyaXB0aW9uAAAAAAAAAAJYCQAAAgAAAAECAAAAKjYwMCBDaGFyYWN0ZXJzIG1heGltdW0gZm9yIHRoZSBkZXNjcmlwdGlvbgkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAALa2V5VXNlck5hbWUAAAABBQAAAApjYWxsZXJBZGRyBQAAAARuYW1lCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAAAtrZXlVc2VyRGVzYwAAAAEFAAAACmNhbGxlckFkZHIFAAAAC2Rlc2NyaXB0aW9uCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAAA1rZXlVc2VyU29jaWFsAAAAAQUAAAAKY2FsbGVyQWRkcgUAAAAGc29jaWFsCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAAAxrZXlVc2VyVGh1bWIAAAABBQAAAApjYWxsZXJBZGRyBQAAAAV0aHVtYgkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACAgAAAA5sYXN0X2ludm9rZV9pZAUAAAACaWQFAAAAA25pbAAAAAFpAQAAABBjaGFuZ2VVc2VyU3RhdHVzAAAAAgAAAAdhZGRyZXNzAAAABnN0YXR1cwQAAAAKY2FsbGVyQWRkcgkABCUAAAABCQEAAAAUYWRkcmVzc0Zyb21QdWJsaWNLZXkAAAABCAUAAAABaQAAAA9jYWxsZXJQdWJsaWNLZXkEAAAAAmlkCQACWAAAAAEIBQAAAAFpAAAADXRyYW5zYWN0aW9uSWQEAAAAC3N0YXR1c1RvU2V0AwkAAAAAAAACBQAAAAZzdGF0dXMFAAAADHVzZXJWZXJpZmllZAUAAAAMdXNlclZlcmlmaWVkAwkAAAAAAAACBQAAAAZzdGF0dXMFAAAADnVzZXJSZWdpc3RlcmVkBQAAAA51c2VyUmVnaXN0ZXJlZAMJAAAAAAAAAgUAAAAGc3RhdHVzBQAAAA11c2VyU3VzcGVuZGVkBQAAAA11c2VyU3VzcGVuZGVkAwkAAAAAAAACBQAAAAZzdGF0dXMFAAAAC3VzZXJSZW1vdmVkBQAAAAt1c2VyUmVtb3ZlZAMJAAAAAAAAAgUAAAAGc3RhdHVzBQAAAAt1c2VyQWxsb3dlZAUAAAALdXNlckFsbG93ZWQJAAACAAAAAQIAAAAOVW5rbm93biBzdGF0dXMD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bHkgU0lHTiB0b2tlbiBhY2NlcHRlZCBhdCB0aGUgbW9tZW50BAAAABljdXJyZW50Q2VydGlmaWNhdGlvblByaWNlBAAAAAckbWF0Y2gwCQAEGgAAAAIFAAAAD3N0b3JhZ2VWZXJpZmllcgkAASwAAAACAgAAABJjZXJ0aWZpY2F0aW9uX2ZlZV8JAAJYAAAAAQUAAAALc2lnbkFzc2V0SWQDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAA0ludAQAAAAFcHJpY2UFAAAAByRtYXRjaDAFAAAABXByaWNlCQAAAgAAAAECAAAAGVByaWNlIHVuZGVmaW5lZCBpbiBvcmFjbGUDCQEAAAACIT0AAAACBQAAAAZhbW91bnQFAAAAGWN1cnJlbnRDZXJ0aWZpY2F0aW9uUHJpY2UJAAACAAAAAQkAASwAAAACAgAAABlQYXltZW50IGFtb3VudCBzaG91bGQgYmUgCQABpAAAAAEFAAAAGWN1cnJlbnRDZXJ0aWZpY2F0aW9uUHJpY2UEAAAACmVudHJ5RXhpc3QJAQAAAA5nZXRTdHJpbmdCeUtleQAAAAEJAQAAABVrZXlBcnRUeGlkQnlIYXNoT3duZXIAAAACBQAAAApzaGEyNTZIYXNoBQAAAA1jYWxsZXJBZGRyZXNzAwkBAAAAAiE9AAAAAgUAAAAKZW50cnlFeGlzdAIAAAAACQAAAgAAAAECAAAAKllvdSBhbHJlYWR5IGFkZGVkIHRoaXMgYXJ0d29yayBvbiBTaWduIEFydAQAAAAJaGFzaEV4aXN0CQEAAAAOZ2V0U3RyaW5nQnlLZXkAAAABCQEAAAARa2V5QXJ0T3duZXJCeUhhc2gAAAABBQAAAApzaGEyNTZIYXNoAwkBAAAAAiE9AAAAAgUAAAAJaGFzaEV4aXN0AgAAAAAJAAACAAAAAQIAAAAzVGhpcyBhcnR3b3JrIGhhc2ggaXMgYWxyZWFkeSByZWdpc3RlcmVkIG9uIFNpZ24gQXJ0BAAAAA9pc1NpZ25DZXJ0aWZpZWQJAQAAABRjaGVja1NpZ25DZXJ0aWZpY2F0ZQAAAAMFAAAABnNpZ25JRAUAAAANY2FsbGVyQWRkcmVzcwUAAAAKc2hhMjU2SGFzaAMJAQAAAAEhAAAAAQUAAAAPaXNTaWduQ2VydGlmaWVkCQAAAgAAAAECAAAAS1NpZ24gQ2VydGlmaWNhdGUgbm90IGZvdW5kIG9uIFNpZ24td2ViLmFwcCBzbWFydCBjb250cmFjdCBmb3IgdGhpcyBhZGRyZXNzLgMJAAAAAAAAAgkAATEAAAABBQAAAApjaWREaXNwbGF5AAAAAAAAAAAACQAAAgAAAAECAAAAG0Rpc3BsYXkgQ0lEIGNhbm5vdCBiZSBlbXB0eQMJAAAAAAAAAgkAATEAAAABBQAAAARuYW1lAAAAAAAAAAAACQAAAgAAAAECAAAAFVRpdGxlIGNhbm5vdCBiZSBlbXB0eQMJAABmAAAAAgkAATEAAAABBQAAAARuYW1lAAAAAAAAAABkCQAAAgAAAAECAAAAIzEwMCBDaGFyYWN0ZXJzIG1heGltdW0gZm9yIHRoZSBuYW1lAwkAAGYAAAACCQABMQAAAAEFAAAAC2Rlc2NyaXB0aW9uAAAAAAAAAAPoCQAAAgAAAAECAAAAKzEwMDAgQ2hhcmFjdGVycyBtYXhpbXVtIGZvciB0aGUgZGVzY3JpcHRpb24DCQAAAAAAAAIJAAExAAAAAQUAAAALZGVzY3JpcHRpb24AAAAAAAAAAAAJAAACAAAAAQIAAAAbRGVzY3JpcHRpb24gY2Fubm90IGJlIGVtcHR5BAAAAAh0YWdzTGlzdAkABLUAAAACBQAAAAR0YWdzAgAAAAEsAwkAAGYAAAACCQABkAAAAAEFAAAACHRhZ3NMaXN0AAAAAAAAAAAFCQAAAgAAAAECAAAAOFRhZ3Mgc2hvdWxkIGJlIG1heGltdW0gNSBzaW5nbGUgd29yZCBzZXBhcmF0ZWQgYnkgc3BhY2UuBAAAABB1c2VySXNSZWdpc3RlcmVkBAAAAAckbWF0Y2gwCQAEHQAAAAIFAAAABHRoaXMJAAEsAAAAAgIAAAAMdXNlcl9zdGF0dXNfBQAAAA1jYWxsZXJBZGRyZXNzAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAAZTdHJpbmcEAAAAAXMFAAAAByRtYXRjaDAFAAAAAXMFAAAAEHVzZXJVbnJlZ2lzdGVyZWQEAAAACXRpbWVzdGFtcAgFAAAACWxhc3RCbG9jawAAAAl0aW1lc3RhbXADAwkBAAAACWlzRGVmaW5lZAAAAAEFAAAAEHVzZXJJc1JlZ2lzdGVyZWQJAAAAAAAAAgUAAAAQdXNlcklzUmVnaXN0ZXJlZAUAAAAQdXNlclVucmVnaXN0ZXJlZAcJAAACAAAAAQIAAAA4UGxlYXNlIHJlZ2lzdGVyIHRoaXMgYWNjb3VudCBmaXJzdCB3aXRoICJVc2VyIGluZm9zIiB0YWIDCQAAAAAAAAIFAAAAEHVzZXJJc1JlZ2lzdGVyZWQFAAAADXVzZXJTdXNwZW5kZWQJAAACAAAAAQIAAAAZWW91ciBhY2NvdW50IGlzIHN1c3BlbmRlZAMJAAAAAAAAAgUAAAAQdXNlcklzUmVnaXN0ZXJlZAUAAAALdXNlclJlbW92ZWQJAAACAAAAAQIAAAAeWW91ciBhY2NvdW50IGhhdmUgYmVlbiByZW1vdmVkAwkAAGYAAAACBQAAAAdtYXhtaW50AAAAAAAAAAAKCQAAAgAAAAECAAAAH01heGltdW0gMTAgZWRpdGlvbnMgcGVyIGFydHdvcmsDCQEAAAACIT0AAAACCQABMQAAAAEFAAAACnNoYTI1Nkhhc2gAAAAAAAAAAEAJAAACAAAAAQIAAAAxSGFzaCBzaG91bGQgYmUgc2hhMjU2IHN0cmluZyBjb21wb3NlZCBvZiA2NCBjaGFyLgkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAARa2V5QXJ0T3duZXJCeUhhc2gAAAABBQAAAApzaGEyNTZIYXNoBQAAAA1jYWxsZXJBZGRyZXNzCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAABVrZXlBcnRUeGlkQnlIYXNoT3duZXIAAAACBQAAAApzaGEyNTZIYXNoBQAAAA1jYWxsZXJBZGRyZXNzBQAAAAVhcnRJZAkABEwAAAACCQEAAAAMQm9vbGVhbkVudHJ5AAAAAgkBAAAAD2tleVVzZXJJc0FydGlzdAAAAAEFAAAADWNhbGxlckFkZHJlc3MGCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAAKa2V5QXJ0RGF0ZQAAAAIFAAAADWNhbGxlckFkZHJlc3MFAAAABWFydElkBQAAAAl0aW1lc3RhbXAJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAACmtleUFydE5hbWUAAAACBQAAAA1jYWxsZXJBZGRyZXNzBQAAAAVhcnRJZAUAAAAEbmFtZQkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAAKa2V5QXJ0RGVzYwAAAAIFAAAADWNhbGxlckFkZHJlc3MFAAAABWFydElkBQAAAAtkZXNjcmlwdGlvbgkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAAQa2V5QXJ0RGlzcGxheUNpZAAAAAIFAAAADWNhbGxlckFkZHJlc3MFAAAABWFydElkBQAAAApjaWREaXNwbGF5CQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAAA9rZXlBcnRFeHBvcnRDaWQAAAACBQAAAA1jYWxsZXJBZGRyZXNzBQAAAAVhcnRJZAUAAAAJY2lkRXhwb3J0CQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAABBrZXlBcnRFeHBvcnRIYXNoAAAAAgUAAAANY2FsbGVyQWRkcmVzcwUAAAAFYXJ0SWQFAAAADHNoYTI1NkV4cG9ydAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAARa2V5QXJ0TGljZW5jZUhhc2gAAAACBQAAAA1jYWxsZXJBZGRyZXNzBQAAAAVhcnRJZAUAAAANc2hhMjU2TGljZW5jZQkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAAQa2V5QXJ0TGljZW5jZUNpZAAAAAIFAAAADWNhbGxlckFkZHJlc3MFAAAABWFydElkBQAAAApjaWRMaWNlbmNlCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAAAprZXlBcnRUeXBlAAAAAgUAAAANY2FsbGVyQWRkcmVzcwUAAAAFYXJ0SWQFAAAABHR5cGUJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAACmtleUFydFRhZ3MAAAACBQAAAA1jYWxsZXJBZGRyZXNzBQAAAAVhcnRJZAUAAAAEdGFncwkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkBAAAADWtleUFydE1heE1pbnQAAAACBQAAAA1jYWxsZXJBZGRyZXNzBQAAAAVhcnRJZAUAAAAHbWF4bWludAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAAMa2V5QXJ0U2lnbklEAAAAAgUAAAANY2FsbGVyQWRkcmVzcwUAAAAFYXJ0SWQFAAAABnNpZ25JRAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkBAAAADGtleUFydElzc3VlZAAAAAIFAAAADWNhbGxlckFkZHJlc3MFAAAABWFydElkAAAAAAAAAAAACQAETAAAAAIJAQAAAAxCb29sZWFuRW50cnkAAAACCQEAAAAMa2V5QXJ0T25TYWxlAAAAAgUAAAANY2FsbGVyQWRkcmVzcwUAAAAFYXJ0SWQHCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAABNrZXlBcnRBcnRpZEJ5U2lnbmlkAAAAAgUAAAANY2FsbGVyQWRkcmVzcwUAAAAGc2lnbklEBQAAAAVhcnRJZAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACAgAAAA5sYXN0X2ludm9rZV9pZAUAAAAFYXJ0SWQJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwkBAAAAB0FkZHJlc3MAAAABCQACWQAAAAEFAAAAC2ZlZVJlY2VpdmVyBQAAAAZhbW91bnQFAAAAB2Fzc2V0SWQFAAAAA25pbAAAAAZpbnZva2UBAAAADXVwZGF0ZUFydHdvcmsAAAALAAAABHR4aWQAAAAEbmFtZQAAAAtkZXNjcmlwdGlvbgAAAAR0YWdzAAAABHR5cGUAAAAHbWF4bWludAAAAApjaWREaXNwbGF5AAAADHNoYTI1NkV4cG9ydAAAAAljaWRFeHBvcnQAAAANc2hhMjU2TGljZW5jZQAAAApjaWRMaWNlbmNlBAAAAAh1cGRhdGVJZAkAAlgAAAABCAUAAAAGaW52b2tlAAAADXRyYW5zYWN0aW9uSWQEAAAADWNhbGxlckFkZHJlc3MJAAJYAAAAAQgIBQAAAAZpbnZva2UAAAAGY2FsbGVyAAAABWJ5dGVzBAAAAAplbnRyeUV4aXN0CQEAAAAOZ2V0U3RyaW5nQnlLZXkAAAABCQEAAAAKa2V5QXJ0TmFtZQAAAAIFAAAADWNhbGxlckFkZHJlc3MFAAAABHR4aWQDCQAAAAAAAAIFAAAACmVudHJ5RXhpc3QCAAAAAAkAAAIAAAABAgAAADFUaGlzIGVudHJ5IGRvZXNuJ3QgZXhpc3Qgb3IgeW91IGFyZSBub3QgdGhlIG93bmVyAwkAAAAAAAACCQABMQAAAAEFAAAABG5hbWUAAAAAAAAAAAAJAAACAAAAAQIAAAAVVGl0bGUgY2Fubm90IGJlIGVtcHR5AwkAAGYAAAACCQABMQAAAAEFAAAABG5hbWUAAAAAAAAAAGQJAAACAAAAAQIAAAAjMTAwIENoYXJhY3RlcnMgbWF4aW11bSBmb3IgdGhlIG5hbWUDCQAAZgAAAAIJAAExAAAAAQUAAAALZGVzY3JpcHRpb24AAAAAAAAAA+gJAAACAAAAAQIAAAArMTAwMCBDaGFyYWN0ZXJzIG1heGltdW0gZm9yIHRoZSBkZXNjcmlwdGlvbgMJAAAAAAAAAgkAATEAAAABBQAAAAtkZXNjcmlwdGlvbgAAAAAAAAAAAAkAAAIAAAABAgAAABtEZXNjcmlwdGlvbiBjYW5ub3QgYmUgZW1wdHkEAAAADWFydHdvcmtNaW50ZWQEAAAAByRtYXRjaDAJAAQaAAAAAgUAAAAEdGhpcwkBAAAADGtleUFydElzc3VlZAAAAAIFAAAADWNhbGxlckFkZHJlc3MFAAAABHR4aWQDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAA0ludAQAAAABYgUAAAAHJG1hdGNoMAMJAAAAAAAAAgUAAAABYgAAAAAAAAAAAAcGCQAAAgAAAAECAAAAFVNvbWV0aGluZyB3ZW50IHdyb25nLgQAAAAIdGFnc0xpc3QJAAS1AAAAAgUAAAAEdGFncwIAAAABLAMJAABmAAAAAgkAAZAAAAABBQAAAAh0YWdzTGlzdAAAAAAAAAAABQkAAAIAAAABAgAAADhUYWdzIHNob3VsZCBiZSBtYXhpbXVtIDUgc2luZ2xlIHdvcmQgc2VwYXJhdGVkIGJ5IHNwYWNlLgQAAAAQdXNlcklzUmVnaXN0ZXJlZAQAAAAHJG1hdGNoMAkABB0AAAACBQAAAAR0aGlzCQABLAAAAAICAAAADHVzZXJfc3RhdHVzXwUAAAANY2FsbGVyQWRkcmVzcwMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAGU3RyaW5nBAAAAAFzBQAAAAckbWF0Y2gwBQAAAAFzBQAAABB1c2VyVW5yZWdpc3RlcmVkAwMJAQAAAAlpc0RlZmluZWQAAAABBQAAABB1c2VySXNSZWdpc3RlcmVkCQAAAAAAAAIFAAAAEHVzZXJJc1JlZ2lzdGVyZWQFAAAAEHVzZXJVbnJlZ2lzdGVyZWQHCQAAAgAAAAECAAAAOFBsZWFzZSByZWdpc3RlciB0aGlzIGFjY291bnQgZmlyc3Qgd2l0aCAiVXNlciBpbmZvcyIgdGFiAwkAAAAAAAACBQAAABB1c2VySXNSZWdpc3RlcmVkBQAAAA11c2VyU3VzcGVuZGVkCQAAAgAAAAECAAAAGVlvdXIgYWNjb3VudCBpcyBzdXNwZW5kZWQDCQAAAAAAAAIFAAAAEHVzZXJJc1JlZ2lzdGVyZWQFAAAAC3VzZXJSZW1vdmVkCQAAAgAAAAECAAAAHllvdXIgYWNjb3VudCBoYXZlIGJlZW4gcmVtb3ZlZAMJAABmAAAAAgUAAAAHbWF4bWludAAAAAAAAAAACgkAAAIAAAABAgAAAB9NYXhpbXVtIDEwIGVkaXRpb25zIHBlciBhcnR3b3JrAwkBAAAAASEAAAABBQAAAA1hcnR3b3JrTWludGVkCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAAAprZXlBcnROYW1lAAAAAgUAAAANY2FsbGVyQWRkcmVzcwUAAAAEdHhpZAUAAAAEbmFtZQkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAAKa2V5QXJ0RGVzYwAAAAIFAAAADWNhbGxlckFkZHJlc3MFAAAABHR4aWQFAAAAC2Rlc2NyaXB0aW9uCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAABBrZXlBcnREaXNwbGF5Q2lkAAAAAgUAAAANY2FsbGVyQWRkcmVzcwUAAAAEdHhpZAUAAAAKY2lkRGlzcGxheQkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAAPa2V5QXJ0RXhwb3J0Q2lkAAAAAgUAAAANY2FsbGVyQWRkcmVzcwUAAAAEdHhpZAUAAAAJY2lkRXhwb3J0CQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAABBrZXlBcnRFeHBvcnRIYXNoAAAAAgUAAAANY2FsbGVyQWRkcmVzcwUAAAAEdHhpZAUAAAAMc2hhMjU2RXhwb3J0CQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAABBrZXlBcnRMaWNlbmNlQ2lkAAAAAgUAAAANY2FsbGVyQWRkcmVzcwUAAAAEdHhpZAUAAAAKY2lkTGljZW5jZQkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAARa2V5QXJ0TGljZW5jZUhhc2gAAAACBQAAAA1jYWxsZXJBZGRyZXNzBQAAAAR0eGlkBQAAAA1zaGEyNTZMaWNlbmNlCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAANa2V5QXJ0TWF4TWludAAAAAIFAAAADWNhbGxlckFkZHJlc3MFAAAABHR4aWQFAAAAB21heG1pbnQJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAACmtleUFydFRhZ3MAAAACBQAAAA1jYWxsZXJBZGRyZXNzBQAAAAR0eGlkBQAAAAR0YWdzCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAAAprZXlBcnRUeXBlAAAAAgUAAAANY2FsbGVyQWRkcmVzcwUAAAAEdHhpZAUAAAAEdHlwZQkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACAgAAAA5sYXN0X2ludm9rZV9pZAUAAAAIdXBkYXRlSWQFAAAAA25pbAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAAKa2V5QXJ0TmFtZQAAAAIFAAAADWNhbGxlckFkZHJlc3MFAAAABHR4aWQFAAAABG5hbWUJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAACmtleUFydERlc2MAAAACBQAAAA1jYWxsZXJBZGRyZXNzBQAAAAR0eGlkBQAAAAtkZXNjcmlwdGlvbgkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAAQa2V5QXJ0RGlzcGxheUNpZAAAAAIFAAAADWNhbGxlckFkZHJlc3MFAAAABHR4aWQFAAAACmNpZERpc3BsYXkJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAACmtleUFydFR5cGUAAAACBQAAAA1jYWxsZXJBZGRyZXNzBQAAAAR0eGlkBQAAAAR0eXBlCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAAAprZXlBcnRUYWdzAAAAAgUAAAANY2FsbGVyQWRkcmVzcwUAAAAEdHhpZAUAAAAEdGFncwkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACAgAAAA5sYXN0X2ludm9rZV9pZAUAAAAIdXBkYXRlSWQFAAAAA25pbAAAAAFpAQAAAA1kZWxldGVBcnR3b3JrAAAAAgAAAAVhcnRJZAAAAAxvd25lckFkZHJlc3MEAAAACmNhbGxlckFkZHIJAAQlAAAAAQkBAAAAFGFkZHJlc3NGcm9tUHVibGljS2V5AAAAAQgFAAAAAWkAAAAPY2FsbGVyUHVibGljS2V5BAAAAAJpZAkAAlgAAAABCAUAAAABaQAAAA10cmFuc2FjdGlvbklkAwkBAAAAAiE9AAAAAgUAAAAKY2FsbGVyQWRkcgUAAAAFYWRtaW4JAAACAAAAAQIAAAAeWW91IGFyZSBub3QgYWxsb3dlZCB0byBkbyB0aGF0CQAETAAAAAIJAQAAAAtEZWxldGVFbnRyeQAAAAEJAQAAAAprZXlBcnREYXRlAAAAAgUAAAAMb3duZXJBZGRyZXNzBQAAAAVhcnRJZAkABEwAAAACCQEAAAALRGVsZXRlRW50cnkAAAABCQEAAAAKa2V5QXJ0TmFtZQAAAAIFAAAADG93bmVyQWRkcmVzcwUAAAAFYXJ0SWQJAARMAAAAAgkBAAAAC0RlbGV0ZUVudHJ5AAAAAQkBAAAACmtleUFydERlc2MAAAACBQAAAAxvd25lckFkZHJlc3MFAAAABWFydElkCQAETAAAAAIJAQAAAAtEZWxldGVFbnRyeQAAAAEJAQAAABBrZXlBcnREaXNwbGF5Q2lkAAAAAgUAAAAMb3duZXJBZGRyZXNzBQAAAAVhcnRJZAkABEwAAAACCQEAAAALRGVsZXRlRW50cnkAAAABCQEAAAAPa2V5QXJ0RXhwb3J0Q2lkAAAAAgUAAAAMb3duZXJBZGRyZXNzBQAAAAVhcnRJZAkABEwAAAACCQEAAAALRGVsZXRlRW50cnkAAAABCQEAAAAQa2V5QXJ0RXhwb3J0SGFzaAAAAAIFAAAADG93bmVyQWRkcmVzcwUAAAAFYXJ0SWQJAARMAAAAAgkBAAAAC0RlbGV0ZUVudHJ5AAAAAQkBAAAAEWtleUFydExpY2VuY2VIYXNoAAAAAgUAAAAMb3duZXJBZGRyZXNzBQAAAAVhcnRJZAkABEwAAAACCQEAAAALRGVsZXRlRW50cnkAAAABCQEAAAAQa2V5QXJ0TGljZW5jZUNpZAAAAAIFAAAADG93bmVyQWRkcmVzcwUAAAAFYXJ0SWQJAARMAAAAAgkBAAAAC0RlbGV0ZUVudHJ5AAAAAQkBAAAACmtleUFydFR5cGUAAAACBQAAAAxvd25lckFkZHJlc3MFAAAABWFydElkCQAETAAAAAIJAQAAAAtEZWxldGVFbnRyeQAAAAEJAQAAAAprZXlBcnRUYWdzAAAAAgUAAAAMb3duZXJBZGRyZXNzBQAAAAVhcnRJZAkABEwAAAACCQEAAAALRGVsZXRlRW50cnkAAAABCQEAAAANa2V5QXJ0TWF4TWludAAAAAIFAAAADG93bmVyQWRkcmVzcwUAAAAFYXJ0SWQJAARMAAAAAgkBAAAAC0RlbGV0ZUVudHJ5AAAAAQkBAAAADGtleUFydFNpZ25JRAAAAAIFAAAADG93bmVyQWRkcmVzcwUAAAAFYXJ0SWQJAARMAAAAAgkBAAAAC0RlbGV0ZUVudHJ5AAAAAQkBAAAADGtleUFydElzc3VlZAAAAAIFAAAADG93bmVyQWRkcmVzcwUAAAAFYXJ0SWQJAARMAAAAAgkBAAAAC0RlbGV0ZUVudHJ5AAAAAQkBAAAADGtleUFydE9uU2FsZQAAAAIFAAAADG93bmVyQWRkcmVzcwUAAAAFYXJ0SWQJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgIAAAAObGFzdF9pbnZva2VfaWQFAAAAAmlkBQAAAANuaWwAAAAGaW52b2tlAQAAAAtzZWxsQXJ0d29yawAAAAIAAAAEaGFzaAAAAAVwcmljZQQAAAACaWQJAAJYAAAAAQgFAAAABmludm9rZQAAAA10cmFuc2FjdGlvbklkBAAAAA1jYWxsZXJBZGRyZXNzCQACWAAAAAEICAUAAAAGaW52b2tlAAAABmNhbGxlcgAAAAVieXRlcwQAAAAJZW50cnlEYXRlCAUAAAAJbGFzdEJsb2NrAAAACXRpbWVzdGFtcAQAAAAHZW50cnlJRAkBAAAADmdldFN0cmluZ0J5S2V5AAAAAQkAASwAAAACCQABLAAAAAIFAAAABGhhc2gC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", "height": 1182648, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 63fXdVE3mMPjG3ys9xac5jmgBAXybrHtUm1ftawaETHa Next: ALBghxuuaYniD2ndmwcsMLkubpSQtcxibatgepYTq46y Diff:
OldNewDifferences
1515
1616 let g = "3MsG6jPNCrVJUtYB7XJBxS7utWsXAf4n9Vp"
1717
18-let h = "3NCqpdb8jHW1d1hqZgeS9AE2MJ2Keh95jMC"
18+let h = "3Mzm4VLwsN9uZwbTMzPj3XuxV6kEfAR8UDN"
1919
2020 let i = true
2121
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(x)
275-func suspendUser (aq) = {
276- let L = toString(addressFromPublicKey(x.callerPublicKey))
277- let E = toBase58String(x.transactionId)
278- if ((L != g))
279- then throw("You are not allowed to do that")
280- else [StringEntry(R(L), m), StringEntry("last_invoke_id", E)]
281- }
282-
283-
284-
285-@Callable(at)
286-func addArtwork (B,z,ak,al,au,av,aw,ax,ay,az,aA,aB) = {
287- let U = toBase58String(at.transactionId)
288- let aC = toBase58String(at.caller.bytes)
289- 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))
290282 then throw("No payment attached")
291283 else {
292- let aD = value(at.payments[0])
293- let aE = value(aD.amount)
294- let aF = if (if (isDefined(aD.assetId))
295- 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)
296288 else false)
297- then aD.assetId
289+ then aF.assetId
298290 else throw("Only SIGN token accepted at the moment")
299- let aG = {
291+ let aI = {
300292 let u = getInteger(a, ("certification_fee_" + toBase58String(e)))
301293 if ($isInstanceOf(u, "Int"))
302294 then {
303- let aH = u
304- aH
295+ let aJ = u
296+ aJ
305297 }
306298 else throw("Price undefined in oracle")
307299 }
308- if ((aE != aG))
309- then throw(("Payment amount should be " + toString(aG)))
300+ if ((aG != aI))
301+ then throw(("Payment amount should be " + toString(aI)))
310302 else {
311- let aI = s(aj(B, aC))
312- if ((aI != ""))
303+ let aK = s(al(B, aE))
304+ if ((aK != ""))
313305 then throw("You already added this artwork on Sign Art")
314306 else {
315- let aJ = s(ai(B))
316- if ((aJ != ""))
307+ let aL = s(ai(B))
308+ if ((aL != ""))
317309 then throw("This artwork hash is already registered on Sign Art")
318310 else {
319- let aK = y(z, aC, B)
320- if (!(aK))
311+ let aM = y(z, aE, B)
312+ if (!(aM))
321313 then throw("Sign Certificate not found on Sign-web.app smart contract for this address.")
322- else if ((size(ax) == 0))
314+ else if ((size(az) == 0))
323315 then throw("Display CID cannot be empty")
324- else if ((size(ak) == 0))
316+ else if ((size(am) == 0))
325317 then throw("Title cannot be empty")
326- else if ((size(ak) > 100))
318+ else if ((size(am) > 100))
327319 then throw("100 Characters maximum for the name")
328- else if ((size(al) > 1000))
320+ else if ((size(an) > 1000))
329321 then throw("1000 Characters maximum for the description")
330- else if ((size(al) == 0))
322+ else if ((size(an) == 0))
331323 then throw("Description cannot be empty")
332324 else {
333- let aL = split(au, ",")
334- if ((size(aL) > 5))
325+ let aN = split(aw, ",")
326+ if ((size(aN) > 5))
335327 then throw("Tags should be maximum 5 single word separated by space.")
336328 else {
337- let aM = {
338- let u = getString(this, ("user_status_" + aC))
329+ let aO = {
330+ let u = getString(this, ("user_status_" + aE))
339331 if ($isInstanceOf(u, "String"))
340332 then {
341- let aN = u
342- aN
333+ let aP = u
334+ aP
343335 }
344336 else o
345337 }
346- let ap = lastBlock.timestamp
347- if (if (isDefined(aM))
348- then (aM == o)
338+ let ar = lastBlock.timestamp
339+ if (if (isDefined(aO))
340+ then (aO == o)
349341 else false)
350342 then throw("Please register this account first with \"User infos\" tab")
351- else if ((aM == m))
343+ else if ((aO == m))
352344 then throw("Your account is suspended")
353- else if ((aM == n))
345+ else if ((aO == n))
354346 then throw("Your account have been removed")
355- else if ((aw > 10))
347+ else if ((ay > 10))
356348 then throw("Maximum 10 editions per artwork")
357349 else if ((size(B) != 64))
358350 then throw("Hash should be sha256 string composed of 64 char.")
359- 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)]
360352 }
361353 }
362354 }
367359
368360
369361
370-@Callable(at)
371-func updateArtwork (aO,ak,al,au,av,aw,ax,ay,az,aA,aB) = {
372- let aP = toBase58String(at.transactionId)
373- let aC = toBase58String(at.caller.bytes)
374- let aI = s(V(aC, aO))
375- 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 == ""))
376368 then throw("This entry doesn't exist or you are not the owner")
377- else if ((size(ak) == 0))
369+ else if ((size(am) == 0))
378370 then throw("Title cannot be empty")
379- else if ((size(ak) > 100))
371+ else if ((size(am) > 100))
380372 then throw("100 Characters maximum for the name")
381- else if ((size(al) > 1000))
373+ else if ((size(an) > 1000))
382374 then throw("1000 Characters maximum for the description")
383- else if ((size(al) == 0))
375+ else if ((size(an) == 0))
384376 then throw("Description cannot be empty")
385377 else {
386- let aQ = {
387- let u = getInteger(this, ac(aC, aO))
378+ let aS = {
379+ let u = getInteger(this, ac(aE, aQ))
388380 if ($isInstanceOf(u, "Int"))
389381 then {
390382 let I = u
394386 }
395387 else throw("Something went wrong.")
396388 }
397- let aL = split(au, ",")
398- if ((size(aL) > 5))
389+ let aN = split(aw, ",")
390+ if ((size(aN) > 5))
399391 then throw("Tags should be maximum 5 single word separated by space.")
400392 else {
401- let aM = {
402- let u = getString(this, ("user_status_" + aC))
393+ let aO = {
394+ let u = getString(this, ("user_status_" + aE))
403395 if ($isInstanceOf(u, "String"))
404396 then {
405- let aN = u
406- aN
397+ let aP = u
398+ aP
407399 }
408400 else o
409401 }
410- if (if (isDefined(aM))
411- then (aM == o)
402+ if (if (isDefined(aO))
403+ then (aO == o)
412404 else false)
413405 then throw("Please register this account first with \"User infos\" tab")
414- else if ((aM == m))
406+ else if ((aO == m))
415407 then throw("Your account is suspended")
416- else if ((aM == n))
408+ else if ((aO == n))
417409 then throw("Your account have been removed")
418- else if ((aw > 10))
410+ else if ((ay > 10))
419411 then throw("Maximum 10 editions per artwork")
420- else if (!(aQ))
421- 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)]
422- 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)]
423415 }
424416 }
425417 }
427419
428420
429421 @Callable(x)
430-func deleteArtwork (U,aR) = {
422+func deleteArtwork (U,aT) = {
431423 let L = toString(addressFromPublicKey(x.callerPublicKey))
432424 let E = toBase58String(x.transactionId)
433425 if ((L != g))
434426 then throw("You are not allowed to do that")
435- 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)]
436428 }
437429
438430
439431
440-@Callable(at)
441-func sellArtwork (aS,aH) = {
442- let E = toBase58String(at.transactionId)
443- let aC = toBase58String(at.caller.bytes)
444- let aT = lastBlock.timestamp
445- let aU = s(((aS + "_") + aC))
446- 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)))
447439 then throw("This artwork doesn't exit or you are not the owner")
448440 else {
449- let aM = s(("user_status_" + aC))
450- if ((aM == ""))
441+ let aO = s(("user_status_" + aE))
442+ if ((aO == ""))
451443 then throw("Please register this account first")
452444 else {
453- let aV = w(((("art_issued_" + aU) + "_") + aC))
454- let aW = w(((("art_maxmint_" + aU) + "_") + aC))
455- if ((aV == aW))
445+ let aX = w(((("art_issued_" + aW) + "_") + aE))
446+ let aY = w(((("art_maxmint_" + aW) + "_") + aE))
447+ if ((aX == aY))
456448 then throw("You reached the max edition allowed to sell for this edition.")
457- else if ((aM == m))
449+ else if ((aO == m))
458450 then throw("Your account is suspended")
459- else if (!(isDefined(aU)))
451+ else if (!(isDefined(aW)))
460452 then throw("This artwork desn't exist")
461- else if ((size(aS) != 64))
453+ else if ((size(aU) != 64))
462454 then throw("This hash is incorrect.")
463455 else {
464- let aX = if ((aH > 0))
456+ let aZ = if ((aJ > 0))
465457 then true
466458 else false
467-[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)]
468460 }
469461 }
470462 }
472464
473465
474466
475-@Callable(at)
476-func buyArtwork (aS,aY) = {
477- let E = toBase58String(at.transactionId)
478- let aC = toBase58String(at.caller.bytes)
479- let aZ = w("total_nft_issued")
480- let aU = s(((aS + "_") + aY))
481- 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 == ""))
482474 then throw("This artwork doesn't exit or you are not the owner")
483475 else {
484- let aM = s(("user_status_" + aC))
485- if (!(isDefined(aM)))
476+ let aO = s(("user_status_" + aE))
477+ if (!(isDefined(aO)))
486478 then throw("Please register this account first")
487479 else {
488- let ba = s(((("art_sold_" + aU) + "_") + aY))
489- let aV = w(((("art_issued_" + aU) + "_") + aY))
490- let bb = w(((("art_price_" + aU) + "_") + aY))
491- 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))
492484 then throw("This artwork is not for sell")
493485 else {
494- let aW = w(((("art_maxmint_" + aU) + "_") + aY))
495- let aD = value(at.payments[0])
496- let aE = value(aD.amount)
497- 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))
498490 then throw("Only Waves token accepted at the moment")
499491 else unit
500- if ((aV == aW))
492+ if ((aX == aY))
501493 then throw("Cannot buy this artwork anymore")
502- else if ((bb != aE))
494+ else if ((bd != aG))
503495 then throw("Payment don't match seller price")
504496 else {
505- let bc = (aV + 1)
506- let aT = lastBlock.timestamp
507- let bd = (((((((((((((("{\"version\": 1,\"artID\": \"" + aU) + "\",\"maxIssuable\": \"") + toString(aW)) + "\",\"signID\": \"SA_") + toString((aZ + 1))) + "\", \"creator\": \"") + aY) + "\", \"issue\": \"") + toString(bc)) + "/") + toString(aW)) + "\", \"hash\": ") + aS) + "}")
508- let be = Issue(("SA_" + toString((aZ + 1))), bd, 1, 0, false)
509- let bf = calculateAssetId(be)
510- 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))
511503 then false
512504 else true
513-[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)]
514506 }
515507 }
516508 }
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
18-let h = "3NCqpdb8jHW1d1hqZgeS9AE2MJ2Keh95jMC"
18+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(x)
275-func suspendUser (aq) = {
276- let L = toString(addressFromPublicKey(x.callerPublicKey))
277- let E = toBase58String(x.transactionId)
278- if ((L != g))
279- then throw("You are not allowed to do that")
280- else [StringEntry(R(L), m), StringEntry("last_invoke_id", E)]
281- }
282-
283-
284-
285-@Callable(at)
286-func addArtwork (B,z,ak,al,au,av,aw,ax,ay,az,aA,aB) = {
287- let U = toBase58String(at.transactionId)
288- let aC = toBase58String(at.caller.bytes)
289- 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))
290282 then throw("No payment attached")
291283 else {
292- let aD = value(at.payments[0])
293- let aE = value(aD.amount)
294- let aF = if (if (isDefined(aD.assetId))
295- 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)
296288 else false)
297- then aD.assetId
289+ then aF.assetId
298290 else throw("Only SIGN token accepted at the moment")
299- let aG = {
291+ let aI = {
300292 let u = getInteger(a, ("certification_fee_" + toBase58String(e)))
301293 if ($isInstanceOf(u, "Int"))
302294 then {
303- let aH = u
304- aH
295+ let aJ = u
296+ aJ
305297 }
306298 else throw("Price undefined in oracle")
307299 }
308- if ((aE != aG))
309- then throw(("Payment amount should be " + toString(aG)))
300+ if ((aG != aI))
301+ then throw(("Payment amount should be " + toString(aI)))
310302 else {
311- let aI = s(aj(B, aC))
312- if ((aI != ""))
303+ let aK = s(al(B, aE))
304+ if ((aK != ""))
313305 then throw("You already added this artwork on Sign Art")
314306 else {
315- let aJ = s(ai(B))
316- if ((aJ != ""))
307+ let aL = s(ai(B))
308+ if ((aL != ""))
317309 then throw("This artwork hash is already registered on Sign Art")
318310 else {
319- let aK = y(z, aC, B)
320- if (!(aK))
311+ let aM = y(z, aE, B)
312+ if (!(aM))
321313 then throw("Sign Certificate not found on Sign-web.app smart contract for this address.")
322- else if ((size(ax) == 0))
314+ else if ((size(az) == 0))
323315 then throw("Display CID cannot be empty")
324- else if ((size(ak) == 0))
316+ else if ((size(am) == 0))
325317 then throw("Title cannot be empty")
326- else if ((size(ak) > 100))
318+ else if ((size(am) > 100))
327319 then throw("100 Characters maximum for the name")
328- else if ((size(al) > 1000))
320+ else if ((size(an) > 1000))
329321 then throw("1000 Characters maximum for the description")
330- else if ((size(al) == 0))
322+ else if ((size(an) == 0))
331323 then throw("Description cannot be empty")
332324 else {
333- let aL = split(au, ",")
334- if ((size(aL) > 5))
325+ let aN = split(aw, ",")
326+ if ((size(aN) > 5))
335327 then throw("Tags should be maximum 5 single word separated by space.")
336328 else {
337- let aM = {
338- let u = getString(this, ("user_status_" + aC))
329+ let aO = {
330+ let u = getString(this, ("user_status_" + aE))
339331 if ($isInstanceOf(u, "String"))
340332 then {
341- let aN = u
342- aN
333+ let aP = u
334+ aP
343335 }
344336 else o
345337 }
346- let ap = lastBlock.timestamp
347- if (if (isDefined(aM))
348- then (aM == o)
338+ let ar = lastBlock.timestamp
339+ if (if (isDefined(aO))
340+ then (aO == o)
349341 else false)
350342 then throw("Please register this account first with \"User infos\" tab")
351- else if ((aM == m))
343+ else if ((aO == m))
352344 then throw("Your account is suspended")
353- else if ((aM == n))
345+ else if ((aO == n))
354346 then throw("Your account have been removed")
355- else if ((aw > 10))
347+ else if ((ay > 10))
356348 then throw("Maximum 10 editions per artwork")
357349 else if ((size(B) != 64))
358350 then throw("Hash should be sha256 string composed of 64 char.")
359- 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)]
360352 }
361353 }
362354 }
363355 }
364356 }
365357 }
366358 }
367359
368360
369361
370-@Callable(at)
371-func updateArtwork (aO,ak,al,au,av,aw,ax,ay,az,aA,aB) = {
372- let aP = toBase58String(at.transactionId)
373- let aC = toBase58String(at.caller.bytes)
374- let aI = s(V(aC, aO))
375- 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 == ""))
376368 then throw("This entry doesn't exist or you are not the owner")
377- else if ((size(ak) == 0))
369+ else if ((size(am) == 0))
378370 then throw("Title cannot be empty")
379- else if ((size(ak) > 100))
371+ else if ((size(am) > 100))
380372 then throw("100 Characters maximum for the name")
381- else if ((size(al) > 1000))
373+ else if ((size(an) > 1000))
382374 then throw("1000 Characters maximum for the description")
383- else if ((size(al) == 0))
375+ else if ((size(an) == 0))
384376 then throw("Description cannot be empty")
385377 else {
386- let aQ = {
387- let u = getInteger(this, ac(aC, aO))
378+ let aS = {
379+ let u = getInteger(this, ac(aE, aQ))
388380 if ($isInstanceOf(u, "Int"))
389381 then {
390382 let I = u
391383 if ((I == 0))
392384 then false
393385 else true
394386 }
395387 else throw("Something went wrong.")
396388 }
397- let aL = split(au, ",")
398- if ((size(aL) > 5))
389+ let aN = split(aw, ",")
390+ if ((size(aN) > 5))
399391 then throw("Tags should be maximum 5 single word separated by space.")
400392 else {
401- let aM = {
402- let u = getString(this, ("user_status_" + aC))
393+ let aO = {
394+ let u = getString(this, ("user_status_" + aE))
403395 if ($isInstanceOf(u, "String"))
404396 then {
405- let aN = u
406- aN
397+ let aP = u
398+ aP
407399 }
408400 else o
409401 }
410- if (if (isDefined(aM))
411- then (aM == o)
402+ if (if (isDefined(aO))
403+ then (aO == o)
412404 else false)
413405 then throw("Please register this account first with \"User infos\" tab")
414- else if ((aM == m))
406+ else if ((aO == m))
415407 then throw("Your account is suspended")
416- else if ((aM == n))
408+ else if ((aO == n))
417409 then throw("Your account have been removed")
418- else if ((aw > 10))
410+ else if ((ay > 10))
419411 then throw("Maximum 10 editions per artwork")
420- else if (!(aQ))
421- 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)]
422- 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)]
423415 }
424416 }
425417 }
426418
427419
428420
429421 @Callable(x)
430-func deleteArtwork (U,aR) = {
422+func deleteArtwork (U,aT) = {
431423 let L = toString(addressFromPublicKey(x.callerPublicKey))
432424 let E = toBase58String(x.transactionId)
433425 if ((L != g))
434426 then throw("You are not allowed to do that")
435- 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)]
436428 }
437429
438430
439431
440-@Callable(at)
441-func sellArtwork (aS,aH) = {
442- let E = toBase58String(at.transactionId)
443- let aC = toBase58String(at.caller.bytes)
444- let aT = lastBlock.timestamp
445- let aU = s(((aS + "_") + aC))
446- 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)))
447439 then throw("This artwork doesn't exit or you are not the owner")
448440 else {
449- let aM = s(("user_status_" + aC))
450- if ((aM == ""))
441+ let aO = s(("user_status_" + aE))
442+ if ((aO == ""))
451443 then throw("Please register this account first")
452444 else {
453- let aV = w(((("art_issued_" + aU) + "_") + aC))
454- let aW = w(((("art_maxmint_" + aU) + "_") + aC))
455- if ((aV == aW))
445+ let aX = w(((("art_issued_" + aW) + "_") + aE))
446+ let aY = w(((("art_maxmint_" + aW) + "_") + aE))
447+ if ((aX == aY))
456448 then throw("You reached the max edition allowed to sell for this edition.")
457- else if ((aM == m))
449+ else if ((aO == m))
458450 then throw("Your account is suspended")
459- else if (!(isDefined(aU)))
451+ else if (!(isDefined(aW)))
460452 then throw("This artwork desn't exist")
461- else if ((size(aS) != 64))
453+ else if ((size(aU) != 64))
462454 then throw("This hash is incorrect.")
463455 else {
464- let aX = if ((aH > 0))
456+ let aZ = if ((aJ > 0))
465457 then true
466458 else false
467-[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)]
468460 }
469461 }
470462 }
471463 }
472464
473465
474466
475-@Callable(at)
476-func buyArtwork (aS,aY) = {
477- let E = toBase58String(at.transactionId)
478- let aC = toBase58String(at.caller.bytes)
479- let aZ = w("total_nft_issued")
480- let aU = s(((aS + "_") + aY))
481- 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 == ""))
482474 then throw("This artwork doesn't exit or you are not the owner")
483475 else {
484- let aM = s(("user_status_" + aC))
485- if (!(isDefined(aM)))
476+ let aO = s(("user_status_" + aE))
477+ if (!(isDefined(aO)))
486478 then throw("Please register this account first")
487479 else {
488- let ba = s(((("art_sold_" + aU) + "_") + aY))
489- let aV = w(((("art_issued_" + aU) + "_") + aY))
490- let bb = w(((("art_price_" + aU) + "_") + aY))
491- 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))
492484 then throw("This artwork is not for sell")
493485 else {
494- let aW = w(((("art_maxmint_" + aU) + "_") + aY))
495- let aD = value(at.payments[0])
496- let aE = value(aD.amount)
497- 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))
498490 then throw("Only Waves token accepted at the moment")
499491 else unit
500- if ((aV == aW))
492+ if ((aX == aY))
501493 then throw("Cannot buy this artwork anymore")
502- else if ((bb != aE))
494+ else if ((bd != aG))
503495 then throw("Payment don't match seller price")
504496 else {
505- let bc = (aV + 1)
506- let aT = lastBlock.timestamp
507- let bd = (((((((((((((("{\"version\": 1,\"artID\": \"" + aU) + "\",\"maxIssuable\": \"") + toString(aW)) + "\",\"signID\": \"SA_") + toString((aZ + 1))) + "\", \"creator\": \"") + aY) + "\", \"issue\": \"") + toString(bc)) + "/") + toString(aW)) + "\", \"hash\": ") + aS) + "}")
508- let be = Issue(("SA_" + toString((aZ + 1))), bd, 1, 0, false)
509- let bf = calculateAssetId(be)
510- 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))
511503 then false
512504 else true
513-[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)]
514506 }
515507 }
516508 }
517509 }
518510 }
519511
520512

github/deemru/w8io/169f3d6 
239.28 ms