tx · 8JpJvL5CEiUcjTRDK7xzVmBDL5TfbbipPHAKCjqkJzGJ 3NCfAjLoepWGNk9pdhEP8bpNaGo6Pheu8JQ: -0.01000000 Waves 2020.04.24 21:30 [969125] smart account 3NCfAjLoepWGNk9pdhEP8bpNaGo6Pheu8JQ > SELF 0.00000000 Waves
{ "type": 13, "id": "8JpJvL5CEiUcjTRDK7xzVmBDL5TfbbipPHAKCjqkJzGJ", "fee": 1000000, "feeAssetId": null, "timestamp": 1587753096943, "version": 1, "sender": "3NCfAjLoepWGNk9pdhEP8bpNaGo6Pheu8JQ", "senderPublicKey": "KRr85ooPjphQ7BvGfpJunUQC42EwYH1p2hx2JPtx1DY", "proofs": [ "3UmqQPXxATEWYfx6eAjHfgQ89LAW3BqJzw2tPsPzfZrP2htNp9e9rTA894w5Ed96oNRh5MhrPsker4xdzgaZgCRL" ], "script": "base64:AAIDAAAAAAAAABsIARINCgsICAEBAQgICAgBCBIICgYBAQEBAQEAAABAAAAAABdyZXNjdWVUaW1lQ29uZGl0aW9uTGVzcwIAAAAEbGVzcwAAAAAXcmVzY3VlVGltZUNvbmRpdGlvbk1vcmUCAAAABG1vcmUAAAAAIHJlc2N1ZVRpbWVDYXRlZ29yeVZlcnlQcm9kdWN0aXZlAgAAAA52ZXJ5UHJvZHVjdGl2ZQAAAAAccmVzY3VlVGltZUNhdGVnb3J5UHJvZHVjdGl2ZQIAAAAKcHJvZHVjdGl2ZQAAAAAZcmVzY3VlVGltZUNhdGVnb3J5TmV1dHJhbAIAAAAHbmV1dHJhbAAAAAAdcmVzY3VlVGltZUNhdGVnb3J5RGlzdHJhY3RpbmcCAAAAC2Rpc3RyYWN0aW5nAAAAACFyZXNjdWVUaW1lQ2F0ZWdvcnlWZXJ5RGlzdHJhY3RpbmcCAAAAD3ZlcnlEaXN0cmFjdGluZwAAAAANc3RhdHVzUGVuZGluZwIAAAAHcGVuZGluZwAAAAAMc3RhdHVzQWN0aXZlAgAAAAZhY3RpdmUAAAAAC3N0YXR1c1BhdXNlAgAAAAVwYXVzZQAAAAANc3RhdHVzU3VjY2VzcwIAAAAHc3VjY2VzcwAAAAAKc3RhdHVzRmFpbAIAAAAEZmFpbAAAAAAdaW50ZWdyYXRpb25TZXJ2aWNlc1Jlc2N1ZVRpbWUCAAAACnJlc2N1ZVRpbWUAAAAADXdlZWtEYXlNb25kYXkCAAAABm1vbmRheQAAAAAOd2Vla0RheVR1ZXNkYXkCAAAAB3R1ZXNkYXkAAAAAEHdlZWtEYXlXZWRuZXNkYXkCAAAACXdlZG5lc2RheQAAAAAPd2Vla0RheVRodXJzZGF5AgAAAAh0aHVyc2RheQAAAAANd2Vla0RheUZyaWRheQIAAAAGZnJpZGF5AAAAAA93ZWVrRGF5U2F0dXJkYXkCAAAACHNhdHVyZGF5AAAAAA13ZWVrRGF5U3VuZGF5AgAAAAZzdW5kYXkAAAAACXN0YXR1c0tleQIAAAAGc3RhdHVzAAAAAAduYW1lS2V5AgAAAARuYW1lAAAAAA5kZXNjcmlwdGlvbktleQIAAAALZGVzY3JpcHRpb24AAAAADHN0YXJ0RGF0ZUtleQIAAAAJc3RhcnREYXRlAAAAAAplbmREYXRlS2V5AgAAAAdlbmREYXRlAAAAABxyZXNjdWVUaW1lQ29uZGl0aW9uQW1vdW50S2V5AgAAABlyZXNjdWVUaW1lQ29uZGl0aW9uQW1vdW50AAAAABZyZXNjdWVUaW1lQ29uZGl0aW9uS2V5AgAAABNyZXNjdWVUaW1lQ29uZGl0aW9uAAAAABVyZXNjdWVUaW1lQ2F0ZWdvcnlLZXkCAAAAEnJlc2N1ZVRpbWVDYXRlZ29yeQAAAAAMdHJhY2tEYXlzS2V5AgAAAAl0cmFja0RheXMAAAAAD2F0dGVtcHNDb3VudEtleQIAAAAMYXR0ZW1wc0NvdW50AAAAABZmYWlsZWRBdHRlbXB0c0NvdW50S2V5AgAAABNmYWlsZWRBdHRlbXB0c0NvdW50AAAAAAZiZXRLZXkCAAAAA2JldAAAAAANYmV0QXNzZXRJZEtleQIAAAAKYmV0QXNzZXRJZAAAAAAVYWRtaW5BY2NvdW50UHVibGljS2V5AQAAACDr/d4dcILgZmwScdo/jZZr2D5LWRSw4TzVbgTaw/gVKAAAAAAUdXNlckFjY291bnRQdWJsaWNLZXkBAAAAIJoPhSbXpy/EmbOab0CFQ8b1qkTYelRP0ElvWYmVkSRGAAAAABRnb2FsQWNjb3VudFB1YmxpY0tleQEAAAAgBLiMkIRGhQvxp1BchlIEir/LdsCVnsqblmlVOf5Hbx8BAAAAE3Rocm93VW5kZWZpbmVkRXJyb3IAAAAACQAAAgAAAAECAAAADnVuZGVmaW5lZEVycm9yAQAAABZ0aHJvd091dGRhdGVkR29hbEVycm9yAAAAAAkAAAIAAAABAgAAABFvdXRkYXRlZEdvYWxFcnJvcgEAAAAXdGhyb3dOb3RBY3RpdmVHb2FsRXJyb3IAAAAACQAAAgAAAAECAAAAEm5vdEFjdGl2ZUdvYWxFcnJvcgEAAAAadGhyb3dJc05vdEFkbWluQ2FsbGVyRXJyb3IAAAAACQAAAgAAAAECAAAAFWlzTm90QWRtaW5DYWxsZXJFcnJvcgEAAAAZdGhyb3dJc05vdFVzZXJDYWxsZXJFcnJvcgAAAAAJAAACAAAAAQIAAAAUaXNOb3RVc2VyQ2FsbGVyRXJyb3IBAAAAGXRocm93SXNOb3RHb2FsQ2FsbGVyRXJyb3IAAAAACQAAAgAAAAECAAAAFGlzTm90R29hbENhbGxlckVycm9yAAAAAA5ub1BheW1lbnRFcnJvcgIAAAAObm9QYXltZW50RXJyb3IBAAAAJnRocm93VW5zdXBwb3J0ZWRFdmVudFBheW1lbnRBc3NldEVycm9yAAAAAgAAAA1leHBlY3RlZEFzc2V0AAAADXJlY2VpdmVkQXNzZXQJAAACAAAAAQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAACF1bnN1cHBvcnRlZEV2ZW50UGF5bWVudEFzc2V0RXJyb3ICAAAAASwJAAJYAAAAAQUAAAANZXhwZWN0ZWRBc3NldAIAAAABLAkAAlgAAAABBQAAAA1yZWNlaXZlZEFzc2V0AQAAAB10aHJvd0luc3VmZmljaWVudFBheW1lbnRFcnJvcgAAAAIAAAAVZXhwZWN0ZWRQYXltZW50QW1vdW50AAAAFXJlY2VpdmVkUGF5bWVudEFtb3VudAkAAAIAAAABCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAAGGluc3VmZmljaWVudFBheW1lbnRFcnJvcgIAAAABLAkAAaQAAAABBQAAABVleHBlY3RlZFBheW1lbnRBbW91bnQCAAAAASwJAAGkAAAAAQUAAAAVcmVjZWl2ZWRQYXltZW50QW1vdW50AQAAABJnZXRJbnRlZ2VyUmVjb3JkT3IAAAADAAAADmFjY291bnRBZGRyZXNzAAAAA2tleQAAAAdkZWZhdWx0AwkBAAAACWlzRGVmaW5lZAAAAAEJAAQaAAAAAgUAAAAEdGhpcwUAAAADa2V5CQEAAAARQGV4dHJOYXRpdmUoMTA1MCkAAAACBQAAAAR0aGlzBQAAAANrZXkFAAAAB2RlZmF1bHQBAAAAEGdldEludGVnZXJSZWNvcmQAAAACAAAADmFjY291bnRBZGRyZXNzAAAAA2tleQkBAAAAEUBleHRyTmF0aXZlKDEwNTApAAAAAgUAAAAEdGhpcwUAAAADa2V5AQAAABBzZXRJbnRlZ2VyUmVjb3JkAAAAAgAAAANrZXkAAAAFdmFsdWUJAQAAAAlEYXRhRW50cnkAAAACBQAAAANrZXkFAAAABXZhbHVlAQAAAAtnZXRTdHJpbmdPcgAAAAMAAAAOYWNjb3VudEFkZHJlc3MAAAADa2V5AAAAB2RlZmF1bHQDCQEAAAAJaXNEZWZpbmVkAAAAAQkABBoAAAACBQAAAAR0aGlzBQAAAANrZXkJAQAAABFAZXh0ck5hdGl2ZSgxMDUzKQAAAAIFAAAABHRoaXMFAAAAA2tleQUAAAAHZGVmYXVsdAEAAAAPZ2V0U3RyaW5nUmVjb3JkAAAAAgAAAA5hY2NvdW50QWRkcmVzcwAAAANrZXkJAQAAABFAZXh0ck5hdGl2ZSgxMDUzKQAAAAIFAAAABHRoaXMFAAAAA2tleQEAAAAPc2V0U3RyaW5nUmVjb3JkAAAAAgAAAANrZXkAAAAFdmFsdWUJAQAAAAlEYXRhRW50cnkAAAACBQAAAANrZXkFAAAABXZhbHVlAQAAABBnZXRCb29sZWFuUmVjb3JkAAAAAgAAAA5hY2NvdW50QWRkcmVzcwAAAANrZXkJAQAAABFAZXh0ck5hdGl2ZSgxMDUxKQAAAAIFAAAABHRoaXMFAAAAA2tleQEAAAAQc2V0Qm9vbGVhblJlY29yZAAAAAIAAAADa2V5AAAABXZhbHVlCQEAAAAJRGF0YUVudHJ5AAAAAgUAAAADa2V5BQAAAAV2YWx1ZQEAAAAPZ2V0QmluYXJ5UmVjb3JkAAAAAgAAAA5hY2NvdW50QWRkcmVzcwAAAANrZXkJAQAAABFAZXh0ck5hdGl2ZSgxMDUyKQAAAAIFAAAABHRoaXMFAAAAA2tleQEAAAAPc2V0QmluYXJ5UmVjb3JkAAAAAgAAAANrZXkAAAAFdmFsdWUJAQAAAAlEYXRhRW50cnkAAAACBQAAAANrZXkFAAAABXZhbHVlAQAAAA9pc1JlY29yZERlZmluZWQAAAABAAAAA2tleQMDAwkBAAAACWlzRGVmaW5lZAAAAAEJAAQcAAAAAgUAAAAEdGhpcwUAAAADa2V5BgkBAAAACWlzRGVmaW5lZAAAAAEJAAQdAAAAAgUAAAAEdGhpcwUAAAADa2V5BgkBAAAACWlzRGVmaW5lZAAAAAEJAAQbAAAAAgUAAAAEdGhpcwUAAAADa2V5BgkBAAAACWlzRGVmaW5lZAAAAAEJAAQaAAAAAgUAAAAEdGhpcwUAAAADa2V5AQAAAApnZXRQYXltZW50AAAAAQAAAAFpCQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIIBQAAAAFpAAAAB3BheW1lbnQFAAAADm5vUGF5bWVudEVycm9yAQAAABFnZXRQYXltZW50QXNzZXRJZAAAAAEAAAAHcGF5bWVudAQAAAAHJG1hdGNoMAgFAAAAB3BheW1lbnQAAAAHYXNzZXRJZAMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAKQnl0ZVZlY3RvcgQAAAAHYXNzZXRJZAUAAAAHJG1hdGNoMAUAAAAHYXNzZXRJZAMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAEVW5pdAQAAAAHYXNzZXRJZAUAAAAHJG1hdGNoMAkAAlkAAAABAgAAAAVXQVZFUwkBAAAABXRocm93AAAAAAEAAAAdc2V0UmVjdWV0aW1lUmVjb3JkU3RhdHVzVmFsdWUAAAAGAAAABGRhdGUAAAAOdmVyeVByb2R1Y3RpdmUAAAAKcHJvZHVjdGl2ZQAAAAduZXV0cmFsAAAAC2Rpc3RyYWN0aW5nAAAAD3ZlcnlEaXN0cmFjdGluZwQAAAAPcmVjb3JkU3RhdHVzS2V5CQABLAAAAAIJAAEsAAAAAgIAAAAIcmVjb3JkXzwJAAGkAAAAAQUAAAAEZGF0ZQIAAAABPgQAAAAZcmVzY3VlVGltZUNvbmRpdGlvbkFtb3VudAkBAAAAEmdldEludGVnZXJSZWNvcmRPcgAAAAMFAAAABHRoaXMFAAAAHHJlc2N1ZVRpbWVDb25kaXRpb25BbW91bnRLZXkAAAAAAAAAAAAEAAAAE3Jlc2N1ZVRpbWVDb25kaXRpb24JAQAAAA9nZXRTdHJpbmdSZWNvcmQAAAACBQAAAAR0aGlzBQAAABZyZXNjdWVUaW1lQ29uZGl0aW9uS2V5BAAAABJyZXNjdWVUaW1lQ2F0ZWdvcnkJAQAAAA9nZXRTdHJpbmdSZWNvcmQAAAACBQAAAAR0aGlzBQAAABVyZXNjdWVUaW1lQ2F0ZWdvcnlLZXkEAAAAC3N0YXR1c1ZhbHVlAwkAAAAAAAACBQAAABNyZXNjdWVUaW1lQ29uZGl0aW9uBQAAABdyZXNjdWVUaW1lQ29uZGl0aW9uTGVzcwMJAAAAAAAAAgUAAAAScmVzY3VlVGltZUNhdGVnb3J5BQAAACByZXNjdWVUaW1lQ2F0ZWdvcnlWZXJ5UHJvZHVjdGl2ZQkAAGcAAAACBQAAABlyZXNjdWVUaW1lQ29uZGl0aW9uQW1vdW50BQAAAA52ZXJ5UHJvZHVjdGl2ZQMJAAAAAAAAAgUAAAAScmVzY3VlVGltZUNhdGVnb3J5BQAAABxyZXNjdWVUaW1lQ2F0ZWdvcnlQcm9kdWN0aXZlCQAAZwAAAAIFAAAAGXJlc2N1ZVRpbWVDb25kaXRpb25BbW91bnQFAAAACnByb2R1Y3RpdmUDCQAAAAAAAAIFAAAAEnJlc2N1ZVRpbWVDYXRlZ29yeQUAAAAZcmVzY3VlVGltZUNhdGVnb3J5TmV1dHJhbAkAAGcAAAACBQAAABlyZXNjdWVUaW1lQ29uZGl0aW9uQW1vdW50BQAAAAduZXV0cmFsAwkAAAAAAAACBQAAABJyZXNjdWVUaW1lQ2F0ZWdvcnkFAAAAHXJlc2N1ZVRpbWVDYXRlZ29yeURpc3RyYWN0aW5nCQAAZwAAAAIFAAAAGXJlc2N1ZVRpbWVDb25kaXRpb25BbW91bnQFAAAAC2Rpc3RyYWN0aW5nCQAAZwAAAAIFAAAAGXJlc2N1ZVRpbWVDb25kaXRpb25BbW91bnQFAAAAD3ZlcnlEaXN0cmFjdGluZwMJAAAAAAAAAgUAAAAScmVzY3VlVGltZUNhdGVnb3J5BQAAACByZXNjdWVUaW1lQ2F0ZWdvcnlWZXJ5UHJvZHVjdGl2ZQkAAGcAAAACBQAAAA52ZXJ5UHJvZHVjdGl2ZQUAAAAZcmVzY3VlVGltZUNvbmRpdGlvbkFtb3VudAMJAAAAAAAAAgUAAAAScmVzY3VlVGltZUNhdGVnb3J5BQAAABxyZXNjdWVUaW1lQ2F0ZWdvcnlQcm9kdWN0aXZlCQAAZwAAAAIFAAAACnByb2R1Y3RpdmUFAAAAGXJlc2N1ZVRpbWVDb25kaXRpb25BbW91bnQDCQAAAAAAAAIFAAAAEnJlc2N1ZVRpbWVDYXRlZ29yeQUAAAAZcmVzY3VlVGltZUNhdGVnb3J5TmV1dHJhbAkAAGcAAAACBQAAAAduZXV0cmFsBQAAABlyZXNjdWVUaW1lQ29uZGl0aW9uQW1vdW50AwkAAAAAAAACBQAAABJyZXNjdWVUaW1lQ2F0ZWdvcnkFAAAAHXJlc2N1ZVRpbWVDYXRlZ29yeURpc3RyYWN0aW5nCQAAZwAAAAIFAAAAC2Rpc3RyYWN0aW5nBQAAABlyZXNjdWVUaW1lQ29uZGl0aW9uQW1vdW50CQAAZwAAAAIFAAAAD3ZlcnlEaXN0cmFjdGluZwUAAAAZcmVzY3VlVGltZUNvbmRpdGlvbkFtb3VudAkBAAAAEHNldEJvb2xlYW5SZWNvcmQAAAACBQAAAA9yZWNvcmRTdGF0dXNLZXkFAAAAC3N0YXR1c1ZhbHVlAQAAABRnZXRDYXRlZ29yeVJlY29yZEtleQAAAAIAAAAEZGF0ZQAAACByZXNjdWVUaW1lQ2F0ZWdvcnlWZXJ5UHJvZHVjdGl2ZQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAhyZWNvcmRfPAkAAaQAAAABBQAAAARkYXRlAgAAAA0+X19jYXRlZ29yeV88BQAAACByZXNjdWVUaW1lQ2F0ZWdvcnlWZXJ5UHJvZHVjdGl2ZQIAAAABPgEAAAAWc2V0Q2F0ZWdvcnlSZWNvcmRWYWx1ZQAAAAMAAAAEZGF0ZQAAAAhjYXRlZ29yeQAAAAV2YWx1ZQkBAAAAEHNldEludGVnZXJSZWNvcmQAAAACCQEAAAAUZ2V0Q2F0ZWdvcnlSZWNvcmRLZXkAAAACBQAAAARkYXRlBQAAAAhjYXRlZ29yeQUAAAAFdmFsdWUBAAAADWlzQWRtaW5DYWxsZXIAAAABAAAAD2NhbGxlclB1YmxpY0tleQQAAAATY2FsbGVyQWNjb3VudFB1YktleQkAAlgAAAABBQAAAA9jYWxsZXJQdWJsaWNLZXkEAAAAEmFkbWluQWNjb3VudFB1YktleQkAAlgAAAABBQAAABVhZG1pbkFjY291bnRQdWJsaWNLZXkDCQAAAAAAAAIFAAAAE2NhbGxlckFjY291bnRQdWJLZXkFAAAAEmFkbWluQWNjb3VudFB1YktleQYHAQAAAAxpc1VzZXJDYWxsZXIAAAABAAAAD2NhbGxlclB1YmxpY0tleQQAAAATY2FsbGVyQWNjb3VudFB1YktleQkAAlgAAAABBQAAAA9jYWxsZXJQdWJsaWNLZXkEAAAAEXVzZXJBY2NvdW50UHViS2V5CQACWAAAAAEFAAAAFHVzZXJBY2NvdW50UHVibGljS2V5AwkAAAAAAAACBQAAABNjYWxsZXJBY2NvdW50UHViS2V5BQAAABF1c2VyQWNjb3VudFB1YktleQYHAQAAAAxpc0dvYWxDYWxsZXIAAAABAAAAD2NhbGxlclB1YmxpY0tleQQAAAATY2FsbGVyQWNjb3VudFB1YktleQkAAlgAAAABBQAAAA9jYWxsZXJQdWJsaWNLZXkEAAAAEWdvYWxBY2NvdW50UHViS2V5CQACWAAAAAEFAAAAFGdvYWxBY2NvdW50UHVibGljS2V5AwkAAAAAAAACBQAAABNjYWxsZXJBY2NvdW50UHViS2V5BQAAABFnb2FsQWNjb3VudFB1YktleQYHAAAAAgAAAAFpAQAAAAVzZXR1cAAAAAsAAAAEbmFtZQAAAAtkZXNjcmlwdGlvbgAAAAlzdGFydERhdGUAAAAHZW5kRGF0ZQAAABlyZXNjdWVUaW1lQ29uZGl0aW9uQW1vdW50AAAAE3Jlc2N1ZVRpbWVDb25kaXRpb24AAAAScmVzY3VlVGltZUNhdGVnb3J5AAAACXRyYWNrRGF5cwAAAAxhdHRlbXBzQ291bnQAAAADYmV0AAAACmJldEFzc2V0SWQEAAAAB3BheW1lbnQJAQAAAApnZXRQYXltZW50AAAAAQUAAAABaQQAAAANcGF5bWVudEFtb3VudAgFAAAAB3BheW1lbnQAAAAGYW1vdW50BAAAAA5wYXltZW50QXNzZXRJZAkBAAAAEWdldFBheW1lbnRBc3NldElkAAAAAQUAAAAHcGF5bWVudAQAAAAPaXNOb3RVc2VyQ2FsbGVyCQEAAAABIQAAAAEJAQAAAAxpc1VzZXJDYWxsZXIAAAABCAUAAAABaQAAAA9jYWxsZXJQdWJsaWNLZXkEAAAAGmlzTm90U3VwcG9ydGVkUGF5bWVudEFzc2V0CQEAAAACIT0AAAACBQAAAA5wYXltZW50QXNzZXRJZAkAAlkAAAABBQAAAApiZXRBc3NldElkBAAAABVpc0luc3VmZmljaWVudFBheW1lbnQJAQAAAAIhPQAAAAIFAAAADXBheW1lbnRBbW91bnQFAAAAA2JldAMFAAAAGmlzTm90U3VwcG9ydGVkUGF5bWVudEFzc2V0CQEAAAAmdGhyb3dVbnN1cHBvcnRlZEV2ZW50UGF5bWVudEFzc2V0RXJyb3IAAAACCQACWQAAAAEFAAAACmJldEFzc2V0SWQFAAAADnBheW1lbnRBc3NldElkAwUAAAAVaXNJbnN1ZmZpY2llbnRQYXltZW50CQEAAAAddGhyb3dJbnN1ZmZpY2llbnRQYXltZW50RXJyb3IAAAACBQAAAANiZXQFAAAADXBheW1lbnRBbW91bnQDBQAAAA9pc05vdFVzZXJDYWxsZXIJAQAAABl0aHJvd0lzTm90VXNlckNhbGxlckVycm9yAAAAAAkBAAAACFdyaXRlU2V0AAAAAQkABEwAAAACCQEAAAAPc2V0U3RyaW5nUmVjb3JkAAAAAgUAAAAJc3RhdHVzS2V5BQAAAAxzdGF0dXNBY3RpdmUJAARMAAAAAgkBAAAAD3NldFN0cmluZ1JlY29yZAAAAAIFAAAAB25hbWVLZXkFAAAABG5hbWUJAARMAAAAAgkBAAAAD3NldFN0cmluZ1JlY29yZAAAAAIFAAAADmRlc2NyaXB0aW9uS2V5BQAAAAtkZXNjcmlwdGlvbgkABEwAAAACCQEAAAAQc2V0SW50ZWdlclJlY29yZAAAAAIFAAAADHN0YXJ0RGF0ZUtleQUAAAAJc3RhcnREYXRlCQAETAAAAAIJAQAAABBzZXRJbnRlZ2VyUmVjb3JkAAAAAgUAAAAKZW5kRGF0ZUtleQUAAAAHZW5kRGF0ZQkABEwAAAACCQEAAAAQc2V0SW50ZWdlclJlY29yZAAAAAIFAAAAHHJlc2N1ZVRpbWVDb25kaXRpb25BbW91bnRLZXkFAAAAGXJlc2N1ZVRpbWVDb25kaXRpb25BbW91bnQJAARMAAAAAgkBAAAAD3NldFN0cmluZ1JlY29yZAAAAAIFAAAAFnJlc2N1ZVRpbWVDb25kaXRpb25LZXkFAAAAE3Jlc2N1ZVRpbWVDb25kaXRpb24JAARMAAAAAgkBAAAAD3NldFN0cmluZ1JlY29yZAAAAAIFAAAAFXJlc2N1ZVRpbWVDYXRlZ29yeUtleQUAAAAScmVzY3VlVGltZUNhdGVnb3J5CQAETAAAAAIJAQAAAA9zZXRTdHJpbmdSZWNvcmQAAAACBQAAAAx0cmFja0RheXNLZXkFAAAACXRyYWNrRGF5cwkABEwAAAACCQEAAAAPc2V0U3RyaW5nUmVjb3JkAAAAAgUAAAAPYXR0ZW1wc0NvdW50S2V5BQAAAAxhdHRlbXBzQ291bnQJAARMAAAAAgkBAAAAEHNldEludGVnZXJSZWNvcmQAAAACBQAAABZmYWlsZWRBdHRlbXB0c0NvdW50S2V5AAAAAAAAAAAACQAETAAAAAIJAQAAABBzZXRJbnRlZ2VyUmVjb3JkAAAAAgUAAAAGYmV0S2V5BQAAAANiZXQJAARMAAAAAgkBAAAAD3NldFN0cmluZ1JlY29yZAAAAAIFAAAADWJldEFzc2V0SWRLZXkFAAAACmJldEFzc2V0SWQFAAAAA25pbAAAAAFpAQAAAAlhZGRSZWNvcmQAAAAGAAAABGRhdGUAAAAOdmVyeVByb2R1Y3RpdmUAAAAKcHJvZHVjdGl2ZQAAAAduZXV0cmFsAAAAC2Rpc3RyYWN0aW5nAAAAD3ZlcnlEaXN0cmFjdGluZwQAAAASc3RhcnREYXRlVGltZXN0YW1wCQEAAAASZ2V0SW50ZWdlclJlY29yZE9yAAAAAwUAAAAEdGhpcwIAAAAJc3RhcnREYXRlAAAAAAAAAAAABAAAABBlbmREYXRlVGltZXN0YW1wCQEAAAASZ2V0SW50ZWdlclJlY29yZE9yAAAAAwUAAAAEdGhpcwIAAAAHZW5kRGF0ZQAAAAAAAAAAAAQAAAAOaXNPdXRkYXRlZEdvYWwDCQAAZgAAAAIFAAAAEnN0YXJ0RGF0ZVRpbWVzdGFtcAUAAAAEZGF0ZQkAAGYAAAACBQAAAARkYXRlBQAAABBlbmREYXRlVGltZXN0YW1wBwQAAAARaXNOb3RBY3RpdmVTdGF0dXMJAQAAAAIhPQAAAAIJAQAAAA9nZXRTdHJpbmdSZWNvcmQAAAACBQAAAAR0aGlzAgAAAAZzdGF0dXMFAAAADXN0YXR1c1BlbmRpbmcEAAAAEGlzTm90QWRtaW5DYWxsZXIJAQAAAAEhAAAAAQkBAAAADWlzQWRtaW5DYWxsZXIAAAABCAUAAAABaQAAAA9jYWxsZXJQdWJsaWNLZXkDBQAAABBpc05vdEFkbWluQ2FsbGVyCQEAAAAadGhyb3dJc05vdEFkbWluQ2FsbGVyRXJyb3IAAAAAAwUAAAAOaXNPdXRkYXRlZEdvYWwJAQAAABZ0aHJvd091dGRhdGVkR29hbEVycm9yAAAAAAMFAAAAEWlzTm90QWN0aXZlU3RhdHVzCQEAAAAXdGhyb3dOb3RBY3RpdmVHb2FsRXJyb3IAAAAACQEAAAAIV3JpdGVTZXQAAAABCQAETAAAAAIJAQAAABZzZXRDYXRlZ29yeVJlY29yZFZhbHVlAAAAAwUAAAAEZGF0ZQUAAAAgcmVzY3VlVGltZUNhdGVnb3J5VmVyeVByb2R1Y3RpdmUFAAAADnZlcnlQcm9kdWN0aXZlCQAETAAAAAIJAQAAABZzZXRDYXRlZ29yeVJlY29yZFZhbHVlAAAAAwUAAAAEZGF0ZQUAAAAccmVzY3VlVGltZUNhdGVnb3J5UHJvZHVjdGl2ZQUAAAAKcHJvZHVjdGl2ZQkABEwAAAACCQEAAAAWc2V0Q2F0ZWdvcnlSZWNvcmRWYWx1ZQAAAAMFAAAABGRhdGUFAAAAGXJlc2N1ZVRpbWVDYXRlZ29yeU5ldXRyYWwFAAAAB25ldXRyYWwJAARMAAAAAgkBAAAAFnNldENhdGVnb3J5UmVjb3JkVmFsdWUAAAADBQAAAARkYXRlBQAAAB1yZXNjdWVUaW1lQ2F0ZWdvcnlEaXN0cmFjdGluZwUAAAALZGlzdHJhY3RpbmcJAARMAAAAAgkBAAAAFnNldENhdGVnb3J5UmVjb3JkVmFsdWUAAAADBQAAAARkYXRlBQAAACFyZXNjdWVUaW1lQ2F0ZWdvcnlWZXJ5RGlzdHJhY3RpbmcFAAAAD3ZlcnlEaXN0cmFjdGluZwkABEwAAAACCQEAAAAWc2V0Q2F0ZWdvcnlSZWNvcmRWYWx1ZQAAAAMFAAAABGRhdGUFAAAAIXJlc2N1ZVRpbWVDYXRlZ29yeVZlcnlEaXN0cmFjdGluZwUAAAAPdmVyeURpc3RyYWN0aW5nCQAETAAAAAIJAQAAAB1zZXRSZWN1ZXRpbWVSZWNvcmRTdGF0dXNWYWx1ZQAAAAYFAAAABGRhdGUFAAAADnZlcnlQcm9kdWN0aXZlBQAAAApwcm9kdWN0aXZlBQAAAAduZXV0cmFsBQAAAAtkaXN0cmFjdGluZwUAAAAPdmVyeURpc3RyYWN0aW5nBQAAAANuaWwAAAAA85ZYmQ==", "chainId": 84, "height": 969125, "spentComplexity": 0 } View: original | compacted Prev: none Next: none Full:
Old | New | Differences | |
---|---|---|---|
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 statusPending = "pending" | |
19 | + | ||
20 | + | let statusActive = "active" | |
21 | + | ||
22 | + | let statusPause = "pause" | |
23 | + | ||
24 | + | let statusSuccess = "success" | |
25 | + | ||
26 | + | let statusFail = "fail" | |
27 | + | ||
28 | + | let integrationServicesRescueTime = "rescueTime" | |
29 | + | ||
30 | + | let weekDayMonday = "monday" | |
31 | + | ||
32 | + | let weekDayTuesday = "tuesday" | |
33 | + | ||
34 | + | let weekDayWednesday = "wednesday" | |
35 | + | ||
36 | + | let weekDayThursday = "thursday" | |
37 | + | ||
38 | + | let weekDayFriday = "friday" | |
39 | + | ||
40 | + | let weekDaySaturday = "saturday" | |
41 | + | ||
42 | + | let weekDaySunday = "sunday" | |
43 | + | ||
44 | + | let statusKey = "status" | |
45 | + | ||
46 | + | let nameKey = "name" | |
47 | + | ||
48 | + | let descriptionKey = "description" | |
49 | + | ||
50 | + | let startDateKey = "startDate" | |
51 | + | ||
52 | + | let endDateKey = "endDate" | |
53 | + | ||
54 | + | let rescueTimeConditionAmountKey = "rescueTimeConditionAmount" | |
55 | + | ||
56 | + | let rescueTimeConditionKey = "rescueTimeCondition" | |
57 | + | ||
58 | + | let rescueTimeCategoryKey = "rescueTimeCategory" | |
59 | + | ||
60 | + | let trackDaysKey = "trackDays" | |
61 | + | ||
62 | + | let attempsCountKey = "attempsCount" | |
63 | + | ||
64 | + | let failedAttemptsCountKey = "failedAttemptsCount" | |
65 | + | ||
66 | + | let betKey = "bet" | |
67 | + | ||
68 | + | let betAssetIdKey = "betAssetId" | |
69 | + | ||
70 | + | let adminAccountPublicKey = base58'GtDLBooknaE8G983yMjhygiyhmpR5tebBScKPw277tj9' | |
71 | + | ||
72 | + | let userAccountPublicKey = base58'BNPWfnwQQaiG9SxwTXqNi5sRA5oAU2M4QvQUAoGrnNbf' | |
73 | + | ||
74 | + | let goalAccountPublicKey = base58'KRr85ooPjphQ7BvGfpJunUQC42EwYH1p2hx2JPtx1DY' | |
75 | + | ||
76 | + | func throwUndefinedError () = throw("undefinedError") | |
77 | + | ||
78 | + | ||
79 | + | func throwOutdatedGoalError () = throw("outdatedGoalError") | |
80 | + | ||
81 | + | ||
82 | + | func throwNotActiveGoalError () = throw("notActiveGoalError") | |
83 | + | ||
84 | + | ||
85 | + | func throwIsNotAdminCallerError () = throw("isNotAdminCallerError") | |
86 | + | ||
87 | + | ||
88 | + | func throwIsNotUserCallerError () = throw("isNotUserCallerError") | |
89 | + | ||
90 | + | ||
91 | + | func throwIsNotGoalCallerError () = throw("isNotGoalCallerError") | |
92 | + | ||
93 | + | ||
94 | + | let noPaymentError = "noPaymentError" | |
95 | + | ||
96 | + | func throwUnsupportedEventPaymentAssetError (expectedAsset,receivedAsset) = throw((((("unsupportedEventPaymentAssetError" + ",") + toBase58String(expectedAsset)) + ",") + toBase58String(receivedAsset))) | |
97 | + | ||
98 | + | ||
99 | + | func throwInsufficientPaymentError (expectedPaymentAmount,receivedPaymentAmount) = throw((((("insufficientPaymentError" + ",") + toString(expectedPaymentAmount)) + ",") + toString(receivedPaymentAmount))) | |
100 | + | ||
101 | + | ||
102 | + | func getIntegerRecordOr (accountAddress,key,default) = if (isDefined(getInteger(this, key))) | |
103 | + | then getIntegerValue(this, key) | |
104 | + | else default | |
105 | + | ||
106 | + | ||
107 | + | func getIntegerRecord (accountAddress,key) = getIntegerValue(this, key) | |
108 | + | ||
109 | + | ||
110 | + | func setIntegerRecord (key,value) = DataEntry(key, value) | |
111 | + | ||
112 | + | ||
113 | + | func getStringOr (accountAddress,key,default) = if (isDefined(getInteger(this, key))) | |
114 | + | then getStringValue(this, key) | |
115 | + | else default | |
116 | + | ||
117 | + | ||
118 | + | func getStringRecord (accountAddress,key) = getStringValue(this, key) | |
119 | + | ||
120 | + | ||
121 | + | func setStringRecord (key,value) = DataEntry(key, value) | |
122 | + | ||
123 | + | ||
124 | + | func getBooleanRecord (accountAddress,key) = getBooleanValue(this, key) | |
125 | + | ||
126 | + | ||
127 | + | func setBooleanRecord (key,value) = DataEntry(key, value) | |
128 | + | ||
129 | + | ||
130 | + | func getBinaryRecord (accountAddress,key) = getBinaryValue(this, key) | |
131 | + | ||
132 | + | ||
133 | + | func setBinaryRecord (key,value) = DataEntry(key, value) | |
134 | + | ||
135 | + | ||
136 | + | func isRecordDefined (key) = if (if (if (isDefined(getBinary(this, key))) | |
137 | + | then true | |
138 | + | else isDefined(getString(this, key))) | |
139 | + | then true | |
140 | + | else isDefined(getBoolean(this, key))) | |
141 | + | then true | |
142 | + | else isDefined(getInteger(this, key)) | |
143 | + | ||
144 | + | ||
145 | + | func getPayment (i) = valueOrErrorMessage(i.payment, noPaymentError) | |
146 | + | ||
147 | + | ||
148 | + | func getPaymentAssetId (payment) = match payment.assetId { | |
149 | + | case assetId: ByteVector => | |
150 | + | assetId | |
151 | + | case assetId: Unit => | |
152 | + | fromBase58String("WAVES") | |
153 | + | case _ => | |
154 | + | throw() | |
155 | + | } | |
156 | + | ||
157 | + | ||
158 | + | func setRecuetimeRecordStatusValue (date,veryProductive,productive,neutral,distracting,veryDistracting) = { | |
159 | + | let recordStatusKey = (("record_<" + toString(date)) + ">") | |
160 | + | let rescueTimeConditionAmount = getIntegerRecordOr(this, rescueTimeConditionAmountKey, 0) | |
161 | + | let rescueTimeCondition = getStringRecord(this, rescueTimeConditionKey) | |
162 | + | let rescueTimeCategory = getStringRecord(this, rescueTimeCategoryKey) | |
163 | + | let statusValue = if ((rescueTimeCondition == rescueTimeConditionLess)) | |
164 | + | then if ((rescueTimeCategory == rescueTimeCategoryVeryProductive)) | |
165 | + | then (rescueTimeConditionAmount >= veryProductive) | |
166 | + | else if ((rescueTimeCategory == rescueTimeCategoryProductive)) | |
167 | + | then (rescueTimeConditionAmount >= productive) | |
168 | + | else if ((rescueTimeCategory == rescueTimeCategoryNeutral)) | |
169 | + | then (rescueTimeConditionAmount >= neutral) | |
170 | + | else if ((rescueTimeCategory == rescueTimeCategoryDistracting)) | |
171 | + | then (rescueTimeConditionAmount >= distracting) | |
172 | + | else (rescueTimeConditionAmount >= veryDistracting) | |
173 | + | else if ((rescueTimeCategory == rescueTimeCategoryVeryProductive)) | |
174 | + | then (veryProductive >= rescueTimeConditionAmount) | |
175 | + | else if ((rescueTimeCategory == rescueTimeCategoryProductive)) | |
176 | + | then (productive >= rescueTimeConditionAmount) | |
177 | + | else if ((rescueTimeCategory == rescueTimeCategoryNeutral)) | |
178 | + | then (neutral >= rescueTimeConditionAmount) | |
179 | + | else if ((rescueTimeCategory == rescueTimeCategoryDistracting)) | |
180 | + | then (distracting >= rescueTimeConditionAmount) | |
181 | + | else (veryDistracting >= rescueTimeConditionAmount) | |
182 | + | setBooleanRecord(recordStatusKey, statusValue) | |
183 | + | } | |
184 | + | ||
185 | + | ||
186 | + | func getCategoryRecordKey (date,rescueTimeCategoryVeryProductive) = (((("record_<" + toString(date)) + ">__category_<") + rescueTimeCategoryVeryProductive) + ">") | |
187 | + | ||
188 | + | ||
189 | + | func setCategoryRecordValue (date,category,value) = setIntegerRecord(getCategoryRecordKey(date, category), value) | |
190 | + | ||
191 | + | ||
192 | + | func isAdminCaller (callerPublicKey) = { | |
193 | + | let callerAccountPubKey = toBase58String(callerPublicKey) | |
194 | + | let adminAccountPubKey = toBase58String(adminAccountPublicKey) | |
195 | + | if ((callerAccountPubKey == adminAccountPubKey)) | |
196 | + | then true | |
197 | + | else false | |
198 | + | } | |
199 | + | ||
200 | + | ||
201 | + | func isUserCaller (callerPublicKey) = { | |
202 | + | let callerAccountPubKey = toBase58String(callerPublicKey) | |
203 | + | let userAccountPubKey = toBase58String(userAccountPublicKey) | |
204 | + | if ((callerAccountPubKey == userAccountPubKey)) | |
205 | + | then true | |
206 | + | else false | |
207 | + | } | |
208 | + | ||
209 | + | ||
210 | + | func isGoalCaller (callerPublicKey) = { | |
211 | + | let callerAccountPubKey = toBase58String(callerPublicKey) | |
212 | + | let goalAccountPubKey = toBase58String(goalAccountPublicKey) | |
213 | + | if ((callerAccountPubKey == goalAccountPubKey)) | |
214 | + | then true | |
215 | + | else false | |
216 | + | } | |
217 | + | ||
218 | + | ||
219 | + | @Callable(i) | |
220 | + | func setup (name,description,startDate,endDate,rescueTimeConditionAmount,rescueTimeCondition,rescueTimeCategory,trackDays,attempsCount,bet,betAssetId) = { | |
221 | + | let payment = getPayment(i) | |
222 | + | let paymentAmount = payment.amount | |
223 | + | let paymentAssetId = getPaymentAssetId(payment) | |
224 | + | let isNotUserCaller = !(isUserCaller(i.callerPublicKey)) | |
225 | + | let isNotSupportedPaymentAsset = (paymentAssetId != fromBase58String(betAssetId)) | |
226 | + | let isInsufficientPayment = (paymentAmount != bet) | |
227 | + | if (isNotSupportedPaymentAsset) | |
228 | + | then throwUnsupportedEventPaymentAssetError(fromBase58String(betAssetId), paymentAssetId) | |
229 | + | else if (isInsufficientPayment) | |
230 | + | then throwInsufficientPaymentError(bet, paymentAmount) | |
231 | + | else if (isNotUserCaller) | |
232 | + | then throwIsNotUserCallerError() | |
233 | + | else WriteSet([setStringRecord(statusKey, statusActive), setStringRecord(nameKey, name), setStringRecord(descriptionKey, description), setIntegerRecord(startDateKey, startDate), setIntegerRecord(endDateKey, endDate), setIntegerRecord(rescueTimeConditionAmountKey, rescueTimeConditionAmount), setStringRecord(rescueTimeConditionKey, rescueTimeCondition), setStringRecord(rescueTimeCategoryKey, rescueTimeCategory), setStringRecord(trackDaysKey, trackDays), setStringRecord(attempsCountKey, attempsCount), setIntegerRecord(failedAttemptsCountKey, 0), setIntegerRecord(betKey, bet), setStringRecord(betAssetIdKey, betAssetId)]) | |
234 | + | } | |
235 | + | ||
236 | + | ||
237 | + | ||
238 | + | @Callable(i) | |
239 | + | func addRecord (date,veryProductive,productive,neutral,distracting,veryDistracting) = { | |
240 | + | let startDateTimestamp = getIntegerRecordOr(this, "startDate", 0) | |
241 | + | let endDateTimestamp = getIntegerRecordOr(this, "endDate", 0) | |
242 | + | let isOutdatedGoal = if ((startDateTimestamp > date)) | |
243 | + | then (date > endDateTimestamp) | |
244 | + | else false | |
245 | + | let isNotActiveStatus = (getStringRecord(this, "status") != statusPending) | |
246 | + | let isNotAdminCaller = !(isAdminCaller(i.callerPublicKey)) | |
247 | + | if (isNotAdminCaller) | |
248 | + | then throwIsNotAdminCallerError() | |
249 | + | else if (isOutdatedGoal) | |
250 | + | then throwOutdatedGoalError() | |
251 | + | else if (isNotActiveStatus) | |
252 | + | then throwNotActiveGoalError() | |
253 | + | else WriteSet([setCategoryRecordValue(date, rescueTimeCategoryVeryProductive, veryProductive), setCategoryRecordValue(date, rescueTimeCategoryProductive, productive), setCategoryRecordValue(date, rescueTimeCategoryNeutral, neutral), setCategoryRecordValue(date, rescueTimeCategoryDistracting, distracting), setCategoryRecordValue(date, rescueTimeCategoryVeryDistracting, veryDistracting), setCategoryRecordValue(date, rescueTimeCategoryVeryDistracting, veryDistracting), setRecuetimeRecordStatusValue(date, veryProductive, productive, neutral, distracting, veryDistracting)]) | |
254 | + | } | |
255 | + | ||
256 | + |
github/deemru/w8io/026f985 21.69 ms ◑