tx · HkhrRYJonHFhcs9yvcgcF5ZVuZnQJnLa4DHRgw1Pr9DR

3N1RM5X2PdS1vH3vmzRrdzQDjAUjMqk2RbJ:  -0.01400000 Waves

2020.04.03 21:10 [938334] smart account 3N1RM5X2PdS1vH3vmzRrdzQDjAUjMqk2RbJ > SELF 0.00000000 Waves

{ "type": 13, "id": "HkhrRYJonHFhcs9yvcgcF5ZVuZnQJnLa4DHRgw1Pr9DR", "fee": 1400000, "feeAssetId": null, "timestamp": 1585937424262, "version": 1, "sender": "3N1RM5X2PdS1vH3vmzRrdzQDjAUjMqk2RbJ", "senderPublicKey": "5xkQSCjfQmc7gqQcXZtkcWTzv4TmPAWcc81im9ngfwK9", "proofs": [ "5f8frXYrzFNJmarn7JuixvRKVS9yg7krw4tTu5nqMHTQmpynHMrFj6KtrVAFVb8YBEBQ5v6QAYCPSBQS5dWr3efs" ], "script": "base64:AAIDAAAAAAAAAD0IARIGCgQICAEEEgcKBQgBCAEBEgYKBAgBAQgSAwoBCBIHCgUICAEIARIFCgMIAQESBgoECAEIARIDCgEIAAAAKgAAAAAHYWRkcmVzcwIAAAAjM04xUk01WDJQZFMxdkgzdm16UnJkelFEakFVak1xazJSYkoAAAAADmtleUV2ZW50UHJlZml4AgAAAAJlXwAAAAASa2V5RXZlbnREYXRhUHJlZml4AgAAAAVkYXRhXwAAAAAZa2V5RXZlbnRUaWNrZXRQcmljZVByZWZpeAIAAAAMdGlja2V0UHJpY2VfAAAAABJrZXlFdmVudERhdGVQcmVmaXgCAAAABWRhdGVfAAAAABZrZXlFdmVudEF0dGVuZGVlUHJlZml4AgAAAAJhXwAAAAAYa2V5UHJvZHVjZXJCYWxhbmNlUHJlZml4AgAAAAhiYWxhbmNlXwAAAAAaa2V5RXZlbnRBbW91bnRUaWNrZXRQcmVmaXgCAAAADXRpY2tldEFtb3VudF8AAAAAFmtleUV2ZW50Q2FuY2VsZWRQcmVmaXgCAAAACWNhbmNlbGVkXwAAAAAXa2V5RXZlbnRUaWNrZXRNYXhQcmVmaXgCAAAACnRpY2tldE1heF8AAAAAGGtleUV2ZW50UmVxdWlyZXNJZFByZWZpeAIAAAALcmVxdWlyZXNJZF8AAAAAH2tleUV2ZW50VGlja2V0RGVzY3JpcHRpb25QcmVmaXgCAAAAEnRpY2tldERlc2NyaXB0aW9uXwAAAAAVa2V5RXZlbnRUaWNrZXRzUHJlZml4AgAAAAh0aWNrZXRzXwAAAAAETk9ORQIAAAAEbm9uZQAAAAAKY29tbWlzc2lvbgAAAAAAAAAABQEAAAAOZ2V0TnVtYmVyQnlLZXkAAAABAAAAA2tleQQAAAADbnVtBAAAAAckbWF0Y2gwCQAEGgAAAAIFAAAABHRoaXMFAAAAA2tleQMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAADSW50BAAAAAFhBQAAAAckbWF0Y2gwBQAAAAFhAAAAAAAAAAAABQAAAANudW0BAAAAC2dldFN0ckJ5S2V5AAAAAQAAAANrZXkEAAAAA3N0cgQAAAAHJG1hdGNoMAkABB0AAAACBQAAAAR0aGlzBQAAAANrZXkDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAABlN0cmluZwQAAAABYQUAAAAHJG1hdGNoMAUAAAABYQUAAAAETk9ORQUAAAADc3RyAQAAAAxnZXRCb29sQnlLZXkAAAABAAAAA2tleQQAAAAEYm9vbAQAAAAHJG1hdGNoMAkABBsAAAACBQAAAAR0aGlzBQAAAANrZXkDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAB0Jvb2xlYW4EAAAAAWEFAAAAByRtYXRjaDAFAAAAAWEHBQAAAARib29sAQAAAAtnZXRFdmVudEtleQAAAAIAAAAIcHJvZHVjZXIAAAAFdGl0bGUJAAEsAAAAAgUAAAAOa2V5RXZlbnRQcmVmaXgJAAJYAAAAAQkAAfcAAAABCQABmwAAAAEJAAEsAAAAAgUAAAAIcHJvZHVjZXIFAAAABXRpdGxlAQAAAA9nZXRFdmVudERhdGFLZXkAAAABAAAABWV2ZW50CQABLAAAAAIFAAAAEmtleUV2ZW50RGF0YVByZWZpeAUAAAAFZXZlbnQBAAAAFmdldEV2ZW50VGlja2V0UHJpY2VLZXkAAAACAAAABWV2ZW50AAAACHRpY2tldElkCQABLAAAAAIJAAEsAAAAAgkAASwAAAACBQAAABlrZXlFdmVudFRpY2tldFByaWNlUHJlZml4CQABpAAAAAEFAAAACHRpY2tldElkAgAAAAFfBQAAAAVldmVudAEAAAAPZ2V0RXZlbnREYXRlS2V5AAAAAQAAAAVldmVudAkAASwAAAACBQAAABJrZXlFdmVudERhdGVQcmVmaXgFAAAABWV2ZW50AQAAABNnZXRFdmVudEF0dGVuZGVlS2V5AAAABAAAAAR1c2VyAAAAAmlkAAAACHRpY2tldElkAAAABWV2ZW50CQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgUAAAAWa2V5RXZlbnRBdHRlbmRlZVByZWZpeAkAAlgAAAABCQAB9wAAAAEJAAGbAAAAAQkAASwAAAACBQAAAAR1c2VyBQAAAAJpZAIAAAABXwkAAaQAAAABBQAAAAh0aWNrZXRJZAIAAAABXwUAAAAFZXZlbnQBAAAAEmdldEV2ZW50QmFsYW5jZUtleQAAAAIAAAAHYWNjb3VudAAAAAVldmVudAkAASwAAAACCQABLAAAAAIJAAEsAAAAAgUAAAAYa2V5UHJvZHVjZXJCYWxhbmNlUHJlZml4BQAAAAdhY2NvdW50AgAAAAFfBQAAAAVldmVudAEAAAAXZ2V0RXZlbnRUaWNrZXRBbW91bnRLZXkAAAACAAAABWV2ZW50AAAACHRpY2tldElkCQABLAAAAAIJAAEsAAAAAgkAASwAAAACBQAAABprZXlFdmVudEFtb3VudFRpY2tldFByZWZpeAkAAaQAAAABBQAAAAh0aWNrZXRJZAIAAAABXwUAAAAFZXZlbnQBAAAAE2dldEV2ZW50Q2FuY2VsZWRLZXkAAAABAAAABWV2ZW50CQABLAAAAAIFAAAAFmtleUV2ZW50Q2FuY2VsZWRQcmVmaXgFAAAABWV2ZW50AQAAABVnZXRFdmVudFJlcXVpcmVzSWRLZXkAAAABAAAABWV2ZW50CQABLAAAAAIFAAAAGGtleUV2ZW50UmVxdWlyZXNJZFByZWZpeAUAAAAFZXZlbnQBAAAAFGdldEV2ZW50VGlja2V0TWF4S2V5AAAAAgAAAAVldmVudAAAAAh0aWNrZXRJZAkAASwAAAACCQABLAAAAAIJAAEsAAAAAgUAAAAXa2V5RXZlbnRUaWNrZXRNYXhQcmVmaXgJAAGkAAAAAQUAAAAIdGlja2V0SWQCAAAAAV8FAAAABWV2ZW50AQAAABxnZXRFdmVudFRpY2tldERlc2NyaXB0aW9uS2V5AAAAAgAAAAVldmVudAAAAAh0aWNrZXRJZAkAASwAAAACCQABLAAAAAIJAAEsAAAAAgUAAAAfa2V5RXZlbnRUaWNrZXREZXNjcmlwdGlvblByZWZpeAkAAaQAAAABBQAAAAh0aWNrZXRJZAIAAAABXwUAAAAFZXZlbnQBAAAAEmdldEV2ZW50VGlja2V0c0tleQAAAAEAAAAFZXZlbnQJAAEsAAAAAgUAAAAVa2V5RXZlbnRUaWNrZXRzUHJlZml4BQAAAAVldmVudAEAAAARZ2V0RXZlbnRWYWx1ZUJ5SWQAAAABAAAABGl0ZW0JAQAAAAtnZXRTdHJCeUtleQAAAAEFAAAABGl0ZW0BAAAADWdldEV2ZW50VmFsdWUAAAACAAAACHByb2R1Y2VyAAAABXRpdGxlCQEAAAALZ2V0U3RyQnlLZXkAAAABCQEAAAALZ2V0RXZlbnRLZXkAAAACBQAAAAhwcm9kdWNlcgUAAAAFdGl0bGUBAAAAGGdldEV2ZW50VGlja2V0UHJpY2VWYWx1ZQAAAAIAAAAFZXZlbnQAAAAIdGlja2V0SWQJAQAAAA5nZXROdW1iZXJCeUtleQAAAAEJAQAAABZnZXRFdmVudFRpY2tldFByaWNlS2V5AAAAAgUAAAAFZXZlbnQFAAAACHRpY2tldElkAQAAABFnZXRFdmVudERhdGVWYWx1ZQAAAAEAAAAFZXZlbnQJAQAAAA5nZXROdW1iZXJCeUtleQAAAAEJAQAAAA9nZXRFdmVudERhdGVLZXkAAAABBQAAAAVldmVudAEAAAAVZ2V0RXZlbnRBdHRlbmRlZVZhbHVlAAAABAAAAAR1c2VyAAAAAmlkAAAACHRpY2tldElkAAAABWV2ZW50CQEAAAAOZ2V0TnVtYmVyQnlLZXkAAAABCQEAAAATZ2V0RXZlbnRBdHRlbmRlZUtleQAAAAQFAAAABHVzZXIFAAAAAmlkBQAAAAh0aWNrZXRJZAUAAAAFZXZlbnQBAAAAFGdldEV2ZW50QmFsYW5jZVZhbHVlAAAAAgAAAAdhY2NvdW50AAAABWV2ZW50CQEAAAAOZ2V0TnVtYmVyQnlLZXkAAAABCQEAAAASZ2V0RXZlbnRCYWxhbmNlS2V5AAAAAgUAAAAHYWNjb3VudAUAAAAFZXZlbnQBAAAAGWdldEV2ZW50VGlja2V0QW1vdW50VmFsdWUAAAACAAAABWV2ZW50AAAACHRpY2tldElkCQEAAAAOZ2V0TnVtYmVyQnlLZXkAAAABCQEAAAAXZ2V0RXZlbnRUaWNrZXRBbW91bnRLZXkAAAACBQAAAAVldmVudAUAAAAIdGlja2V0SWQBAAAAFWdldEV2ZW50Q2FuY2VsZWRWYWx1ZQAAAAEAAAAFZXZlbnQJAQAAAAxnZXRCb29sQnlLZXkAAAABCQEAAAATZ2V0RXZlbnRDYW5jZWxlZEtleQAAAAEFAAAABWV2ZW50AQAAABdnZXRFdmVudFJlcXVpcmVzSWRWYWx1ZQAAAAEAAAAFZXZlbnQJAQAAAAxnZXRCb29sQnlLZXkAAAABCQEAAAAVZ2V0RXZlbnRSZXF1aXJlc0lkS2V5AAAAAQUAAAAFZXZlbnQBAAAAFmdldEV2ZW50VGlja2V0TWF4VmFsdWUAAAACAAAABWV2ZW50AAAACHRpY2tldElkCQEAAAAOZ2V0TnVtYmVyQnlLZXkAAAABCQEAAAAUZ2V0RXZlbnRUaWNrZXRNYXhLZXkAAAACBQAAAAVldmVudAUAAAAIdGlja2V0SWQBAAAAHmdldEV2ZW50VGlja2V0RGVzY3JpcHRpb25WYWx1ZQAAAAIAAAAFZXZlbnQAAAAIdGlja2V0SWQJAQAAAAtnZXRTdHJCeUtleQAAAAEJAQAAABxnZXRFdmVudFRpY2tldERlc2NyaXB0aW9uS2V5AAAAAgUAAAAFZXZlbnQFAAAACHRpY2tldElkAQAAABRnZXRFdmVudFRpY2tldHNWYWx1ZQAAAAEAAAAFZXZlbnQJAQAAAA5nZXROdW1iZXJCeUtleQAAAAEJAQAAABJnZXRFdmVudFRpY2tldHNLZXkAAAABBQAAAAVldmVudAAAAAgAAAABaQEAAAALY3JlYXRlRXZlbnQAAAAEAAAABXRpdGxlAAAABGRhdGEAAAAEZGF0ZQAAAApyZXF1aXJlc0lkBAAAAA9wcm9kdWNlckFkZHJlc3MJAAJYAAAAAQgIBQAAAAFpAAAABmNhbGxlcgAAAAVieXRlcwQAAAAFZXZlbnQJAQAAAAtnZXRFdmVudEtleQAAAAIFAAAAD3Byb2R1Y2VyQWRkcmVzcwUAAAAFdGl0bGUDCQEAAAACIT0AAAACCQEAAAANZ2V0RXZlbnRWYWx1ZQAAAAIFAAAAD3Byb2R1Y2VyQWRkcmVzcwUAAAAFdGl0bGUFAAAABE5PTkUJAAACAAAAAQIAAAAXVGhlIGV2ZW50IGFscmVhZHkgZXhpc3QDCQAAZgAAAAIIBQAAAAlsYXN0QmxvY2sAAAAJdGltZXN0YW1wBQAAAARkYXRlCQAAAgAAAAECAAAAGkRhdGUgY2Fubm90IGJlIGluIHRoZSBwYXN0CQEAAAAIV3JpdGVTZXQAAAABCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQEAAAALZ2V0RXZlbnRLZXkAAAACBQAAAA9wcm9kdWNlckFkZHJlc3MFAAAABXRpdGxlBQAAAA9wcm9kdWNlckFkZHJlc3MJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAQAAAA9nZXRFdmVudERhdGFLZXkAAAABBQAAAAVldmVudAUAAAAEZGF0YQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkBAAAAD2dldEV2ZW50RGF0ZUtleQAAAAEFAAAABWV2ZW50BQAAAARkYXRlCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQEAAAAVZ2V0RXZlbnRSZXF1aXJlc0lkS2V5AAAAAQUAAAAFZXZlbnQFAAAACnJlcXVpcmVzSWQJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAQAAABJnZXRFdmVudFRpY2tldHNLZXkAAAABBQAAAAVldmVudAAAAAAAAAAAAAUAAAADbmlsAAAAAWkBAAAAEWNyZWF0ZUV2ZW50VGlja2V0AAAABQAAAAVldmVudAAAAAVwcmljZQAAAAtkZXNjcmlwdGlvbgAAAA1hbW91bnRUaWNrZXRzAAAACW1heEFtb3VudAQAAAANY2FsbGVyQWRkcmVzcwkAAlgAAAABCAgFAAAAAWkAAAAGY2FsbGVyAAAABWJ5dGVzBAAAAA9wcm9kdWNlckFkZHJlc3MJAQAAABFnZXRFdmVudFZhbHVlQnlJZAAAAAEFAAAABWV2ZW50BAAAAAh0aWNrZXRJZAkBAAAAFGdldEV2ZW50VGlja2V0c1ZhbHVlAAAAAQUAAAAFZXZlbnQDCQEAAAACIT0AAAACBQAAAA9wcm9kdWNlckFkZHJlc3MFAAAADWNhbGxlckFkZHJlc3MJAAACAAAAAQIAAABORXZlbnQgZG9lcyBub3QgZXhpc3QsIG9yIHlvdSBkb24ndCBoYXZlIHRoZSBjcmVkZW50aWFscyB0byBwZXJmb3JtIHRoaXMgYWN0aW9uAwkAAGYAAAACCQAAZAAAAAIIBQAAAAlsYXN0QmxvY2sAAAAJdGltZXN0YW1wAAAAAAAA5OHACQEAAAARZ2V0RXZlbnREYXRlVmFsdWUAAAABBQAAAAVldmVudAkAAAIAAAABAgAAAB9UaGlzIGV2ZW50IGhhcyBhbHJlYWR5IGhhcHBlbmVkAwkBAAAAFWdldEV2ZW50Q2FuY2VsZWRWYWx1ZQAAAAEFAAAABWV2ZW50CQAAAgAAAAECAAAAF1RoaXMgZXZlbnQgd2FzIGNhbmNlbGVkCQEAAAAIV3JpdGVTZXQAAAABCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQEAAAAWZ2V0RXZlbnRUaWNrZXRQcmljZUtleQAAAAIFAAAABWV2ZW50BQAAAAh0aWNrZXRJZAUAAAAFcHJpY2UJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAQAAABdnZXRFdmVudFRpY2tldEFtb3VudEtleQAAAAIFAAAABWV2ZW50BQAAAAh0aWNrZXRJZAUAAAANYW1vdW50VGlja2V0cwkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkBAAAAFGdldEV2ZW50VGlja2V0TWF4S2V5AAAAAgUAAAAFZXZlbnQFAAAACHRpY2tldElkBQAAAAltYXhBbW91bnQJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAQAAABxnZXRFdmVudFRpY2tldERlc2NyaXB0aW9uS2V5AAAAAgUAAAAFZXZlbnQFAAAACHRpY2tldElkBQAAAAtkZXNjcmlwdGlvbgkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkBAAAAEmdldEV2ZW50VGlja2V0c0tleQAAAAEFAAAABWV2ZW50CQAAZAAAAAIJAQAAABRnZXRFdmVudFRpY2tldHNWYWx1ZQAAAAEFAAAABWV2ZW50AAAAAAAAAAABBQAAAANuaWwAAAABaQEAAAAIcHVyY2hhc2UAAAAEAAAABWV2ZW50AAAACHRpY2tldElkAAAABmFtb3VudAAAAAJpZAQAAAADcG10CQEAAAAHZXh0cmFjdAAAAAEIBQAAAAFpAAAAB3BheW1lbnQEAAAAC3VzZXJBZGRyZXNzCQACWAAAAAEICAUAAAABaQAAAAZjYWxsZXIAAAAFYnl0ZXMEAAAABXByaWNlCQEAAAAYZ2V0RXZlbnRUaWNrZXRQcmljZVZhbHVlAAAAAgUAAAAFZXZlbnQFAAAACHRpY2tldElkBAAAAA9wcm9kdWNlckFkZHJlc3MJAQAAABFnZXRFdmVudFZhbHVlQnlJZAAAAAEFAAAABWV2ZW50BAAAAAt0aWNrZXRzTGVmdAkBAAAAGWdldEV2ZW50VGlja2V0QW1vdW50VmFsdWUAAAACBQAAAAVldmVudAUAAAAIdGlja2V0SWQEAAAAC2F0dGVuZGVlS2V5AgAAAAAEAAAACnRvdGFsUHJpY2UJAABoAAAAAgUAAAAGYW1vdW50BQAAAAVwcmljZQMJAQAAAAlpc0RlZmluZWQAAAABCAUAAAADcG10AAAAB2Fzc2V0SWQJAAACAAAAAQIAAAAgY2FuIHVzZSBXQVZFUyBvbmx5IGF0IHRoZSBtb21lbnQDCQAAAAAAAAIFAAAAD3Byb2R1Y2VyQWRkcmVzcwUAAAAETk9ORQkAAAIAAAABAgAAABRFdmVudCBkb2VzIG5vdCBleGlzdAMJAABmAAAAAgUAAAAKdG90YWxQcmljZQgFAAAAA3BtdAAAAAZhbW91bnQJAAACAAAAAQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAApWW91IGRpZCBub3Qgc2VuZCBlbm91Z2ggbW9uZXkuIFlvdSBzZW50OiAJAAGkAAAAAQgFAAAAA3BtdAAAAAZhbW91bnQCAAAADC4gRXhwZWN0ZWQ6IAkAAaQAAAABBQAAAAp0b3RhbFByaWNlAwkAAGYAAAACCAUAAAADcG10AAAABmFtb3VudAUAAAAKdG90YWxQcmljZQkAAAIAAAABCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAACNZb3Ugc2VuZCB0b28gbXVjaCBtb25leS4gWW91IHNlbnQ6IAkAAaQAAAABCAUAAAADcG10AAAABmFtb3VudAIAAAAPLiBUb3RhbCBwcmljZTogCQABpAAAAAEFAAAACnRvdGFsUHJpY2UDCQAAZgAAAAIAAAAAAAAAAAAJAABlAAAAAgUAAAALdGlja2V0c0xlZnQFAAAABmFtb3VudAkAAAIAAAABAgAAABdOb3QgZW5vdWdoIHRpY2tldHMgbGVmdAMJAABmAAAAAgkAAGQAAAACCAUAAAAJbGFzdEJsb2NrAAAACXRpbWVzdGFtcAAAAAAAAOThwAkBAAAAEWdldEV2ZW50RGF0ZVZhbHVlAAAAAQUAAAAFZXZlbnQJAAACAAAAAQIAAAAfVGhpcyBldmVudCBoYXMgYWxyZWFkeSBoYXBwZW5lZAMJAQAAABVnZXRFdmVudENhbmNlbGVkVmFsdWUAAAABBQAAAAVldmVudAkAAAIAAAABAgAAABdUaGlzIGV2ZW50IHdhcyBjYW5jZWxlZAMDCQEAAAAXZ2V0RXZlbnRSZXF1aXJlc0lkVmFsdWUAAAABBQAAAAVldmVudAkAAAAAAAACBQAAAAJpZAIAAAAABwkAAAIAAAABAgAAADhUaGlzIGV2ZW50IHJlcXVpcmVzIHRoYXQgeW91IHJlZ2lzdGVyIHdpdGggYSBwZXJzb25hbCBJRAMJAABmAAAAAgkBAAAAFmdldEV2ZW50VGlja2V0TWF4VmFsdWUAAAACBQAAAAVldmVudAUAAAAIdGlja2V0SWQJAABkAAAAAgkBAAAAFWdldEV2ZW50QXR0ZW5kZWVWYWx1ZQAAAAQFAAAAC3VzZXJBZGRyZXNzBQAAAAJpZAUAAAAIdGlja2V0SWQFAAAABWV2ZW50BQAAAAZhbW91bnQJAAACAAAAAQIAAAA1QW1vdW50IG9mIFRpY2tldHMgZXhjZWVkcyBtYXhpbXVtIGFtb3VudCBwZXIgYXR0ZW5kZWUJAQAAAAxTY3JpcHRSZXN1bHQAAAACCQEAAAAIV3JpdGVTZXQAAAABCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQEAAAATZ2V0RXZlbnRBdHRlbmRlZUtleQAAAAQFAAAAC3VzZXJBZGRyZXNzBQAAAAJpZAUAAAAIdGlja2V0SWQFAAAABWV2ZW50CQAAZAAAAAIJAQAAABVnZXRFdmVudEF0dGVuZGVlVmFsdWUAAAAEBQAAAAt1c2VyQWRkcmVzcwUAAAACaWQFAAAACHRpY2tldElkBQAAAAVldmVudAUAAAAGYW1vdW50CQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQEAAAASZ2V0RXZlbnRCYWxhbmNlS2V5AAAAAgUAAAAPcHJvZHVjZXJBZGRyZXNzBQAAAAVldmVudAkAAGQAAAACCQEAAAAUZ2V0RXZlbnRCYWxhbmNlVmFsdWUAAAACBQAAAA9wcm9kdWNlckFkZHJlc3MFAAAABWV2ZW50CAUAAAADcG10AAAABmFtb3VudAkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkBAAAAF2dldEV2ZW50VGlja2V0QW1vdW50S2V5AAAAAgUAAAAFZXZlbnQFAAAACHRpY2tldElkCQAAZQAAAAIFAAAAC3RpY2tldHNMZWZ0BQAAAAZhbW91bnQFAAAAA25pbAkBAAAAC1RyYW5zZmVyU2V0AAAAAQkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCQEAAAAcQGV4dHJVc2VyKGFkZHJlc3NGcm9tU3RyaW5nKQAAAAEFAAAAB2FkZHJlc3MIBQAAAANwbXQAAAAGYW1vdW50BQAAAAR1bml0BQAAAANuaWwAAAABaQEAAAALY2FuY2VsRXZlbnQAAAABAAAABWV2ZW50BAAAAA1jYWxsZXJBZGRyZXNzCQACWAAAAAEICAUAAAABaQAAAAZjYWxsZXIAAAAFYnl0ZXMDCQEAAAACIT0AAAACCQEAAAARZ2V0RXZlbnRWYWx1ZUJ5SWQAAAABBQAAAAVldmVudAUAAAANY2FsbGVyQWRkcmVzcwkAAAIAAAABAgAAAE5FdmVudCBkb2VzIG5vdCBleGlzdCwgb3IgeW91IGRvbid0IGhhdmUgdGhlIGNyZWRlbnRpYWxzIHRvIHBlcmZvcm0gdGhpcyBhY3Rpb24DCQAAZgAAAAIJAABkAAAAAggFAAAACWxhc3RCbG9jawAAAAl0aW1lc3RhbXAAAAAAAADk4cAJAQAAABFnZXRFdmVudERhdGVWYWx1ZQAAAAEFAAAABWV2ZW50CQAAAgAAAAECAAAAH1RoaXMgZXZlbnQgaGFzIGFscmVhZHkgaGFwcGVuZWQJAQAAAAhXcml0ZVNldAAAAAEJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAQAAABNnZXRFdmVudENhbmNlbGVkS2V5AAAAAQUAAAAFZXZlbnQGBQAAAANuaWwAAAABaQEAAAAHY2hlY2tpbgAAAAUAAAAFZXZlbnQAAAAPYXR0ZW5kZWVBZGRyZXNzAAAABmFtb3VudAAAAAJpZAAAAAh0aWNrZXRJZAQAAAANY2FsbGVyQWRkcmVzcwkAAlgAAAABCAgFAAAAAWkAAAAGY2FsbGVyAAAABWJ5dGVzAwkBAAAAAiE9AAAAAgkBAAAAEWdldEV2ZW50VmFsdWVCeUlkAAAAAQUAAAAFZXZlbnQFAAAADWNhbGxlckFkZHJlc3MJAAACAAAAAQIAAABORXZlbnQgZG9lcyBub3QgZXhpc3QsIG9yIHlvdSBkb24ndCBoYXZlIHRoZSBjcmVkZW50aWFscyB0byBwZXJmb3JtIHRoaXMgYWN0aW9uAwkAAGYAAAACBQAAAAZhbW91bnQJAQAAABVnZXRFdmVudEF0dGVuZGVlVmFsdWUAAAAEBQAAAA9hdHRlbmRlZUFkZHJlc3MFAAAAAmlkBQAAAAh0aWNrZXRJZAUAAAAFZXZlbnQJAAACAAAAAQIAAAAeWW91IGRvbid0IGhhdmUgZW5vdWdoIHRpY2tldHMuAwkBAAAAFWdldEV2ZW50Q2FuY2VsZWRWYWx1ZQAAAAEFAAAABWV2ZW50CQAAAgAAAAECAAAAT1RoaXMgZXZlbnQgd2FzIGNhbmNlbGVkLiBZb3UgY2FuIHJlZGVlbSB5b3VyIHRpY2tldCB1c2luZyByZWZ1bmRUaWNrZXQgZnVuY3Rpb24JAQAAAAhXcml0ZVNldAAAAAEJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAQAAABNnZXRFdmVudEF0dGVuZGVlS2V5AAAABAUAAAAPYXR0ZW5kZWVBZGRyZXNzBQAAAAJpZAUAAAAIdGlja2V0SWQFAAAABWV2ZW50CQAAZQAAAAIJAQAAABVnZXRFdmVudEF0dGVuZGVlVmFsdWUAAAAEBQAAAA9hdHRlbmRlZUFkZHJlc3MFAAAAAmlkBQAAAAh0aWNrZXRJZAUAAAAFZXZlbnQFAAAABmFtb3VudAUAAAADbmlsAAAAAWkBAAAAEGVkaXRFdmVudFRpY2tldHMAAAADAAAABWV2ZW50AAAACHRpY2tldElkAAAACW5ld0Ftb3VudAQAAAANY2FsbGVyQWRkcmVzcwkAAlgAAAABCAgFAAAAAWkAAAAGY2FsbGVyAAAABWJ5dGVzAwkBAAAAAiE9AAAAAgkBAAAAEWdldEV2ZW50VmFsdWVCeUlkAAAAAQUAAAAFZXZlbnQFAAAADWNhbGxlckFkZHJlc3MJAAACAAAAAQIAAABORXZlbnQgZG9lcyBub3QgZXhpc3QsIG9yIHlvdSBkb24ndCBoYXZlIHRoZSBjcmVkZW50aWFscyB0byBwZXJmb3JtIHRoaXMgYWN0aW9uAwkAAGYAAAACCQAAZAAAAAIIBQAAAAlsYXN0QmxvY2sAAAAJdGltZXN0YW1wAAAAAAAA5OHACQEAAAARZ2V0RXZlbnREYXRlVmFsdWUAAAABBQAAAAVldmVudAkAAAIAAAABAgAAAB9UaGlzIGV2ZW50IGhhcyBhbHJlYWR5IGhhcHBlbmVkAwkBAAAAFWdldEV2ZW50Q2FuY2VsZWRWYWx1ZQAAAAEFAAAABWV2ZW50CQAAAgAAAAECAAAAH1RoaXMgZXZlbnQgd2FzIGFscmVhZHkgY2FuY2VsZWQJAQAAAAhXcml0ZVNldAAAAAEJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAQAAABdnZXRFdmVudFRpY2tldEFtb3VudEtleQAAAAIFAAAABWV2ZW50BQAAAAh0aWNrZXRJZAUAAAAJbmV3QW1vdW50BQAAAANuaWwAAAABaQEAAAAMcmVmdW5kVGlja2V0AAAABAAAAAVldmVudAAAAAZhbW91bnQAAAACaWQAAAAIdGlja2V0SWQEAAAAD2F0dGVuZGVlQWRkcmVzcwkAAlgAAAABCAgFAAAAAWkAAAAGY2FsbGVyAAAABWJ5dGVzBAAAAA1hdHRlbmRlZVZhbHVlCQEAAAAVZ2V0RXZlbnRBdHRlbmRlZVZhbHVlAAAABAUAAAAPYXR0ZW5kZWVBZGRyZXNzBQAAAAJpZAUAAAAIdGlja2V0SWQFAAAABWV2ZW50AwkAAAAAAAACCQEAAAARZ2V0RXZlbnRWYWx1ZUJ5SWQAAAABBQAAAAVldmVudAUAAAAETk9ORQkAAAIAAAABAgAAABhUaGUgZXZlbnQgZG9lcyBub3QgZXhpc3QDCQAAZgAAAAIFAAAABmFtb3VudAUAAAANYXR0ZW5kZWVWYWx1ZQkAAAIAAAABAgAAADpZb3UgZG9uJ3QgaGF2ZSBlbm91Z2ggcmVnaXN0ZXJlZCB0aWNrZXRzIHdpdGggdGhpcyBhZGRyZXNzAwkAAGYAAAACCQAAZAAAAAIIBQAAAAlsYXN0QmxvY2sAAAAJdGltZXN0YW1wAAAAAAAA5OHACQEAAAARZ2V0RXZlbnREYXRlVmFsdWUAAAABBQAAAAVldmVudAkAAAIAAAABAgAAAB9UaGlzIGV2ZW50IGhhcyBhbHJlYWR5IGhhcHBlbmVkCQEAAAAMU2NyaXB0UmVzdWx0AAAAAgkBAAAACFdyaXRlU2V0AAAAAQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkBAAAAE2dldEV2ZW50QXR0ZW5kZWVLZXkAAAAEBQAAAA9hdHRlbmRlZUFkZHJlc3MFAAAAAmlkBQAAAAh0aWNrZXRJZAUAAAAFZXZlbnQJAABlAAAAAgUAAAANYXR0ZW5kZWVWYWx1ZQUAAAAGYW1vdW50BQAAAANuaWwJAQAAAAtUcmFuc2ZlclNldAAAAAEJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwkBAAAAHEBleHRyVXNlcihhZGRyZXNzRnJvbVN0cmluZykAAAABBQAAAA9hdHRlbmRlZUFkZHJlc3MJAABoAAAAAgUAAAAGYW1vdW50BQAAAA1hdHRlbmRlZVZhbHVlBQAAAAR1bml0BQAAAANuaWwAAAABaQEAAAAId2l0aGRyYXcAAAABAAAABWV2ZW50BAAAAA1jYWxsZXJBZGRyZXNzCQACWAAAAAEICAUAAAABaQAAAAZjYWxsZXIAAAAFYnl0ZXMEAAAAB2JhbGFuY2UJAQAAABRnZXRFdmVudEJhbGFuY2VWYWx1ZQAAAAIFAAAADWNhbGxlckFkZHJlc3MFAAAABWV2ZW50AwkBAAAAAiE9AAAAAgkBAAAAEWdldEV2ZW50VmFsdWVCeUlkAAAAAQUAAAAFZXZlbnQFAAAADWNhbGxlckFkZHJlc3MJAAACAAAAAQIAAABORXZlbnQgZG9lcyBub3QgZXhpc3QsIG9yIHlvdSBkb24ndCBoYXZlIHRoZSBjcmVkZW50aWFscyB0byBwZXJmb3JtIHRoaXMgYWN0aW9uAwkAAGcAAAACAAAAAAAAAAAABQAAAAdiYWxhbmNlCQAAAgAAAAECAAAAFEluc3VmZmljaWVudCBiYWxhbmNlAwkBAAAAFWdldEV2ZW50Q2FuY2VsZWRWYWx1ZQAAAAEFAAAABWV2ZW50CQAAAgAAAAECAAAAF0V2ZW50IGhhcyBiZWVuIGNhbmNlbGVkCQEAAAAMU2NyaXB0UmVzdWx0AAAAAgkBAAAACFdyaXRlU2V0AAAAAQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkBAAAAEmdldEV2ZW50QmFsYW5jZUtleQAAAAIFAAAADWNhbGxlckFkZHJlc3MFAAAABWV2ZW50AAAAAAAAAAAABQAAAANuaWwJAQAAAAtUcmFuc2ZlclNldAAAAAEJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwkBAAAAHEBleHRyVXNlcihhZGRyZXNzRnJvbVN0cmluZykAAAABBQAAAA1jYWxsZXJBZGRyZXNzCQAAZQAAAAIFAAAAB2JhbGFuY2UJAABpAAAAAgkAAGgAAAACBQAAAAdiYWxhbmNlBQAAAApjb21taXNzaW9uAAAAAAAAAABkBQAAAAR1bml0CQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMJAQAAABxAZXh0clVzZXIoYWRkcmVzc0Zyb21TdHJpbmcpAAAAAQUAAAAHYWRkcmVzcwkAAGkAAAACCQAAaAAAAAIFAAAAB2JhbGFuY2UFAAAACmNvbW1pc3Npb24AAAAAAAAAAGQFAAAABHVuaXQFAAAAA25pbAAAAAC7PaIn", "chainId": 84, "height": 938334, "spentComplexity": 0 } View: original | compacted Prev: GdbycGiuS7F3Quzzvh7eDaSKEVx37R1b3iDMVRAtDJ6S Next: Cz4VJ5YPHJCmbY1RBKJ4yBVuMqVS7sBR7QguqEbgZsuP Diff:
OldNewDifferences
173173 let producerAddress = getEventValueById(event)
174174 let ticketsLeft = getEventTicketAmountValue(event, ticketId)
175175 let attendeeKey = ""
176+ let totalPrice = (amount * price)
176177 if (isDefined(pmt.assetId))
177178 then throw("can use WAVES only at the moment")
178179 else if ((producerAddress == NONE))
179180 then throw("Event does not exist")
180- else if (((price * amount) > pmt.amount))
181- then throw(((("You did not send enough money. You sent: " + toString(pmt.amount)) + ". Expected: ") + toString((amount * price))))
182- else if ((pmt.amount > (price * amount)))
183- then throw(((("You send too much money. You sent: " + toString(pmt.amount)) + ". Total price: ") + toString((amount * price))))
181+ else if ((totalPrice > pmt.amount))
182+ then throw(((("You did not send enough money. You sent: " + toString(pmt.amount)) + ". Expected: ") + toString(totalPrice)))
183+ else if ((pmt.amount > totalPrice))
184+ then throw(((("You send too much money. You sent: " + toString(pmt.amount)) + ". Total price: ") + toString(totalPrice)))
184185 else if ((0 > (ticketsLeft - amount)))
185186 then throw("Not enough tickets left")
186187 else if (((lastBlock.timestamp + 15000000) > getEventDateValue(event)))
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 3 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let address = "3N1RM5X2PdS1vH3vmzRrdzQDjAUjMqk2RbJ"
55
66 let keyEventPrefix = "e_"
77
88 let keyEventDataPrefix = "data_"
99
1010 let keyEventTicketPricePrefix = "ticketPrice_"
1111
1212 let keyEventDatePrefix = "date_"
1313
1414 let keyEventAttendeePrefix = "a_"
1515
1616 let keyProducerBalancePrefix = "balance_"
1717
1818 let keyEventAmountTicketPrefix = "ticketAmount_"
1919
2020 let keyEventCanceledPrefix = "canceled_"
2121
2222 let keyEventTicketMaxPrefix = "ticketMax_"
2323
2424 let keyEventRequiresIdPrefix = "requiresId_"
2525
2626 let keyEventTicketDescriptionPrefix = "ticketDescription_"
2727
2828 let keyEventTicketsPrefix = "tickets_"
2929
3030 let NONE = "none"
3131
3232 let commission = 5
3333
3434 func getNumberByKey (key) = {
3535 let num = match getInteger(this, key) {
3636 case a: Int =>
3737 a
3838 case _ =>
3939 0
4040 }
4141 num
4242 }
4343
4444
4545 func getStrByKey (key) = {
4646 let str = match getString(this, key) {
4747 case a: String =>
4848 a
4949 case _ =>
5050 NONE
5151 }
5252 str
5353 }
5454
5555
5656 func getBoolByKey (key) = {
5757 let bool = match getBoolean(this, key) {
5858 case a: Boolean =>
5959 a
6060 case _ =>
6161 false
6262 }
6363 bool
6464 }
6565
6666
6767 func getEventKey (producer,title) = (keyEventPrefix + toBase58String(sha256(toBytes((producer + title)))))
6868
6969
7070 func getEventDataKey (event) = (keyEventDataPrefix + event)
7171
7272
7373 func getEventTicketPriceKey (event,ticketId) = (((keyEventTicketPricePrefix + toString(ticketId)) + "_") + event)
7474
7575
7676 func getEventDateKey (event) = (keyEventDatePrefix + event)
7777
7878
7979 func getEventAttendeeKey (user,id,ticketId,event) = (((((keyEventAttendeePrefix + toBase58String(sha256(toBytes((user + id))))) + "_") + toString(ticketId)) + "_") + event)
8080
8181
8282 func getEventBalanceKey (account,event) = (((keyProducerBalancePrefix + account) + "_") + event)
8383
8484
8585 func getEventTicketAmountKey (event,ticketId) = (((keyEventAmountTicketPrefix + toString(ticketId)) + "_") + event)
8686
8787
8888 func getEventCanceledKey (event) = (keyEventCanceledPrefix + event)
8989
9090
9191 func getEventRequiresIdKey (event) = (keyEventRequiresIdPrefix + event)
9292
9393
9494 func getEventTicketMaxKey (event,ticketId) = (((keyEventTicketMaxPrefix + toString(ticketId)) + "_") + event)
9595
9696
9797 func getEventTicketDescriptionKey (event,ticketId) = (((keyEventTicketDescriptionPrefix + toString(ticketId)) + "_") + event)
9898
9999
100100 func getEventTicketsKey (event) = (keyEventTicketsPrefix + event)
101101
102102
103103 func getEventValueById (item) = getStrByKey(item)
104104
105105
106106 func getEventValue (producer,title) = getStrByKey(getEventKey(producer, title))
107107
108108
109109 func getEventTicketPriceValue (event,ticketId) = getNumberByKey(getEventTicketPriceKey(event, ticketId))
110110
111111
112112 func getEventDateValue (event) = getNumberByKey(getEventDateKey(event))
113113
114114
115115 func getEventAttendeeValue (user,id,ticketId,event) = getNumberByKey(getEventAttendeeKey(user, id, ticketId, event))
116116
117117
118118 func getEventBalanceValue (account,event) = getNumberByKey(getEventBalanceKey(account, event))
119119
120120
121121 func getEventTicketAmountValue (event,ticketId) = getNumberByKey(getEventTicketAmountKey(event, ticketId))
122122
123123
124124 func getEventCanceledValue (event) = getBoolByKey(getEventCanceledKey(event))
125125
126126
127127 func getEventRequiresIdValue (event) = getBoolByKey(getEventRequiresIdKey(event))
128128
129129
130130 func getEventTicketMaxValue (event,ticketId) = getNumberByKey(getEventTicketMaxKey(event, ticketId))
131131
132132
133133 func getEventTicketDescriptionValue (event,ticketId) = getStrByKey(getEventTicketDescriptionKey(event, ticketId))
134134
135135
136136 func getEventTicketsValue (event) = getNumberByKey(getEventTicketsKey(event))
137137
138138
139139 @Callable(i)
140140 func createEvent (title,data,date,requiresId) = {
141141 let producerAddress = toBase58String(i.caller.bytes)
142142 let event = getEventKey(producerAddress, title)
143143 if ((getEventValue(producerAddress, title) != NONE))
144144 then throw("The event already exist")
145145 else if ((lastBlock.timestamp > date))
146146 then throw("Date cannot be in the past")
147147 else WriteSet([DataEntry(getEventKey(producerAddress, title), producerAddress), DataEntry(getEventDataKey(event), data), DataEntry(getEventDateKey(event), date), DataEntry(getEventRequiresIdKey(event), requiresId), DataEntry(getEventTicketsKey(event), 0)])
148148 }
149149
150150
151151
152152 @Callable(i)
153153 func createEventTicket (event,price,description,amountTickets,maxAmount) = {
154154 let callerAddress = toBase58String(i.caller.bytes)
155155 let producerAddress = getEventValueById(event)
156156 let ticketId = getEventTicketsValue(event)
157157 if ((producerAddress != callerAddress))
158158 then throw("Event does not exist, or you don't have the credentials to perform this action")
159159 else if (((lastBlock.timestamp + 15000000) > getEventDateValue(event)))
160160 then throw("This event has already happened")
161161 else if (getEventCanceledValue(event))
162162 then throw("This event was canceled")
163163 else WriteSet([DataEntry(getEventTicketPriceKey(event, ticketId), price), DataEntry(getEventTicketAmountKey(event, ticketId), amountTickets), DataEntry(getEventTicketMaxKey(event, ticketId), maxAmount), DataEntry(getEventTicketDescriptionKey(event, ticketId), description), DataEntry(getEventTicketsKey(event), (getEventTicketsValue(event) + 1))])
164164 }
165165
166166
167167
168168 @Callable(i)
169169 func purchase (event,ticketId,amount,id) = {
170170 let pmt = extract(i.payment)
171171 let userAddress = toBase58String(i.caller.bytes)
172172 let price = getEventTicketPriceValue(event, ticketId)
173173 let producerAddress = getEventValueById(event)
174174 let ticketsLeft = getEventTicketAmountValue(event, ticketId)
175175 let attendeeKey = ""
176+ let totalPrice = (amount * price)
176177 if (isDefined(pmt.assetId))
177178 then throw("can use WAVES only at the moment")
178179 else if ((producerAddress == NONE))
179180 then throw("Event does not exist")
180- else if (((price * amount) > pmt.amount))
181- then throw(((("You did not send enough money. You sent: " + toString(pmt.amount)) + ". Expected: ") + toString((amount * price))))
182- else if ((pmt.amount > (price * amount)))
183- then throw(((("You send too much money. You sent: " + toString(pmt.amount)) + ". Total price: ") + toString((amount * price))))
181+ else if ((totalPrice > pmt.amount))
182+ then throw(((("You did not send enough money. You sent: " + toString(pmt.amount)) + ". Expected: ") + toString(totalPrice)))
183+ else if ((pmt.amount > totalPrice))
184+ then throw(((("You send too much money. You sent: " + toString(pmt.amount)) + ". Total price: ") + toString(totalPrice)))
184185 else if ((0 > (ticketsLeft - amount)))
185186 then throw("Not enough tickets left")
186187 else if (((lastBlock.timestamp + 15000000) > getEventDateValue(event)))
187188 then throw("This event has already happened")
188189 else if (getEventCanceledValue(event))
189190 then throw("This event was canceled")
190191 else if (if (getEventRequiresIdValue(event))
191192 then (id == "")
192193 else false)
193194 then throw("This event requires that you register with a personal ID")
194195 else if ((getEventTicketMaxValue(event, ticketId) > (getEventAttendeeValue(userAddress, id, ticketId, event) + amount)))
195196 then throw("Amount of Tickets exceeds maximum amount per attendee")
196197 else ScriptResult(WriteSet([DataEntry(getEventAttendeeKey(userAddress, id, ticketId, event), (getEventAttendeeValue(userAddress, id, ticketId, event) + amount)), DataEntry(getEventBalanceKey(producerAddress, event), (getEventBalanceValue(producerAddress, event) + pmt.amount)), DataEntry(getEventTicketAmountKey(event, ticketId), (ticketsLeft - amount))]), TransferSet([ScriptTransfer(addressFromStringValue(address), pmt.amount, unit)]))
197198 }
198199
199200
200201
201202 @Callable(i)
202203 func cancelEvent (event) = {
203204 let callerAddress = toBase58String(i.caller.bytes)
204205 if ((getEventValueById(event) != callerAddress))
205206 then throw("Event does not exist, or you don't have the credentials to perform this action")
206207 else if (((lastBlock.timestamp + 15000000) > getEventDateValue(event)))
207208 then throw("This event has already happened")
208209 else WriteSet([DataEntry(getEventCanceledKey(event), true)])
209210 }
210211
211212
212213
213214 @Callable(i)
214215 func checkin (event,attendeeAddress,amount,id,ticketId) = {
215216 let callerAddress = toBase58String(i.caller.bytes)
216217 if ((getEventValueById(event) != callerAddress))
217218 then throw("Event does not exist, or you don't have the credentials to perform this action")
218219 else if ((amount > getEventAttendeeValue(attendeeAddress, id, ticketId, event)))
219220 then throw("You don't have enough tickets.")
220221 else if (getEventCanceledValue(event))
221222 then throw("This event was canceled. You can redeem your ticket using refundTicket function")
222223 else WriteSet([DataEntry(getEventAttendeeKey(attendeeAddress, id, ticketId, event), (getEventAttendeeValue(attendeeAddress, id, ticketId, event) - amount))])
223224 }
224225
225226
226227
227228 @Callable(i)
228229 func editEventTickets (event,ticketId,newAmount) = {
229230 let callerAddress = toBase58String(i.caller.bytes)
230231 if ((getEventValueById(event) != callerAddress))
231232 then throw("Event does not exist, or you don't have the credentials to perform this action")
232233 else if (((lastBlock.timestamp + 15000000) > getEventDateValue(event)))
233234 then throw("This event has already happened")
234235 else if (getEventCanceledValue(event))
235236 then throw("This event was already canceled")
236237 else WriteSet([DataEntry(getEventTicketAmountKey(event, ticketId), newAmount)])
237238 }
238239
239240
240241
241242 @Callable(i)
242243 func refundTicket (event,amount,id,ticketId) = {
243244 let attendeeAddress = toBase58String(i.caller.bytes)
244245 let attendeeValue = getEventAttendeeValue(attendeeAddress, id, ticketId, event)
245246 if ((getEventValueById(event) == NONE))
246247 then throw("The event does not exist")
247248 else if ((amount > attendeeValue))
248249 then throw("You don't have enough registered tickets with this address")
249250 else if (((lastBlock.timestamp + 15000000) > getEventDateValue(event)))
250251 then throw("This event has already happened")
251252 else ScriptResult(WriteSet([DataEntry(getEventAttendeeKey(attendeeAddress, id, ticketId, event), (attendeeValue - amount))]), TransferSet([ScriptTransfer(addressFromStringValue(attendeeAddress), (amount * attendeeValue), unit)]))
252253 }
253254
254255
255256
256257 @Callable(i)
257258 func withdraw (event) = {
258259 let callerAddress = toBase58String(i.caller.bytes)
259260 let balance = getEventBalanceValue(callerAddress, event)
260261 if ((getEventValueById(event) != callerAddress))
261262 then throw("Event does not exist, or you don't have the credentials to perform this action")
262263 else if ((0 >= balance))
263264 then throw("Insufficient balance")
264265 else if (getEventCanceledValue(event))
265266 then throw("Event has been canceled")
266267 else ScriptResult(WriteSet([DataEntry(getEventBalanceKey(callerAddress, event), 0)]), TransferSet([ScriptTransfer(addressFromStringValue(callerAddress), (balance - ((balance * commission) / 100)), unit), ScriptTransfer(addressFromStringValue(address), ((balance * commission) / 100), unit)]))
267268 }
268269
269270

github/deemru/w8io/169f3d6 
57.08 ms