tx · 9usmYQKij43m8HNgvRKf19DKLAmGj3iLA5WRtx5kiCg5

3NAg879tKUJh949h21umkwiaRQhwZftz1BE:  -1.00000000 Waves

2019.10.08 12:00 [710618] smart account 3NAg879tKUJh949h21umkwiaRQhwZftz1BE > SELF 0.00000000 Waves

{ "type": 13, "id": "9usmYQKij43m8HNgvRKf19DKLAmGj3iLA5WRtx5kiCg5", "fee": 100000000, "feeAssetId": null, "timestamp": 1570525246321, "version": 1, "sender": "3NAg879tKUJh949h21umkwiaRQhwZftz1BE", "senderPublicKey": "BqY2jhkQCcbidtQdQZu6f9RV3AkFAS8VPToHxwYu1KdJ", "proofs": [ "zWLqfF9ZiXoUDJUbEbPhni7UpC8J4EuBmKmagE8B9YSC4F5TWrieWTFQtSqGgS3iY9dbmoqgGAFjvndNLZewweN" ], "script": "base64:AAIDAAAAAAAAABQIARIECgIICBIECgIICBIECgIICAAAACMAAAAAHHRpY2tlckNhdGFsb2d1ZU9yYWNsZUFkZHJlc3MJAQAAABxAZXh0clVzZXIoYWRkcmVzc0Zyb21TdHJpbmcpAAAAAQIAAAAjM014SHhXNVZXcTRLcldjYmhGZnhLcmFmWG00bUw2clpIZmoAAAAAGHRva2VuUmF0aW5nT3JhY2xlQWRkcmVzcwkBAAAAHEBleHRyVXNlcihhZGRyZXNzRnJvbVN0cmluZykAAAABAgAAACMzTkFEcUhvTE1iTVRmWGRQMlRlQkJTeDVtUVhlUFZqM0tabQAAAAAdc3VzcGljaW91c0Fzc2V0c09yYWNsZUFkZHJlc3MJAQAAABxAZXh0clVzZXIoYWRkcmVzc0Zyb21TdHJpbmcpAAAAAQIAAAAjM01wYU1aSEd2MkhuZVByR051M05TTXE2VGtFSmlkMUZIbloAAAAAGW5vdFN1cHBvcnRlZEN1cnJlbmN5RXJyb3ICAAAAGzxub3RTdXBwb3J0ZWRDdXJyZW5jeUVycm9yPgAAAAAXaXNzdWVyQWNjZXNzRGVuaWVkRXJyb3ICAAAAGTxpc3N1ZXJBY2Nlc3NEZW5pZWRFcnJvcj4AAAAAFW5vdEVub3VnaFBheW1lbnRFcnJvcgIAAAAXPG5vdEVub3VnaFBheW1lbnRFcnJvcj4AAAAAJHRpY2tlclZhbGlkYXRpb25Ob3RFbm91Z2hSYXRpbmdFcnJvcgIAAAAmPHRpY2tlclZhbGlkYXRpb25Ob3RFbm91Z2hSYXRpbmdFcnJvcj4AAAAAInRpY2tlclZhbGlkYXRpb25UaWNrZXJJc0V4aXN0RXJyb3ICAAAAJDx0aWNrZXJWYWxpZGF0aW9uVGlja2VySXNFeGlzdEVycm9yPgAAAAAVdmFsdWVXcm9uZ0Zvcm1hdEVycm9yAgAAABc8dmFsdWVXcm9uZ0Zvcm1hdEVycm9yPgAAAAAVbm9uRXhpc3RlbnRBc3NldEVycm9yAgAAABc8bm9uRXhpc3RlbnRBc3NldEVycm9yPgAAAAAObm9QYXltZW50RXJyb3ICAAAAEDxub1BheW1lbnRFcnJvcj4AAAAAFnRpY2tlcklzSW1tdXRhYmxlRXJyb3ICAAAAGDx0aWNrZXJJc0ltbXV0YWJsZUVycm9yPgAAAAAUc3VzcGljaW91c0Fzc2V0RXJyb3ICAAAAFjxzdXNwaWNpb3VzQXNzZXRFcnJvcj4AAAAAA3d2cwAAAAAABfXhAAAAAAARdGlja2VyVXBkYXRlUHJpY2UJAABoAAAAAgAAAAAAAAAABQUAAAADd3ZzAAAAAA9saW5rVXBkYXRlUHJpY2UAAAAAAAL68IAAAAAAFmRlc2NyaXB0aW9uVXBkYXRlUHJpY2UAAAAAAAL68IAAAAAAD3RpY2tlck1pbkxlbmd0aAAAAAAAAAAAAQAAAAAPdGlja2VyTWF4TGVuZ3RoAAAAAAAAAAAGAAAAABR0aWNrZXJBbGxvd2VkTGV0dGVycwIAAAAaQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVoAAAAAD3Jlc2VydmVkVGlja2VycwIAAAElQlRDLEVUSCxYUlAsQkNILExUQyxCTkIsVVNEVCxFT1MsQlNWLFhNUixYTE0sTEVPLEFEQSxUUlgsREFTSCxMSU5LLFhUWixORU8sTUlPVEEsRVRDLEFUT00sWEVNLE1LUixDUk8sVVNEQyxPTlQsVlNZUyxaRUMsRE9HRSxWRVQsRENSLEhULEJBVCxCVEcsUVRVTSxIRURHLFRVU0QsUEFYLEVHVCxPTUcsQUxHTyxLQ1MsUlZOLExTSyxOQU5PLEJUVCxCQ0QsTlJHLExBTUIsSE9ULEJDTixER0IsUkVQLEJUUyxaUlgsWElOLEFPQSxJT1NULElDWCxORVQsR05ULFBQVCxSSE9DLFNOVCxBRSxXVEMsVkVSSSxSLFpJTCxCTlQBAAAAFWdldEludGVnZXJGcm9tQWNjb3VudAAAAAIAAAAOYWNjb3VudEFkZHJlc3MAAAADa2V5BAAAAAckbWF0Y2gwCQAEGgAAAAIFAAAADmFjY291bnRBZGRyZXNzBQAAAANrZXkDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAA0ludAQAAAABaQUAAAAHJG1hdGNoMAUAAAABaQAAAAAAAAAAAAEAAAANaXNTdWJzdHJFeGlzdAAAAAIAAAADc3RyAAAABnN1YnN0cgQAAAAHJG1hdGNoMAkABLMAAAACBQAAAANzdHIFAAAABnN1YnN0cgMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAADSW50BAAAAAVpbmRleAUAAAAHJG1hdGNoMAYDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAABFVuaXQEAAAABWluZGV4BQAAAAckbWF0Y2gwBwkBAAAABXRocm93AAAAAAEAAAANaXNWYWxpZFRpY2tlcgAAAAEAAAAGdGlja2VyBAAAAA10aWNrZXJMZXR0ZXJzCQAEtQAAAAIFAAAABnRpY2tlcgIAAAAABAAAAAx0aWNrZXJMZW5ndGgJAAGQAAAAAQUAAAANdGlja2VyTGV0dGVycwQAAAAOaXNMZXR0ZXIxVmFsaWQJAQAAAA1pc1N1YnN0ckV4aXN0AAAAAgUAAAAUdGlja2VyQWxsb3dlZExldHRlcnMJAAGRAAAAAgUAAAANdGlja2VyTGV0dGVycwAAAAAAAAAAAAQAAAAOaXNMZXR0ZXIyVmFsaWQJAQAAAA1pc1N1YnN0ckV4aXN0AAAAAgUAAAAUdGlja2VyQWxsb3dlZExldHRlcnMJAAGRAAAAAgUAAAANdGlja2VyTGV0dGVycwAAAAAAAAAAAQQAAAAOaXNMZXR0ZXIzVmFsaWQJAQAAAA1pc1N1YnN0ckV4aXN0AAAAAgUAAAAUdGlja2VyQWxsb3dlZExldHRlcnMJAAGRAAAAAgUAAAANdGlja2VyTGV0dGVycwAAAAAAAAAAAgQAAAAOaXNMZXR0ZXI0VmFsaWQJAQAAAA1pc1N1YnN0ckV4aXN0AAAAAgUAAAAUdGlja2VyQWxsb3dlZExldHRlcnMJAAGRAAAAAgUAAAANdGlja2VyTGV0dGVycwAAAAAAAAAAAwQAAAAOaXNMZXR0ZXI1VmFsaWQJAQAAAA1pc1N1YnN0ckV4aXN0AAAAAgUAAAAUdGlja2VyQWxsb3dlZExldHRlcnMJAAGRAAAAAgUAAAANdGlja2VyTGV0dGVycwAAAAAAAAAABAQAAAAOaXNMZXR0ZXI2VmFsaWQJAQAAAA1pc1N1YnN0ckV4aXN0AAAAAgUAAAAUdGlja2VyQWxsb3dlZExldHRlcnMJAAGRAAAAAgUAAAANdGlja2VyTGV0dGVycwAAAAAAAAAABQMJAQAAAAIhPQAAAAIFAAAABnRpY2tlcgIAAAAAAwMJAABnAAAAAgUAAAAMdGlja2VyTGVuZ3RoBQAAAA90aWNrZXJNaW5MZW5ndGgJAABnAAAAAgUAAAAPdGlja2VyTWF4TGVuZ3RoBQAAAAx0aWNrZXJMZW5ndGgHAwkAAAAAAAACAAAAAAAAAAABBQAAAAx0aWNrZXJMZW5ndGgFAAAADmlzTGV0dGVyMVZhbGlkAwkAAAAAAAACAAAAAAAAAAACBQAAAAx0aWNrZXJMZW5ndGgDBQAAAA5pc0xldHRlcjFWYWxpZAUAAAAOaXNMZXR0ZXIyVmFsaWQHAwkAAAAAAAACAAAAAAAAAAADBQAAAAx0aWNrZXJMZW5ndGgDAwUAAAAOaXNMZXR0ZXIxVmFsaWQFAAAADmlzTGV0dGVyMlZhbGlkBwUAAAAOaXNMZXR0ZXIzVmFsaWQHAwkAAAAAAAACAAAAAAAAAAAEBQAAAAx0aWNrZXJMZW5ndGgDAwMFAAAADmlzTGV0dGVyMVZhbGlkBQAAAA5pc0xldHRlcjJWYWxpZAcFAAAADmlzTGV0dGVyM1ZhbGlkBwUAAAAOaXNMZXR0ZXI0VmFsaWQHAwkAAAAAAAACAAAAAAAAAAAFBQAAAAx0aWNrZXJMZW5ndGgDAwMDBQAAAA5pc0xldHRlcjFWYWxpZAUAAAAOaXNMZXR0ZXIyVmFsaWQHBQAAAA5pc0xldHRlcjNWYWxpZAcFAAAADmlzTGV0dGVyNFZhbGlkBwUAAAAOaXNMZXR0ZXI1VmFsaWQHAwkAAAAAAAACAAAAAAAAAAAGBQAAAAx0aWNrZXJMZW5ndGgDAwMDAwUAAAAOaXNMZXR0ZXIxVmFsaWQFAAAADmlzTGV0dGVyMlZhbGlkBwUAAAAOaXNMZXR0ZXIzVmFsaWQHBQAAAA5pc0xldHRlcjRWYWxpZAcFAAAADmlzTGV0dGVyNVZhbGlkBwUAAAAOaXNMZXR0ZXI2VmFsaWQHBwcHAQAAABJpc1ZhbGlkRGVzY3JpcHRpb24AAAABAAAAC2Rlc2NyaXB0aW9uBAAAAA9kZXNjcmlwdGlvblNpemUJAAExAAAAAQUAAAALZGVzY3JpcHRpb24DAwkAAGYAAAACBQAAAA9kZXNjcmlwdGlvblNpemUAAAAAAAAAAAAJAABnAAAAAgAAAAAAAAAD6AUAAAAPZGVzY3JpcHRpb25TaXplBwYHAQAAABxpc0Fzc2V0VXBkYXRlQWxsb3dlZEJ5UmF0aW5nAAAAAQAAAAdhc3NldElkBAAAAA5hc3NldFJhdGluZ0tleQkAASwAAAACCQABLAAAAAICAAAADGFzc2V0UmF0aW5nXwUAAAAHYXNzZXRJZAIAAAACXzEEAAAAEGFzc2V0UmF0aW5nVmFsdWUJAQAAABVnZXRJbnRlZ2VyRnJvbUFjY291bnQAAAACBQAAABh0b2tlblJhdGluZ09yYWNsZUFkZHJlc3MFAAAADmFzc2V0UmF0aW5nS2V5BAAAABNhc3NldFJhdGluZ1RyZXNob2xkCQEAAAAVZ2V0SW50ZWdlckZyb21BY2NvdW50AAAAAgUAAAAYdG9rZW5SYXRpbmdPcmFjbGVBZGRyZXNzAgAAAA50aWNrZXJSYXRpbmdfMQkAAGcAAAACBQAAABBhc3NldFJhdGluZ1ZhbHVlBQAAABNhc3NldFJhdGluZ1RyZXNob2xkAQAAABxpc0Fzc2V0VXBkYXRlQWxsb3dlZEJ5V2VpZ2h0AAAAAQAAAAdhc3NldElkBAAAAA5hc3NldFdlaWdodEtleQkAASwAAAACAgAAAAxhc3NldFdlaWdodF8FAAAAB2Fzc2V0SWQEAAAAEGFzc2V0V2VpZ2h0VmFsdWUJAQAAABVnZXRJbnRlZ2VyRnJvbUFjY291bnQAAAACBQAAABh0b2tlblJhdGluZ09yYWNsZUFkZHJlc3MFAAAADmFzc2V0V2VpZ2h0S2V5BAAAABNhc3NldFdlaWdodFRyZXNob2xkCQEAAAAVZ2V0SW50ZWdlckZyb21BY2NvdW50AAAAAgUAAAAYdG9rZW5SYXRpbmdPcmFjbGVBZGRyZXNzAgAAAAx0aWNrZXJXZWlnaHQJAABnAAAAAgUAAAAQYXNzZXRXZWlnaHRWYWx1ZQUAAAATYXNzZXRXZWlnaHRUcmVzaG9sZAEAAAAbaXNBc3NldFVwZGF0ZUFsbG93ZWRCeVZvdGVzAAAAAQAAAAdhc3NldElkBAAAAA1hc3NldFZvdGVzS2V5CQABLAAAAAICAAAAC2Fzc2V0Vm90ZXNfBQAAAAdhc3NldElkBAAAAA9hc3NldFZvdGVzVmFsdWUJAQAAABVnZXRJbnRlZ2VyRnJvbUFjY291bnQAAAACBQAAABh0b2tlblJhdGluZ09yYWNsZUFkZHJlc3MFAAAADWFzc2V0Vm90ZXNLZXkEAAAAEmFzc2V0Vm90ZXNUcmVzaG9sZAkBAAAAFWdldEludGVnZXJGcm9tQWNjb3VudAAAAAIFAAAAGHRva2VuUmF0aW5nT3JhY2xlQWRkcmVzcwIAAAALdGlja2VyVm90ZXMJAABnAAAAAgUAAAAPYXNzZXRWb3Rlc1ZhbHVlBQAAABJhc3NldFZvdGVzVHJlc2hvbGQBAAAAF2lzVXBkYXRlQWxsb3dlZEJ5UmF0aW5nAAAAAQAAAAdhc3NldElkAwMJAQAAABxpc0Fzc2V0VXBkYXRlQWxsb3dlZEJ5UmF0aW5nAAAAAQUAAAAHYXNzZXRJZAkBAAAAHGlzQXNzZXRVcGRhdGVBbGxvd2VkQnlXZWlnaHQAAAABBQAAAAdhc3NldElkBwkBAAAAG2lzQXNzZXRVcGRhdGVBbGxvd2VkQnlWb3RlcwAAAAEFAAAAB2Fzc2V0SWQHAQAAACBnZXRBc3NldElzc3VlckFkZHJlc3NGcm9tQXNzZXRJZAAAAAEAAAAHYXNzZXRJZAkABCUAAAABCAkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAD7AAAAAEJAAJZAAAAAQUAAAAHYXNzZXRJZAUAAAAVbm9uRXhpc3RlbnRBc3NldEVycm9yAAAABmlzc3VlcgEAAAAKZ2V0UGF5bWVudAAAAAEAAAABaQkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCAUAAAABaQAAAAdwYXltZW50BQAAAA5ub1BheW1lbnRFcnJvcgEAAAAQaXNQYXltZW50SW5XYXZlcwAAAAEAAAABaQQAAAAHcGF5bWVudAkBAAAACmdldFBheW1lbnQAAAABBQAAAAFpAwkBAAAAASEAAAABCQEAAAAJaXNEZWZpbmVkAAAAAQgFAAAAB3BheW1lbnQAAAAHYXNzZXRJZAYHAQAAAA9pc0Vub3VnaFBheW1lbnQAAAACAAAAAWkAAAAPcmVxdWlyZWRQYXltZW50BAAAAAdwYXltZW50CQEAAAAKZ2V0UGF5bWVudAAAAAEFAAAAAWkDCQAAZwAAAAIIBQAAAAdwYXltZW50AAAABmFtb3VudAUAAAAPcmVxdWlyZWRQYXltZW50BgcBAAAAE2lzQ2FsbGVyQXNzZXRJc3N1ZXIAAAACAAAAAWkAAAAHYXNzZXRJZAQAAAANY2FsbGVyQWRkcmVzcwkAAlgAAAABCAgFAAAAAWkAAAAGY2FsbGVyAAAABWJ5dGVzBAAAABFhc3NldElzc3VlckFkcmVzcwkBAAAAIGdldEFzc2V0SXNzdWVyQWRkcmVzc0Zyb21Bc3NldElkAAAAAQUAAAAHYXNzZXRJZAMJAAAAAAAAAgUAAAANY2FsbGVyQWRkcmVzcwUAAAARYXNzZXRJc3N1ZXJBZHJlc3MGBwEAAAARaXNBc3NldFN1c3BpY2lvdXMAAAABAAAAB2Fzc2V0SWQEAAAAByRtYXRjaDAJAAQbAAAAAgUAAAAdc3VzcGljaW91c0Fzc2V0c09yYWNsZUFkZHJlc3MFAAAAB2Fzc2V0SWQDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAB0Jvb2xlYW4EAAAAAXQFAAAAByRtYXRjaDAFAAAAAXQDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAABFVuaXQEAAAAAXQFAAAAByRtYXRjaDAHCQEAAAAFdGhyb3cAAAAAAAAAAwAAAAFpAQAAAAx1cGRhdGVUaWNrZXIAAAACAAAAB2Fzc2V0SWQAAAAGdGlja2VyBAAAAA9pc3N1ZXJUaWNrZXJLZXkJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAADWlzc3VlclRpY2tlcl8CAAAAATwFAAAAB2Fzc2V0SWQCAAAAAT4EAAAAEGlzVGlja2VyUmVzZXJ2ZWQJAQAAAA1pc1N1YnN0ckV4aXN0AAAAAgUAAAAPcmVzZXJ2ZWRUaWNrZXJzBQAAAAZ0aWNrZXIEAAAADGlzVGlja2VyRnJlZQQAAAAHJG1hdGNoMAkABB0AAAACBQAAABx0aWNrZXJDYXRhbG9ndWVPcmFjbGVBZGRyZXNzBQAAAAZ0aWNrZXIDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAABlN0cmluZwQAAAABdAUAAAAHJG1hdGNoMAcDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAABFVuaXQEAAAAAXQFAAAAByRtYXRjaDAGCQEAAAAFdGhyb3cAAAAABAAAABlpc1RpY2tlck5vdEFzc2luZWRUb0Fzc2V0BAAAAAckbWF0Y2gwCQAEHQAAAAIFAAAABHRoaXMFAAAAD2lzc3VlclRpY2tlcktleQMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAGU3RyaW5nBAAAAAF0BQAAAAckbWF0Y2gwBwMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAEVW5pdAQAAAABdAUAAAAHJG1hdGNoMAYJAQAAAAV0aHJvdwAAAAADCQEAAAABIQAAAAEJAQAAABFpc0Fzc2V0U3VzcGljaW91cwAAAAEFAAAAB2Fzc2V0SWQDCQEAAAAQaXNQYXltZW50SW5XYXZlcwAAAAEFAAAAAWkDCQEAAAAPaXNFbm91Z2hQYXltZW50AAAAAgUAAAABaQUAAAARdGlja2VyVXBkYXRlUHJpY2UDCQEAAAATaXNDYWxsZXJBc3NldElzc3VlcgAAAAIFAAAAAWkFAAAAB2Fzc2V0SWQDCQEAAAAXaXNVcGRhdGVBbGxvd2VkQnlSYXRpbmcAAAABBQAAAAdhc3NldElkAwUAAAAZaXNUaWNrZXJOb3RBc3NpbmVkVG9Bc3NldAMDBQAAAAxpc1RpY2tlckZyZWUJAQAAAAEhAAAAAQUAAAAQaXNUaWNrZXJSZXNlcnZlZAcDCQEAAAANaXNWYWxpZFRpY2tlcgAAAAEFAAAABnRpY2tlcgkBAAAACFdyaXRlU2V0AAAAAQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgUAAAAPaXNzdWVyVGlja2VyS2V5BQAAAAZ0aWNrZXIFAAAAA25pbAkAAAIAAAABBQAAABV2YWx1ZVdyb25nRm9ybWF0RXJyb3IJAAACAAAAAQUAAAAidGlja2VyVmFsaWRhdGlvblRpY2tlcklzRXhpc3RFcnJvcgkAAAIAAAABBQAAABZ0aWNrZXJJc0ltbXV0YWJsZUVycm9yCQAAAgAAAAEFAAAAJHRpY2tlclZhbGlkYXRpb25Ob3RFbm91Z2hSYXRpbmdFcnJvcgkAAAIAAAABBQAAABdpc3N1ZXJBY2Nlc3NEZW5pZWRFcnJvcgkAAAIAAAABBQAAABVub3RFbm91Z2hQYXltZW50RXJyb3IJAAACAAAAAQUAAAAZbm90U3VwcG9ydGVkQ3VycmVuY3lFcnJvcgkAAAIAAAABBQAAABRzdXNwaWNpb3VzQXNzZXRFcnJvcgAAAAFpAQAAABF1cGRhdGVEZXNjcmlwdGlvbgAAAAIAAAAHYXNzZXRJZAAAAAtkZXNjcmlwdGlvbgQAAAAUaXNzdWVyRGVzY3JpcHRpb25LZXkJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAAEmlzc3VlckRlc2NyaXB0aW9uXwIAAAABPAUAAAAHYXNzZXRJZAIAAAABPgMJAQAAABBpc1BheW1lbnRJbldhdmVzAAAAAQUAAAABaQMJAQAAAA9pc0Vub3VnaFBheW1lbnQAAAACBQAAAAFpBQAAABZkZXNjcmlwdGlvblVwZGF0ZVByaWNlAwkBAAAAE2lzQ2FsbGVyQXNzZXRJc3N1ZXIAAAACBQAAAAFpBQAAAAdhc3NldElkAwkBAAAAEmlzVmFsaWREZXNjcmlwdGlvbgAAAAEFAAAAC2Rlc2NyaXB0aW9uCQEAAAAIV3JpdGVTZXQAAAABCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACBQAAABRpc3N1ZXJEZXNjcmlwdGlvbktleQUAAAALZGVzY3JpcHRpb24FAAAAA25pbAkAAAIAAAABBQAAABV2YWx1ZVdyb25nRm9ybWF0RXJyb3IJAAACAAAAAQUAAAAXaXNzdWVyQWNjZXNzRGVuaWVkRXJyb3IJAAACAAAAAQUAAAAVbm90RW5vdWdoUGF5bWVudEVycm9yCQAAAgAAAAEFAAAAGW5vdFN1cHBvcnRlZEN1cnJlbmN5RXJyb3IAAAABaQEAAAAKdXBkYXRlTGluawAAAAIAAAAHYXNzZXRJZAAAAARsaW5rBAAAAA1pc3N1ZXJMaW5rS2V5CQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAtpc3N1ZXJMaW5rXwIAAAABPAUAAAAHYXNzZXRJZAIAAAABPgMJAQAAABBpc1BheW1lbnRJbldhdmVzAAAAAQUAAAABaQMJAQAAAA9pc0Vub3VnaFBheW1lbnQAAAACBQAAAAFpBQAAAA9saW5rVXBkYXRlUHJpY2UDCQEAAAATaXNDYWxsZXJBc3NldElzc3VlcgAAAAIFAAAAAWkFAAAAB2Fzc2V0SWQJAQAAAAhXcml0ZVNldAAAAAEJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIFAAAADWlzc3VlckxpbmtLZXkFAAAABGxpbmsFAAAAA25pbAkAAAIAAAABBQAAABdpc3N1ZXJBY2Nlc3NEZW5pZWRFcnJvcgkAAAIAAAABBQAAABVub3RFbm91Z2hQYXltZW50RXJyb3IJAAACAAAAAQUAAAAZbm90U3VwcG9ydGVkQ3VycmVuY3lFcnJvcgAAAADbGbrE", "chainId": 84, "height": 710618, "spentComplexity": 0 } View: original | compacted Prev: 4S6fPjvpBc6biWiL5TY2MiSbbrf7NAxcWudm22ALdXgb Next: none Diff:
OldNewDifferences
55
66 let tokenRatingOracleAddress = addressFromStringValue("3NADqHoLMbMTfXdP2TeBBSx5mQXePVj3KZm")
77
8-let suspiciousTokensOracleAddress = addressFromStringValue("3MpaMZHGv2HnePrGNu3NSMq6TkEJid1FHnZ")
8+let suspiciousAssetsOracleAddress = addressFromStringValue("3MpaMZHGv2HnePrGNu3NSMq6TkEJid1FHnZ")
99
1010 let notSupportedCurrencyError = "<notSupportedCurrencyError>"
1111
194194 }
195195
196196
197-func isAssetSuspicious (assetId) = match getBoolean(suspiciousTokensOracleAddress, assetId) {
197+func isAssetSuspicious (assetId) = match getBoolean(suspiciousAssetsOracleAddress, assetId) {
198198 case t: Boolean =>
199199 t
200200 case t: Unit =>
250250 @Callable(i)
251251 func updateDescription (assetId,description) = {
252252 let issuerDescriptionKey = ((("issuerDescription_" + "<") + assetId) + ">")
253- if (!(isAssetSuspicious(assetId)))
254- then if (isPaymentInWaves(i))
255- then if (isEnoughPayment(i, descriptionUpdatePrice))
256- then if (isCallerAssetIssuer(i, assetId))
257- then if (isValidDescription(description))
258- then WriteSet([DataEntry(issuerDescriptionKey, description)])
259- else throw(valueWrongFormatError)
260- else throw(issuerAccessDeniedError)
261- else throw(notEnoughPaymentError)
262- else throw(notSupportedCurrencyError)
263- else throw(suspiciousAssetError)
253+ if (isPaymentInWaves(i))
254+ then if (isEnoughPayment(i, descriptionUpdatePrice))
255+ then if (isCallerAssetIssuer(i, assetId))
256+ then if (isValidDescription(description))
257+ then WriteSet([DataEntry(issuerDescriptionKey, description)])
258+ else throw(valueWrongFormatError)
259+ else throw(issuerAccessDeniedError)
260+ else throw(notEnoughPaymentError)
261+ else throw(notSupportedCurrencyError)
264262 }
265263
266264
268266 @Callable(i)
269267 func updateLink (assetId,link) = {
270268 let issuerLinkKey = ((("issuerLink_" + "<") + assetId) + ">")
271- if (!(isAssetSuspicious(assetId)))
272- then if (isPaymentInWaves(i))
273- then if (isEnoughPayment(i, linkUpdatePrice))
274- then if (isCallerAssetIssuer(i, assetId))
275- then WriteSet([DataEntry(issuerLinkKey, link)])
276- else throw(issuerAccessDeniedError)
277- else throw(notEnoughPaymentError)
278- else throw(notSupportedCurrencyError)
279- else throw(suspiciousAssetError)
269+ if (isPaymentInWaves(i))
270+ then if (isEnoughPayment(i, linkUpdatePrice))
271+ then if (isCallerAssetIssuer(i, assetId))
272+ then WriteSet([DataEntry(issuerLinkKey, link)])
273+ else throw(issuerAccessDeniedError)
274+ else throw(notEnoughPaymentError)
275+ else throw(notSupportedCurrencyError)
280276 }
281277
282278
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 3 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let tickerCatalogueOracleAddress = addressFromStringValue("3MxHxW5VWq4KrWcbhFfxKrafXm4mL6rZHfj")
55
66 let tokenRatingOracleAddress = addressFromStringValue("3NADqHoLMbMTfXdP2TeBBSx5mQXePVj3KZm")
77
8-let suspiciousTokensOracleAddress = addressFromStringValue("3MpaMZHGv2HnePrGNu3NSMq6TkEJid1FHnZ")
8+let suspiciousAssetsOracleAddress = addressFromStringValue("3MpaMZHGv2HnePrGNu3NSMq6TkEJid1FHnZ")
99
1010 let notSupportedCurrencyError = "<notSupportedCurrencyError>"
1111
1212 let issuerAccessDeniedError = "<issuerAccessDeniedError>"
1313
1414 let notEnoughPaymentError = "<notEnoughPaymentError>"
1515
1616 let tickerValidationNotEnoughRatingError = "<tickerValidationNotEnoughRatingError>"
1717
1818 let tickerValidationTickerIsExistError = "<tickerValidationTickerIsExistError>"
1919
2020 let valueWrongFormatError = "<valueWrongFormatError>"
2121
2222 let nonExistentAssetError = "<nonExistentAssetError>"
2323
2424 let noPaymentError = "<noPaymentError>"
2525
2626 let tickerIsImmutableError = "<tickerIsImmutableError>"
2727
2828 let suspiciousAssetError = "<suspiciousAssetError>"
2929
3030 let wvs = 100000000
3131
3232 let tickerUpdatePrice = (5 * wvs)
3333
3434 let linkUpdatePrice = 50000000
3535
3636 let descriptionUpdatePrice = 50000000
3737
3838 let tickerMinLength = 1
3939
4040 let tickerMaxLength = 6
4141
4242 let tickerAllowedLetters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
4343
4444 let reservedTickers = "BTC,ETH,XRP,BCH,LTC,BNB,USDT,EOS,BSV,XMR,XLM,LEO,ADA,TRX,DASH,LINK,XTZ,NEO,MIOTA,ETC,ATOM,XEM,MKR,CRO,USDC,ONT,VSYS,ZEC,DOGE,VET,DCR,HT,BAT,BTG,QTUM,HEDG,TUSD,PAX,EGT,OMG,ALGO,KCS,RVN,LSK,NANO,BTT,BCD,NRG,LAMB,HOT,BCN,DGB,REP,BTS,ZRX,XIN,AOA,IOST,ICX,NET,GNT,PPT,RHOC,SNT,AE,WTC,VERI,R,ZIL,BNT"
4545
4646 func getIntegerFromAccount (accountAddress,key) = match getInteger(accountAddress, key) {
4747 case i: Int =>
4848 i
4949 case _ =>
5050 0
5151 }
5252
5353
5454 func isSubstrExist (str,substr) = match indexOf(str, substr) {
5555 case index: Int =>
5656 true
5757 case index: Unit =>
5858 false
5959 case _ =>
6060 throw()
6161 }
6262
6363
6464 func isValidTicker (ticker) = {
6565 let tickerLetters = split(ticker, "")
6666 let tickerLength = size(tickerLetters)
6767 let isLetter1Valid = isSubstrExist(tickerAllowedLetters, tickerLetters[0])
6868 let isLetter2Valid = isSubstrExist(tickerAllowedLetters, tickerLetters[1])
6969 let isLetter3Valid = isSubstrExist(tickerAllowedLetters, tickerLetters[2])
7070 let isLetter4Valid = isSubstrExist(tickerAllowedLetters, tickerLetters[3])
7171 let isLetter5Valid = isSubstrExist(tickerAllowedLetters, tickerLetters[4])
7272 let isLetter6Valid = isSubstrExist(tickerAllowedLetters, tickerLetters[5])
7373 if ((ticker != ""))
7474 then if (if ((tickerLength >= tickerMinLength))
7575 then (tickerMaxLength >= tickerLength)
7676 else false)
7777 then if ((1 == tickerLength))
7878 then isLetter1Valid
7979 else if ((2 == tickerLength))
8080 then if (isLetter1Valid)
8181 then isLetter2Valid
8282 else false
8383 else if ((3 == tickerLength))
8484 then if (if (isLetter1Valid)
8585 then isLetter2Valid
8686 else false)
8787 then isLetter3Valid
8888 else false
8989 else if ((4 == tickerLength))
9090 then if (if (if (isLetter1Valid)
9191 then isLetter2Valid
9292 else false)
9393 then isLetter3Valid
9494 else false)
9595 then isLetter4Valid
9696 else false
9797 else if ((5 == tickerLength))
9898 then if (if (if (if (isLetter1Valid)
9999 then isLetter2Valid
100100 else false)
101101 then isLetter3Valid
102102 else false)
103103 then isLetter4Valid
104104 else false)
105105 then isLetter5Valid
106106 else false
107107 else if ((6 == tickerLength))
108108 then if (if (if (if (if (isLetter1Valid)
109109 then isLetter2Valid
110110 else false)
111111 then isLetter3Valid
112112 else false)
113113 then isLetter4Valid
114114 else false)
115115 then isLetter5Valid
116116 else false)
117117 then isLetter6Valid
118118 else false
119119 else false
120120 else false
121121 else false
122122 }
123123
124124
125125 func isValidDescription (description) = {
126126 let descriptionSize = size(description)
127127 if (if ((descriptionSize > 0))
128128 then (1000 >= descriptionSize)
129129 else false)
130130 then true
131131 else false
132132 }
133133
134134
135135 func isAssetUpdateAllowedByRating (assetId) = {
136136 let assetRatingKey = (("assetRating_" + assetId) + "_1")
137137 let assetRatingValue = getIntegerFromAccount(tokenRatingOracleAddress, assetRatingKey)
138138 let assetRatingTreshold = getIntegerFromAccount(tokenRatingOracleAddress, "tickerRating_1")
139139 (assetRatingValue >= assetRatingTreshold)
140140 }
141141
142142
143143 func isAssetUpdateAllowedByWeight (assetId) = {
144144 let assetWeightKey = ("assetWeight_" + assetId)
145145 let assetWeightValue = getIntegerFromAccount(tokenRatingOracleAddress, assetWeightKey)
146146 let assetWeightTreshold = getIntegerFromAccount(tokenRatingOracleAddress, "tickerWeight")
147147 (assetWeightValue >= assetWeightTreshold)
148148 }
149149
150150
151151 func isAssetUpdateAllowedByVotes (assetId) = {
152152 let assetVotesKey = ("assetVotes_" + assetId)
153153 let assetVotesValue = getIntegerFromAccount(tokenRatingOracleAddress, assetVotesKey)
154154 let assetVotesTreshold = getIntegerFromAccount(tokenRatingOracleAddress, "tickerVotes")
155155 (assetVotesValue >= assetVotesTreshold)
156156 }
157157
158158
159159 func isUpdateAllowedByRating (assetId) = if (if (isAssetUpdateAllowedByRating(assetId))
160160 then isAssetUpdateAllowedByWeight(assetId)
161161 else false)
162162 then isAssetUpdateAllowedByVotes(assetId)
163163 else false
164164
165165
166166 func getAssetIssuerAddressFromAssetId (assetId) = toString(valueOrErrorMessage(assetInfo(fromBase58String(assetId)), nonExistentAssetError).issuer)
167167
168168
169169 func getPayment (i) = valueOrErrorMessage(i.payment, noPaymentError)
170170
171171
172172 func isPaymentInWaves (i) = {
173173 let payment = getPayment(i)
174174 if (!(isDefined(payment.assetId)))
175175 then true
176176 else false
177177 }
178178
179179
180180 func isEnoughPayment (i,requiredPayment) = {
181181 let payment = getPayment(i)
182182 if ((payment.amount >= requiredPayment))
183183 then true
184184 else false
185185 }
186186
187187
188188 func isCallerAssetIssuer (i,assetId) = {
189189 let callerAddress = toBase58String(i.caller.bytes)
190190 let assetIssuerAdress = getAssetIssuerAddressFromAssetId(assetId)
191191 if ((callerAddress == assetIssuerAdress))
192192 then true
193193 else false
194194 }
195195
196196
197-func isAssetSuspicious (assetId) = match getBoolean(suspiciousTokensOracleAddress, assetId) {
197+func isAssetSuspicious (assetId) = match getBoolean(suspiciousAssetsOracleAddress, assetId) {
198198 case t: Boolean =>
199199 t
200200 case t: Unit =>
201201 false
202202 case _ =>
203203 throw()
204204 }
205205
206206
207207 @Callable(i)
208208 func updateTicker (assetId,ticker) = {
209209 let issuerTickerKey = ((("issuerTicker_" + "<") + assetId) + ">")
210210 let isTickerReserved = isSubstrExist(reservedTickers, ticker)
211211 let isTickerFree = match getString(tickerCatalogueOracleAddress, ticker) {
212212 case t: String =>
213213 false
214214 case t: Unit =>
215215 true
216216 case _ =>
217217 throw()
218218 }
219219 let isTickerNotAssinedToAsset = match getString(this, issuerTickerKey) {
220220 case t: String =>
221221 false
222222 case t: Unit =>
223223 true
224224 case _ =>
225225 throw()
226226 }
227227 if (!(isAssetSuspicious(assetId)))
228228 then if (isPaymentInWaves(i))
229229 then if (isEnoughPayment(i, tickerUpdatePrice))
230230 then if (isCallerAssetIssuer(i, assetId))
231231 then if (isUpdateAllowedByRating(assetId))
232232 then if (isTickerNotAssinedToAsset)
233233 then if (if (isTickerFree)
234234 then !(isTickerReserved)
235235 else false)
236236 then if (isValidTicker(ticker))
237237 then WriteSet([DataEntry(issuerTickerKey, ticker)])
238238 else throw(valueWrongFormatError)
239239 else throw(tickerValidationTickerIsExistError)
240240 else throw(tickerIsImmutableError)
241241 else throw(tickerValidationNotEnoughRatingError)
242242 else throw(issuerAccessDeniedError)
243243 else throw(notEnoughPaymentError)
244244 else throw(notSupportedCurrencyError)
245245 else throw(suspiciousAssetError)
246246 }
247247
248248
249249
250250 @Callable(i)
251251 func updateDescription (assetId,description) = {
252252 let issuerDescriptionKey = ((("issuerDescription_" + "<") + assetId) + ">")
253- if (!(isAssetSuspicious(assetId)))
254- then if (isPaymentInWaves(i))
255- then if (isEnoughPayment(i, descriptionUpdatePrice))
256- then if (isCallerAssetIssuer(i, assetId))
257- then if (isValidDescription(description))
258- then WriteSet([DataEntry(issuerDescriptionKey, description)])
259- else throw(valueWrongFormatError)
260- else throw(issuerAccessDeniedError)
261- else throw(notEnoughPaymentError)
262- else throw(notSupportedCurrencyError)
263- else throw(suspiciousAssetError)
253+ if (isPaymentInWaves(i))
254+ then if (isEnoughPayment(i, descriptionUpdatePrice))
255+ then if (isCallerAssetIssuer(i, assetId))
256+ then if (isValidDescription(description))
257+ then WriteSet([DataEntry(issuerDescriptionKey, description)])
258+ else throw(valueWrongFormatError)
259+ else throw(issuerAccessDeniedError)
260+ else throw(notEnoughPaymentError)
261+ else throw(notSupportedCurrencyError)
264262 }
265263
266264
267265
268266 @Callable(i)
269267 func updateLink (assetId,link) = {
270268 let issuerLinkKey = ((("issuerLink_" + "<") + assetId) + ">")
271- if (!(isAssetSuspicious(assetId)))
272- then if (isPaymentInWaves(i))
273- then if (isEnoughPayment(i, linkUpdatePrice))
274- then if (isCallerAssetIssuer(i, assetId))
275- then WriteSet([DataEntry(issuerLinkKey, link)])
276- else throw(issuerAccessDeniedError)
277- else throw(notEnoughPaymentError)
278- else throw(notSupportedCurrencyError)
279- else throw(suspiciousAssetError)
269+ if (isPaymentInWaves(i))
270+ then if (isEnoughPayment(i, linkUpdatePrice))
271+ then if (isCallerAssetIssuer(i, assetId))
272+ then WriteSet([DataEntry(issuerLinkKey, link)])
273+ else throw(issuerAccessDeniedError)
274+ else throw(notEnoughPaymentError)
275+ else throw(notSupportedCurrencyError)
280276 }
281277
282278

github/deemru/w8io/3ef1775 
74.46 ms