tx · 3Be7trJ81xMmtaH8h9b8qGmFjWrtXeF8wQ7ahigW29yt

3N5BB6iE58rujeTEkymeLNcdsYF4f6iKoxr:  -0.01400000 Waves

2022.04.14 15:40 [2008250] smart account 3N5BB6iE58rujeTEkymeLNcdsYF4f6iKoxr > SELF 0.00000000 Waves

{ "type": 13, "id": "3Be7trJ81xMmtaH8h9b8qGmFjWrtXeF8wQ7ahigW29yt", "fee": 1400000, "feeAssetId": null, "timestamp": 1649940114812, "version": 2, "chainId": 84, "sender": "3N5BB6iE58rujeTEkymeLNcdsYF4f6iKoxr", "senderPublicKey": "EtZZHS4uqNXY5WPneZ8jY2aA95peXwthJVLzAMxMp379", "proofs": [ "3zqseDa1No3TXbTzncKByH9ys4iFY9sPy9Qam7iAhBtE1kXu5wnnpHEUVC9LCDsxpGJggLSLnN3m9dwjqayAR9J3" ], "script": "base64:AAIFAAAAAAAAAFoIAhIECgIIGBIFCgMICAgSAwoBCBIDCgEIEgMKAQgSBAoCCAgSBAoCCAgSBAoCCAgSAwoBCBIGCgQICAgEEgQKAggIEgQKAggEEgMKARgSAwoBCBIAEgMKAQgAAAAlAAAAAANTRVACAAAAAl9fAAAAAAVFTVBUWQIAAAAAAAAAAA5zdGF0dXNWZXJpZmllZAAAAAAAAAAAAgAAAAAQc3RhdHVzVW52ZXJpZmllZAAAAAAAAAAAAAAAAAAWbGFiZWxDb21tdW5pdHlWZXJpZmllZAIAAAASQ09NTVVOSVRZX1ZFUklGSUVEAAAAAAxsYWJlbFBvb2xzTHACAAAACFBPT0xTX0xQAAAAAA1kZWZhdWx0TGFiZWxzCQAETAAAAAIFAAAAFmxhYmVsQ29tbXVuaXR5VmVyaWZpZWQJAARMAAAAAgUAAAAMbGFiZWxQb29sc0xwBQAAAANuaWwBAAAAB3Rocm93UEQAAAAACQAAAgAAAAECAAAAEVBlcm1pc3Npb24gZGVuaWVkAQAAAAx0aHJvd05vQXNzZXQAAAAACQAAAgAAAAECAAAAFEFzc2V0IGRvZXNuJ3QgZXhpc3RzAQAAABNrZXlNYW5hZ2VyUHVibGljS2V5AAAAAAIAAAAUJXNfX21hbmFnZXJQdWJsaWNLZXkBAAAAGmtleVBlbmRpbmdNYW5hZ2VyUHVibGljS2V5AAAAAAIAAAAbJXNfX3BlbmRpbmdNYW5hZ2VyUHVibGljS2V5AQAAAA9rZXlBZG1pblB1YktleXMAAAAAAgAAABAlc19fYWRtaW5QdWJLZXlzAQAAABRrZXlVc2VyUG9vbHNDb250cmFjdAAAAAACAAAAFSVzX191c2VyUG9vbHNDb250cmFjdAEAAAAKa2V5Q3JlYXRlZAAAAAEAAAAHYXNzZXRJZAkAASwAAAACCQABLAAAAAICAAAACWNyZWF0ZWRfPAUAAAAHYXNzZXRJZAIAAAABPgEAAAAHa2V5TG9nbwAAAAEAAAAHYXNzZXRJZAkAASwAAAACCQABLAAAAAICAAAABmxvZ29fPAUAAAAHYXNzZXRJZAIAAAABPgEAAAAJa2V5VGlja2VyAAAAAQAAAAdhc3NldElkCQABLAAAAAIJAAEsAAAAAgIAAAAIdGlja2VyXzwFAAAAB2Fzc2V0SWQCAAAAAT4BAAAACWtleVN0YXR1cwAAAAEAAAAHYXNzZXRJZAkAASwAAAACCQABLAAAAAICAAAACHN0YXR1c188BQAAAAdhc3NldElkAgAAAAE+AQAAABNrZXlBc3NldFBvb2xzTnVtYmVyAAAAAQAAAAdhc3NldElkCQAEuQAAAAIJAARMAAAAAgIAAAAEJXMlcwkABEwAAAACAgAAAAVwb29scwkABEwAAAACBQAAAAdhc3NldElkBQAAAANuaWwFAAAAA1NFUAEAAAASa2V5VGlja2VyVG9Bc3NldElkAAAAAQAAAAZ0aWNrZXIJAAS5AAAAAgkABEwAAAACAgAAAAQlcyVzCQAETAAAAAICAAAADnRpY2tlcjJhc3NldElkCQAETAAAAAIFAAAABnRpY2tlcgUAAAADbmlsBQAAAANTRVABAAAAEmtleUFzc2V0SWRUb1RpY2tlcgAAAAEAAAAHYXNzZXRJZAkABLkAAAACCQAETAAAAAICAAAABCVzJXMJAARMAAAAAgIAAAAOYXNzZXRJZDJ0aWNrZXIJAARMAAAAAgUAAAAHYXNzZXRJZAUAAAADbmlsBQAAAANTRVABAAAAIGtleUFtb3VudEFuZFByaWNlQXNzZXRzVG9McEFzc2V0AAAAAgAAAAthbW91bnRBc3NldAAAAApwcmljZUFzc2V0CQAEuQAAAAIJAARMAAAAAgIAAAAGJXMlcyVzCQAETAAAAAICAAAAHWFtb3VudEFuZFByaWNlQXNzZXRzVG9McEFzc2V0CQAETAAAAAIFAAAAC2Ftb3VudEFzc2V0CQAETAAAAAIFAAAACnByaWNlQXNzZXQFAAAAA25pbAUAAAADU0VQAQAAACBrZXlMcEFzc2V0VG9BbW91bnRBbmRQcmljZUFzc2V0cwAAAAEAAAAHbHBBc3NldAkABLkAAAACCQAETAAAAAICAAAABCVzJXMJAARMAAAAAgIAAAAdbHBBc3NldFRvQW1vdW50QW5kUHJpY2VBc3NldHMJAARMAAAAAgUAAAAHbHBBc3NldAUAAAADbmlsBQAAAANTRVABAAAADmtleUFzc2V0TGFiZWxzAAAAAQAAAAdhc3NldElkCQAEuQAAAAIJAARMAAAAAgIAAAAEJXMlcwkABEwAAAACAgAAAAZsYWJlbHMJAARMAAAAAgUAAAAHYXNzZXRJZAUAAAADbmlsBQAAAANTRVABAAAACWtleUxhYmVscwAAAAAJAAS5AAAAAgkABEwAAAACAgAAAAIlcwkABEwAAAACAgAAAAZsYWJlbHMFAAAAA25pbAUAAAADU0VQAQAAAAppc1ZlcmlmaWVkAAAAAQAAAAdhc3NldElkCQAAAAAAAAIJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQfAAAAAQkBAAAACWtleVN0YXR1cwAAAAEFAAAAB2Fzc2V0SWQFAAAAEHN0YXR1c1VudmVyaWZpZWQFAAAADnN0YXR1c1ZlcmlmaWVkAQAAAAlnZXRMYWJlbHMAAAAABAAAAAckbWF0Y2gwCQAEIgAAAAEJAQAAAAlrZXlMYWJlbHMAAAAAAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAAZTdHJpbmcEAAAAAXMFAAAAByRtYXRjaDADCQAAAAAAAAIJAAExAAAAAQUAAAABcwAAAAAAAAAAAAUAAAADbmlsCQAEtQAAAAIFAAAAAXMFAAAAA1NFUAUAAAADbmlsAQAAAA5nZXRBc3NldExhYmVscwAAAAEAAAAHYXNzZXRJZAQAAAAHJG1hdGNoMAkABCIAAAABCQEAAAAOa2V5QXNzZXRMYWJlbHMAAAABBQAAAAdhc3NldElkAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAAZTdHJpbmcEAAAAAXMFAAAAByRtYXRjaDADCQAAAAAAAAIJAAExAAAAAQUAAAABcwAAAAAAAAAAAAUAAAADbmlsCQAEtQAAAAIFAAAAAXMFAAAAA1NFUAUAAAADbmlsAQAAABZtYW5hZ2VyUHVibGljS2V5T3JVbml0AAAAAAQAAAAHJG1hdGNoMAkABCIAAAABCQEAAAATa2V5TWFuYWdlclB1YmxpY0tleQAAAAADCQAAAQAAAAIFAAAAByRtYXRjaDACAAAABlN0cmluZwQAAAABcwUAAAAHJG1hdGNoMAkAAlkAAAABBQAAAAFzAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAARVbml0BQAAAAR1bml0CQAAAgAAAAECAAAAC01hdGNoIGVycm9yAQAAAB1wZW5kaW5nTWFuYWdlclB1YmxpY0tleU9yVW5pdAAAAAAEAAAAByRtYXRjaDAJAAQiAAAAAQkBAAAAGmtleVBlbmRpbmdNYW5hZ2VyUHVibGljS2V5AAAAAAMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAGU3RyaW5nBAAAAAFzBQAAAAckbWF0Y2gwCQACWQAAAAEFAAAAAXMDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAABFVuaXQFAAAABHVuaXQJAAACAAAAAQIAAAALTWF0Y2ggZXJyb3IBAAAAC211c3RNYW5hZ2VyAAAAAQAAAAFpBAAAAAckbWF0Y2gwCQEAAAAWbWFuYWdlclB1YmxpY0tleU9yVW5pdAAAAAADCQAAAQAAAAIFAAAAByRtYXRjaDACAAAACkJ5dGVWZWN0b3IEAAAAAnBrBQAAAAckbWF0Y2gwAwkAAAAAAAACCAUAAAABaQAAAA9jYWxsZXJQdWJsaWNLZXkFAAAAAnBrBgkBAAAAB3Rocm93UEQAAAAAAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAARVbml0AwkAAAAAAAACCAUAAAABaQAAAAZjYWxsZXIFAAAABHRoaXMGCQEAAAAHdGhyb3dQRAAAAAAJAAACAAAAAQIAAAALTWF0Y2ggZXJyb3IBAAAACW11c3RBZG1pbgAAAAEAAAABaQQAAAAIYWRtaW5QS3MJAAS1AAAAAgkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABCIAAAABCQEAAAAPa2V5QWRtaW5QdWJLZXlzAAAAAAUAAAAFRU1QVFkFAAAAA1NFUAMJAQAAAA9jb250YWluc0VsZW1lbnQAAAACBQAAAAhhZG1pblBLcwkAAlgAAAABCAUAAAABaQAAAA9jYWxsZXJQdWJsaWNLZXkGBAAAAAlpc01hbmFnZXIJAQAAAAttdXN0TWFuYWdlcgAAAAEFAAAAAWkDCQAAAAAAAAIFAAAACWlzTWFuYWdlcgUAAAAJaXNNYW5hZ2VyBgkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAAAACWlzQ3JlYXRlZAAAAAEAAAAHYXNzZXRJZAkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABCAAAAABCQEAAAAKa2V5Q3JlYXRlZAAAAAEFAAAAB2Fzc2V0SWQHAQAAABB2ZXJpZmllZFRvU3RhdHVzAAAAAQAAAAh2ZXJpZmllZAMFAAAACHZlcmlmaWVkBQAAAA5zdGF0dXNWZXJpZmllZAUAAAAQc3RhdHVzVW52ZXJpZmllZAEAAAAPYWRkTGFiZWxBY3Rpb25zAAAAAwAAAAdhc3NldElkAAAABWxhYmVsAAAADHRocm93T25FcnJvcgQAAAAGbGFiZWxzCQEAAAAJZ2V0TGFiZWxzAAAAAAQAAAALYXNzZXRMYWJlbHMJAQAAAA5nZXRBc3NldExhYmVscwAAAAEFAAAAB2Fzc2V0SWQEAAAACmNoZWNrTGFiZWwDCQEAAAAPY29udGFpbnNFbGVtZW50AAAAAgUAAAAGbGFiZWxzBQAAAAVsYWJlbAYJAAACAAAAAQIAAAATTGFiZWwgZG9lc24ndCBleGlzdAMJAAAAAAAAAgUAAAAKY2hlY2tMYWJlbAUAAAAKY2hlY2tMYWJlbAQAAAAObmV3QXNzZXRMYWJlbHMDCQEAAAAPY29udGFpbnNFbGVtZW50AAAAAgUAAAALYXNzZXRMYWJlbHMFAAAABWxhYmVsAwUAAAAMdGhyb3dPbkVycm9yCQAAAgAAAAECAAAAHExhYmVsIGhhcyBhbHJlYWR5IGJlZW4gYWRkZWQFAAAAC2Fzc2V0TGFiZWxzCQAETQAAAAIFAAAAC2Fzc2V0TGFiZWxzBQAAAAVsYWJlbAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAAOa2V5QXNzZXRMYWJlbHMAAAABBQAAAAdhc3NldElkCQAEuQAAAAIFAAAADm5ld0Fzc2V0TGFiZWxzBQAAAANTRVAFAAAAA25pbAkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAAAAEmRlbGV0ZUxhYmVsQWN0aW9ucwAAAAMAAAAHYXNzZXRJZAAAAAVsYWJlbAAAAAx0aHJvd09uRXJyb3IEAAAAC2Fzc2V0TGFiZWxzCQEAAAAOZ2V0QXNzZXRMYWJlbHMAAAABBQAAAAdhc3NldElkBAAAAA5uZXdBc3NldExhYmVscwMJAQAAAA9jb250YWluc0VsZW1lbnQAAAACBQAAAAthc3NldExhYmVscwUAAAAFbGFiZWwJAARRAAAAAgUAAAALYXNzZXRMYWJlbHMJAQAAAAV2YWx1ZQAAAAEJAARPAAAAAgUAAAALYXNzZXRMYWJlbHMFAAAABWxhYmVsAwUAAAAMdGhyb3dPbkVycm9yCQAAAgAAAAECAAAAEkxhYmVsIHdhc24ndCBhZGRlZAUAAAALYXNzZXRMYWJlbHMJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAADmtleUFzc2V0TGFiZWxzAAAAAQUAAAAHYXNzZXRJZAkABLkAAAACBQAAAA5uZXdBc3NldExhYmVscwUAAAADU0VQBQAAAANuaWwBAAAAEnNldFZlcmlmaWVkQWN0aW9ucwAAAAIAAAAHYXNzZXRJZAAAAAh2ZXJpZmllZAQAAAAdbGFiZWxDb21tdW5pdHlWZXJpZmllZEFjdGlvbnMDBQAAAAh2ZXJpZmllZAkBAAAAD2FkZExhYmVsQWN0aW9ucwAAAAMFAAAAB2Fzc2V0SWQFAAAAFmxhYmVsQ29tbXVuaXR5VmVyaWZpZWQHCQEAAAASZGVsZXRlTGFiZWxBY3Rpb25zAAAAAwUAAAAHYXNzZXRJZAUAAAAWbGFiZWxDb21tdW5pdHlWZXJpZmllZAcJAAROAAAAAgkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkBAAAACWtleVN0YXR1cwAAAAEFAAAAB2Fzc2V0SWQJAQAAABB2ZXJpZmllZFRvU3RhdHVzAAAAAQUAAAAIdmVyaWZpZWQFAAAAA25pbAUAAAAdbGFiZWxDb21tdW5pdHlWZXJpZmllZEFjdGlvbnMBAAAAE3VwZGF0ZVRpY2tlckFjdGlvbnMAAAACAAAAB2Fzc2V0SWQAAAAGdGlja2VyBAAAAAtjaGVja1RpY2tlcgQAAAATbGlua2VkQXNzZXRJZE9yVW5pdAkABCIAAAABCQEAAAASa2V5VGlja2VyVG9Bc3NldElkAAAAAQUAAAAGdGlja2VyBAAAAA10aWNrZXJJc1ZhbGlkAwkBAAAAAiE9AAAAAgUAAAAGdGlja2VyAgAAAAADCQAAAAAAAAIFAAAAE2xpbmtlZEFzc2V0SWRPclVuaXQFAAAABHVuaXQGCQAAAAAAAAIJAQAAAAV2YWx1ZQAAAAEFAAAAE2xpbmtlZEFzc2V0SWRPclVuaXQFAAAAB2Fzc2V0SWQHAwUAAAANdGlja2VySXNWYWxpZAYJAAACAAAAAQIAAAAOSW52YWxpZCB0aWNrZXIDCQAAAAAAAAIFAAAAC2NoZWNrVGlja2VyBQAAAAtjaGVja1RpY2tlcgkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAASa2V5QXNzZXRJZFRvVGlja2VyAAAAAQUAAAAHYXNzZXRJZAUAAAAGdGlja2VyCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAABJrZXlUaWNrZXJUb0Fzc2V0SWQAAAABBQAAAAZ0aWNrZXIFAAAAB2Fzc2V0SWQFAAAAA25pbAkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4AAAAQAAAAAWkBAAAAC2NvbnN0cnVjdG9yAAAAAgAAABF1c2VyUG9vbHNDb250cmFjdAAAAAZsYWJlbHMEAAAAC2NoZWNrQ2FsbGVyCQEAAAALbXVzdE1hbmFnZXIAAAABBQAAAAFpAwkAAAAAAAACBQAAAAtjaGVja0NhbGxlcgUAAAALY2hlY2tDYWxsZXIEAAAADWNoZWNrc0FkZHJlc3MJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABCYAAAABBQAAABF1c2VyUG9vbHNDb250cmFjdAIAAAAPSW52YWxpZCBhZGRyZXNzAwkAAAAAAAACBQAAAA1jaGVja3NBZGRyZXNzBQAAAA1jaGVja3NBZGRyZXNzCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAABRrZXlVc2VyUG9vbHNDb250cmFjdAAAAAAFAAAAEXVzZXJQb29sc0NvbnRyYWN0CQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAAAlrZXlMYWJlbHMAAAAACQAEuQAAAAIJAAROAAAAAgUAAAANZGVmYXVsdExhYmVscwUAAAAGbGFiZWxzBQAAAANTRVAFAAAAA25pbAkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAAAAAWkBAAAADWFkZEFzc2V0c0xpbmsAAAADAAAAC2Ftb3VudEFzc2V0AAAACnByaWNlQXNzZXQAAAAHbHBBc3NldAQAAAALY2hlY2tDYWxsZXIJAQAAAAltdXN0QWRtaW4AAAABBQAAAAFpAwkAAAAAAAACBQAAAAtjaGVja0NhbGxlcgUAAAALY2hlY2tDYWxsZXIJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAAIGtleUFtb3VudEFuZFByaWNlQXNzZXRzVG9McEFzc2V0AAAAAgUAAAALYW1vdW50QXNzZXQFAAAACnByaWNlQXNzZXQFAAAAB2xwQXNzZXQJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAAIGtleUxwQXNzZXRUb0Ftb3VudEFuZFByaWNlQXNzZXRzAAAAAQUAAAAHbHBBc3NldAkABLkAAAACCQAETAAAAAIFAAAAC2Ftb3VudEFzc2V0CQAETAAAAAIFAAAACnByaWNlQXNzZXQFAAAAA25pbAUAAAADU0VQBQAAAANuaWwJAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAAAAAWkBAAAAGGluY3JlYXNlQXNzZXRQb29sc051bWJlcgAAAAEAAAAHYXNzZXRJZAQAAAALY2hlY2tDYWxsZXIJAQAAAAltdXN0QWRtaW4AAAABBQAAAAFpAwkAAAAAAAACBQAAAAtjaGVja0NhbGxlcgUAAAALY2hlY2tDYWxsZXIEAAAAE2Fzc2V0UG9vbHNOdW1iZXJLZXkJAQAAABNrZXlBc3NldFBvb2xzTnVtYmVyAAAAAQUAAAAHYXNzZXRJZAQAAAAQYXNzZXRQb29sc051bWJlcgkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABB8AAAABBQAAABNhc3NldFBvb2xzTnVtYmVyS2V5AAAAAAAAAAAACQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAABNhc3NldFBvb2xzTnVtYmVyS2V5CQAAZAAAAAIFAAAAEGFzc2V0UG9vbHNOdW1iZXIAAAAAAAAAAAEFAAAAA25pbAkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4AAAABaQEAAAALY3JlYXRlTGFiZWwAAAABAAAABWxhYmVsBAAAAAZsYWJlbHMJAQAAAAlnZXRMYWJlbHMAAAAABAAAAAtjaGVja0NhbGxlcgkBAAAAC211c3RNYW5hZ2VyAAAAAQUAAAABaQMJAAAAAAAAAgUAAAALY2hlY2tDYWxsZXIFAAAAC2NoZWNrQ2FsbGVyBAAAAApjaGVja0xhYmVsCQAETAAAAAIDCQEAAAABIQAAAAEJAQAAAAhjb250YWlucwAAAAIFAAAABWxhYmVsBQAAAANTRVAGCQAAAgAAAAECAAAAEkludmFsaWQgbGFiZWwgbmFtZQkABEwAAAACAwkBAAAAASEAAAABCQEAAAAPY29udGFpbnNFbGVtZW50AAAAAgUAAAAGbGFiZWxzBQAAAAVsYWJlbAYJAAACAAAAAQIAAAAMTGFiZWwgZXhpc3RzBQAAAANuaWwDCQAAAAAAAAIFAAAACmNoZWNrTGFiZWwFAAAACmNoZWNrTGFiZWwJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAACWtleUxhYmVscwAAAAAJAAS5AAAAAgkABE0AAAACBQAAAAZsYWJlbHMFAAAABWxhYmVsBQAAAANTRVAFAAAAA25pbAkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAAAAAWkBAAAACWRyb3BMYWJlbAAAAAEAAAAFbGFiZWwEAAAABmxhYmVscwkBAAAACWdldExhYmVscwAAAAAEAAAAC2NoZWNrQ2FsbGVyCQEAAAALbXVzdE1hbmFnZXIAAAABBQAAAAFpAwkAAAAAAAACBQAAAAtjaGVja0NhbGxlcgUAAAALY2hlY2tDYWxsZXIEAAAACmNoZWNrTGFiZWwDCQEAAAAPY29udGFpbnNFbGVtZW50AAAAAgUAAAAGbGFiZWxzBQAAAAVsYWJlbAYJAAACAAAAAQIAAAATTGFiZWwgZG9lc24ndCBleGlzdAMJAAAAAAAAAgUAAAAKY2hlY2tMYWJlbAUAAAAKY2hlY2tMYWJlbAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAAJa2V5TGFiZWxzAAAAAAkABLkAAAACCQAEUQAAAAIFAAAABmxhYmVscwkBAAAABXZhbHVlAAAAAQkABE8AAAACBQAAAAZsYWJlbHMFAAAABWxhYmVsBQAAAANTRVAFAAAAA25pbAkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAAAAAWkBAAAACGFkZExhYmVsAAAAAgAAAAdhc3NldElkAAAABWxhYmVsBAAAAAtjaGVja0NhbGxlcgkBAAAACW11c3RBZG1pbgAAAAEFAAAAAWkDCQAAAAAAAAIFAAAAC2NoZWNrQ2FsbGVyBQAAAAtjaGVja0NhbGxlcgkBAAAAD2FkZExhYmVsQWN0aW9ucwAAAAMFAAAAB2Fzc2V0SWQFAAAABWxhYmVsBgkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4AAAABaQEAAAALZGVsZXRlTGFiZWwAAAACAAAAB2Fzc2V0SWQAAAAFbGFiZWwEAAAAC2NoZWNrQ2FsbGVyCQEAAAAJbXVzdEFkbWluAAAAAQUAAAABaQMJAAAAAAAAAgUAAAALY2hlY2tDYWxsZXIFAAAAC2NoZWNrQ2FsbGVyCQEAAAASZGVsZXRlTGFiZWxBY3Rpb25zAAAAAwUAAAAHYXNzZXRJZAUAAAAFbGFiZWwGCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgAAAAFpAQAAAAx1cGRhdGVUaWNrZXIAAAACAAAAB2Fzc2V0SWQAAAAGdGlja2VyBAAAAAtjaGVja0NhbGxlcgkBAAAACW11c3RBZG1pbgAAAAEFAAAAAWkDCQAAAAAAAAIFAAAAC2NoZWNrQ2FsbGVyBQAAAAtjaGVja0NhbGxlcgQAAAAKY2hlY2tBc3NldAMJAQAAAAlpc0NyZWF0ZWQAAAABBQAAAAdhc3NldElkBgkBAAAADHRocm93Tm9Bc3NldAAAAAADCQAAAAAAAAIFAAAACmNoZWNrQXNzZXQFAAAACmNoZWNrQXNzZXQJAQAAABN1cGRhdGVUaWNrZXJBY3Rpb25zAAAAAgUAAAAHYXNzZXRJZAUAAAAGdGlja2VyCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4AAAABaQEAAAAMZGVsZXRlVGlja2VyAAAAAQAAAAdhc3NldElkBAAAAAtjaGVja0NhbGxlcgkBAAAACW11c3RBZG1pbgAAAAEFAAAAAWkDCQAAAAAAAAIFAAAAC2NoZWNrQ2FsbGVyBQAAAAtjaGVja0NhbGxlcgQAAAAGdGlja2VyCQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQiAAAAAQkBAAAAEmtleUFzc2V0SWRUb1RpY2tlcgAAAAEFAAAAB2Fzc2V0SWQCAAAADUludmFsaWQgYXNzZXQJAARMAAAAAgkBAAAAC0RlbGV0ZUVudHJ5AAAAAQkBAAAAEmtleUFzc2V0SWRUb1RpY2tlcgAAAAEFAAAAB2Fzc2V0SWQJAARMAAAAAgkBAAAAC0RlbGV0ZUVudHJ5AAAAAQkBAAAAEmtleVRpY2tlclRvQXNzZXRJZAAAAAEFAAAABnRpY2tlcgUAAAADbmlsCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgAAAAFpAQAAAA5jcmVhdGVPclVwZGF0ZQAAAAQAAAAHYXNzZXRJZAAAAAZ0aWNrZXIAAAAEbG9nbwAAAAh2ZXJpZmllZAQAAAALY2hlY2tDYWxsZXIJAQAAAAltdXN0QWRtaW4AAAABBQAAAAFpAwkAAAAAAAACBQAAAAtjaGVja0NhbGxlcgUAAAALY2hlY2tDYWxsZXIEAAAADGNoZWNrQXNzZXRJZAkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAD7AAAAAEJAAJZAAAAAQUAAAAHYXNzZXRJZAIAAAAQSW52YWxpZCBhc3NldCBJRAMJAAAAAAAAAgUAAAAMY2hlY2tBc3NldElkBQAAAAxjaGVja0Fzc2V0SWQEAAAADGlzQ3JlYXRlZE5vdwkBAAAAASEAAAABCQEAAAAJaXNDcmVhdGVkAAAAAQUAAAAHYXNzZXRJZAMJAAAAAAAAAgUAAAAMaXNDcmVhdGVkTm93BQAAAAxpc0NyZWF0ZWROb3cEAAAADnNldExvZ29BY3Rpb25z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RW50cnkAAAACCQEAAAAPa2V5QWRtaW5QdWJLZXlzAAAAAAkABLkAAAACBQAAAAxhZG1pblB1YktleXMFAAAAA1NFUAUAAAADbmlsCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgAAAAFpAQAAAApzZXRNYW5hZ2VyAAAAAQAAABdwZW5kaW5nTWFuYWdlclB1YmxpY0tleQQAAAALY2hlY2tDYWxsZXIJAQAAAAttdXN0TWFuYWdlcgAAAAEFAAAAAWkDCQAAAAAAAAIFAAAAC2NoZWNrQ2FsbGVyBQAAAAtjaGVja0NhbGxlcgQAAAAVY2hlY2tNYW5hZ2VyUHVibGljS2V5CQACWQAAAAEFAAAAF3BlbmRpbmdNYW5hZ2VyUHVibGljS2V5AwkAAAAAAAACBQAAABVjaGVja01hbmFnZXJQdWJsaWNLZXkFAAAAFWNoZWNrTWFuYWdlclB1YmxpY0tleQkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAAaa2V5UGVuZGluZ01hbmFnZXJQdWJsaWNLZXkAAAAABQAAABdwZW5kaW5nTWFuYWdlclB1YmxpY0tleQUAAAADbmlsCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4AAAABaQEAAAAOY29uZmlybU1hbmFnZXIAAAAABAAAAAJwbQkBAAAAHXBlbmRpbmdNYW5hZ2VyUHVibGljS2V5T3JVbml0AAAAAAQAAAAFaGFzUE0DCQEAAAAJaXNEZWZpbmVkAAAAAQUAAAACcG0GCQAAAgAAAAECAAAAEk5vIHBlbmRpbmcgbWFuYWdlcgMJAAAAAAAAAgUAAAAFaGFzUE0FAAAABWhhc1BNBAAAAAdjaGVja1BNAwkAAAAAAAACCAUAAAABaQAAAA9jYWxsZXJQdWJsaWNLZXkJAQAAAAV2YWx1ZQAAAAEFAAAAAnBtBgkAAAIAAAABAgAAABtZb3UgYXJlIG5vdCBwZW5kaW5nIG1hbmFnZXIDCQAAAAAAAAIFAAAAB2NoZWNrUE0FAAAAB2NoZWNrUE0JAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAAE2tleU1hbmFnZXJQdWJsaWNLZXkAAAAACQACWAAAAAEJAQAAAAV2YWx1ZQAAAAEFAAAAAnBtCQAETAAAAAIJAQAAAAtEZWxldGVFbnRyeQAAAAEJAQAAABprZXlQZW5kaW5nTWFuYWdlclB1YmxpY0tleQAAAAAFAAAAA25pbAkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAAAAAWkBAAAAEmlzVmVyaWZpZWRSRUFET05MWQAAAAEAAAAHYXNzZXRJZAkABRQAAAACBQAAAANuaWwJAQAAAAppc1ZlcmlmaWVkAAAAAQUAAAAHYXNzZXRJZAAAAAEAAAACdHgBAAAABnZlcmlmeQAAAAAEAAAAD3RhcmdldFB1YmxpY0tleQQAAAAHJG1hdGNoMAkBAAAAFm1hbmFnZXJQdWJsaWNLZXlPclVuaXQAAAAAAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAApCeXRlVmVjdG9yBAAAAAJwawUAAAAHJG1hdGNoMAUAAAACcGsDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAABFVuaXQIBQAAAAJ0eAAAAA9zZW5kZXJQdWJsaWNLZXkJAAACAAAAAQIAAAALTWF0Y2ggZXJyb3IJAAH0AAAAAwgFAAAAAnR4AAAACWJvZHlCeXRlcwkAAZEAAAACCAUAAAACdHgAAAAGcHJvb2ZzAAAAAAAAAAAABQAAAA90YXJnZXRQdWJsaWNLZXmNVxzL", "height": 2008250, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 9Gq7wffDneikUcXQp374y2voaYE7y2aXbTCS9xLQwv2 Next: HLrdFpXRNpLHu8hmniA4zvZ2ecxbyn9coMKwEMPKtgge Diff:
OldNewDifferences
182182 }
183183
184184
185+func updateTickerActions (assetId,ticker) = {
186+ let checkTicker = {
187+ let linkedAssetIdOrUnit = getString(keyTickerToAssetId(ticker))
188+ let tickerIsValid = if ((ticker != ""))
189+ then if ((linkedAssetIdOrUnit == unit))
190+ then true
191+ else (value(linkedAssetIdOrUnit) == assetId)
192+ else false
193+ if (tickerIsValid)
194+ then true
195+ else throw("Invalid ticker")
196+ }
197+ if ((checkTicker == checkTicker))
198+ then [StringEntry(keyAssetIdToTicker(assetId), ticker), StringEntry(keyTickerToAssetId(ticker), assetId)]
199+ else throw("Strict value is not equal to itself.")
200+ }
201+
202+
185203 @Callable(i)
186204 func constructor (userPoolsContract,labels) = {
187205 let checkCaller = mustManager(i)
284302 let checkCaller = mustAdmin(i)
285303 if ((checkCaller == checkCaller))
286304 then {
287- let checkTicker = {
288- let linkedAssetIdOrUnit = getString(keyTickerToAssetId(ticker))
289- let tickerIsValid = if ((ticker != ""))
290- then if ((linkedAssetIdOrUnit == unit))
291- then true
292- else (value(linkedAssetIdOrUnit) == assetId)
293- else false
294- if (tickerIsValid)
295- then true
296- else throw("Invalid ticker")
297- }
298- if ((checkTicker == checkTicker))
299- then [StringEntry(keyAssetIdToTicker(assetId), ticker), StringEntry(keyTickerToAssetId(ticker), assetId)]
305+ let checkAsset = if (isCreated(assetId))
306+ then true
307+ else throwNoAsset()
308+ if ((checkAsset == checkAsset))
309+ then updateTickerActions(assetId, ticker)
300310 else throw("Strict value is not equal to itself.")
301311 }
302312 else throw("Strict value is not equal to itself.")
331341 let setLogoActions = if ((logo == ""))
332342 then nil
333343 else [StringEntry(keyLogo(assetId), logo)]
334- $Tuple2((([BooleanEntry(keyCreated(assetId), true), StringEntry(keyTicker(assetId), ticker)] ++ setLogoActions) ++ setVerifiedActions(assetId, verified)), isCreatedNow)
344+ $Tuple2(((([BooleanEntry(keyCreated(assetId), true)] ++ updateTickerActions(assetId, ticker)) ++ setLogoActions) ++ setVerifiedActions(assetId, verified)), isCreatedNow)
335345 }
336346 else throw("Strict value is not equal to itself.")
337347 }
338348 else throw("Strict value is not equal to itself.")
339349 }
340- else throw("Strict value is not equal to itself.")
341- }
342-
343-
344-
345-@Callable(i)
346-func setTicker (assetId,ticker) = {
347- let checks = [mustAdmin(i), if (isCreated(assetId))
348- then true
349- else throwNoAsset()]
350- if ((checks == checks))
351- then [StringEntry(keyTicker(assetId), ticker)]
352350 else throw("Strict value is not equal to itself.")
353351 }
354352
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 keyCreated (assetId) = (("created_<" + assetId) + ">")
3737
3838
3939 func keyLogo (assetId) = (("logo_<" + assetId) + ">")
4040
4141
4242 func keyTicker (assetId) = (("ticker_<" + assetId) + ">")
4343
4444
4545 func keyStatus (assetId) = (("status_<" + assetId) + ">")
4646
4747
4848 func keyAssetPoolsNumber (assetId) = makeString(["%s%s", "pools", assetId], SEP)
4949
5050
5151 func keyTickerToAssetId (ticker) = makeString(["%s%s", "ticker2assetId", ticker], SEP)
5252
5353
5454 func keyAssetIdToTicker (assetId) = makeString(["%s%s", "assetId2ticker", assetId], SEP)
5555
5656
5757 func keyAmountAndPriceAssetsToLpAsset (amountAsset,priceAsset) = makeString(["%s%s%s", "amountAndPriceAssetsToLpAsset", amountAsset, priceAsset], SEP)
5858
5959
6060 func keyLpAssetToAmountAndPriceAssets (lpAsset) = makeString(["%s%s", "lpAssetToAmountAndPriceAssets", lpAsset], SEP)
6161
6262
6363 func keyAssetLabels (assetId) = makeString(["%s%s", "labels", assetId], SEP)
6464
6565
6666 func keyLabels () = makeString(["%s", "labels"], SEP)
6767
6868
6969 func isVerified (assetId) = (valueOrElse(getInteger(keyStatus(assetId)), statusUnverified) == statusVerified)
7070
7171
7272 func getLabels () = match getString(keyLabels()) {
7373 case s: String =>
7474 if ((size(s) == 0))
7575 then nil
7676 else split(s, SEP)
7777 case _ =>
7878 nil
7979 }
8080
8181
8282 func getAssetLabels (assetId) = match getString(keyAssetLabels(assetId)) {
8383 case s: String =>
8484 if ((size(s) == 0))
8585 then nil
8686 else split(s, SEP)
8787 case _ =>
8888 nil
8989 }
9090
9191
9292 func managerPublicKeyOrUnit () = match getString(keyManagerPublicKey()) {
9393 case s: String =>
9494 fromBase58String(s)
9595 case _: Unit =>
9696 unit
9797 case _ =>
9898 throw("Match error")
9999 }
100100
101101
102102 func pendingManagerPublicKeyOrUnit () = match getString(keyPendingManagerPublicKey()) {
103103 case s: String =>
104104 fromBase58String(s)
105105 case _: Unit =>
106106 unit
107107 case _ =>
108108 throw("Match error")
109109 }
110110
111111
112112 func mustManager (i) = match managerPublicKeyOrUnit() {
113113 case pk: ByteVector =>
114114 if ((i.callerPublicKey == pk))
115115 then true
116116 else throwPD()
117117 case _: Unit =>
118118 if ((i.caller == this))
119119 then true
120120 else throwPD()
121121 case _ =>
122122 throw("Match error")
123123 }
124124
125125
126126 func mustAdmin (i) = {
127127 let adminPKs = split(valueOrElse(getString(keyAdminPubKeys()), EMPTY), SEP)
128128 if (containsElement(adminPKs, toBase58String(i.callerPublicKey)))
129129 then true
130130 else {
131131 let isManager = mustManager(i)
132132 if ((isManager == isManager))
133133 then true
134134 else throw("Strict value is not equal to itself.")
135135 }
136136 }
137137
138138
139139 func isCreated (assetId) = valueOrElse(getBoolean(keyCreated(assetId)), false)
140140
141141
142142 func verifiedToStatus (verified) = if (verified)
143143 then statusVerified
144144 else statusUnverified
145145
146146
147147 func addLabelActions (assetId,label,throwOnError) = {
148148 let labels = getLabels()
149149 let assetLabels = getAssetLabels(assetId)
150150 let checkLabel = if (containsElement(labels, label))
151151 then true
152152 else throw("Label doesn't exist")
153153 if ((checkLabel == checkLabel))
154154 then {
155155 let newAssetLabels = if (containsElement(assetLabels, label))
156156 then if (throwOnError)
157157 then throw("Label has already been added")
158158 else assetLabels
159159 else (assetLabels :+ label)
160160 [StringEntry(keyAssetLabels(assetId), makeString(newAssetLabels, SEP))]
161161 }
162162 else throw("Strict value is not equal to itself.")
163163 }
164164
165165
166166 func deleteLabelActions (assetId,label,throwOnError) = {
167167 let assetLabels = getAssetLabels(assetId)
168168 let newAssetLabels = if (containsElement(assetLabels, label))
169169 then removeByIndex(assetLabels, value(indexOf(assetLabels, label)))
170170 else if (throwOnError)
171171 then throw("Label wasn't added")
172172 else assetLabels
173173 [StringEntry(keyAssetLabels(assetId), makeString(newAssetLabels, SEP))]
174174 }
175175
176176
177177 func setVerifiedActions (assetId,verified) = {
178178 let labelCommunityVerifiedActions = if (verified)
179179 then addLabelActions(assetId, labelCommunityVerified, false)
180180 else deleteLabelActions(assetId, labelCommunityVerified, false)
181181 ([IntegerEntry(keyStatus(assetId), verifiedToStatus(verified))] ++ labelCommunityVerifiedActions)
182182 }
183183
184184
185+func updateTickerActions (assetId,ticker) = {
186+ let checkTicker = {
187+ let linkedAssetIdOrUnit = getString(keyTickerToAssetId(ticker))
188+ let tickerIsValid = if ((ticker != ""))
189+ then if ((linkedAssetIdOrUnit == unit))
190+ then true
191+ else (value(linkedAssetIdOrUnit) == assetId)
192+ else false
193+ if (tickerIsValid)
194+ then true
195+ else throw("Invalid ticker")
196+ }
197+ if ((checkTicker == checkTicker))
198+ then [StringEntry(keyAssetIdToTicker(assetId), ticker), StringEntry(keyTickerToAssetId(ticker), assetId)]
199+ else throw("Strict value is not equal to itself.")
200+ }
201+
202+
185203 @Callable(i)
186204 func constructor (userPoolsContract,labels) = {
187205 let checkCaller = mustManager(i)
188206 if ((checkCaller == checkCaller))
189207 then {
190208 let checksAddress = valueOrErrorMessage(addressFromString(userPoolsContract), "Invalid address")
191209 if ((checksAddress == checksAddress))
192210 then [StringEntry(keyUserPoolsContract(), userPoolsContract), StringEntry(keyLabels(), makeString((defaultLabels ++ labels), SEP))]
193211 else throw("Strict value is not equal to itself.")
194212 }
195213 else throw("Strict value is not equal to itself.")
196214 }
197215
198216
199217
200218 @Callable(i)
201219 func addAssetsLink (amountAsset,priceAsset,lpAsset) = {
202220 let checkCaller = mustAdmin(i)
203221 if ((checkCaller == checkCaller))
204222 then [StringEntry(keyAmountAndPriceAssetsToLpAsset(amountAsset, priceAsset), lpAsset), StringEntry(keyLpAssetToAmountAndPriceAssets(lpAsset), makeString([amountAsset, priceAsset], SEP))]
205223 else throw("Strict value is not equal to itself.")
206224 }
207225
208226
209227
210228 @Callable(i)
211229 func increaseAssetPoolsNumber (assetId) = {
212230 let checkCaller = mustAdmin(i)
213231 if ((checkCaller == checkCaller))
214232 then {
215233 let assetPoolsNumberKey = keyAssetPoolsNumber(assetId)
216234 let assetPoolsNumber = valueOrElse(getInteger(assetPoolsNumberKey), 0)
217235 [IntegerEntry(assetPoolsNumberKey, (assetPoolsNumber + 1))]
218236 }
219237 else throw("Strict value is not equal to itself.")
220238 }
221239
222240
223241
224242 @Callable(i)
225243 func createLabel (label) = {
226244 let labels = getLabels()
227245 let checkCaller = mustManager(i)
228246 if ((checkCaller == checkCaller))
229247 then {
230248 let checkLabel = [if (!(contains(label, SEP)))
231249 then true
232250 else throw("Invalid label name"), if (!(containsElement(labels, label)))
233251 then true
234252 else throw("Label exists")]
235253 if ((checkLabel == checkLabel))
236254 then [StringEntry(keyLabels(), makeString((labels :+ label), SEP))]
237255 else throw("Strict value is not equal to itself.")
238256 }
239257 else throw("Strict value is not equal to itself.")
240258 }
241259
242260
243261
244262 @Callable(i)
245263 func dropLabel (label) = {
246264 let labels = getLabels()
247265 let checkCaller = mustManager(i)
248266 if ((checkCaller == checkCaller))
249267 then {
250268 let checkLabel = if (containsElement(labels, label))
251269 then true
252270 else throw("Label doesn't exist")
253271 if ((checkLabel == checkLabel))
254272 then [StringEntry(keyLabels(), makeString(removeByIndex(labels, value(indexOf(labels, label))), SEP))]
255273 else throw("Strict value is not equal to itself.")
256274 }
257275 else throw("Strict value is not equal to itself.")
258276 }
259277
260278
261279
262280 @Callable(i)
263281 func addLabel (assetId,label) = {
264282 let checkCaller = mustAdmin(i)
265283 if ((checkCaller == checkCaller))
266284 then addLabelActions(assetId, label, true)
267285 else throw("Strict value is not equal to itself.")
268286 }
269287
270288
271289
272290 @Callable(i)
273291 func deleteLabel (assetId,label) = {
274292 let checkCaller = mustAdmin(i)
275293 if ((checkCaller == checkCaller))
276294 then deleteLabelActions(assetId, label, true)
277295 else throw("Strict value is not equal to itself.")
278296 }
279297
280298
281299
282300 @Callable(i)
283301 func updateTicker (assetId,ticker) = {
284302 let checkCaller = mustAdmin(i)
285303 if ((checkCaller == checkCaller))
286304 then {
287- let checkTicker = {
288- let linkedAssetIdOrUnit = getString(keyTickerToAssetId(ticker))
289- let tickerIsValid = if ((ticker != ""))
290- then if ((linkedAssetIdOrUnit == unit))
291- then true
292- else (value(linkedAssetIdOrUnit) == assetId)
293- else false
294- if (tickerIsValid)
295- then true
296- else throw("Invalid ticker")
297- }
298- if ((checkTicker == checkTicker))
299- then [StringEntry(keyAssetIdToTicker(assetId), ticker), StringEntry(keyTickerToAssetId(ticker), assetId)]
305+ let checkAsset = if (isCreated(assetId))
306+ then true
307+ else throwNoAsset()
308+ if ((checkAsset == checkAsset))
309+ then updateTickerActions(assetId, ticker)
300310 else throw("Strict value is not equal to itself.")
301311 }
302312 else throw("Strict value is not equal to itself.")
303313 }
304314
305315
306316
307317 @Callable(i)
308318 func deleteTicker (assetId) = {
309319 let checkCaller = mustAdmin(i)
310320 if ((checkCaller == checkCaller))
311321 then {
312322 let ticker = valueOrErrorMessage(getString(keyAssetIdToTicker(assetId)), "Invalid asset")
313323 [DeleteEntry(keyAssetIdToTicker(assetId)), DeleteEntry(keyTickerToAssetId(ticker))]
314324 }
315325 else throw("Strict value is not equal to itself.")
316326 }
317327
318328
319329
320330 @Callable(i)
321331 func createOrUpdate (assetId,ticker,logo,verified) = {
322332 let checkCaller = mustAdmin(i)
323333 if ((checkCaller == checkCaller))
324334 then {
325335 let checkAssetId = valueOrErrorMessage(assetInfo(fromBase58String(assetId)), "Invalid asset ID")
326336 if ((checkAssetId == checkAssetId))
327337 then {
328338 let isCreatedNow = !(isCreated(assetId))
329339 if ((isCreatedNow == isCreatedNow))
330340 then {
331341 let setLogoActions = if ((logo == ""))
332342 then nil
333343 else [StringEntry(keyLogo(assetId), logo)]
334- $Tuple2((([BooleanEntry(keyCreated(assetId), true), StringEntry(keyTicker(assetId), ticker)] ++ setLogoActions) ++ setVerifiedActions(assetId, verified)), isCreatedNow)
344+ $Tuple2(((([BooleanEntry(keyCreated(assetId), true)] ++ updateTickerActions(assetId, ticker)) ++ setLogoActions) ++ setVerifiedActions(assetId, verified)), isCreatedNow)
335345 }
336346 else throw("Strict value is not equal to itself.")
337347 }
338348 else throw("Strict value is not equal to itself.")
339349 }
340- else throw("Strict value is not equal to itself.")
341- }
342-
343-
344-
345-@Callable(i)
346-func setTicker (assetId,ticker) = {
347- let checks = [mustAdmin(i), if (isCreated(assetId))
348- then true
349- else throwNoAsset()]
350- if ((checks == checks))
351- then [StringEntry(keyTicker(assetId), ticker)]
352350 else throw("Strict value is not equal to itself.")
353351 }
354352
355353
356354
357355 @Callable(i)
358356 func setLogo (assetId,logo) = {
359357 let checks = [mustAdmin(i), if (isCreated(assetId))
360358 then true
361359 else throwNoAsset()]
362360 if ((checks == checks))
363361 then [StringEntry(keyLogo(assetId), logo)]
364362 else throw("Strict value is not equal to itself.")
365363 }
366364
367365
368366
369367 @Callable(i)
370368 func setVerified (assetId,verified) = {
371369 let checks = [mustAdmin(i), if (isCreated(assetId))
372370 then true
373371 else throwNoAsset()]
374372 if ((checks == checks))
375373 then {
376374 let priceAssets = match invoke(addressFromStringValue(getStringValue(keyUserPoolsContract())), "priceAssetsREADONLY", nil, nil) {
377375 case assets: List[Any] =>
378376 let checkPriceAssetsSize = if ((size(assets) > 0))
379377 then true
380378 else throw("Invalid price assets")
381379 if ((checkPriceAssetsSize == checkPriceAssetsSize))
382380 then assets
383381 else throw("Strict value is not equal to itself.")
384382 case _ =>
385383 throw("Incorrect invoke result")
386384 }
387385 func cb (acc,item) = {
388386 let priceAssetId = match item {
389387 case s: String =>
390388 s
391389 case _ =>
392390 throw("Invalid price asset")
393391 }
394392 let lpAssetIdOrUnit = getString(keyAmountAndPriceAssetsToLpAsset(assetId, priceAssetId))
395393 let action = if ((lpAssetIdOrUnit == unit))
396394 then nil
397395 else setVerifiedActions(value(lpAssetIdOrUnit), verified)
398396 (acc ++ action)
399397 }
400398
401399 let tokensActions = {
402400 let $l = priceAssets
403401 let $s = size($l)
404402 let $acc0 = setVerifiedActions(assetId, verified)
405403 func $f0_1 ($a,$i) = if (($i >= $s))
406404 then $a
407405 else cb($a, $l[$i])
408406
409407 func $f0_2 ($a,$i) = if (($i >= $s))
410408 then $a
411409 else throw("List size exceeds 10")
412410
413411 $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
414412 }
415413 $Tuple2(tokensActions, unit)
416414 }
417415 else throw("Strict value is not equal to itself.")
418416 }
419417
420418
421419
422420 @Callable(i)
423421 func setAdmins (adminPubKeys) = {
424422 let checkCaller = mustManager(i)
425423 if ((checkCaller == checkCaller))
426424 then [StringEntry(keyAdminPubKeys(), makeString(adminPubKeys, SEP))]
427425 else throw("Strict value is not equal to itself.")
428426 }
429427
430428
431429
432430 @Callable(i)
433431 func setManager (pendingManagerPublicKey) = {
434432 let checkCaller = mustManager(i)
435433 if ((checkCaller == checkCaller))
436434 then {
437435 let checkManagerPublicKey = fromBase58String(pendingManagerPublicKey)
438436 if ((checkManagerPublicKey == checkManagerPublicKey))
439437 then [StringEntry(keyPendingManagerPublicKey(), pendingManagerPublicKey)]
440438 else throw("Strict value is not equal to itself.")
441439 }
442440 else throw("Strict value is not equal to itself.")
443441 }
444442
445443
446444
447445 @Callable(i)
448446 func confirmManager () = {
449447 let pm = pendingManagerPublicKeyOrUnit()
450448 let hasPM = if (isDefined(pm))
451449 then true
452450 else throw("No pending manager")
453451 if ((hasPM == hasPM))
454452 then {
455453 let checkPM = if ((i.callerPublicKey == value(pm)))
456454 then true
457455 else throw("You are not pending manager")
458456 if ((checkPM == checkPM))
459457 then [StringEntry(keyManagerPublicKey(), toBase58String(value(pm))), DeleteEntry(keyPendingManagerPublicKey())]
460458 else throw("Strict value is not equal to itself.")
461459 }
462460 else throw("Strict value is not equal to itself.")
463461 }
464462
465463
466464
467465 @Callable(i)
468466 func isVerifiedREADONLY (assetId) = $Tuple2(nil, isVerified(assetId))
469467
470468
471469 @Verifier(tx)
472470 func verify () = {
473471 let targetPublicKey = match managerPublicKeyOrUnit() {
474472 case pk: ByteVector =>
475473 pk
476474 case _: Unit =>
477475 tx.senderPublicKey
478476 case _ =>
479477 throw("Match error")
480478 }
481479 sigVerify(tx.bodyBytes, tx.proofs[0], targetPublicKey)
482480 }
483481

github/deemru/w8io/873ac7e 
51.87 ms