tx · FdRe3XaRXmaPs4zmnWsE67Pa8GQ7N3KMPyJ2pLhqn7Vg

3N3SriwJxLXu8tKJ6XETNUAR6QKwrbJ1Di8:  -0.01400000 Waves

2020.03.13 13:13 [907265] smart account 3N3SriwJxLXu8tKJ6XETNUAR6QKwrbJ1Di8 > SELF 0.00000000 Waves

{ "type": 13, "id": "FdRe3XaRXmaPs4zmnWsE67Pa8GQ7N3KMPyJ2pLhqn7Vg", "fee": 1400000, "feeAssetId": null, "timestamp": 1584094393061, "version": 1, "sender": "3N3SriwJxLXu8tKJ6XETNUAR6QKwrbJ1Di8", "senderPublicKey": "CrNcitaDubV9ih1UB6ZwqLCVrs8oo1HKG57AJ8iszPR7", "proofs": [ "32gBRQXYzLJj2f3C2p7CwYbccPH2s3dmAttsqJQfbJVBNnErjyc2mFs5Xi69bDSUnSyGQ8VNs48FDJY7xmQQg9TM" ], "script": "base64:AAIDAAAAAAAAABQIARIECgICARIDCgEIEgMKAQISAAAAADQAAAAABVdBVkVTAAAAAAAF9eEAAAAAAANVU0QAAAAAAAAAAGQAAAAAFHJvb3RBY2NvdW50UHVibGljS2V5AQAAACCrcYNar2nAbanHx55vZ87tY+HzNn/CgJS1Smp6PXDDFQAAAAAKY29tbWlzc2lvbgAAAAAAAAAAAAAAAAAMb3V0Y29tZUxpbWl0AAAAAAAAACcQAAAAABNwcmVzYWxlT3V0Y29tZUxpbWl0AAAAAAAAACcQAAAAAApjdXJyZW5jeUlkAQAAACAiZD8evmBG6RFqExPcpjP+Fn4H+Xfps/IV/JlJKjAKNwAAAAAMcHJlc2FsZVByaWNlAAAAAAAADDUAAAAAAAVwcmljZQAAAAAAAA9CQAAAAAAJcHJpY2VTdGVwAAAAAAAAAw1AAAAAAA9wcmljZVN0ZXBQZXJpb2QAAAAAAAAAJxAAAAAACXN0YXR1c0tleQIAAAAGc3RhdHVzAAAAAAl3aW5uZXJLZXkCAAAABndpbm5lcgAAAAALcGF1c2VTdGF0dXMCAAAABXBhdXNlAAAAAA1wcmVzYWxlU3RhdHVzAgAAAAdwcmVzYWxlAAAAAApsaXZlU3RhdHVzAgAAAARsaXZlAAAAAA5jb21wbGV0ZVN0YXR1cwIAAAAIY29tcGxldGUAAAAADXBhaWRvdXRTdGF0dXMCAAAAB3BhaWRvdXQBAAAAJXRocm93U2FsZXNJc05vdEF2YWlsYWJsZUluU3RhdHVzRXJyb3IAAAABAAAABnN0YXR1cwkAAAIAAAABCQABLAAAAAIJAAEsAAAAAgIAAAAgc2FsZXNJc05vdEF2YWlsYWJsZUluU3RhdHVzRXJyb3ICAAAAASwFAAAABnN0YXR1cwEAAAAhdGhyb3dOb25leGlzdGVudE91dGNvbWVBc3NldEVycm9yAAAAAQAAAA5vdXRjb21lQXNzZXRJZAkAAAIAAAABCQABLAAAAAICAAAAHW5vbmV4aXN0ZW50T3V0Y29tZUFzc2V0RXJyb3IsCQACWAAAAAEFAAAADm91dGNvbWVBc3NldElkAQAAAC50aHJvd05vdEVub3VnaE91dGNvbWVBc3NldHNJblByZXNhbGVTdG9ja0Vycm9yAAAAAgAAAAthbW91bnRUb0J1eQAAAAdiYWxhbmNlCQAAAgAAAAEJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAApbm90RW5vdWdoT3V0Y29tZUFzc2V0c0luUHJlc2FsZVN0b2NrRXJyb3ICAAAAASwJAAGkAAAAAQUAAAAHYmFsYW5jZQIAAAABLAkAAaQAAAABBQAAAAthbW91bnRUb0J1eQEAAAArdGhyb3dOb3RFbm91Z2hPdXRjb21lQXNzZXRzSW5TYWxlU3RvY2tFcnJvcgAAAAIAAAALYW1vdW50VG9CdXkAAAAHYmFsYW5jZQkAAAIAAAABCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAAJm5vdEVub3VnaE91dGNvbWVBc3NldHNJblNhbGVTdG9ja0Vycm9yAgAAAAEsCQABpAAAAAEFAAAAB2JhbGFuY2UCAAAAASwJAAGkAAAAAQUAAAALYW1vdW50VG9CdXkBAAAAJnRocm93VW5zdXBwb3J0ZWRFdmVudFBheW1lbnRBc3NldEVycm9yAAAAAQAAAA9wYXltZW50Q3VycmVuY3kJAAACAAAAAQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAACF1bnN1cHBvcnRlZEV2ZW50UGF5bWVudEFzc2V0RXJyb3ICAAAAASwJAAJYAAAAAQUAAAAKY3VycmVuY3lJZAIAAAABLAkAAlgAAAABBQAAAA9wYXltZW50Q3VycmVuY3kBAAAAHXRocm93SW5zdWZmaWNpZW50UGF5bWVudEVycm9yAAAAAgAAABVyZWNlaXZlZFBheW1lbnRBbW91bnQAAAAVZXhwZWN0ZWRQYXltZW50QW1vdW50CQAAAgAAAAEJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAYaW5zdWZmaWNpZW50UGF5bWVudEVycm9yAgAAAAEsCQABpAAAAAEFAAAAFWV4cGVjdGVkUGF5bWVudEFtb3VudAIAAAABLAkAAaQAAAABBQAAABVyZWNlaXZlZFBheW1lbnRBbW91bnQBAAAAIHRocm93VW5zdXBwb3J0ZWRFdmVudFN0YXR1c0Vycm9yAAAAAAkAAAIAAAABAgAAABt1bnN1cHBvcnRlZEV2ZW50U3RhdHVzRXJyb3IBAAAAGXRo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cmllcwAAAAMAAAABYQAAAAFkAAAAAW4JAABpAAAAAgkAAGgAAAACBQAAAAFuCQAAZAAAAAIJAABoAAAAAgAAAAAAAAAAAgUAAAABYQkAAGgAAAACCQAAZQAAAAIFAAAAAW4AAAAAAAAAAAEFAAAAAWQAAAAAAAAAAAIBAAAAH2dldFByZXNhbGVPdXRjb21lQW1vdW50U2FsZXNLZXkAAAABAAAADm91dGNvbWVBc3NldElkCQABLAAAAAICAAAAGnByZXNhbGVPdXRjb21lQW1vdW50U2FsZXNfCQACWAAAAAEFAAAADm91dGNvbWVBc3NldElkAQAAABxnZXRQcmVzYWxlT3V0Y29tZUFtb3VudFNhbGVzAAAAAQAAAA5vdXRjb21lQXNzZXRJZAQAAAAccHJlc2FsZU91dGNvbWVBbW91bnRTYWxlc0tleQkBAAAAH2dldFByZXNhbGVPdXRjb21lQW1vdW50U2FsZXNLZXkAAAABBQAAAA5vdXRjb21lQXNzZXRJZAkBAAAAFWdldEludGVnZXJGcm9tQWNjb3VudAAAAAIFAAAABHRoaXMFAAAAHHByZXNhbGVPdXRjb21lQW1vdW50U2FsZXNLZXkBAAAAA3N1bQAAAAEAAAABbgQAAAABeAkAAGkAAAACBQAAAAFuBQAAAA9wcmljZVN0ZXBQZXJpb2QEAAAAB2Z1bGxTdW0JAQAAABBhcml0aG1ldGljU2VyaWVzAAAAAwUAAAAFcHJpY2UFAAAACXByaWNlU3RlcAUAAAABeAkAAGQAAAACCQAAaAAAAAIFAAAAB2Z1bGxTdW0FAAAAD3ByaWNlU3RlcFBlcmlvZAkAAGgAAAACCQAAZQAAAAIJAQAAABBhcml0aG1ldGljU2VyaWVzAAAAAwUAAAAFcHJpY2UFAAAACXByaWNlU3RlcAkAAGQAAAACBQAAAAF4AAAAAAAAAAABBQAAAAdmdWxsU3VtCQAAagAAAAIFAAAAAW4FAAAAD3ByaWNlU3RlcFBlcmlvZAEAAAAMaXNSb290Q2FsbGVyAAAAAQAAAAFpBAAAABNjYWxsZXJBY2NvdW50UHViS2V5CQACWAAAAAEIBQAAAAFpAAAAD2NhbGxlclB1YmxpY0tleQQAAAARcm9vdEFjY291bnRQdWJLZXkJAAJYAAAAAQUAAAAUcm9vdEFjY291bnRQdWJsaWNLZXkDCQAAAAAAAAIFAAAAE2NhbGxlckFjY291bnRQdWJLZXkFAAAAEXJvb3RBY2NvdW50UHViS2V5BgcBAAAAC2Ftb3VudFRvUGF5AAAAAgAAAAthbHJlYWR5U29sZAAAAAthbW91bnRUb0J1eQkAAGUAAAACCQEAAAADc3VtAAAAAQkAAGQAAAACBQAAAAthbHJlYWR5U29sZAUAAAALYW1vdW50VG9CdXkJAQAAAANzdW0AAAABBQAAAAthbHJlYWR5U29sZAEAAAAPcHJlc2FsZVN0cmF0ZWd5AAAABQAAAA9jdXN0b21lckFkZHJlc3MAAAAOb3V0Y29tZUFzc2V0SWQAAAANcGF5bWVudEFtb3VudAAAABJvdXRjb21lQW1vdW50VG9CdXkAAAAZb3V0Y29tZUFtb3VudEV2ZW50QmFsYW5jZQQAAAAYb3V0Y29tZUFtb3VudEFscmVhZHlTb2xkCQAAZQAAAAIFAAAADG91dGNvbWVMaW1pdAUAAAAZb3V0Y29tZUFtb3VudEV2ZW50QmFsYW5jZQQAAAAlb3V0Y29tZUFtb3VudEF2YWlsYWJsZUluUHJlc2FsZVBlcmlvZAkAAGUAAAACBQAAABNwcmVzYWxlT3V0Y29tZUxpbWl0BQAAABhvdXRjb21lQW1vdW50QWxyZWFkeVNvbGQEAAAAHG91dGNvbWVSZXF1aXJlZFBheW1lbnRBbW91bnQJAABoAAAAAgUAAAAMcHJlc2FsZVByaWNlBQAAABJvdXRjb21lQW1vdW50VG9CdXkDCQAAZgAAAAIFAAAAEm91dGNvbWVBbW91bnRUb0J1eQUAAAAlb3V0Y29tZUFtb3VudEF2YWlsYWJsZUluUHJlc2FsZVBlcmlvZAkBAAAALnRocm93Tm90RW5vdWdoT3V0Y29tZUFzc2V0c0luUHJlc2FsZVN0b2NrRXJyb3IAAAACBQAAABJvdXRjb21lQW1vdW50VG9CdXkFAAAAJW91dGNvbWVBbW91bnRBdmFpbGFibGVJblByZXNhbGVQZXJpb2QDCQEAAAACIT0AAAACBQAAAA1wYXltZW50QW1vdW50BQAAABxvdXRjb21lUmVxdWlyZWRQYXltZW50QW1vdW50CQEAAAAddGhyb3dJbnN1ZmZpY2llbnRQYXltZW50RXJyb3IAAAACBQAAAA1wYXltZW50QW1vdW50BQAAABxvdXRjb21lUmVxdWlyZWRQYXltZW50QW1vdW50BAAAABxwcmVzYWxlT3V0Y29tZUFtb3VudFNhbGVzS2V5CQEAAAAfZ2V0UHJlc2FsZU91dGNvbWVBbW91bnRTYWxlc0tleQAAAAEFAAAADm91dGNvbWVBc3NldElkBAAAACBjdXJyZW50UHJlc2FsZU91dGNvbWVBbW91bnRTYWxlcwkBAAAAHGdldFByZXNhbGVPdXRjb21lQW1vdW50U2FsZXMAAAABBQAAAA5vdXRjb21lQXNzZXRJZAQAAAAcbmV3UHJlc2FsZU91dGNvbWVBbW91bnRTYWxlcwkAAGQAAAACBQAAACBjdXJyZW50UHJlc2FsZU91dGNvbWVBbW91bnRTYWxlcwUAAAASb3V0Y29tZUFtb3VudFRvQnV5BAAAAAh3cml0ZVNldAkBAAAACFdyaXRlU2V0AAAAAQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgUAAAAccHJlc2FsZU91dGNvbWVBbW91bnRTYWxlc0tleQUAAAAcbmV3UHJlc2FsZU91dGNvbWVBbW91bnRTYWxlcwUAAAADbmlsBAAAAAt0cmFuc2ZlclNldAkBAAAAC1RyYW5zZmVyU2V0AAAAAQkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADBQAAAA9jdXN0b21lckFkZHJlc3MFAAAAEm91dGNvbWVBbW91bnRUb0J1eQUAAAAOb3V0Y29tZUFzc2V0SWQFAAAAA25pbAkBAAAADFNjcmlwdFJlc3VsdAAAAAIFAAAACHdyaXRlU2V0BQAAAAt0cmFuc2ZlclNldAEAAAAMbGl2ZVN0cmF0ZWd5AAAABQAAAA9jdXN0b21lckFkZHJlc3MAAAAOb3V0Y29tZUFzc2V0SWQAAAANcGF5bWVudEFtb3VudAAAABJvdXRjb21lQW1vdW50VG9CdXkAAAAZb3V0Y29tZUFtb3VudEV2ZW50QmFsYW5jZQQAAAAZcHJlc2FsZU91dGNvbWVBbW91bnRTYWxlcwkBAAAAHGdldFByZXNhbGVPdXRjb21lQW1vdW50U2FsZXMAAAABBQAAAA5vdXRjb21lQXNzZXRJZAQAAAAYb3V0Y29tZUFtb3VudEFscmVhZHlTb2xkCQAAZQAAAAIJAABlAAAAAgUAAAAMb3V0Y29tZUxpbWl0BQAAABlwcmVzYWxlT3V0Y29tZUFtb3VudFNhbGVzBQAAABlvdXRjb21lQW1vdW50RXZlbnRCYWxhbmNlBAAAABxvdXRjb21lUmVxdWlyZWRQYXltZW50QW1vdW50CQEAAAALYW1vdW50VG9QYXkAAAACBQAAABhvdXRjb21lQW1vdW50QWxyZWFkeVNvbGQFAAAAEm91dGNvbWVBbW91bnRUb0J1eQMJAABmAAAAAgUAAAASb3V0Y29tZUFtb3VudFRvQnV5BQAAABlvdXRjb21lQW1vdW50RXZlbnRCYWxhbmNlCQEAAAArdGhyb3dOb3RFbm91Z2hPdXRjb21lQXNzZXRzSW5TYWxlU3RvY2tFcnJvcgAAAAIFAAAAEm91dGNvbWVBbW91bnRUb0J1eQUAAAAZb3V0Y29tZUFtb3VudEV2ZW50QmFsYW5jZQMJAQAAAAIhPQAAAAIFAAAADXBheW1lbnRBbW91bnQFAAAAHG91dGNvbWVSZXF1aXJlZFBheW1lbnRBbW91bnQJAQAAAB10aHJvd0luc3VmZmljaWVudFBheW1lbnRFcnJvcgAAAAIFAAAADXBheW1lbnRBbW91bnQFAAAAHG91dGNvbWVSZXF1aXJlZFBheW1lbnRBbW91bnQJAQAAAAtUcmFuc2ZlclNldAAAAAEJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwUAAAAPY3VzdG9tZXJBZGRyZXNzBQAAABJvdXRjb21lQW1vdW50VG9CdXkFAAAADm91dGNvbWVBc3NldElkBQAAAANuaWwAAAAEAAAAAWkBAAAAD2J1eU91dGNvbWVUb2tlbgAAAAIAAAAOb3V0Y29tZUFzc2V0SWQAAAASb3V0Y29tZUFtb3VudFRvQnV5BAAAAA9jdXN0b21lckFkZHJlc3MIBQAAAAFpAAAABmNhbGxlcgQAAAAZb3V0Y29tZUFtb3VudEV2ZW50QmFsYW5jZQkAA+sAAAACBQAAAAR0aGlzBQAAAA5vdXRjb21lQXNzZXRJZAQAAAAGc3RhdHVzCQEAAAAJZ2V0U3RhdHVzAAAAAAQAAAAHcGF5bWVudAkBAAAACmdldFBheW1lbnQAAAABBQAAAAFpBAAAAA1wYXltZW50QW1vdW50CAUAAAAHcGF5bWVudAAAAAZhbW91bnQEAAAADnBheW1lbnRBc3NldElkCQEAAAARZ2V0UGF5bWVudEFzc2V0SWQAAAABBQAAAAdwYXltZW50BAAAABppc05vdFN1cHBvcnRlZFBheW1lbnRBc3NldAkBAAAAAiE9AAAAAgUAAAAOcGF5bWVudEFzc2V0SWQFAAAACmN1cnJlbmN5SWQEAAAAD2lzUHJlc2FsZVN0YXR1cwkAAAAAAAACBQAAAAZzdGF0dXMFAAAADXByZXNhbGVTdGF0dXMEAAAADGlzTGl2ZVN0YXR1cwkAAAAAAAACBQAAAAZzdGF0dXMFAAAACmxpdmVTdGF0dXMEAAAAEGlzU2FsZXNBdmFpbGFibGUDBQAAAA9pc1ByZXNhbGVTdGF0dXMGBQAAAAxpc0xpdmVTdGF0dXMDCQAAAAAAAAIFAAAAGW91dGNvbWVBbW91bnRFdmVudEJhbGFuY2UAAAAAAAAAAAAJAQAAACF0aHJvd05vbmV4aXN0ZW50T3V0Y29tZUFzc2V0RXJyb3IAAAABBQAAAA5vdXRjb21lQXNzZXRJZAMFAAAAGmlzTm90U3VwcG9ydGVkUGF5bWVudEFzc2V0CQEAAAAmdGhyb3dVbnN1cHBvcnRlZEV2ZW50UGF5bWVudEFzc2V0RXJyb3IAAAABBQAAAA5wYXltZW50QXNzZXRJZAMJAQAAAAEhAAAAAQUAAAAQaXNTYWxlc0F2YWlsYWJsZQkBAAAAJXRocm93U2FsZXNJc05vdEF2YWlsYWJsZUluU3RhdHVzRXJyb3IAAAABBQAAAAZzdGF0dXMDBQAAAA9pc1ByZXNhbGVTdGF0dXMJAQAAAA9wcmVzYWxlU3RyYXRlZ3kAAAAFBQAAAA9jdXN0b21lckFkZHJlc3MFAAAADm91dGNvbWVBc3NldElkBQAAAA1wYXltZW50QW1vdW50BQAAABJvdXRjb21lQW1vdW50VG9CdXkFAAAAGW91dGNvbWVBbW91bnRFdmVudEJhbGFuY2UDBQAAAAxpc0xpdmVTdGF0dXMJAQAAAAxsaXZlU3RyYXRlZ3kAAAAFBQAAAA9jdXN0b21lckFkZHJlc3MFAAAADm91dGNvbWVBc3NldElkBQAAAA1wYXltZW50QW1vdW50BQAAABJvdXRjb21lQW1vdW50VG9CdXkFAAAAGW91dGNvbWVBbW91bnRFdmVudEJhbGFuY2UJAQAAABN0aHJvd1VuZGVmaW5lZEVycm9yAAAAAAAAAAFpAQAAAAxjaGFuZ2VTdGF0dXMAAAABAAAACW5ld1N0YXR1cwMJAQAAAAEhAAAAAQkBAAAAEWlzU3VwcG9ydGVkU3RhdHVzAAAAAQUAAAAJbmV3U3RhdHVzCQEAAAAgdGhyb3dVbnN1cHBvcnRlZEV2ZW50U3RhdHVzRXJyb3IAAAAAAwkBAAAAASEAAAABCQEAAAAMaXNSb290Q2FsbGVyAAAAAQUAAAABaQkBAAAAGXRocm93SXNOb3RSb290Q2FsbGVyRXJyb3IAAAAACQEAAAAIV3JpdGVTZXQAAAABCQAETAAAAAIJAQAAAAlzZXRTdGF0dXMAAAABBQAAAAluZXdTdGF0dXMFAAAAA25pbAAAAAFpAQAAAAxjaGFuZ2VXaW5uZXIAAAABAAAACW5ld1dpbm5lcgMJAQAAAAEhAAAAAQkBAAAADGlzUm9vdENhbGxlcgAAAAEFAAAAAWkJAQAAABl0aHJvd0lzTm90Um9vdENhbGxlckVycm9yAAAAAAQAAAAGc3RhdHVzCQEAAAAJZ2V0U3RhdHVzAAAAAAQAAAAQaXNDb21wbGV0ZVN0YXR1cwkAAAAAAAACBQAAAAZzdGF0dXMFAAAADmNvbXBsZXRlU3RhdHVzAwUAAAAQaXNDb21wbGV0ZVN0YXR1cwkBAAAACFdyaXRlU2V0AAAAAQkABEwAAAACCQEAAAAJc2V0V2lubmVyAAAAAQUAAAAJbmV3V2lubmVyBQAAAANuaWwJAQAAAAhXcml0ZVNldAAAAAEJAARMAAAAAgkBAAAACXNldFdpbm5lcgAAAAEFAAAACW5ld1dpbm5lcgkABEwAAAACCQEAAAAJc2V0U3RhdHVzAAAAAQUAAAAOY29tcGxldGVTdGF0dXMFAAAAA25pbAAAAAFpAQAAABFjb2xsZWN0Q29tbWlzc2lvbgAAAAADCQEAAAABIQAAAAEJAQAAAAxpc1Jvb3RDYWxsZXIAAAABBQAAAAFpCQEAAAAZdGhyb3dJc05vdFJvb3RDYWxsZXJFcnJvcgAAAAAEAAAABnN0YXR1cwkBAAAACWdldFN0YXR1cwAAAAAEAAAAD2lzUGFpZG91dFN0YXR1cwkAAAAAAAACBQAAAAZzdGF0dXMFAAAADXBhaWRvdXRTdGF0dXMEAAAAEnJvb3RBY2NvdW50QWRkcmVzcwkBAAAAFGFkZHJlc3NGcm9tUHVibGljS2V5AAAAAQUAAAAUcm9vdEFjY291bnRQdWJsaWNLZXkDCQEAAAABIQAAAAEFAAAAD2lzUGFpZG91dFN0YXR1cwkBAAAAIHRocm93VW5zdXBwb3J0ZWRFdmVudFN0YXR1c0Vycm9yAAAAAAkBAAAAC1RyYW5zZmVyU2V0AAAAAQkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADBQAAABJyb290QWNjb3VudEFkZHJlc3MJAAPrAAAAAgUAAAAEdGhpcwUAAAAKY3VycmVuY3lJZAUAAAAKY3VycmVuY3lJZAUAAAADbmlsAAAAAGNXKI4=", "chainId": 84, "height": 907265, "spentComplexity": 0 } View: original | compacted Prev: HUVp6MthvzfhZUEtuExDzxxSZ8jXuP7ycDP9YPYonQMz Next: none Diff:
OldNewDifferences
55
66 let USD = 100
77
8-let rootAccountPublicKey = base58''
8+let rootAccountPublicKey = base58'CYF7FumpbZzyHMFuFQRQfo9XC9veJemd3XuBkusRCcAg'
99
10-let ligaCommission = 0
10+let commission = 0
1111
12-let totalAssetsPerOutcome = 0
12+let outcomeLimit = 10000
1313
14-let presaleMaxAssetsPerOutcome = 0
14+let presaleOutcomeLimit = 10000
1515
16-let eventCurrencyId = base58''
16+let currencyId = base58'3KFXBGGLCjA5Z2DuW4Dq9fDDrHjJJP1ZEkaoajSzuKsC'
1717
18-let presalePrice = 0
18+let presalePrice = 800000
1919
20-let livePrice = 0
20+let price = 1000000
2121
22-let livePriceStep = 0
22+let priceStep = 200000
2323
24-let livePriceStepPeriod = 0
24+let priceStepPeriod = 10000
2525
2626 let statusKey = "status"
27+
28+let winnerKey = "winner"
2729
2830 let pauseStatus = "pause"
2931
3335
3436 let completeStatus = "complete"
3537
36-let payoutStatus = "payout"
38+let paidoutStatus = "paidout"
3739
3840 func throwSalesIsNotAvailableInStatusError (status) = throw((("salesIsNotAvailableInStatusError" + ",") + status))
3941
4749 func throwNotEnoughOutcomeAssetsInSaleStockError (amountToBuy,balance) = throw((((("notEnoughOutcomeAssetsInSaleStockError" + ",") + toString(balance)) + ",") + toString(amountToBuy)))
4850
4951
50-func throwUnsupportedEventPaymentAssetError (paymentCurrency) = throw((((("unsupportedEventPaymentAssetError" + ",") + toBase58String(eventCurrencyId)) + ",") + toBase58String(paymentCurrency)))
52+func throwUnsupportedEventPaymentAssetError (paymentCurrency) = throw((((("unsupportedEventPaymentAssetError" + ",") + toBase58String(currencyId)) + ",") + toBase58String(paymentCurrency)))
5153
5254
5355 func throwInsufficientPaymentError (receivedPaymentAmount,expectedPaymentAmount) = throw((((("insufficientPaymentError" + ",") + toString(expectedPaymentAmount)) + ",") + toString(receivedPaymentAmount)))
100102 then true
101103 else (status == completeStatus))
102104 then true
103- else (status == payoutStatus)
105+ else (status == paidoutStatus)
104106
105107
106108 func getStatus () = getStr(statusKey)
107109
108110
109111 func setStatus (status) = setStr(statusKey, status)
112+
113+
114+func getWinner () = getBytes(winnerKey)
115+
116+
117+func setWinner (winner) = setBytes(winnerKey, winner)
110118
111119
112120 func getPayment (i) = valueOrErrorMessage(i.payment, noPaymentError)
143151
144152
145153 func sum (n) = {
146- let x = (n / livePriceStepPeriod)
147- let fullSum = arithmeticSeries(livePrice, livePriceStep, x)
148- ((fullSum * livePriceStepPeriod) + ((arithmeticSeries(livePrice, livePriceStep, (x + 1)) - fullSum) * (n % livePriceStepPeriod)))
154+ let x = (n / priceStepPeriod)
155+ let fullSum = arithmeticSeries(price, priceStep, x)
156+ ((fullSum * priceStepPeriod) + ((arithmeticSeries(price, priceStep, (x + 1)) - fullSum) * (n % priceStepPeriod)))
149157 }
150158
151159
162170
163171
164172 func presaleStrategy (customerAddress,outcomeAssetId,paymentAmount,outcomeAmountToBuy,outcomeAmountEventBalance) = {
165- let outcomeAmountAlreadySold = (totalAssetsPerOutcome - outcomeAmountEventBalance)
166- let outcomeAmountAvailableInPresalePeriod = (presaleMaxAssetsPerOutcome - outcomeAmountAlreadySold)
173+ let outcomeAmountAlreadySold = (outcomeLimit - outcomeAmountEventBalance)
174+ let outcomeAmountAvailableInPresalePeriod = (presaleOutcomeLimit - outcomeAmountAlreadySold)
167175 let outcomeRequiredPaymentAmount = (presalePrice * outcomeAmountToBuy)
168176 if ((outcomeAmountToBuy > outcomeAmountAvailableInPresalePeriod))
169177 then throwNotEnoughOutcomeAssetsInPresaleStockError(outcomeAmountToBuy, outcomeAmountAvailableInPresalePeriod)
182190
183191 func liveStrategy (customerAddress,outcomeAssetId,paymentAmount,outcomeAmountToBuy,outcomeAmountEventBalance) = {
184192 let presaleOutcomeAmountSales = getPresaleOutcomeAmountSales(outcomeAssetId)
185- let outcomeAmountAlreadySold = ((totalAssetsPerOutcome - presaleOutcomeAmountSales) - outcomeAmountEventBalance)
193+ let outcomeAmountAlreadySold = ((outcomeLimit - presaleOutcomeAmountSales) - outcomeAmountEventBalance)
186194 let outcomeRequiredPaymentAmount = amountToPay(outcomeAmountAlreadySold, outcomeAmountToBuy)
187195 if ((outcomeAmountToBuy > outcomeAmountEventBalance))
188196 then throwNotEnoughOutcomeAssetsInSaleStockError(outcomeAmountToBuy, outcomeAmountEventBalance)
200208 let payment = getPayment(i)
201209 let paymentAmount = payment.amount
202210 let paymentAssetId = getPaymentAssetId(payment)
203- let isNotSupportedPaymentAsset = (paymentAssetId != eventCurrencyId)
211+ let isNotSupportedPaymentAsset = (paymentAssetId != currencyId)
204212 let isPresaleStatus = (status == presaleStatus)
205213 let isLiveStatus = (status == liveStatus)
206214 let isSalesAvailable = if (isPresaleStatus)
229237 else WriteSet([setStatus(newStatus)])
230238
231239
240+
241+@Callable(i)
242+func changeWinner (newWinner) = if (!(isRootCaller(i)))
243+ then throwIsNotRootCallerError()
244+ else {
245+ let status = getStatus()
246+ let isCompleteStatus = (status == completeStatus)
247+ if (isCompleteStatus)
248+ then WriteSet([setWinner(newWinner)])
249+ else WriteSet([setWinner(newWinner), setStatus(completeStatus)])
250+ }
251+
252+
253+
254+@Callable(i)
255+func collectCommission () = if (!(isRootCaller(i)))
256+ then throwIsNotRootCallerError()
257+ else {
258+ let status = getStatus()
259+ let isPaidoutStatus = (status == paidoutStatus)
260+ let rootAccountAddress = addressFromPublicKey(rootAccountPublicKey)
261+ if (!(isPaidoutStatus))
262+ then throwUnsupportedEventStatusError()
263+ else TransferSet([ScriptTransfer(rootAccountAddress, assetBalance(this, currencyId), currencyId)])
264+ }
265+
266+
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 3 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let WAVES = 100000000
55
66 let USD = 100
77
8-let rootAccountPublicKey = base58''
8+let rootAccountPublicKey = base58'CYF7FumpbZzyHMFuFQRQfo9XC9veJemd3XuBkusRCcAg'
99
10-let ligaCommission = 0
10+let commission = 0
1111
12-let totalAssetsPerOutcome = 0
12+let outcomeLimit = 10000
1313
14-let presaleMaxAssetsPerOutcome = 0
14+let presaleOutcomeLimit = 10000
1515
16-let eventCurrencyId = base58''
16+let currencyId = base58'3KFXBGGLCjA5Z2DuW4Dq9fDDrHjJJP1ZEkaoajSzuKsC'
1717
18-let presalePrice = 0
18+let presalePrice = 800000
1919
20-let livePrice = 0
20+let price = 1000000
2121
22-let livePriceStep = 0
22+let priceStep = 200000
2323
24-let livePriceStepPeriod = 0
24+let priceStepPeriod = 10000
2525
2626 let statusKey = "status"
27+
28+let winnerKey = "winner"
2729
2830 let pauseStatus = "pause"
2931
3032 let presaleStatus = "presale"
3133
3234 let liveStatus = "live"
3335
3436 let completeStatus = "complete"
3537
36-let payoutStatus = "payout"
38+let paidoutStatus = "paidout"
3739
3840 func throwSalesIsNotAvailableInStatusError (status) = throw((("salesIsNotAvailableInStatusError" + ",") + status))
3941
4042
4143 func throwNonexistentOutcomeAssetError (outcomeAssetId) = throw(("nonexistentOutcomeAssetError," + toBase58String(outcomeAssetId)))
4244
4345
4446 func throwNotEnoughOutcomeAssetsInPresaleStockError (amountToBuy,balance) = throw((((("notEnoughOutcomeAssetsInPresaleStockError" + ",") + toString(balance)) + ",") + toString(amountToBuy)))
4547
4648
4749 func throwNotEnoughOutcomeAssetsInSaleStockError (amountToBuy,balance) = throw((((("notEnoughOutcomeAssetsInSaleStockError" + ",") + toString(balance)) + ",") + toString(amountToBuy)))
4850
4951
50-func throwUnsupportedEventPaymentAssetError (paymentCurrency) = throw((((("unsupportedEventPaymentAssetError" + ",") + toBase58String(eventCurrencyId)) + ",") + toBase58String(paymentCurrency)))
52+func throwUnsupportedEventPaymentAssetError (paymentCurrency) = throw((((("unsupportedEventPaymentAssetError" + ",") + toBase58String(currencyId)) + ",") + toBase58String(paymentCurrency)))
5153
5254
5355 func throwInsufficientPaymentError (receivedPaymentAmount,expectedPaymentAmount) = throw((((("insufficientPaymentError" + ",") + toString(expectedPaymentAmount)) + ",") + toString(receivedPaymentAmount)))
5456
5557
5658 func throwUnsupportedEventStatusError () = throw("unsupportedEventStatusError")
5759
5860
5961 func throwIsNotRootCallerError () = throw("isNotRootCallerError")
6062
6163
6264 let noPaymentError = "noPaymentError"
6365
6466 func throwUndefinedError () = throw("undefinedError")
6567
6668
6769 func getIntOr (key,default) = if (isDefined(getInteger(this, key)))
6870 then getIntegerValue(this, key)
6971 else default
7072
7173
7274 func getStringOr (key,default) = if (isDefined(getInteger(this, key)))
7375 then getStringValue(this, key)
7476 else default
7577
7678
7779 func getInt (key) = getIntegerValue(this, key)
7880
7981
8082 func setInt (key,value) = DataEntry(key, value)
8183
8284
8385 func getStr (key) = getStringValue(this, key)
8486
8587
8688 func setStr (key,value) = DataEntry(key, value)
8789
8890
8991 func setBytes (key,value) = DataEntry(key, value)
9092
9193
9294 func getBytes (key) = getBinaryValue(this, key)
9395
9496
9597 func isSupportedStatus (status) = if (if (if (if ((status == pauseStatus))
9698 then true
9799 else (status == presaleStatus))
98100 then true
99101 else (status == liveStatus))
100102 then true
101103 else (status == completeStatus))
102104 then true
103- else (status == payoutStatus)
105+ else (status == paidoutStatus)
104106
105107
106108 func getStatus () = getStr(statusKey)
107109
108110
109111 func setStatus (status) = setStr(statusKey, status)
112+
113+
114+func getWinner () = getBytes(winnerKey)
115+
116+
117+func setWinner (winner) = setBytes(winnerKey, winner)
110118
111119
112120 func getPayment (i) = valueOrErrorMessage(i.payment, noPaymentError)
113121
114122
115123 func getPaymentAssetId (payment) = match payment.assetId {
116124 case assetId: ByteVector =>
117125 assetId
118126 case assetId: Unit =>
119127 fromBase58String("WAVES")
120128 case _ =>
121129 throw()
122130 }
123131
124132
125133 func getIntegerFromAccount (accountAddress,key) = match getInteger(accountAddress, key) {
126134 case i: Int =>
127135 i
128136 case _ =>
129137 0
130138 }
131139
132140
133141 func arithmeticSeries (a,d,n) = ((n * ((2 * a) + ((n - 1) * d))) / 2)
134142
135143
136144 func getPresaleOutcomeAmountSalesKey (outcomeAssetId) = ("presaleOutcomeAmountSales_" + toBase58String(outcomeAssetId))
137145
138146
139147 func getPresaleOutcomeAmountSales (outcomeAssetId) = {
140148 let presaleOutcomeAmountSalesKey = getPresaleOutcomeAmountSalesKey(outcomeAssetId)
141149 getIntegerFromAccount(this, presaleOutcomeAmountSalesKey)
142150 }
143151
144152
145153 func sum (n) = {
146- let x = (n / livePriceStepPeriod)
147- let fullSum = arithmeticSeries(livePrice, livePriceStep, x)
148- ((fullSum * livePriceStepPeriod) + ((arithmeticSeries(livePrice, livePriceStep, (x + 1)) - fullSum) * (n % livePriceStepPeriod)))
154+ let x = (n / priceStepPeriod)
155+ let fullSum = arithmeticSeries(price, priceStep, x)
156+ ((fullSum * priceStepPeriod) + ((arithmeticSeries(price, priceStep, (x + 1)) - fullSum) * (n % priceStepPeriod)))
149157 }
150158
151159
152160 func isRootCaller (i) = {
153161 let callerAccountPubKey = toBase58String(i.callerPublicKey)
154162 let rootAccountPubKey = toBase58String(rootAccountPublicKey)
155163 if ((callerAccountPubKey == rootAccountPubKey))
156164 then true
157165 else false
158166 }
159167
160168
161169 func amountToPay (alreadySold,amountToBuy) = (sum((alreadySold + amountToBuy)) - sum(alreadySold))
162170
163171
164172 func presaleStrategy (customerAddress,outcomeAssetId,paymentAmount,outcomeAmountToBuy,outcomeAmountEventBalance) = {
165- let outcomeAmountAlreadySold = (totalAssetsPerOutcome - outcomeAmountEventBalance)
166- let outcomeAmountAvailableInPresalePeriod = (presaleMaxAssetsPerOutcome - outcomeAmountAlreadySold)
173+ let outcomeAmountAlreadySold = (outcomeLimit - outcomeAmountEventBalance)
174+ let outcomeAmountAvailableInPresalePeriod = (presaleOutcomeLimit - outcomeAmountAlreadySold)
167175 let outcomeRequiredPaymentAmount = (presalePrice * outcomeAmountToBuy)
168176 if ((outcomeAmountToBuy > outcomeAmountAvailableInPresalePeriod))
169177 then throwNotEnoughOutcomeAssetsInPresaleStockError(outcomeAmountToBuy, outcomeAmountAvailableInPresalePeriod)
170178 else if ((paymentAmount != outcomeRequiredPaymentAmount))
171179 then throwInsufficientPaymentError(paymentAmount, outcomeRequiredPaymentAmount)
172180 else {
173181 let presaleOutcomeAmountSalesKey = getPresaleOutcomeAmountSalesKey(outcomeAssetId)
174182 let currentPresaleOutcomeAmountSales = getPresaleOutcomeAmountSales(outcomeAssetId)
175183 let newPresaleOutcomeAmountSales = (currentPresaleOutcomeAmountSales + outcomeAmountToBuy)
176184 let writeSet = WriteSet([DataEntry(presaleOutcomeAmountSalesKey, newPresaleOutcomeAmountSales)])
177185 let transferSet = TransferSet([ScriptTransfer(customerAddress, outcomeAmountToBuy, outcomeAssetId)])
178186 ScriptResult(writeSet, transferSet)
179187 }
180188 }
181189
182190
183191 func liveStrategy (customerAddress,outcomeAssetId,paymentAmount,outcomeAmountToBuy,outcomeAmountEventBalance) = {
184192 let presaleOutcomeAmountSales = getPresaleOutcomeAmountSales(outcomeAssetId)
185- let outcomeAmountAlreadySold = ((totalAssetsPerOutcome - presaleOutcomeAmountSales) - outcomeAmountEventBalance)
193+ let outcomeAmountAlreadySold = ((outcomeLimit - presaleOutcomeAmountSales) - outcomeAmountEventBalance)
186194 let outcomeRequiredPaymentAmount = amountToPay(outcomeAmountAlreadySold, outcomeAmountToBuy)
187195 if ((outcomeAmountToBuy > outcomeAmountEventBalance))
188196 then throwNotEnoughOutcomeAssetsInSaleStockError(outcomeAmountToBuy, outcomeAmountEventBalance)
189197 else if ((paymentAmount != outcomeRequiredPaymentAmount))
190198 then throwInsufficientPaymentError(paymentAmount, outcomeRequiredPaymentAmount)
191199 else TransferSet([ScriptTransfer(customerAddress, outcomeAmountToBuy, outcomeAssetId)])
192200 }
193201
194202
195203 @Callable(i)
196204 func buyOutcomeToken (outcomeAssetId,outcomeAmountToBuy) = {
197205 let customerAddress = i.caller
198206 let outcomeAmountEventBalance = assetBalance(this, outcomeAssetId)
199207 let status = getStatus()
200208 let payment = getPayment(i)
201209 let paymentAmount = payment.amount
202210 let paymentAssetId = getPaymentAssetId(payment)
203- let isNotSupportedPaymentAsset = (paymentAssetId != eventCurrencyId)
211+ let isNotSupportedPaymentAsset = (paymentAssetId != currencyId)
204212 let isPresaleStatus = (status == presaleStatus)
205213 let isLiveStatus = (status == liveStatus)
206214 let isSalesAvailable = if (isPresaleStatus)
207215 then true
208216 else isLiveStatus
209217 if ((outcomeAmountEventBalance == 0))
210218 then throwNonexistentOutcomeAssetError(outcomeAssetId)
211219 else if (isNotSupportedPaymentAsset)
212220 then throwUnsupportedEventPaymentAssetError(paymentAssetId)
213221 else if (!(isSalesAvailable))
214222 then throwSalesIsNotAvailableInStatusError(status)
215223 else if (isPresaleStatus)
216224 then presaleStrategy(customerAddress, outcomeAssetId, paymentAmount, outcomeAmountToBuy, outcomeAmountEventBalance)
217225 else if (isLiveStatus)
218226 then liveStrategy(customerAddress, outcomeAssetId, paymentAmount, outcomeAmountToBuy, outcomeAmountEventBalance)
219227 else throwUndefinedError()
220228 }
221229
222230
223231
224232 @Callable(i)
225233 func changeStatus (newStatus) = if (!(isSupportedStatus(newStatus)))
226234 then throwUnsupportedEventStatusError()
227235 else if (!(isRootCaller(i)))
228236 then throwIsNotRootCallerError()
229237 else WriteSet([setStatus(newStatus)])
230238
231239
240+
241+@Callable(i)
242+func changeWinner (newWinner) = if (!(isRootCaller(i)))
243+ then throwIsNotRootCallerError()
244+ else {
245+ let status = getStatus()
246+ let isCompleteStatus = (status == completeStatus)
247+ if (isCompleteStatus)
248+ then WriteSet([setWinner(newWinner)])
249+ else WriteSet([setWinner(newWinner), setStatus(completeStatus)])
250+ }
251+
252+
253+
254+@Callable(i)
255+func collectCommission () = if (!(isRootCaller(i)))
256+ then throwIsNotRootCallerError()
257+ else {
258+ let status = getStatus()
259+ let isPaidoutStatus = (status == paidoutStatus)
260+ let rootAccountAddress = addressFromPublicKey(rootAccountPublicKey)
261+ if (!(isPaidoutStatus))
262+ then throwUnsupportedEventStatusError()
263+ else TransferSet([ScriptTransfer(rootAccountAddress, assetBalance(this, currencyId), currencyId)])
264+ }
265+
266+

github/deemru/w8io/873ac7e 
41.10 ms