tx · HNg8hxQRWc1sgUEyEwNmKNPmkJvRe5sPhQ9zQh6yaWzw

3NBB3iv7YDRsD8ZM2Pw2V5eTcsfqh3j2mvF:  -0.01400000 Waves

2019.10.08 19:18 [711064] smart account 3NBB3iv7YDRsD8ZM2Pw2V5eTcsfqh3j2mvF > SELF 0.00000000 Waves

{ "type": 13, "id": "HNg8hxQRWc1sgUEyEwNmKNPmkJvRe5sPhQ9zQh6yaWzw", "fee": 1400000, "feeAssetId": null, "timestamp": 1570551578807, "version": 1, "sender": "3NBB3iv7YDRsD8ZM2Pw2V5eTcsfqh3j2mvF", "senderPublicKey": "9i5FpMUFCwhogG5euZDBZKV6NehQN4xX83qvNr8NWipE", "proofs": [ "yhqtN7h2c31oUc5YkDd9rPiLN4B4Bnx6A3wiqhRTzHTF1bWAwWpRVb6mBNtrwgkXcCsozfTzHFpy2cSJSMHfc7M" ], "script": "base64:AAIDAAAAAAAAAF4IARIECgIICBIFCgMICAgSBAoCCAgSBAoCCAgSBAoCCAgSBAoCCAgSAwoBCBIHCgUIAQEBCBIECgIICBIECgIICBIDCgEIEgYKBAgBCAgSAwoBCBIECgIICBIDCgEIAAAAYQAAAAAETk9ORQIAAAAEbm9uZQEAAAAOZ2V0TnVtYmVyQnlLZXkAAAABAAAAA2tleQQAAAADbnVtBAAAAAckbWF0Y2gwCQAEGgAAAAIFAAAABHRoaXMFAAAAA2tleQMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAADSW50BAAAAAFhBQAAAAckbWF0Y2gwBQAAAAFhAAAAAAAAAAAABQAAAANudW0BAAAAC2dldFN0ckJ5S2V5AAAAAQAAAANrZXkEAAAAA3N0cgQAAAAHJG1hdGNoMAkABB0AAAACBQAAAAR0aGlzBQAAAANrZXkDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAABlN0cmluZwQAAAABYQUAAAAHJG1hdGNoMAUAAAABYQUAAAAETk9ORQUAAAADc3RyAQAAABJnZXRLZXlXaGl0ZWxpc3RSZWYAAAABAAAAB2FjY291bnQJAAEsAAAAAgIAAAAHd2xfcmVmXwUAAAAHYWNjb3VudAEAAAAVZ2V0S2V5V2hpdGVsaXN0U3RhdHVzAAAAAQAAAAdhY2NvdW50CQABLAAAAAICAAAAB3dsX3N0c18FAAAAB2FjY291bnQBAAAADWdldEtleUJhbGFuY2UAAAABAAAAB2FjY291bnQJAAEsAAAAAgIAAAAIYmFsYW5jZV8FAAAAB2FjY291bnQBAAAAEmdldEtleVdoaXRlbGlzdEJpbwAAAAEAAAAHYWNjb3VudAkAASwAAAACAgAAAAd3bF9iaW9fBQAAAAdhY2NvdW50AQAAABRnZXRLZXlXaGl0ZWxpc3RCbG9jawAAAAEAAAAHYWNjb3VudAkAASwAAAACAgAAAAd3bF9ibGtfBQAAAAdhY2NvdW50AQAAABBnZXRLZXlJdGVtQXV0aG9yAAAAAQAAAARpdGVtCQABLAAAAAICAAAAB2F1dGhvcl8FAAAABGl0ZW0BAAAAD2dldEtleUl0ZW1CbG9jawAAAAEAAAAEaXRlbQkAASwAAAACAgAAAAZibG9ja18FAAAABGl0ZW0BAAAAGmdldEtleUl0ZW1Wb3RpbmdFeHBpcmF0aW9uAAAAAQAAAARpdGVtCQABLAAAAAICAAAAEWV4cGlyYXRpb25fYmxvY2tfBQAAAARpdGVtAQAAAA5nZXRLZXlJdGVtQmFuawAAAAEAAAAEaXRlbQkAASwAAAACAgAAAAViYW5rXwUAAAAEaXRlbQEAAAAQZ2V0S2V5SXRlbVN0YXR1cwAAAAEAAAAEaXRlbQkAASwAAAACAgAAAAdzdGF0dXNfBQAAAARpdGVtAQAAAA5nZXRLZXlJdGVtRGF0YQAAAAEAAAAEaXRlbQkAASwAAAACAgAAAAlkYXRhanNvbl8FAAAABGl0ZW0BAAAAEWdldEtleUNvbnRlc3REYXRhAAAAAQAAAARpdGVtCQABLAAAAAICAAAAEWNvbnRlc3RfZGF0YWpzb25fBQAAAARpdGVtAQAAABlnZXRLZXlJdGVtQ3Jvd2RFeHBpcmF0aW9uAAAAAQAAAARpdGVtCQABLAAAAAICAAAAD2V4cGlyYXRpb25fb25lXwUAAAAEaXRlbQEAAAAZZ2V0S2V5SXRlbVdoYWxlRXhwaXJhdGlvbgAAAAEAAAAEaXRlbQkAASwAAAACAgAAAA9leHBpcmF0aW9uX3R3b18FAAAABGl0ZW0BAAAAEmdldEtleUl0ZW1OQ29tbWl0cwAAAAEAAAAEaXRlbQkAASwAAAACAgAAAAluY29tbWl0c18FAAAABGl0ZW0BAAAAF2dldEtleUl0ZW1BY2NSZXBvcnREYXRhAAAAAgAAAARpdGVtAAAAB2FjY291bnQJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAAB3JlcG9ydF8FAAAABGl0ZW0CAAAAAV8FAAAAB2FjY291bnQBAAAAE2dldEtleUl0ZW1BY2NDb21taXQAAAACAAAABGl0ZW0AAAAHYWNjb3VudAkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAHY29tbWl0XwUAAAAEaXRlbQIAAAABXwUAAAAHYWNjb3VudAEAAAATZ2V0S2V5SXRlbUFjY1JldmVhbAAAAAIAAAAEaXRlbQAAAAdhY2NvdW50CQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAdyZXZlYWxfBQAAAARpdGVtAgAAAAFfBQAAAAdhY2NvdW50AQAAABJnZXRLZXlJdGVtVm90ZXNZZXMAAAABAAAABGl0ZW0JAAEsAAAAAgIAAAAIY250X3llc18FAAAABGl0ZW0BAAAAEWdldEtleUl0ZW1Wb3Rlc05vAAAAAQAAAARpdGVtCQABLAAAAAICAAAAB2NudF9ub18FAAAABGl0ZW0BAAAAEmdldEtleUl0ZW1BY2NGaW5hbAAAAAIAAAAEaXRlbQAAAAdhY2NvdW50CQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAZmaW5hbF8FAAAABGl0ZW0CAAAAAV8FAAAAB2FjY291bnQBAAAAFmdldEtleUl0ZW1GdW5kUG9zaXRpdmUAAAABAAAABGl0ZW0JAAEsAAAAAgIAAAAOcG9zaXRpdmVfZnVuZF8FAAAABGl0ZW0BAAAAFmdldEtleUl0ZW1GdW5kTmVnYXRpdmUAAAABAAAABGl0ZW0JAAEsAAAAAgIAAAAObmVnYXRpdmVfZnVuZF8FAAAABGl0ZW0BAAAAGWdldEtleUl0ZW1BY2NGdW5kUG9zaXRpdmUAAAACAAAABGl0ZW0AAAAHYWNjb3VudAkAASwAAAACCQABLAAAAAIJAQAAABZnZXRLZXlJdGVtRnVuZFBvc2l0aXZlAAAAAQUAAAAEaXRlbQIAAAABXwUAAAAHYWNjb3VudAEAAAAZZ2V0S2V5SXRlbUFjY0Z1bmROZWdhdGl2ZQAAAAIAAAAEaXRlbQAAAAdhY2NvdW50CQABLAAAAAIJAAEsAAAAAgkBAAAAFmdldEtleUl0ZW1GdW5kTmVnYXRpdmUAAAABBQAAAARpdGVtAgAAAAFfBQAAAAdhY2NvdW50AQAAABdnZXRLZXlJdGVtQWNjUmV2aWV3c0NudAAAAAIAAAAEaXRlbQAAAAdhY2NvdW50CQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAxyZXZpZXdzX2NudF8FAAAABGl0ZW0CAAAAAV8FAAAAB2FjY291bnQBAAAAE2dldEtleUl0ZW1BY2NSZXZpZXcAAAACAAAABGl0ZW0AAAAHYWNjb3VudAkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAHcmV2aWV3XwUAAAAEaXRlbQIAAAABXwUAAAAHYWNjb3VudAEAAAASZ2V0S2V5VHJhbnNmZXJMaW5rAAAAAQAAAARoYXNoCQABLAAAAAICAAAADnRyYW5zZmVyX2xpbmtfBQAAAARoYXNoAQAAABdnZXRLZXlJdGVtQWNjUmV2aWV3VGV4dAAAAAMAAAAEaXRlbQAAAAdhY2NvdW50AAAAA2NudAkAASwAAAACCQABLAAAAAIJAQAAABNnZXRLZXlJdGVtQWNjUmV2aWV3AAAAAgUAAAAEaXRlbQUAAAAHYWNjb3VudAIAAAAJX3RleHRfaWQ6BQAAAANjbnQBAAAAF2dldEtleUl0ZW1BY2NSZXZpZXdNb2RlAAAAAwAAAARpdGVtAAAAB2FjY291bnQAAAADY250CQABLAAAAAIJAAEsAAAAAgkBAAAAE2dldEtleUl0ZW1BY2NSZXZpZXcAAAACBQAAAARpdGVtBQAAAAdhY2NvdW50AgAAAAlfbW9kZV9pZDoFAAAAA2NudAEAAAAXZ2V0S2V5SXRlbUFjY1Jldmlld1RpZXIAAAADAAAABGl0ZW0AAAAHYWNjb3VudAAAAANjbnQJAAEsAAAAAgkAASwAAAACCQEAAAATZ2V0S2V5SXRlbUFjY1JldmlldwAAAAIFAAAABGl0ZW0FAAAAB2FjY291bnQCAAAACV90aWVyX2lkOgUAAAADY250AQAAABtnZXRLZXlJdGVtQWNjVm90ZVJldmlld1RleHQAAAACAAAABGl0ZW0AAAAHYWNjb3VudAkAASwAAAACCQEAAAATZ2V0S2V5SXRlbUFjY1JldmlldwAAAAIFAAAABGl0ZW0FAAAAB2FjY291bnQCAAAAC192b3RlcmV2aWV3AQAAABxnZXRLZXlJdGVtQWNjV2hhbGVSZXZpZXdUZXh0AAAAAgAAAARpdGVtAAAAB2FjY291bnQJAAEsAAAAAgkBAAAAE2dldEtleUl0ZW1BY2NSZXZpZXcAAAACBQAAAARpdGVtBQAAAAdhY2NvdW50AgAAAAxfd2hhbGVyZXZpZXcBAAAAFmdldEtleUl0ZW1CdXlvdXRBbW91bnQAAAABAAAABGl0ZW0JAAEsAAAAAgIAAAAOYnV5b3V0X2Ftb3VudF8FAAAABGl0ZW0BAAAAFWdldEtleUl0ZW1BY2NXaW5uaW5ncwAAAAIAAAAEaXRlbQAAAAdhY2NvdW50CQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAl3aW5uaW5nc18FAAAABGl0ZW0CAAAAAV8FAAAAB2FjY291bnQBAAAAFWdldEtleUZyZWVJbnZpdGVDb3VudAAAAAACAAAAEWZyZWVfaW52aXRlX2NvdW50AQAAABVnZXRLZXlGcmVlSW52aXRlQmxvY2sAAAAAAgAAABFmcmVlX2ludml0ZV9ibG9jawEAAAAUZ2V0VmFsdWVXaGl0ZWxpc3RSZWYAAAABAAAAB2FjY291bnQJAQAAAAtnZXRTdHJCeUtleQAAAAEJAQAAABJnZXRLZXlXaGl0ZWxpc3RSZWYAAAABBQAAAAdhY2NvdW50AQAAABdnZXRWYWx1ZVdoaXRlbGlzdFN0YXR1cwAAAAEAAAAHYWNjb3VudAkBAAAAC2dldFN0ckJ5S2V5AAAAAQkBAAAAFWdldEtleVdoaXRlbGlzdFN0YXR1cwAAAAEFAAAAB2FjY291bnQBAAAAD2dldFZhbHVlQmFsYW5jZQAAAAEAAAAHYWNjb3VudAkBAAAADmdldE51bWJlckJ5S2V5AAAAAQkBAAAADWdldEtleUJhbGFuY2UAAAABBQAAAAdhY2NvdW50AQAAABRnZXRWYWx1ZVdoaXRlbGlzdEJpbwAAAAEAAAAHYWNjb3VudAkBAAAAC2dldFN0ckJ5S2V5AAAAAQkBAAAAEmdldEtleVdoaXRlbGlzdEJpbwAAAAEFAAAAB2FjY291bnQBAAAAFmdldFZhbHVlV2hpdGVsaXN0QmxvY2sAAAABAAAAB2FjY291bnQJAQAAAAtnZXRTdHJCeUtleQAAAAEJAQAAABRnZXRLZXlXaGl0ZWxpc3RCbG9jawAAAAEFAAAAB2FjY291bnQBAAAAEmdldFZhbHVlSXRlbUF1dGhvcgAAAAEAAAAEaXRlbQkBAAAAC2dldFN0ckJ5S2V5AAAAAQkBAAAAEGdldEtleUl0ZW1BdXRob3IAAAABBQAAAARpdGVtAQAAABFnZXRWYWx1ZUl0ZW1CbG9jawAAAAEAAAAEaXRlbQkBAAAADmdldE51bWJlckJ5S2V5AAAAAQkBAAAAD2dldEtleUl0ZW1CbG9jawAAAAEFAAAABGl0ZW0BAAAAHGdldFZhbHVlSXRlbVZvdGluZ0V4cGlyYXRpb24AAAABAAAABGl0ZW0JAQAAAA5nZXROdW1iZXJCeUtleQAAAAEJAQAAABpnZXRLZXlJdGVtVm90aW5nRXhwaXJhdGlvbgAAAAEFAAAABGl0ZW0BAAAAEGdldFZhbHVlSXRlbUJhbmsAAAABAAAABGl0ZW0JAQAAAA5nZXROdW1iZXJCeUtleQAAAAEJAQAAAA5nZXRLZXlJdGVtQmFuawAAAAEFAAAABGl0ZW0BAAAAEmdldFZhbHVlSXRlbVN0YXR1cwAAAAEAAAAEaXRlbQkBAAAAC2dldFN0ckJ5S2V5AAAAAQkBAAAAEGdldEtleUl0ZW1TdGF0dXMAAAABBQAAAARpdGVtAQAAABBnZXRWYWx1ZUl0ZW1EYXRhAAAAAQAAAARpdGVtCQEAAAALZ2V0U3RyQnlLZXkAAAABCQEAAAAOZ2V0S2V5SXRlbURhdGEAAAABBQAAAARpdGVtAQAAABtnZXRWYWx1ZUl0ZW1Dcm93ZEV4cGlyYXRpb24AAAABAAAABGl0ZW0JAQAAAA5nZXROdW1iZXJCeUtleQAAAAEJAQAAABlnZXRLZXlJdGVtQ3Jvd2RFeHBpcmF0aW9uAAAAAQUAAAAEaXRlbQEAAAAbZ2V0VmFsdWVJdGVtV2hhbGVFeHBpcmF0aW9uAAAAAQAAAARpdGVtCQEAAAAOZ2V0TnVtYmVyQnlLZXkAAAABCQEAAAAZZ2V0S2V5SXRlbVdoYWxlRXhwaXJhdGlvbgAAAAEFAAAABGl0ZW0BAAAAFGdldFZhbHVlSXRlbU5Db21taXRzAAAAAQAAAARpdGVtCQEAAAAOZ2V0TnVtYmVyQnlLZXkAAAABCQEAAAASZ2V0S2V5SXRlbU5Db21taXRzAAAAAQUAAAAEaXRlbQEAAAAVZ2V0VmFsdWVJdGVtQWNjQ29tbWl0AAAAAgAAAARpdGVtAAAAB2FjY291bnQJAQAAAAtnZXRTdHJCeUtleQAAAAEJAQAAABNnZXRLZXlJdGVtQWNjQ29tbWl0AAAAAgUAAAAEaXRlbQUAAAAHYWNjb3VudAEAAAAVZ2V0VmFsdWVJdGVtQWNjUmV2ZWFsAAAAAgAAAARpdGVtAAAAB2FjY291bnQJAQAAAAtnZXRTdHJCeUtleQAAAAEJAQAAABNnZXRLZXlJdGVtQWNjUmV2ZWFsAAAAAgUAAAAEaXRlbQUAAAAHYWNjb3VudAEAAAAUZ2V0VmFsdWVJdGVtVm90ZXNZZXMAAAABAAAABGl0ZW0JAQAAAA5nZXROdW1iZXJCeUtleQAAAAEJAQAAABJnZXRLZXlJdGVtVm90ZXNZZXMAAAABBQAAAARpdGVtAQAAABNnZXRWYWx1ZUl0ZW1Wb3Rlc05vAAAAAQAAAARpdGVtCQEAAAAOZ2V0TnVtYmVyQnlLZXkAAAABCQEAAAARZ2V0S2V5SXRlbVZvdGVzTm8AAAABBQAAAARpdGVtAQAAABRnZXRWYWx1ZUl0ZW1BY2NGaW5hbAAAAAIAAAAEaXRlbQAAAAdhY2NvdW50CQEAAAALZ2V0U3RyQnlLZXkAAAABCQEAAAASZ2V0S2V5SXRlbUFjY0ZpbmFsAAAAAgUAAAAEaXRlbQUAAAAHYWNjb3VudAEAAAAYZ2V0VmFsdWVJdGVtRnVuZFBvc2l0aXZlAAAAAQAAAARpdGVtCQEAAAAOZ2V0TnVtYmVyQnlLZXkAAAABCQEAAAAWZ2V0S2V5SXRlbUZ1bmRQb3NpdGl2ZQAAAAEFAAAABGl0ZW0BAAAAGGdldFZhbHVlSXRlbUZ1bmROZWdhdGl2ZQAAAAEAAAAEaXRlbQkBAAAADmdldE51bWJlckJ5S2V5AAAAAQkBAAAAFmdldEtleUl0ZW1GdW5kTmVnYXRpdmUAAAABBQAAAARpdGVtAQAAABtnZXRWYWx1ZUl0ZW1BY2NGdW5kUG9zaXRpdmUAAAACAAAABGl0ZW0AAAAHYWNjb3VudAkBAAAADmdldE51bWJlckJ5S2V5AAAAAQkBAAAAGWdldEtleUl0ZW1BY2NGdW5kUG9zaXRpdmUAAAACBQAAAARpdGVtBQAAAAdhY2NvdW50AQAAABtnZXRWYWx1ZUl0ZW1BY2NGdW5kTmVnYXRpdmUAAAACAAAABGl0ZW0AAAAHYWNjb3VudAkBAAAADmdldE51bWJlckJ5S2V5AAAAAQkBAAAAGWdldEtleUl0ZW1BY2NGdW5kTmVnYXRpdmUAAAACBQAAAARpdGVtBQAAAAdhY2NvdW50AQAAABlnZXRWYWx1ZUl0ZW1BY2NSZXZpZXdzQ250AAAAAgAAAARpdGVtAAAAB2FjY291bnQJAQAAAA5nZXROdW1iZXJCeUtleQAAAAEJAQAAABdnZXRLZXlJdGVtQWNjUmV2aWV3c0NudAAAAAIFAAAABGl0ZW0FAAAAB2FjY291bnQBAAAAGWdldFZhbHVlSXRlbUFjY1Jldmlld1RleHQAAAADAAAABGl0ZW0AAAAHYWNjb3VudAAAAANjbnQJAQAAAAtnZXRTdHJCeUtleQAAAAEJAQAAABdnZXRLZXlJdGVtQWNjUmV2aWV3VGV4dAAAAAMFAAAABGl0ZW0FAAAAB2FjY291bnQFAAAAA2NudAEAAAAZZ2V0VmFsdWVJdGVtQWNjUmV2aWV3TW9kZQAAAAMAAAAEaXRlbQAAAAdhY2NvdW50AAAAA2NudAkBAAAAC2dldFN0ckJ5S2V5AAAAAQkBAAAAF2dldEtleUl0ZW1BY2NSZXZpZXdNb2RlAAAAAwUAAAAEaXRlbQUAAAAHYWNjb3VudAUAAAADY250AQAAABlnZXRWYWx1ZUl0ZW1BY2NSZXZpZXdUaWVyAAAAAwAAAARpdGVtAAAAB2FjY291bnQAAAADY250CQEAAAAOZ2V0TnVtYmVyQnlLZXkAAAABCQEAAAAXZ2V0S2V5SXRlbUFjY1Jldmlld1RpZXIAAAADBQAAAARpdGVtBQAAAAdhY2NvdW50BQAAAANjbnQBAAAAGGdldFZhbHVlSXRlbUJ1eW91dEFtb3VudAAAAAEAAAAEaXRlbQkBAAAADmdldE51bWJlckJ5S2V5AAAAAQkBAAAAFmdldEtleUl0ZW1CdXlvdXRBbW91bnQAAAABBQAAAARpdGVtAQAAABdnZXRWYWx1ZUl0ZW1BY2NXaW5uaW5ncwAAAAIAAAAEaXRlbQAAAAdhY2NvdW50CQEAAAAOZ2V0TnVtYmVyQnlLZXkAAAABCQEAAAAVZ2V0S2V5SXRlbUFjY1dpbm5pbmdzAAAAAgUAAAAEaXRlbQUAAAAHYWNjb3VudAAAAAALV0hJVEVMSVNURUQCAAAACnJlZ2lzdGVyZWQAAAAAB0lOVklURUQCAAAAB2ludml0ZWQAAAAABVdIQUxFAgAAAAV3aGFsZQAAAAALU1BFTkRJTlZJVEUCAAAADHNwZW5kX2ludml0ZQAAAAAGQ09NTUlUAgAAAA12b3RpbmdfY29tbWl0AAAAAAZSRVZFQUwCAAAADXZvdGluZ19yZXZlYWwAAAAACEZFQVRVUkVEAgAAAAhmZWF0dXJlZAAAAAAIREVMSVNURUQCAAAACGRlbGlzdGVkAAAAAAdDQVNIT1VUAgAAAAdjYXNob3V0AAAAAAZCVVlPVVQCAAAABmJ1eW91dAAAAAAIRklOSVNIRUQCAAAACGZpbmlzaGVkAAAAAAdDTEFJTUVEAgAAAAdjbGFpbWVkAAAAAAhQT1NJVElWRQIAAAAIcG9zaXRpdmUAAAAACE5FR0FUSVZFAgAAAAhuZWdhdGl2ZQAAAAAHR0VORVNJUwIAAAAjM1A4RnZ5MXlEd05IdlZyYWJlNGVrNWI5ZEF3eEZqREtWN1IAAAAABUFETUlOAgAAACMzUDlORHh0OVk2ZVBmTTloa1F5c2dTdmJISnZpaHI1NloxOAAAAAAETEFCUwIAAAAjM1AzTVVDdkpqdmlKYXhNVWU3NDNMVmV6M3FUaGJMN1U4dVAAAAAABlZPVEVSUwAAAAAAAAAAAwAAAAAGUVVPUlVNAAAAAAAAAAACAAAAAAVUSUVSUwkABEwAAAACCQAAaAAAAAIAAAAAAAAAAAMAAAAAAAX14QAJAARMAAAAAgkAAGgAAAACAAAAAAAAAAAKAAAAAAAF9eEACQAETAAAAAIJAABoAAAAAgAAAAAAAAAAZAAAAAAABfXhAAkABEwAAAACCQAAaAAAAAIAAAAAAAAAASwAAAAAAAX14QAJAARMAAAAAgkAAGgAAAACAAAAAAAAAAPoAAAAAAAF9eEABQAAAANuaWwAAAAACkxJU1RJTkdGRUUJAABoAAAAAgAAAAAAAAAAAQAAAAAABfXhAAAAAAAHVk9URUJFVAkAAGgAAAACAAAAAAAAAAABAAAAAAAF9eEAAAAAAAtCTE9DS1NJTkRBWQAAAAAAAAAFoAAAAAAKTVVMVElQTElFUgAAAAAAAAAAlgAAAAANTUFYRlJFRUlOVklURQAAAAAAAAAAZAAAAAAJSU5WSVRFRkVFAAAAAAAAB6EgAAAAAA9mcmVlSW52aXRlQ291bnQJAQAAAA5nZXROdW1iZXJCeUtleQAAAAEJAQAAABVnZXRLZXlGcmVlSW52aXRlQ291bnQAAAAAAAAAAA9mcmVlSW52aXRlQmxvY2sJAQAAAA5nZXROdW1iZXJCeUtleQAAAAEJAQAAABVnZXRLZXlGcmVlSW52aXRlQmxvY2sAAAAAAAAADwAAAAFpAQAAAAppbnZpdGV1c2VyAAAAAgAAAApuZXdhY2NvdW50AAAABGRhdGEEAAAAB2FjY291bnQJAAJYAAAAAQgIBQAAAAFpAAAABmNhbGxlcgAAAAVieXRlcwQAAAAJbmV3c3RhdHVzCQEAAAAXZ2V0VmFsdWVXaGl0ZWxpc3RTdGF0dXMAAAABBQAAAApuZXdhY2NvdW50BAAAAApjdXJyc3RhdHVzCQEAAAAXZ2V0VmFsdWVXaGl0ZWxpc3RTdGF0dXMAAAABBQAAAAdhY2NvdW50AwMJAAAAAAAAAgUAAAAJbmV3c3RhdHVzBQAAAAtXSElURUxJU1RFRAYJAAAAAAAAAgUAAAAJbmV3c3RhdHVzBQAAAAVXSEFMRQkAAAIAAAABAgAAACBVc2VyIGhhcyBhbHJlYWR5IGJlZW4gcmVnaXN0ZXJlZAMDAwkBAAAAAiE9AAAAAgUAAAAKY3VycnN0YXR1cwUAAAALV0hJVEVMSVNURUQJAQAAAAIhPQAAAAIFAAAAB2FjY291bnQFAAAAB0dFTkVTSVMHCQEAAAACIT0AAAACBQAAAApjdXJyc3RhdHVzBQAAAAVXSEFMRQcJAAACAAAAAQkAASwAAAACAgAAACxZb3VyIGFjY291bnQgc2hvdWxkIGJlIHdoaXRlbGlzdGVkLiBzdGF0dXM6IAUAAAAKY3VycnN0YXR1cwkBAAAACFdyaXRlU2V0AAAAAQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkBAAAAEmdldEtleVdoaXRlbGlzdFJlZgAAAAEFAAAACm5ld2FjY291bnQFAAAAB2FjY291bnQJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAQAAABJnZXRLZXlXaGl0ZWxpc3RCaW8AAAABBQAAAApuZXdhY2NvdW50BQAAAARkYXRhCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQEAAAAVZ2V0S2V5V2hpdGVsaXN0U3RhdHVzAAAAAQUAAAAKbmV3YWNjb3VudAUAAAAHSU5WSVRFRAUAAAADbmlsAAAAAWkBAAAADHNpZ251cGJ5bGluawAAAAMAAAAEaGFzaAAAAARkYXRhAAAABHR5cGUEAAAAB2FjY291bnQJAAJYAAAAAQgIBQAAAAFpAAAABmNhbGxlcgAAAAVieXRlcwQAAAAGc3RhdHVzCQEAAAAXZ2V0VmFsdWVXaGl0ZWxpc3RTdGF0dXMAAAABBQAAAARoYXNoAwkBAAAAAiE9AAAAAgUAAAAGc3RhdHVzBQAAAAdJTlZJVEVECQAAAgAAAAEJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAChSZWZlcnJhbCBpbnZpdGUgbmVlZGVkLiBDdXJyZW50IHN0YXR1czogBQAAAAZzdGF0dXMCAAAABiwga2V5OgkBAAAAFWdldEtleVdoaXRlbGlzdFN0YXR1cwAAAAEFAAAABGhhc2gCAAAACiwgYWNjb3VudDoFAAAABGhhc2gJAQAAAAxTY3JpcHRSZXN1bHQAAAACCQEAAAAIV3JpdGVTZXQAAAABCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQEAAAASZ2V0S2V5V2hpdGVsaXN0QmlvAAAAAQUAAAAHYWNjb3VudAUAAAAEZGF0YQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkBAAAAFGdldEtleVdoaXRlbGlzdEJsb2NrAAAAAQUAAAAHYWNjb3VudAUAAAAGaGVpZ2h0CQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQEAAAAVZ2V0S2V5V2hpdGVsaXN0U3RhdHVzAAAAAQUAAAAHYWNjb3VudAMJAAAAAAAAAgUAAAAEdHlwZQUAAAAFV0hBTEUFAAAABVdIQUxFBQAAAAtXSElURUxJU1RFRAkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkBAAAAFWdldEtleVdoaXRlbGlzdFN0YXR1cwAAAAEFAAAABGhhc2gFAAAAC1NQRU5ESU5WSVRFCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQEAAAASZ2V0S2V5V2hpdGVsaXN0UmVmAAAAAQUAAAAHYWNjb3VudAkBAAAAFGdldFZhbHVlV2hpdGVsaXN0UmVmAAAAAQUAAAAEaGFzaAkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkBAAAAFWdldEtleUZyZWVJbnZpdGVCbG9jawAAAAADCQAAZgAAAAIFAAAABmhlaWdodAUAAAAPZnJlZUludml0ZUJsb2NrCQAAZAAAAAIFAAAABmhlaWdodAUAAAALQkxPQ0tTSU5EQVkFAAAAD2ZyZWVJbnZpdGVCbG9jawkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkBAAAAFWdldEtleUZyZWVJbnZp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", "chainId": 84, "height": 711064, "spentComplexity": 0 } View: original | compacted Prev: 7vnKfVCXK9gTDXKDvz6CCi43qrBybqQcZpH3ATv7QDe6 Next: 8Dtj1c2HfzuwuQsZfj258WNz7z6av1UX4mwWGgY9jfXL Diff:
OldNewDifferences
130130 func getKeyItemAccWinnings (item,account) = ((("winnings_" + item) + "_") + account)
131131
132132
133+func getKeyFreeInviteCount () = "free_invite_count"
134+
135+
136+func getKeyFreeInviteBlock () = "free_invite_block"
137+
138+
133139 func getValueWhitelistRef (account) = getStrByKey(getKeyWhitelistRef(account))
134140
135141
217223 func getValueItemAccWinnings (item,account) = getNumberByKey(getKeyItemAccWinnings(item, account))
218224
219225
220-func getTransferLink (hash) = getStrByKey(getKeyTransferLink(hash))
221-
222-
223226 let WHITELISTED = "registered"
224227
225228 let INVITED = "invited"
254257
255258 let LABS = "3P3MUCvJjviJaxMUe743LVez3qThbL7U8uP"
256259
257-let USDNAssetId = fromBase58String("HFihJLdaHxcfRykbmqXigTyi5XfWS8fHwPJaMBZ2f7t3")
258-
259260 let VOTERS = 3
260261
261262 let QUORUM = 2
266267
267268 let VOTEBET = (1 * 100000000)
268269
270+let BLOCKSINDAY = 1440
271+
269272 let MULTIPLIER = 150
270273
271-let SplitDataSymbol = "+"
274+let MAXFREEINVITE = 100
275+
276+let INVITEFEE = 500000
277+
278+let freeInviteCount = getNumberByKey(getKeyFreeInviteCount())
279+
280+let freeInviteBlock = getNumberByKey(getKeyFreeInviteBlock())
272281
273282 @Callable(i)
274283 func inviteuser (newaccount,data) = {
296305 let status = getValueWhitelistStatus(hash)
297306 if ((status != INVITED))
298307 then throw(((((("Referral invite needed. Current status: " + status) + ", key:") + getKeyWhitelistStatus(hash)) + ", account:") + hash))
299- else WriteSet([DataEntry(getKeyWhitelistBio(account), data), DataEntry(getKeyWhitelistBlock(account), height), DataEntry(getKeyWhitelistStatus(account), if ((type == WHALE))
308+ else ScriptResult(WriteSet([DataEntry(getKeyWhitelistBio(account), data), DataEntry(getKeyWhitelistBlock(account), height), DataEntry(getKeyWhitelistStatus(account), if ((type == WHALE))
300309 then WHALE
301- else WHITELISTED), DataEntry(getKeyWhitelistStatus(hash), SPENDINVITE), DataEntry(getKeyWhitelistRef(account), getValueWhitelistRef(hash))])
310+ else WHITELISTED), DataEntry(getKeyWhitelistStatus(hash), SPENDINVITE), DataEntry(getKeyWhitelistRef(account), getValueWhitelistRef(hash)), DataEntry(getKeyFreeInviteBlock(), if ((height > freeInviteBlock))
311+ then (height + BLOCKSINDAY)
312+ else freeInviteBlock), DataEntry(getKeyFreeInviteCount(), if ((height > freeInviteBlock))
313+ then MAXFREEINVITE
314+ else (freeInviteCount - 1))]), TransferSet([ScriptTransfer(addressFromStringValue(account), if (if ((wavesBalance(addressFromStringValue(account)) == 0))
315+ then (freeInviteCount > 0)
316+ else false)
317+ then INVITEFEE
318+ else 0, unit)]))
302319 }
303320
304321
319336 @Callable(i)
320337 func userupdate (data,type) = {
321338 let account = toBase58String(i.caller.bytes)
322- WriteSet([DataEntry(getKeyWhitelistBio(account), data), DataEntry(getKeyWhitelistStatus(account), if ((type == WHALE))
323- then WHALE
324- else WHITELISTED)])
339+ if ((getKeyWhitelistBio(account) == NONE))
340+ then throw("user not signup")
341+ else WriteSet([DataEntry(getKeyWhitelistBio(account), data), DataEntry(getKeyWhitelistStatus(account), if ((type == WHALE))
342+ then WHALE
343+ else WHITELISTED)])
325344 }
326345
327346
351370 let amount = getValueBalance(address)
352371 if ((0 >= amount))
353372 then throw("Not enough balance")
354- else ScriptResult(WriteSet([DataEntry(getKeyBalance(address), 0)]), TransferSet([ScriptTransfer(addressFromStringValue(address), amount, USDNAssetId)]))
373+ else ScriptResult(WriteSet([DataEntry(getKeyBalance(address), 0)]), TransferSet([ScriptTransfer(addressFromStringValue(address), amount, unit)]))
355374 }
356375
357376
360379 func additem (item,expVoting,expCrowd,expWhale,data) = {
361380 let account = toBase58String(i.caller.bytes)
362381 let pmt = extract(i.payment)
363- if ((pmt.assetId != USDNAssetId))
364- then throw("can use usd-n only at the moment")
382+ if (isDefined(pmt.assetId))
383+ then throw("can use waves only at the moment")
365384 else if ((pmt.amount != LISTINGFEE))
366385 then throw(((("Please pay exact amount for the listing: " + toString(LISTINGFEE)) + ", actual payment is: ") + toString(pmt.amount)))
367386 else if (!(if (if ((expVoting > 2))
389408 func labsdonate (item,review) = {
390409 let account = toBase58String(i.caller.bytes)
391410 let pmt = extract(i.payment)
392- if ((pmt.assetId != USDNAssetId))
393- then throw("can use usd-n only at the moment")
411+ if (isDefined(pmt.assetId))
412+ then throw("can use waves only at the moment")
394413 else if ((account != LABS))
395414 then throw("labs donation is allowed only for waves labs")
396415 else if ((getValueItemStatus(item) != BUYOUT))
418437 func donate (item,tier,mode,review) = {
419438 let account = toBase58String(i.caller.bytes)
420439 let pmt = extract(i.payment)
421- if ((pmt.assetId != USDNAssetId))
422- then throw("can use usd-n only at the moment")
440+ if (isDefined(pmt.assetId))
441+ then throw("can use waves only at the moment")
423442 else {
424443 let cnt = (getValueItemAccReviewsCnt(item, account) + 1)
425444 let newnegativefund = (getValueItemFundNegative(item) + ((if ((mode == NEGATIVE))
456475 func whale (item) = {
457476 let account = toBase58String(i.caller.bytes)
458477 let pmt = extract(i.payment)
459- if ((pmt.assetId != USDNAssetId))
460- then throw("can use usd-n only at the moment")
478+ if (isDefined(pmt.assetId))
479+ then throw("can use waves only at the moment")
461480 else if ((account != LABS))
462481 then throw("labs donation is allowed only for waves labs")
463482 else if ((getValueItemStatus(item) != FEATURED))
529548 @Callable(i)
530549 func transfer (account) = {
531550 let pmt = extract(i.payment)
532- if (isDefined((pmt.assetId != USDNAssetId)))
533- then throw("can use usd-n only at the moment")
534- else TransferSet([ScriptTransfer(addressFromStringValue(account), pmt.amount, USDNAssetId)])
551+ if (isDefined(pmt.assetId))
552+ then throw("can use waves only at the moment")
553+ else TransferSet([ScriptTransfer(addressFromStringValue(account), pmt.amount, unit)])
535554 }
536555
537556
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
133+func getKeyFreeInviteCount () = "free_invite_count"
134+
135+
136+func getKeyFreeInviteBlock () = "free_invite_block"
137+
138+
133139 func getValueWhitelistRef (account) = getStrByKey(getKeyWhitelistRef(account))
134140
135141
136142 func getValueWhitelistStatus (account) = getStrByKey(getKeyWhitelistStatus(account))
137143
138144
139145 func getValueBalance (account) = getNumberByKey(getKeyBalance(account))
140146
141147
142148 func getValueWhitelistBio (account) = getStrByKey(getKeyWhitelistBio(account))
143149
144150
145151 func getValueWhitelistBlock (account) = getStrByKey(getKeyWhitelistBlock(account))
146152
147153
148154 func getValueItemAuthor (item) = getStrByKey(getKeyItemAuthor(item))
149155
150156
151157 func getValueItemBlock (item) = getNumberByKey(getKeyItemBlock(item))
152158
153159
154160 func getValueItemVotingExpiration (item) = getNumberByKey(getKeyItemVotingExpiration(item))
155161
156162
157163 func getValueItemBank (item) = getNumberByKey(getKeyItemBank(item))
158164
159165
160166 func getValueItemStatus (item) = getStrByKey(getKeyItemStatus(item))
161167
162168
163169 func getValueItemData (item) = getStrByKey(getKeyItemData(item))
164170
165171
166172 func getValueItemCrowdExpiration (item) = getNumberByKey(getKeyItemCrowdExpiration(item))
167173
168174
169175 func getValueItemWhaleExpiration (item) = getNumberByKey(getKeyItemWhaleExpiration(item))
170176
171177
172178 func getValueItemNCommits (item) = getNumberByKey(getKeyItemNCommits(item))
173179
174180
175181 func getValueItemAccCommit (item,account) = getStrByKey(getKeyItemAccCommit(item, account))
176182
177183
178184 func getValueItemAccReveal (item,account) = getStrByKey(getKeyItemAccReveal(item, account))
179185
180186
181187 func getValueItemVotesYes (item) = getNumberByKey(getKeyItemVotesYes(item))
182188
183189
184190 func getValueItemVotesNo (item) = getNumberByKey(getKeyItemVotesNo(item))
185191
186192
187193 func getValueItemAccFinal (item,account) = getStrByKey(getKeyItemAccFinal(item, account))
188194
189195
190196 func getValueItemFundPositive (item) = getNumberByKey(getKeyItemFundPositive(item))
191197
192198
193199 func getValueItemFundNegative (item) = getNumberByKey(getKeyItemFundNegative(item))
194200
195201
196202 func getValueItemAccFundPositive (item,account) = getNumberByKey(getKeyItemAccFundPositive(item, account))
197203
198204
199205 func getValueItemAccFundNegative (item,account) = getNumberByKey(getKeyItemAccFundNegative(item, account))
200206
201207
202208 func getValueItemAccReviewsCnt (item,account) = getNumberByKey(getKeyItemAccReviewsCnt(item, account))
203209
204210
205211 func getValueItemAccReviewText (item,account,cnt) = getStrByKey(getKeyItemAccReviewText(item, account, cnt))
206212
207213
208214 func getValueItemAccReviewMode (item,account,cnt) = getStrByKey(getKeyItemAccReviewMode(item, account, cnt))
209215
210216
211217 func getValueItemAccReviewTier (item,account,cnt) = getNumberByKey(getKeyItemAccReviewTier(item, account, cnt))
212218
213219
214220 func getValueItemBuyoutAmount (item) = getNumberByKey(getKeyItemBuyoutAmount(item))
215221
216222
217223 func getValueItemAccWinnings (item,account) = getNumberByKey(getKeyItemAccWinnings(item, account))
218224
219225
220-func getTransferLink (hash) = getStrByKey(getKeyTransferLink(hash))
221-
222-
223226 let WHITELISTED = "registered"
224227
225228 let INVITED = "invited"
226229
227230 let WHALE = "whale"
228231
229232 let SPENDINVITE = "spend_invite"
230233
231234 let COMMIT = "voting_commit"
232235
233236 let REVEAL = "voting_reveal"
234237
235238 let FEATURED = "featured"
236239
237240 let DELISTED = "delisted"
238241
239242 let CASHOUT = "cashout"
240243
241244 let BUYOUT = "buyout"
242245
243246 let FINISHED = "finished"
244247
245248 let CLAIMED = "claimed"
246249
247250 let POSITIVE = "positive"
248251
249252 let NEGATIVE = "negative"
250253
251254 let GENESIS = "3P8Fvy1yDwNHvVrabe4ek5b9dAwxFjDKV7R"
252255
253256 let ADMIN = "3P9NDxt9Y6ePfM9hkQysgSvbHJvihr56Z18"
254257
255258 let LABS = "3P3MUCvJjviJaxMUe743LVez3qThbL7U8uP"
256259
257-let USDNAssetId = fromBase58String("HFihJLdaHxcfRykbmqXigTyi5XfWS8fHwPJaMBZ2f7t3")
258-
259260 let VOTERS = 3
260261
261262 let QUORUM = 2
262263
263264 let TIERS = [(3 * 100000000), (10 * 100000000), (100 * 100000000), (300 * 100000000), (1000 * 100000000)]
264265
265266 let LISTINGFEE = (1 * 100000000)
266267
267268 let VOTEBET = (1 * 100000000)
268269
270+let BLOCKSINDAY = 1440
271+
269272 let MULTIPLIER = 150
270273
271-let SplitDataSymbol = "+"
274+let MAXFREEINVITE = 100
275+
276+let INVITEFEE = 500000
277+
278+let freeInviteCount = getNumberByKey(getKeyFreeInviteCount())
279+
280+let freeInviteBlock = getNumberByKey(getKeyFreeInviteBlock())
272281
273282 @Callable(i)
274283 func inviteuser (newaccount,data) = {
275284 let account = toBase58String(i.caller.bytes)
276285 let newstatus = getValueWhitelistStatus(newaccount)
277286 let currstatus = getValueWhitelistStatus(account)
278287 if (if ((newstatus == WHITELISTED))
279288 then true
280289 else (newstatus == WHALE))
281290 then throw("User has already been registered")
282291 else if (if (if ((currstatus != WHITELISTED))
283292 then (account != GENESIS)
284293 else false)
285294 then (currstatus != WHALE)
286295 else false)
287296 then throw(("Your account should be whitelisted. status: " + currstatus))
288297 else WriteSet([DataEntry(getKeyWhitelistRef(newaccount), account), DataEntry(getKeyWhitelistBio(newaccount), data), DataEntry(getKeyWhitelistStatus(newaccount), INVITED)])
289298 }
290299
291300
292301
293302 @Callable(i)
294303 func signupbylink (hash,data,type) = {
295304 let account = toBase58String(i.caller.bytes)
296305 let status = getValueWhitelistStatus(hash)
297306 if ((status != INVITED))
298307 then throw(((((("Referral invite needed. Current status: " + status) + ", key:") + getKeyWhitelistStatus(hash)) + ", account:") + hash))
299- else WriteSet([DataEntry(getKeyWhitelistBio(account), data), DataEntry(getKeyWhitelistBlock(account), height), DataEntry(getKeyWhitelistStatus(account), if ((type == WHALE))
308+ else ScriptResult(WriteSet([DataEntry(getKeyWhitelistBio(account), data), DataEntry(getKeyWhitelistBlock(account), height), DataEntry(getKeyWhitelistStatus(account), if ((type == WHALE))
300309 then WHALE
301- else WHITELISTED), DataEntry(getKeyWhitelistStatus(hash), SPENDINVITE), DataEntry(getKeyWhitelistRef(account), getValueWhitelistRef(hash))])
310+ else WHITELISTED), DataEntry(getKeyWhitelistStatus(hash), SPENDINVITE), DataEntry(getKeyWhitelistRef(account), getValueWhitelistRef(hash)), DataEntry(getKeyFreeInviteBlock(), if ((height > freeInviteBlock))
311+ then (height + BLOCKSINDAY)
312+ else freeInviteBlock), DataEntry(getKeyFreeInviteCount(), if ((height > freeInviteBlock))
313+ then MAXFREEINVITE
314+ else (freeInviteCount - 1))]), TransferSet([ScriptTransfer(addressFromStringValue(account), if (if ((wavesBalance(addressFromStringValue(account)) == 0))
315+ then (freeInviteCount > 0)
316+ else false)
317+ then INVITEFEE
318+ else 0, unit)]))
302319 }
303320
304321
305322
306323 @Callable(i)
307324 func signup (data,type) = {
308325 let account = toBase58String(i.caller.bytes)
309326 let status = getValueWhitelistStatus(account)
310327 if ((status == NONE))
311328 then throw(((((("Referral invite needed. Current status: " + status) + ", key:") + getKeyWhitelistStatus(account)) + ", account:") + account))
312329 else WriteSet([DataEntry(getKeyWhitelistBio(account), data), DataEntry(getKeyWhitelistBlock(account), height), DataEntry(getKeyWhitelistStatus(account), if ((type == WHALE))
313330 then WHALE
314331 else WHITELISTED)])
315332 }
316333
317334
318335
319336 @Callable(i)
320337 func userupdate (data,type) = {
321338 let account = toBase58String(i.caller.bytes)
322- WriteSet([DataEntry(getKeyWhitelistBio(account), data), DataEntry(getKeyWhitelistStatus(account), if ((type == WHALE))
323- then WHALE
324- else WHITELISTED)])
339+ if ((getKeyWhitelistBio(account) == NONE))
340+ then throw("user not signup")
341+ else WriteSet([DataEntry(getKeyWhitelistBio(account), data), DataEntry(getKeyWhitelistStatus(account), if ((type == WHALE))
342+ then WHALE
343+ else WHITELISTED)])
325344 }
326345
327346
328347
329348 @Callable(i)
330349 func projupdate (item,data) = {
331350 let account = toBase58String(i.caller.bytes)
332351 if ((getValueItemAuthor(item) != account))
333352 then throw("You're not author")
334353 else WriteSet([DataEntry(getKeyItemData(item), data)])
335354 }
336355
337356
338357
339358 @Callable(i)
340359 func contestAddOrUpdate (item,data) = {
341360 let account = toBase58String(i.caller.bytes)
342361 if ((account != ADMIN))
343362 then throw("You're not admin")
344363 else WriteSet([DataEntry(getKeyContestData(item), data)])
345364 }
346365
347366
348367
349368 @Callable(i)
350369 func withdraw (address) = {
351370 let amount = getValueBalance(address)
352371 if ((0 >= amount))
353372 then throw("Not enough balance")
354- else ScriptResult(WriteSet([DataEntry(getKeyBalance(address), 0)]), TransferSet([ScriptTransfer(addressFromStringValue(address), amount, USDNAssetId)]))
373+ else ScriptResult(WriteSet([DataEntry(getKeyBalance(address), 0)]), TransferSet([ScriptTransfer(addressFromStringValue(address), amount, unit)]))
355374 }
356375
357376
358377
359378 @Callable(i)
360379 func additem (item,expVoting,expCrowd,expWhale,data) = {
361380 let account = toBase58String(i.caller.bytes)
362381 let pmt = extract(i.payment)
363- if ((pmt.assetId != USDNAssetId))
364- then throw("can use usd-n only at the moment")
382+ if (isDefined(pmt.assetId))
383+ then throw("can use waves only at the moment")
365384 else if ((pmt.amount != LISTINGFEE))
366385 then throw(((("Please pay exact amount for the listing: " + toString(LISTINGFEE)) + ", actual payment is: ") + toString(pmt.amount)))
367386 else if (!(if (if ((expVoting > 2))
368387 then (expCrowd > expVoting)
369388 else false)
370389 then (expWhale > expCrowd)
371390 else false))
372391 then throw("Incorrect time parameters")
373392 else if ((getValueItemAuthor(item) != NONE))
374393 then throw("Item already exist")
375394 else WriteSet([DataEntry(getKeyItemAuthor(item), account), DataEntry(getKeyItemBlock(item), height), DataEntry(getKeyItemVotingExpiration(item), (height + expVoting)), DataEntry(getKeyItemBank(item), LISTINGFEE), DataEntry(getKeyItemStatus(item), FEATURED), DataEntry(getKeyItemData(item), data), DataEntry(getKeyItemCrowdExpiration(item), (height + expCrowd)), DataEntry(getKeyItemWhaleExpiration(item), (height + expWhale))])
376395 }
377396
378397
379398
380399 @Callable(i)
381400 func reportProject (item,data) = {
382401 let account = toBase58String(i.caller.bytes)
383402 WriteSet([DataEntry(getKeyItemAccReportData(item, account), data)])
384403 }
385404
386405
387406
388407 @Callable(i)
389408 func labsdonate (item,review) = {
390409 let account = toBase58String(i.caller.bytes)
391410 let pmt = extract(i.payment)
392- if ((pmt.assetId != USDNAssetId))
393- then throw("can use usd-n only at the moment")
411+ if (isDefined(pmt.assetId))
412+ then throw("can use waves only at the moment")
394413 else if ((account != LABS))
395414 then throw("labs donation is allowed only for waves labs")
396415 else if ((getValueItemStatus(item) != BUYOUT))
397416 then throw("Investement has already done")
398417 else {
399418 let cnt = (getValueItemAccReviewsCnt(item, account) + 1)
400419 let newpositivefund = (getValueItemFundPositive(item) + pmt.amount)
401420 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)])
402421 }
403422 }
404423
405424
406425
407426 @Callable(i)
408427 func changeStatus (item) = {
409428 let account = toBase58String(i.caller.bytes)
410429 if ((account != LABS))
411430 then throw("labs change is allowed only for waves labs")
412431 else WriteSet([DataEntry(getKeyItemStatus(item), CASHOUT)])
413432 }
414433
415434
416435
417436 @Callable(i)
418437 func donate (item,tier,mode,review) = {
419438 let account = toBase58String(i.caller.bytes)
420439 let pmt = extract(i.payment)
421- if ((pmt.assetId != USDNAssetId))
422- then throw("can use usd-n only at the moment")
440+ if (isDefined(pmt.assetId))
441+ then throw("can use waves only at the moment")
423442 else {
424443 let cnt = (getValueItemAccReviewsCnt(item, account) + 1)
425444 let newnegativefund = (getValueItemFundNegative(item) + ((if ((mode == NEGATIVE))
426445 then 1
427446 else 0) * pmt.amount))
428447 let newpositivefund = (getValueItemFundPositive(item) + ((if ((mode == POSITIVE))
429448 then 1
430449 else 0) * pmt.amount))
431450 if ((getValueItemStatus(item) != FEATURED))
432451 then throw("The project hasn't accepted by community")
433452 else if ((height >= getValueItemCrowdExpiration(item)))
434453 then throw("The time for crowdfunding has expired")
435454 else if ((newnegativefund >= newpositivefund))
436455 then throw("Negative fund can't be higher than positive fund")
437456 else if (if ((mode != POSITIVE))
438457 then (mode != NEGATIVE)
439458 else false)
440459 then throw("Wrong mode parameter")
441460 else if ((getValueItemAuthor(item) == account))
442461 then throw("Can't donate own project")
443462 else if ((pmt.amount != TIERS[(tier - 1)]))
444463 then throw(("The payment must be equal to tier amount: " + toString(TIERS[(tier - 1)])))
445464 else WriteSet([DataEntry(getKeyItemAccReviewsCnt(item, account), cnt), DataEntry(getKeyItemAccFundPositive(item, account), (getValueItemAccFundPositive(item, account) + ((if ((mode == POSITIVE))
446465 then 1
447466 else 0) * pmt.amount))), DataEntry(getKeyItemAccFundNegative(item, account), (getValueItemAccFundNegative(item, account) + ((if ((mode == NEGATIVE))
448467 then 1
449468 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)])
450469 }
451470 }
452471
453472
454473
455474 @Callable(i)
456475 func whale (item) = {
457476 let account = toBase58String(i.caller.bytes)
458477 let pmt = extract(i.payment)
459- if ((pmt.assetId != USDNAssetId))
460- then throw("can use usd-n only at the moment")
478+ if (isDefined(pmt.assetId))
479+ then throw("can use waves only at the moment")
461480 else if ((account != LABS))
462481 then throw("labs donation is allowed only for waves labs")
463482 else if ((getValueItemStatus(item) != FEATURED))
464483 then throw("The project hasn't accepted by community")
465484 else if ((getValueItemCrowdExpiration(item) > height))
466485 then throw("The time for crowdfunding has not expired yet")
467486 else if ((height > getValueItemWhaleExpiration(item)))
468487 then throw("The time for grant has expired")
469488 else if ((getValueItemStatus(item) == BUYOUT))
470489 then throw("Investement has already done")
471490 else if ((pmt.amount != ((getValueItemFundPositive(item) * MULTIPLIER) / 100)))
472491 then throw((("Investement must be more than " + toString(MULTIPLIER)) + "% of supportes funds"))
473492 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)])
474493 }
475494
476495
477496
478497 @Callable(i)
479498 func claimwinnings (item,account) = {
480499 let status = getValueItemStatus(item)
481500 let isbayout = if ((status == BUYOUT))
482501 then 1
483502 else 0
484503 let iscrowdf = if ((status != BUYOUT))
485504 then 1
486505 else 0
487506 let positivefund = (getValueItemFundPositive(item) - getValueItemAccFundPositive(item, LABS))
488507 let negativefund = getValueItemFundNegative(item)
489508 let share = (((isbayout * (getValueItemAccFundPositive(item, account) * 100)) / (if ((0 >= positivefund))
490509 then 1
491510 else positivefund)) + ((iscrowdf * (getValueItemAccFundNegative(item, account) * 100)) / (if ((0 >= negativefund))
492511 then 1
493512 else negativefund)))
494513 let tmpnegwin = ((negativefund * MULTIPLIER) / 100)
495514 let betprofit = ((isbayout * ((share * negativefund) / 100)) + (iscrowdf * ((share * (if ((positivefund > tmpnegwin))
496515 then tmpnegwin
497516 else positivefund)) / 100)))
498517 let roiprofit = (isbayout * ((getValueItemAccFundPositive(item, account) * MULTIPLIER) / 100))
499518 let authorprofit = ((iscrowdf * (if ((getValueItemAuthor(item) == account))
500519 then 1
501520 else 0)) * (if ((positivefund > tmpnegwin))
502521 then (positivefund - tmpnegwin)
503522 else 0))
504523 if ((toString(i.caller) != LABS))
505524 then throw("caller error")
506525 else if ((status == DELISTED))
507526 then throw("The project hasn't accepted by community")
508527 else if ((account == LABS))
509528 then throw("account error")
510529 else if ((getValueItemAccFinal(item, account) == CLAIMED))
511530 then throw("Status is claimed")
512531 else if (if (if ((roiprofit == 0))
513532 then (betprofit == 0)
514533 else false)
515534 then (authorprofit == 0)
516535 else false)
517536 then throw("The share equals zero")
518537 else if (if ((status != BUYOUT))
519538 then (getValueItemWhaleExpiration(item) >= height)
520539 else false)
521540 then throw("The time for grant has not expired yet")
522541 else if ((0 >= (positivefund + negativefund)))
523542 then throw("The campaign wasn't active")
524543 else WriteSet([DataEntry(getKeyBalance(account), (((getValueBalance(account) + betprofit) + roiprofit) + authorprofit)), DataEntry(getKeyItemAccFinal(item, account), CLAIMED)])
525544 }
526545
527546
528547
529548 @Callable(i)
530549 func transfer (account) = {
531550 let pmt = extract(i.payment)
532- if (isDefined((pmt.assetId != USDNAssetId)))
533- then throw("can use usd-n only at the moment")
534- else TransferSet([ScriptTransfer(addressFromStringValue(account), pmt.amount, USDNAssetId)])
551+ if (isDefined(pmt.assetId))
552+ then throw("can use waves only at the moment")
553+ else TransferSet([ScriptTransfer(addressFromStringValue(account), pmt.amount, unit)])
535554 }
536555
537556

github/deemru/w8io/3ef1775 
208.27 ms