tx · 92SWnkrfhu8dYHPHqTpZPg2MnZ4NyvmC3LWF2sHLH7AL 3NBZEUjbuZcNVv5NY5pk5sxZp6kicYi85Vf: -0.01000000 Waves 2020.05.16 11:55 [1000572] smart account 3NBZEUjbuZcNVv5NY5pk5sxZp6kicYi85Vf > SELF 0.00000000 Waves
{ "type": 13, "id": "92SWnkrfhu8dYHPHqTpZPg2MnZ4NyvmC3LWF2sHLH7AL", "fee": 1000000, "feeAssetId": null, "timestamp": 1589619380876, "version": 1, "sender": "3NBZEUjbuZcNVv5NY5pk5sxZp6kicYi85Vf", "senderPublicKey": "CuFXAbtitnWNTuSgtaDt9K17CwgWH1LZSQmibXUEbE4v", "proofs": [ "2fHja8yKt28wQJLCG7X8FMGnxm89t3jMCKMC5dVqtBosSN98LdNGqhWciZBQVJsqHHowcBUHBN76RvVaYgwdxJFb" ], "script": "base64:AAIDAAAAAAAAABwIARINCgsICAEBAQgICAEBCBIJCgcBCAEBAQEBAAAARwAAAAAXcmVzY3VlVGltZUNvbmRpdGlvbkxlc3MCAAAABGxlc3MAAAAAF3Jlc2N1ZVRpbWVDb25kaXRpb25Nb3JlAgAAAARtb3JlAAAAACByZXNjdWVUaW1lQ2F0ZWdvcnlWZXJ5UHJvZHVjdGl2ZQIAAAAOdmVyeVByb2R1Y3RpdmUAAAAAHHJlc2N1ZVRpbWVDYXRlZ29yeVByb2R1Y3RpdmUCAAAACnByb2R1Y3RpdmUAAAAAGXJlc2N1ZVRpbWVDYXRlZ29yeU5ldXRyYWwCAAAAB25ldXRyYWwAAAAAHXJlc2N1ZVRpbWVDYXRlZ29yeURpc3RyYWN0aW5nAgAAAAtkaXN0cmFjdGluZwAAAAAhcmVzY3VlVGltZUNhdGVnb3J5VmVyeURpc3RyYWN0aW5nAgAAAA92ZXJ5RGlzdHJhY3RpbmcAAAAAEWdvYWxTdGF0dXNQZW5kaW5nAgAAAAdwZW5kaW5nAAAAABBnb2FsU3RhdHVzQWN0aXZlAgAAAAZhY3RpdmUAAAAAD2dvYWxTdGF0dXNQYXVzZQIAAAAFcGF1c2UAAAAAEWdvYWxTdGF0dXNTdWNjZXNzAgAAAAdzdWNjZXNzAAAAAA5nb2FsU3RhdHVzRmFpbAIAAAAEZmFpbAAAAAATcmVjb3JkU3RhdHVzUGVuZGluZwIAAAAHcGVuZGluZwAAAAATcmVjb3JkU3RhdHVzU3VjY2VzcwIAAAAHc3VjY2VzcwAAAAAQcmVjb3JkU3RhdHVzRmFpbAIAAAAEZmFpbAAAAAAdaW50ZWdyYXRpb25TZXJ2aWNlc1Jlc2N1ZVRpbWUCAAAACnJlc2N1ZVRpbWUAAAAADXdlZWtEYXlNb25kYXkCAAAABm1vbmRheQAAAAAOd2Vla0RheVR1ZXNkYXkCAAAAB3R1ZXNkYXkAAAAAEHdlZWtEYXlXZWRuZXNkYXkCAAAACXdlZG5lc2RheQAAAAAPd2Vla0RheVRodXJzZGF5AgAAAAh0aHVyc2RheQAAAAANd2Vla0RheUZyaWRheQIAAAAGZnJpZGF5AAAAAA93ZWVrRGF5U2F0dXJkYXkCAAAACHNhdHVyZGF5AAAAAA13ZWVrRGF5U3VuZGF5AgAAAAZzdW5kYXkAAAAAB25hbWVLZXkCAAAABG5hbWUAAAAADmRlc2NyaXB0aW9uS2V5AgAAAAtkZXNjcmlwdGlvbgAAAAAMc3RhcnREYXRlS2V5AgAAAAlzdGFydERhdGUAAAAACmVuZERhdGVLZXkCAAAAB2VuZERhdGUAAAAAHHJlc2N1ZVRpbWVDb25kaXRpb25BbW91bnRLZXkCAAAAGXJlc2N1ZVRpbWVDb25kaXRpb25BbW91bnQAAAAAFnJlc2N1ZVRpbWVDb25kaXRpb25LZXkCAAAAE3Jlc2N1ZVRpbWVDb25kaXRpb24AAAAAFXJlc2N1ZVRpbWVDYXRlZ29yeUtleQIAAAAScmVzY3VlVGltZUNhdGVnb3J5AAAAABB0cmFja1dlZWtEYXlzS2V5AgAAAA10cmFja1dlZWtEYXlzAAAAAA9hdHRlbXBzQ291bnRLZXkCAAAADGF0dGVtcHNDb3VudAAAAAAGYmV0S2V5AgAAAANiZXQAAAAADWJldEFzc2V0SWRLZXkCAAAACmJldEFzc2V0SWQAAAAADWdvYWxTdGF0dXNLZXkCAAAACmdvYWxTdGF0dXMAAAAADWZhaWxzQ291bnRLZXkCAAAACmZhaWxzQ291bnQAAAAAFWFkbWluQWNjb3VudFB1YmxpY0tleQEAAAAg6/3eHXCC4GZsEnHaP42Wa9g+S1kUsOE81W4E2sP4FSgAAAAAFHVzZXJBY2NvdW50UHVibGljS2V5AQAAACCaD4Um16cvxJmzmm9AhUPG9apE2HpUT9BJb1mJlZEkRgAAAAAUZ29hbEFjY291bnRQdWJsaWNLZXkBAAAAILDTLRqKFU4A0By9lat0FE4yMXLkIwghIFIooNl7X7w3AQAAABN0aHJvd1VuZGVmaW5lZEVycm9yAAAAAAkAAAIAAAABAgAAAA51bmRlZmluZWRFcnJvcgEAAAAWdGhyb3dPdXRkYXRlZEdvYWxFcnJvcgAAAAAJAAACAAAAAQIAAAARb3V0ZGF0ZWRHb2FsRXJyb3IBAAAAGXRocm93Tm90VHJhY2tXZWVrRGF5RXJyb3IAAAAACQAAAgAAAAECAAAAD25vdFRyYWNrV2Vla0RheQEAAAAXdGhyb3dOb3RBY3RpdmVHb2FsRXJyb3IAAAAACQAAAgAAAAECAAAAEm5vdEFjdGl2ZUdvYWxFcnJvcgEAAAAgdGhyb3dHb2FsUmVjb3JkQWxyZWFkeUFkZGVkRXJyb3IAAAAACQAAAgAAAAECAAAAFmdvYWxSZWNvcmRBbHJlYWR5QWRkZWQBAAAAGnRocm93SXNOb3RBZG1pbkNhbGxlckVycm9yAAAAAAkAAAIAAAABAgAAABVpc05vdEFkbWluQ2FsbGVyRXJyb3IBAAAAGXRocm93SXNOb3RVc2VyQ2FsbGVyRXJyb3IAAAAACQAAAgAAAAECAAAAFGlzTm90VXNlckNhbGxlckVycm9yAQAAABl0aHJvd0lzTm90R29hbENhbGxlckVycm9yAAAAAAkAAAIAAAABAgAAABRpc05vdEdvYWxDYWxsZXJFcnJvcgAAAAAObm9QYXltZW50RXJyb3ICAAAADm5vUGF5bWVudEVycm9yAQAAACZ0aHJvd1Vuc3VwcG9ydGVkRXZlbnRQYXltZW50QXNzZXRFcnJvcgAAAAIAAAANZXhwZWN0ZWRBc3NldAAAAA1yZWNlaXZlZEFzc2V0CQAAAgAAAAEJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAhdW5zdXBwb3J0ZWRFdmVudFBheW1lbnRBc3NldEVycm9yAgAAAAEsCQACWAAAAAEFAAAADWV4cGVjdGVkQXNzZXQCAAAAASwJAAJYAAAAAQUAAAANcmVjZWl2ZWRBc3NldAEAAAAddGhyb3dJbnN1ZmZpY2llbnRQYXltZW50RXJyb3IAAAACAAAAFWV4cGVjdGVkUGF5bWVudEFtb3VudAAAABVyZWNlaXZlZFBheW1lbnRBbW91bnQJAAACAAAAAQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAABhpbnN1ZmZpY2llbnRQYXltZW50RXJyb3ICAAAAASwJAAGkAAAAAQUAAAAVZXhwZWN0ZWRQYXltZW50QW1vdW50AgAAAAEsCQABpAAAAAEFAAAAFXJlY2VpdmVkUGF5bWVudEFtb3VudAEAAAASZ2V0SW50ZWdlclJlY29yZE9yAAAAAwAAAA5hY2NvdW50QWRkcmVzcwAAAANrZXkAAAAHZGVmYXVsdAMJAQAAAAlpc0RlZmluZWQAAAABCQAEGgAAAAIFAAAABHRoaXMFAAAAA2tleQkBAAAAEUBleHRyTmF0aXZl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aXZlAgAAAAE+AQAAABJnZXRSZWNvcmRTdGF0dXNLZXkAAAABAAAABGRhdGUJAAEsAAAAAgkAASwAAAACAgAAAAhyZWNvcmRfPAkAAaQAAAABBQAAAARkYXRlAgAAAAE+AQAAAA1pc0FkbWluQ2FsbGVyAAAAAQAAAA9jYWxsZXJQdWJsaWNLZXkEAAAAE2NhbGxlckFjY291bnRQdWJLZXkJAAJYAAAAAQUAAAAPY2FsbGVyUHVibGljS2V5BAAAABJhZG1pbkFjY291bnRQdWJLZXkJAAJYAAAAAQUAAAAVYWRtaW5BY2NvdW50UHVibGljS2V5AwkAAAAAAAACBQAAABNjYWxsZXJBY2NvdW50UHViS2V5BQAAABJhZG1pbkFjY291bnRQdWJLZXkGBwEAAAAMaXNVc2VyQ2FsbGVyAAAAAQAAAA9jYWxsZXJQdWJsaWNLZXkEAAAAE2NhbGxlckFjY291bnRQdWJLZXkJAAJYAAAAAQUAAAAPY2FsbGVyUHVibGljS2V5BAAAABF1c2VyQWNjb3VudFB1YktleQkAAlgAAAABBQAAABR1c2VyQWNjb3VudFB1YmxpY0tleQMJAAAAAAAAAgUAAAATY2FsbGVyQWNjb3VudFB1YktleQUAAAARdXNlckFjY291bnRQdWJLZXkGBwEAAAAMaXNHb2FsQ2FsbGVyAAAAAQAAAA9jYWxsZXJQdWJsaWNLZXkEAAAAE2NhbGxlckFjY291bnRQdWJLZXkJAAJYAAAAAQUAAAAPY2FsbGVyUHVibGljS2V5BAAAABFnb2FsQWNjb3VudFB1YktleQkAAlgAAAABBQAAABRnb2FsQWNjb3VudFB1YmxpY0tleQMJAAAAAAAAAgUAAAATY2FsbGVyQWNjb3VudFB1YktleQUAAAARZ29hbEFjY291bnRQdWJLZXkGBwEAAAAYZ2V0UmVjdWV0aW1lUmVjb3JkU3RhdHVzAAAABgAAAARkYXRlAAAADnZlcnlQcm9kdWN0aXZlAAAACnByb2R1Y3RpdmUAAAAHbmV1dHJhbAAAAAtkaXN0cmFjdGluZwAAAA92ZXJ5RGlzdHJhY3RpbmcEAAAAD3JlY29yZFN0YXR1c0tleQkBAAAAEmdldFJlY29yZFN0YXR1c0tleQAAAAEFAAAABGRhdGUEAAAAGXJlc2N1ZVRpbWVDb25kaXRpb25BbW91bnQJAQAAABJnZXRJbnRlZ2VyUmVjb3JkT3IAAAADBQAAAAR0aGlzBQAAABxyZXNjdWVUaW1lQ29uZGl0aW9uQW1vdW50S2V5AAAAAAAAAAAABAAAABNyZXNjdWVUaW1lQ29uZGl0aW9uCQEAAAARQGV4dHJOYXRpdmUoMTA1MykAAAACBQAAAAR0aGlzBQAAABZyZXNjdWVUaW1lQ29uZGl0aW9uS2V5BAAAABJyZXNjdWVUaW1lQ2F0ZWdvcnkJAQAAABFAZXh0ck5hdGl2ZSgxMDUzKQAAAAIFAAAABHRoaXMFAAAAFXJlc2N1ZVRpbWVDYXRlZ29yeUtleQQAAAAPY29uZGl0aW9uUmVzdWx0AwkAAAAAAAACBQAAABNyZXNjdWVUaW1lQ29uZGl0aW9uBQAAABdyZXNjdWVUaW1lQ29uZGl0aW9uTGVzcwMJAAAAAAAAAgUAAAAScmVzY3VlVGltZUNhdGVnb3J5BQAAACByZXNjdWVUaW1lQ2F0ZWdvcnlWZXJ5UHJvZHVjdGl2ZQkAAGcAAAACBQAAABlyZXNjdWVUaW1lQ29uZGl0aW9uQW1vdW50BQAAAA52ZXJ5UHJvZHVjdGl2ZQMJAAAAAAAAAgUAAAAScmVzY3VlVGltZUNhdGVnb3J5BQAAABxyZXNjdWVUaW1lQ2F0ZWdvcnlQcm9kdWN0aXZlCQAAZwAAAAIFAAAAGXJlc2N1ZVRpbWVDb25kaXRpb25BbW91bnQFAAAACnByb2R1Y3RpdmUDCQAAAAAAAAIFAAAAEnJlc2N1ZVRpbWVDYXRlZ29yeQUAAAAZcmVzY3VlVGltZUNhdGVnb3J5TmV1dHJhbAkAAGcAAAACBQAAABlyZXNjdWVUaW1lQ29uZGl0aW9uQW1vdW50BQAAAAduZXV0cmFsAwkAAAAAAAACBQAAABJyZXNjdWVUaW1lQ2F0ZWdvcnkFAAAAHXJlc2N1ZVRpbWVDYXRlZ29yeURpc3RyYWN0aW5nCQAAZwAAAAIFAAAAGXJlc2N1ZVRpbWVDb25kaXRpb25BbW91bnQFAAAAC2Rpc3RyYWN0aW5nCQAAZwAAAAIFAAAAGXJlc2N1ZVRpbWVDb25kaXRpb25BbW91bnQFAAAAD3ZlcnlEaXN0cmFjdGluZwMJAAAAAAAAAgUAAAAScmVzY3VlVGltZUNhdGVnb3J5BQAAACByZXNjdWVUaW1lQ2F0ZWdvcnlWZXJ5UHJvZHVjdGl2ZQkAAGcAAAACBQAAAA52ZXJ5UHJvZHVjdGl2ZQUAAAAZcmVzY3VlVGltZUNvbmRpdGlvbkFtb3VudAMJAAAAAAAAAgUAAAAScmVzY3VlVGltZUNhdGVnb3J5BQAAABxyZXNjdWVUaW1lQ2F0ZWdvcnlQcm9kdWN0aXZlCQAAZwAAAAIFAAAACnByb2R1Y3RpdmUFAAAAGXJlc2N1ZVRpbWVDb25kaXRpb25BbW91bnQDCQAAAAAAAAIFAAAAEnJlc2N1ZVRpbWVDYXRlZ29yeQUAAAAZcmVzY3VlVGltZUNhdGVnb3J5TmV1dHJhbAkAAGcAAAACBQAAAAduZXV0cmFsBQAAABlyZXNjdWVUaW1lQ29uZGl0aW9uQW1vdW50AwkAAAAAAAACBQAAABJyZXNjdWVUaW1lQ2F0ZWdvcnkFAAAAHXJlc2N1ZVRpbWVDYXRlZ29yeURpc3RyYWN0aW5nCQAAZwAAAAIFAAAAC2Rpc3RyYWN0aW5nBQAAABlyZXNjdWVUaW1lQ29uZGl0aW9uQW1vdW50CQAAZwAAAAIFAAAAD3ZlcnlEaXN0cmFjdGluZwUAAAAZcmVzY3VlVGltZUNvbmRpdGlvbkFtb3VudAMJAAAAAAAAAgUAAAAPY29uZGl0aW9uUmVzdWx0BgUAAAATcmVjb3JkU3RhdHVzU3VjY2VzcwUAAAAQcmVjb3JkU3RhdHVzRmFpbAEAAAANZ2V0RmFpbHNDb3VudAAAAAEAAAAMcmVjb3JkU3RhdHVzBAAAAApmYWlsc0NvdW50CQEAAAARQGV4dHJOYXRpdmUoMTA1MCkAAAACBQAAAAR0aGlzBQAAAA1mYWlsc0NvdW50S2V5AwkAAAAAAAACBQAAAAxyZWNvcmRTdGF0dXMFAAAAE3JlY29yZFN0YXR1c1N1Y2Nlc3MFAAAACmZhaWxzQ291bnQJAABkAAAAAgUAAAAKZmFpbHNDb3VudAAAAAAAAAAAAQAAAAIAAAABaQEAAAAFc2V0dXAAAAALAAAABG5hbWUAAAALZGVzY3JpcHRpb24AAAAJc3RhcnREYXRlAAAAB2VuZERhdGUAAAAZcmVzY3VlVGltZUNvbmRpdGlvbkFtb3VudAAAABNyZXNjdWVUaW1lQ29uZGl0aW9uAAAAEnJlc2N1ZVRpbWVDYXRlZ29yeQAAAA10cmFja1dlZWtEYXlzAAAADGF0dGVtcHNDb3VudAAAAANiZXQAAAAKYmV0QXNzZXRJZAQAAAAHcGF5bWVudAkBAAAACmdldFBheW1lbnQAAAABBQAAAAFpBAAAAA1wYXltZW50QW1vdW50CAUAAAAHcGF5bWVudAAAAAZhbW91bnQEAAAADnBheW1lbnRBc3NldElkCQEAAAARZ2V0UGF5bWVudEFzc2V0SWQAAAABBQAAAAdwYXltZW50BAAAAA9pc05vdFVzZXJDYWxsZXIJAQAAAAEhAAAAAQkBAAAADGlzVXNlckNhbGxlcgAAAAEIBQAAAAFpAAAAD2NhbGxlclB1YmxpY0tleQQAAAAaaXNOb3RTdXBwb3J0ZWRQYXltZW50QXNzZXQJAQAAAAIhPQAAAAIFAAAADnBheW1lbnRBc3NldElkCQACWQAAAAEFAAAACmJldEFzc2V0SWQEAAAAFWlzSW5zdWZmaWNpZW50UGF5bWVudAkBAAAAAiE9AAAAAgUAAAANcGF5bWVudEFtb3VudAUAAAADYmV0AwUAAAAaaXNOb3RTdXBwb3J0ZWRQYXltZW50QXNzZXQJAQAAACZ0aHJvd1Vuc3VwcG9ydGVkRXZlbnRQYXltZW50QXNzZXRFcnJvcgAAAAIJAAJZAAAAAQUAAAAKYmV0QXNzZXRJZAUAAAAOcGF5bWVudEFzc2V0SWQDBQAAABVpc0luc3VmZmljaWVudFBheW1lbnQJAQAAAB10aHJvd0luc3VmZmljaWVudFBheW1lbnRFcnJvcgAAAAIFAAAAA2JldAUAAAANcGF5bWVudEFtb3VudAMFAAAAD2lzTm90VXNlckNhbGxlcgkBAAAAGXRocm93SXNOb3RVc2VyQ2FsbGVyRXJyb3IAAAAACQEAAAAIV3JpdGVTZXQAAAABCQAETAAAAAIJAQAAAA9zZXRTdHJpbmdSZWNvcmQAAAACBQAAAA1nb2FsU3RhdHVzS2V5BQAAABBnb2FsU3RhdHVzQWN0aXZlCQAETAAAAAIJAQAAAA9zZXRTdHJpbmdSZWNvcmQAAAACBQAAAAduYW1lS2V5BQAAAARuYW1lCQAETAAAAAIJAQAAAA9zZXRTdHJpbmdSZWNvcmQAAAACBQAAAA5kZXNjcmlwdGlvbktleQUAAAALZGVzY3JpcHRpb24JAARMAAAAAgkBAAAAEHNldEludGVnZXJSZWNvcmQAAAACBQAAAAxzdGFydERhdGVLZXkFAAAACXN0YXJ0RGF0ZQkABEwAAAACCQEAAAAQc2V0SW50ZWdlclJlY29yZAAAAAIFAAAACmVuZERhdGVLZXkFAAAAB2VuZERhdGUJAARMAAAAAgkBAAAAEHNldEludGVnZXJSZWNvcmQAAAACBQAAABxyZXNjdWVUaW1lQ29uZGl0aW9uQW1vdW50S2V5BQAAABlyZXNjdWVUaW1lQ29uZGl0aW9uQW1vdW50CQAETAAAAAIJAQAAAA9zZXRTdHJpbmdSZWNvcmQAAAACBQAAABZyZXNjdWVUaW1lQ29uZGl0aW9uS2V5BQAAABNyZXNjdWVUaW1lQ29uZGl0aW9uCQAETAAAAAIJAQAAAA9zZXRTdHJpbmdSZWNvcmQAAAACBQAAABVyZXNjdWVUaW1lQ2F0ZWdvcnlLZXkFAAAAEnJlc2N1ZVRpbWVDYXRlZ29yeQkABEwAAAACCQEAAAAPc2V0U3RyaW5nUmVjb3JkAAAAAgUAAAAQdHJhY2tXZWVrRGF5c0tleQUAAAANdHJhY2tXZWVrRGF5cwkABEwAAAACCQEAAAAQc2V0SW50ZWdlclJlY29yZAAAAAIFAAAAD2F0dGVtcHNDb3VudEtleQUAAAAMYXR0ZW1wc0NvdW50CQAETAAAAAIJAQAAABBzZXRJbnRlZ2VyUmVjb3JkAAAAAgUAAAAGYmV0S2V5BQAAAANiZXQJAARMAAAAAgkBAAAAD3NldFN0cmluZ1JlY29yZAAAAAIFAAAADWJldEFzc2V0SWRLZXkFAAAACmJldEFzc2V0SWQJAARMAAAAAgkBAAAAEHNldEludGVnZXJSZWNvcmQAAAACBQAAAA1mYWlsc0NvdW50S2V5AAAAAAAAAAAABQAAAANuaWwAAAABaQEAAAAJYWRkUmVjb3JkAAAABwAAABNyZWNvcmREYXRlVGltZXN0YW1wAAAAEXJlY29yZERhdGVXZWVrRGF5AAAADnZlcnlQcm9kdWN0aXZlAAAACnByb2R1Y3RpdmUAAAAHbmV1dHJhbAAAAAtkaXN0cmFjdGluZwAAAA92ZXJ5RGlzdHJhY3RpbmcEAAAAD3JlY29yZFN0YXR1c0tleQkBAAAAEmdldFJlY29yZFN0YXR1c0tleQAAAAEFAAAAE3JlY29yZERhdGVUaW1lc3RhbXAEAAAAA2JldAkBAAAAEUBleHRyTmF0aXZlKDEwNTApAAAAAgUAAAAEdGhpcwUAAAAGYmV0S2V5BAAAAApiZXRBc3NldElkCQEAAAARQGV4dHJOYXRpdmUoMTA1MykAAAACBQAAAAR0aGlzBQAAAA1iZXRBc3NldElkS2V5BAAAAA10cmFja1dlZWtEYXlzCQEAAAARQGV4dHJOYXRpdmUoMTA1MykAAAACBQAAAAR0aGlzBQAAABB0cmFja1dlZWtEYXlzS2V5BAAAABJzdGFydERhdGVUaW1lc3RhbXAJAQAAABJnZXRJbnRlZ2VyUmVjb3JkT3IAAAADBQAAAAR0aGlzBQAAAAxzdGFydERhdGVLZXkAAAAAAAAAAAAEAAAAEGVuZERhdGVUaW1lc3RhbXAJAQAAABJnZXRJbnRlZ2VyUmVjb3JkT3IAAAADBQAAAAR0aGlzBQAAAAplbmREYXRlS2V5AAAAAAAAAAAABAAAAA5pc091dGRhdGVkR29hbAMJAABmAAAAAgUAAAASc3RhcnREYXRlVGltZXN0YW1wBQAAABNyZWNvcmREYXRlVGltZXN0YW1wCQAAZgAAAAIFAAAAE3JlY29yZERhdGVUaW1lc3RhbXAFAAAAEGVuZERhdGVUaW1lc3RhbXAHBAAAAAlpc0VuZERhdGUJAAAAAAAAAgUAAAATcmVjb3JkRGF0ZVRpbWVzdGFtcAUAAAAQZW5kRGF0ZVRpbWVzdGFtcAQAAAARaXNOb3RBY3RpdmVTdGF0dXMJAQAAAAIhPQAAAAIJAQAAAAtnZXRTdHJpbmdPcgAAAAMFAAAABHRoaXMFAAAADWdvYWxTdGF0dXNLZXkFAAAAEWdvYWxTdGF0dXNQZW5kaW5nBQAAABBnb2FsU3RhdHVzQWN0aXZlBAAAABBpc05vdEFkbWluQ2FsbGVyCQEAAAABIQAAAAEJAQAAAA1pc0FkbWluQ2FsbGVyAAAAAQgFAAAAAWkAAAAPY2FsbGVyUHVibGljS2V5BAAAABFpc05vdFRyYWNrV2Vla0RheQkBAAAAASEAAAABCQEAAAANaXNTdWJzdHJFeGlzdAAAAAIFAAAADXRyYWNrV2Vla0RheXMFAAAAEXJlY29yZERhdGVXZWVrRGF5BAAAABhpc0dvYWxSZWNvcmRBbHJlYWR5QWRkZWQJAQAAAA9pc1JlY29yZERlZmluZWQAAAABBQAAAA9yZWNvcmRTdGF0dXNLZXkDBQAAABBpc05vdEFkbWluQ2FsbGVyCQEAAAAadGhyb3dJc05vdEFkbWluQ2FsbGVyRXJyb3IAAAAAAwUAAAAOaXNPdXRkYXRlZEdvYWwJAQAAABZ0aHJvd091dGRhdGVkR29hbEVycm9yAAAAAAMFAAAAEWlzTm90QWN0aXZlU3RhdHVzCQEAAAAXdGhyb3dOb3RBY3RpdmVHb2FsRXJyb3IAAAAAAwUAAAARaXNOb3RUcmFja1dlZWtEYXkJAQAAABl0aHJvd05vdFRyYWNrV2Vla0RheUVycm9yAAAAAAMFAAAAGGlzR29hbFJlY29yZEFscmVhZHlBZGRlZAkBAAAAIHRocm93R29hbFJlY29yZEFscmVhZHlBZGRlZEVycm9yAAAAAAQAAAAMcmVjb3JkU3RhdHVzCQEAAAAYZ2V0UmVjdWV0aW1lUmVjb3JkU3RhdHVzAAAABgUAAAATcmVjb3JkRGF0ZVRpbWVzdGFtcAUAAAAOdmVyeVByb2R1Y3RpdmUFAAAACnByb2R1Y3RpdmUFAAAAB25ldXRyYWwFAAAAC2Rpc3RyYWN0aW5nBQAAAA92ZXJ5RGlzdHJhY3RpbmcEAAAADGF0dGVtcHNDb3VudAkBAAAAEUBleHRyTmF0aXZlKDEwNTApAAAAAgUAAAAEdGhpcwUAAAAPYXR0ZW1wc0NvdW50S2V5BAAAAApmYWlsc0NvdW50CQEAAAANZ2V0RmFpbHNDb3VudAAAAAEFAAAADHJlY29yZFN0YXR1cwQAAAAMaXNGYWlsZWRHb2FsCQAAZgAAAAIFAAAACmZhaWxzQ291bnQFAAAADGF0dGVtcHNDb3VudAQAAAARY2F0ZWdvcmllc0VudHJpZXMJAARMAAAAAgkBAAAAEHNldEludGVnZXJSZWNvcmQAAAACCQEAAAAUZ2V0Q2F0ZWdvcnlSZWNvcmRLZXkAAAACBQAAABNyZWNvcmREYXRlVGltZXN0YW1wBQAAACByZXNjdWVUaW1lQ2F0ZWdvcnlWZXJ5UHJvZHVjdGl2ZQUAAAAOdmVyeVByb2R1Y3RpdmUJAARMAAAAAgkBAAAAEHNldEludGVnZXJSZWNvcmQAAAACCQEAAAAUZ2V0Q2F0ZWdvcnlSZWNvcmRLZXkAAAACBQAAABNyZWNvcmREYXRlVGltZXN0YW1wBQAAABxyZXNjdWVUaW1lQ2F0ZWdvcnlQcm9kdWN0aXZlBQAAAApwcm9kdWN0aXZlCQAETAAAAAIJAQAAABBzZXRJbnRlZ2VyUmVjb3JkAAAAAgkBAAAAFGdldENhdGVnb3J5UmVjb3JkS2V5AAAAAgUAAAATcmVjb3JkRGF0ZVRpbWVzdGFtcAUAAAAZcmVzY3VlVGltZUNhdGVnb3J5TmV1dHJhbAUAAAAHbmV1dHJhbAkABEwAAAACCQEAAAAQc2V0SW50ZWdlclJlY29yZAAAAAIJAQAAABRnZXRDYXRlZ29yeVJlY29yZEtleQAAAAIFAAAAE3JlY29yZERhdGVUaW1lc3RhbXAFAAAAHXJlc2N1ZVRpbWVDYXRlZ29yeURpc3RyYWN0aW5nBQAAAAtkaXN0cmFjdGluZwkABEwAAAACCQEAAAAQc2V0SW50ZWdlclJlY29yZAAAAAIJAQAAABRnZXRDYXRlZ29yeVJlY29yZEtleQAAAAIFAAAAE3JlY29yZERhdGVUaW1lc3RhbXAFAAAAIXJlc2N1ZVRpbWVDYXRlZ29yeVZlcnlEaXN0cmFjdGluZwUAAAAPdmVyeURpc3RyYWN0aW5nBQAAAANuaWwDBQAAAAxpc0ZhaWxlZEdvYWwEAAAAE2FkbWluQWNjb3VudEFkZHJlc3MJAQAAABRhZGRyZXNzRnJvbVB1YmxpY0tleQAAAAEFAAAAFWFkbWluQWNjb3VudFB1YmxpY0tleQkBAAAADFNjcmlwdFJlc3VsdAAAAAIJAQAAAAhXcml0ZVNldAAAAAEJAARMAAAAAgkBAAAAD3NldFN0cmluZ1JlY29yZAAAAAIFAAAADWdvYWxTdGF0dXNLZXkFAAAADmdvYWxTdGF0dXNGYWlsCQAETAAAAAIJAQAAABBzZXRJbnRlZ2VyUmVjb3JkAAAAAgUAAAANZmFpbHNDb3VudEtleQUAAAAKZmFpbHNDb3VudAkABEwAAAACCQEAAAAPc2V0U3RyaW5nUmVjb3JkAAAAAgUAAAAPcmVjb3JkU3Rh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", "chainId": 84, "height": 1000572, "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 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'CuFXAbtitnWNTuSgtaDt9K17CwgWH1LZSQmibXUEbE4v' | |
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(getString(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 22.58 ms ◑