tx · AyVgAYzdoTgVnR2C3TYctnskQZY4KHjjJ6uTDdNzgt4v

3PLFZ6T6AhuzZ9SMoFpHBx91oFyy68a3GCt:  -0.01400000 Waves

2019.10.17 16:50 [1754256] smart account 3PLFZ6T6AhuzZ9SMoFpHBx91oFyy68a3GCt > SELF 0.00000000 Waves

{ "type": 13, "id": "AyVgAYzdoTgVnR2C3TYctnskQZY4KHjjJ6uTDdNzgt4v", "fee": 1400000, "feeAssetId": null, "timestamp": 1571320212273, "version": 1, "sender": "3PLFZ6T6AhuzZ9SMoFpHBx91oFyy68a3GCt", "senderPublicKey": "Asi3vKEqgmq2AuW1fky6nxPgx65gB8esHy3DGsubEbkw", "proofs": [ "BrTfRnjmZoxDznz3BY3R2s8GKwTdDLu5jxN7NNnGHHLNJ4sQRu8dT3oPsj2rGJGTZ7VmLCiZU9v2jL5xKM1F2Wf" ], "script": "base64:AAIDAAAAAAAAAF4IARIECgIICBIFCgMICAgSBAoCCAgSBAoCCAgSBAoCCAgSBAoCCAgSAwoBCBIHCgUIAQEBCBIECgIICBIECgIICBIDCgEIEgYKBAgBCAgSAwoBCBIECgIICBIDCgEIAAAAYQAAAAAETk9ORQIAAAAEbm9uZQEAAAAOZ2V0TnVtYmVyQnlLZXkAAAABAAAAA2tleQQAAAADbnVtBAAAAAckbWF0Y2gwCQAEGgAAAAIFAAAABHRoaXMFAAAAA2tleQMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAADSW50BAAAAAFhBQAAAAckbWF0Y2gwBQAAAAFhAAAAAAAAAAAABQAAAANudW0BAAAAC2dldFN0ckJ5S2V5AAAAAQAAAANrZXkEAAAAA3N0cgQAAAAHJG1hdGNoMAkABB0AAAACBQAAAAR0aGlzBQAAAANrZXkDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAABlN0cmluZwQAAAABYQUAAAAHJG1hdGNoMAUAAAABYQUAAAAETk9ORQUAAAADc3RyAQAAABJnZXRLZXlXaGl0ZWxpc3RSZWYAAAABAAAAB2FjY291bnQJAAEsAAAAAgIAAAAHd2xfcmVmXwUAAAAHYWNjb3VudAEAAAAVZ2V0S2V5V2hpdGVsaXN0U3RhdHVzAAAAAQAAAAdhY2NvdW50CQABLAAAAAICAAAAB3dsX3N0c18FAAAAB2FjY291bnQBAAAADWdldEtleUJhbGFuY2UAAAABAAAAB2FjY291bnQJAAEsAAAAAgIAAAAIYmFsYW5jZV8FAAAAB2FjY291bnQBAAAAEmdldEtleVdoaXRlbGlzdEJpbwAAAAEAAAAHYWNjb3VudAkAASwAAAACAgAAAAd3bF9iaW9fBQAAAAdhY2NvdW50AQAAABRnZXRLZXlXaGl0ZWxpc3RCbG9jawAAAAEAAAAHYWNjb3VudAkAASwAAAACAgAAAAd3bF9ibGtfBQAAAAdhY2NvdW50AQAAABBnZXRLZXlJdGVtQXV0aG9yAAAAAQAAAARpdGVtCQABLAAAAAICAAAAB2F1dGhvcl8FAAAABGl0ZW0BAAAAD2dldEtleUl0ZW1CbG9jawAAAAEAAAAEaXRlbQkAASwAAAACAgAAAAZibG9ja18FAAAABGl0ZW0BAAAAGmdldEtleUl0ZW1Wb3RpbmdFeHBpcmF0aW9uAAAAAQAAAARpdGVtCQABLAAAAAICAAAAEWV4cGlyYXRpb25fYmxvY2tfBQAAAARpdGVtAQAAAA5nZXRLZXlJdGVtQmFuawAAAAEAAAAEaXRlbQkAASwAAAACAgAAAAViYW5rXwUAAAAEaXRlbQEAAAAQZ2V0S2V5SXRlbVN0YXR1cwAAAAEAAAAEaXRlbQkAASwAAAACAgAAAAdzdGF0dXNfBQAAAARpdGVtAQAAAA5nZXRLZXlJdGVtRGF0YQAAAAEAAAAEaXRlbQkAASwAAAACAgAAAAlkYXRhanNvbl8FAAAABGl0ZW0BAAAAEWdldEtleUNvbnRlc3REYXRhAAAAAQAAAARpdGVtCQABLAAAAAICAAAAEWNvbnRlc3RfZGF0YWpzb25fBQAAAARpdGVtAQAAABlnZXRLZXlJdGVtQ3Jvd2RFeHBpcmF0aW9uAAAAAQAAAARpdGVtCQABLAAAAAICAAAAD2V4cGlyYXRpb25fb25lXwUAAAAEaXRlbQEAAAAZZ2V0S2V5SXRlbVdoYWxlRXhwaXJhdGlvbgAAAAEAAAAEaXRlbQkAASwAAAACAgAAAA9leHBpcmF0aW9uX3R3b18FAAAABGl0ZW0BAAAAEmdldEtleUl0ZW1OQ29tbWl0cwAAAAEAAAAEaXRlbQkAASwAAAACAgAAAAluY29tbWl0c18FAAAABGl0ZW0BAAAAF2dldEtleUl0ZW1BY2NSZXBvcnREYXRhAAAAAgAAAARpdGVtAAAAB2FjY291bnQJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAAB3JlcG9ydF8FAAAABGl0ZW0CAAAAAV8FAAAAB2FjY291bnQBAAAAE2dldEtleUl0ZW1BY2NDb21taXQAAAACAAAABGl0ZW0AAAAHYWNjb3VudAkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAHY29tbWl0XwUAAAAEaXRlbQIAAAABXwUAAAAHYWNjb3VudAEAAAATZ2V0S2V5SXRlbUFjY1JldmVhbAAAAAIAAAAEaXRlbQAAAAdhY2NvdW50CQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAdyZXZlYWxfBQAAAARpdGVtAgAAAAFfBQAAAAdhY2NvdW50AQAAABJnZXRLZXlJdGVtVm90ZXNZZXMAAAABAAAABGl0ZW0JAAEsAAAAAgIAAAAIY250X3llc18FAAAABGl0ZW0BAAAAEWdldEtleUl0ZW1Wb3Rlc05vAAAAAQAAAARpdGVtCQABLAAAAAICAAAAB2NudF9ub18FAAAABGl0ZW0BAAAAEmdldEtleUl0ZW1BY2NGaW5hbAAAAAIAAAAEaXRlbQAAAAdhY2NvdW50CQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAZmaW5hbF8FAAAABGl0ZW0CAAAAAV8FAAAAB2FjY291bnQBAAAAFmdldEtleUl0ZW1GdW5kUG9zaXRpdmUAAAABAAAABGl0ZW0JAAEsAAAAAgIAAAAOcG9zaXRpdmVfZnVuZF8FAAAABGl0ZW0BAAAAFmdldEtleUl0ZW1GdW5kTmVnYXRpdmUAAAABAAAABGl0ZW0JAAEsAAAAAgIAAAAObmVnYXRpdmVfZnVuZF8FAAAABGl0ZW0BAAAAGWdldEtleUl0ZW1BY2NGdW5kUG9zaXRpdmUAAAACAAAABGl0ZW0AAAAHYWNjb3VudAkAASwAAAACCQABLAAAAAIJAQAAABZnZXRLZXlJdGVtRnVuZFBvc2l0aXZlAAAAAQUAAAAEaXRlbQIAAAABXwUAAAAHYWNjb3VudAEAAAAZZ2V0S2V5SXRlbUFjY0Z1bmROZWdhdGl2ZQAAAAIAAAAEaXRlbQAAAAdhY2NvdW50CQABLAAAAAIJAAEsAAAAAgkBAAAAFmdldEtleUl0ZW1GdW5kTmVnYXRpdmUAAAABBQAAAARpdGVtAgAAAAFfBQAAAAdhY2NvdW50AQAAABdnZXRLZXlJdGVtQWNjUmV2aWV3c0NudAAAAAIAAAAEaXRlbQAAAAdhY2NvdW50CQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAxyZXZpZXdzX2NudF8FAAAABGl0ZW0CAAAAAV8FAAAAB2FjY291bnQBAAAAE2dldEtleUl0ZW1BY2NSZXZpZXcAAAACAAAABGl0ZW0AAAAHYWNjb3VudAkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAHcmV2aWV3XwUAAAAEaXRlbQIAAAABXwUAAAAHYWNjb3VudAEAAAASZ2V0S2V5VHJhbnNmZXJMaW5rAAAAAQAAAARoYXNoCQABLAAAAAICAAAADnRyYW5zZmVyX2xpbmtfBQAAAARoYXNoAQAAABdnZXRLZXlJdGVtQWNjUmV2aWV3VGV4dAAAAAMAAAAEaXRlbQAAAAdhY2NvdW50AAAAA2NudAkAASwAAAACCQABLAAAAAIJAQAAABNnZXRLZXlJdGVtQWNjUmV2aWV3AAAAAgUAAAAEaXRlbQUAAAAHYWNjb3VudAIAAAAJX3RleHRfaWQ6BQAAAANjbnQBAAAAF2dldEtleUl0ZW1BY2NSZXZpZXdNb2RlAAAAAwAAAARpdGVtAAAAB2FjY291bnQAAAADY250CQABLAAAAAIJAAEsAAAAAgkBAAAAE2dldEtleUl0ZW1BY2NSZXZpZXcAAAACBQAAAARpdGVtBQAAAAdhY2NvdW50AgAAAAlfbW9kZV9pZDoFAAAAA2NudAEAAAAXZ2V0S2V5SXRlbUFjY1Jldmlld1RpZXIAAAADAAAABGl0ZW0AAAAHYWNjb3VudAAAAANjbnQJAAEsAAAAAgkAASwAAAACCQEAAAATZ2V0S2V5SXRlbUFjY1JldmlldwAAAAIFAAAABGl0ZW0FAAAAB2FjY291bnQCAAAACV90aWVyX2lkOgUAAAADY250AQAAABtnZXRLZXlJdGVtQWNjVm90ZVJldmlld1RleHQAAAACAAAABGl0ZW0AAAAHYWNjb3VudAkAASwAAAACCQEAAAATZ2V0S2V5SXRlbUFjY1JldmlldwAAAAIFAAAABGl0ZW0FAAAAB2FjY291bnQCAAAAC192b3RlcmV2aWV3AQAAABxnZXRLZXlJdGVtQWNjV2hhbGVSZXZpZXdUZXh0AAAAAgAAAARpdGVtAAAAB2FjY291bnQJAAEsAAAAAgkBAAAAE2dldEtleUl0ZW1BY2NSZXZpZXcAAAACBQAAAARpdGVtBQAAAAdhY2NvdW50AgAAAAxfd2hhbGVyZXZpZXcBAAAAFmdldEtleUl0ZW1CdXlvdXRBbW91bnQAAAABAAAABGl0ZW0JAAEsAAAAAgIAAAAOYnV5b3V0X2Ftb3VudF8FAAAABGl0ZW0BAAAAFWdldEtleUl0ZW1BY2NXaW5uaW5ncwAAAAIAAAAEaXRlbQAAAAdhY2NvdW50CQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAl3aW5uaW5nc18FAAAABGl0ZW0CAAAAAV8FAAAAB2FjY291bnQBAAAAFWdldEtleUZyZWVJbnZpdGVDb3VudAAAAAACAAAAEWZyZWVfaW52aXRlX2NvdW50AQAAABVnZXRLZXlGcmVlSW52aXRlQmxvY2sAAAAAAgAAABFmcmVlX2ludml0ZV9ibG9jawEAAAAUZ2V0VmFsdWVXaGl0ZWxpc3RSZWYAAAABAAAAB2FjY291bnQJAQAAAAtnZXRTdHJCeUtleQAAAAEJAQAAABJnZXRLZXlXaGl0ZWxpc3RSZWYAAAABBQAAAAdhY2NvdW50AQAAABdnZXRWYWx1ZVdoaXRlbGlzdFN0YXR1cwAAAAEAAAAHYWNjb3VudAkBAAAAC2dldFN0ckJ5S2V5AAAAAQkBAAAAFWdldEtleVdoaXRlbGlzdFN0YXR1cwAAAAEFAAAAB2FjY291bnQBAAAAD2dldFZhbHVlQmFsYW5jZQAAAAEAAAAHYWNjb3VudAkBAAAADmdldE51bWJlckJ5S2V5AAAAAQkBAAAADWdldEtleUJhbGFuY2UAAAABBQAAAAdhY2NvdW50AQAAABRnZXRWYWx1ZVdoaXRlbGlzdEJpbwAAAAEAAAAHYWNjb3VudAkBAAAAC2dldFN0ckJ5S2V5AAAAAQkBAAAAEmdldEtleVdoaXRlbGlzdEJpbwAAAAEFAAAAB2FjY291bnQBAAAAFmdldFZhbHVlV2hpdGVsaXN0QmxvY2sAAAABAAAAB2FjY291bnQJAQAAAAtnZXRTdHJCeUtleQAAAAEJAQAAABRnZXRLZXlXaGl0ZWxpc3RCbG9jawAAAAEFAAAAB2FjY291bnQBAAAAEmdldFZhbHVlSXRlbUF1dGhvcgAAAAEAAAAEaXRlbQkBAAAAC2dldFN0ckJ5S2V5AAAAAQkBAAAAEGdldEtleUl0ZW1BdXRob3IAAAABBQAAAARpdGVtAQAAABFnZXRWYWx1ZUl0ZW1CbG9jawAAAAEAAAAEaXRlbQkBAAAADmdldE51bWJlckJ5S2V5AAAAAQkBAAAAD2dldEtleUl0ZW1CbG9jawAAAAEFAAAABGl0ZW0BAAAAHGdldFZhbHVlSXRlbVZvdGluZ0V4cGlyYXRpb24AAAABAAAABGl0ZW0JAQAAAA5nZXROdW1iZXJCeUtleQAAAAEJAQAAABpnZXRLZXlJdGVtVm90aW5nRXhwaXJhdGlvbgAAAAEFAAAABGl0ZW0BAAAAEGdldFZhbHVlSXRlbUJhbmsAAAABAAAABGl0ZW0JAQAAAA5nZXROdW1iZXJCeUtleQAAAAEJAQAAAA5nZXRLZXlJdGVtQmFuawAAAAEFAAAABGl0ZW0BAAAAEmdldFZhbHVlSXRlbVN0YXR1cwAAAAEAAAAEaXRlbQkBAAAAC2dldFN0ckJ5S2V5AAAAAQkBAAAAEGdldEtleUl0ZW1TdGF0dXMAAAABBQAAAARpdGVtAQAAABBnZXRWYWx1ZUl0ZW1EYXRhAAAAAQAAAARpdGVtCQEAAAALZ2V0U3RyQnlLZXkAAAABCQEAAAAOZ2V0S2V5SXRlbURhdGEAAAABBQAAAARpdGVtAQAAABtnZXRWYWx1ZUl0ZW1Dcm93ZEV4cGlyYXRpb24AAAABAAAABGl0ZW0JAQAAAA5nZXROdW1iZXJCeUtleQAAAAEJAQAAABlnZXRLZXlJdGVtQ3Jvd2RFeHBpcmF0aW9uAAAAAQUAAAAEaXRlbQEAAAAbZ2V0VmFsdWVJdGVtV2hhbGVFeHBpcmF0aW9uAAAAAQAAAARpdGVtCQEAAAAOZ2V0TnVtYmVyQnlLZXkAAAABCQEAAAAZZ2V0S2V5SXRlbVdoYWxlRXhwaXJhdGlvbgAAAAEFAAAABGl0ZW0BAAAAFGdldFZhbHVlSXRlbU5Db21taXRzAAAAAQAAAARpdGVtCQEAAAAOZ2V0TnVtYmVyQnlLZXkAAAABCQEAAAASZ2V0S2V5SXRlbU5Db21taXRzAAAAAQUAAAAEaXRlbQEAAAAVZ2V0VmFsdWVJdGVtQWNjQ29tbWl0AAAAAgAAAARpdGVtAAAAB2FjY291bnQJAQAAAAtnZXRTdHJCeUtleQAAAAEJAQAAABNnZXRLZXlJdGVtQWNjQ29tbWl0AAAAAgUAAAAEaXRlbQUAAAAHYWNjb3VudAEAAAAVZ2V0VmFsdWVJdGVtQWNjUmV2ZWFsAAAAAgAAAARpdGVtAAAAB2FjY291bnQJAQAAAAtnZXRTdHJCeUtleQAAAAEJAQAAABNnZXRLZXlJdGVtQWNjUmV2ZWFsAAAAAgUAAAAEaXRlbQUAAAAHYWNjb3VudAEAAAAUZ2V0VmFsdWVJdGVtVm90ZXNZZXMAAAABAAAABGl0ZW0JAQAAAA5nZXROdW1iZXJCeUtleQAAAAEJAQAAABJnZXRLZXlJdGVtVm90ZXNZZXMAAAABBQAAAARpdGVtAQAAABNnZXRWYWx1ZUl0ZW1Wb3Rlc05vAAAAAQAAAARpdGVtCQEAAAAOZ2V0TnVtYmVyQnlLZXkAAAABCQEAAAARZ2V0S2V5SXRlbVZvdGVzTm8AAAABBQAAAARpdGVtAQAAABRnZXRWYWx1ZUl0ZW1BY2NGaW5hbAAAAAIAAAAEaXRlbQAAAAdhY2NvdW50CQEAAAALZ2V0U3RyQnlLZXkAAAABCQEAAAASZ2V0S2V5SXRlbUFjY0ZpbmFsAAAAAgUAAAAEaXRlbQUAAAAHYWNjb3VudAEAAAAYZ2V0VmFsdWVJdGVtRnVuZFBvc2l0aXZlAAAAAQAAAARpdGVtCQEAAAAOZ2V0TnVtYmVyQnlLZXkAAAABCQEAAAAWZ2V0S2V5SXRlbUZ1bmRQb3NpdGl2ZQAAAAEFAAAABGl0ZW0BAAAAGGdldFZhbHVlSXRlbUZ1bmROZWdhdGl2ZQAAAAEAAAAEaXRlbQkBAAAADmdldE51bWJlckJ5S2V5AAAAAQkBAAAAFmdldEtleUl0ZW1GdW5kTmVnYXRpdmUAAAABBQAAAARpdGVtAQAAABtnZXRWYWx1ZUl0ZW1BY2NGdW5kUG9zaXRpdmUAAAACAAAABGl0ZW0AAAAHYWNjb3VudAkBAAAADmdldE51bWJlckJ5S2V5AAAAAQkBAAAAGWdldEtleUl0ZW1BY2NGdW5kUG9zaXRpdmUAAAACBQAAAARpdGVtBQAAAAdhY2NvdW50AQAAABtnZXRWYWx1ZUl0ZW1BY2NGdW5kTmVnYXRpdmUAAAACAAAABGl0ZW0AAAAHYWNjb3VudAkBAAAADmdldE51bWJlckJ5S2V5AAAAAQkBAAAAGWdldEtleUl0ZW1BY2NGdW5kTmVnYXRpdmUAAAACBQAAAARpdGVtBQAAAAdhY2NvdW50AQAAABlnZXRWYWx1ZUl0ZW1BY2NSZXZpZXdzQ250AAAAAgAAAARpdGVtAAAAB2FjY291bnQJAQAAAA5nZXROdW1iZXJCeUtleQAAAAEJAQAAABdnZXRLZXlJdGVtQWNjUmV2aWV3c0NudAAAAAIFAAAABGl0ZW0FAAAAB2FjY291bnQBAAAAGWdldFZhbHVlSXRlbUFjY1Jldmlld1RleHQAAAADAAAABGl0ZW0AAAAHYWNjb3VudAAAAANjbnQJAQAAAAtnZXRTdHJCeUtleQAAAAEJAQAAABdnZXRLZXlJdGVtQWNjUmV2aWV3VGV4dAAAAAMFAAAABGl0ZW0FAAAAB2FjY291bnQFAAAAA2NudAEAAAAZZ2V0VmFsdWVJdGVtQWNjUmV2aWV3TW9kZQAAAAMAAAAEaXRlbQAAAAdhY2NvdW50AAAAA2NudAkBAAAAC2dldFN0ckJ5S2V5AAAAAQkBAAAAF2dldEtleUl0ZW1BY2NSZXZpZXdNb2RlAAAAAwUAAAAEaXRlbQUAAAAHYWNjb3VudAUAAAADY250AQAAABlnZXRWYWx1ZUl0ZW1BY2NSZXZpZXdUaWVyAAAAAwAAAARpdGVtAAAAB2FjY291bnQAAAADY250CQEAAAAOZ2V0TnVtYmVyQnlLZXkAAAABCQEAAAAXZ2V0S2V5SXRlbUFjY1Jldmlld1RpZXIAAAADBQAAAARpdGVtBQAAAAdhY2NvdW50BQAAAANjbnQBAAAAGGdldFZhbHVlSXRlbUJ1eW91dEFtb3VudAAAAAEAAAAEaXRlbQkBAAAADmdldE51bWJlckJ5S2V5AAAAAQkBAAAAFmdldEtleUl0ZW1CdXlvdXRBbW91bnQAAAABBQAAAARpdGVtAQAAABdnZXRWYWx1ZUl0ZW1BY2NXaW5uaW5ncwAAAAIAAAAEaXRlbQAAAAdhY2NvdW50CQEAAAAOZ2V0TnVtYmVyQnlLZXkAAAABCQEAAAAVZ2V0S2V5SXRlbUFjY1dpbm5pbmdzAAAAAgUAAAAEaXRlbQUAAAAHYWNjb3VudAAAAAALV0hJVEVMSVNURUQCAAAACnJlZ2lzdGVyZWQAAAAAB0lOVklURUQCAAAAB2ludml0ZWQAAAAABVdIQUxFAgAAAAV3aGFsZQAAAAALU1BFTkRJTlZJVEUCAAAADHNwZW5kX2ludml0ZQAAAAAGQ09NTUlUAgAAAA12b3RpbmdfY29tbWl0AAAAAAZSRVZFQUwCAAAADXZvdGluZ19yZXZlYWwAAAAACEZFQVRVUkVEAgAAAAhmZWF0dXJlZAAAAAAIREVMSVNURUQCAAAACGRlbGlzdGVkAAAAAAdDQVNIT1VUAgAAAAdjYXNob3V0AAAAAAZCVVlPVVQCAAAABmJ1eW91dAAAAAAIRklOSVNIRUQCAAAACGZpbmlzaGVkAAAAAAdDTEFJTUVEAgAAAAdjbGFpbWVkAAAAAAhQT1NJVElWRQIAAAAIcG9zaXRpdmUAAAAACE5FR0FUSVZFAgAAAAhuZWdhdGl2ZQAAAAAHR0VORVNJUwIAAAAjM1A4RnZ5MXlEd05IdlZyYWJlNGVrNWI5ZEF3eEZqREtWN1IAAAAABUFETUlOAgAAACMzUDlORHh0OVk2ZVBmTTloa1F5c2dTdmJISnZpaHI1NloxOAAAAAAETEFCUwIAAAAjM1AzTVVDdkpqdmlKYXhNVWU3NDNMVmV6M3FUaGJMN1U4dVAAAAAABlZPVEVSUwAAAAAAAAAAAwAAAAAGUVVPUlVNAAAAAAAAAAACAAAAAAVUSUVSUwkABEwAAAACCQAAaAAAAAIAAAAAAAAAAAMAAAAAAAX14QAJAARMAAAAAgkAAGgAAAACAAAAAAAAAAAKAAAAAAAF9eEACQAETAAAAAIJAABoAAAAAgAAAAAAAAAAZAAAAAAABfXhAAkABEwAAAACCQAAaAAAAAIAAAAAAAAAASwAAAAAAAX14QAJAARMAAAAAgkAAGgAAAACAAAAAAAAAAPoAAAAAAAF9eEABQAAAANuaWwAAAAAB1ZPVEVCRVQJAABoAAAAAgAAAAAAAAAAAQAAAAAABfXhAAAAAAALQkxPQ0tTSU5EQVkAAAAAAAAABaAAAAAACk1VTFRJUExJRVIAAAAAAAAAAJYAAAAADU1BWEZSRUVJTlZJVEUAAAAAAAAAA+gAAAAACUlOVklURUZFRQAAAAAAAA27oAAAAAAKQURESVRFTUZFRQAAAAAAAA9CQAAAAAAPZnJlZUludml0ZUNvdW50CQEAAAAOZ2V0TnVtYmVyQnlLZXkAAAABCQEAAAAVZ2V0S2V5RnJlZUludml0ZUNvdW50AAAAAAAAAAAPZnJlZUludml0ZUJsb2NrCQEAAAAOZ2V0TnVtYmVyQnlLZXkAAAABCQEAAAAVZ2V0S2V5RnJlZUludml0ZUJsb2NrAAAAAAAAAA8AAAABaQEAAAAKaW52aXRldXNlcgAAAAIAAAAKbmV3YWNjb3VudAAAAARkYXRhBAAAAAdhY2NvdW50CQACWAAAAAEICAUAAAABaQAAAAZjYWxsZXIAAAAFYnl0ZXMEAAAACW5ld3N0YXR1cwkBAAAAF2dldFZhbHVlV2hpdGVsaXN0U3RhdHVzAAAAAQUAAAAKbmV3YWNjb3VudAQAAAAKY3VycnN0YXR1cwkBAAAAF2dldFZhbHVlV2hpdGVsaXN0U3RhdHVzAAAAAQUAAAAHYWNjb3VudAMDCQAAAAAAAAIFAAAACW5ld3N0YXR1cwUAAAALV0hJVEVMSVNURUQGCQAAAAAAAAIFAAAACW5ld3N0YXR1cwUAAAAFV0hBTEUJAAACAAAAAQIAAAAgVXNlciBoYXMgYWxyZWFkeSBiZWVuIHJlZ2lzdGVyZWQDCQEAAAAJaXNEZWZpbmVkAAAAAQgFAAAAAWkAAAAKZmVlQXNzZXRJZAkAAAIAAAABAgAAAA1pbnZhbGlkIGFzc2V0AwkAAGYAAAACCAUAAAABaQAAAANmZWUFAAAACUlOVklURUZFRQkAAAIAAAABAgAAAAxmZWUgbW9yZSBtYXgDAwMJAQAAAAIhPQAAAAIFAAAACmN1cnJzdGF0dXMFAAAAC1dISVRFTElTVEVECQEAAAACIT0AAAACBQAAAAdhY2NvdW50BQAAAAdHRU5FU0lTBwkBAAAAAiE9AAAAAgUAAAAKY3VycnN0YXR1cwUAAAAFV0hBTEUHCQAAAgAAAAEJAAEsAAAAAgIAAAAsWW91ciBhY2NvdW50IHNob3VsZCBiZSB3aGl0ZWxpc3RlZC4gc3RhdHVzOiAFAAAACmN1cnJzdGF0dXMJAQAAAAxTY3JpcHRSZXN1bHQAAAACCQEAAAAIV3JpdGVTZXQAAAABCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQEAAAASZ2V0S2V5V2hpdGVsaXN0UmVmAAAAAQUAAAAKbmV3YWNjb3VudAUAAAAHYWNjb3VudAkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkBAAAAEmdldEtleVdoaXRlbGlzdEJpbwAAAAEFAAAACm5ld2FjY291bnQFAAAABGRhdGEJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAQAAABVnZXRLZXlXaGl0ZWxpc3RTdGF0dXMAAAABBQAAAApuZXdhY2NvdW50BQAAAAdJTlZJVEVECQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQEAAAAVZ2V0S2V5RnJlZUludml0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RGF0YUVudHJ5AAAAAgkBAAAAGmdldEtleUl0ZW1Wb3RpbmdFeHBpcmF0aW9uAAAAAQUAAAAEaXRlbQkAAGQAAAACBQAAAAZoZWlnaHQFAAAACWV4cFZvdGluZwkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkBAAAAEGdldEtleUl0ZW1TdGF0dXMAAAABBQAAAARpdGVtBQAAAAhGRUFUVVJFRAkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkBAAAADmdldEtleUl0ZW1EYXRhAAAAAQUAAAAEaXRlbQUAAAAEZGF0YQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkBAAAAGWdldEtleUl0ZW1Dcm93ZEV4cGlyYXRpb24AAAABBQAAAARpdGVtCQAAZAAAAAIFAAAABmhlaWdodAUAAAAIZXhwQ3Jvd2QJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAQAAABlnZXRLZXlJdGVtV2hhbGVFeHBpcmF0aW9uAAAAAQUAAAAEaXRlbQkAAGQAAAACBQAAAAZoZWlnaHQFAAAACGV4cFdoYWxlCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQEAAAAVZ2V0S2V5RnJlZUludml0ZUJsb2NrAAAAAAMJAABmAAAAAgUAAAAGaGVpZ2h0BQAAAA9mcmVlSW52aXRlQmxvY2sJAABkAAAAAgUAAAAGaGVpZ2h0BQAAAAtCTE9DS1NJTkRBWQUAAAAPZnJlZUludml0ZUJsb2NrCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQEAAAAVZ2V0S2V5RnJlZUludml0ZUNvdW50AAAAAAMJAABmAAAAAgUAAAAGaGVpZ2h0BQAAAA9mcmVlSW52aXRlQmxvY2sFAAAADU1BWEZSRUVJTlZJVEUJAABlAAAAAgUAAAAPZnJlZUludml0ZUNvdW50AAAAAAAAAAABBQAAAANuaWwJAQAAAAtUcmFuc2ZlclNldAAAAAEJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwkBAAAAHEBleHRyVXNlcihhZGRyZXNzRnJvbVN0cmluZykAAAABBQAAAAdhY2NvdW50AwMJAAAAAAAAAgkBAAAADHdhdmVzQmFsYW5jZQAAAAEJAQAAABxAZXh0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", "chainId": 87, "height": 1754256, "spentComplexity": 0 } View: original | compacted Prev: 4owCu6KSTqvoNhPoWU6pSTNT96tW41DJd98YpYidHTar Next: none Diff:
OldNewDifferences
273273
274274 let INVITEFEE = 900000
275275
276+let ADDITEMFEE = 1000000
277+
276278 let freeInviteCount = getNumberByKey(getKeyFreeInviteCount())
277279
278280 let freeInviteBlock = getNumberByKey(getKeyFreeInviteBlock())
286288 then true
287289 else (newstatus == WHALE))
288290 then throw("User has already been registered")
289- else if ((i.fee > INVITEFEE))
290- then throw("fee more max")
291- else if (if (if ((currstatus != WHITELISTED))
292- then (account != GENESIS)
293- else false)
294- then (currstatus != WHALE)
295- else false)
296- then throw(("Your account should be whitelisted. status: " + currstatus))
297- else ScriptResult(WriteSet([DataEntry(getKeyWhitelistRef(newaccount), account), DataEntry(getKeyWhitelistBio(newaccount), data), DataEntry(getKeyWhitelistStatus(newaccount), INVITED), DataEntry(getKeyFreeInviteBlock(), if ((height > freeInviteBlock))
291+ else if (isDefined(i.feeAssetId))
292+ then throw("invalid asset")
293+ else if ((i.fee > INVITEFEE))
294+ then throw("fee more max")
295+ else if (if (if ((currstatus != WHITELISTED))
296+ then (account != GENESIS)
297+ else false)
298+ then (currstatus != WHALE)
299+ else false)
300+ then throw(("Your account should be whitelisted. status: " + currstatus))
301+ else ScriptResult(WriteSet([DataEntry(getKeyWhitelistRef(newaccount), account), DataEntry(getKeyWhitelistBio(newaccount), data), DataEntry(getKeyWhitelistStatus(newaccount), INVITED), DataEntry(getKeyFreeInviteBlock(), if ((height > freeInviteBlock))
302+ then (height + BLOCKSINDAY)
303+ else freeInviteBlock), DataEntry(getKeyFreeInviteCount(), if ((height > freeInviteBlock))
304+ then MAXFREEINVITE
305+ else (freeInviteCount - 1))]), TransferSet([ScriptTransfer(addressFromStringValue(account), if (if ((wavesBalance(addressFromStringValue(account)) == 0))
306+ then if ((freeInviteCount > 0))
307+ then true
308+ else (height > freeInviteBlock)
309+ else false)
310+ then i.fee
311+ else 0, unit)]))
312+ }
313+
314+
315+
316+@Callable(i)
317+func signupbylink (hash,data,type) = {
318+ let account = toBase58String(i.caller.bytes)
319+ let status = getValueWhitelistStatus(hash)
320+ if ((status != INVITED))
321+ then throw(((((("Referral invite needed. Current status: " + status) + ", key:") + getKeyWhitelistStatus(hash)) + ", account:") + hash))
322+ else if (isDefined(i.feeAssetId))
323+ then throw("invalid asset")
324+ else if ((i.fee > INVITEFEE))
325+ then throw("fee more max")
326+ else ScriptResult(WriteSet([DataEntry(getKeyWhitelistBio(account), data), DataEntry(getKeyWhitelistBlock(account), height), DataEntry(getKeyWhitelistStatus(account), if ((type == WHALE))
327+ then WHALE
328+ else WHITELISTED), DataEntry(getKeyWhitelistRef(account), getValueWhitelistRef(hash)), DataEntry(getKeyFreeInviteBlock(), if ((height > freeInviteBlock))
298329 then (height + BLOCKSINDAY)
299330 else freeInviteBlock), DataEntry(getKeyFreeInviteCount(), if ((height > freeInviteBlock))
300331 then MAXFREEINVITE
305336 else false)
306337 then i.fee
307338 else 0, unit)]))
308- }
309-
310-
311-
312-@Callable(i)
313-func signupbylink (hash,data,type) = {
314- let account = toBase58String(i.caller.bytes)
315- let status = getValueWhitelistStatus(hash)
316- if ((status != INVITED))
317- then throw(((((("Referral invite needed. Current status: " + status) + ", key:") + getKeyWhitelistStatus(hash)) + ", account:") + hash))
318- else if ((i.fee > INVITEFEE))
319- then throw("fee more max")
320- else ScriptResult(WriteSet([DataEntry(getKeyWhitelistBio(account), data), DataEntry(getKeyWhitelistBlock(account), height), DataEntry(getKeyWhitelistStatus(account), if ((type == WHALE))
321- then WHALE
322- else WHITELISTED), DataEntry(getKeyWhitelistRef(account), getValueWhitelistRef(hash)), DataEntry(getKeyFreeInviteBlock(), if ((height > freeInviteBlock))
323- then (height + BLOCKSINDAY)
324- else freeInviteBlock), DataEntry(getKeyFreeInviteCount(), if ((height > freeInviteBlock))
325- then MAXFREEINVITE
326- else (freeInviteCount - 1))]), TransferSet([ScriptTransfer(addressFromStringValue(account), if (if ((wavesBalance(addressFromStringValue(account)) == 0))
327- then if ((freeInviteCount > 0))
328- then true
329- else (height > freeInviteBlock)
330- else false)
331- then i.fee
332- else 0, unit)]))
333339 }
334340
335341
350356 @Callable(i)
351357 func userupdate (data,type) = {
352358 let account = toBase58String(i.caller.bytes)
353- if ((getKeyWhitelistBio(account) == NONE))
359+ let status = getValueWhitelistStatus(account)
360+ if ((status == NONE))
354361 then throw("user not signup")
355- else if ((i.fee > INVITEFEE))
356- then throw("fee more max")
357- else ScriptResult(WriteSet([DataEntry(getKeyWhitelistBio(account), data), DataEntry(getKeyWhitelistStatus(account), if ((type == WHALE))
358- then WHALE
359- else WHITELISTED), DataEntry(getKeyFreeInviteBlock(), if ((height > freeInviteBlock))
360- then (height + BLOCKSINDAY)
361- else freeInviteBlock), DataEntry(getKeyFreeInviteCount(), if ((height > freeInviteBlock))
362- then MAXFREEINVITE
363- else (freeInviteCount - 1))]), TransferSet([ScriptTransfer(addressFromStringValue(account), if (if ((wavesBalance(addressFromStringValue(account)) == 0))
364- then if ((freeInviteCount > 0))
365- then true
366- else (height > freeInviteBlock)
367- else false)
368- then i.fee
369- else 0, unit)]))
362+ else if (isDefined(i.feeAssetId))
363+ then throw("invalid asset")
364+ else if ((i.fee > INVITEFEE))
365+ then throw("fee more max")
366+ else ScriptResult(WriteSet([DataEntry(getKeyWhitelistBio(account), data), DataEntry(getKeyWhitelistStatus(account), if ((type == WHALE))
367+ then WHALE
368+ else WHITELISTED), DataEntry(getKeyFreeInviteBlock(), if ((height > freeInviteBlock))
369+ then (height + BLOCKSINDAY)
370+ else freeInviteBlock), DataEntry(getKeyFreeInviteCount(), if ((height > freeInviteBlock))
371+ then MAXFREEINVITE
372+ else (freeInviteCount - 1))]), TransferSet([ScriptTransfer(addressFromStringValue(account), if (if ((wavesBalance(addressFromStringValue(account)) == 0))
373+ then if ((freeInviteCount > 0))
374+ then true
375+ else (height > freeInviteBlock)
376+ else false)
377+ then i.fee
378+ else 0, unit)]))
370379 }
371380
372381
416425 @Callable(i)
417426 func additem (item,expVoting,expCrowd,expWhale,data) = {
418427 let account = toBase58String(i.caller.bytes)
419- let pmt = extract(i.payment)
420- if (isDefined(pmt.assetId))
421- then throw("can use waves only at the moment")
428+ if (isDefined(i.feeAssetId))
429+ then throw("invalid asset")
422430 else if ((i.fee > INVITEFEE))
423431 then throw("fee more max")
424432 else if (!(if (if ((expVoting > 2))
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 3 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let NONE = "none"
55
66 func getNumberByKey (key) = {
77 let num = match getInteger(this, key) {
88 case a: Int =>
99 a
1010 case _ =>
1111 0
1212 }
1313 num
1414 }
1515
1616
1717 func getStrByKey (key) = {
1818 let str = match getString(this, key) {
1919 case a: String =>
2020 a
2121 case _ =>
2222 NONE
2323 }
2424 str
2525 }
2626
2727
2828 func getKeyWhitelistRef (account) = ("wl_ref_" + account)
2929
3030
3131 func getKeyWhitelistStatus (account) = ("wl_sts_" + account)
3232
3333
3434 func getKeyBalance (account) = ("balance_" + account)
3535
3636
3737 func getKeyWhitelistBio (account) = ("wl_bio_" + account)
3838
3939
4040 func getKeyWhitelistBlock (account) = ("wl_blk_" + account)
4141
4242
4343 func getKeyItemAuthor (item) = ("author_" + item)
4444
4545
4646 func getKeyItemBlock (item) = ("block_" + item)
4747
4848
4949 func getKeyItemVotingExpiration (item) = ("expiration_block_" + item)
5050
5151
5252 func getKeyItemBank (item) = ("bank_" + item)
5353
5454
5555 func getKeyItemStatus (item) = ("status_" + item)
5656
5757
5858 func getKeyItemData (item) = ("datajson_" + item)
5959
6060
6161 func getKeyContestData (item) = ("contest_datajson_" + item)
6262
6363
6464 func getKeyItemCrowdExpiration (item) = ("expiration_one_" + item)
6565
6666
6767 func getKeyItemWhaleExpiration (item) = ("expiration_two_" + item)
6868
6969
7070 func getKeyItemNCommits (item) = ("ncommits_" + item)
7171
7272
7373 func getKeyItemAccReportData (item,account) = ((("report_" + item) + "_") + account)
7474
7575
7676 func getKeyItemAccCommit (item,account) = ((("commit_" + item) + "_") + account)
7777
7878
7979 func getKeyItemAccReveal (item,account) = ((("reveal_" + item) + "_") + account)
8080
8181
8282 func getKeyItemVotesYes (item) = ("cnt_yes_" + item)
8383
8484
8585 func getKeyItemVotesNo (item) = ("cnt_no_" + item)
8686
8787
8888 func getKeyItemAccFinal (item,account) = ((("final_" + item) + "_") + account)
8989
9090
9191 func getKeyItemFundPositive (item) = ("positive_fund_" + item)
9292
9393
9494 func getKeyItemFundNegative (item) = ("negative_fund_" + item)
9595
9696
9797 func getKeyItemAccFundPositive (item,account) = ((getKeyItemFundPositive(item) + "_") + account)
9898
9999
100100 func getKeyItemAccFundNegative (item,account) = ((getKeyItemFundNegative(item) + "_") + account)
101101
102102
103103 func getKeyItemAccReviewsCnt (item,account) = ((("reviews_cnt_" + item) + "_") + account)
104104
105105
106106 func getKeyItemAccReview (item,account) = ((("review_" + item) + "_") + account)
107107
108108
109109 func getKeyTransferLink (hash) = ("transfer_link_" + hash)
110110
111111
112112 func getKeyItemAccReviewText (item,account,cnt) = ((getKeyItemAccReview(item, account) + "_text_id:") + cnt)
113113
114114
115115 func getKeyItemAccReviewMode (item,account,cnt) = ((getKeyItemAccReview(item, account) + "_mode_id:") + cnt)
116116
117117
118118 func getKeyItemAccReviewTier (item,account,cnt) = ((getKeyItemAccReview(item, account) + "_tier_id:") + cnt)
119119
120120
121121 func getKeyItemAccVoteReviewText (item,account) = (getKeyItemAccReview(item, account) + "_votereview")
122122
123123
124124 func getKeyItemAccWhaleReviewText (item,account) = (getKeyItemAccReview(item, account) + "_whalereview")
125125
126126
127127 func getKeyItemBuyoutAmount (item) = ("buyout_amount_" + item)
128128
129129
130130 func getKeyItemAccWinnings (item,account) = ((("winnings_" + item) + "_") + account)
131131
132132
133133 func getKeyFreeInviteCount () = "free_invite_count"
134134
135135
136136 func getKeyFreeInviteBlock () = "free_invite_block"
137137
138138
139139 func getValueWhitelistRef (account) = getStrByKey(getKeyWhitelistRef(account))
140140
141141
142142 func getValueWhitelistStatus (account) = getStrByKey(getKeyWhitelistStatus(account))
143143
144144
145145 func getValueBalance (account) = getNumberByKey(getKeyBalance(account))
146146
147147
148148 func getValueWhitelistBio (account) = getStrByKey(getKeyWhitelistBio(account))
149149
150150
151151 func getValueWhitelistBlock (account) = getStrByKey(getKeyWhitelistBlock(account))
152152
153153
154154 func getValueItemAuthor (item) = getStrByKey(getKeyItemAuthor(item))
155155
156156
157157 func getValueItemBlock (item) = getNumberByKey(getKeyItemBlock(item))
158158
159159
160160 func getValueItemVotingExpiration (item) = getNumberByKey(getKeyItemVotingExpiration(item))
161161
162162
163163 func getValueItemBank (item) = getNumberByKey(getKeyItemBank(item))
164164
165165
166166 func getValueItemStatus (item) = getStrByKey(getKeyItemStatus(item))
167167
168168
169169 func getValueItemData (item) = getStrByKey(getKeyItemData(item))
170170
171171
172172 func getValueItemCrowdExpiration (item) = getNumberByKey(getKeyItemCrowdExpiration(item))
173173
174174
175175 func getValueItemWhaleExpiration (item) = getNumberByKey(getKeyItemWhaleExpiration(item))
176176
177177
178178 func getValueItemNCommits (item) = getNumberByKey(getKeyItemNCommits(item))
179179
180180
181181 func getValueItemAccCommit (item,account) = getStrByKey(getKeyItemAccCommit(item, account))
182182
183183
184184 func getValueItemAccReveal (item,account) = getStrByKey(getKeyItemAccReveal(item, account))
185185
186186
187187 func getValueItemVotesYes (item) = getNumberByKey(getKeyItemVotesYes(item))
188188
189189
190190 func getValueItemVotesNo (item) = getNumberByKey(getKeyItemVotesNo(item))
191191
192192
193193 func getValueItemAccFinal (item,account) = getStrByKey(getKeyItemAccFinal(item, account))
194194
195195
196196 func getValueItemFundPositive (item) = getNumberByKey(getKeyItemFundPositive(item))
197197
198198
199199 func getValueItemFundNegative (item) = getNumberByKey(getKeyItemFundNegative(item))
200200
201201
202202 func getValueItemAccFundPositive (item,account) = getNumberByKey(getKeyItemAccFundPositive(item, account))
203203
204204
205205 func getValueItemAccFundNegative (item,account) = getNumberByKey(getKeyItemAccFundNegative(item, account))
206206
207207
208208 func getValueItemAccReviewsCnt (item,account) = getNumberByKey(getKeyItemAccReviewsCnt(item, account))
209209
210210
211211 func getValueItemAccReviewText (item,account,cnt) = getStrByKey(getKeyItemAccReviewText(item, account, cnt))
212212
213213
214214 func getValueItemAccReviewMode (item,account,cnt) = getStrByKey(getKeyItemAccReviewMode(item, account, cnt))
215215
216216
217217 func getValueItemAccReviewTier (item,account,cnt) = getNumberByKey(getKeyItemAccReviewTier(item, account, cnt))
218218
219219
220220 func getValueItemBuyoutAmount (item) = getNumberByKey(getKeyItemBuyoutAmount(item))
221221
222222
223223 func getValueItemAccWinnings (item,account) = getNumberByKey(getKeyItemAccWinnings(item, account))
224224
225225
226226 let WHITELISTED = "registered"
227227
228228 let INVITED = "invited"
229229
230230 let WHALE = "whale"
231231
232232 let SPENDINVITE = "spend_invite"
233233
234234 let COMMIT = "voting_commit"
235235
236236 let REVEAL = "voting_reveal"
237237
238238 let FEATURED = "featured"
239239
240240 let DELISTED = "delisted"
241241
242242 let CASHOUT = "cashout"
243243
244244 let BUYOUT = "buyout"
245245
246246 let FINISHED = "finished"
247247
248248 let CLAIMED = "claimed"
249249
250250 let POSITIVE = "positive"
251251
252252 let NEGATIVE = "negative"
253253
254254 let GENESIS = "3P8Fvy1yDwNHvVrabe4ek5b9dAwxFjDKV7R"
255255
256256 let ADMIN = "3P9NDxt9Y6ePfM9hkQysgSvbHJvihr56Z18"
257257
258258 let LABS = "3P3MUCvJjviJaxMUe743LVez3qThbL7U8uP"
259259
260260 let VOTERS = 3
261261
262262 let QUORUM = 2
263263
264264 let TIERS = [(3 * 100000000), (10 * 100000000), (100 * 100000000), (300 * 100000000), (1000 * 100000000)]
265265
266266 let VOTEBET = (1 * 100000000)
267267
268268 let BLOCKSINDAY = 1440
269269
270270 let MULTIPLIER = 150
271271
272272 let MAXFREEINVITE = 1000
273273
274274 let INVITEFEE = 900000
275275
276+let ADDITEMFEE = 1000000
277+
276278 let freeInviteCount = getNumberByKey(getKeyFreeInviteCount())
277279
278280 let freeInviteBlock = getNumberByKey(getKeyFreeInviteBlock())
279281
280282 @Callable(i)
281283 func inviteuser (newaccount,data) = {
282284 let account = toBase58String(i.caller.bytes)
283285 let newstatus = getValueWhitelistStatus(newaccount)
284286 let currstatus = getValueWhitelistStatus(account)
285287 if (if ((newstatus == WHITELISTED))
286288 then true
287289 else (newstatus == WHALE))
288290 then throw("User has already been registered")
289- else if ((i.fee > INVITEFEE))
290- then throw("fee more max")
291- else if (if (if ((currstatus != WHITELISTED))
292- then (account != GENESIS)
293- else false)
294- then (currstatus != WHALE)
295- else false)
296- then throw(("Your account should be whitelisted. status: " + currstatus))
297- else ScriptResult(WriteSet([DataEntry(getKeyWhitelistRef(newaccount), account), DataEntry(getKeyWhitelistBio(newaccount), data), DataEntry(getKeyWhitelistStatus(newaccount), INVITED), DataEntry(getKeyFreeInviteBlock(), if ((height > freeInviteBlock))
291+ else if (isDefined(i.feeAssetId))
292+ then throw("invalid asset")
293+ else if ((i.fee > INVITEFEE))
294+ then throw("fee more max")
295+ else if (if (if ((currstatus != WHITELISTED))
296+ then (account != GENESIS)
297+ else false)
298+ then (currstatus != WHALE)
299+ else false)
300+ then throw(("Your account should be whitelisted. status: " + currstatus))
301+ else ScriptResult(WriteSet([DataEntry(getKeyWhitelistRef(newaccount), account), DataEntry(getKeyWhitelistBio(newaccount), data), DataEntry(getKeyWhitelistStatus(newaccount), INVITED), DataEntry(getKeyFreeInviteBlock(), if ((height > freeInviteBlock))
302+ then (height + BLOCKSINDAY)
303+ else freeInviteBlock), DataEntry(getKeyFreeInviteCount(), if ((height > freeInviteBlock))
304+ then MAXFREEINVITE
305+ else (freeInviteCount - 1))]), TransferSet([ScriptTransfer(addressFromStringValue(account), if (if ((wavesBalance(addressFromStringValue(account)) == 0))
306+ then if ((freeInviteCount > 0))
307+ then true
308+ else (height > freeInviteBlock)
309+ else false)
310+ then i.fee
311+ else 0, unit)]))
312+ }
313+
314+
315+
316+@Callable(i)
317+func signupbylink (hash,data,type) = {
318+ let account = toBase58String(i.caller.bytes)
319+ let status = getValueWhitelistStatus(hash)
320+ if ((status != INVITED))
321+ then throw(((((("Referral invite needed. Current status: " + status) + ", key:") + getKeyWhitelistStatus(hash)) + ", account:") + hash))
322+ else if (isDefined(i.feeAssetId))
323+ then throw("invalid asset")
324+ else if ((i.fee > INVITEFEE))
325+ then throw("fee more max")
326+ else ScriptResult(WriteSet([DataEntry(getKeyWhitelistBio(account), data), DataEntry(getKeyWhitelistBlock(account), height), DataEntry(getKeyWhitelistStatus(account), if ((type == WHALE))
327+ then WHALE
328+ else WHITELISTED), DataEntry(getKeyWhitelistRef(account), getValueWhitelistRef(hash)), DataEntry(getKeyFreeInviteBlock(), if ((height > freeInviteBlock))
298329 then (height + BLOCKSINDAY)
299330 else freeInviteBlock), DataEntry(getKeyFreeInviteCount(), if ((height > freeInviteBlock))
300331 then MAXFREEINVITE
301332 else (freeInviteCount - 1))]), TransferSet([ScriptTransfer(addressFromStringValue(account), if (if ((wavesBalance(addressFromStringValue(account)) == 0))
302333 then if ((freeInviteCount > 0))
303334 then true
304335 else (height > freeInviteBlock)
305336 else false)
306337 then i.fee
307338 else 0, unit)]))
308- }
309-
310-
311-
312-@Callable(i)
313-func signupbylink (hash,data,type) = {
314- let account = toBase58String(i.caller.bytes)
315- let status = getValueWhitelistStatus(hash)
316- if ((status != INVITED))
317- then throw(((((("Referral invite needed. Current status: " + status) + ", key:") + getKeyWhitelistStatus(hash)) + ", account:") + hash))
318- else if ((i.fee > INVITEFEE))
319- then throw("fee more max")
320- else ScriptResult(WriteSet([DataEntry(getKeyWhitelistBio(account), data), DataEntry(getKeyWhitelistBlock(account), height), DataEntry(getKeyWhitelistStatus(account), if ((type == WHALE))
321- then WHALE
322- else WHITELISTED), DataEntry(getKeyWhitelistRef(account), getValueWhitelistRef(hash)), DataEntry(getKeyFreeInviteBlock(), if ((height > freeInviteBlock))
323- then (height + BLOCKSINDAY)
324- else freeInviteBlock), DataEntry(getKeyFreeInviteCount(), if ((height > freeInviteBlock))
325- then MAXFREEINVITE
326- else (freeInviteCount - 1))]), TransferSet([ScriptTransfer(addressFromStringValue(account), if (if ((wavesBalance(addressFromStringValue(account)) == 0))
327- then if ((freeInviteCount > 0))
328- then true
329- else (height > freeInviteBlock)
330- else false)
331- then i.fee
332- else 0, unit)]))
333339 }
334340
335341
336342
337343 @Callable(i)
338344 func signup (data,type) = {
339345 let account = toBase58String(i.caller.bytes)
340346 let status = getValueWhitelistStatus(account)
341347 if ((status == NONE))
342348 then throw(((((("Referral invite needed. Current status: " + status) + ", key:") + getKeyWhitelistStatus(account)) + ", account:") + account))
343349 else WriteSet([DataEntry(getKeyWhitelistBio(account), data), DataEntry(getKeyWhitelistBlock(account), height), DataEntry(getKeyWhitelistStatus(account), if ((type == WHALE))
344350 then WHALE
345351 else WHITELISTED)])
346352 }
347353
348354
349355
350356 @Callable(i)
351357 func userupdate (data,type) = {
352358 let account = toBase58String(i.caller.bytes)
353- if ((getKeyWhitelistBio(account) == NONE))
359+ let status = getValueWhitelistStatus(account)
360+ if ((status == NONE))
354361 then throw("user not signup")
355- else if ((i.fee > INVITEFEE))
356- then throw("fee more max")
357- else ScriptResult(WriteSet([DataEntry(getKeyWhitelistBio(account), data), DataEntry(getKeyWhitelistStatus(account), if ((type == WHALE))
358- then WHALE
359- else WHITELISTED), DataEntry(getKeyFreeInviteBlock(), if ((height > freeInviteBlock))
360- then (height + BLOCKSINDAY)
361- else freeInviteBlock), DataEntry(getKeyFreeInviteCount(), if ((height > freeInviteBlock))
362- then MAXFREEINVITE
363- else (freeInviteCount - 1))]), TransferSet([ScriptTransfer(addressFromStringValue(account), if (if ((wavesBalance(addressFromStringValue(account)) == 0))
364- then if ((freeInviteCount > 0))
365- then true
366- else (height > freeInviteBlock)
367- else false)
368- then i.fee
369- else 0, unit)]))
362+ else if (isDefined(i.feeAssetId))
363+ then throw("invalid asset")
364+ else if ((i.fee > INVITEFEE))
365+ then throw("fee more max")
366+ else ScriptResult(WriteSet([DataEntry(getKeyWhitelistBio(account), data), DataEntry(getKeyWhitelistStatus(account), if ((type == WHALE))
367+ then WHALE
368+ else WHITELISTED), DataEntry(getKeyFreeInviteBlock(), if ((height > freeInviteBlock))
369+ then (height + BLOCKSINDAY)
370+ else freeInviteBlock), DataEntry(getKeyFreeInviteCount(), if ((height > freeInviteBlock))
371+ then MAXFREEINVITE
372+ else (freeInviteCount - 1))]), TransferSet([ScriptTransfer(addressFromStringValue(account), if (if ((wavesBalance(addressFromStringValue(account)) == 0))
373+ then if ((freeInviteCount > 0))
374+ then true
375+ else (height > freeInviteBlock)
376+ else false)
377+ then i.fee
378+ else 0, unit)]))
370379 }
371380
372381
373382
374383 @Callable(i)
375384 func projupdate (item,data) = {
376385 let account = toBase58String(i.caller.bytes)
377386 if ((getValueItemAuthor(item) != account))
378387 then throw("You're not author")
379388 else if ((i.fee > INVITEFEE))
380389 then throw("fee more max")
381390 else ScriptResult(WriteSet([DataEntry(getKeyItemData(item), data), DataEntry(getKeyFreeInviteBlock(), if ((height > freeInviteBlock))
382391 then (height + BLOCKSINDAY)
383392 else freeInviteBlock), DataEntry(getKeyFreeInviteCount(), if ((height > freeInviteBlock))
384393 then MAXFREEINVITE
385394 else (freeInviteCount - 1))]), TransferSet([ScriptTransfer(addressFromStringValue(account), if (if ((wavesBalance(addressFromStringValue(account)) == 0))
386395 then if ((freeInviteCount > 0))
387396 then true
388397 else (height > freeInviteBlock)
389398 else false)
390399 then i.fee
391400 else 0, unit)]))
392401 }
393402
394403
395404
396405 @Callable(i)
397406 func contestAddOrUpdate (item,data) = {
398407 let account = toBase58String(i.caller.bytes)
399408 if ((account != ADMIN))
400409 then throw("You're not admin")
401410 else WriteSet([DataEntry(getKeyContestData(item), data)])
402411 }
403412
404413
405414
406415 @Callable(i)
407416 func withdraw (address) = {
408417 let amount = getValueBalance(address)
409418 if ((0 >= amount))
410419 then throw("Not enough balance")
411420 else ScriptResult(WriteSet([DataEntry(getKeyBalance(address), 0)]), TransferSet([ScriptTransfer(addressFromStringValue(address), amount, unit)]))
412421 }
413422
414423
415424
416425 @Callable(i)
417426 func additem (item,expVoting,expCrowd,expWhale,data) = {
418427 let account = toBase58String(i.caller.bytes)
419- let pmt = extract(i.payment)
420- if (isDefined(pmt.assetId))
421- then throw("can use waves only at the moment")
428+ if (isDefined(i.feeAssetId))
429+ then throw("invalid asset")
422430 else if ((i.fee > INVITEFEE))
423431 then throw("fee more max")
424432 else if (!(if (if ((expVoting > 2))
425433 then (expCrowd > expVoting)
426434 else false)
427435 then (expWhale > expCrowd)
428436 else false))
429437 then throw("Incorrect time parameters")
430438 else if ((getValueItemAuthor(item) != NONE))
431439 then throw("Item already exist")
432440 else ScriptResult(WriteSet([DataEntry(getKeyItemAuthor(item), account), DataEntry(getKeyItemBlock(item), height), DataEntry(getKeyItemVotingExpiration(item), (height + expVoting)), DataEntry(getKeyItemStatus(item), FEATURED), DataEntry(getKeyItemData(item), data), DataEntry(getKeyItemCrowdExpiration(item), (height + expCrowd)), DataEntry(getKeyItemWhaleExpiration(item), (height + expWhale)), DataEntry(getKeyFreeInviteBlock(), if ((height > freeInviteBlock))
433441 then (height + BLOCKSINDAY)
434442 else freeInviteBlock), DataEntry(getKeyFreeInviteCount(), if ((height > freeInviteBlock))
435443 then MAXFREEINVITE
436444 else (freeInviteCount - 1))]), TransferSet([ScriptTransfer(addressFromStringValue(account), if (if ((wavesBalance(addressFromStringValue(account)) == 0))
437445 then if ((freeInviteCount > 0))
438446 then true
439447 else (height > freeInviteBlock)
440448 else false)
441449 then i.fee
442450 else 0, unit)]))
443451 }
444452
445453
446454
447455 @Callable(i)
448456 func reportProject (item,data) = {
449457 let account = toBase58String(i.caller.bytes)
450458 WriteSet([DataEntry(getKeyItemAccReportData(item, account), data)])
451459 }
452460
453461
454462
455463 @Callable(i)
456464 func labsdonate (item,review) = {
457465 let account = toBase58String(i.caller.bytes)
458466 let pmt = extract(i.payment)
459467 if (isDefined(pmt.assetId))
460468 then throw("can use waves only at the moment")
461469 else if ((account != LABS))
462470 then throw("labs donation is allowed only for waves labs")
463471 else if ((getValueItemStatus(item) != BUYOUT))
464472 then throw("Investement has already done")
465473 else {
466474 let cnt = (getValueItemAccReviewsCnt(item, account) + 1)
467475 let newpositivefund = (getValueItemFundPositive(item) + pmt.amount)
468476 WriteSet([DataEntry(getKeyItemAccReviewsCnt(item, account), cnt), DataEntry(getKeyItemAccFundPositive(item, account), (getValueItemAccFundPositive(item, account) + pmt.amount)), DataEntry(getKeyItemFundPositive(item), newpositivefund), DataEntry(getKeyItemAccReviewText(item, account, toString(cnt)), review), DataEntry(getKeyItemAccReviewMode(item, account, toString(cnt)), POSITIVE), DataEntry(getKeyItemAccReviewTier(item, account, toString(cnt)), 5), DataEntry(getKeyBalance(getValueItemAuthor(item)), (getValueBalance(getValueItemAuthor(item)) + pmt.amount)), DataEntry(getKeyItemStatus(item), CASHOUT)])
469477 }
470478 }
471479
472480
473481
474482 @Callable(i)
475483 func changeStatus (item) = {
476484 let account = toBase58String(i.caller.bytes)
477485 if ((account != LABS))
478486 then throw("labs change is allowed only for waves labs")
479487 else WriteSet([DataEntry(getKeyItemStatus(item), CASHOUT)])
480488 }
481489
482490
483491
484492 @Callable(i)
485493 func donate (item,tier,mode,review) = {
486494 let account = toBase58String(i.caller.bytes)
487495 let pmt = extract(i.payment)
488496 if (isDefined(pmt.assetId))
489497 then throw("can use waves only at the moment")
490498 else {
491499 let cnt = (getValueItemAccReviewsCnt(item, account) + 1)
492500 let newnegativefund = (getValueItemFundNegative(item) + ((if ((mode == NEGATIVE))
493501 then 1
494502 else 0) * pmt.amount))
495503 let newpositivefund = (getValueItemFundPositive(item) + ((if ((mode == POSITIVE))
496504 then 1
497505 else 0) * pmt.amount))
498506 if ((getValueItemStatus(item) != FEATURED))
499507 then throw("The project hasn't accepted by community")
500508 else if ((height >= getValueItemCrowdExpiration(item)))
501509 then throw("The time for crowdfunding has expired")
502510 else if ((newnegativefund >= newpositivefund))
503511 then throw("Negative fund can't be higher than positive fund")
504512 else if (if ((mode != POSITIVE))
505513 then (mode != NEGATIVE)
506514 else false)
507515 then throw("Wrong mode parameter")
508516 else if ((getValueItemAuthor(item) == account))
509517 then throw("Can't donate own project")
510518 else if ((pmt.amount != TIERS[(tier - 1)]))
511519 then throw(("The payment must be equal to tier amount: " + toString(TIERS[(tier - 1)])))
512520 else WriteSet([DataEntry(getKeyItemAccReviewsCnt(item, account), cnt), DataEntry(getKeyItemAccFundPositive(item, account), (getValueItemAccFundPositive(item, account) + ((if ((mode == POSITIVE))
513521 then 1
514522 else 0) * pmt.amount))), DataEntry(getKeyItemAccFundNegative(item, account), (getValueItemAccFundNegative(item, account) + ((if ((mode == NEGATIVE))
515523 then 1
516524 else 0) * pmt.amount))), DataEntry(getKeyItemFundPositive(item), newpositivefund), DataEntry(getKeyItemFundNegative(item), newnegativefund), DataEntry(getKeyItemAccReviewText(item, account, toString(cnt)), review), DataEntry(getKeyItemAccReviewMode(item, account, toString(cnt)), mode), DataEntry(getKeyItemAccReviewTier(item, account, toString(cnt)), tier)])
517525 }
518526 }
519527
520528
521529
522530 @Callable(i)
523531 func whale (item) = {
524532 let account = toBase58String(i.caller.bytes)
525533 let pmt = extract(i.payment)
526534 if (isDefined(pmt.assetId))
527535 then throw("can use waves only at the moment")
528536 else if ((account != LABS))
529537 then throw("labs donation is allowed only for waves labs")
530538 else if ((getValueItemStatus(item) != FEATURED))
531539 then throw("The project hasn't accepted by community")
532540 else if ((getValueItemCrowdExpiration(item) > height))
533541 then throw("The time for crowdfunding has not expired yet")
534542 else if ((height > getValueItemWhaleExpiration(item)))
535543 then throw("The time for grant has expired")
536544 else if ((getValueItemStatus(item) == BUYOUT))
537545 then throw("Investement has already done")
538546 else if ((pmt.amount != ((getValueItemFundPositive(item) * MULTIPLIER) / 100)))
539547 then throw((("Investement must be more than " + toString(MULTIPLIER)) + "% of supportes funds"))
540548 else WriteSet([DataEntry(getKeyItemStatus(item), BUYOUT), DataEntry(getKeyBalance(getValueItemAuthor(item)), (getValueBalance(getValueItemAuthor(item)) + getValueItemFundPositive(item))), DataEntry(getKeyItemBuyoutAmount(item), pmt.amount), DataEntry(getKeyItemAccFinal(item, getValueItemAuthor(item)), CLAIMED)])
541549 }
542550
543551
544552
545553 @Callable(i)
546554 func claimwinnings (item,account) = {
547555 let status = getValueItemStatus(item)
548556 let isbayout = if ((status == BUYOUT))
549557 then 1
550558 else 0
551559 let iscrowdf = if ((status != BUYOUT))
552560 then 1
553561 else 0
554562 let positivefund = (getValueItemFundPositive(item) - getValueItemAccFundPositive(item, LABS))
555563 let negativefund = getValueItemFundNegative(item)
556564 let share = (((isbayout * (getValueItemAccFundPositive(item, account) * 100)) / (if ((0 >= positivefund))
557565 then 1
558566 else positivefund)) + ((iscrowdf * (getValueItemAccFundNegative(item, account) * 100)) / (if ((0 >= negativefund))
559567 then 1
560568 else negativefund)))
561569 let tmpnegwin = ((negativefund * MULTIPLIER) / 100)
562570 let betprofit = ((isbayout * ((share * negativefund) / 100)) + (iscrowdf * ((share * (if ((positivefund > tmpnegwin))
563571 then tmpnegwin
564572 else positivefund)) / 100)))
565573 let roiprofit = (isbayout * ((getValueItemAccFundPositive(item, account) * MULTIPLIER) / 100))
566574 let authorprofit = ((iscrowdf * (if ((getValueItemAuthor(item) == account))
567575 then 1
568576 else 0)) * (if ((positivefund > tmpnegwin))
569577 then (positivefund - tmpnegwin)
570578 else 0))
571579 if ((toString(i.caller) != LABS))
572580 then throw("caller error")
573581 else if ((status == DELISTED))
574582 then throw("The project hasn't accepted by community")
575583 else if ((account == LABS))
576584 then throw("account error")
577585 else if ((getValueItemAccFinal(item, account) == CLAIMED))
578586 then throw("Status is claimed")
579587 else if (if (if ((roiprofit == 0))
580588 then (betprofit == 0)
581589 else false)
582590 then (authorprofit == 0)
583591 else false)
584592 then throw("The share equals zero")
585593 else if (if ((status != BUYOUT))
586594 then (getValueItemWhaleExpiration(item) >= height)
587595 else false)
588596 then throw("The time for grant has not expired yet")
589597 else if ((0 >= (positivefund + negativefund)))
590598 then throw("The campaign wasn't active")
591599 else WriteSet([DataEntry(getKeyBalance(account), (((getValueBalance(account) + betprofit) + roiprofit) + authorprofit)), DataEntry(getKeyItemAccFinal(item, account), CLAIMED)])
592600 }
593601
594602
595603
596604 @Callable(i)
597605 func transfer (account) = {
598606 let pmt = extract(i.payment)
599607 if (isDefined(pmt.assetId))
600608 then throw("can use waves only at the moment")
601609 else TransferSet([ScriptTransfer(addressFromStringValue(account), pmt.amount, unit)])
602610 }
603611
604612

github/deemru/w8io/6500d08 
97.21 ms