tx · FME4UqH6aA3AD17VG3pvHwYNEJBrCtPgNhDX7PVnykT3

3MyyAeXqmeAekn5gcABtKfc7PHxU5wRwKYo:  -0.01000000 Waves

2020.05.16 11:45 [1000559] smart account 3MyyAeXqmeAekn5gcABtKfc7PHxU5wRwKYo > SELF 0.00000000 Waves

{ "type": 13, "id": "FME4UqH6aA3AD17VG3pvHwYNEJBrCtPgNhDX7PVnykT3", "fee": 1000000, "feeAssetId": null, "timestamp": 1589618790730, "version": 1, "sender": "3MyyAeXqmeAekn5gcABtKfc7PHxU5wRwKYo", "senderPublicKey": "2VMCNS4srpqgnd5fW3U1neeosubZkqHiCHy562BgrXJj", "proofs": [ "4AiTae2Upawt5NuqqjgC7dBoXgWBrVDWiw5HW3rBunm12N6Xscg8aBqohvjvVaLToFDuwY8SNyfW1Lhvq17kuBaS" ], "script": "base64:AAIDAAAAAAAAABwIARINCgsICAEBAQgICAEBCBIJCgcBCAEBAQEBAAAARwAAAAAXcmVzY3VlVGltZUNvbmRpdGlvbkxlc3MCAAAABGxlc3MAAAAAF3Jlc2N1ZVRpbWVDb25kaXRpb25Nb3JlAgAAAARtb3JlAAAAACByZXNjdWVUaW1lQ2F0ZWdvcnlWZXJ5UHJvZHVjdGl2ZQIAAAAOdmVyeVByb2R1Y3RpdmUAAAAAHHJlc2N1ZVRpbWVDYXRlZ29yeVByb2R1Y3RpdmUCAAAACnByb2R1Y3RpdmUAAAAAGXJlc2N1ZVRpbWVDYXRlZ29yeU5ldXRyYWwCAAAAB25ldXRyYWwAAAAAHXJlc2N1ZVRpbWVDYXRlZ29yeURpc3RyYWN0aW5nAgAAAAtkaXN0cmFjdGluZwAAAAAhcmVzY3VlVGltZUNhdGVnb3J5VmVyeURpc3RyYWN0aW5nAgAAAA92ZXJ5RGlzdHJhY3RpbmcAAAAAEWdvYWxTdGF0dXNQZW5kaW5nAgAAAAdwZW5kaW5nAAAAABBnb2FsU3RhdHVzQWN0aXZlAgAAAAZhY3RpdmUAAAAAD2dvYWxTdGF0dXNQYXVzZQIAAAAFcGF1c2UAAAAAEWdvYWxTdGF0dXNTdWNjZXNzAgAAAAdzdWNjZXNzAAAAAA5nb2FsU3RhdHVzRmFpbAIAAAAEZmFpbAAAAAATcmVjb3JkU3RhdHVzUGVuZGluZwIAAAAHcGVuZGluZwAAAAATcmVjb3JkU3RhdHVzU3VjY2VzcwIAAAAHc3VjY2VzcwAAAAAQcmVjb3JkU3RhdHVzRmFpbAIAAAAEZmFpbAAAAAAdaW50ZWdyYXRpb25TZXJ2aWNlc1Jlc2N1ZVRpbWUCAAAACnJlc2N1ZVRpbWUAAAAADXdlZWtEYXlNb25kYXkCAAAABm1vbmRheQAAAAAOd2Vla0RheVR1ZXNkYXkCAAAAB3R1ZXNkYXkAAAAAEHdlZWtEYXlXZWRuZXNkYXkCAAAACXdlZG5lc2RheQAAAAAPd2Vla0RheVRodXJzZGF5AgAAAAh0aHVyc2RheQAAAAANd2Vla0RheUZyaWRheQIAAAAGZnJpZGF5AAAAAA93ZWVrRGF5U2F0dXJkYXkCAAAACHNhdHVyZGF5AAAAAA13ZWVrRGF5U3VuZGF5AgAAAAZzdW5kYXkAAAAAB25hbWVLZXkCAAAABG5hbWUAAAAADmRlc2NyaXB0aW9uS2V5AgAAAAtkZXNjcmlwdGlvbgAAAAAMc3RhcnREYXRlS2V5AgAAAAlzdGFydERhdGUAAAAACmVuZERhdGVLZXkCAAAAB2VuZERhdGUAAAAAHHJlc2N1ZVRpbWVDb25kaXRpb25BbW91bnRLZXkCAAAAGXJlc2N1ZVRpbWVDb25kaXRpb25BbW91bnQAAAAAFnJlc2N1ZVRpbWVDb25kaXRpb25LZXkCAAAAE3Jlc2N1ZVRpbWVDb25kaXRpb24AAAAAFXJlc2N1ZVRpbWVDYXRlZ29yeUtleQIAAAAScmVzY3VlVGltZUNhdGVnb3J5AAAAABB0cmFja1dlZWtEYXlzS2V5AgAAAA10cmFja1dlZWtEYXlzAAAAAA9hdHRlbXBzQ291bnRLZXkCAAAADGF0dGVtcHNDb3VudAAAAAAGYmV0S2V5AgAAAANiZXQAAAAADWJldEFzc2V0SWRLZXkCAAAACmJldEFzc2V0SWQAAAAADWdvYWxTdGF0dXNLZXkCAAAACmdvYWxTdGF0dXMAAAAADWZhaWxzQ291bnRLZXkCAAAACmZhaWxzQ291bnQAAAAAFWFkbWluQWNjb3VudFB1YmxpY0tleQEAAAAg6/3eHXCC4GZsEnHaP42Wa9g+S1kUsOE81W4E2sP4FSgAAAAAFHVzZXJBY2NvdW50UHVibGljS2V5AQAAACCaD4Um16cvxJmzmm9AhUPG9apE2HpUT9BJb1mJlZEkRgAAAAAUZ29hbEFjY291bnRQdWJsaWNLZXkBAAAAIBYeyQltVqbAkEhqhqorc3NOFh9AebWUop1VVwKfTJxUAQAAABN0aHJvd1VuZGVmaW5lZEVycm9yAAAAAAkAAAIAAAABAgAAAA51bmRlZmluZWRFcnJvcgEAAAAWdGhyb3dPdXRkYXRlZEdvYWxFcnJvcgAAAAAJAAACAAAAAQIAAAARb3V0ZGF0ZWRHb2FsRXJyb3IBAAAAGXRocm93Tm90VHJhY2tXZWVrRGF5RXJyb3IAAAAACQAAAgAAAAECAAAAD25vdFRyYWNrV2Vla0RheQEAAAAXdGhyb3dOb3RBY3RpdmVHb2FsRXJyb3IAAAAACQAAAgAAAAECAAAAEm5vdEFjdGl2ZUdvYWxFcnJvcgEAAAAgdGhyb3dHb2FsUmVjb3JkQWxyZWFkeUFkZGVkRXJyb3IAAAAACQAAAgAAAAECAAAAFmdvYWxSZWNvcmRBbHJlYWR5QWRkZWQBAAAAGnRocm93SXNOb3RBZG1pbkNhbGxlckVycm9yAAAAAAkAAAIAAAABAgAAABVpc05vdEFkbWluQ2FsbGVyRXJyb3IBAAAAGXRocm93SXNOb3RVc2VyQ2FsbGVyRXJyb3IAAAAACQAAAgAAAAECAAAAFGlzTm90VXNlckNhbGxlckVycm9yAQAAABl0aHJvd0lzTm90R29hbENhbGxlckVycm9yAAAAAAkAAAIAAAABAgAAABRpc05vdEdvYWxDYWxsZXJFcnJvcgAAAAAObm9QYXltZW50RXJyb3ICAAAADm5vUGF5bWVudEVycm9yAQAAACZ0aHJvd1Vuc3VwcG9ydGVkRXZlbnRQYXltZW50QXNzZXRFcnJvcgAAAAIAAAANZXhwZWN0ZWRBc3NldAAAAA1yZWNlaXZlZEFzc2V0CQAAAgAAAAEJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAhdW5zdXBwb3J0ZWRFdmVudFBheW1lbnRBc3NldEVycm9yAgAAAAEsCQACWAAAAAEFAAAADWV4cGVjdGVkQXNzZXQCAAAAASwJAAJYAAAAAQUAAAANcmVjZWl2ZWRBc3NldAEAAAAddGhyb3dJbnN1ZmZpY2llbnRQYXltZW50RXJyb3IAAAACAAAAFWV4cGVjdGVkUGF5bWVudEFtb3VudAAAABVyZWNlaXZlZFBheW1lbnRBbW91bnQJAAACAAAAAQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAABhpbnN1ZmZpY2llbnRQYXltZW50RXJyb3ICAAAAASwJAAGkAAAAAQUAAAAVZXhwZWN0ZWRQYXltZW50QW1vdW50AgAAAAEsCQABpAAAAAEFAAAAFXJlY2VpdmVkUGF5bWVudEFtb3VudAEAAAASZ2V0SW50ZWdlclJlY29yZE9yAAAAAwAAAA5hY2NvdW50QWRkcmVzcwAAAANrZXkAAAAHZGVmYXVsdAMJAQAAAAlpc0RlZmluZWQAAAABCQAEGgAAAAIFAAAABHRoaXMFAAAAA2tleQkBAAAAEUBleHRyTmF0aXZl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aXZlAgAAAAE+AQAAABJnZXRSZWNvcmRTdGF0dXNLZXkAAAABAAAABGRhdGUJAAEsAAAAAgkAASwAAAACAgAAAAhyZWNvcmRfPAkAAaQAAAABBQAAAARkYXRlAgAAAAE+AQAAAA1pc0FkbWluQ2FsbGVyAAAAAQAAAA9jYWxsZXJQdWJsaWNLZXkEAAAAE2NhbGxlckFjY291bnRQdWJLZXkJAAJYAAAAAQUAAAAPY2FsbGVyUHVibGljS2V5BAAAABJhZG1pbkFjY291bnRQdWJLZXkJAAJYAAAAAQUAAAAVYWRtaW5BY2NvdW50UHVibGljS2V5AwkAAAAAAAACBQAAABNjYWxsZXJBY2NvdW50UHViS2V5BQAAABJhZG1pbkFjY291bnRQdWJLZXkGBwEAAAAMaXNVc2VyQ2FsbGVyAAAAAQAAAA9jYWxsZXJQdWJsaWNLZXkEAAAAE2NhbGxlckFjY291bnRQdWJLZXkJAAJYAAAAAQUAAAAPY2FsbGVyUHVibGljS2V5BAAAABF1c2VyQWNjb3VudFB1YktleQkAAlgAAAABBQAAABR1c2VyQWNjb3VudFB1YmxpY0tleQMJAAAAAAAAAgUAAAATY2FsbGVyQWNjb3VudFB1YktleQUAAAARdXNlckFjY291bnRQdWJLZXkGBwEAAAAMaXNHb2FsQ2FsbGVyAAAAAQAAAA9jYWxsZXJQdWJsaWNLZXkEAAAAE2NhbGxlckFjY291bnRQdWJLZXkJAAJYAAAAAQUAAAAPY2FsbGVyUHVibGljS2V5BAAAABFnb2FsQWNjb3VudFB1YktleQkAAlgAAAABBQAAABRnb2FsQWNjb3VudFB1YmxpY0tleQMJAAAAAAAAAgUAAAATY2FsbGVyQWNjb3VudFB1YktleQUAAAARZ29hbEFjY291bnRQdWJLZXkGBwEAAAAYZ2V0UmVjdWV0aW1lUmVjb3JkU3RhdHVzAAAABgAAAARkYXRlAAAADnZlcnlQcm9kdWN0aXZlAAAACnByb2R1Y3RpdmUAAAAHbmV1dHJhbAAAAAtkaXN0cmFjdGluZwAAAA92ZXJ5RGlzdHJhY3RpbmcEAAAAD3JlY29yZFN0YXR1c0tleQkBAAAAEmdldFJlY29yZFN0YXR1c0tleQAAAAEFAAAABGRhdGUEAAAAGXJlc2N1ZVRpbWVDb25kaXRpb25BbW91bnQJAQAAABJnZXRJbnRlZ2VyUmVjb3JkT3IAAAADBQAAAAR0aGlzBQAAABxyZXNjdWVUaW1lQ29uZGl0aW9uQW1vdW50S2V5AAAAAAAAAAAABAAAABNyZXNjdWVUaW1lQ29uZGl0aW9uCQEAAAARQGV4dHJOYXRpdmUoMTA1MykAAAACBQAAAAR0aGlzBQAAABZyZXNjdWVUaW1lQ29uZGl0aW9uS2V5BAAAABJyZXNjdWVUaW1lQ2F0ZWdvcnkJAQAAABFAZXh0ck5hdGl2ZSgxMDUzKQAAAAIFAAAABHRoaXMFAAAAFXJlc2N1ZVRpbWVDYXRlZ29yeUtleQQAAAAPY29uZGl0aW9uUmVzdWx0AwkAAAAAAAACBQAAABNyZXNjdWVUaW1lQ29uZGl0aW9uBQAAABdyZXNjdWVUaW1lQ29uZGl0aW9uTGVzcwMJAAAAAAAAAgUAAAAScmVzY3VlVGltZUNhdGVnb3J5BQAAACByZXNjdWVUaW1lQ2F0ZWdvcnlWZXJ5UHJvZHVjdGl2ZQkAAGcAAAACBQAAABlyZXNjdWVUaW1lQ29uZGl0aW9uQW1vdW50BQAAAA52ZXJ5UHJvZHVjdGl2ZQMJAAAAAAAAAgUAAAAScmVzY3VlVGltZUNhdGVnb3J5BQAAABxyZXNjdWVUaW1lQ2F0ZWdvcnlQcm9kdWN0aXZlCQAAZwAAAAIFAAAAGXJlc2N1ZVRpbWVDb25kaXRpb25BbW91bnQFAAAACnByb2R1Y3RpdmUDCQAAAAAAAAIFAAAAEnJlc2N1ZVRpbWVDYXRlZ29yeQUAAAAZcmVzY3VlVGltZUNhdGVnb3J5TmV1dHJhbAkAAGcAAAACBQAAABlyZXNjdWVUaW1lQ29uZGl0aW9uQW1vdW50BQAAAAduZXV0cmFsAwkAAAAAAAACBQAAABJyZXNjdWVUaW1lQ2F0ZWdvcnkFAAAAHXJlc2N1ZVRpbWVDYXRlZ29yeURpc3RyYWN0aW5nCQAAZwAAAAIFAAAAGXJlc2N1ZVRpbWVDb25kaXRpb25BbW91bnQFAAAAC2Rpc3RyYWN0aW5nCQAAZwAAAAIFAAAAGXJlc2N1ZVRpbWVDb25kaXRpb25BbW91bnQFAAAAD3ZlcnlEaXN0cmFjdGluZwMJAAAAAAAAAgUAAAAScmVzY3VlVGltZUNhdGVnb3J5BQAAACByZXNjdWVUaW1lQ2F0ZWdvcnlWZXJ5UHJvZHVjdGl2ZQkAAGcAAAACBQAAAA52ZXJ5UHJvZHVjdGl2ZQUAAAAZcmVzY3VlVGltZUNvbmRpdGlvbkFtb3VudAMJAAAAAAAAAgUAAAAScmVzY3VlVGltZUNhdGVnb3J5BQAAABxyZXNjdWVUaW1lQ2F0ZWdvcnlQcm9kdWN0aXZlCQAAZwAAAAIFAAAACnByb2R1Y3RpdmUFAAAAGXJlc2N1ZVRpbWVDb25kaXRpb25BbW91bnQDCQAAAAAAAAIFAAAAEnJlc2N1ZVRpbWVDYXRlZ29yeQUAAAAZcmVzY3VlVGltZUNhdGVnb3J5TmV1dHJhbAkAAGcAAAACBQAAAAduZXV0cmFsBQAAABlyZXNjdWVUaW1lQ29uZGl0aW9uQW1vdW50AwkAAAAAAAACBQAAABJyZXNjdWVUaW1lQ2F0ZWdvcnkFAAAAHXJlc2N1ZVRpbWVDYXRlZ29yeURpc3RyYWN0aW5nCQAAZwAAAAIFAAAAC2Rpc3RyYWN0aW5nBQAAABlyZXNjdWVUaW1lQ29uZGl0aW9uQW1vdW50CQAAZwAAAAIFAAAAD3ZlcnlEaXN0cmFjdGluZwUAAAAZcmVzY3VlVGltZUNvbmRpdGlvbkFtb3VudAMJAAAAAAAAAgUAAAAPY29uZGl0aW9uUmVzdWx0BgUAAAATcmVjb3JkU3RhdHVzU3VjY2VzcwUAAAAQcmVjb3JkU3RhdHVzRmFpbAEAAAANZ2V0RmFpbHNDb3VudAAAAAEAAAAMcmVjb3JkU3RhdHVzBAAAAApmYWlsc0NvdW50CQEAAAARQGV4dHJOYXRpdmUoMTA1MCkAAAACBQAAAAR0aGlzBQAAAA1mYWlsc0NvdW50S2V5AwkAAAAAAAACBQAAAAxyZWNvcmRTdGF0dXMFAAAAE3JlY29yZFN0YXR1c1N1Y2Nlc3MFAAAACmZhaWxzQ291bnQJAABkAAAAAgUAAAAKZmFpbHNDb3VudAAAAAAAAAAAAQAAAAIAAAABaQEAAAAFc2V0dXAAAAALAAAABG5hbWUAAAALZGVzY3JpcHRpb24AAAAJc3RhcnREYXRlAAAAB2VuZERhdGUAAAAZcmVzY3VlVGltZUNvbmRpdGlvbkFtb3VudAAAABNyZXNjdWVUaW1lQ29uZGl0aW9uAAAAEnJlc2N1ZVRpbWVDYXRlZ29yeQAAAA10cmFja1dlZWtEYXlzAAAADGF0dGVtcHNDb3VudAAAAANiZXQAAAAKYmV0QXNzZXRJZAQAAAAHcGF5bWVudAkBAAAACmdldFBheW1lbnQAAAABBQAAAAFpBAAAAA1wYXltZW50QW1vdW50CAUAAAAHcGF5bWVudAAAAAZhbW91bnQEAAAADnBheW1lbnRBc3NldElkCQEAAAARZ2V0UGF5bWVudEFzc2V0SWQAAAABBQAAAAdwYXltZW50BAAAAA9pc05vdFVzZXJDYWxsZXIJAQAAAAEhAAAAAQkBAAAADGlzVXNlckNhbGxlcgAAAAEIBQAAAAFpAAAAD2NhbGxlclB1YmxpY0tleQQAAAAaaXNOb3RTdXBwb3J0ZWRQYXltZW50QXNzZXQJAQAAAAIhPQAAAAIFAAAADnBheW1lbnRBc3NldElkCQACWQAAAAEFAAAACmJldEFzc2V0SWQEAAAAFWlzSW5zdWZmaWNpZW50UGF5bWVudAkBAAAAAiE9AAAAAgUAAAANcGF5bWVudEFtb3VudAUAAAADYmV0AwUAAAAaaXNOb3RTdXBwb3J0ZWRQYXltZW50QXNzZXQJAQAAACZ0aHJvd1Vuc3VwcG9ydGVkRXZlbnRQYXltZW50QXNzZXRFcnJvcgAAAAIJAAJZAAAAAQUAAAAKYmV0QXNzZXRJZAUAAAAOcGF5bWVudEFzc2V0SWQDBQAAABVpc0luc3VmZmljaWVudFBheW1lbnQJAQAAAB10aHJvd0luc3VmZmljaWVudFBheW1lbnRFcnJvcgAAAAIFAAAAA2JldAUAAAANcGF5bWVudEFtb3VudAMFAAAAD2lzTm90VXNlckNhbGxlcgkBAAAAGXRocm93SXNOb3RVc2VyQ2FsbGVyRXJyb3IAAAAACQEAAAAIV3JpdGVTZXQAAAABCQAETAAAAAIJAQAAAA9zZXRTdHJpbmdSZWNvcmQAAAACBQAAAA1nb2FsU3RhdHVzS2V5BQAAABBnb2FsU3RhdHVzQWN0aXZlCQAETAAAAAIJAQAAAA9zZXRTdHJpbmdSZWNvcmQAAAACBQAAAAduYW1lS2V5BQAAAARuYW1lCQAETAAAAAIJAQAAAA9zZXRTdHJpbmdSZWNvcmQAAAACBQAAAA5kZXNjcmlwdGlvbktleQUAAAALZGVzY3JpcHRpb24JAARMAAAAAgkBAAAAEHNldEludGVnZXJSZWNvcmQAAAACBQAAAAxzdGFydERhdGVLZXkFAAAACXN0YXJ0RGF0ZQkABEwAAAACCQEAAAAQc2V0SW50ZWdlclJlY29yZAAAAAIFAAAACmVuZERhdGVLZXkFAAAAB2VuZERhdGUJAARMAAAAAgkBAAAAEHNldEludGVnZXJSZWNvcmQAAAACBQAAABxyZXNjdWVUaW1lQ29uZGl0aW9uQW1vdW50S2V5BQAAABlyZXNjdWVUaW1lQ29uZGl0aW9uQW1vdW50CQAETAAAAAIJAQAAAA9zZXRTdHJpbmdSZWNvcmQAAAACBQAAABZyZXNjdWVUaW1lQ29uZGl0aW9uS2V5BQAAABNyZXNjdWVUaW1lQ29uZGl0aW9uCQAETAAAAAIJAQAAAA9zZXRTdHJpbmdSZWNvcmQAAAACBQAAABVyZXNjdWVUaW1lQ2F0ZWdvcnlLZXkFAAAAEnJlc2N1ZVRpbWVDYXRlZ29yeQkABEwAAAACCQEAAAAPc2V0U3RyaW5nUmVjb3JkAAAAAgUAAAAQdHJhY2tXZWVrRGF5c0tleQUAAAANdHJhY2tXZWVrRGF5cwkABEwAAAACCQEAAAAQc2V0SW50ZWdlclJlY29yZAAAAAIFAAAAD2F0dGVtcHNDb3VudEtleQUAAAAMYXR0ZW1wc0NvdW50CQAETAAAAAIJAQAAABBzZXRJbnRlZ2VyUmVjb3JkAAAAAgUAAAAGYmV0S2V5BQAAAANiZXQJAARMAAAAAgkBAAAAD3NldFN0cmluZ1JlY29yZAAAAAIFAAAADWJldEFzc2V0SWRLZXkFAAAACmJldEFzc2V0SWQJAARMAAAAAgkBAAAAEHNldEludGVnZXJSZWNvcmQAAAACBQAAAA1mYWlsc0NvdW50S2V5AAAAAAAAAAAABQAAAANuaWwAAAABaQEAAAAJYWRkUmVjb3JkAAAABwAAABNyZWNvcmREYXRlVGltZXN0YW1wAAAAEXJlY29yZERhdGVXZWVrRGF5AAAADnZlcnlQcm9kdWN0aXZlAAAACnByb2R1Y3RpdmUAAAAHbmV1dHJhbAAAAAtkaXN0cmFjdGluZwAAAA92ZXJ5RGlzdHJhY3RpbmcEAAAAD3JlY29yZFN0YXR1c0tleQkBAAAAEmdldFJlY29yZFN0YXR1c0tleQAAAAEFAAAAE3JlY29yZERhdGVUaW1lc3RhbXAEAAAAA2JldAkBAAAAEUBleHRyTmF0aXZlKDEwNTApAAAAAgUAAAAEdGhpcwUAAAAGYmV0S2V5BAAAAApiZXRBc3NldElkCQEAAAARQGV4dHJOYXRpdmUoMTA1MykAAAACBQAAAAR0aGlzBQAAAA1iZXRBc3NldElkS2V5BAAAAA10cmFja1dlZWtEYXlzCQEAAAARQGV4dHJOYXRpdmUoMTA1MykAAAACBQAAAAR0aGlzBQAAABB0cmFja1dlZWtEYXlzS2V5BAAAABJzdGFydERhdGVUaW1lc3RhbXAJAQAAABJnZXRJbnRlZ2VyUmVjb3JkT3IAAAADBQAAAAR0aGlzBQAAAAxzdGFydERhdGVLZXkAAAAAAAAAAAAEAAAAEGVuZERhdGVUaW1lc3RhbXAJAQAAABJnZXRJbnRlZ2VyUmVjb3JkT3IAAAADBQAAAAR0aGlzBQAAAAplbmREYXRlS2V5AAAAAAAAAAAABAAAAA5pc091dGRhdGVkR29hbAMJAABmAAAAAgUAAAASc3RhcnREYXRlVGltZXN0YW1wBQAAABNyZWNvcmREYXRlVGltZXN0YW1wCQAAZgAAAAIFAAAAE3JlY29yZERhdGVUaW1lc3RhbXAFAAAAEGVuZERhdGVUaW1lc3RhbXAHBAAAAAlpc0VuZERhdGUJAAAAAAAAAgUAAAATcmVjb3JkRGF0ZVRpbWVzdGFtcAUAAAAQZW5kRGF0ZVRpbWVzdGFtcAQAAAARaXNOb3RBY3RpdmVTdGF0dXMJAQAAAAIhPQAAAAIJAQAAAAtnZXRTdHJpbmdPcgAAAAMFAAAABHRoaXMFAAAADWdvYWxTdGF0dXNLZXkFAAAAEWdvYWxTdGF0dXNQZW5kaW5nBQAAABBnb2FsU3RhdHVzQWN0aXZlBAAAABBpc05vdEFkbWluQ2FsbGVyCQEAAAABIQAAAAEJAQAAAA1pc0FkbWluQ2FsbGVyAAAAAQgFAAAAAWkAAAAPY2FsbGVyUHVibGljS2V5BAAAABFpc05vdFRyYWNrV2Vla0RheQkBAAAAASEAAAABCQEAAAANaXNTdWJzdHJFeGlzdAAAAAIFAAAADXRyYWNrV2Vla0RheXMFAAAAEXJlY29yZERhdGVXZWVrRGF5BAAAABhpc0dvYWxSZWNvcmRBbHJlYWR5QWRkZWQJAQAAAA9pc1JlY29yZERlZmluZWQAAAABBQAAAA9yZWNvcmRTdGF0dXNLZXkDBQAAABBpc05vdEFkbWluQ2FsbGVyCQEAAAAadGhyb3dJc05vdEFkbWluQ2FsbGVyRXJyb3IAAAAAAwUAAAAOaXNPdXRkYXRlZEdvYWwJAQAAABZ0aHJvd091dGRhdGVkR29hbEVycm9yAAAAAAMFAAAAEWlzTm90QWN0aXZlU3RhdHVzCQEAAAAXdGhyb3dOb3RBY3RpdmVHb2FsRXJyb3IAAAAAAwUAAAARaXNOb3RUcmFja1dlZWtEYXkJAQAAABl0aHJvd05vdFRyYWNrV2Vla0RheUVycm9yAAAAAAMFAAAAGGlzR29hbFJlY29yZEFscmVhZHlBZGRlZAkBAAAAIHRocm93R29hbFJlY29yZEFscmVhZHlBZGRlZEVycm9yAAAAAAQAAAAMcmVjb3JkU3RhdHVzCQEAAAAYZ2V0UmVjdWV0aW1lUmVjb3JkU3RhdHVzAAAABgUAAAATcmVjb3JkRGF0ZVRpbWVzdGFtcAUAAAAOdmVyeVByb2R1Y3RpdmUFAAAACnByb2R1Y3RpdmUFAAAAB25ldXRyYWwFAAAAC2Rpc3RyYWN0aW5nBQAAAA92ZXJ5RGlzdHJhY3RpbmcEAAAADGF0dGVtcHNDb3VudAkBAAAAEUBleHRyTmF0aXZlKDEwNTApAAAAAgUAAAAEdGhpcwUAAAAPYXR0ZW1wc0NvdW50S2V5BAAAAApmYWlsc0NvdW50CQEAAAANZ2V0RmFpbHNDb3VudAAAAAEFAAAADHJlY29yZFN0YXR1cwQAAAAMaXNGYWlsZWRHb2FsCQAAZgAAAAIFAAAACmZhaWxzQ291bnQFAAAADGF0dGVtcHNDb3VudAQAAAARY2F0ZWdvcmllc0VudHJpZXMJAARMAAAAAgkBAAAAEHNldEludGVnZXJSZWNvcmQAAAACCQEAAAAUZ2V0Q2F0ZWdvcnlSZWNvcmRLZXkAAAACBQAAABNyZWNvcmREYXRlVGltZXN0YW1wBQAAACByZXNjdWVUaW1lQ2F0ZWdvcnlWZXJ5UHJvZHVjdGl2ZQUAAAAOdmVyeVByb2R1Y3RpdmUJAARMAAAAAgkBAAAAEHNldEludGVnZXJSZWNvcmQAAAACCQEAAAAUZ2V0Q2F0ZWdvcnlSZWNvcmRLZXkAAAACBQAAABNyZWNvcmREYXRlVGltZXN0YW1wBQAAABxyZXNjdWVUaW1lQ2F0ZWdvcnlQcm9kdWN0aXZlBQAAAApwcm9kdWN0aXZlCQAETAAAAAIJAQAAABBzZXRJbnRlZ2VyUmVjb3JkAAAAAgkBAAAAFGdldENhdGVnb3J5UmVjb3JkS2V5AAAAAgUAAAATcmVjb3JkRGF0ZVRpbWVzdGFtcAUAAAAZcmVzY3VlVGltZUNhdGVnb3J5TmV1dHJhbAUAAAAHbmV1dHJhbAkABEwAAAACCQEAAAAQc2V0SW50ZWdlclJlY29yZAAAAAIJAQAAABRnZXRDYXRlZ29yeVJlY29yZEtleQAAAAIFAAAAE3JlY29yZERhdGVUaW1lc3RhbXAFAAAAHXJlc2N1ZVRpbWVDYXRlZ29yeURpc3RyYWN0aW5nBQAAAAtkaXN0cmFjdGluZwkABEwAAAACCQEAAAAQc2V0SW50ZWdlclJlY29yZAAAAAIJAQAAABRnZXRDYXRlZ29yeVJlY29yZEtleQAAAAIFAAAAE3JlY29yZERhdGVUaW1lc3RhbXAFAAAAIXJlc2N1ZVRpbWVDYXRlZ29yeVZlcnlEaXN0cmFjdGluZwUAAAAPdmVyeURpc3RyYWN0aW5nBQAAAANuaWwDBQAAAAxpc0ZhaWxlZEdvYWwEAAAAE2FkbWluQWNjb3VudEFkZHJlc3MJAQAAABRhZGRyZXNzRnJvbVB1YmxpY0tleQAAAAEFAAAAFWFkbWluQWNjb3VudFB1YmxpY0tleQkBAAAADFNjcmlwdFJlc3VsdAAAAAIJAQAAAAhXcml0ZVNldAAAAAEJAARMAAAAAgkBAAAAD3NldFN0cmluZ1JlY29yZAAAAAIFAAAADWdvYWxTdGF0dXNLZXkFAAAADmdvYWxTdGF0dXNGYWlsCQAETAAAAAIJAQAAABBzZXRJbnRlZ2VyUmVjb3JkAAAAAgUAAAANZmFpbHNDb3VudEtleQUAAAAKZmFpbHNDb3VudAkABEwAAAACCQEAAAAPc2V0U3RyaW5nUmVjb3JkAAAAAgUAAAAPcmVjb3JkU3Rh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", "chainId": 84, "height": 1000559, "spentComplexity": 0 } View: original | compacted Prev: none Next: none Full:
OldNewDifferences
1-# no script
1+{-# STDLIB_VERSION 3 #-}
2+{-# SCRIPT_TYPE ACCOUNT #-}
3+{-# CONTENT_TYPE DAPP #-}
4+let rescueTimeConditionLess = "less"
5+
6+let rescueTimeConditionMore = "more"
7+
8+let rescueTimeCategoryVeryProductive = "veryProductive"
9+
10+let rescueTimeCategoryProductive = "productive"
11+
12+let rescueTimeCategoryNeutral = "neutral"
13+
14+let rescueTimeCategoryDistracting = "distracting"
15+
16+let rescueTimeCategoryVeryDistracting = "veryDistracting"
17+
18+let goalStatusPending = "pending"
19+
20+let goalStatusActive = "active"
21+
22+let goalStatusPause = "pause"
23+
24+let goalStatusSuccess = "success"
25+
26+let goalStatusFail = "fail"
27+
28+let recordStatusPending = "pending"
29+
30+let recordStatusSuccess = "success"
31+
32+let recordStatusFail = "fail"
33+
34+let integrationServicesRescueTime = "rescueTime"
35+
36+let weekDayMonday = "monday"
37+
38+let weekDayTuesday = "tuesday"
39+
40+let weekDayWednesday = "wednesday"
41+
42+let weekDayThursday = "thursday"
43+
44+let weekDayFriday = "friday"
45+
46+let weekDaySaturday = "saturday"
47+
48+let weekDaySunday = "sunday"
49+
50+let nameKey = "name"
51+
52+let descriptionKey = "description"
53+
54+let startDateKey = "startDate"
55+
56+let endDateKey = "endDate"
57+
58+let rescueTimeConditionAmountKey = "rescueTimeConditionAmount"
59+
60+let rescueTimeConditionKey = "rescueTimeCondition"
61+
62+let rescueTimeCategoryKey = "rescueTimeCategory"
63+
64+let trackWeekDaysKey = "trackWeekDays"
65+
66+let attempsCountKey = "attempsCount"
67+
68+let betKey = "bet"
69+
70+let betAssetIdKey = "betAssetId"
71+
72+let goalStatusKey = "goalStatus"
73+
74+let failsCountKey = "failsCount"
75+
76+let adminAccountPublicKey = base58'GtDLBooknaE8G983yMjhygiyhmpR5tebBScKPw277tj9'
77+
78+let userAccountPublicKey = base58'BNPWfnwQQaiG9SxwTXqNi5sRA5oAU2M4QvQUAoGrnNbf'
79+
80+let goalAccountPublicKey = base58'2VMCNS4srpqgnd5fW3U1neeosubZkqHiCHy562BgrXJj'
81+
82+func throwUndefinedError () = throw("undefinedError")
83+
84+
85+func throwOutdatedGoalError () = throw("outdatedGoalError")
86+
87+
88+func throwNotTrackWeekDayError () = throw("notTrackWeekDay")
89+
90+
91+func throwNotActiveGoalError () = throw("notActiveGoalError")
92+
93+
94+func throwGoalRecordAlreadyAddedError () = throw("goalRecordAlreadyAdded")
95+
96+
97+func throwIsNotAdminCallerError () = throw("isNotAdminCallerError")
98+
99+
100+func throwIsNotUserCallerError () = throw("isNotUserCallerError")
101+
102+
103+func throwIsNotGoalCallerError () = throw("isNotGoalCallerError")
104+
105+
106+let noPaymentError = "noPaymentError"
107+
108+func throwUnsupportedEventPaymentAssetError (expectedAsset,receivedAsset) = throw((((("unsupportedEventPaymentAssetError" + ",") + toBase58String(expectedAsset)) + ",") + toBase58String(receivedAsset)))
109+
110+
111+func throwInsufficientPaymentError (expectedPaymentAmount,receivedPaymentAmount) = throw((((("insufficientPaymentError" + ",") + toString(expectedPaymentAmount)) + ",") + toString(receivedPaymentAmount)))
112+
113+
114+func getIntegerRecordOr (accountAddress,key,default) = if (isDefined(getInteger(this, key)))
115+ then getIntegerValue(this, key)
116+ else default
117+
118+
119+func getIntegerRecord (accountAddress,key) = getIntegerValue(this, key)
120+
121+
122+func setIntegerRecord (key,value) = DataEntry(key, value)
123+
124+
125+func getStringOr (accountAddress,key,default) = if (isDefined(getInteger(this, key)))
126+ then getStringValue(this, key)
127+ else default
128+
129+
130+func getStringRecord (accountAddress,key) = getStringValue(this, key)
131+
132+
133+func setStringRecord (key,value) = DataEntry(key, value)
134+
135+
136+func getBooleanRecord (accountAddress,key) = getBooleanValue(this, key)
137+
138+
139+func setBooleanRecord (key,value) = DataEntry(key, value)
140+
141+
142+func getBinaryRecord (accountAddress,key) = getBinaryValue(this, key)
143+
144+
145+func setBinaryRecord (key,value) = DataEntry(key, value)
146+
147+
148+func isRecordDefined (key) = if (if (if (isDefined(getBinary(this, key)))
149+ then true
150+ else isDefined(getString(this, key)))
151+ then true
152+ else isDefined(getBoolean(this, key)))
153+ then true
154+ else isDefined(getInteger(this, key))
155+
156+
157+func isSubstrExist (str,substr) = match indexOf(str, substr) {
158+ case index: Int =>
159+ true
160+ case index: Unit =>
161+ false
162+ case _ =>
163+ throw()
164+}
165+
166+
167+func getPayment (i) = valueOrErrorMessage(i.payment, noPaymentError)
168+
169+
170+func getPaymentAssetId (payment) = match payment.assetId {
171+ case assetId: ByteVector =>
172+ assetId
173+ case assetId: Unit =>
174+ fromBase58String("WAVES")
175+ case _ =>
176+ throw()
177+}
178+
179+
180+func getCategoryRecordKey (date,rescueTimeCategoryVeryProductive) = (((("record_<" + toString(date)) + ">__category_<") + rescueTimeCategoryVeryProductive) + ">")
181+
182+
183+func getRecordStatusKey (date) = (("record_<" + toString(date)) + ">")
184+
185+
186+func isAdminCaller (callerPublicKey) = {
187+ let callerAccountPubKey = toBase58String(callerPublicKey)
188+ let adminAccountPubKey = toBase58String(adminAccountPublicKey)
189+ if ((callerAccountPubKey == adminAccountPubKey))
190+ then true
191+ else false
192+ }
193+
194+
195+func isUserCaller (callerPublicKey) = {
196+ let callerAccountPubKey = toBase58String(callerPublicKey)
197+ let userAccountPubKey = toBase58String(userAccountPublicKey)
198+ if ((callerAccountPubKey == userAccountPubKey))
199+ then true
200+ else false
201+ }
202+
203+
204+func isGoalCaller (callerPublicKey) = {
205+ let callerAccountPubKey = toBase58String(callerPublicKey)
206+ let goalAccountPubKey = toBase58String(goalAccountPublicKey)
207+ if ((callerAccountPubKey == goalAccountPubKey))
208+ then true
209+ else false
210+ }
211+
212+
213+func getRecuetimeRecordStatus (date,veryProductive,productive,neutral,distracting,veryDistracting) = {
214+ let recordStatusKey = getRecordStatusKey(date)
215+ let rescueTimeConditionAmount = getIntegerRecordOr(this, rescueTimeConditionAmountKey, 0)
216+ let rescueTimeCondition = getStringValue(this, rescueTimeConditionKey)
217+ let rescueTimeCategory = getStringValue(this, rescueTimeCategoryKey)
218+ let conditionResult = if ((rescueTimeCondition == rescueTimeConditionLess))
219+ then if ((rescueTimeCategory == rescueTimeCategoryVeryProductive))
220+ then (rescueTimeConditionAmount >= veryProductive)
221+ else if ((rescueTimeCategory == rescueTimeCategoryProductive))
222+ then (rescueTimeConditionAmount >= productive)
223+ else if ((rescueTimeCategory == rescueTimeCategoryNeutral))
224+ then (rescueTimeConditionAmount >= neutral)
225+ else if ((rescueTimeCategory == rescueTimeCategoryDistracting))
226+ then (rescueTimeConditionAmount >= distracting)
227+ else (rescueTimeConditionAmount >= veryDistracting)
228+ else if ((rescueTimeCategory == rescueTimeCategoryVeryProductive))
229+ then (veryProductive >= rescueTimeConditionAmount)
230+ else if ((rescueTimeCategory == rescueTimeCategoryProductive))
231+ then (productive >= rescueTimeConditionAmount)
232+ else if ((rescueTimeCategory == rescueTimeCategoryNeutral))
233+ then (neutral >= rescueTimeConditionAmount)
234+ else if ((rescueTimeCategory == rescueTimeCategoryDistracting))
235+ then (distracting >= rescueTimeConditionAmount)
236+ else (veryDistracting >= rescueTimeConditionAmount)
237+ if ((conditionResult == true))
238+ then recordStatusSuccess
239+ else recordStatusFail
240+ }
241+
242+
243+func getFailsCount (recordStatus) = {
244+ let failsCount = getIntegerValue(this, failsCountKey)
245+ if ((recordStatus == recordStatusSuccess))
246+ then failsCount
247+ else (failsCount + 1)
248+ }
249+
250+
251+@Callable(i)
252+func setup (name,description,startDate,endDate,rescueTimeConditionAmount,rescueTimeCondition,rescueTimeCategory,trackWeekDays,attempsCount,bet,betAssetId) = {
253+ let payment = getPayment(i)
254+ let paymentAmount = payment.amount
255+ let paymentAssetId = getPaymentAssetId(payment)
256+ let isNotUserCaller = !(isUserCaller(i.callerPublicKey))
257+ let isNotSupportedPaymentAsset = (paymentAssetId != fromBase58String(betAssetId))
258+ let isInsufficientPayment = (paymentAmount != bet)
259+ if (isNotSupportedPaymentAsset)
260+ then throwUnsupportedEventPaymentAssetError(fromBase58String(betAssetId), paymentAssetId)
261+ else if (isInsufficientPayment)
262+ then throwInsufficientPaymentError(bet, paymentAmount)
263+ else if (isNotUserCaller)
264+ then throwIsNotUserCallerError()
265+ else WriteSet([setStringRecord(goalStatusKey, goalStatusActive), setStringRecord(nameKey, name), setStringRecord(descriptionKey, description), setIntegerRecord(startDateKey, startDate), setIntegerRecord(endDateKey, endDate), setIntegerRecord(rescueTimeConditionAmountKey, rescueTimeConditionAmount), setStringRecord(rescueTimeConditionKey, rescueTimeCondition), setStringRecord(rescueTimeCategoryKey, rescueTimeCategory), setStringRecord(trackWeekDaysKey, trackWeekDays), setIntegerRecord(attempsCountKey, attempsCount), setIntegerRecord(betKey, bet), setStringRecord(betAssetIdKey, betAssetId), setIntegerRecord(failsCountKey, 0)])
266+ }
267+
268+
269+
270+@Callable(i)
271+func addRecord (recordDateTimestamp,recordDateWeekDay,veryProductive,productive,neutral,distracting,veryDistracting) = {
272+ let recordStatusKey = getRecordStatusKey(recordDateTimestamp)
273+ let bet = getIntegerValue(this, betKey)
274+ let betAssetId = getStringValue(this, betAssetIdKey)
275+ let trackWeekDays = getStringValue(this, trackWeekDaysKey)
276+ let startDateTimestamp = getIntegerRecordOr(this, startDateKey, 0)
277+ let endDateTimestamp = getIntegerRecordOr(this, endDateKey, 0)
278+ let isOutdatedGoal = if ((startDateTimestamp > recordDateTimestamp))
279+ then (recordDateTimestamp > endDateTimestamp)
280+ else false
281+ let isEndDate = (recordDateTimestamp == endDateTimestamp)
282+ let isNotActiveStatus = (getStringOr(this, goalStatusKey, goalStatusPending) != goalStatusActive)
283+ let isNotAdminCaller = !(isAdminCaller(i.callerPublicKey))
284+ let isNotTrackWeekDay = !(isSubstrExist(trackWeekDays, recordDateWeekDay))
285+ let isGoalRecordAlreadyAdded = isRecordDefined(recordStatusKey)
286+ if (isNotAdminCaller)
287+ then throwIsNotAdminCallerError()
288+ else if (isOutdatedGoal)
289+ then throwOutdatedGoalError()
290+ else if (isNotActiveStatus)
291+ then throwNotActiveGoalError()
292+ else if (isNotTrackWeekDay)
293+ then throwNotTrackWeekDayError()
294+ else if (isGoalRecordAlreadyAdded)
295+ then throwGoalRecordAlreadyAddedError()
296+ else {
297+ let recordStatus = getRecuetimeRecordStatus(recordDateTimestamp, veryProductive, productive, neutral, distracting, veryDistracting)
298+ let attempsCount = getIntegerValue(this, attempsCountKey)
299+ let failsCount = getFailsCount(recordStatus)
300+ let isFailedGoal = (failsCount > attempsCount)
301+ let categoriesEntries = [setIntegerRecord(getCategoryRecordKey(recordDateTimestamp, rescueTimeCategoryVeryProductive), veryProductive), setIntegerRecord(getCategoryRecordKey(recordDateTimestamp, rescueTimeCategoryProductive), productive), setIntegerRecord(getCategoryRecordKey(recordDateTimestamp, rescueTimeCategoryNeutral), neutral), setIntegerRecord(getCategoryRecordKey(recordDateTimestamp, rescueTimeCategoryDistracting), distracting), setIntegerRecord(getCategoryRecordKey(recordDateTimestamp, rescueTimeCategoryVeryDistracting), veryDistracting)]
302+ if (isFailedGoal)
303+ then {
304+ let adminAccountAddress = addressFromPublicKey(adminAccountPublicKey)
305+ ScriptResult(WriteSet([setStringRecord(goalStatusKey, goalStatusFail), setIntegerRecord(failsCountKey, failsCount), setStringRecord(recordStatusKey, recordStatus), categoriesEntries[0], categoriesEntries[1], categoriesEntries[2], categoriesEntries[3], categoriesEntries[4]]), TransferSet([ScriptTransfer(adminAccountAddress, bet, fromBase58String(betAssetId))]))
306+ }
307+ else if (if (isEndDate)
308+ then !(isFailedGoal)
309+ else false)
310+ then {
311+ let userAccountAddress = addressFromPublicKey(userAccountPublicKey)
312+ ScriptResult(WriteSet([setStringRecord(goalStatusKey, goalStatusSuccess), setIntegerRecord(failsCountKey, failsCount), setStringRecord(recordStatusKey, recordStatus), categoriesEntries[0], categoriesEntries[1], categoriesEntries[2], categoriesEntries[3], categoriesEntries[4]]), TransferSet([ScriptTransfer(userAccountAddress, bet, fromBase58String(betAssetId))]))
313+ }
314+ else WriteSet([setIntegerRecord(failsCountKey, failsCount), setStringRecord(recordStatusKey, recordStatus), categoriesEntries[0], categoriesEntries[1], categoriesEntries[2], categoriesEntries[3], categoriesEntries[4]])
315+ }
316+ }
317+
318+

github/deemru/w8io/026f985 
32.05 ms