tx · 8JnnV3Q9tgshp9pc33FRtP5fzJt8HrhCzgUydsFRVXDT

3PLFZ6T6AhuzZ9SMoFpHBx91oFyy68a3GCt:  -0.01400000 Waves

2019.09.19 22:57 [1713689] smart account 3PLFZ6T6AhuzZ9SMoFpHBx91oFyy68a3GCt > SELF 0.00000000 Waves

{ "type": 13, "id": "8JnnV3Q9tgshp9pc33FRtP5fzJt8HrhCzgUydsFRVXDT", "fee": 1400000, "feeAssetId": null, "timestamp": 1568923085473, "version": 1, "sender": "3PLFZ6T6AhuzZ9SMoFpHBx91oFyy68a3GCt", "senderPublicKey": "Asi3vKEqgmq2AuW1fky6nxPgx65gB8esHy3DGsubEbkw", "proofs": [ "XXnFA6VVUC3dAB7WYmN5s9rmQrPcpQSrULaE2s7KC2pcfMX577s4DqUo69kHbVprwCM3aKPxMn9Dy1DuJXREYWE" ], "script": "base64:AAIDAAAAAAAAAAAAAABqAAAAAAROT05FAgAAAARub25lAQAAAA5nZXROdW1iZXJCeUtleQAAAAEAAAADa2V5BAAAAANudW0EAAAAByRtYXRjaDAJAAQaAAAAAgUAAAAEdGhpcwUAAAADa2V5AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAANJbnQEAAAAAWEFAAAAByRtYXRjaDAFAAAAAWEAAAAAAAAAAAAFAAAAA251bQEAAAALZ2V0U3RyQnlLZXkAAAABAAAAA2tleQQAAAADc3RyBAAAAAckbWF0Y2gwCQAEHQAAAAIFAAAABHRoaXMFAAAAA2tleQMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAGU3RyaW5nBAAAAAFhBQAAAAckbWF0Y2gwBQAAAAFhBQAAAAROT05FBQAAAANzdHIBAAAAEmdldEtleVdoaXRlbGlzdFJlZgAAAAEAAAAHYWNjb3VudAkAASwAAAACAgAAAAd3bF9yZWZfBQAAAAdhY2NvdW50AQAAABVnZXRLZXlXaGl0ZWxpc3RTdGF0dXMAAAABAAAAB2FjY291bnQJAAEsAAAAAgIAAAAHd2xfc3RzXwUAAAAHYWNjb3VudAEAAAANZ2V0S2V5QmFsYW5jZQAAAAEAAAAHYWNjb3VudAkAASwAAAACAgAAAAhiYWxhbmNlXwUAAAAHYWNjb3VudAEAAAASZ2V0S2V5V2hpdGVsaXN0QmlvAAAAAQAAAAdhY2NvdW50CQABLAAAAAICAAAAB3dsX2Jpb18FAAAAB2FjY291bnQBAAAAFGdldEtleVdoaXRlbGlzdEJsb2NrAAAAAQAAAAdhY2NvdW50CQABLAAAAAICAAAAB3dsX2Jsa18FAAAAB2FjY291bnQBAAAAEGdldEtleUl0ZW1BdXRob3IAAAABAAAABGl0ZW0JAAEsAAAAAgIAAAAHYXV0aG9yXwUAAAAEaXRlbQEAAAAPZ2V0S2V5SXRlbUJsb2NrAAAAAQAAAARpdGVtCQABLAAAAAICAAAABmJsb2NrXwUAAAAEaXRlbQEAAAAaZ2V0S2V5SXRlbVZvdGluZ0V4cGlyYXRpb24AAAABAAAABGl0ZW0JAAEsAAAAAgIAAAARZXhwaXJhdGlvbl9ibG9ja18FAAAABGl0ZW0BAAAADmdldEtleUl0ZW1CYW5rAAAAAQAAAARpdGVtCQABLAAAAAICAAAABWJhbmtfBQAAAARpdGVtAQAAABBnZXRLZXlJdGVtU3RhdHVzAAAAAQAAAARpdGVtCQABLAAAAAICAAAAB3N0YXR1c18FAAAABGl0ZW0BAAAADmdldEtleUl0ZW1EYXRhAAAAAQAAAARpdGVtCQABLAAAAAICAAAACWRhdGFqc29uXwUAAAAEaXRlbQEAAAAUZ2V0S2V5RnJlZUl0ZW1BdXRob3IAAAABAAAABGl0ZW0JAAEsAAAAAgIAAAAMZnJlZV9hdXRob3JfBQAAAARpdGVtAQAAABNnZXRLZXlGcmVlSXRlbUJsb2NrAAAAAQAAAARpdGVtCQABLAAAAAICAAAAC2ZyZWVfYmxvY2tfBQAAAARpdGVtAQAAABRnZXRLZXlGcmVlSXRlbVN0YXR1cwAAAAEAAAAEaXRlbQkAASwAAAACAgAAAAxmcmVlX3N0YXR1c18FAAAABGl0ZW0BAAAAEmdldEtleUZyZWVJdGVtRGF0YQAAAAEAAAAEaXRlbQkAASwAAAACAgAAAA5mcmVlX2RhdGFqc29uXwUAAAAEaXRlbQEAAAAVZ2V0S2V5RnJlZUl0ZW1Db250ZXN0AAAAAQAAAARpdGVtCQABLAAAAAICAAAADWZyZWVfY29udGVzdF8FAAAABGl0ZW0BAAAAEWdldEtleUNvbnRlc3REYXRhAAAAAQAAAARpdGVtCQABLAAAAAICAAAAEWNvbnRlc3RfZGF0YWpzb25fBQAAAARpdGVtAQAAABFnZXRLZXlDb250ZXN0VHlwZQAAAAEAAAAEaXRlbQkAASwAAAACAgAAAA1jb250ZXN0X3R5cGVfBQAAAARpdGVtAQAAABlnZXRLZXlJdGVtQ3Jvd2RFeHBpcmF0aW9uAAAAAQAAAARpdGVtCQABLAAAAAICAAAAD2V4cGlyYXRpb25fb25lXwUAAAAEaXRlbQEAAAAZZ2V0S2V5SXRlbVdoYWxlRXhwaXJhdGlvbgAAAAEAAAAEaXRlbQkAASwAAAACAgAAAA9leHBpcmF0aW9uX3R3b18FAAAABGl0ZW0BAAAAEmdldEtleUl0ZW1OQ29tbWl0cwAAAAEAAAAEaXRlbQkAASwAAAACAgAAAAluY29tbWl0c18FAAAABGl0ZW0BAAAAF2dldEtleUl0ZW1BY2NSZXBvcnREYXRhAAAAAgAAAARpdGVtAAAAB2FjY291bnQJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAAB3JlcG9ydF8FAAAABGl0ZW0CAAAAAV8FAAAAB2FjY291bnQBAAAAE2dldEtleUl0ZW1BY2NDb21taXQAAAACAAAABGl0ZW0AAAAHYWNjb3VudAkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAHY29tbWl0XwUAAAAEaXRlbQIAAAABXwUAAAAHYWNjb3VudAEAAAATZ2V0S2V5SXRlbUFjY1JldmVhbAAAAAIAAAAEaXRlbQAAAAdhY2NvdW50CQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAdyZXZlYWxfBQAAAARpdGVtAgAAAAFfBQAAAAdhY2NvdW50AQAAABJnZXRLZXlJdGVtVm90ZXNZZXMAAAABAAAABGl0ZW0JAAEsAAAAAgIAAAAIY250X3llc18FAAAABGl0ZW0BAAAAEWdldEtleUl0ZW1Wb3Rlc05vAAAAAQAAAARpdGVtCQABLAAAAAICAAAAB2NudF9ub18FAAAABGl0ZW0BAAAAEmdldEtleUl0ZW1BY2NGaW5hbAAAAAIAAAAEaXRlbQAAAAdhY2NvdW50CQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAZmaW5hbF8FAAAABGl0ZW0CAAAAAV8FAAAAB2FjY291bnQBAAAAFmdldEtleUl0ZW1GdW5kUG9zaXRpdmUAAAABAAAABGl0ZW0JAAEsAAAAAgIAAAAOcG9zaXRpdmVfZnVuZF8FAAAABGl0ZW0BAAAAFmdldEtleUl0ZW1GdW5kTmVnYXRpdmUAAAABAAAABGl0ZW0JAAEsAAAAAgIAAAAObmVnYXRpdmVfZnVuZF8FAAAABGl0ZW0BAAAAGWdldEtleUl0ZW1BY2NGdW5kUG9zaXRpdmUAAAACAAAABGl0ZW0AAAAHYWNjb3VudAkAASwAAAACCQABLAAAAAIJAQAAABZnZXRLZXlJdGVtRnVuZFBvc2l0aXZlAAAAAQUAAAAEaXRlbQIAAAABXwUAAAAHYWNjb3VudAEAAAAZZ2V0S2V5SXRlbUFjY0Z1bmROZWdhdGl2ZQAAAAIAAAAEaXRlbQAAAAdhY2NvdW50CQABLAAAAAIJAAEsAAAAAgkBAAAAFmdldEtleUl0ZW1GdW5kTmVnYXRpdmUAAAABBQAAAARpdGVtAgAAAAFfBQAAAAdhY2NvdW50AQAAABdnZXRLZXlJdGVtQWNjUmV2aWV3c0NudAAAAAIAAAAEaXRlbQAAAAdhY2NvdW50CQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAxyZXZpZXdzX2NudF8FAAAABGl0ZW0CAAAAAV8FAAAAB2FjY291bnQBAAAAE2dldEtleUl0ZW1BY2NSZXZpZXcAAAACAAAABGl0ZW0AAAAHYWNjb3VudAkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAHcmV2aWV3XwUAAAAEaXRlbQIAAAABXwUAAAAHYWNjb3VudAEAAAAXZ2V0S2V5SXRlbUFjY1Jldmlld1RleHQAAAADAAAABGl0ZW0AAAAHYWNjb3VudAAAAANjbnQJAAEsAAAAAgkAASwAAAACCQEAAAATZ2V0S2V5SXRlbUFjY1JldmlldwAAAAIFAAAABGl0ZW0FAAAAB2FjY291bnQCAAAACV90ZXh0X2lkOgUAAAADY250AQAAABdnZXRLZXlJdGVtQWNjUmV2aWV3TW9kZQAAAAMAAAAEaXRlbQAAAAdhY2NvdW50AAAAA2NudAkAASwAAAACCQABLAAAAAIJAQAAABNnZXRLZXlJdGVtQWNjUmV2aWV3AAAAAgUAAAAEaXRlbQUAAAAHYWNjb3VudAIAAAAJX21vZGVfaWQ6BQAAAANjbnQBAAAAF2dldEtleUl0ZW1BY2NSZXZpZXdUaWVyAAAAAwAAAARpdGVtAAAAB2FjY291bnQAAAADY250CQABLAAAAAIJAAEsAAAAAgkBAAAAE2dldEtleUl0ZW1BY2NSZXZpZXcAAAACBQAAAARpdGVtBQAAAAdhY2NvdW50AgAAAAlfdGllcl9pZDoFAAAAA2NudAEAAAAbZ2V0S2V5SXRlbUFjY1ZvdGVSZXZpZXdUZXh0AAAAAgAAAARpdGVtAAAAB2FjY291bnQJAAEsAAAAAgkBAAAAE2dldEtleUl0ZW1BY2NSZXZpZXcAAAACBQAAAARpdGVtBQAAAAdhY2NvdW50AgAAAAtfdm90ZXJldmlldwEAAAAcZ2V0S2V5SXRlbUFjY1doYWxlUmV2aWV3VGV4dAAAAAIAAAAEaXRlbQAAAAdhY2NvdW50CQABLAAAAAIJAQAAABNnZXRLZXlJdGVtQWNjUmV2aWV3AAAAAgUAAAAEaXRlbQUAAAAHYWNjb3VudAIAAAAMX3doYWxlcmV2aWV3AQAAABZnZXRLZXlJdGVtQnV5b3V0QW1vdW50AAAAAQAAAARpdGVtCQABLAAAAAICAAAADmJ1eW91dF9hbW91bnRfBQAAAARpdGVtAQAAABVnZXRLZXlJdGVtQWNjV2lubmluZ3MAAAACAAAABGl0ZW0AAAAHYWNjb3VudAkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAJd2lubmluZ3NfBQAAAARpdGVtAgAAAAFfBQAAAAdhY2NvdW50AQAAABRnZXRWYWx1ZVdoaXRlbGlzdFJlZgAAAAEAAAAHYWNjb3VudAkBAAAAC2dldFN0ckJ5S2V5AAAAAQkBAAAAEmdldEtleVdoaXRlbGlzdFJlZgAAAAEFAAAAB2FjY291bnQBAAAAF2dldFZhbHVlV2hpdGVsaXN0U3RhdHVzAAAAAQAAAAdhY2NvdW50CQEAAAALZ2V0U3RyQnlLZXkAAAABCQEAAAAVZ2V0S2V5V2hpdGVsaXN0U3RhdHVzAAAAAQUAAAAHYWNjb3VudAEAAAAPZ2V0VmFsdWVCYWxhbmNlAAAAAQAAAAdhY2NvdW50CQEAAAAOZ2V0TnVtYmVyQnlLZXkAAAABCQEAAAANZ2V0S2V5QmFsYW5jZQAAAAEFAAAAB2FjY291bnQBAAAAFGdldFZhbHVlV2hpdGVsaXN0QmlvAAAAAQAAAAdhY2NvdW50CQEAAAALZ2V0U3RyQnlLZXkAAAABCQEAAAASZ2V0S2V5V2hpdGVsaXN0QmlvAAAAAQUAAAAHYWNjb3VudAEAAAAWZ2V0VmFsdWVXaGl0ZWxpc3RCbG9jawAAAAEAAAAHYWNjb3VudAkBAAAAC2dldFN0ckJ5S2V5AAAAAQkBAAAAFGdldEtleVdoaXRlbGlzdEJsb2NrAAAAAQUAAAAHYWNjb3VudAEAAAASZ2V0VmFsdWVJdGVtQXV0aG9yAAAAAQAAAARpdGVtCQEAAAALZ2V0U3RyQnlLZXkAAAABCQEAAAAQZ2V0S2V5SXRlbUF1dGhvcgAAAAEFAAAABGl0ZW0BAAAAEWdldFZhbHVlSXRlbUJsb2NrAAAAAQAAAARpdGVtCQEAAAAOZ2V0TnVtYmVyQnlLZXkAAAABCQEAAAAPZ2V0S2V5SXRlbUJsb2NrAAAAAQUAAAAEaXRlbQEAAAAcZ2V0VmFsdWVJdGVtVm90aW5nRXhwaXJhdGlvbgAAAAEAAAAEaXRlbQkBAAAADmdldE51bWJlckJ5S2V5AAAAAQkBAAAAGmdldEtleUl0ZW1Wb3RpbmdFeHBpcmF0aW9uAAAAAQUAAAAEaXRlbQEAAAAQZ2V0VmFsdWVJdGVtQmFuawAAAAEAAAAEaXRlbQkBAAAADmdldE51bWJlckJ5S2V5AAAAAQkBAAAADmdldEtleUl0ZW1CYW5rAAAAAQUAAAAEaXRlbQEAAAASZ2V0VmFsdWVJdGVtU3RhdHVzAAAAAQAAAARpdGVtCQEAAAALZ2V0U3RyQnlLZXkAAAABCQEAAAAQZ2V0S2V5SXRlbVN0YXR1cwAAAAEFAAAABGl0ZW0BAAAAEGdldFZhbHVlSXRlbURhdGEAAAABAAAABGl0ZW0JAQAAAAtnZXRTdHJCeUtleQAAAAEJAQAAAA5nZXRLZXlJdGVtRGF0YQAAAAEFAAAABGl0ZW0BAAAAFmdldFZhbHVlRnJlZUl0ZW1BdXRob3IAAAABAAAABGl0ZW0JAQAAAAtnZXRTdHJCeUtleQAAAAEJAQAAABRnZXRLZXlGcmVlSXRlbUF1dGhvcgAAAAEFAAAABGl0ZW0BAAAAFWdldFZhbHVlRnJlZUl0ZW1CbG9jawAAAAEAAAAEaXRlbQkBAAAADmdldE51bWJlckJ5S2V5AAAAAQkBAAAAE2dldEtleUZyZWVJdGVtQmxvY2sAAAABBQAAAARpdGVtAQAAABZnZXRWYWx1ZUZyZWVJdGVtU3RhdHVzAAAAAQAAAARpdGVtCQEAAAALZ2V0U3RyQnlLZXkAAAABCQEAAAAUZ2V0S2V5RnJlZUl0ZW1TdGF0dXMAAAABBQAAAARpdGVtAQAAABRnZXRWYWx1ZUZyZWVJdGVtRGF0YQAAAAEAAAAEaXRlbQkBAAAAC2dldFN0ckJ5S2V5AAAAAQkBAAAAEmdldEtleUZyZWVJdGVtRGF0YQAAAAEFAAAABGl0ZW0BAAAAF2dldFZhbHVlRnJlZUl0ZW1Db250ZXN0AAAAAQAAAARpdGVtCQEAAAALZ2V0U3RyQnlLZXkAAAABCQEAAAAVZ2V0S2V5RnJlZUl0ZW1Db250ZXN0AAAAAQUAAAAEaXRlbQEAAAAbZ2V0VmFsdWVJdGVtQ3Jvd2RFeHBpcmF0aW9uAAAAAQAAAARpdGVtCQEAAAAOZ2V0TnVtYmVyQnlLZXkAAAABCQEAAAAZZ2V0S2V5SXRlbUNyb3dkRXhwaXJhdGlvbgAAAAEFAAAABGl0ZW0BAAAAG2dldFZhbHVlSXRlbVdoYWxlRXhwaXJhdGlvbgAAAAEAAAAEaXRlbQkBAAAADmdldE51bWJlckJ5S2V5AAAAAQkBAAAAGWdldEtleUl0ZW1XaGFsZUV4cGlyYXRpb24AAAABBQAAAARpdGVtAQAAABRnZXRWYWx1ZUl0ZW1OQ29tbWl0cwAAAAEAAAAEaXRlbQkBAAAADmdldE51bWJlckJ5S2V5AAAAAQkBAAAAEmdldEtleUl0ZW1OQ29tbWl0cwAAAAEFAAAABGl0ZW0BAAAAFWdldFZhbHVlSXRlbUFjY0NvbW1pdAAAAAIAAAAEaXRlbQAAAAdhY2NvdW50CQEAAAALZ2V0U3RyQnlLZXkAAAABCQEAAAATZ2V0S2V5SXRlbUFjY0NvbW1pdAAAAAIFAAAABGl0ZW0FAAAAB2FjY291bnQBAAAAFWdldFZhbHVlSXRlbUFjY1JldmVhbAAAAAIAAAAEaXRlbQAAAAdhY2NvdW50CQEAAAALZ2V0U3RyQnlLZXkAAAABCQEAAAATZ2V0S2V5SXRlbUFjY1JldmVhbAAAAAIFAAAABGl0ZW0FAAAAB2FjY291bnQBAAAAFGdldFZhbHVlSXRlbVZvdGVzWWVzAAAAAQAAAARpdGVtCQEAAAAOZ2V0TnVtYmVyQnlLZXkAAAABCQEAAAASZ2V0S2V5SXRlbVZvdGVzWWVzAAAAAQUAAAAEaXRlbQEAAAATZ2V0VmFsdWVJdGVtVm90ZXNObwAAAAEAAAAEaXRlbQkBAAAADmdldE51bWJlckJ5S2V5AAAAAQkBAAAAEWdldEtleUl0ZW1Wb3Rlc05vAAAAAQUAAAAEaXRlbQEAAAAUZ2V0VmFsdWVJdGVtQWNjRmluYWwAAAACAAAABGl0ZW0AAAAHYWNjb3VudAkBAAAAC2dldFN0ckJ5S2V5AAAAAQkBAAAAEmdldEtleUl0ZW1BY2NGaW5hbAAAAAIFAAAABGl0ZW0FAAAAB2FjY291bnQBAAAAGGdldFZhbHVlSXRlbUZ1bmRQb3NpdGl2ZQAAAAEAAAAEaXRlbQkBAAAADmdldE51bWJlckJ5S2V5AAAAAQkBAAAAFmdldEtleUl0ZW1GdW5kUG9zaXRpdmUAAAABBQAAAARpdGVtAQAAABhnZXRWYWx1ZUl0ZW1GdW5kTmVnYXRpdmUAAAABAAAABGl0ZW0JAQAAAA5nZXROdW1iZXJCeUtleQAAAAEJAQAAABZnZXRLZXlJdGVtRnVuZE5lZ2F0aXZlAAAAAQUAAAAEaXRlbQEAAAAbZ2V0VmFsdWVJdGVtQWNjRnVuZFBvc2l0aXZlAAAAAgAAAARpdGVtAAAAB2FjY291bnQJAQAAAA5nZXROdW1iZXJCeUtleQAAAAEJAQAAABlnZXRLZXlJdGVtQWNjRnVuZFBvc2l0aXZlAAAAAgUAAAAEaXRlbQUAAAAHYWNjb3VudAEAAAAbZ2V0VmFsdWVJdGVtQWNjRnVuZE5lZ2F0aXZlAAAAAgAAAARpdGVtAAAAB2FjY291bnQJAQAAAA5nZXROdW1iZXJCeUtleQAAAAEJAQAAABlnZXRLZXlJdGVtQWNjRnVuZE5lZ2F0aXZlAAAAAgUAAAAEaXRlbQUAAAAHYWNjb3VudAEAAAAZZ2V0VmFsdWVJdGVtQWNjUmV2aWV3c0NudAAAAAIAAAAEaXRlbQAAAAdhY2NvdW50CQEAAAAOZ2V0TnVtYmVyQnlLZXkAAAABCQEAAAAXZ2V0S2V5SXRlbUFjY1Jldmlld3NDbnQAAAACBQAAAARpdGVtBQAAAAdhY2NvdW50AQAAABlnZXRWYWx1ZUl0ZW1BY2NSZXZpZXdUZXh0AAAAAwAAAARpdGVtAAAAB2FjY291bnQAAAADY250CQEAAAALZ2V0U3RyQnlLZXkAAAABCQEAAAAXZ2V0S2V5SXRlbUFjY1Jldmlld1RleHQAAAADBQAAAARpdGVtBQAAAAdhY2NvdW50BQAAAANjbnQBAAAAGWdldFZhbHVlSXRlbUFjY1Jldmlld01vZGUAAAADAAAABGl0ZW0AAAAHYWNjb3VudAAAAANjbnQJAQAAAAtnZXRTdHJCeUtleQAAAAEJAQAAABdnZXRLZXlJdGVtQWNjUmV2aWV3TW9kZQAAAAMFAAAABGl0ZW0FAAAAB2FjY291bnQFAAAAA2NudAEAAAAZZ2V0VmFsdWVJdGVtQWNjUmV2aWV3VGllcgAAAAMAAAAEaXRlbQAAAAdhY2NvdW50AAAAA2NudAkBAAAADmdldE51bWJlckJ5S2V5AAAAAQkBAAAAF2dldEtleUl0ZW1BY2NSZXZpZXdUaWVyAAAAAwUAAAAEaXRlbQUAAAAHYWNjb3VudAUAAAADY250AQAAABhnZXRWYWx1ZUl0ZW1CdXlvdXRBbW91bnQAAAABAAAABGl0ZW0JAQAAAA5nZXROdW1iZXJCeUtleQAAAAEJAQAAABZnZXRLZXlJdGVtQnV5b3V0QW1vdW50AAAAAQUAAAAEaXRlbQEAAAAXZ2V0VmFsdWVJdGVtQWNjV2lubmluZ3MAAAACAAAABGl0ZW0AAAAHYWNjb3VudAkBAAAADmdldE51bWJlckJ5S2V5AAAAAQkBAAAAFWdldEtleUl0ZW1BY2NXaW5uaW5ncwAAAAIFAAAABGl0ZW0FAAAAB2FjY291bnQBAAAADmdldENvbnRlc3RUeXBlAAAAAQAAAARpdGVtCQEAAAALZ2V0U3RyQnlLZXkAAAABCQEAAAARZ2V0S2V5Q29udGVzdFR5cGUAAAABBQAAAARpdGVtAAAAAANORVcCAAAAA25ldwAAAAAHRE9OQVRFRAIAAAAHZG9uYXRlZAAAAAAIUkVKRUNURUQCAAAACHJlamVjdGVkAAAAAAtPV05FUkRPTkFURQIAAAAMb3duZXJfZG9uYXRlAAAAAAtVU0VSU0RPTkFURQIAAAAMdXNlcnNfZG9uYXRlAAAAAAtXSElURUxJU1RFRAIAAAAKcmVnaXN0ZXJlZAAAAAAHSU5WSVRFRAIAAAAHaW52aXRlZAAAAAAFV0hBTEUCAAAABXdoYWxlAAAAAAtTUEVORElOVklURQIAAAAMc3BlbmRfaW52aXRlAAAAAAZDT01NSVQCAAAADXZvdGluZ19jb21taXQAAAAABlJFVkVBTAIAAAANdm90aW5nX3JldmVhbAAAAAAIRkVBVFVSRUQCAAAACGZlYXR1cmVkAAAAAAhERUxJU1RFRAIAAAAIZGVsaXN0ZWQAAAAAB0NBU0hPVVQCAAAAB2Nhc2hvdXQAAAAABkJVWU9VVAIAAAAGYnV5b3V0AAAAAAhGSU5JU0hFRAIAAAAIZmluaXNo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", "chainId": 87, "height": 1713689, "spentComplexity": 0 } View: original | compacted Prev: Ft5arnASfjsygJ2GidnvhWUSVAgRSk2PKCF32fhijLGE Next: Vu7W66vSTkdNsX8Xz8vXX5BPbvhSuZHZuJSe2rcdZB6 Diff:
OldNewDifferences
5858 func getKeyItemData (item) = ("datajson_" + item)
5959
6060
61+func getKeyFreeItemAuthor (item) = ("free_author_" + item)
62+
63+
64+func getKeyFreeItemBlock (item) = ("free_block_" + item)
65+
66+
67+func getKeyFreeItemStatus (item) = ("free_status_" + item)
68+
69+
70+func getKeyFreeItemData (item) = ("free_datajson_" + item)
71+
72+
73+func getKeyFreeItemContest (item) = ("free_contest_" + item)
74+
75+
6176 func getKeyContestData (item) = ("contest_datajson_" + item)
77+
78+
79+func getKeyContestType (item) = ("contest_type_" + item)
6280
6381
6482 func getKeyItemCrowdExpiration (item) = ("expiration_one_" + item)
104122
105123
106124 func getKeyItemAccReview (item,account) = ((("review_" + item) + "_") + account)
107-
108-
109-func getKeyTransferLink (hash) = ("transfer_link_" + hash)
110125
111126
112127 func getKeyItemAccReviewText (item,account,cnt) = ((getKeyItemAccReview(item, account) + "_text_id:") + cnt)
163178 func getValueItemData (item) = getStrByKey(getKeyItemData(item))
164179
165180
181+func getValueFreeItemAuthor (item) = getStrByKey(getKeyFreeItemAuthor(item))
182+
183+
184+func getValueFreeItemBlock (item) = getNumberByKey(getKeyFreeItemBlock(item))
185+
186+
187+func getValueFreeItemStatus (item) = getStrByKey(getKeyFreeItemStatus(item))
188+
189+
190+func getValueFreeItemData (item) = getStrByKey(getKeyFreeItemData(item))
191+
192+
193+func getValueFreeItemContest (item) = getStrByKey(getKeyFreeItemContest(item))
194+
195+
166196 func getValueItemCrowdExpiration (item) = getNumberByKey(getKeyItemCrowdExpiration(item))
167197
168198
217247 func getValueItemAccWinnings (item,account) = getNumberByKey(getKeyItemAccWinnings(item, account))
218248
219249
220-func getTransferLink (hash) = getStrByKey(getKeyTransferLink(hash))
250+func getContestType (item) = getStrByKey(getKeyContestType(item))
221251
252+
253+let NEW = "new"
254+
255+let DONATED = "donated"
256+
257+let REJECTED = "rejected"
258+
259+let OWNERDONATE = "owner_donate"
260+
261+let USERSDONATE = "users_donate"
222262
223263 let WHITELISTED = "registered"
224264
248288
249289 let NEGATIVE = "negative"
250290
251-let GENESIS = "3PJb83hhqyEmZvzWj6sEEykEHcKCfmnnC6F"
291+let GENESIS = "3P8Fvy1yDwNHvVrabe4ek5b9dAwxFjDKV7R"
252292
253293 let ADMIN = "3P9NDxt9Y6ePfM9hkQysgSvbHJvihr56Z18"
254294
315355 @Callable(i)
316356 func userupdate (data,type) = {
317357 let account = toBase58String(i.caller.bytes)
318- WriteSet([DataEntry(getKeyWhitelistBio(account), data), DataEntry(getKeyWhitelistStatus(account), if ((type == WHALE))
319- then WHALE
320- else WHITELISTED)])
358+ if ((getKeyWhitelistBio(account) == NONE))
359+ then throw("user not signup")
360+ else WriteSet([DataEntry(getKeyWhitelistBio(account), data), DataEntry(getKeyWhitelistStatus(account), if ((type == WHALE))
361+ then WHALE
362+ else WHITELISTED)])
321363 }
322364
323365
333375
334376
335377 @Callable(i)
336-func contestAddOrUpdate (item,data) = {
378+func contestAddOrUpdate (item,data,type) = {
337379 let account = toBase58String(i.caller.bytes)
380+ let typeContest = if ((type == OWNERDONATE))
381+ then OWNERDONATE
382+ else USERSDONATE
338383 if ((account != ADMIN))
339384 then throw("You're not admin")
340- else WriteSet([DataEntry(getKeyContestData(item), data)])
385+ else WriteSet([DataEntry(getKeyContestData(item), data), DataEntry(getKeyContestType(item), typeContest)])
341386 }
342387
343388
348393 if ((0 >= amount))
349394 then throw("Not enough balance")
350395 else ScriptResult(WriteSet([DataEntry(getKeyBalance(address), 0)]), TransferSet([ScriptTransfer(addressFromStringValue(address), amount, unit)]))
396+ }
397+
398+
399+
400+@Callable(i)
401+func addFreeItem (item,data,contestId) = {
402+ let type = getContestType(contestId)
403+ if ((type == USERSDONATE))
404+ then throw(("Contest type is " + USERSDONATE))
405+ else if ((getValueItemAuthor(item) != NONE))
406+ then throw("Item already exist")
407+ else WriteSet([DataEntry(getKeyFreeItemAuthor(item), toString(i.caller)), DataEntry(getKeyFreeItemBlock(item), height), DataEntry(getKeyFreeItemStatus(item), NEW), DataEntry(getKeyFreeItemData(item), data), DataEntry(getKeyFreeItemContest(item), contestId)])
408+ }
409+
410+
411+
412+@Callable(i)
413+func updateFreeItem (item,data) = {
414+ let status = getValueFreeItemStatus(item)
415+ if ((status != NEW))
416+ then throw(("Status is not " + NEW))
417+ else WriteSet([DataEntry(getKeyFreeItemData(item), data)])
418+ }
419+
420+
421+
422+@Callable(i)
423+func rejectFreeItem (item) = {
424+ let status = getValueFreeItemStatus(item)
425+ let contestOwner = toString(i.caller)
426+ if ((contestOwner != ADMIN))
427+ then throw("You're not admin")
428+ else if ((status != NEW))
429+ then throw(("Status is not " + NEW))
430+ else WriteSet([DataEntry(getKeyFreeItemStatus(item), REJECTED)])
431+ }
432+
433+
434+
435+@Callable(i)
436+func donateFreeItem (item) = {
437+ let status = getValueFreeItemStatus(item)
438+ let author = getValueFreeItemAuthor(item)
439+ let pmt = extract(i.payment)
440+ let contestOwner = toString(i.caller)
441+ if ((contestOwner != ADMIN))
442+ then throw("You're not admin")
443+ else if (isDefined(pmt.assetId))
444+ then throw("can use waves only at the moment")
445+ else if ((pmt.amount == 0))
446+ then throw("invalid amount")
447+ else if ((status != NEW))
448+ then throw(("Status is not " + NEW))
449+ else WriteSet([DataEntry(getKeyFreeItemStatus(item), DONATED), DataEntry(getKeyBalance(author), (getValueBalance(author) + pmt.amount))])
351450 }
352451
353452
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
61+func getKeyFreeItemAuthor (item) = ("free_author_" + item)
62+
63+
64+func getKeyFreeItemBlock (item) = ("free_block_" + item)
65+
66+
67+func getKeyFreeItemStatus (item) = ("free_status_" + item)
68+
69+
70+func getKeyFreeItemData (item) = ("free_datajson_" + item)
71+
72+
73+func getKeyFreeItemContest (item) = ("free_contest_" + item)
74+
75+
6176 func getKeyContestData (item) = ("contest_datajson_" + item)
77+
78+
79+func getKeyContestType (item) = ("contest_type_" + item)
6280
6381
6482 func getKeyItemCrowdExpiration (item) = ("expiration_one_" + item)
6583
6684
6785 func getKeyItemWhaleExpiration (item) = ("expiration_two_" + item)
6886
6987
7088 func getKeyItemNCommits (item) = ("ncommits_" + item)
7189
7290
7391 func getKeyItemAccReportData (item,account) = ((("report_" + item) + "_") + account)
7492
7593
7694 func getKeyItemAccCommit (item,account) = ((("commit_" + item) + "_") + account)
7795
7896
7997 func getKeyItemAccReveal (item,account) = ((("reveal_" + item) + "_") + account)
8098
8199
82100 func getKeyItemVotesYes (item) = ("cnt_yes_" + item)
83101
84102
85103 func getKeyItemVotesNo (item) = ("cnt_no_" + item)
86104
87105
88106 func getKeyItemAccFinal (item,account) = ((("final_" + item) + "_") + account)
89107
90108
91109 func getKeyItemFundPositive (item) = ("positive_fund_" + item)
92110
93111
94112 func getKeyItemFundNegative (item) = ("negative_fund_" + item)
95113
96114
97115 func getKeyItemAccFundPositive (item,account) = ((getKeyItemFundPositive(item) + "_") + account)
98116
99117
100118 func getKeyItemAccFundNegative (item,account) = ((getKeyItemFundNegative(item) + "_") + account)
101119
102120
103121 func getKeyItemAccReviewsCnt (item,account) = ((("reviews_cnt_" + item) + "_") + account)
104122
105123
106124 func getKeyItemAccReview (item,account) = ((("review_" + item) + "_") + account)
107-
108-
109-func getKeyTransferLink (hash) = ("transfer_link_" + hash)
110125
111126
112127 func getKeyItemAccReviewText (item,account,cnt) = ((getKeyItemAccReview(item, account) + "_text_id:") + cnt)
113128
114129
115130 func getKeyItemAccReviewMode (item,account,cnt) = ((getKeyItemAccReview(item, account) + "_mode_id:") + cnt)
116131
117132
118133 func getKeyItemAccReviewTier (item,account,cnt) = ((getKeyItemAccReview(item, account) + "_tier_id:") + cnt)
119134
120135
121136 func getKeyItemAccVoteReviewText (item,account) = (getKeyItemAccReview(item, account) + "_votereview")
122137
123138
124139 func getKeyItemAccWhaleReviewText (item,account) = (getKeyItemAccReview(item, account) + "_whalereview")
125140
126141
127142 func getKeyItemBuyoutAmount (item) = ("buyout_amount_" + item)
128143
129144
130145 func getKeyItemAccWinnings (item,account) = ((("winnings_" + item) + "_") + account)
131146
132147
133148 func getValueWhitelistRef (account) = getStrByKey(getKeyWhitelistRef(account))
134149
135150
136151 func getValueWhitelistStatus (account) = getStrByKey(getKeyWhitelistStatus(account))
137152
138153
139154 func getValueBalance (account) = getNumberByKey(getKeyBalance(account))
140155
141156
142157 func getValueWhitelistBio (account) = getStrByKey(getKeyWhitelistBio(account))
143158
144159
145160 func getValueWhitelistBlock (account) = getStrByKey(getKeyWhitelistBlock(account))
146161
147162
148163 func getValueItemAuthor (item) = getStrByKey(getKeyItemAuthor(item))
149164
150165
151166 func getValueItemBlock (item) = getNumberByKey(getKeyItemBlock(item))
152167
153168
154169 func getValueItemVotingExpiration (item) = getNumberByKey(getKeyItemVotingExpiration(item))
155170
156171
157172 func getValueItemBank (item) = getNumberByKey(getKeyItemBank(item))
158173
159174
160175 func getValueItemStatus (item) = getStrByKey(getKeyItemStatus(item))
161176
162177
163178 func getValueItemData (item) = getStrByKey(getKeyItemData(item))
164179
165180
181+func getValueFreeItemAuthor (item) = getStrByKey(getKeyFreeItemAuthor(item))
182+
183+
184+func getValueFreeItemBlock (item) = getNumberByKey(getKeyFreeItemBlock(item))
185+
186+
187+func getValueFreeItemStatus (item) = getStrByKey(getKeyFreeItemStatus(item))
188+
189+
190+func getValueFreeItemData (item) = getStrByKey(getKeyFreeItemData(item))
191+
192+
193+func getValueFreeItemContest (item) = getStrByKey(getKeyFreeItemContest(item))
194+
195+
166196 func getValueItemCrowdExpiration (item) = getNumberByKey(getKeyItemCrowdExpiration(item))
167197
168198
169199 func getValueItemWhaleExpiration (item) = getNumberByKey(getKeyItemWhaleExpiration(item))
170200
171201
172202 func getValueItemNCommits (item) = getNumberByKey(getKeyItemNCommits(item))
173203
174204
175205 func getValueItemAccCommit (item,account) = getStrByKey(getKeyItemAccCommit(item, account))
176206
177207
178208 func getValueItemAccReveal (item,account) = getStrByKey(getKeyItemAccReveal(item, account))
179209
180210
181211 func getValueItemVotesYes (item) = getNumberByKey(getKeyItemVotesYes(item))
182212
183213
184214 func getValueItemVotesNo (item) = getNumberByKey(getKeyItemVotesNo(item))
185215
186216
187217 func getValueItemAccFinal (item,account) = getStrByKey(getKeyItemAccFinal(item, account))
188218
189219
190220 func getValueItemFundPositive (item) = getNumberByKey(getKeyItemFundPositive(item))
191221
192222
193223 func getValueItemFundNegative (item) = getNumberByKey(getKeyItemFundNegative(item))
194224
195225
196226 func getValueItemAccFundPositive (item,account) = getNumberByKey(getKeyItemAccFundPositive(item, account))
197227
198228
199229 func getValueItemAccFundNegative (item,account) = getNumberByKey(getKeyItemAccFundNegative(item, account))
200230
201231
202232 func getValueItemAccReviewsCnt (item,account) = getNumberByKey(getKeyItemAccReviewsCnt(item, account))
203233
204234
205235 func getValueItemAccReviewText (item,account,cnt) = getStrByKey(getKeyItemAccReviewText(item, account, cnt))
206236
207237
208238 func getValueItemAccReviewMode (item,account,cnt) = getStrByKey(getKeyItemAccReviewMode(item, account, cnt))
209239
210240
211241 func getValueItemAccReviewTier (item,account,cnt) = getNumberByKey(getKeyItemAccReviewTier(item, account, cnt))
212242
213243
214244 func getValueItemBuyoutAmount (item) = getNumberByKey(getKeyItemBuyoutAmount(item))
215245
216246
217247 func getValueItemAccWinnings (item,account) = getNumberByKey(getKeyItemAccWinnings(item, account))
218248
219249
220-func getTransferLink (hash) = getStrByKey(getKeyTransferLink(hash))
250+func getContestType (item) = getStrByKey(getKeyContestType(item))
221251
252+
253+let NEW = "new"
254+
255+let DONATED = "donated"
256+
257+let REJECTED = "rejected"
258+
259+let OWNERDONATE = "owner_donate"
260+
261+let USERSDONATE = "users_donate"
222262
223263 let WHITELISTED = "registered"
224264
225265 let INVITED = "invited"
226266
227267 let WHALE = "whale"
228268
229269 let SPENDINVITE = "spend_invite"
230270
231271 let COMMIT = "voting_commit"
232272
233273 let REVEAL = "voting_reveal"
234274
235275 let FEATURED = "featured"
236276
237277 let DELISTED = "delisted"
238278
239279 let CASHOUT = "cashout"
240280
241281 let BUYOUT = "buyout"
242282
243283 let FINISHED = "finished"
244284
245285 let CLAIMED = "claimed"
246286
247287 let POSITIVE = "positive"
248288
249289 let NEGATIVE = "negative"
250290
251-let GENESIS = "3PJb83hhqyEmZvzWj6sEEykEHcKCfmnnC6F"
291+let GENESIS = "3P8Fvy1yDwNHvVrabe4ek5b9dAwxFjDKV7R"
252292
253293 let ADMIN = "3P9NDxt9Y6ePfM9hkQysgSvbHJvihr56Z18"
254294
255295 let VOTERS = 3
256296
257297 let QUORUM = 2
258298
259299 let TIERS = [(3 * 100000000), (10 * 100000000), (100 * 100000000), (300 * 100000000), (1000 * 100000000)]
260300
261301 let LISTINGFEE = (1 * 100000000)
262302
263303 let VOTEBET = (1 * 100000000)
264304
265305 let MULTIPLIER = 150
266306
267307 let SplitDataSymbol = "+"
268308
269309 @Callable(i)
270310 func inviteuser (newaccount,data) = {
271311 let account = toBase58String(i.caller.bytes)
272312 let newstatus = getValueWhitelistStatus(newaccount)
273313 let currstatus = getValueWhitelistStatus(account)
274314 if (if ((newstatus == WHITELISTED))
275315 then true
276316 else (newstatus == WHALE))
277317 then throw("User has already been registered")
278318 else if (if (if ((currstatus != WHITELISTED))
279319 then (account != GENESIS)
280320 else false)
281321 then (currstatus != WHALE)
282322 else false)
283323 then throw(("Your account should be whitelisted. status: " + currstatus))
284324 else WriteSet([DataEntry(getKeyWhitelistRef(newaccount), account), DataEntry(getKeyWhitelistBio(newaccount), data), DataEntry(getKeyWhitelistStatus(newaccount), INVITED)])
285325 }
286326
287327
288328
289329 @Callable(i)
290330 func signupbylink (hash,data,type) = {
291331 let account = toBase58String(i.caller.bytes)
292332 let status = getValueWhitelistStatus(hash)
293333 if ((status != INVITED))
294334 then throw(((((("Referral invite needed. Current status: " + status) + ", key:") + getKeyWhitelistStatus(hash)) + ", account:") + hash))
295335 else WriteSet([DataEntry(getKeyWhitelistBio(account), data), DataEntry(getKeyWhitelistBlock(account), height), DataEntry(getKeyWhitelistStatus(account), if ((type == WHALE))
296336 then WHALE
297337 else WHITELISTED), DataEntry(getKeyWhitelistStatus(hash), SPENDINVITE), DataEntry(getKeyWhitelistRef(account), getValueWhitelistRef(hash))])
298338 }
299339
300340
301341
302342 @Callable(i)
303343 func signup (data,type) = {
304344 let account = toBase58String(i.caller.bytes)
305345 let status = getValueWhitelistStatus(account)
306346 if ((status == NONE))
307347 then throw(((((("Referral invite needed. Current status: " + status) + ", key:") + getKeyWhitelistStatus(account)) + ", account:") + account))
308348 else WriteSet([DataEntry(getKeyWhitelistBio(account), data), DataEntry(getKeyWhitelistBlock(account), height), DataEntry(getKeyWhitelistStatus(account), if ((type == WHALE))
309349 then WHALE
310350 else WHITELISTED)])
311351 }
312352
313353
314354
315355 @Callable(i)
316356 func userupdate (data,type) = {
317357 let account = toBase58String(i.caller.bytes)
318- WriteSet([DataEntry(getKeyWhitelistBio(account), data), DataEntry(getKeyWhitelistStatus(account), if ((type == WHALE))
319- then WHALE
320- else WHITELISTED)])
358+ if ((getKeyWhitelistBio(account) == NONE))
359+ then throw("user not signup")
360+ else WriteSet([DataEntry(getKeyWhitelistBio(account), data), DataEntry(getKeyWhitelistStatus(account), if ((type == WHALE))
361+ then WHALE
362+ else WHITELISTED)])
321363 }
322364
323365
324366
325367 @Callable(i)
326368 func projupdate (item,data) = {
327369 let account = toBase58String(i.caller.bytes)
328370 if ((getValueItemAuthor(item) != account))
329371 then throw("You're not author")
330372 else WriteSet([DataEntry(getKeyItemData(item), data)])
331373 }
332374
333375
334376
335377 @Callable(i)
336-func contestAddOrUpdate (item,data) = {
378+func contestAddOrUpdate (item,data,type) = {
337379 let account = toBase58String(i.caller.bytes)
380+ let typeContest = if ((type == OWNERDONATE))
381+ then OWNERDONATE
382+ else USERSDONATE
338383 if ((account != ADMIN))
339384 then throw("You're not admin")
340- else WriteSet([DataEntry(getKeyContestData(item), data)])
385+ else WriteSet([DataEntry(getKeyContestData(item), data), DataEntry(getKeyContestType(item), typeContest)])
341386 }
342387
343388
344389
345390 @Callable(i)
346391 func withdraw (address) = {
347392 let amount = getValueBalance(address)
348393 if ((0 >= amount))
349394 then throw("Not enough balance")
350395 else ScriptResult(WriteSet([DataEntry(getKeyBalance(address), 0)]), TransferSet([ScriptTransfer(addressFromStringValue(address), amount, unit)]))
396+ }
397+
398+
399+
400+@Callable(i)
401+func addFreeItem (item,data,contestId) = {
402+ let type = getContestType(contestId)
403+ if ((type == USERSDONATE))
404+ then throw(("Contest type is " + USERSDONATE))
405+ else if ((getValueItemAuthor(item) != NONE))
406+ then throw("Item already exist")
407+ else WriteSet([DataEntry(getKeyFreeItemAuthor(item), toString(i.caller)), DataEntry(getKeyFreeItemBlock(item), height), DataEntry(getKeyFreeItemStatus(item), NEW), DataEntry(getKeyFreeItemData(item), data), DataEntry(getKeyFreeItemContest(item), contestId)])
408+ }
409+
410+
411+
412+@Callable(i)
413+func updateFreeItem (item,data) = {
414+ let status = getValueFreeItemStatus(item)
415+ if ((status != NEW))
416+ then throw(("Status is not " + NEW))
417+ else WriteSet([DataEntry(getKeyFreeItemData(item), data)])
418+ }
419+
420+
421+
422+@Callable(i)
423+func rejectFreeItem (item) = {
424+ let status = getValueFreeItemStatus(item)
425+ let contestOwner = toString(i.caller)
426+ if ((contestOwner != ADMIN))
427+ then throw("You're not admin")
428+ else if ((status != NEW))
429+ then throw(("Status is not " + NEW))
430+ else WriteSet([DataEntry(getKeyFreeItemStatus(item), REJECTED)])
431+ }
432+
433+
434+
435+@Callable(i)
436+func donateFreeItem (item) = {
437+ let status = getValueFreeItemStatus(item)
438+ let author = getValueFreeItemAuthor(item)
439+ let pmt = extract(i.payment)
440+ let contestOwner = toString(i.caller)
441+ if ((contestOwner != ADMIN))
442+ then throw("You're not admin")
443+ else if (isDefined(pmt.assetId))
444+ then throw("can use waves only at the moment")
445+ else if ((pmt.amount == 0))
446+ then throw("invalid amount")
447+ else if ((status != NEW))
448+ then throw(("Status is not " + NEW))
449+ else WriteSet([DataEntry(getKeyFreeItemStatus(item), DONATED), DataEntry(getKeyBalance(author), (getValueBalance(author) + pmt.amount))])
351450 }
352451
353452
354453
355454 @Callable(i)
356455 func additem (item,expVoting,expCrowd,expWhale,data) = {
357456 let account = toBase58String(i.caller.bytes)
358457 let pmt = extract(i.payment)
359458 if (isDefined(pmt.assetId))
360459 then throw("can use waves only at the moment")
361460 else if ((pmt.amount != LISTINGFEE))
362461 then throw(((("Please pay exact amount for the listing: " + toString(LISTINGFEE)) + ", actual payment is: ") + toString(pmt.amount)))
363462 else if (!(if (if ((expVoting > 2))
364463 then (expCrowd > expVoting)
365464 else false)
366465 then (expWhale > expCrowd)
367466 else false))
368467 then throw("Incorrect time parameters")
369468 else if ((getValueItemAuthor(item) != NONE))
370469 then throw("Item already exist")
371470 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))])
372471 }
373472
374473
375474
376475 @Callable(i)
377476 func reportProject (item,data) = {
378477 let account = toBase58String(i.caller.bytes)
379478 WriteSet([DataEntry(getKeyItemAccReportData(item, account), data)])
380479 }
381480
382481
383482
384483 @Callable(i)
385484 func donate (item,tier,mode,review) = {
386485 let account = toBase58String(i.caller.bytes)
387486 let pmt = extract(i.payment)
388487 if (isDefined(pmt.assetId))
389488 then throw("can use waves only at the moment")
390489 else {
391490 let cnt = (getValueItemAccReviewsCnt(item, account) + 1)
392491 let newnegativefund = (getValueItemFundNegative(item) + ((if ((mode == NEGATIVE))
393492 then 1
394493 else 0) * pmt.amount))
395494 let newpositivefund = (getValueItemFundPositive(item) + ((if ((mode == POSITIVE))
396495 then 1
397496 else 0) * pmt.amount))
398497 if ((getValueItemStatus(item) != FEATURED))
399498 then throw("The project hasn't accepted by community")
400499 else if ((height >= getValueItemCrowdExpiration(item)))
401500 then throw("The time for crowdfunding has expired")
402501 else if ((newnegativefund >= newpositivefund))
403502 then throw("Negative fund can't be higher than positive fund")
404503 else if (if ((mode != POSITIVE))
405504 then (mode != NEGATIVE)
406505 else false)
407506 then throw("Wrong mode parameter")
408507 else if ((getValueItemAuthor(item) == account))
409508 then throw("Can't donate own project")
410509 else if ((pmt.amount != TIERS[(tier - 1)]))
411510 then throw(("The payment must be equal to tier amount: " + toString(TIERS[(tier - 1)])))
412511 else WriteSet([DataEntry(getKeyItemAccReviewsCnt(item, account), cnt), DataEntry(getKeyItemAccFundPositive(item, account), (getValueItemAccFundPositive(item, account) + ((if ((mode == POSITIVE))
413512 then 1
414513 else 0) * pmt.amount))), DataEntry(getKeyItemAccFundNegative(item, account), (getValueItemAccFundNegative(item, account) + ((if ((mode == NEGATIVE))
415514 then 1
416515 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)])
417516 }
418517 }
419518
420519
421520
422521 @Callable(i)
423522 func whale (item,review) = {
424523 let account = toBase58String(i.caller.bytes)
425524 let pmt = extract(i.payment)
426525 if (isDefined(pmt.assetId))
427526 then throw("can use waves only at the moment")
428527 else if ((getValueItemStatus(item) != FEATURED))
429528 then throw("The project hasn't accepted by community")
430529 else if ((getValueItemCrowdExpiration(item) > height))
431530 then throw("The time for crowdfunding has not expired yet")
432531 else if ((height > getValueItemWhaleExpiration(item)))
433532 then throw("The time for grant has expired")
434533 else if ((getValueItemStatus(item) == BUYOUT))
435534 then throw("Investement has already done")
436535 else if ((((getValueItemFundPositive(item) * MULTIPLIER) / 100) > pmt.amount))
437536 then throw((("Investement must be more than " + toString(MULTIPLIER)) + "% of supportes funds"))
438537 else {
439538 let bayoutAmount = ((getValueItemFundPositive(item) * MULTIPLIER) / 100)
440539 let donateAmount = (pmt.amount - bayoutAmount)
441540 WriteSet([DataEntry(getKeyItemStatus(item), BUYOUT), DataEntry(getKeyItemAccWhaleReviewText(item, account), review), DataEntry(getKeyBalance(getValueItemAuthor(item)), ((getValueBalance(getValueItemAuthor(item)) + getValueItemFundPositive(item)) + donateAmount)), DataEntry(getKeyItemBuyoutAmount(item), bayoutAmount)])
442541 }
443542 }
444543
445544
446545
447546 @Callable(i)
448547 func claimwinnings (item,account) = {
449548 let status = getValueItemStatus(item)
450549 let isbayout = if ((status == BUYOUT))
451550 then 1
452551 else 0
453552 let iscrowdf = if ((status != BUYOUT))
454553 then 1
455554 else 0
456555 let positivefund = getValueItemFundPositive(item)
457556 let negativefund = getValueItemFundNegative(item)
458557 let share = (((isbayout * (getValueItemAccFundPositive(item, account) * 100)) / (if ((0 >= positivefund))
459558 then 1
460559 else positivefund)) + ((iscrowdf * (getValueItemAccFundNegative(item, account) * 100)) / (if ((0 >= negativefund))
461560 then 1
462561 else negativefund)))
463562 let tmpnegwin = ((negativefund * MULTIPLIER) / 100)
464563 let betprofit = ((isbayout * ((share * negativefund) / 100)) + (iscrowdf * ((share * (if ((positivefund > tmpnegwin))
465564 then tmpnegwin
466565 else positivefund)) / 100)))
467566 let roiprofit = (isbayout * ((share * getValueItemBuyoutAmount(item)) / 100))
468567 let authorprofit = (((if ((getValueItemAuthor(item) == account))
469568 then 1
470569 else 0) * positivefund) * (if ((status != BUYOUT))
471570 then 1
472571 else 0))
473572 if ((status == DELISTED))
474573 then throw("The project hasn't accepted by community")
475574 else if ((status == CASHOUT))
476575 then throw("Status is cashout")
477576 else if ((getValueItemAccFinal(item, account) == CLAIMED))
478577 then throw("Status is claimed")
479578 else if (if ((share == 0))
480579 then (authorprofit == 0)
481580 else false)
482581 then throw("The share equals zero")
483582 else if (if ((status != BUYOUT))
484583 then (getValueItemWhaleExpiration(item) >= height)
485584 else false)
486585 then throw("The time for grant has not expired yet")
487586 else if ((0 >= (positivefund + negativefund)))
488587 then throw("The campaign wasn't active")
489588 else WriteSet([DataEntry(getKeyBalance(account), (((getValueBalance(account) + betprofit) + roiprofit) + authorprofit)), DataEntry(getKeyItemStatus(item), if ((authorprofit > 0))
490589 then CASHOUT
491590 else status), DataEntry(getKeyItemAccFinal(item, account), CLAIMED)])
492591 }
493592
494593
495594
496595 @Callable(i)
497596 func transfer (account) = {
498597 let pmt = extract(i.payment)
499598 if (isDefined(pmt.assetId))
500599 then throw("can use waves only at the moment")
501600 else TransferSet([ScriptTransfer(addressFromStringValue(account), pmt.amount, unit)])
502601 }
503602
504603

github/deemru/w8io/6500d08 
114.08 ms