tx · GTBCkBJ9jXzYY6HHXFd9bvE3Cf2rhC46Z6ZHorHK2Fgt

3MzSNsJLeYj6Eh6u2QzJrbByPCySgFoCbWC:  -0.05000000 Waves

2020.01.09 09:05 [845991] smart account 3MzSNsJLeYj6Eh6u2QzJrbByPCySgFoCbWC > SELF 0.00000000 Waves

{ "type": 13, "id": "GTBCkBJ9jXzYY6HHXFd9bvE3Cf2rhC46Z6ZHorHK2Fgt", "fee": 5000000, "feeAssetId": null, "timestamp": 1578546203479, "version": 1, "sender": "3MzSNsJLeYj6Eh6u2QzJrbByPCySgFoCbWC", "senderPublicKey": "99sSPZk2SumsopYRh2PAvWL8BHjDhYsY5NspsFGXLnAm", "proofs": [ "4bj9W5GzWXDwBg42TAmbNFBEm1xmvfmtiSjKrFR6DmgGdSSmc8Hp5RoU2uZgjV71ZVhjYkYXEgAh6oif6KxyEEZ6" ], "script": "base64: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dFN0ckJ5S2V5AAAAAQkBAAAAEGdldEtleVRhc2tBdXRob3IAAAABBQAAAAR0YXNrAQAAAA9nZXRLZXlUYXNrQmxvY2sAAAABAAAABHRhc2sJAAEsAAAAAgIAAAAGYmxvY2tfBQAAAAR0YXNrAQAAABFnZXRWYWx1ZVRhc2tCbG9jawAAAAEAAAAEdGFzawkBAAAADmdldE51bWJlckJ5S2V5AAAAAQkBAAAAD2dldEtleVRhc2tCbG9jawAAAAEFAAAABHRhc2sBAAAADmdldEtleVRhc2tCYW5rAAAAAQAAAAR0YXNrCQABLAAAAAICAAAABWJhbmtfBQAAAAR0YXNrAQAAABBnZXRWYWx1ZVRhc2tCYW5rAAAAAQAAAAR0YXNrCQEAAAAOZ2V0TnVtYmVyQnlLZXkAAAABCQEAAAAOZ2V0S2V5VGFza0JhbmsAAAABBQAAAAR0YXNrAQAAABRnZXRLZXlUYXNrRnJlZWxhbmNlcgAAAAEAAAAEdGFzawkAASwAAAACAgAAAAtmcmVlbGFuY2VyXwUAAAAEdGFzawEAAAAWZ2V0VmFsdWVUYXNrRnJlZWxhbmNlcgAAAAEAAAAEdGFzawkBAAAAC2dldFN0ckJ5S2V5AAAAAQkBAAAAFGdldEtleVRhc2tGcmVlbGFuY2VyAAAAAQUAAAAEdGFzawEAAAAQZ2V0S2V5VGFza1N0YXR1cwAAAAEAAAAEdGFzawkAASwAAAACAgAAAAdzdGF0dXNfBQAAAAR0YXNrAQAAABJnZXRWYWx1ZVRhc2tTdGF0dXMAAAABAAAABHRhc2sJAQAAAAtnZXRTdHJCeUtleQAAAAEJAQAAABBnZXRLZXlUYXNrU3RhdHVzAAAAAQUAAAAEdGFzawEAAAAUZ2V0S2V5VGFza0V4cGlyYXRpb24AAAABAAAABHRhc2sJAAEsAAAAAgIAAAARZXhwaXJhdGlvbl9ibG9ja18FAAAABHRhc2sBAAAAFmdldFZhbHVlVGFza0V4cGlyYXRpb24AAAABAAAABHRhc2sJAQAAAA5nZXROdW1iZXJCeUtleQAAAAEJAQAAABRnZXRLZXlUYXNrRXhwaXJhdGlvbgAAAAEFAAAABHRhc2sBAAAADWdldEtleVVzZXJCaW8AAAABAAAAB2FjY291bnQJAAEsAAAAAgIAAAAJdXNlcl9iaW9fBQAAAAdhY2NvdW50AQAAAA9nZXRWYWx1ZVVzZXJCaW8AAAABAAAAB2FjY291bnQJAQAAAAtnZXRTdHJCeUtleQAAAAEJAQAAAA1nZXRLZXlVc2VyQmlvAAAAAQUAAAAHYWNjb3VudAEAAAAQZ2V0S2V5VXNlclN0YXR1cwAAAAEAAAAHYWNjb3VudAkAASwAAAACAgAAAAl1c2VyX3N0c18FAAAAB2FjY291bnQBAAAAEmdldFZhbHVlVXNlclN0YXR1cwAAAAEAAAAHYWNjb3VudAkBAAAAC2dldFN0ckJ5S2V5AAAAAQkBAAAAEGdldEtleVVzZXJTdGF0dXMAAAABBQAAAAdhY2NvdW50AQAAAA9nZXRLZXlVc2VyQmxvY2sAAAABAAAAB2FjY291bnQJAAEsAAAAAgIAAAAJdXNlcl9ibGtfBQAAAAdhY2NvdW50AQAAABhnZXRLZXlUYXNrUmVwb3J0Q29tcGxldGUAAAADAAAACmZyZWVsYW5jZXIAAAAEdGFzawAAAAVzdGFnZQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAAA3JjXwUAAAAEdGFzawIAAAABXwUAAAAKZnJlZWxhbmNlcgIAAAAHX3N0YWdlOgUAAAAFc3RhZ2UBAAAAGmdldFZhbHVlVGFza1JlcG9ydENvbXBsZXRlAAAAAwAAAApmcmVlbGFuY2VyAAAABHRhc2sAAAAFc3RhZ2UJAQAAAAtnZXRTdHJCeUtleQAAAAEJAQAAABhnZXRLZXlUYXNrUmVwb3J0Q29tcGxldGUAAAADBQAAAApmcmVlbGFuY2VyBQAAAAR0YXNrBQAAAAVzdGFnZQEAAAAbZ2V0S2V5VGFza1JlcG9ydENvbXBsZXRlQ250AAAAAgAAAAR0YXNrAAAACmZyZWVsYW5jZXIJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAAB3JjX2NudF8FAAAABHRhc2sCAAAAAV8FAAAACmZyZWVsYW5jZXIBAAAAHWdldFZhbHVlVGFza1JlcG9ydENvbXBsZXRlQ250AAAAAgAAAAR0YXNrAAAACmZyZWVsYW5jZXIJAQAAAA5nZXROdW1iZXJCeUtleQAAAAEJAQAAABtnZXRLZXlUYXNrUmVwb3J0Q29tcGxldGVDbnQAAAACBQAAAAR0YXNrBQAAAApmcmVlbGFuY2VyAQAAABRnZXRLZXlEZWNyeWJlQmFsYW5jZQAAAAACAAAAD2RlY3J5YmVfYmFsYW5jZQEAAAAWZ2V0VmFsdWVEZWNyeWJlQmFsYW5jZQAAAAAJAQAAAA5nZXROdW1iZXJCeUtleQAAAAEJAQAAABRnZXRLZXlEZWNyeWJlQmFsYW5jZQAAAAABAAAAEGdldEtleVRhc2tSYXRpbmcAAAABAAAABHRhc2sJAAEsAAAAAgIAAAAMdGFza19yYXRpbmdfBQAAAAR0YXNrAQAAABJnZXRWYWx1ZVRhc2tSYXRpbmcAAAABAAAABHRhc2sJAQAAAA5nZXROdW1iZXJCeUtleQAAAAEJAQAAABBnZXRLZXlUYXNrUmF0aW5nAAAAAQUAAAAEdGFzawEAAAAYZ2V0S2V5VGFza1VzZXJWb3RlUmF0aW5nAAAAAgAAAAR0YXNrAAAABHVzZXIJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAACnRhc2tfdm90ZV8FAAAABHRhc2sCAAAAAV8FAAAABHVzZXIBAAAAGmdldFZhbHVlVGFza1VzZXJWb3RlUmF0aW5nAAAAAgAAAAR0YXNrAAAABHVzZXIJAQAAAAtnZXRTdHJCeUtleQAAAAEJAQAAABhnZXRLZXlUYXNrVXNlclZvdGVSYXRpbmcAAAACBQAAAAR0YXNrBQAAAAR1c2VyAQAAABBnZXRLZXlVc2VyUmF0aW5nAAAAAQAAAAR1c2VyCQABLAAAAAICAAAADHVzZXJfcmF0aW5nXwUAAAAEdXNlcgEAAAASZ2V0VmFsdWVVc2VyUmF0aW5nAAAAAQAAAAR1c2VyCQEAAAAOZ2V0TnVtYmVyQnlLZXkAAAABCQEAAAAQZ2V0S2V5VXNlclJhdGluZwAAAAEFAAAABHVzZXIBAAAAFGdldEtleVVzZXJSYXRpbmdWb3RlAAAAAgAAAAR1c2VyAAAABnZvdGluZwkAASwAAAACCQABLAAAAAICAAAACnVzZXJfdm90ZV8FAAAABHVzZXIFAAAABnZvdGluZwEAAAAWZ2V0VmFsdWVVc2VyUmF0aW5nVm90ZQAAAAIAAAAEdXNlcgAAAAZ2b3RpbmcJAQAAAAtnZXRTdHJCeUtleQAAAAEJAQAAABRnZXRLZXlVc2VyUmF0aW5nVm90ZQAAAAIFAAAABHVzZXIFAAAABnZvdGluZwEAAAARZ2V0S2V5VGFza0Rpc3B1dGUAAAABAAAABHRhc2sJAAEsAAAAAgIAAAANdGFza19kaXNwdXRlXwUAAAAEdGFzawEAAAATZ2V0VmFsdWVUYXNrRGlzcHV0ZQAAAAEAAAAEdGFzawkBAAAAC2dldFN0ckJ5S2V5AAAAAQkBAAAAEWdldEtleVRhc2tEaXNwdXRlAAAAAQUAAAAEdGFzawEAAAAdZ2V0S2V5VGFza0Rpc3B1dGVWb3RlQ3VzdG9tZXIAAAABAAAABHRhc2sJAAEsAAAAAgIAAAASdGFza19kaXNwdm90ZV9jc3RfBQAAAAR0YXNrAQAAAB9nZXRWYWx1ZVRhc2tEaXNwdXRlVm90ZUN1c3RvbWVyAAAAAQAAAAR0YXNrCQEAAAAOZ2V0TnVtYmVyQnlLZXkAAAABCQEAAAAdZ2V0S2V5VGFza0Rpc3B1dGVWb3RlQ3VzdG9tZXIAAAABBQAAAAR0YXNrAQAAAB9nZXRLZXlUYXNrRGlzcHV0ZVZvdGVGcmVlbGFuY2VyAAAAAQAAAAR0YXNrCQABLAAAAAICAAAAEnRhc2tfZGlzcHZvdGVfZmxyXwUAAAAEdGFzawEAAAAhZ2V0VmFsdWVUYXNrRGlzcHV0ZVZvdGVGcmVlbGFuY2VyAAAAAQAAAAR0YXNrCQEAAAAOZ2V0TnVtYmVyQnlLZXkAAAABCQEAAAAfZ2V0S2V5VGFza0Rpc3B1dGVWb3RlRnJlZWxhbmNlcgAAAAEFAAAABHRhc2sBAAAAGGdldEtleVRhc2tEaXNwdXRlTWVzc2FnZQAAAAMAAAAEdGFzawAAAAZzZW5kZXIAAAACaWQJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAA10YXNrX2Rpc3Btc2dfBQAAAAR0YXNrAgAAAAFfBQAAAAZzZW5kZXICAAAABF9pZDoFAAAAAmlkAQAAABpnZXRWYWx1ZVRhc2tEaXNwdXRlTWVzc2FnZQAAAAMAAAAEdGFzawAAAAZzZW5kZXIAAAACaWQJAQAAAAtnZXRTdHJCeUtleQAAAAEJAQAAABhnZXRLZXlUYXNrRGlzcHV0ZU1lc3NhZ2UAAAADBQAAAAR0YXNrBQAAAAZzZW5kZXIFAAAAAmlkAQAAAB1nZXRLZXlUYXNrRGlzcHV0ZU1lc3NhZ2VCbG9jawAAAAMAAAAEdGFzawAAAAZzZW5kZXIAAAACaWQJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAABF0YXNrX2Rpc3Btc2dfYmxrXwUAAAAEdGFzawIAAAABXwUAAAAGc2VuZGVyAgAAAARfaWQ6BQAAAAJpZAEAAAAfZ2V0VmFsdWVUYXNrRGlzcHV0ZU1lc3NhZ2VCbG9jawAAAAMAAAAEdGFzawAAAAZzZW5kZXIAAAACaWQJAQAAAAtnZXRTdHJCeUtleQAAAAEJAQAAAB1nZXRLZXlUYXNrRGlzcHV0ZU1lc3NhZ2VCbG9jawAAAAMFAAAABHRhc2sFAAAABnNlbmRlcgUAAAACaWQBAAAAHGdldEtleVRhc2tEaXNwdXRlTWVzc2FnZXNDbnQAAAACAAAABHRhc2sAAAAEdXNlcgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAARdGFza19kaXNwbXNnX2NudF8FAAAABHRhc2sCAAAAAV8FAAAABHVzZXIBAAAAHmdldFZhbHVlVGFza0Rpc3B1dGVNZXNzYWdlc0NudAAAAAIAAAAEdGFzawAAAAR1c2VyCQEAAAAOZ2V0TnVtYmVyQnlLZXkAAAABCQEAAAAcZ2V0S2V5VGFza0Rpc3B1dGVNZXNzYWdlc0NudAAAAAIFAAAABHRhc2sFAAAABHVzZXIBAAAAGGdldEtleVRhc2tEaXNwdXRlQ29tbWVudAAAAAIAAAAEdGFzawAAAAZzZW5kZXIJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAADXRhc2tfZGlzcGNvbV8FAAAABHRhc2sCAAAAAV8FAAAABnNlbmRlcgEAAAAaZ2V0VmFsdWVUYXNrRGlzcHV0ZUNvbW1lbnQAAAACAAAABHRhc2sAAAAGc2VuZGVyCQEAAAALZ2V0U3RyQnlLZXkAAAABCQEAAAAYZ2V0S2V5VGFza0Rpc3B1dGVDb21tZW50AAAAAgUAAAAEdGFzawUAAAAGc2VuZGVyAQAAAB1nZXRLZXlUYXNrRGlzcHV0ZUNvbW1lbnRCbG9jawAAAAIAAAAEdGFzawAAAAZzZW5kZXIJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAAEXRhc2tfZGlzcGNvbV9ibGtfBQAAAAR0YXNrAgAAAAFfBQAAAAZzZW5kZXIBAAAAH2dldFZhbHVlVGFza0Rpc3B1dGVDb21tZW50QmxvY2sAAAACAAAABHRhc2sAAAAGc2VuZGVyCQEAAAALZ2V0U3RyQnlLZXkAAAABCQEAAAAdZ2V0S2V5VGFza0Rpc3B1dGVDb21tZW50QmxvY2sAAAACBQAAAAR0YXNrBQAAAAZzZW5kZXIBAAAAHGdldEtleVRhc2tEaXNwdXRlVm90ZVZhcmlhbnQAAAACAAAABHRhc2sAAAAEdXNlcgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAANdGFza19kaXNwdmFyXwUAAAAEdGFzawIAAAABXwUAAAAEdXNlcgEAAAAeZ2V0VmFsdWVUYXNrRGlzcHV0ZVZvdGVWYXJpYW50AAAAAgAAAAR0YXNrAAAABHVzZXIJAQAAAAtnZXRTdHJCeUtleQAAAAEJAQAAABxnZXRLZXlUYXNrRGlzcHV0ZVZvdGVWYXJpYW50AAAAAgUAAAAEdGFzawUAAAAEdXNlcgEAAAAQZ2V0S2V5VXNlclJldmlldwAAAAIAAAAFdXNlcjEAAAAFdXNlcjIJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAAB3Jldmlld18FAAAABXVzZXIxAgAAAAFfBQAAAAV1c2VyMgEAAAASZ2V0VmFsdWVVc2VyUmV2aWV3AAAAAgAAAAV1c2VyMQAAAAV1c2VyMgkBAAAAC2dldFN0ckJ5S2V5AAAAAQkBAAAAEGdldEtleVVzZXJSZXZpZXcAAAACBQAAAAV1c2VyMQUAAAAFdXNlcjIAAAASAAAAAWkBAAAAFndpdGhkcmF3RGVjcnliZUJhbGFuY2UAAAABAAAABmFtb3VudAQAAAAHYWNjb3VudAkAAlgAAAABCAgFAAAAAWkAAAAGY2FsbGVyAAAABWJ5dGVzBAAAAAdiYWxhbmNlCQEAAAAWZ2V0VmFsdWVEZWNyeWJlQmFsYW5jZQAAAAADCQAAAAAAAAIFAAAAB2FjY291bnQFAAAAB0NSRUFUT1IDCQAAZwAAAAIFAAAAB2JhbGFuY2UFAAAABmFtb3VudAkBAAAAC1RyYW5zZmVyU2V0AAAA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AARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAQAAAA1nZXRLZXlVc2VyQmlvAAAAAQUAAAAHYWNjb3VudAUAAAAEZGF0YQUAAAADbmlsAAAAAWkBAAAAEnJlcG9ydENvbXBsZXRlVGFzawAAAAEAAAAEdGFzawQAAAAHYWNjb3VudAkAAlgAAAABCAgFAAAAAWkAAAAGY2FsbGVyAAAABWJ5dGVzBAAAAAVzdGFnZQkAAGQAAAACCQEAAAAdZ2V0VmFsdWVUYXNrUmVwb3J0Q29tcGxldGVDbnQAAAACBQAAAAR0YXNrBQAAAAdhY2NvdW50AAAAAAAAAAABBAAAAAt0YXNrQ3JlYXRvcgkBAAAAEmdldFZhbHVlVGFza0F1dGhvcgAAAAEFAAAABHRhc2sEAAAABnN0YXR1cwkBAAAAEmdldFZhbHVlVGFza1N0YXR1cwAAAAEFAAAABHRhc2sEAAAAFWZyZWVsYW5jZXJNZXNzYWdlc0NudAkBAAAAF2dldFZhbHVlVXNlck1lc3NhZ2VzQ250AAAAAgUAAAAHYWNjb3VudAUAAAALdGFza0NyZWF0b3IEAAAAFWxhc3RGcmVlbGFuY2VyTWVzc2FnZQkBAAAAE2dldFZhbHVlVXNlck1lc3NhZ2UAAAADBQAAAAdhY2NvdW50BQAAAAt0YXNrQ3JlYXRvcgkAAaQAAAABBQAAABVmcmVlbGFuY2VyTWVzc2FnZXNDbnQDCQAAAAAAAAIJAQAAAA9nZXRWYWx1ZVVzZXJCaW8AAAABBQAAAAdhY2NvdW50BQAAAAROT05FCQAAAgAAAAECAAAAD1VzZXIgbm90IHNpZ251cAMJAAAAAAAAAgkBAAAAEmdldFZhbHVlVGFza0F1dGhvcgAAAAEFAAAABHRhc2sFAAAAB2FjY291bnQJAAACAAAAAQIAAAAOWW91IGFyZSBhdXRob3IDCQEAAAACIT0AAAACCQEAAAAWZ2V0VmFsdWVUYXNrRnJlZWxhbmNlcgAAAAEFAAAABHRhc2sFAAAAB2FjY291bnQJAAACAAAAAQIAAAAWWW91IGFyZSBub3QgZnJlZWxhbmNlcgMJAQAAAAIhPQAAAAIFAAAABnN0YXR1cwUAAAAKSU5QUk9HUkVTUwkAAAIAAAABCQABLAAAAAICAAAAIVN0YXR1cyBtdXN0IGJlIGluIHByb2dyZXNzLCBub3c6IAUAAAAGc3RhdHVzAwkAAAAAAAACCQEAAAAWZ2V0VmFsdWVUYXNrRnJlZWxhbmNlcgAAAAEFAAAABHRhc2sFAAAABE5PTkUJAAACAAAAAQIAAAAcVGFzayBmcmVlbGFuY2VyIGRvZXNudCBleGlzdAkBAAAACFdyaXRlU2V0AAAAAQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkBAAAAGGdldEtleVRhc2tSZXBvcnRDb21wbGV0ZQAAAAMFAAAAB2FjY291bnQFAAAABHRhc2sJAAGkAAAAAQUAAAAFc3RhZ2UFAAAAFWZyZWVsYW5jZXJNZXNzYWdlc0NudAkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkBAAAAEGdldEtleVRhc2tTdGF0dXMAAAABBQAAAAR0YXNrBQAAAAdQRU5ESU5HBQAAAANuaWwAAAABaQEAAAAKYWNjZXB0V29yawAAAAIAAAAEdGFzawAAAAhjb21wbGV0ZQQAAAAHYWNjb3VudAkAAlgAAAABCAgFAAAAAWkAAAAGY2FsbGVyAAAABWJ5dGVzBAAAAAdjcmVhdG9yCQEAAAASZ2V0VmFsdWVUYXNrQXV0aG9yAAAAAQUAAAAEdGFzawQAAAAKZnJlZWxhbmNlcgkBAAAAFmdldFZhbHVlVGFza0ZyZWVsYW5jZXIAAAABBQAAAAR0YXNrBAAAAAVzdGFnZQkBAAAAHWdldFZhbHVlVGFza1JlcG9ydENvbXBsZXRlQ250AAAAAgUAAAAEdGFzawUAAAAKZnJlZWxhbmNlcgQAAAAGc3RhdHVzCQEAAAASZ2V0VmFsdWVUYXNrU3RhdHVzAAAAAQUAAAAEdGFzawQAAAAEYmFuawkBAAAAEGdldFZhbHVlVGFza0JhbmsAAAABBQAAAAR0YXNrAwkAAAAAAAACCQEAAAAPZ2V0VmFsdWVVc2VyQmlvAAAAAQUAAAAHYWNjb3VudAUAAAAETk9ORQkAAAIAAAABAgAAABFTZW5kZXIgbm90IHNpZ251cAMJAAAAAAAAAgkBAAAAEGdldFZhbHVlVGFza0RhdGEAAAABBQAAAAR0YXNrBQAAAAROT05FCQAAAgAAAAECAAAAEVRhc2sgZG9lc250IGV4aXN0AwkBAAAAAiE9AAAAAgUA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AgkBAAAACURhdGFFbnRyeQAAAAIJAQAAAB1nZXRLZXlUYXNrRGlzcHV0ZVZvdGVDdXN0b21lcgAAAAEFAAAABHRhc2sJAABkAAAAAgkBAAAAH2dldFZhbHVlVGFza0Rpc3B1dGVWb3RlQ3VzdG9tZXIAAAABBQAAAAR0YXNrAAAAAAAAAAABCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQEAAAAcZ2V0S2V5VGFza0Rpc3B1dGVWb3RlVmFyaWFudAAAAAIFAAAABHRhc2sFAAAAB2FjY291bnQCAAAACGN1c3RvbWVyCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQEAAAAYZ2V0S2V5VGFza0Rpc3B1dGVDb21tZW50AAAAAgUAAAAEdGFzawUAAAAHYWNjb3VudAUAAAAHbWVzc2FnZQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkBAAAAHWdldEtleVRhc2tEaXNwdXRlQ29tbWVudEJsb2NrAAAAAgUAAAAEdGFzawUAAAAHYWNjb3VudAUAAAAGaGVpZ2h0BQAAAANuaWwDCQAAAAAAAAIFAAAAB3ZhcmlhbnQCAAAACmZyZWVsYW5jZXIJAQAAAAhXcml0ZVNldAAAAAEJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAQAAAB9nZXRLZXlUYXNrRGlzcHV0ZVZvdGVGcmVlbGFuY2VyAAAAAQUAAAAEdGFzawkAAGQAAAACCQEAAAAhZ2V0VmFsdWVUYXNrRGlzcHV0ZVZvdGVGcmVlbGFuY2VyAAAAAQUAAAAEdGFzawAAAAAAAAAAAQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkBAAAAHGdldEtleVRhc2tEaXNwdXRlVm90ZVZhcmlhbnQAAAACBQAAAAR0YXNrBQAAAAdhY2NvdW50AgAAAApmcmVlbGFuY2VyCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQEAAAAYZ2V0S2V5VGFza0Rpc3B1dGVDb21tZW50AAAAAgUAAAAEdGFzawUAAAAHYWNjb3VudAUAAAAHbWVzc2FnZQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkBAAAAHWdldEtleVRhc2tEaXNwdXRlQ29tbWVudEJsb2NrAAAAAgUAAAAE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aGUgdGFzayBub3cJAQAAAAxTY3JpcHRSZXN1bHQAAAACCQEAAAAIV3JpdGVTZXQAAAABCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQEAAAAQZ2V0S2V5VGFza1N0YXR1cwAAAAEFAAAABHRhc2sFAAAACENBTkNFTEVEBQAAAANuaWwJAQAAAAtUcmFuc2ZlclNldAAAAAEJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwkBAAAAHEBleHRyVXNlcihhZGRyZXNzRnJvbVN0cmluZykAAAABBQAAAAdjcmVhdG9yBQAAAARiYW5rBQAAAAR1bml0BQAAAANuaWwAAAABaQEAAAATZGVmaW5lRGlzcHV0ZVdpbm5lcgAAAAEAAAAEdGFzawQAAAAHYWNjb3VudAkAAlgAAAABCAgFAAAAAWkAAAAGY2FsbGVyAAAABWJ5dGVzBAAAAAhjdXN0b21lcgkBAAAAEmdldFZhbHVlVGFza0F1dGhvcgAAAAEFAAAABHRhc2sEAAAACmZyZWVsYW5jZXIJAQAAABZnZXRWYWx1ZVRhc2tGcmVlbGFuY2VyAAAAAQUAAAAEdGFzawQAAAAEYmFuawkBAAAAEGdldFZhbHVlVGFza0JhbmsAAAABBQAAAAR0YXNrBAAAABB2b3Rlc0ZvckN1c3RvbWVyCQEAAAAfZ2V0VmFsdWVUYXNrRGlzcHV0ZVZvdGVDdXN0b21lcgAAAAEFAAAABHRhc2sEAAAAEnZvdGVzRm9yRnJlZWxhbmNlcgkBAAAAIWdldFZhbHVlVGFza0Rpc3B1dGVWb3RlRnJlZWxhbmNlcgAAAAEFAAAABHRhc2sEAAAACnRvdGFsVm90ZXMJAABkAAAAAgUAAAAQdm90ZXNGb3JDdXN0b21lcgUAAAASdm90ZXNGb3JGcmVlbGFuY2VyAwkAAAAAAAACCQEAAAAPZ2V0VmFsdWVVc2VyQmlvAAAAAQUAAAAHYWNjb3VudAUAAAAETk9ORQkAAAIAAAABAgAAAA5Zb3Ugbm90IHNpZ251cAMJAQAAAAIhPQAAAAIJAQAAABJnZXRWYWx1ZVRhc2tTdGF0dXMAAAABBQAAAAR0YXNrBQAAAAlJTkRJU1BVVEUJAAACAAAAAQIAAAAhVGhlIGRpc3B1dGUgaXMgY2xvc2VkIG9yIG5v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", "chainId": 84, "height": 845991, "spentComplexity": 0 } View: original | compacted Prev: GDjbcZUXAnVTYtG4NXTTWevwQwxr2MVHBYGfnML68PvF Next: GvLfib1gv2VXhEXwRp92zzBGxvdY9vtJkE9rsRYCHzAs Diff:
OldNewDifferences
228228 func aK (G,al) = o(aJ(G, al))
229229
230230
231-@Callable(aL)
232-func withdrawDecrybeBalance (aM) = {
233- let V = toBase58String(aL.caller.bytes)
234- let aN = ah()
231+func aL (aM,aN) = ((("review_" + aM) + "_") + aN)
232+
233+
234+func aO (aM,aN) = o(aL(aM, aN))
235+
236+
237+@Callable(aP)
238+func withdrawDecrybeBalance (aQ) = {
239+ let V = toBase58String(aP.caller.bytes)
240+ let aR = ah()
235241 if ((V == f))
236- then if ((aN >= aM))
237- then TransferSet([ScriptTransfer(addressFromStringValue(V), aM, unit)])
238- else throw(("You cannot withdraw an amount greater than " + toString(aN)))
242+ then if ((aR >= aQ))
243+ then TransferSet([ScriptTransfer(addressFromStringValue(V), aQ, unit)])
244+ else throw(("You cannot withdraw an amount greater than " + toString(aR)))
239245 else throw("You can't do that")
240246 }
241247
242248
243249
244-@Callable(aL)
245-func createTask (G,aO,aP) = {
246- let V = toBase58String(aL.caller.bytes)
247- let aQ = extract(aL.payment)
248- let aR = aQ.amount
249- let aS = ((aR / ((1 * n) + m)) * n)
250- let aT = (aR - aS)
251- if (isDefined(aQ.assetId))
250+@Callable(aP)
251+func createTask (G,aS,aT) = {
252+ let V = toBase58String(aP.caller.bytes)
253+ let aU = extract(aP.payment)
254+ let aV = aU.amount
255+ let aW = ((aV / ((1 * n) + m)) * n)
256+ let aX = (aV - aW)
257+ if (isDefined(aU.assetId))
252258 then throw("Can use waves only at the moment")
253- else if ((aR == 0))
259+ else if ((aV == 0))
254260 then throw("Amount must be higher then 0")
255261 else if ((J(G) != a))
256262 then throw("Task already exist")
257263 else if ((W(V) == a))
258264 then throw("User not signup")
259- else WriteSet([DataEntry(I(G), V), DataEntry(K(G), height), DataEntry(S(G), (height + aO)), DataEntry(M(G), aS), DataEntry(Q(G), b), DataEntry(F(G), aP), DataEntry(ag(), (ah() + aT)), DataEntry(ai(G), 0)])
265+ else WriteSet([DataEntry(I(G), V), DataEntry(K(G), height), DataEntry(S(G), (height + aS)), DataEntry(M(G), aW), DataEntry(Q(G), b), DataEntry(F(G), aT), DataEntry(ag(), (ah() + aX)), DataEntry(ai(G), 0)])
260266 }
261267
262268
263269
264-@Callable(aL)
265-func signUp (aP) = {
266- let V = toBase58String(aL.caller.bytes)
270+@Callable(aP)
271+func signUp (aT) = {
272+ let V = toBase58String(aP.caller.bytes)
267273 if ((W(V) != a))
268274 then throw("User already exist")
269- else WriteSet([DataEntry(U(V), aP), DataEntry(Z(V), height), DataEntry(X(V), e)])
275+ else WriteSet([DataEntry(U(V), aT), DataEntry(Z(V), height), DataEntry(X(V), e)])
270276 }
271277
272278
273279
274-@Callable(aL)
280+@Callable(aP)
275281 func hireFreelancer (G,ab) = {
276- let V = toBase58String(aL.caller.bytes)
282+ let V = toBase58String(aP.caller.bytes)
277283 if ((H(G) == a))
278284 then throw("Task doesnt exist")
279285 else if ((W(V) == a))
293299
294300
295301
296-@Callable(aL)
297-func sendMessage (G,x,aU) = {
298- let V = toBase58String(aL.caller.bytes)
302+@Callable(aP)
303+func sendMessage (G,x,aY) = {
304+ let V = toBase58String(aP.caller.bytes)
299305 let C = (y(V, x) + 1)
300306 if ((H(G) == a))
301307 then throw("Task doesnt exist")
305311 then throw("Sender not signup")
306312 else if ((W(x) == a))
307313 then throw("Recipient not singup")
308- else WriteSet([DataEntry(v(V, x), C), DataEntry(z(V, x, toString(C)), aU), DataEntry(D(V, x, toString(C)), height)])
314+ else WriteSet([DataEntry(v(V, x), C), DataEntry(z(V, x, toString(C)), aY), DataEntry(D(V, x, toString(C)), height)])
309315 }
310316
311317
312318
313-@Callable(aL)
314-func taskUpdate (G,aP) = {
315- let V = toBase58String(aL.caller.bytes)
319+@Callable(aP)
320+func taskUpdate (G,aT) = {
321+ let V = toBase58String(aP.caller.bytes)
316322 if ((W(V) == a))
317323 then throw("User not signup")
318324 else if ((H(G) == a))
321327 then throw("You're not author")
322328 else if ((R(G) != b))
323329 then throw("Editing tasks is not available after hiring a freelancer")
324- else WriteSet([DataEntry(F(G), aP)])
330+ else WriteSet([DataEntry(F(G), aT)])
325331 }
326332
327333
328334
329-@Callable(aL)
330-func userUpdate (aP) = {
331- let V = toBase58String(aL.caller.bytes)
335+@Callable(aP)
336+func userUpdate (aT) = {
337+ let V = toBase58String(aP.caller.bytes)
332338 if ((W(V) == a))
333339 then throw("User not signup")
334- else WriteSet([DataEntry(U(V), aP)])
340+ else WriteSet([DataEntry(U(V), aT)])
335341 }
336342
337343
338344
339-@Callable(aL)
345+@Callable(aP)
340346 func reportCompleteTask (G) = {
341- let V = toBase58String(aL.caller.bytes)
347+ let V = toBase58String(aP.caller.bytes)
342348 let ac = (af(G, V) + 1)
343- let aV = J(G)
344- let aW = R(G)
345- let aX = y(V, aV)
346- let aY = B(V, aV, toString(aX))
349+ let aZ = J(G)
350+ let ba = R(G)
351+ let bb = y(V, aZ)
352+ let bc = B(V, aZ, toString(bb))
347353 if ((W(V) == a))
348354 then throw("User not signup")
349355 else if ((J(G) == V))
350356 then throw("You are author")
351357 else if ((P(G) != V))
352358 then throw("You are not freelancer")
353- else if ((aW != g))
354- then throw(("Status must be in progress, now: " + aW))
359+ else if ((ba != g))
360+ then throw(("Status must be in progress, now: " + ba))
355361 else if ((P(G) == a))
356362 then throw("Task freelancer doesnt exist")
357- else WriteSet([DataEntry(aa(V, G, toString(ac)), aX), DataEntry(Q(G), i)])
363+ else WriteSet([DataEntry(aa(V, G, toString(ac)), bb), DataEntry(Q(G), i)])
358364 }
359365
360366
361367
362-@Callable(aL)
363-func acceptWork (G,aZ) = {
364- let V = toBase58String(aL.caller.bytes)
365- let ba = J(G)
368+@Callable(aP)
369+func acceptWork (G,bd) = {
370+ let V = toBase58String(aP.caller.bytes)
371+ let be = J(G)
366372 let ab = P(G)
367373 let ac = af(G, ab)
368- let aW = R(G)
369- let bb = N(G)
374+ let ba = R(G)
375+ let bf = N(G)
370376 if ((W(V) == a))
371377 then throw("Sender not signup")
372378 else if ((H(G) == a))
373379 then throw("Task doesnt exist")
374- else if ((V != ba))
380+ else if ((V != be))
375381 then throw("You are not author")
376- else if ((aW != i))
382+ else if ((ba != i))
377383 then throw("Freelancer doesnt complete the task")
378- else if (aZ)
379- then ScriptResult(WriteSet([DataEntry(Q(G), h), DataEntry(an(ab), (ao(ab) + 1)), DataEntry(ap(V, ab), "positive"), DataEntry(M(G), "0")]), TransferSet([ScriptTransfer(addressFromStringValue(ab), bb, unit)]))
384+ else if (bd)
385+ then ScriptResult(WriteSet([DataEntry(Q(G), h), DataEntry(an(ab), (ao(ab) + 1)), DataEntry(ap(V, ab), "positive"), DataEntry(M(G), "0")]), TransferSet([ScriptTransfer(addressFromStringValue(ab), bf, unit)]))
380386 else WriteSet([DataEntry(Q(G), g)])
381387 }
382388
383389
384390
385-@Callable(aL)
386-func moveDeadline (G,bc) = {
387- let V = toBase58String(aL.caller.bytes)
388- let ba = J(G)
389- let aO = T(G)
390- let aW = R(G)
391- if ((aW == h))
391+@Callable(aP)
392+func moveDeadline (G,bg) = {
393+ let V = toBase58String(aP.caller.bytes)
394+ let be = J(G)
395+ let aS = T(G)
396+ let ba = R(G)
397+ if ((ba == h))
392398 then throw("The task is completed")
393- else if ((aW == j))
399+ else if ((ba == j))
394400 then throw("You can't change the deadline at this time")
395- else if ((V != ba))
401+ else if ((V != be))
396402 then throw("You are not author of the task")
397- else if ((height > bc))
403+ else if ((height > bg))
398404 then throw("The deadline must be > the current block")
399- else if ((aO > bc))
405+ else if ((aS > bg))
400406 then throw("The deadline can only be moved forward")
401- else WriteSet([DataEntry(S(G), bc)])
407+ else WriteSet([DataEntry(S(G), bg)])
402408 }
403409
404410
405411
406-@Callable(aL)
407-func voteTask (G,bd) = {
408- let V = toBase58String(aL.caller.bytes)
412+@Callable(aP)
413+func voteTask (G,bh) = {
414+ let V = toBase58String(aP.caller.bytes)
409415 if ((W(V) == a))
410416 then throw("User not signup")
411417 else if ((J(G) == V))
416422 then throw("Now you can’t lower the task rating")
417423 else if ((am(G, V) != a))
418424 then throw("You have already voted")
419- else if ((bd == "positive"))
425+ else if ((bh == "positive"))
420426 then WriteSet([DataEntry(ai(G), (aj(G) + 1)), DataEntry(ak(G, V), "positive")])
421- else if ((bd == "negative"))
427+ else if ((bh == "negative"))
422428 then WriteSet([DataEntry(ai(G), (aj(G) - 1)), DataEntry(ak(G, V), "negative")])
423429 else throw("Use positive/negative only")
424430 }
425431
426432
427433
428-@Callable(aL)
434+@Callable(aP)
429435 func reportUser (al) = {
430- let V = toBase58String(aL.caller.bytes)
436+ let V = toBase58String(aP.caller.bytes)
431437 if ((W(V) == a))
432438 then throw("You not signup")
433439 else if ((W(al) == a))
441447
442448
443449
444-@Callable(aL)
445-func openTaskDispute (G,aU) = {
446- let V = toBase58String(aL.caller.bytes)
447- let ba = J(G)
450+@Callable(aP)
451+func openTaskDispute (G,aY) = {
452+ let V = toBase58String(aP.caller.bytes)
453+ let be = J(G)
448454 let ab = P(G)
449- let aW = R(G)
455+ let ba = R(G)
450456 if ((W(V) == a))
451457 then throw("You not signup")
452458 else if ((H(G) == a))
453459 then throw("Task doesnt exist")
454- else if (if ((V != ba))
460+ else if (if ((V != be))
455461 then (V != ab)
456462 else false)
457- then throw((((("You must be a freelancer (" + ab) + ") or a customer (") + ba) + ") of this task"))
458- else if ((aW == j))
463+ then throw((((("You must be a freelancer (" + ab) + ") or a customer (") + be) + ") of this task"))
464+ else if ((ba == j))
459465 then throw("Dispute already open")
460- else if (if ((aW != g))
461- then (aW != i)
466+ else if (if ((ba != g))
467+ then (ba != i)
462468 else false)
463469 then throw("You can't create a dispute right now")
464- else WriteSet([DataEntry(as(G), V), DataEntry(ay(G, V, "0"), aU), DataEntry(aB(G, V, "0"), height), DataEntry(Q(G), j)])
470+ else WriteSet([DataEntry(as(G), V), DataEntry(ay(G, V, "0"), aY), DataEntry(aB(G, V, "0"), height), DataEntry(Q(G), j)])
465471 }
466472
467473
468474
469-@Callable(aL)
470-func voteTaskDispute (G,be,aU) = {
471- let V = toBase58String(aL.caller.bytes)
472- let ba = J(G)
475+@Callable(aP)
476+func voteTaskDispute (G,bi,aY) = {
477+ let V = toBase58String(aP.caller.bytes)
478+ let be = J(G)
473479 let ab = P(G)
474480 if ((W(V) == a))
475481 then throw("You not signup")
477483 then throw("Task doesnt exist")
478484 else if ((at(G) == a))
479485 then throw("Dispute doesnt exist")
480- else if ((V == ba))
486+ else if ((V == be))
481487 then throw("The creator of the task can not vote")
482488 else if ((V == ab))
483489 then throw("The freelancer of the task can not vote")
484490 else if ((aK(G, V) != a))
485491 then throw("You have already voted")
486- else if ((be == "customer"))
487- then WriteSet([DataEntry(au(G), (av(G) + 1)), DataEntry(aJ(G, V), "customer"), DataEntry(aF(G, V), aU), DataEntry(aH(G, V), height)])
488- else if ((be == "freelancer"))
489- then WriteSet([DataEntry(aw(G), (ax(G) + 1)), DataEntry(aJ(G, V), "freelancer"), DataEntry(aF(G, V), aU), DataEntry(aH(G, V), height)])
492+ else if ((bi == "customer"))
493+ then WriteSet([DataEntry(au(G), (av(G) + 1)), DataEntry(aJ(G, V), "customer"), DataEntry(aF(G, V), aY), DataEntry(aH(G, V), height)])
494+ else if ((bi == "freelancer"))
495+ then WriteSet([DataEntry(aw(G), (ax(G) + 1)), DataEntry(aJ(G, V), "freelancer"), DataEntry(aF(G, V), aY), DataEntry(aH(G, V), height)])
490496 else throw("Select one of the sides")
491497 }
492498
493499
494500
495-@Callable(aL)
496-func taskDisputeMessage (G,aU) = {
497- let V = toBase58String(aL.caller.bytes)
498- let ba = J(G)
501+@Callable(aP)
502+func taskDisputeMessage (G,aY) = {
503+ let V = toBase58String(aP.caller.bytes)
504+ let be = J(G)
499505 let ab = P(G)
500506 let C = (aE(G, V) + 1)
501507 if ((W(V) == a))
504510 then throw("Task doesnt exist")
505511 else if ((at(G) == a))
506512 then throw("Dispute doesnt exist")
507- else if (if ((V != ba))
513+ else if (if ((V != be))
508514 then (V != ab)
509515 else false)
510- then throw((((("You must be a freelancer (" + ab) + ") or a customer (") + ba) + ") of this task"))
516+ then throw((((("You must be a freelancer (" + ab) + ") or a customer (") + be) + ") of this task"))
511517 else if ((R(G) != j))
512518 then throw("You cannot send messages at this time")
513- else WriteSet([DataEntry(ay(G, V, toString(C)), aU), DataEntry(aB(G, V, toString(C)), height), DataEntry(aD(G, V), C)])
519+ else WriteSet([DataEntry(ay(G, V, toString(C)), aY), DataEntry(aB(G, V, toString(C)), height), DataEntry(aD(G, V), C)])
514520 }
515521
516522
517523
518-@Callable(aL)
524+@Callable(aP)
519525 func cancelTask (G) = {
520- let V = toBase58String(aL.caller.bytes)
521- let ba = J(G)
522- let bb = N(G)
526+ let V = toBase58String(aP.caller.bytes)
527+ let be = J(G)
528+ let bf = N(G)
523529 if ((W(V) == a))
524530 then throw("You not signup")
525531 else if ((H(G) == a))
526532 then throw("Task doesnt exist")
527- else if ((V != ba))
533+ else if ((V != be))
528534 then throw("You are not author of the task")
529535 else if ((R(G) != b))
530536 then throw("You can't cancel the task now")
531- else ScriptResult(WriteSet([DataEntry(Q(G), l)]), TransferSet([ScriptTransfer(addressFromStringValue(ba), bb, unit)]))
537+ else ScriptResult(WriteSet([DataEntry(Q(G), l)]), TransferSet([ScriptTransfer(addressFromStringValue(be), bf, unit)]))
532538 }
533539
534540
535541
536-@Callable(aL)
542+@Callable(aP)
537543 func defineDisputeWinner (G) = {
538- let V = toBase58String(aL.caller.bytes)
539- let bf = J(G)
544+ let V = toBase58String(aP.caller.bytes)
545+ let bj = J(G)
540546 let ab = P(G)
541- let bb = N(G)
542- let bg = av(G)
543- let bh = ax(G)
544- let bi = (bg + bh)
547+ let bf = N(G)
548+ let bk = av(G)
549+ let bl = ax(G)
550+ let bm = (bk + bl)
545551 if ((W(V) == a))
546552 then throw("You not signup")
547553 else if ((R(G) != j))
548554 then throw("The dispute is closed or not open")
549- else if ((3 > bi))
550- then throw(("Need minimum 3 votes. Now: " + toString(bi)))
551- else if ((bg > bh))
552- then ScriptResult(WriteSet([DataEntry(Q(G), h)]), TransferSet([ScriptTransfer(addressFromStringValue(bf), bb, unit)]))
553- else if ((bh > bg))
554- then ScriptResult(WriteSet([DataEntry(Q(G), h)]), TransferSet([ScriptTransfer(addressFromStringValue(ab), bb, unit)]))
555- else ScriptResult(WriteSet([DataEntry(Q(G), h)]), TransferSet([ScriptTransfer(addressFromStringValue(ab), (bb / 2), unit), ScriptTransfer(addressFromStringValue(bf), (bb / 2), unit)]))
555+ else if ((3 > bm))
556+ then throw(("Need minimum 3 votes. Now: " + toString(bm)))
557+ else if ((bk > bl))
558+ then ScriptResult(WriteSet([DataEntry(Q(G), h)]), TransferSet([ScriptTransfer(addressFromStringValue(bj), bf, unit)]))
559+ else if ((bl > bk))
560+ then ScriptResult(WriteSet([DataEntry(Q(G), h)]), TransferSet([ScriptTransfer(addressFromStringValue(ab), bf, unit)]))
561+ else ScriptResult(WriteSet([DataEntry(Q(G), h)]), TransferSet([ScriptTransfer(addressFromStringValue(ab), (bf / 2), unit), ScriptTransfer(addressFromStringValue(bj), (bf / 2), unit)]))
562+ }
563+
564+
565+
566+@Callable(aP)
567+func leaveUserReview (al,G,bn) = {
568+ let V = toBase58String(aP.caller.bytes)
569+ let bj = J(G)
570+ let ab = P(G)
571+ if ((W(V) == a))
572+ then throw("You not signup")
573+ else if (if (if (if ((al != bj))
574+ then (al != ab)
575+ else false)
576+ then (V != bj)
577+ else false)
578+ then (V != ab)
579+ else false)
580+ then throw("You have not worked with this user")
581+ else if ((R(G) != h))
582+ then throw("You can't leave feedback until the task is completed")
583+ else if ((aO(V, al) != a))
584+ then throw("have you already left a review for this user")
585+ else WriteSet([DataEntry(aL(V, al), bn)])
556586 }
557587
558588
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 3 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = "none"
55
66 let b = "featured"
77
88 let c = ""
99
1010 let d = "mod"
1111
1212 let e = "registered"
1313
1414 let f = "3MsTLizEg4vqNgD7ZVjhkPaZgsrN11JqzLJ"
1515
1616 let g = "in progress"
1717
1818 let h = "completed"
1919
2020 let i = "pending"
2121
2222 let j = "in dispute"
2323
2424 let k = "revision"
2525
2626 let l = "canceled"
2727
2828 let m = (2 / 100)
2929
3030 let n = 100000000
3131
3232 func o (p) = {
3333 let q = {
3434 let r = getString(this, p)
3535 if ($isInstanceOf(r, "String"))
3636 then {
3737 let s = r
3838 s
3939 }
4040 else a
4141 }
4242 q
4343 }
4444
4545
4646 func t (p) = {
4747 let u = {
4848 let r = getInteger(this, p)
4949 if ($isInstanceOf(r, "Int"))
5050 then {
5151 let s = r
5252 s
5353 }
5454 else 0
5555 }
5656 u
5757 }
5858
5959
6060 func v (w,x) = ((("msg_cnt_" + w) + "_") + x)
6161
6262
6363 func y (w,x) = t(v(w, x))
6464
6565
6666 func z (w,x,A) = ((((("msg_" + w) + "_") + x) + "_id:") + A)
6767
6868
6969 func B (w,x,C) = o(z(w, x, C))
7070
7171
7272 func D (w,x,C) = ((((("block_msg_" + w) + "_") + x) + "_id:") + C)
7373
7474
7575 func E (w,x,C) = o(D(w, x, C))
7676
7777
7878 func F (G) = ("datajson_" + G)
7979
8080
8181 func H (G) = o(F(G))
8282
8383
8484 func I (G) = ("author_" + G)
8585
8686
8787 func J (G) = o(I(G))
8888
8989
9090 func K (G) = ("block_" + G)
9191
9292
9393 func L (G) = t(K(G))
9494
9595
9696 func M (G) = ("bank_" + G)
9797
9898
9999 func N (G) = t(M(G))
100100
101101
102102 func O (G) = ("freelancer_" + G)
103103
104104
105105 func P (G) = o(O(G))
106106
107107
108108 func Q (G) = ("status_" + G)
109109
110110
111111 func R (G) = o(Q(G))
112112
113113
114114 func S (G) = ("expiration_block_" + G)
115115
116116
117117 func T (G) = t(S(G))
118118
119119
120120 func U (V) = ("user_bio_" + V)
121121
122122
123123 func W (V) = o(U(V))
124124
125125
126126 func X (V) = ("user_sts_" + V)
127127
128128
129129 func Y (V) = o(X(V))
130130
131131
132132 func Z (V) = ("user_blk_" + V)
133133
134134
135135 func aa (ab,G,ac) = ((((("rc_" + G) + "_") + ab) + "_stage:") + ac)
136136
137137
138138 func ad (ab,G,ac) = o(aa(ab, G, ac))
139139
140140
141141 func ae (G,ab) = ((("rc_cnt_" + G) + "_") + ab)
142142
143143
144144 func af (G,ab) = t(ae(G, ab))
145145
146146
147147 func ag () = "decrybe_balance"
148148
149149
150150 func ah () = t(ag())
151151
152152
153153 func ai (G) = ("task_rating_" + G)
154154
155155
156156 func aj (G) = t(ai(G))
157157
158158
159159 func ak (G,al) = ((("task_vote_" + G) + "_") + al)
160160
161161
162162 func am (G,al) = o(ak(G, al))
163163
164164
165165 func an (al) = ("user_rating_" + al)
166166
167167
168168 func ao (al) = t(an(al))
169169
170170
171171 func ap (al,aq) = (("user_vote_" + al) + aq)
172172
173173
174174 func ar (al,aq) = o(ap(al, aq))
175175
176176
177177 func as (G) = ("task_dispute_" + G)
178178
179179
180180 func at (G) = o(as(G))
181181
182182
183183 func au (G) = ("task_dispvote_cst_" + G)
184184
185185
186186 func av (G) = t(au(G))
187187
188188
189189 func aw (G) = ("task_dispvote_flr_" + G)
190190
191191
192192 func ax (G) = t(aw(G))
193193
194194
195195 func ay (G,az,A) = ((((("task_dispmsg_" + G) + "_") + az) + "_id:") + A)
196196
197197
198198 func aA (G,az,A) = o(ay(G, az, A))
199199
200200
201201 func aB (G,az,A) = ((((("task_dispmsg_blk_" + G) + "_") + az) + "_id:") + A)
202202
203203
204204 func aC (G,az,A) = o(aB(G, az, A))
205205
206206
207207 func aD (G,al) = ((("task_dispmsg_cnt_" + G) + "_") + al)
208208
209209
210210 func aE (G,al) = t(aD(G, al))
211211
212212
213213 func aF (G,az) = ((("task_dispcom_" + G) + "_") + az)
214214
215215
216216 func aG (G,az) = o(aF(G, az))
217217
218218
219219 func aH (G,az) = ((("task_dispcom_blk_" + G) + "_") + az)
220220
221221
222222 func aI (G,az) = o(aH(G, az))
223223
224224
225225 func aJ (G,al) = ((("task_dispvar_" + G) + "_") + al)
226226
227227
228228 func aK (G,al) = o(aJ(G, al))
229229
230230
231-@Callable(aL)
232-func withdrawDecrybeBalance (aM) = {
233- let V = toBase58String(aL.caller.bytes)
234- let aN = ah()
231+func aL (aM,aN) = ((("review_" + aM) + "_") + aN)
232+
233+
234+func aO (aM,aN) = o(aL(aM, aN))
235+
236+
237+@Callable(aP)
238+func withdrawDecrybeBalance (aQ) = {
239+ let V = toBase58String(aP.caller.bytes)
240+ let aR = ah()
235241 if ((V == f))
236- then if ((aN >= aM))
237- then TransferSet([ScriptTransfer(addressFromStringValue(V), aM, unit)])
238- else throw(("You cannot withdraw an amount greater than " + toString(aN)))
242+ then if ((aR >= aQ))
243+ then TransferSet([ScriptTransfer(addressFromStringValue(V), aQ, unit)])
244+ else throw(("You cannot withdraw an amount greater than " + toString(aR)))
239245 else throw("You can't do that")
240246 }
241247
242248
243249
244-@Callable(aL)
245-func createTask (G,aO,aP) = {
246- let V = toBase58String(aL.caller.bytes)
247- let aQ = extract(aL.payment)
248- let aR = aQ.amount
249- let aS = ((aR / ((1 * n) + m)) * n)
250- let aT = (aR - aS)
251- if (isDefined(aQ.assetId))
250+@Callable(aP)
251+func createTask (G,aS,aT) = {
252+ let V = toBase58String(aP.caller.bytes)
253+ let aU = extract(aP.payment)
254+ let aV = aU.amount
255+ let aW = ((aV / ((1 * n) + m)) * n)
256+ let aX = (aV - aW)
257+ if (isDefined(aU.assetId))
252258 then throw("Can use waves only at the moment")
253- else if ((aR == 0))
259+ else if ((aV == 0))
254260 then throw("Amount must be higher then 0")
255261 else if ((J(G) != a))
256262 then throw("Task already exist")
257263 else if ((W(V) == a))
258264 then throw("User not signup")
259- else WriteSet([DataEntry(I(G), V), DataEntry(K(G), height), DataEntry(S(G), (height + aO)), DataEntry(M(G), aS), DataEntry(Q(G), b), DataEntry(F(G), aP), DataEntry(ag(), (ah() + aT)), DataEntry(ai(G), 0)])
265+ else WriteSet([DataEntry(I(G), V), DataEntry(K(G), height), DataEntry(S(G), (height + aS)), DataEntry(M(G), aW), DataEntry(Q(G), b), DataEntry(F(G), aT), DataEntry(ag(), (ah() + aX)), DataEntry(ai(G), 0)])
260266 }
261267
262268
263269
264-@Callable(aL)
265-func signUp (aP) = {
266- let V = toBase58String(aL.caller.bytes)
270+@Callable(aP)
271+func signUp (aT) = {
272+ let V = toBase58String(aP.caller.bytes)
267273 if ((W(V) != a))
268274 then throw("User already exist")
269- else WriteSet([DataEntry(U(V), aP), DataEntry(Z(V), height), DataEntry(X(V), e)])
275+ else WriteSet([DataEntry(U(V), aT), DataEntry(Z(V), height), DataEntry(X(V), e)])
270276 }
271277
272278
273279
274-@Callable(aL)
280+@Callable(aP)
275281 func hireFreelancer (G,ab) = {
276- let V = toBase58String(aL.caller.bytes)
282+ let V = toBase58String(aP.caller.bytes)
277283 if ((H(G) == a))
278284 then throw("Task doesnt exist")
279285 else if ((W(V) == a))
280286 then throw("Customer not signup")
281287 else if ((W(ab) == a))
282288 then throw("Freelancer not signup")
283289 else if ((J(G) != V))
284290 then throw("You're not author")
285291 else if ((R(G) != b))
286292 then throw("Freelancer is no longer required")
287293 else if ((ab == V))
288294 then throw("You can't hire yourself")
289295 else if ((B(ab, V, "1") == a))
290296 then throw("The freelancer was not attached to the task")
291297 else WriteSet([DataEntry(O(G), ab), DataEntry(Q(G), g)])
292298 }
293299
294300
295301
296-@Callable(aL)
297-func sendMessage (G,x,aU) = {
298- let V = toBase58String(aL.caller.bytes)
302+@Callable(aP)
303+func sendMessage (G,x,aY) = {
304+ let V = toBase58String(aP.caller.bytes)
299305 let C = (y(V, x) + 1)
300306 if ((H(G) == a))
301307 then throw("Task doesnt exist")
302308 else if ((V == x))
303309 then throw("You can't send messages to yourself")
304310 else if ((W(V) == a))
305311 then throw("Sender not signup")
306312 else if ((W(x) == a))
307313 then throw("Recipient not singup")
308- else WriteSet([DataEntry(v(V, x), C), DataEntry(z(V, x, toString(C)), aU), DataEntry(D(V, x, toString(C)), height)])
314+ else WriteSet([DataEntry(v(V, x), C), DataEntry(z(V, x, toString(C)), aY), DataEntry(D(V, x, toString(C)), height)])
309315 }
310316
311317
312318
313-@Callable(aL)
314-func taskUpdate (G,aP) = {
315- let V = toBase58String(aL.caller.bytes)
319+@Callable(aP)
320+func taskUpdate (G,aT) = {
321+ let V = toBase58String(aP.caller.bytes)
316322 if ((W(V) == a))
317323 then throw("User not signup")
318324 else if ((H(G) == a))
319325 then throw("Task doesnt exist")
320326 else if ((J(G) != V))
321327 then throw("You're not author")
322328 else if ((R(G) != b))
323329 then throw("Editing tasks is not available after hiring a freelancer")
324- else WriteSet([DataEntry(F(G), aP)])
330+ else WriteSet([DataEntry(F(G), aT)])
325331 }
326332
327333
328334
329-@Callable(aL)
330-func userUpdate (aP) = {
331- let V = toBase58String(aL.caller.bytes)
335+@Callable(aP)
336+func userUpdate (aT) = {
337+ let V = toBase58String(aP.caller.bytes)
332338 if ((W(V) == a))
333339 then throw("User not signup")
334- else WriteSet([DataEntry(U(V), aP)])
340+ else WriteSet([DataEntry(U(V), aT)])
335341 }
336342
337343
338344
339-@Callable(aL)
345+@Callable(aP)
340346 func reportCompleteTask (G) = {
341- let V = toBase58String(aL.caller.bytes)
347+ let V = toBase58String(aP.caller.bytes)
342348 let ac = (af(G, V) + 1)
343- let aV = J(G)
344- let aW = R(G)
345- let aX = y(V, aV)
346- let aY = B(V, aV, toString(aX))
349+ let aZ = J(G)
350+ let ba = R(G)
351+ let bb = y(V, aZ)
352+ let bc = B(V, aZ, toString(bb))
347353 if ((W(V) == a))
348354 then throw("User not signup")
349355 else if ((J(G) == V))
350356 then throw("You are author")
351357 else if ((P(G) != V))
352358 then throw("You are not freelancer")
353- else if ((aW != g))
354- then throw(("Status must be in progress, now: " + aW))
359+ else if ((ba != g))
360+ then throw(("Status must be in progress, now: " + ba))
355361 else if ((P(G) == a))
356362 then throw("Task freelancer doesnt exist")
357- else WriteSet([DataEntry(aa(V, G, toString(ac)), aX), DataEntry(Q(G), i)])
363+ else WriteSet([DataEntry(aa(V, G, toString(ac)), bb), DataEntry(Q(G), i)])
358364 }
359365
360366
361367
362-@Callable(aL)
363-func acceptWork (G,aZ) = {
364- let V = toBase58String(aL.caller.bytes)
365- let ba = J(G)
368+@Callable(aP)
369+func acceptWork (G,bd) = {
370+ let V = toBase58String(aP.caller.bytes)
371+ let be = J(G)
366372 let ab = P(G)
367373 let ac = af(G, ab)
368- let aW = R(G)
369- let bb = N(G)
374+ let ba = R(G)
375+ let bf = N(G)
370376 if ((W(V) == a))
371377 then throw("Sender not signup")
372378 else if ((H(G) == a))
373379 then throw("Task doesnt exist")
374- else if ((V != ba))
380+ else if ((V != be))
375381 then throw("You are not author")
376- else if ((aW != i))
382+ else if ((ba != i))
377383 then throw("Freelancer doesnt complete the task")
378- else if (aZ)
379- then ScriptResult(WriteSet([DataEntry(Q(G), h), DataEntry(an(ab), (ao(ab) + 1)), DataEntry(ap(V, ab), "positive"), DataEntry(M(G), "0")]), TransferSet([ScriptTransfer(addressFromStringValue(ab), bb, unit)]))
384+ else if (bd)
385+ then ScriptResult(WriteSet([DataEntry(Q(G), h), DataEntry(an(ab), (ao(ab) + 1)), DataEntry(ap(V, ab), "positive"), DataEntry(M(G), "0")]), TransferSet([ScriptTransfer(addressFromStringValue(ab), bf, unit)]))
380386 else WriteSet([DataEntry(Q(G), g)])
381387 }
382388
383389
384390
385-@Callable(aL)
386-func moveDeadline (G,bc) = {
387- let V = toBase58String(aL.caller.bytes)
388- let ba = J(G)
389- let aO = T(G)
390- let aW = R(G)
391- if ((aW == h))
391+@Callable(aP)
392+func moveDeadline (G,bg) = {
393+ let V = toBase58String(aP.caller.bytes)
394+ let be = J(G)
395+ let aS = T(G)
396+ let ba = R(G)
397+ if ((ba == h))
392398 then throw("The task is completed")
393- else if ((aW == j))
399+ else if ((ba == j))
394400 then throw("You can't change the deadline at this time")
395- else if ((V != ba))
401+ else if ((V != be))
396402 then throw("You are not author of the task")
397- else if ((height > bc))
403+ else if ((height > bg))
398404 then throw("The deadline must be > the current block")
399- else if ((aO > bc))
405+ else if ((aS > bg))
400406 then throw("The deadline can only be moved forward")
401- else WriteSet([DataEntry(S(G), bc)])
407+ else WriteSet([DataEntry(S(G), bg)])
402408 }
403409
404410
405411
406-@Callable(aL)
407-func voteTask (G,bd) = {
408- let V = toBase58String(aL.caller.bytes)
412+@Callable(aP)
413+func voteTask (G,bh) = {
414+ let V = toBase58String(aP.caller.bytes)
409415 if ((W(V) == a))
410416 then throw("User not signup")
411417 else if ((J(G) == V))
412418 then throw("You cannot change the rating of a task")
413419 else if ((H(G) == a))
414420 then throw("Task doesnt exist")
415421 else if ((R(G) != b))
416422 then throw("Now you can’t lower the task rating")
417423 else if ((am(G, V) != a))
418424 then throw("You have already voted")
419- else if ((bd == "positive"))
425+ else if ((bh == "positive"))
420426 then WriteSet([DataEntry(ai(G), (aj(G) + 1)), DataEntry(ak(G, V), "positive")])
421- else if ((bd == "negative"))
427+ else if ((bh == "negative"))
422428 then WriteSet([DataEntry(ai(G), (aj(G) - 1)), DataEntry(ak(G, V), "negative")])
423429 else throw("Use positive/negative only")
424430 }
425431
426432
427433
428-@Callable(aL)
434+@Callable(aP)
429435 func reportUser (al) = {
430- let V = toBase58String(aL.caller.bytes)
436+ let V = toBase58String(aP.caller.bytes)
431437 if ((W(V) == a))
432438 then throw("You not signup")
433439 else if ((W(al) == a))
434440 then throw("User not signup")
435441 else if ((al == V))
436442 then throw("You can't complain about yourself")
437443 else if ((ar(V, al) != a))
438444 then throw("You have already voted")
439445 else WriteSet([DataEntry(an(al), (ao(al) - 1)), DataEntry(ap(V, al), "negative")])
440446 }
441447
442448
443449
444-@Callable(aL)
445-func openTaskDispute (G,aU) = {
446- let V = toBase58String(aL.caller.bytes)
447- let ba = J(G)
450+@Callable(aP)
451+func openTaskDispute (G,aY) = {
452+ let V = toBase58String(aP.caller.bytes)
453+ let be = J(G)
448454 let ab = P(G)
449- let aW = R(G)
455+ let ba = R(G)
450456 if ((W(V) == a))
451457 then throw("You not signup")
452458 else if ((H(G) == a))
453459 then throw("Task doesnt exist")
454- else if (if ((V != ba))
460+ else if (if ((V != be))
455461 then (V != ab)
456462 else false)
457- then throw((((("You must be a freelancer (" + ab) + ") or a customer (") + ba) + ") of this task"))
458- else if ((aW == j))
463+ then throw((((("You must be a freelancer (" + ab) + ") or a customer (") + be) + ") of this task"))
464+ else if ((ba == j))
459465 then throw("Dispute already open")
460- else if (if ((aW != g))
461- then (aW != i)
466+ else if (if ((ba != g))
467+ then (ba != i)
462468 else false)
463469 then throw("You can't create a dispute right now")
464- else WriteSet([DataEntry(as(G), V), DataEntry(ay(G, V, "0"), aU), DataEntry(aB(G, V, "0"), height), DataEntry(Q(G), j)])
470+ else WriteSet([DataEntry(as(G), V), DataEntry(ay(G, V, "0"), aY), DataEntry(aB(G, V, "0"), height), DataEntry(Q(G), j)])
465471 }
466472
467473
468474
469-@Callable(aL)
470-func voteTaskDispute (G,be,aU) = {
471- let V = toBase58String(aL.caller.bytes)
472- let ba = J(G)
475+@Callable(aP)
476+func voteTaskDispute (G,bi,aY) = {
477+ let V = toBase58String(aP.caller.bytes)
478+ let be = J(G)
473479 let ab = P(G)
474480 if ((W(V) == a))
475481 then throw("You not signup")
476482 else if ((H(G) == a))
477483 then throw("Task doesnt exist")
478484 else if ((at(G) == a))
479485 then throw("Dispute doesnt exist")
480- else if ((V == ba))
486+ else if ((V == be))
481487 then throw("The creator of the task can not vote")
482488 else if ((V == ab))
483489 then throw("The freelancer of the task can not vote")
484490 else if ((aK(G, V) != a))
485491 then throw("You have already voted")
486- else if ((be == "customer"))
487- then WriteSet([DataEntry(au(G), (av(G) + 1)), DataEntry(aJ(G, V), "customer"), DataEntry(aF(G, V), aU), DataEntry(aH(G, V), height)])
488- else if ((be == "freelancer"))
489- then WriteSet([DataEntry(aw(G), (ax(G) + 1)), DataEntry(aJ(G, V), "freelancer"), DataEntry(aF(G, V), aU), DataEntry(aH(G, V), height)])
492+ else if ((bi == "customer"))
493+ then WriteSet([DataEntry(au(G), (av(G) + 1)), DataEntry(aJ(G, V), "customer"), DataEntry(aF(G, V), aY), DataEntry(aH(G, V), height)])
494+ else if ((bi == "freelancer"))
495+ then WriteSet([DataEntry(aw(G), (ax(G) + 1)), DataEntry(aJ(G, V), "freelancer"), DataEntry(aF(G, V), aY), DataEntry(aH(G, V), height)])
490496 else throw("Select one of the sides")
491497 }
492498
493499
494500
495-@Callable(aL)
496-func taskDisputeMessage (G,aU) = {
497- let V = toBase58String(aL.caller.bytes)
498- let ba = J(G)
501+@Callable(aP)
502+func taskDisputeMessage (G,aY) = {
503+ let V = toBase58String(aP.caller.bytes)
504+ let be = J(G)
499505 let ab = P(G)
500506 let C = (aE(G, V) + 1)
501507 if ((W(V) == a))
502508 then throw("You not signup")
503509 else if ((H(G) == a))
504510 then throw("Task doesnt exist")
505511 else if ((at(G) == a))
506512 then throw("Dispute doesnt exist")
507- else if (if ((V != ba))
513+ else if (if ((V != be))
508514 then (V != ab)
509515 else false)
510- then throw((((("You must be a freelancer (" + ab) + ") or a customer (") + ba) + ") of this task"))
516+ then throw((((("You must be a freelancer (" + ab) + ") or a customer (") + be) + ") of this task"))
511517 else if ((R(G) != j))
512518 then throw("You cannot send messages at this time")
513- else WriteSet([DataEntry(ay(G, V, toString(C)), aU), DataEntry(aB(G, V, toString(C)), height), DataEntry(aD(G, V), C)])
519+ else WriteSet([DataEntry(ay(G, V, toString(C)), aY), DataEntry(aB(G, V, toString(C)), height), DataEntry(aD(G, V), C)])
514520 }
515521
516522
517523
518-@Callable(aL)
524+@Callable(aP)
519525 func cancelTask (G) = {
520- let V = toBase58String(aL.caller.bytes)
521- let ba = J(G)
522- let bb = N(G)
526+ let V = toBase58String(aP.caller.bytes)
527+ let be = J(G)
528+ let bf = N(G)
523529 if ((W(V) == a))
524530 then throw("You not signup")
525531 else if ((H(G) == a))
526532 then throw("Task doesnt exist")
527- else if ((V != ba))
533+ else if ((V != be))
528534 then throw("You are not author of the task")
529535 else if ((R(G) != b))
530536 then throw("You can't cancel the task now")
531- else ScriptResult(WriteSet([DataEntry(Q(G), l)]), TransferSet([ScriptTransfer(addressFromStringValue(ba), bb, unit)]))
537+ else ScriptResult(WriteSet([DataEntry(Q(G), l)]), TransferSet([ScriptTransfer(addressFromStringValue(be), bf, unit)]))
532538 }
533539
534540
535541
536-@Callable(aL)
542+@Callable(aP)
537543 func defineDisputeWinner (G) = {
538- let V = toBase58String(aL.caller.bytes)
539- let bf = J(G)
544+ let V = toBase58String(aP.caller.bytes)
545+ let bj = J(G)
540546 let ab = P(G)
541- let bb = N(G)
542- let bg = av(G)
543- let bh = ax(G)
544- let bi = (bg + bh)
547+ let bf = N(G)
548+ let bk = av(G)
549+ let bl = ax(G)
550+ let bm = (bk + bl)
545551 if ((W(V) == a))
546552 then throw("You not signup")
547553 else if ((R(G) != j))
548554 then throw("The dispute is closed or not open")
549- else if ((3 > bi))
550- then throw(("Need minimum 3 votes. Now: " + toString(bi)))
551- else if ((bg > bh))
552- then ScriptResult(WriteSet([DataEntry(Q(G), h)]), TransferSet([ScriptTransfer(addressFromStringValue(bf), bb, unit)]))
553- else if ((bh > bg))
554- then ScriptResult(WriteSet([DataEntry(Q(G), h)]), TransferSet([ScriptTransfer(addressFromStringValue(ab), bb, unit)]))
555- else ScriptResult(WriteSet([DataEntry(Q(G), h)]), TransferSet([ScriptTransfer(addressFromStringValue(ab), (bb / 2), unit), ScriptTransfer(addressFromStringValue(bf), (bb / 2), unit)]))
555+ else if ((3 > bm))
556+ then throw(("Need minimum 3 votes. Now: " + toString(bm)))
557+ else if ((bk > bl))
558+ then ScriptResult(WriteSet([DataEntry(Q(G), h)]), TransferSet([ScriptTransfer(addressFromStringValue(bj), bf, unit)]))
559+ else if ((bl > bk))
560+ then ScriptResult(WriteSet([DataEntry(Q(G), h)]), TransferSet([ScriptTransfer(addressFromStringValue(ab), bf, unit)]))
561+ else ScriptResult(WriteSet([DataEntry(Q(G), h)]), TransferSet([ScriptTransfer(addressFromStringValue(ab), (bf / 2), unit), ScriptTransfer(addressFromStringValue(bj), (bf / 2), unit)]))
562+ }
563+
564+
565+
566+@Callable(aP)
567+func leaveUserReview (al,G,bn) = {
568+ let V = toBase58String(aP.caller.bytes)
569+ let bj = J(G)
570+ let ab = P(G)
571+ if ((W(V) == a))
572+ then throw("You not signup")
573+ else if (if (if (if ((al != bj))
574+ then (al != ab)
575+ else false)
576+ then (V != bj)
577+ else false)
578+ then (V != ab)
579+ else false)
580+ then throw("You have not worked with this user")
581+ else if ((R(G) != h))
582+ then throw("You can't leave feedback until the task is completed")
583+ else if ((aO(V, al) != a))
584+ then throw("have you already left a review for this user")
585+ else WriteSet([DataEntry(aL(V, al), bn)])
556586 }
557587
558588

github/deemru/w8io/3ef1775 
196.72 ms