tx · 3aHFLQ2yB9WpvoyyN4zSmxaCMSNkUYS4ikethhKN7Jxu

3MxGMedjXYvv9g6J4ukeNzf9nLnhH4GfwEc:  -0.02000000 Waves

2023.03.16 17:02 [2492668] smart account 3MxGMedjXYvv9g6J4ukeNzf9nLnhH4GfwEc > SELF 0.00000000 Waves

{ "type": 13, "id": "3aHFLQ2yB9WpvoyyN4zSmxaCMSNkUYS4ikethhKN7Jxu", "fee": 2000000, "feeAssetId": null, "timestamp": 1678975352230, "version": 2, "chainId": 84, "sender": "3MxGMedjXYvv9g6J4ukeNzf9nLnhH4GfwEc", "senderPublicKey": "4dpnNkrNxhHuSEo6iCZRN8JfLAwMDWWxvkJPEvJeBmae", "proofs": [ "5oVMy6Dbz7KsFJdCRnMR8QsekYq6ZW59zHuFU8XPSkyZZ2Cx7CcXaNhtuzqBMtSTToJhq5JsGdcP5CQikQhLHX71" ], "script": "base64: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TWFuYWdlcgYJAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQAAAAlpc0NyZWF0ZWQAAAABAAAAB2Fzc2V0SWQJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQgAAAAAQkBAAAACmtleUNyZWF0ZWQAAAABBQAAAAdhc3NldElkBwEAAAAQdmVyaWZpZWRUb1N0YXR1cwAAAAEAAAAIdmVyaWZpZWQDBQAAAAh2ZXJpZmllZAUAAAAOc3RhdHVzVmVyaWZpZWQFAAAAEHN0YXR1c1VudmVyaWZpZWQBAAAAD2FkZExhYmVsQWN0aW9ucwAAAAMAAAAHYXNzZXRJZAAAAAVsYWJlbAAAAAx0aHJvd09uRXJyb3IEAAAABmxhYmVscwkBAAAACWdldExhYmVscwAAAAAEAAAAC2Fzc2V0TGFiZWxzCQEAAAAOZ2V0QXNzZXRMYWJlbHMAAAABBQAAAAdhc3NldElkBAAAAApjaGVja0xhYmVsAwkBAAAAD2NvbnRhaW5zRWxlbWVudAAAAAIFAAAABmxhYmVscwUAAAAFbGFiZWwGCQAAAgAAAAECAAAAE0xhYmVsIGRvZXNuJ3QgZXhpc3QDCQAAAAAAAAIFAAAACmNoZWNrTGFiZWwFAAAACmNoZWNrTGFiZWwEAAAADm5ld0Fzc2V0TGFiZWxzAwkBAAAAD2NvbnRhaW5zRWxlbWVudAAAAAIFAAAAC2Fzc2V0TGFiZWxzBQAAAAVsYWJlbAMFAAAADHRocm93T25FcnJvcgkAAAIAAAABAgAAABxMYWJlbCBoYXMgYWxyZWFkeSBiZWVuIGFkZGVkBQAAAAthc3NldExhYmVscwkABE0AAAACBQAAAAthc3NldExhYmVscwUAAAAFbGFiZWwJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAADmtleUFzc2V0TGFiZWxzAAAAAQUAAAAHYXNzZXRJZAkABLkAAAACBQAAAA5uZXdBc3NldExhYmVscwUAAAADU0VQBQAAAANuaWwJAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQAAABJkZWxldGVMYWJlbEFjdGlvbnMAAAADAAAAB2Fzc2V0SWQAAAAFbGFiZWwAAAAMdGhyb3dPbkVycm9yBAAAAAthc3NldExhYmVscwkBAAAADmdldEFzc2V0TGFiZWxzAAAAAQUAAAAHYXNzZXRJZAQAAAAObmV3QXNzZXRMYWJlbHMDCQEAAAAPY29udGFpbnNFbGVtZW50AAAAAgUAAAALYXNzZXRMYWJlbHMFAAAABWxhYmVsCQAEUQAAAAIFAAAAC2Fzc2V0TGFiZWxzCQEAAAAFdmFsdWUAAAABCQAETwAAAAIFAAAAC2Fzc2V0TGFiZWxzBQAAAAVsYWJlbAMFAAAADHRocm93T25FcnJvcgkAAAIAAAABAgAAABJMYWJlbCB3YXNuJ3QgYWRkZWQFAAAAC2Fzc2V0TGFiZWxzCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAAA5rZXlBc3NldExhYmVscwAAAAEFAAAAB2Fzc2V0SWQJAAS5AAAAAgUAAAAObmV3QXNzZXRMYWJlbHMFAAAAA1NFUAUAAAADbmlsAQAAABJzZXRWZXJpZmllZEFjdGlvbnMAAAACAAAAB2Fzc2V0SWQAAAAIdmVyaWZpZWQEAAAAHWxhYmVsQ29tbXVuaXR5VmVyaWZpZWRBY3Rpb25zAwUAAAAIdmVyaWZpZWQJAQAAAA9hZGRMYWJlbEFjdGlvbnMAAAADBQAAAAdhc3NldElkBQAAABZsYWJlbENvbW11bml0eVZlcmlmaWVkBwkBAAAAEmRlbGV0ZUxhYmVsQWN0aW9ucwAAAAMFAAAAB2Fzc2V0SWQFAAAAFmxhYmVsQ29tbXVuaXR5VmVyaWZpZWQHCQAETgAAAAIJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAAAlrZXlTdGF0dXMAAAABBQAAAAdhc3NldElkCQEAAAAQdmVyaWZpZWRUb1N0YXR1cwAAAAEFAAAACHZlcmlmaWVkBQAAAANuaWwFAAAAHWxhYmVsQ29tbXVuaXR5VmVyaWZpZWRBY3Rpb25zAQAAABN1cGRhdGVUaWNrZXJBY3Rpb25zAAAAAgAAAAdhc3NldElkAAAABnRpY2tlcgQAAAALY2hlY2tUaWNrZXIEAAAAE2xpbmtlZEFzc2V0SWRPclVuaXQJAAQiAAAAAQkBAAAAEmtleVRpY2tlclRvQXNzZXRJZAAAAAEFAAAABnRpY2tlcgQAAAANdGlja2VySXNWYWxpZAMJAQAAAAIhPQAAAAIFAAAABnRpY2tlcgIAAAAAAwkAAAAAAAACBQAAABNsaW5rZWRBc3NldElkT3JVbml0BQAAAAR1bml0BgkAAAAAAAACCQEAAAAFdmFsdWUAAAABBQAAABNsaW5rZWRBc3NldElkT3JVbml0BQAAAAdhc3NldElkBwMFAAAADXRpY2tlcklzVmFsaWQGCQAAAgAAAAECAAAADkludmFsaWQgdGlja2VyAwkAAAAAAAACBQAAAAtjaGVja1RpY2tlcgUAAAALY2hlY2tUaWNrZXIJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAAEmtleUFzc2V0SWRUb1RpY2tlcgAAAAEFAAAAB2Fzc2V0SWQFAAAABnRpY2tlcgkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAASa2V5VGlja2VyVG9Bc3NldElkAAAAAQUAAAAGdGlja2VyBQAAAAdhc3NldElkBQAAAANuaWwJAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAAAAFAAAAAFpAQAAAAxzZXRBc3NldE5hbWUAAAACAAAAB2Fzc2V0SUQAAAAJYXNzZXROYW1lBAAAAAtjaGVja0NhbGxlcgkBAAAACW11c3RBZG1pbgAAAAEFAAAAAWkDCQAAAAAAAAIFAAAAC2NoZWNrQ2FsbGVyBQAAAAtjaGVja0NhbGxlcgkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAAMa2V5QXNzZXROYW1lAAAAAQUAAAAHYXNzZXRJRAUAAAAJYXNzZXROYW1lBQAAAANuaWwJAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAAAAAWkBAAAAE3NldEFzc2V0RGVzY3JpcHRpb24AAAACAAAAB2Fzc2V0SUQAAAAQYXNzZXREZXNjcmlwdGlvbgQAAAALY2hlY2tDYWxsZXIJAQAAAAltdXN0QWRtaW4AAAABBQAAAAFpAwkAAAAAAAACBQAAAAtjaGVja0NhbGxlcgUAAAALY2hlY2tDYWxsZXIJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAAE2tleUFzc2V0RGVzY3JpcHRpb24AAAABBQAAAAdhc3NldElEBQAAABBhc3NldERlc2NyaXB0aW9uBQAAAANuaWwJAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAAAAAWkBAAAAC2NvbnN0cnVjdG9yAAAAAgAAABF1c2VyUG9vbHNDb250cmFjdAAAAAZsYWJlbHMEAAAAC2NoZWNrQ2FsbGVyCQEAAAALbXVzdE1hbmFnZXIAAAABBQAAAAFpAwkAAAAAAAACBQAAAAtjaGVja0NhbGxlcgUAAAALY2hlY2tDYWxsZXIEAAAADWNoZWNrc0FkZHJlc3MJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABCYAAAABBQAAABF1c2VyUG9vbHNDb250cmFjdAIAAAAPSW52YWxpZCBhZGRyZXNzAwkAAAAAAAACBQAAAA1jaGVja3NBZGRyZXNzBQAAAA1jaGVja3NBZGRyZXNzCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAABRrZXlVc2VyUG9vbHNDb250cmFjdAAAAAAFAAAAEXVzZXJQb29sc0NvbnRyYWN0CQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAAAlrZXlMYWJlbHMAAAAACQAEuQAAAAIJAAROAAAAAgUAAAANZGVmYXVsdExhYmVscwUAAAAGbGFiZWxzBQAAAANTRVAFAAAAA25pbAkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAAAAAWkBAAAADWNvbnN0cnVjdG9yVjIAAAABAAAAD2ZhY3RvcnlDb250cmFjdAQAAAALY2hlY2tDYWxsZXIJAQAAAAttdXN0TWFuYWdlcgAAAAEFAAAAAWkDCQAAAAAAAAIFAAAAC2NoZWNrQ2FsbGVyBQAAAAtjaGVja0NhbGxlcgQAAAAMY2hlY2tBZGRyZXNzCQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQmAAAAAQUAAAAPZmFjdG9yeUNvbnRyYWN0AgAAACBpbnZhbGlkIGZhY3RvcnkgY29udHJhY3QgYWRkcmVzcwMJAAAAAAAAAgUAAAAMY2hlY2tBZGRyZXNzBQAAAAxjaGVja0FkZHJlc3MJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAAEmtleUZhY3RvcnlDb250cmFjdAAAAAAFAAAAD2ZhY3RvcnlDb250cmFjdAUAAAADbmlsCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4AAAABaQEAAAANYWRkQXNzZXRzTGluawAAAAMAAAALYW1vdW50QXNzZXQAAAAKcHJpY2VBc3NldAAAAAdscEFzc2V0BAAAAAtjaGVja0NhbGxlcgkBAAAACW11c3RBZG1pbgAAAAEFAAAAAWkDCQAAAAAAAAIFAAAAC2NoZWNrQ2FsbGVyBQAAAAtjaGVja0NhbGxlcgkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAAga2V5QW1vdW50QW5kUHJpY2VBc3NldHNUb0xwQXNzZXQAAAACBQAAAAthbW91bnRBc3NldAUAAAAKcHJpY2VBc3NldAUAAAAHbHBBc3NldAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAAga2V5THBBc3NldFRvQW1vdW50QW5kUHJpY2VBc3NldHMAAAABBQAAAAdscEFzc2V0CQAEuQAAAAIJAARMAAAAAgUAAAALYW1vdW50QXNzZXQJAARMAAAAAgUAAAAKcHJpY2VBc3NldAUAAAADbmlsBQAAAANTRVAFAAAAA25pbAkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4AAAABaQEAAAAYaW5jcmVhc2VBc3NldFBvb2xzTnVtYmVyAAAAAQAAAAdhc3NldElkBAAAAAtjaGVja0NhbGxlcgkBAAAACW11c3RBZG1pbgAAAAEFAAAAAWkDCQAAAAAAAAIFAAAAC2NoZWNrQ2FsbGVyBQAAAAtjaGVja0NhbGxlcgQAAAATYXNzZXRQb29sc051bWJlcktleQkBAAAAE2tleUFzc2V0UG9vbHNOdW1iZXIAAAABBQAAAAdhc3NldElkBAAAABBhc3NldFBvb2xzTnVtYmVyCQEAAAALdmFsdWVPckVsc2UAAAACCQAEHwAAAAEFAAAAE2Fzc2V0UG9vbHNOdW1iZXJLZXkAAAAAAAAAAAAJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAE2Fzc2V0UG9vbHNOdW1iZXJLZXkJAABkAAAAAgUAAAAQYXNzZXRQb29sc051bWJlcgAAAAAAAAAAAQUAAAADbmlsCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgAAAAFpAQAAAAtjcmVhdGVMYWJlbAAAAAEAAAAFbGFiZWwEAAAABmxhYmVscwkBAAAACWdldExhYmVscwAAAAAEAAAAC2NoZWNrQ2FsbGVyCQEAAAAJbXVzdEFkbWluAAAAAQUAAAABaQMJAAAAAAAAAgUAAAALY2hlY2tDYWxsZXIFAAAAC2NoZWNrQ2FsbGVyBAAAAApjaGVja0xhYmVsCQAETAAAAAIDCQEAAAABIQAAAAEJAQAAAAhjb250YWlucwAAAAIFAAAABWxhYmVsBQAAAANTRVAGCQAAAgAAAAECAAAAEkludmFsaWQgbGFiZWwgbmFtZQkABEwAAAACAwkBAAAAASEAAAABCQEAAAAPY29udGFpbnNFbGVtZW50AAAAAgUAAAAGbGFiZWxzBQAAAAVsYWJlbAYJAAACAAAAAQIAAAAMTGFiZWwgZXhpc3RzBQAAAANuaWwDCQAAAAAAAAIFAAAACmNoZWNrTGFiZWwFAAAACmNoZWNrTGFiZWwJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAACWtleUxhYmVscwAAAAAJAAS5AAAAAgkABE0AAAACBQAAAAZsYWJlbHMFAAAABWxhYmVsBQAAAANTRVAFAAAAA25pbAkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAAAAAWkBAAAACWRyb3BMYWJlbAAAAAEAAAAFbGFiZWwEAAAABmxhYmVscwkBAAAACWdldExhYmVscwAAAAAEAAAAC2NoZWNrQ2FsbGVyCQEAAAALbXVzdE1hbmFnZXIAAAABBQAAAAFpAwkAAAAAAAACBQAAAAtjaGVja0NhbGxlcgUAAAALY2hlY2tDYWxsZXIEAAAACmNoZWNrTGFiZWwDCQEAAAAPY29udGFpbnNFbGVtZW50AAAAAgUAAAAGbGFiZWxzBQAAAAVsYWJlbAYJAAACAAAAAQIAAAATTGFiZWwgZG9lc24ndCBleGlzdAMJAAAAAAAAAgUAAAAKY2hlY2tMYWJlbAUAAAAKY2hlY2tMYWJlbAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAAJa2V5TGFiZWxzAAAAAAkABLkAAAACCQAEUQAAAAIFAAAABmxhYmVscwkBAAAABXZhbHVlAAAAAQkABE8AAAACBQAAAAZsYWJlbHMFAAAABWxhYmVsBQAAAANTRVAFAAAAA25pbAkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAAAAAWkBAAAACGFkZExhYmVsAAAAAgAAAAdhc3NldElkAAAABWxhYmVsBAAAAAtjaGVja0NhbGxlcgkBAAAACW11c3RBZG1pbgAAAAEFAAAAAWkDCQAAAAAAAAIFAAAAC2NoZWNrQ2FsbGVyBQAAAAtjaGVja0NhbGxlcgkBAAAAD2FkZExhYmVsQWN0aW9ucwAAAAMFAAAAB2Fzc2V0SWQFAAAABWxhYmVsBgkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4AAAABaQEAAAALZGVsZXRlTGFiZWwAAAACAAAAB2Fzc2V0SWQAAAAFbGFiZWwEAAAAC2NoZWNrQ2FsbGVyCQEAAAAJbXVzdEFkbWluAAAAAQUAAAABaQMJAAAAAAAAAgUAAAALY2hlY2tDYWxsZXIFAAAAC2NoZWNrQ2FsbGVyCQEAAAASZGVsZXRlTGFiZWxBY3Rpb25zAAAAAwUAAAAHYXNzZXRJZAUAAAAFbGFiZWwGCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgAAAAFpAQAAAAx1cGRhdGVUaWNrZXIAAAACAAAAB2Fzc2V0SWQAAAAGdGlja2VyBAAAAAtjaGVja0NhbGxlcgkBAAAACW11c3RBZG1pbgAAAAEFAAAAAWkDCQAAAAAAAAIFAAAAC2NoZWNrQ2FsbGVyBQAAAAtjaGVja0NhbGxlcgQAAAAKY2hlY2tBc3NldAMJAQAAAAlpc0NyZWF0ZWQAAAABBQAAAAdhc3NldElkBgkBAAAADHRocm93Tm9Bc3NldAAAAAADCQAAAAAAAAIFAAAACmNoZWNrQXNzZXQFAAAACmNoZWNrQXNzZXQJAQAAABN1cGRhdGVUaWNrZXJBY3Rpb25zAAAAAgUAAAAHYXNzZXRJZAUAAAAGdGlja2VyCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4AAAABaQEAAAAMZGVsZXRlVGlja2VyAAAAAQAAAAdhc3NldElkBAAAAAtjaGVja0NhbGxlcgkBAAAACW11c3RBZG1pbgAAAAEFAAAAAWkDCQAAAAAAAAIFAAAAC2NoZWNrQ2FsbGVyBQAAAAtjaGVja0NhbGxlcgQAAAAGdGlja2VyCQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQiAAAAAQkBAAAAEmtleUFzc2V0SWRUb1RpY2tlcgAAAAEFAAAAB2Fzc2V0SWQCAAAADUludmFsaWQgYXNzZXQJAARMAAAAAgkBAAAAC0RlbGV0ZUVudHJ5AAAAAQkBAAAAEmtleUFzc2V0SWRUb1RpY2tlcgAAAAEFAAAAB2Fzc2V0SWQJAARMAAAAAgkBAAAAC0RlbGV0ZUVudHJ5AAAAAQkBAAAAEmtleVRpY2tlclRvQXNzZXRJZAAAAAEFAAAABnRpY2tlcgUAAAADbmlsCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgAAAAFpAQAAAA5jcmVhdGVPclVwZGF0ZQAAAAMAAAAHYXNzZXRJZAAAAARsb2dvAAAACHZlcmlmaWVkBAAAAAtjaGVja0NhbGxlcgkBAAAACW11c3RBZG1pbgAAAAEFAAAAAWkDCQAAAAAAAAIFAAAAC2NoZWNrQ2FsbGVyBQAAAAtjaGVja0NhbGxlcgQAAAAMaXNDcmVhdGVkTm93CQEAAAABIQAAAAEJAQAAAAlpc0NyZWF0ZWQAAAABBQAAAAdhc3NldElkAwkAAAAAAAACBQAAAAxpc0NyZWF0ZWROb3cFAAAADGlzQ3JlYXRlZE5vdwQAAAAOc2V0TG9nb0FjdGlvbnMDCQAAAAAAAAIFAAAABGxvZ28CAAAAAAUAAAADbmlsCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAAAdrZXlMb2dvAAAAAQUAAAAHYXNzZXRJZAUAAAAEbG9nbwUAAAADbmlsCQAFFAAAAAIJAAROAAAAAgkABE4AAAACCQAETAAAAAIJAQAAAAxCb29sZWFuRW50cnkAAAACCQEAAAAKa2V5Q3JlYXRlZAAAAAEFAAAAB2Fzc2V0SWQGBQAAAANuaWwFAAAADnNldExvZ29BY3Rpb25zCQEAAAASc2V0VmVyaWZpZWRBY3Rpb25zAAAAAgUAAAAHYXNzZXRJZAUAAAAIdmVyaWZpZWQFAAAADGlzQ3JlYXRlZE5vdwkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAAAAAWkBAAAAB3NldExvZ28AAAACAAAAB2Fzc2V0SWQAAAAEbG9nbwQAAAAGY2hlY2tzCQAETAAAAAIJAQAAAAltdXN0QWRtaW4AAAABBQAAAAFpCQAETAAAAAIDCQEAAAAJaXNDcmVhdGVkAAAAAQUAAAAHYXNzZXRJZAYJAQAAAAx0aHJvd05vQXNzZXQAAAAABQAAAANuaWwDCQAAAAAAAAIFAAAABmNoZWNrcwUAAAAGY2hlY2tzBAAAAAZhY3Rpb24DCQAAAAAAAAIFAAAABGxvZ28CAAAAAAkBAAAAC0RlbGV0ZUVudHJ5AAAAAQkBAAAAB2tleUxvZ28AAAABBQAAAAdhc3NldElkCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAAHa2V5TG9nbwAAAAEFAAAAB2Fzc2V0SWQFAAAABGxvZ28JAARMAAAAAgUAAAAGYWN0aW9uBQAAAANuaWwJAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAAAAAWkBAAAAC3NldFZlcmlmaWVkAAAAAgAAAAdhc3NldElkAAAACHZlcmlmaWVkBAAAAAZjaGVja3MJAARMAAAAAgkBAAAACW11c3RBZG1pbgAAAAEFAAAAAWkJAARMAAAAAgMJAQAAAAlpc0NyZWF0ZWQAAAABBQAAAAdhc3NldElkBgkBAAAADHRocm93Tm9Bc3NldAAAAAAFAAAAA25pbAMJAAAAAAAAAgUAAAAGY2hlY2tzBQAAAAZjaGVja3MEAAAAFW9uVmVyaWZpY2F0aW9uTG9zc0ludgMJAQAAAAEhAAAAAQUAAAAIdmVyaWZpZWQEAAAAD2ZhY3RvcnlDb250cmFjdAkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEJgAAAAEJAQAAAAxnZXRTdHJPckZhaWwAAAACBQAAAAR0aGlzCQEAAAASa2V5RmFjdG9yeUNvbnRyYWN0AAAAAAIAAAAgaW52YWxpZCBmYWN0b3J5IGNvbnRyYWN0IGFkZHJlc3MJAAP8AAAABAUAAAAPZmFjdG9yeUNvbnRyYWN0AgAAABJvblZlcmlmaWNhdGlvbkxvc3MJAARMAAAAAgUAAAAHYXNzZXRJZAUAAAADbmlsBQAAAANuaWwFAAAABHVuaXQDCQAAAAAAAAIFAAAAFW9uVmVyaWZpY2F0aW9uTG9zc0ludgUAAAAVb25WZXJpZmljYXRpb25Mb3NzSW52CQAFFAAAAAIJAQAAABJzZXRWZXJpZmllZEFjdGlvbnMAAAACBQAAAAdhc3NldElkBQAAAAh2ZXJpZmllZAUAAAAEdW5pdAkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAAAAAWkBAAAAC29uRWxpbWluYXRlAAAAAQAAAAdhc3NldElkBAAAAAtwb29sc051bWJlcgkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABB8AAAABCQEAAAATa2V5QXNzZXRQb29sc051bWJlcgAAAAEFAAAAB2Fzc2V0SWQAAAAAAAAAAAAEAAAAB2FjdGlvbnMDCQAAZgAAAAIFAAAAC3Bvb2xzTnVtYmVyAAAAAAAAAAAABQAAAANuaWwJAARMAAAAAgkBAAAAC0RlbGV0ZUVudHJ5AAAAAQkBAAAAB2tleUxvZ28AAAABBQAAAAdhc3NldElkBQAAAANuaWwJAAUUAAAAAgUAAAAHYWN0aW9ucwUAAAAEdW5pdAAAAAFpAQAAAAlzZXRBZG1pbnMAAAABAAAADGFkbWluUHViS2V5cwQAAAALY2hlY2tDYWxsZXIJAQAAAAttdXN0TWFuYWdlcgAAAAEFAAAAAWkDCQAAAAAAAAIFAAAAC2NoZWNrQ2FsbGVyBQAAAAtjaGVja0NhbGxlcgkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAAPa2V5QWRtaW5QdWJLZXlzAAAAAAkABLkAAAACBQAAAAxhZG1pblB1YktleXMFAAAAA1NFUAUAAAADbmlsCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgAAAAFpAQAAAApzZXRNYW5hZ2VyAAAAAQAAABdwZW5kaW5nTWFuYWdlclB1YmxpY0tleQQAAAALY2hlY2tDYWxsZXIJAQAAAAttdXN0TWFuYWdlcgAAAAEFAAAAAWkDCQAAAAAAAAIFAAAAC2NoZWNrQ2FsbGVyBQAAAAtjaGVja0NhbGxlcgQAAAAVY2hlY2tNYW5hZ2VyUHVibGljS2V5CQACWQAAAAEFAAAAF3BlbmRpbmdNYW5hZ2VyUHVibGljS2V5AwkAAAAAAAACBQAAABVjaGVja01hbmFnZXJQdWJsaWNLZXkFAAAAFWNoZWNrTWFuYWdlclB1YmxpY0tleQkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAAaa2V5UGVuZGluZ01hbmFnZXJQdWJsaWNLZXkAAAAABQAAABdwZW5kaW5nTWFuYWdlclB1YmxpY0tleQUAAAADbmlsCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4AAAABaQEAAAAOY29uZmlybU1hbmFnZXIAAAAABAAAAAJwbQkBAAAAHXBlbmRpbmdNYW5hZ2VyUHVibGljS2V5T3JVbml0AAAAAAQAAAAFaGFzUE0DCQEAAAAJaXNEZWZpbmVkAAAAAQUAAAACcG0GCQAAAgAAAAECAAAAEk5vIHBlbmRpbmcgbWFuYWdlcgMJAAAAAAAAAgUAAAAFaGFzUE0FAAAABWhhc1BNBAAAAAdjaGVja1BNAwkAAAAAAAACCAUAAAABaQAAAA9jYWxsZXJQdWJsaWNLZXkJAQAAAAV2YWx1ZQAAAAEFAAAAAnBtBgkAAAIAAAABAgAAABtZb3UgYXJlIG5vdCBwZW5kaW5nIG1hbmFnZXIDCQAAAAAAAAIFAAAAB2NoZWNrUE0FAAAAB2NoZWNrUE0JAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAAE2tleU1hbmFnZXJQdWJsaWNLZXkAAAAACQACWAAAAAEJAQAAAAV2YWx1ZQAAAAEFAAAAAnBtCQAETAAAAAIJAQAAAAtEZWxldGVFbnRyeQAAAAEJAQAAABprZXlQZW5kaW5nTWFuYWdlclB1YmxpY0tleQAAAAAFAAAAA25pbAkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAAAAAWkBAAAAEmlzVmVyaWZpZWRSRUFET05MWQAAAAEAAAAHYXNzZXRJZAkABRQAAAACBQAAAANuaWwJAQAAAAppc1ZlcmlmaWVkAAAAAQUAAAAHYXNzZXRJZAAAAAEAAAACdHgBAAAABnZlcmlmeQAAAAAEAAAAD3RhcmdldFB1YmxpY0tleQQAAAAHJG1hdGNoMAkBAAAAFm1hbmFnZXJQdWJsaWNLZXlPclVuaXQAAAAAAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAApCeXRlVmVjdG9yBAAAAAJwawUAAAAHJG1hdGNoMAUAAAACcGsDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAABFVuaXQIBQAAAAJ0eAAAAA9zZW5kZXJQdWJsaWNLZXkJAAACAAAAAQIAAAALTWF0Y2ggZXJyb3IJAAH0AAAAAwgFAAAAAnR4AAAACWJvZHlCeXRlcwkAAZEAAAACCAUAAAACdHgAAAAGcHJvb2ZzAAAAAAAAAAAABQAAAA90YXJnZXRQdWJsaWNLZXkZCooD", "height": 2492668, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 2WR64LbuaBAJYgdhY2ex75ujHqXXRumTYeUFtTC63rMo Next: none 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 keyFactoryContract () = "%s__factoryContract"
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 keyAssetName (assetId) = makeString(["%s%s", "assetName", assetId], SEP)
7373
7474
7575 func keyAssetDescription (assetId) = makeString(["%s%s", "assetDescription", assetId], SEP)
7676
7777
7878 func getValueOrFail (address,key,type) = {
7979 let error = makeString(["mandatory ", toString(address), ".", key, " is not defined"], "")
8080 valueOrErrorMessage( match type {
8181 case str: String =>
8282 getString(address, key)
8383 case int: Int =>
8484 getInteger(address, key)
8585 case _ =>
8686 throw("invalid entry type")
8787 }, error)
8888 }
8989
9090
9191 func getStrOrFail (address,key) = {
9292 let @ = getValueOrFail(address, key, "")
9393 if ($isInstanceOf(@, "String"))
9494 then @
9595 else throw("Couldn't cast Int|String to String")
9696 }
9797
9898
9999 func getIntOrFail (address,key) = {
100100 let @ = getValueOrFail(address, key, 0)
101101 if ($isInstanceOf(@, "Int"))
102102 then @
103103 else throw("Couldn't cast Int|String to Int")
104104 }
105105
106106
107107 func isVerified (assetId) = (valueOrElse(getInteger(keyStatus(assetId)), statusUnverified) == statusVerified)
108108
109109
110110 func getLabels () = match getString(keyLabels()) {
111111 case s: String =>
112112 if ((size(s) == 0))
113113 then nil
114114 else split(s, SEP)
115115 case _ =>
116116 nil
117117 }
118118
119119
120120 func getAssetLabels (assetId) = match getString(keyAssetLabels(assetId)) {
121121 case s: String =>
122122 if ((size(s) == 0))
123123 then nil
124124 else split(s, SEP)
125125 case _ =>
126126 nil
127127 }
128128
129129
130130 func managerPublicKeyOrUnit () = match getString(keyManagerPublicKey()) {
131131 case s: String =>
132132 fromBase58String(s)
133133 case _: Unit =>
134134 unit
135135 case _ =>
136136 throw("Match error")
137137 }
138138
139139
140140 func pendingManagerPublicKeyOrUnit () = match getString(keyPendingManagerPublicKey()) {
141141 case s: String =>
142142 fromBase58String(s)
143143 case _: Unit =>
144144 unit
145145 case _ =>
146146 throw("Match error")
147147 }
148148
149149
150150 func mustManager (i) = match managerPublicKeyOrUnit() {
151151 case pk: ByteVector =>
152152 if ((i.callerPublicKey == pk))
153153 then true
154154 else throwPD()
155155 case _: Unit =>
156156 if ((i.caller == this))
157157 then true
158158 else throwPD()
159159 case _ =>
160160 throw("Match error")
161161 }
162162
163163
164164 func mustAdmin (i) = {
165165 let adminPKs = split(valueOrElse(getString(keyAdminPubKeys()), EMPTY), SEP)
166166 if (containsElement(adminPKs, toBase58String(i.callerPublicKey)))
167167 then true
168168 else {
169169 let isManager = mustManager(i)
170170 if ((isManager == isManager))
171171 then true
172172 else throw("Strict value is not equal to itself.")
173173 }
174174 }
175175
176176
177177 func isCreated (assetId) = valueOrElse(getBoolean(keyCreated(assetId)), false)
178178
179179
180180 func verifiedToStatus (verified) = if (verified)
181181 then statusVerified
182182 else statusUnverified
183183
184184
185185 func addLabelActions (assetId,label,throwOnError) = {
186186 let labels = getLabels()
187187 let assetLabels = getAssetLabels(assetId)
188188 let checkLabel = if (containsElement(labels, label))
189189 then true
190190 else throw("Label doesn't exist")
191191 if ((checkLabel == checkLabel))
192192 then {
193193 let newAssetLabels = if (containsElement(assetLabels, label))
194194 then if (throwOnError)
195195 then throw("Label has already been added")
196196 else assetLabels
197197 else (assetLabels :+ label)
198198 [StringEntry(keyAssetLabels(assetId), makeString(newAssetLabels, SEP))]
199199 }
200200 else throw("Strict value is not equal to itself.")
201201 }
202202
203203
204204 func deleteLabelActions (assetId,label,throwOnError) = {
205205 let assetLabels = getAssetLabels(assetId)
206206 let newAssetLabels = if (containsElement(assetLabels, label))
207207 then removeByIndex(assetLabels, value(indexOf(assetLabels, label)))
208208 else if (throwOnError)
209209 then throw("Label wasn't added")
210210 else assetLabels
211211 [StringEntry(keyAssetLabels(assetId), makeString(newAssetLabels, SEP))]
212212 }
213213
214214
215215 func setVerifiedActions (assetId,verified) = {
216216 let labelCommunityVerifiedActions = if (verified)
217217 then addLabelActions(assetId, labelCommunityVerified, false)
218218 else deleteLabelActions(assetId, labelCommunityVerified, false)
219219 ([IntegerEntry(keyStatus(assetId), verifiedToStatus(verified))] ++ labelCommunityVerifiedActions)
220220 }
221221
222222
223223 func updateTickerActions (assetId,ticker) = {
224224 let checkTicker = {
225225 let linkedAssetIdOrUnit = getString(keyTickerToAssetId(ticker))
226226 let tickerIsValid = if ((ticker != ""))
227227 then if ((linkedAssetIdOrUnit == unit))
228228 then true
229229 else (value(linkedAssetIdOrUnit) == assetId)
230230 else false
231231 if (tickerIsValid)
232232 then true
233233 else throw("Invalid ticker")
234234 }
235235 if ((checkTicker == checkTicker))
236236 then [StringEntry(keyAssetIdToTicker(assetId), ticker), StringEntry(keyTickerToAssetId(ticker), assetId)]
237237 else throw("Strict value is not equal to itself.")
238238 }
239239
240240
241241 @Callable(i)
242242 func setAssetName (assetID,assetName) = {
243243 let checkCaller = mustAdmin(i)
244244 if ((checkCaller == checkCaller))
245245 then [StringEntry(keyAssetName(assetID), assetName)]
246246 else throw("Strict value is not equal to itself.")
247247 }
248248
249249
250250
251251 @Callable(i)
252252 func setAssetDescription (assetID,assetDescription) = {
253253 let checkCaller = mustAdmin(i)
254254 if ((checkCaller == checkCaller))
255255 then [StringEntry(keyAssetDescription(assetID), assetDescription)]
256256 else throw("Strict value is not equal to itself.")
257257 }
258258
259259
260260
261261 @Callable(i)
262262 func constructor (userPoolsContract,labels) = {
263263 let checkCaller = mustManager(i)
264264 if ((checkCaller == checkCaller))
265265 then {
266266 let checksAddress = valueOrErrorMessage(addressFromString(userPoolsContract), "Invalid address")
267267 if ((checksAddress == checksAddress))
268268 then [StringEntry(keyUserPoolsContract(), userPoolsContract), StringEntry(keyLabels(), makeString((defaultLabels ++ labels), SEP))]
269269 else throw("Strict value is not equal to itself.")
270270 }
271271 else throw("Strict value is not equal to itself.")
272272 }
273273
274274
275275
276276 @Callable(i)
277277 func constructorV2 (factoryContract) = {
278278 let checkCaller = mustManager(i)
279279 if ((checkCaller == checkCaller))
280280 then {
281281 let checkAddress = valueOrErrorMessage(addressFromString(factoryContract), "invalid factory contract address")
282282 if ((checkAddress == checkAddress))
283283 then [StringEntry(keyFactoryContract(), factoryContract)]
284284 else throw("Strict value is not equal to itself.")
285285 }
286286 else throw("Strict value is not equal to itself.")
287287 }
288288
289289
290290
291291 @Callable(i)
292292 func addAssetsLink (amountAsset,priceAsset,lpAsset) = {
293293 let checkCaller = mustAdmin(i)
294294 if ((checkCaller == checkCaller))
295295 then [StringEntry(keyAmountAndPriceAssetsToLpAsset(amountAsset, priceAsset), lpAsset), StringEntry(keyLpAssetToAmountAndPriceAssets(lpAsset), makeString([amountAsset, priceAsset], SEP))]
296296 else throw("Strict value is not equal to itself.")
297297 }
298298
299299
300300
301301 @Callable(i)
302302 func increaseAssetPoolsNumber (assetId) = {
303303 let checkCaller = mustAdmin(i)
304304 if ((checkCaller == checkCaller))
305305 then {
306306 let assetPoolsNumberKey = keyAssetPoolsNumber(assetId)
307307 let assetPoolsNumber = valueOrElse(getInteger(assetPoolsNumberKey), 0)
308308 [IntegerEntry(assetPoolsNumberKey, (assetPoolsNumber + 1))]
309309 }
310310 else throw("Strict value is not equal to itself.")
311311 }
312312
313313
314314
315315 @Callable(i)
316316 func createLabel (label) = {
317317 let labels = getLabels()
318318 let checkCaller = mustAdmin(i)
319319 if ((checkCaller == checkCaller))
320320 then {
321321 let checkLabel = [if (!(contains(label, SEP)))
322322 then true
323323 else throw("Invalid label name"), if (!(containsElement(labels, label)))
324324 then true
325325 else throw("Label exists")]
326326 if ((checkLabel == checkLabel))
327327 then [StringEntry(keyLabels(), makeString((labels :+ label), SEP))]
328328 else throw("Strict value is not equal to itself.")
329329 }
330330 else throw("Strict value is not equal to itself.")
331331 }
332332
333333
334334
335335 @Callable(i)
336336 func dropLabel (label) = {
337337 let labels = getLabels()
338338 let checkCaller = mustManager(i)
339339 if ((checkCaller == checkCaller))
340340 then {
341341 let checkLabel = if (containsElement(labels, label))
342342 then true
343343 else throw("Label doesn't exist")
344344 if ((checkLabel == checkLabel))
345345 then [StringEntry(keyLabels(), makeString(removeByIndex(labels, value(indexOf(labels, label))), SEP))]
346346 else throw("Strict value is not equal to itself.")
347347 }
348348 else throw("Strict value is not equal to itself.")
349349 }
350350
351351
352352
353353 @Callable(i)
354354 func addLabel (assetId,label) = {
355355 let checkCaller = mustAdmin(i)
356356 if ((checkCaller == checkCaller))
357357 then addLabelActions(assetId, label, true)
358358 else throw("Strict value is not equal to itself.")
359359 }
360360
361361
362362
363363 @Callable(i)
364364 func deleteLabel (assetId,label) = {
365365 let checkCaller = mustAdmin(i)
366366 if ((checkCaller == checkCaller))
367367 then deleteLabelActions(assetId, label, true)
368368 else throw("Strict value is not equal to itself.")
369369 }
370370
371371
372372
373373 @Callable(i)
374374 func updateTicker (assetId,ticker) = {
375375 let checkCaller = mustAdmin(i)
376376 if ((checkCaller == checkCaller))
377377 then {
378378 let checkAsset = if (isCreated(assetId))
379379 then true
380380 else throwNoAsset()
381381 if ((checkAsset == checkAsset))
382382 then updateTickerActions(assetId, ticker)
383383 else throw("Strict value is not equal to itself.")
384384 }
385385 else throw("Strict value is not equal to itself.")
386386 }
387387
388388
389389
390390 @Callable(i)
391391 func deleteTicker (assetId) = {
392392 let checkCaller = mustAdmin(i)
393393 if ((checkCaller == checkCaller))
394394 then {
395395 let ticker = valueOrErrorMessage(getString(keyAssetIdToTicker(assetId)), "Invalid asset")
396396 [DeleteEntry(keyAssetIdToTicker(assetId)), DeleteEntry(keyTickerToAssetId(ticker))]
397397 }
398398 else throw("Strict value is not equal to itself.")
399399 }
400400
401401
402402
403403 @Callable(i)
404404 func createOrUpdate (assetId,logo,verified) = {
405405 let checkCaller = mustAdmin(i)
406406 if ((checkCaller == checkCaller))
407407 then {
408408 let isCreatedNow = !(isCreated(assetId))
409409 if ((isCreatedNow == isCreatedNow))
410410 then {
411411 let setLogoActions = if ((logo == ""))
412412 then nil
413413 else [StringEntry(keyLogo(assetId), logo)]
414414 $Tuple2((([BooleanEntry(keyCreated(assetId), true)] ++ setLogoActions) ++ setVerifiedActions(assetId, verified)), isCreatedNow)
415415 }
416416 else throw("Strict value is not equal to itself.")
417417 }
418418 else throw("Strict value is not equal to itself.")
419419 }
420420
421421
422422
423423 @Callable(i)
424424 func setLogo (assetId,logo) = {
425425 let checks = [mustAdmin(i), if (isCreated(assetId))
426426 then true
427427 else throwNoAsset()]
428428 if ((checks == checks))
429429 then {
430430 let action = if ((logo == ""))
431431 then DeleteEntry(keyLogo(assetId))
432432 else StringEntry(keyLogo(assetId), logo)
433433 [action]
434434 }
435435 else throw("Strict value is not equal to itself.")
436436 }
437437
438438
439439
440440 @Callable(i)
441441 func setVerified (assetId,verified) = {
442442 let checks = [mustAdmin(i), if (isCreated(assetId))
443443 then true
444444 else throwNoAsset()]
445445 if ((checks == checks))
446446 then {
447447 let onVerificationLossInv = if (!(verified))
448448 then {
449449 let factoryContract = valueOrErrorMessage(addressFromString(getStrOrFail(this, keyFactoryContract())), "invalid factory contract address")
450450 invoke(factoryContract, "onVerificationLoss", [assetId], nil)
451451 }
452452 else unit
453453 if ((onVerificationLossInv == onVerificationLossInv))
454454 then $Tuple2(setVerifiedActions(assetId, verified), unit)
455455 else throw("Strict value is not equal to itself.")
456456 }
457457 else throw("Strict value is not equal to itself.")
458458 }
459459
460460
461461
462462 @Callable(i)
463463 func onEliminate (assetId) = {
464464 let poolsNumber = valueOrElse(getInteger(keyAssetPoolsNumber(assetId)), 0)
465465 let actions = if ((poolsNumber > 0))
466466 then nil
467467 else [DeleteEntry(keyLogo(assetId))]
468468 $Tuple2(actions, unit)
469469 }
470470
471471
472472
473473 @Callable(i)
474474 func setAdmins (adminPubKeys) = {
475475 let checkCaller = mustManager(i)
476476 if ((checkCaller == checkCaller))
477477 then [StringEntry(keyAdminPubKeys(), makeString(adminPubKeys, SEP))]
478478 else throw("Strict value is not equal to itself.")
479479 }
480480
481481
482482
483483 @Callable(i)
484484 func setManager (pendingManagerPublicKey) = {
485485 let checkCaller = mustManager(i)
486486 if ((checkCaller == checkCaller))
487487 then {
488488 let checkManagerPublicKey = fromBase58String(pendingManagerPublicKey)
489489 if ((checkManagerPublicKey == checkManagerPublicKey))
490490 then [StringEntry(keyPendingManagerPublicKey(), pendingManagerPublicKey)]
491491 else throw("Strict value is not equal to itself.")
492492 }
493493 else throw("Strict value is not equal to itself.")
494494 }
495495
496496
497497
498498 @Callable(i)
499499 func confirmManager () = {
500500 let pm = pendingManagerPublicKeyOrUnit()
501501 let hasPM = if (isDefined(pm))
502502 then true
503503 else throw("No pending manager")
504504 if ((hasPM == hasPM))
505505 then {
506506 let checkPM = if ((i.callerPublicKey == value(pm)))
507507 then true
508508 else throw("You are not pending manager")
509509 if ((checkPM == checkPM))
510510 then [StringEntry(keyManagerPublicKey(), toBase58String(value(pm))), DeleteEntry(keyPendingManagerPublicKey())]
511511 else throw("Strict value is not equal to itself.")
512512 }
513513 else throw("Strict value is not equal to itself.")
514514 }
515515
516516
517517
518518 @Callable(i)
519519 func isVerifiedREADONLY (assetId) = $Tuple2(nil, isVerified(assetId))
520520
521521
522522 @Verifier(tx)
523523 func verify () = {
524524 let targetPublicKey = match managerPublicKeyOrUnit() {
525525 case pk: ByteVector =>
526526 pk
527527 case _: Unit =>
528528 tx.senderPublicKey
529529 case _ =>
530530 throw("Match error")
531531 }
532532 sigVerify(tx.bodyBytes, tx.proofs[0], targetPublicKey)
533533 }
534534

github/deemru/w8io/c3f4982 
42.70 ms