tx · 5X6TRPfZnmdieNQbay2CxvEFmF7gmxJMLziRNAbq1zie

3N5BB6iE58rujeTEkymeLNcdsYF4f6iKoxr:  -0.01900000 Waves

2022.06.03 17:33 [2080284] smart account 3N5BB6iE58rujeTEkymeLNcdsYF4f6iKoxr > SELF 0.00000000 Waves

{ "type": 13, "id": "5X6TRPfZnmdieNQbay2CxvEFmF7gmxJMLziRNAbq1zie", "fee": 1900000, "feeAssetId": null, "timestamp": 1654266834999, "version": 1, "sender": "3N5BB6iE58rujeTEkymeLNcdsYF4f6iKoxr", "senderPublicKey": "EtZZHS4uqNXY5WPneZ8jY2aA95peXwthJVLzAMxMp379", "proofs": [ "cio39NUNCa4j7FpGC2tjcW7ABxdxDqip7n45qjmms6zuF4zFrqDrrigZefu377UFe59TC7QBgA7s7PBF2gFT33v" ], "script": "base64:AAIFAAAAAAAAAGMIAhIECgIIGBIDCgEIEgUKAwgICBIDCgEIEgMKAQgSAwoBCBIECgIICBIECgIICBIECgIICBIDCgEIEgUKAwgIBBIECgIICBIECgIIBBIDCgEIEgMKARgSAwoBCBIAEgMKAQgAAAApAAAAAANTRVACAAAAAl9fAAAAAAVFTVBUWQIAAAAAAAAAAA5zdGF0dXNWZXJpZmllZAAAAAAAAAAAAgAAAAAQc3RhdHVzVW52ZXJpZmllZAAAAAAAAAAAAAAAAAAWbGFiZWxDb21tdW5pdHlWZXJpZmllZAIAAAASQ09NTVVOSVRZX1ZFUklGSUVEAAAAAAxsYWJlbFBvb2xzTHACAAAACFBPT0xTX0xQAAAAAA1kZWZhdWx0TGFiZWxzCQAETAAAAAIFAAAAFmxhYmVsQ29tbXVuaXR5VmVyaWZpZWQJAARMAAAAAgUAAAAMbGFiZWxQb29sc0xwBQAAAANuaWwBAAAAB3Rocm93UEQAAAAACQAAAgAAAAECAAAAEVBlcm1pc3Npb24gZGVuaWVkAQAAAAx0aHJvd05vQXNzZXQAAAAACQAAAgAAAAECAAAAFEFzc2V0IGRvZXNuJ3QgZXhpc3RzAQAAABNrZXlNYW5hZ2VyUHVibGljS2V5AAAAAAIAAAAUJXNfX21hbmFnZXJQdWJsaWNLZXkBAAAAGmtleVBlbmRpbmdNYW5hZ2VyUHVibGljS2V5AAAAAAIAAAAbJXNfX3BlbmRpbmdNYW5hZ2VyUHVibGljS2V5AQAAAA9rZXlBZG1pblB1YktleXMAAAAAAgAAABAlc19fYWRtaW5QdWJLZXlzAQAAABRrZXlVc2VyUG9vbHNDb250cmFjdAAAAAACAAAAFSVzX191c2VyUG9vbHNDb250cmFjdAEAAAAZa2V5Vm90aW5nRW1pc3Npb25Db250cmFjdAAAAAACAAAAGiVzX192b3RpbmdFbWlzc2lvbkNvbnRyYWN0AQAAAAprZXlDcmVhdGVkAAAAAQAAAAdhc3NldElkCQABLAAAAAIJAAEsAAAAAgIAAAAJY3JlYXRlZF88BQAAAAdhc3NldElkAgAAAAE+AQAAAAdrZXlMb2dvAAAAAQAAAAdhc3NldElkCQABLAAAAAIJAAEsAAAAAgIAAAAGbG9nb188BQAAAAdhc3NldElkAgAA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AA9hZGRMYWJlbEFjdGlvbnMAAAADAAAAB2Fzc2V0SWQAAAAFbGFiZWwAAAAMdGhyb3dPbkVycm9yBAAAAAZsYWJlbHMJAQAAAAlnZXRMYWJlbHMAAAAABAAAAAthc3NldExhYmVscwkBAAAADmdldEFzc2V0TGFiZWxzAAAAAQUAAAAHYXNzZXRJZAQAAAAKY2hlY2tMYWJlbAMJAQAAAA9jb250YWluc0VsZW1lbnQAAAACBQAAAAZsYWJlbHMFAAAABWxhYmVsBgkAAAIAAAABAgAAABNMYWJlbCBkb2Vzbid0IGV4aXN0AwkAAAAAAAACBQAAAApjaGVja0xhYmVsBQAAAApjaGVja0xhYmVsBAAAAA5uZXdBc3NldExhYmVscwMJAQAAAA9jb250YWluc0VsZW1lbnQAAAACBQAAAAthc3NldExhYmVscwUAAAAFbGFiZWwDBQAAAAx0aHJvd09uRXJyb3IJAAACAAAAAQIAAAAcTGFiZWwgaGFzIGFscmVhZHkgYmVlbiBhZGRlZAUAAAALYXNzZXRMYWJlbHMJAARNAAAAAgUAAAALYXNzZXRMYWJlbHMFAAAABWxhYmVsCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAAA5rZXlBc3NldExhYmVscwAAAAEFAAAAB2Fzc2V0SWQJAAS5AAAAAgUAAAAObmV3QXNzZXRMYWJlbHMFAAAAA1NFUAUAAAADbmlsCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgEAAAASZGVsZXRlTGFiZWxBY3Rpb25zAAAAAwAAAAdhc3NldElkAAAABWxhYmVsAAAADHRocm93T25FcnJvcgQAAAALYXNzZXRMYWJlbHMJAQAAAA5nZXRBc3NldExhYmVscwAAAAEFAAAAB2Fzc2V0SWQEAAAADm5ld0Fzc2V0TGFiZWxzAwkBAAAAD2NvbnRhaW5zRWxlbWVudAAAAAIFAAAAC2Fzc2V0TGFiZWxzBQAAAAVsYWJlbAkABFEAAAACBQAAAAthc3NldExhYmVscwkBAAAABXZhbHVlAAAAAQkABE8AAAACBQAAAAthc3NldExhYmVscwUAAAAFbGFiZWwDBQAAAAx0aHJvd09uRXJyb3IJAAACAAAAAQIAAAASTGFiZWwgd2Fzbid0IGFkZGVkBQAAAAthc3NldExhYmVscwkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAAOa2V5QXNzZXRMYWJlbHMAAAABBQAAAAdhc3NldElkCQAEuQAAAAIFAAAADm5ld0Fzc2V0TGFiZWxzBQAAAANTRVAFAAAAA25pbAEAAAASc2V0VmVyaWZpZWRBY3Rpb25zAAAAAgAAAAdhc3NldElkAAAACHZlcmlmaWVkBAAAAB1sYWJlbENvbW11bml0eVZlcmlmaWVkQWN0aW9ucwMFAAAACHZlcmlmaWVkCQEAAAAPYWRkTGFiZWxBY3Rpb25zAAAAAwUAAAAHYXNzZXRJZAUAAAAWbGFiZWxDb21tdW5pdHlWZXJpZmllZAcJAQAAABJkZWxldGVMYWJlbEFjdGlvbnMAAAADBQAAAAdhc3NldElkBQAAABZsYWJlbENvbW11bml0eVZlcmlmaWVkBwkABE4AAAACCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAAJa2V5U3RhdHVzAAAAAQUAAAAHYXNzZXRJZAkBAAAAEHZlcmlmaWVkVG9TdGF0dXMAAAABBQAAAAh2ZXJpZmllZAUAAAADbmlsBQAAAB1sYWJlbENvbW11bml0eVZlcmlmaWVkQWN0aW9ucwEAAAATdXBkYXRlVGlja2VyQWN0aW9ucwAAAAIAAAAHYXNzZXRJZAAAAAZ0aWNrZXIEAAAAC2NoZWNrVGlja2VyBAAAABNsaW5rZWRBc3NldElkT3JVbml0CQAEIgAAAAEJAQAAABJrZXlUaWNrZXJUb0Fzc2V0SWQAAAABBQAAAAZ0aWNrZXIEAAAADXRpY2tlcklzVmFsaWQDCQEAAAACIT0AAAACBQAAAAZ0aWNrZXICAAAAAAMJAAAAAAAAAgUAAAATbGlua2VkQXNzZXRJZE9yVW5pdAUAAAAEdW5pdAYJAAAAAAAAAgkBAAAABXZhbHVlAAAAAQUAAAATbGlua2VkQXNzZXRJZE9yVW5pdAUAAAAHYXNzZXRJZAcDBQAAAA10aWNrZXJJc1ZhbGlkBgkAAAIAAAABAgAAAA5JbnZhbGlkIHRpY2tlcgMJAAAAAAAAAgUAAAALY2hlY2tUaWNrZXIFAAAAC2NoZWNrVGlja2VyCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAABJrZXlBc3NldElkVG9UaWNrZXIAAAABBQAAAAdhc3NldElkBQAAAAZ0aWNrZXIJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAAEmtleVRpY2tlclRvQXNzZXRJZAAAAAEFAAAABnRpY2tlcgUAAAAHYXNzZXRJZAUAAAADbmlsCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgAAABIAAAABaQEAAAALY29uc3RydWN0b3IAAAACAAAAEXVzZXJQb29sc0NvbnRyYWN0AAAABmxhYmVscwQAAAALY2hlY2tDYWxsZXIJAQAAAAttdXN0TWFuYWdlcgAAAAEFAAAAAWkDCQAAAAAAAAIFAAAAC2NoZWNrQ2FsbGVyBQAAAAtjaGVja0NhbGxlcgQAAAANY2hlY2tzQWRkcmVzcwkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEJgAAAAEFAAAAEXVzZXJQb29sc0NvbnRyYWN0AgAAAA9JbnZhbGlkIGFkZHJlc3MDCQAAAAAAAAIFAAAADWNoZWNrc0FkZHJlc3MFAAAADWNoZWNrc0FkZHJlc3MJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAAFGtleVVzZXJQb29sc0NvbnRyYWN0AAAAAAUAAAARdXNlclBvb2xzQ29udHJhY3QJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAACWtleUxhYmVscwAAAAAJAAS5AAAAAgkABE4AAAACBQAAAA1kZWZhdWx0TGFiZWxzBQAAAAZsYWJlbHMFAAAAA1NFUAUAAAADbmlsCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4AAAABaQEAAAANY29uc3RydWN0b3JWMgAAAAEAAAAWdm90aW5nRW1pc3Npb25Db250cmFjdAQAAAALY2hlY2tDYWxsZXIJAQAAAAttdXN0TWFuYWdlcgAAAAEFAAAAAWkDCQAAAAAAAAIFAAAAC2NoZWNrQ2FsbGVyBQAAAAtjaGVja0NhbGxlcgQAAAAMY2hlY2tBZGRyZXNzCQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQmAAAAAQUAAAAWdm90aW5nRW1pc3Npb25Db250cmFjdAIAAAAoaW52YWxpZCB2b3RpbmcgZW1pc3Npb24gY29udHJhY3QgYWRkcmVzcwMJAAAAAAAAAgUAAAAMY2hlY2tBZGRyZXNzBQAAAAxjaGVja0FkZHJlc3MJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAAGWtleVZvdGluZ0VtaXNzaW9uQ29udHJhY3QAAAAABQAAABZ2b3RpbmdFbWlzc2lvbkNvbnRyYWN0BQAAAANuaWwJAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgAAAAFpAQAAAA1hZGRBc3NldHNMaW5rAAAAAwAAAAthbW91bnRBc3NldAAAAApwcmljZUFzc2V0AAAAB2xwQXNzZXQEAAAAC2NoZWNrQ2FsbGVyCQEAAAAJbXVzdEFkbWluAAAAAQUAAAABaQMJAAAAAAAAAgUAAAALY2hlY2tDYWxsZXIFAAAAC2NoZWNrQ2FsbGVyCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAACBrZXlBbW91bnRBbmRQcmljZUFzc2V0c1RvTHBBc3NldAAAAAIFAAAAC2Ftb3VudEFzc2V0BQAAAApwcmljZUFzc2V0BQAAAAdscEFzc2V0CQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAACBrZXlMcEFzc2V0VG9BbW91bnRBbmRQcmljZUFzc2V0cwAAAAEFAAAAB2xwQXNzZXQJAAS5AAAAAgkABEwAAAACBQAAAAthbW91bnRBc3NldAkABEwAAAACBQAAAApwcmljZUFzc2V0BQAAAANuaWwFAAAAA1NFUAUAAAADbmlsCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgAAAAFpAQAAABhpbmNyZWFzZUFzc2V0UG9vbHNOdW1iZXIA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AWkDCQAAAAAAAAIFAAAAC2NoZWNrQ2FsbGVyBQAAAAtjaGVja0NhbGxlcgkBAAAAEmRlbGV0ZUxhYmVsQWN0aW9ucwAAAAMFAAAAB2Fzc2V0SWQFAAAABWxhYmVsBgkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4AAAABaQEAAAAMdXBkYXRlVGlja2VyAAAAAgAAAAdhc3NldElkAAAABnRpY2tlcgQAAAALY2hlY2tDYWxsZXIJAQAAAAltdXN0QWRtaW4AAAABBQAAAAFpAwkAAAAAAAACBQAAAAtjaGVja0NhbGxlcgUAAAALY2hlY2tDYWxsZXIEAAAACmNoZWNrQXNzZXQDCQEAAAAJaXNDcmVhdGVkAAAAAQUAAAAHYXNzZXRJZAYJAQAAAAx0aHJvd05vQXNzZXQAAAAAAwkAAAAAAAACBQAAAApjaGVja0Fzc2V0BQAAAApjaGVja0Fzc2V0CQEAAAATdXBkYXRlVGlja2VyQWN0aW9ucwAAAAIFAAAAB2Fzc2V0SWQFAAAABnRpY2tlcgkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAAAAAWkBAAAADGRlbGV0ZVRpY2tlcgAAAAEAAAAHYXNzZXRJZAQAAAALY2hlY2tDYWxsZXIJAQAAAAltdXN0QWRtaW4AAAABBQAAAAFpAwkAAAAAAAACBQAAAAtjaGVja0NhbGxlcgUAAAALY2hlY2tDYWxsZXIEAAAABnRpY2tlcgkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEIgAAAAEJAQAAABJrZXlBc3NldElkVG9UaWNrZXIAAAABBQAAAAdhc3NldElkAgAAAA1JbnZhbGlkIGFzc2V0CQAETAAAAAIJAQAAAAtEZWxldGVFbnRyeQAAAAEJAQAAABJrZXlBc3NldElkVG9UaWNrZXIAAAABBQAAAAdhc3NldElkCQAETAAAAAIJAQAAAAtEZWxldGVFbnRyeQAAAAEJAQAAABJrZXlUaWNrZXJUb0Fzc2V0SWQAAAABBQAAAAZ0aWNrZXIFAAAAA25pbAkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4AAAABaQEAAAAOY3JlYXRlT3JVcGRhdGUAAAADAAAAB2Fzc2V0SWQAAAAEbG9nbwAAAAh2ZXJpZmllZAQAAAALY2hlY2tDYWxsZXIJAQAAAAltdXN0QWRtaW4AAAABBQAAAAFpAwkAAAAAAAACBQAAAAtjaGVja0NhbGxlcgUAAAALY2hlY2tDYWxsZXIEAAAADGlzQ3JlYXRlZE5vdwkBAAAAASEAAAABCQEAAAAJaXNDcmVhdGVkAAAAAQUAAAAHYXNzZXRJZAMJAAAAAAAAAgUAAAAMaXNDcmVhdGVkTm93BQAAAAxpc0NyZWF0ZWROb3cEAAAADnNldExvZ29BY3Rpb25zAwkAAAAAAAACBQAAAARsb2dvAgAAAAAFAAAAA25pbAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAAHa2V5TG9nbwAAAAEFAAAAB2Fzc2V0SWQFAAAABGxvZ28FAAAAA25pbAkABRQAAAACCQAETgAAAAIJAAROAAAAAgkABEwAAAACCQEAAAAMQm9vbGVhbkVudHJ5AAAAAgkBAAAACmtleUNyZWF0ZWQAAAABBQAAAAdhc3NldElkBgUAAAADbmlsBQAAAA5zZXRMb2dvQWN0aW9ucwkBAAAAEnNldFZlcmlmaWVkQWN0aW9ucwAAAAIFAAAAB2Fzc2V0SWQFAAAACHZlcmlmaWVkBQAAAAxpc0NyZWF0ZWROb3cJAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgAAAAFpAQAAAAdzZXRMb2dvAAAAAgAAAAdhc3NldElkAAAABGxvZ28EAAAABmNoZWNrcwkABEwAAAACCQEAAAAJbXVzdEFkbWluAAAAAQUAAAABaQkABEwAAAACAwkBAAAACWlzQ3JlYXRlZAAAAAEFAAAAB2Fzc2V0SWQGCQEAAAAMdGhyb3dOb0Fzc2V0AAAAAAUAAAADbmlsAwkAAAAAAAACBQAAAAZjaGVja3MFAAAABmNoZWNrcwkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAAHa2V5TG9nbwAAAAEFAAAAB2Fzc2V0SWQFAAAABGxvZ28FAAAAA25pbAkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4AAAABaQEAAAALc2V0VmVyaWZpZWQAAAACAAAAB2Fzc2V0SWQAAAAIdmVyaWZpZWQEAAAABmNoZWNrcwkABEwAAAACCQEAAAAJbXVzdEFkbWluAAAAAQUAAAABaQkABEwAAAACAwkBAAAACWlzQ3JlYXRlZAAAAAEFAAAAB2Fzc2V0SWQGCQEAAAAMdGhyb3dOb0Fzc2V0AAAAAAUAAAADbmlsAwkAAAAAAAACBQAAAAZjaGVja3MFAAAABmNoZWNrcwQAAAAVb25WZXJpZmljYXRpb25Mb3NzSW52AwkBAAAAASEAAAABBQAAAAh2ZXJpZmllZAQAAAAWdm90aW5nRW1pc3Npb25Db250cmFjdAkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEJgAAAAEJAQAAAAxnZXRTdHJPckZhaWwAAAACBQAAAAR0aGlzCQEAAAAZa2V5Vm90aW5nRW1pc3Npb25Db250cmFjdAAAAAACAAAAKGludmFsaWQgdm90aW5nIGVtaXNzaW9uIGNvbnRyYWN0IGFkZHJlc3MJAAP8AAAABAUAAAAWdm90aW5nRW1pc3Npb25Db250cmFjdAIAAAASb25WZXJpZmljYXRpb25Mb3NzCQAETAAAAAIFAAAAB2Fzc2V0SWQFAAAAA25pbAUAAAADbmlsBQAAAAR1bml0AwkAAAAAAAACBQAAABVvblZlcmlmaWNhdGlvbkxvc3NJbnYFAAAAFW9uVmVyaWZpY2F0aW9uTG9zc0ludgkABRQAAAACCQEAAAASc2V0VmVyaWZpZWRBY3Rpb25zAAAAAgUAAAAHYXNzZXRJZAUAAAAIdmVyaWZpZWQFAAAABHVuaXQJAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgAAAAFpAQAAAAtvbkVsaW1pbmF0ZQAAAAEAAAAHYXNzZXRJZAQAAAALcG9vbHNOdW1iZXIJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQfAAAAAQkBAAAAE2tleUFzc2V0UG9vbHNOdW1iZXIAAAABBQAAAAdhc3NldElkAAAAAAAAAAAABAAAAAdhY3Rpb25zAwkAAGYAAAACBQAAAAtwb29sc051bWJlcgAAAAAAAAAAAAUAAAADbmlsCQAETAAAAAIJAQAAAAtEZWxldGVFbnRyeQAAAAEJAQAAAAdrZXlMb2dvAAAAAQUAAAAHYXNzZXRJZAUAAAADbmlsCQAFFAAAAAIFAAAAB2FjdGlvbnMFAAAABHVuaXQAAAABaQEAAAAJc2V0QWRtaW5zAAAAAQAAAAxhZG1pblB1YktleXMEAAAAC2NoZWNrQ2FsbGVyCQEAAAALbXVzdE1hbmFnZXIAAAABBQAAAAFpAwkAAAAAAAACBQAAAAtjaGVja0NhbGxlcgUAAAALY2hlY2tDYWxsZXIJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAAD2tleUFkbWluUHViS2V5cwAAAAAJAAS5AAAAAgUAAAAMYWRtaW5QdWJLZXlzBQAAAANTRVAFAAAAA25pbAkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4AAAABaQEAAAAKc2V0TWFuYWdlcgAAAAEAAAAXcGVuZGluZ01hbmFnZXJQdWJsaWNLZXkEAAAAC2NoZWNrQ2FsbGVyCQEAAAALbXVzdE1hbmFnZXIAAAABBQAAAAFpAwkAAAAAAAACBQAAAAtjaGVja0NhbGxlcgUAAAALY2hlY2tDYWxsZXIEAAAAFWNoZWNrTWFuYWdlclB1YmxpY0tleQkAAlkAAAABBQAAABdwZW5kaW5nTWFuYWdlclB1YmxpY0tleQMJAAAAAAAAAgUAAAAVY2hlY2tNYW5hZ2VyUHVibGljS2V5BQAAABVjaGVja01hbmFnZXJQdWJsaWNLZXkJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAAGmtleVBlbmRpbmdNYW5hZ2VyUHVibGljS2V5AAAAAAUAAAAXcGVuZGluZ01hbmFnZXJQdWJsaWNLZXkFAAAAA25pbAkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAAAAAWkBAAAADmNvbmZpcm1NYW5hZ2VyAAAAAAQAAAACcG0JAQAAAB1wZW5kaW5nTWFuYWdlclB1YmxpY0tleU9yVW5pdAAAAAAEAAAABWhhc1BNAwkBAAAACWlzRGVmaW5lZAAAAAEFAAAAAnBtBgkAAAIAAAABAgAAABJObyBwZW5kaW5nIG1hbmFnZXIDCQAAAAAAAAIFAAAABWhhc1BNBQAAAAVoYXNQTQQAAAAHY2hlY2tQTQMJAAAAAAAAAggFAAAAAWkAAAAPY2FsbGVyUHVibGljS2V5CQEAAAAFdmFsdWUAAAABBQAAAAJwbQYJAAACAAAAAQIAAAAbWW91IGFyZSBub3QgcGVuZGluZyBtYW5hZ2VyAwkAAAAAAAACBQAAAAdjaGVja1BNBQAAAAdjaGVja1BNCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAABNrZXlNYW5hZ2VyUHVibGljS2V5AAAAAAkAAlgAAAABCQEAAAAFdmFsdWUAAAABBQAAAAJwbQkABEwAAAACCQEAAAALRGVsZXRlRW50cnkAAAABCQEAAAAaa2V5UGVuZGluZ01hbmFnZXJQdWJsaWNLZXkAAAAABQAAAANuaWwJAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgAAAAFpAQAAABJpc1ZlcmlmaWVkUkVBRE9OTFkAAAABAAAAB2Fzc2V0SWQJAAUUAAAAAgUAAAADbmlsCQEAAAAKaXNWZXJpZmllZAAAAAEFAAAAB2Fzc2V0SWQAAAABAAAAAnR4AQAAAAZ2ZXJpZnkAAAAABAAAAA90YXJnZXRQdWJsaWNLZXkEAAAAByRtYXRjaDAJAQAAABZtYW5hZ2VyUHVibGljS2V5T3JVbml0AAAAAAMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAKQnl0ZVZlY3RvcgQAAAACcGsFAAAAByRtYXRjaDAFAAAAAnBrAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAARVbml0CAUAAAACdHgAAAAPc2VuZGVyUHVibGljS2V5CQAAAgAAAAECAAAAC01hdGNoIGVycm9yCQAB9AAAAAMIBQAAAAJ0eAAAAAlib2R5Qnl0ZXMJAAGRAAAAAggFAAAAAnR4AAAABnByb29mcwAAAAAAAAAAAAUAAAAPdGFyZ2V0UHVibGljS2V5seCahA==", "chainId": 84, "height": 2080284, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: DV7SomWb19SHHRrvem9oRynJYarjvLvuBuE3ZGLmG1jL Next: 3xwm6Hm9KSNJ4uUexivGPKzjsDUNgnoPUEA9VHwHZbDY Diff:
OldNewDifferences
8383
8484
8585 func getStrOrFail (address,key) = {
86- let @ = getValueOrFail(address, key, 0)
86+ let @ = getValueOrFail(address, key, "")
8787 if ($isInstanceOf(@, "String"))
8888 then @
8989 else throw("Couldn't cast Int|String to String")
90- }
91-
92-
93-func getStrOrUnit (address,key) = {
94- let @ = getValueOrFail(address, key, 0)
95- if ($isInstanceOf(@, "String"))
96- then @
97- else unit
9890 }
9991
10092
10395 if ($isInstanceOf(@, "Int"))
10496 then @
10597 else throw("Couldn't cast Int|String to Int")
106- }
107-
108-
109-func getIntOrUnit (address,key) = {
110- let @ = getValueOrFail(address, key, 0)
111- if ($isInstanceOf(@, "Int"))
112- then @
113- else unit
11498 }
11599
116100
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let SEP = "__"
55
66 let EMPTY = ""
77
88 let statusVerified = 2
99
1010 let statusUnverified = 0
1111
1212 let labelCommunityVerified = "COMMUNITY_VERIFIED"
1313
1414 let labelPoolsLp = "POOLS_LP"
1515
1616 let defaultLabels = [labelCommunityVerified, labelPoolsLp]
1717
1818 func throwPD () = throw("Permission denied")
1919
2020
2121 func throwNoAsset () = throw("Asset doesn't exists")
2222
2323
2424 func keyManagerPublicKey () = "%s__managerPublicKey"
2525
2626
2727 func keyPendingManagerPublicKey () = "%s__pendingManagerPublicKey"
2828
2929
3030 func keyAdminPubKeys () = "%s__adminPubKeys"
3131
3232
3333 func keyUserPoolsContract () = "%s__userPoolsContract"
3434
3535
3636 func keyVotingEmissionContract () = "%s__votingEmissionContract"
3737
3838
3939 func keyCreated (assetId) = (("created_<" + assetId) + ">")
4040
4141
4242 func keyLogo (assetId) = (("logo_<" + assetId) + ">")
4343
4444
4545 func keyTicker (assetId) = (("ticker_<" + assetId) + ">")
4646
4747
4848 func keyStatus (assetId) = (("status_<" + assetId) + ">")
4949
5050
5151 func keyAssetPoolsNumber (assetId) = makeString(["%s%s", "pools", assetId], SEP)
5252
5353
5454 func keyTickerToAssetId (ticker) = makeString(["%s%s", "ticker2assetId", ticker], SEP)
5555
5656
5757 func keyAssetIdToTicker (assetId) = makeString(["%s%s", "assetId2ticker", assetId], SEP)
5858
5959
6060 func keyAmountAndPriceAssetsToLpAsset (amountAsset,priceAsset) = makeString(["%s%s%s", "amountAndPriceAssetsToLpAsset", amountAsset, priceAsset], SEP)
6161
6262
6363 func keyLpAssetToAmountAndPriceAssets (lpAsset) = makeString(["%s%s", "lpAssetToAmountAndPriceAssets", lpAsset], SEP)
6464
6565
6666 func keyAssetLabels (assetId) = makeString(["%s%s", "labels", assetId], SEP)
6767
6868
6969 func keyLabels () = makeString(["%s", "labels"], SEP)
7070
7171
7272 func getValueOrFail (address,key,type) = {
7373 let error = makeString(["mandatory ", toString(address), ".", key, " is not defined"], "")
7474 valueOrErrorMessage( match type {
7575 case str: String =>
7676 getString(address, key)
7777 case int: Int =>
7878 getInteger(address, key)
7979 case _ =>
8080 throw("invalid entry type")
8181 }, error)
8282 }
8383
8484
8585 func getStrOrFail (address,key) = {
86- let @ = getValueOrFail(address, key, 0)
86+ let @ = getValueOrFail(address, key, "")
8787 if ($isInstanceOf(@, "String"))
8888 then @
8989 else throw("Couldn't cast Int|String to String")
90- }
91-
92-
93-func getStrOrUnit (address,key) = {
94- let @ = getValueOrFail(address, key, 0)
95- if ($isInstanceOf(@, "String"))
96- then @
97- else unit
9890 }
9991
10092
10193 func getIntOrFail (address,key) = {
10294 let @ = getValueOrFail(address, key, 0)
10395 if ($isInstanceOf(@, "Int"))
10496 then @
10597 else throw("Couldn't cast Int|String to Int")
106- }
107-
108-
109-func getIntOrUnit (address,key) = {
110- let @ = getValueOrFail(address, key, 0)
111- if ($isInstanceOf(@, "Int"))
112- then @
113- else unit
11498 }
11599
116100
117101 func isVerified (assetId) = (valueOrElse(getInteger(keyStatus(assetId)), statusUnverified) == statusVerified)
118102
119103
120104 func getLabels () = match getString(keyLabels()) {
121105 case s: String =>
122106 if ((size(s) == 0))
123107 then nil
124108 else split(s, SEP)
125109 case _ =>
126110 nil
127111 }
128112
129113
130114 func getAssetLabels (assetId) = match getString(keyAssetLabels(assetId)) {
131115 case s: String =>
132116 if ((size(s) == 0))
133117 then nil
134118 else split(s, SEP)
135119 case _ =>
136120 nil
137121 }
138122
139123
140124 func managerPublicKeyOrUnit () = match getString(keyManagerPublicKey()) {
141125 case s: String =>
142126 fromBase58String(s)
143127 case _: Unit =>
144128 unit
145129 case _ =>
146130 throw("Match error")
147131 }
148132
149133
150134 func pendingManagerPublicKeyOrUnit () = match getString(keyPendingManagerPublicKey()) {
151135 case s: String =>
152136 fromBase58String(s)
153137 case _: Unit =>
154138 unit
155139 case _ =>
156140 throw("Match error")
157141 }
158142
159143
160144 func mustManager (i) = match managerPublicKeyOrUnit() {
161145 case pk: ByteVector =>
162146 if ((i.callerPublicKey == pk))
163147 then true
164148 else throwPD()
165149 case _: Unit =>
166150 if ((i.caller == this))
167151 then true
168152 else throwPD()
169153 case _ =>
170154 throw("Match error")
171155 }
172156
173157
174158 func mustAdmin (i) = {
175159 let adminPKs = split(valueOrElse(getString(keyAdminPubKeys()), EMPTY), SEP)
176160 if (containsElement(adminPKs, toBase58String(i.callerPublicKey)))
177161 then true
178162 else {
179163 let isManager = mustManager(i)
180164 if ((isManager == isManager))
181165 then true
182166 else throw("Strict value is not equal to itself.")
183167 }
184168 }
185169
186170
187171 func isCreated (assetId) = valueOrElse(getBoolean(keyCreated(assetId)), false)
188172
189173
190174 func verifiedToStatus (verified) = if (verified)
191175 then statusVerified
192176 else statusUnverified
193177
194178
195179 func addLabelActions (assetId,label,throwOnError) = {
196180 let labels = getLabels()
197181 let assetLabels = getAssetLabels(assetId)
198182 let checkLabel = if (containsElement(labels, label))
199183 then true
200184 else throw("Label doesn't exist")
201185 if ((checkLabel == checkLabel))
202186 then {
203187 let newAssetLabels = if (containsElement(assetLabels, label))
204188 then if (throwOnError)
205189 then throw("Label has already been added")
206190 else assetLabels
207191 else (assetLabels :+ label)
208192 [StringEntry(keyAssetLabels(assetId), makeString(newAssetLabels, SEP))]
209193 }
210194 else throw("Strict value is not equal to itself.")
211195 }
212196
213197
214198 func deleteLabelActions (assetId,label,throwOnError) = {
215199 let assetLabels = getAssetLabels(assetId)
216200 let newAssetLabels = if (containsElement(assetLabels, label))
217201 then removeByIndex(assetLabels, value(indexOf(assetLabels, label)))
218202 else if (throwOnError)
219203 then throw("Label wasn't added")
220204 else assetLabels
221205 [StringEntry(keyAssetLabels(assetId), makeString(newAssetLabels, SEP))]
222206 }
223207
224208
225209 func setVerifiedActions (assetId,verified) = {
226210 let labelCommunityVerifiedActions = if (verified)
227211 then addLabelActions(assetId, labelCommunityVerified, false)
228212 else deleteLabelActions(assetId, labelCommunityVerified, false)
229213 ([IntegerEntry(keyStatus(assetId), verifiedToStatus(verified))] ++ labelCommunityVerifiedActions)
230214 }
231215
232216
233217 func updateTickerActions (assetId,ticker) = {
234218 let checkTicker = {
235219 let linkedAssetIdOrUnit = getString(keyTickerToAssetId(ticker))
236220 let tickerIsValid = if ((ticker != ""))
237221 then if ((linkedAssetIdOrUnit == unit))
238222 then true
239223 else (value(linkedAssetIdOrUnit) == assetId)
240224 else false
241225 if (tickerIsValid)
242226 then true
243227 else throw("Invalid ticker")
244228 }
245229 if ((checkTicker == checkTicker))
246230 then [StringEntry(keyAssetIdToTicker(assetId), ticker), StringEntry(keyTickerToAssetId(ticker), assetId)]
247231 else throw("Strict value is not equal to itself.")
248232 }
249233
250234
251235 @Callable(i)
252236 func constructor (userPoolsContract,labels) = {
253237 let checkCaller = mustManager(i)
254238 if ((checkCaller == checkCaller))
255239 then {
256240 let checksAddress = valueOrErrorMessage(addressFromString(userPoolsContract), "Invalid address")
257241 if ((checksAddress == checksAddress))
258242 then [StringEntry(keyUserPoolsContract(), userPoolsContract), StringEntry(keyLabels(), makeString((defaultLabels ++ labels), SEP))]
259243 else throw("Strict value is not equal to itself.")
260244 }
261245 else throw("Strict value is not equal to itself.")
262246 }
263247
264248
265249
266250 @Callable(i)
267251 func constructorV2 (votingEmissionContract) = {
268252 let checkCaller = mustManager(i)
269253 if ((checkCaller == checkCaller))
270254 then {
271255 let checkAddress = valueOrErrorMessage(addressFromString(votingEmissionContract), "invalid voting emission contract address")
272256 if ((checkAddress == checkAddress))
273257 then [StringEntry(keyVotingEmissionContract(), votingEmissionContract)]
274258 else throw("Strict value is not equal to itself.")
275259 }
276260 else throw("Strict value is not equal to itself.")
277261 }
278262
279263
280264
281265 @Callable(i)
282266 func addAssetsLink (amountAsset,priceAsset,lpAsset) = {
283267 let checkCaller = mustAdmin(i)
284268 if ((checkCaller == checkCaller))
285269 then [StringEntry(keyAmountAndPriceAssetsToLpAsset(amountAsset, priceAsset), lpAsset), StringEntry(keyLpAssetToAmountAndPriceAssets(lpAsset), makeString([amountAsset, priceAsset], SEP))]
286270 else throw("Strict value is not equal to itself.")
287271 }
288272
289273
290274
291275 @Callable(i)
292276 func increaseAssetPoolsNumber (assetId) = {
293277 let checkCaller = mustAdmin(i)
294278 if ((checkCaller == checkCaller))
295279 then {
296280 let assetPoolsNumberKey = keyAssetPoolsNumber(assetId)
297281 let assetPoolsNumber = valueOrElse(getInteger(assetPoolsNumberKey), 0)
298282 [IntegerEntry(assetPoolsNumberKey, (assetPoolsNumber + 1))]
299283 }
300284 else throw("Strict value is not equal to itself.")
301285 }
302286
303287
304288
305289 @Callable(i)
306290 func createLabel (label) = {
307291 let labels = getLabels()
308292 let checkCaller = mustManager(i)
309293 if ((checkCaller == checkCaller))
310294 then {
311295 let checkLabel = [if (!(contains(label, SEP)))
312296 then true
313297 else throw("Invalid label name"), if (!(containsElement(labels, label)))
314298 then true
315299 else throw("Label exists")]
316300 if ((checkLabel == checkLabel))
317301 then [StringEntry(keyLabels(), makeString((labels :+ label), SEP))]
318302 else throw("Strict value is not equal to itself.")
319303 }
320304 else throw("Strict value is not equal to itself.")
321305 }
322306
323307
324308
325309 @Callable(i)
326310 func dropLabel (label) = {
327311 let labels = getLabels()
328312 let checkCaller = mustManager(i)
329313 if ((checkCaller == checkCaller))
330314 then {
331315 let checkLabel = if (containsElement(labels, label))
332316 then true
333317 else throw("Label doesn't exist")
334318 if ((checkLabel == checkLabel))
335319 then [StringEntry(keyLabels(), makeString(removeByIndex(labels, value(indexOf(labels, label))), SEP))]
336320 else throw("Strict value is not equal to itself.")
337321 }
338322 else throw("Strict value is not equal to itself.")
339323 }
340324
341325
342326
343327 @Callable(i)
344328 func addLabel (assetId,label) = {
345329 let checkCaller = mustAdmin(i)
346330 if ((checkCaller == checkCaller))
347331 then addLabelActions(assetId, label, true)
348332 else throw("Strict value is not equal to itself.")
349333 }
350334
351335
352336
353337 @Callable(i)
354338 func deleteLabel (assetId,label) = {
355339 let checkCaller = mustAdmin(i)
356340 if ((checkCaller == checkCaller))
357341 then deleteLabelActions(assetId, label, true)
358342 else throw("Strict value is not equal to itself.")
359343 }
360344
361345
362346
363347 @Callable(i)
364348 func updateTicker (assetId,ticker) = {
365349 let checkCaller = mustAdmin(i)
366350 if ((checkCaller == checkCaller))
367351 then {
368352 let checkAsset = if (isCreated(assetId))
369353 then true
370354 else throwNoAsset()
371355 if ((checkAsset == checkAsset))
372356 then updateTickerActions(assetId, ticker)
373357 else throw("Strict value is not equal to itself.")
374358 }
375359 else throw("Strict value is not equal to itself.")
376360 }
377361
378362
379363
380364 @Callable(i)
381365 func deleteTicker (assetId) = {
382366 let checkCaller = mustAdmin(i)
383367 if ((checkCaller == checkCaller))
384368 then {
385369 let ticker = valueOrErrorMessage(getString(keyAssetIdToTicker(assetId)), "Invalid asset")
386370 [DeleteEntry(keyAssetIdToTicker(assetId)), DeleteEntry(keyTickerToAssetId(ticker))]
387371 }
388372 else throw("Strict value is not equal to itself.")
389373 }
390374
391375
392376
393377 @Callable(i)
394378 func createOrUpdate (assetId,logo,verified) = {
395379 let checkCaller = mustAdmin(i)
396380 if ((checkCaller == checkCaller))
397381 then {
398382 let isCreatedNow = !(isCreated(assetId))
399383 if ((isCreatedNow == isCreatedNow))
400384 then {
401385 let setLogoActions = if ((logo == ""))
402386 then nil
403387 else [StringEntry(keyLogo(assetId), logo)]
404388 $Tuple2((([BooleanEntry(keyCreated(assetId), true)] ++ setLogoActions) ++ setVerifiedActions(assetId, verified)), isCreatedNow)
405389 }
406390 else throw("Strict value is not equal to itself.")
407391 }
408392 else throw("Strict value is not equal to itself.")
409393 }
410394
411395
412396
413397 @Callable(i)
414398 func setLogo (assetId,logo) = {
415399 let checks = [mustAdmin(i), if (isCreated(assetId))
416400 then true
417401 else throwNoAsset()]
418402 if ((checks == checks))
419403 then [StringEntry(keyLogo(assetId), logo)]
420404 else throw("Strict value is not equal to itself.")
421405 }
422406
423407
424408
425409 @Callable(i)
426410 func setVerified (assetId,verified) = {
427411 let checks = [mustAdmin(i), if (isCreated(assetId))
428412 then true
429413 else throwNoAsset()]
430414 if ((checks == checks))
431415 then {
432416 let onVerificationLossInv = if (!(verified))
433417 then {
434418 let votingEmissionContract = valueOrErrorMessage(addressFromString(getStrOrFail(this, keyVotingEmissionContract())), "invalid voting emission contract address")
435419 invoke(votingEmissionContract, "onVerificationLoss", [assetId], nil)
436420 }
437421 else unit
438422 if ((onVerificationLossInv == onVerificationLossInv))
439423 then $Tuple2(setVerifiedActions(assetId, verified), unit)
440424 else throw("Strict value is not equal to itself.")
441425 }
442426 else throw("Strict value is not equal to itself.")
443427 }
444428
445429
446430
447431 @Callable(i)
448432 func onEliminate (assetId) = {
449433 let poolsNumber = valueOrElse(getInteger(keyAssetPoolsNumber(assetId)), 0)
450434 let actions = if ((poolsNumber > 0))
451435 then nil
452436 else [DeleteEntry(keyLogo(assetId))]
453437 $Tuple2(actions, unit)
454438 }
455439
456440
457441
458442 @Callable(i)
459443 func setAdmins (adminPubKeys) = {
460444 let checkCaller = mustManager(i)
461445 if ((checkCaller == checkCaller))
462446 then [StringEntry(keyAdminPubKeys(), makeString(adminPubKeys, SEP))]
463447 else throw("Strict value is not equal to itself.")
464448 }
465449
466450
467451
468452 @Callable(i)
469453 func setManager (pendingManagerPublicKey) = {
470454 let checkCaller = mustManager(i)
471455 if ((checkCaller == checkCaller))
472456 then {
473457 let checkManagerPublicKey = fromBase58String(pendingManagerPublicKey)
474458 if ((checkManagerPublicKey == checkManagerPublicKey))
475459 then [StringEntry(keyPendingManagerPublicKey(), pendingManagerPublicKey)]
476460 else throw("Strict value is not equal to itself.")
477461 }
478462 else throw("Strict value is not equal to itself.")
479463 }
480464
481465
482466
483467 @Callable(i)
484468 func confirmManager () = {
485469 let pm = pendingManagerPublicKeyOrUnit()
486470 let hasPM = if (isDefined(pm))
487471 then true
488472 else throw("No pending manager")
489473 if ((hasPM == hasPM))
490474 then {
491475 let checkPM = if ((i.callerPublicKey == value(pm)))
492476 then true
493477 else throw("You are not pending manager")
494478 if ((checkPM == checkPM))
495479 then [StringEntry(keyManagerPublicKey(), toBase58String(value(pm))), DeleteEntry(keyPendingManagerPublicKey())]
496480 else throw("Strict value is not equal to itself.")
497481 }
498482 else throw("Strict value is not equal to itself.")
499483 }
500484
501485
502486
503487 @Callable(i)
504488 func isVerifiedREADONLY (assetId) = $Tuple2(nil, isVerified(assetId))
505489
506490
507491 @Verifier(tx)
508492 func verify () = {
509493 let targetPublicKey = match managerPublicKeyOrUnit() {
510494 case pk: ByteVector =>
511495 pk
512496 case _: Unit =>
513497 tx.senderPublicKey
514498 case _ =>
515499 throw("Match error")
516500 }
517501 sigVerify(tx.bodyBytes, tx.proofs[0], targetPublicKey)
518502 }
519503

github/deemru/w8io/873ac7e 
62.48 ms