tx · Emfa2tfzvpTE3ndbcsTJBJ8qo5rcHgsWwj3v7NJkLzqj

3Mu7VYYXCdKzYgHbTRTiR2GcmRjdKwpcXtx:  -0.01400000 Waves

2019.11.15 12:02 [765985] smart account 3Mu7VYYXCdKzYgHbTRTiR2GcmRjdKwpcXtx > SELF 0.00000000 Waves

{ "type": 13, "id": "Emfa2tfzvpTE3ndbcsTJBJ8qo5rcHgsWwj3v7NJkLzqj", "fee": 1400000, "feeAssetId": null, "timestamp": 1573808415034, "version": 1, "sender": "3Mu7VYYXCdKzYgHbTRTiR2GcmRjdKwpcXtx", "senderPublicKey": "7hst8L8bJqbcGbPC9DbHZ5E83dQ3LXayYttNsUbgZt7r", "proofs": [ "2xFUVf5tf4ttN1Ac2j9HqjtCv2JYihNQhkwYCD9FoPfqzon82duc7WetvUTcfvRHXUvhrgKkeaMfugiVModgtQ9T" ], "script": "base64:AAIDAAAAAAAAAA0IARIECgICARIDCgEIAAAANQAAAAAUYnV5T3V0Y29tZVRva2VuVHhGZWUAAAAAAAAHoSAAAAAABVdBVkVTAAAAAAAF9eEAAAAAAANVU0QAAAAAAAAAAGQAAAAAFHJvb3RBY2NvdW50UHVibGljS2V5AQAAACCrcYNar2nAbanHx55vZ87tY+HzNn/CgJS1Smp6PXDDFQAAAAAObGlnYUNvbW1pc3Npb24AAAAAAAAAAAAAAAAAFXRvdGFsQXNzZXRzUGVyT3V0Y29tZQAAAAAAAAAnEAAAAAAacHJlc2FsZU1heEFzc2V0c1Blck91dGNvbWUAAAAAAAAAC7gAAAAAD2V2ZW50Q3VycmVuY3lJZAEAAAAgs6vtjrjcYSSyYVbetNsiFAS7MHCRF2JJuH+9FCzTMzcAAAAADHByZXNhbGVQcmljZQAAAAAAAAAD6AAAAAAJbGl2ZVByaWNlAAAAAAAAABOIAAAAAA1saXZlUHJpY2VTdGVwAAAAAAAAAAH0AAAAABNsaXZlUHJpY2VTdGVwUGVyaW9kAAAAAAAAAABkAAAAAAlzdGF0dXNLZXkCAAAABnN0YXR1cwAAAAALcGF1c2VTdGF0dXMCAAAABXBhdXNlAAAAAA1wcmVzYWxlU3RhdHVzAgAAAAdwcmVzYWxlAAAAAApsaXZlU3RhdHVzAgAAAARsaXZlAAAAAA5jb21wbGV0ZVN0YXR1cwIAAAAIY29tcGxldGUAAAAADHBheW91dFN0YXR1cwIAAAAGcGF5b3V0AQAAACV0aHJvd1NhbGVzSXNOb3RBdmFpbGFibGVJblN0YXR1c0Vycm9yAAAAAQAAAAZzdGF0dXMJAAACAAAAAQkAASwAAAACCQABLAAAAAICAAAAIHNhbGVzSXNOb3RBdmFpbGFibGVJblN0YXR1c0Vycm9yAgAAAAEsBQAAAAZzdGF0dXMBAAAAIXRocm93Tm9uZXhpc3RlbnRPdXRjb21lQXNzZXRFcnJvcgAAAAEAAAAOb3V0Y29tZUFzc2V0SWQJAAACAAAAAQkAASwAAAACAgAAAB1ub25leGlzdGVudE91dGNvbWVBc3NldEVycm9yLAkAAlgAAAABBQAAAA5vdXRjb21lQXNzZXRJZAEAAAAudGhyb3dOb3RFbm91Z2hPdXRjb21lQXNzZXRzSW5QcmVzYWxlU3RvY2tFcnJvcgAAAAIAAAALYW1vdW50VG9CdXkAAAAHYmFsYW5jZQkAAAIAAAABCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAAKW5vdEVub3VnaE91dGNvbWVBc3NldHNJblByZXNhbGVTdG9ja0Vycm9yAgAAAAEsCQABpAAAAAEFAAAAB2JhbGFuY2UCAAAAASwJAAGkAAAAAQUAAAALYW1vdW50VG9CdXkBAAAAK3Rocm93Tm90RW5vdWdoT3V0Y29tZUFzc2V0c0luU2FsZVN0b2NrRXJyb3IAAAACAAAAC2Ftb3VudFRvQnV5AAAAB2JhbGFuY2UJAAACAAAAAQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAACZub3RFbm91Z2hPdXRjb21lQXNzZXRzSW5TYWxlU3RvY2tFcnJvcgIAAAABLAkAAaQAAAABBQAAAAdiYWxhbmNlAgAAAAEsCQABpAAAAAEFAAAAC2Ftb3VudFRvQnV5AQAAACZ0aHJvd1Vuc3VwcG9ydGVkRXZlbnRQYXltZW50QXNzZXRFcnJvcgAAAAEAAAAPcGF5bWVudEN1cnJlbmN5CQAAAgAAAAEJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAhdW5zdXBwb3J0ZWRFdmVudFBheW1lbnRBc3NldEVycm9yAgAAAAEsCQACWAAAAAEFAAAAD2V2ZW50Q3VycmVuY3lJZAIAAAABLAkAAlgAAAABBQAAAA9wYXltZW50Q3VycmVuY3kBAAAAHXRocm93SW5zdWZmaWNpZW50UGF5bWVudEVycm9yAAAAAgAAABVyZWNlaXZlZFBheW1lbnRBbW91bnQAAAAVZXhwZWN0ZWRQYXltZW50QW1vdW50CQAAAgAAAAEJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAYaW5zdWZmaWNpZW50UGF5bWVudEVycm9yAgAAAAEsCQABpAAAAAEFAAAAFWV4cGVjdGVkUGF5bWVudEFtb3VudAIAAAABLAkAAaQAAAABBQAAABVyZWNlaXZlZFBheW1lbnRBbW91bnQBAAAAIHRocm93VW5zdXBwb3J0ZWRFdmVudFN0YXR1c0Vycm9yAAAAAAkAAAIA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AAAAAgkAAGUAAAACBQAAAAFuAAAAAAAAAAABBQAAAAFkAAAAAAAAAAACAQAAAB9nZXRQcmVzYWxlT3V0Y29tZUFtb3VudFNhbGVzS2V5AAAAAQAAAA5vdXRjb21lQXNzZXRJZAkAASwAAAACAgAAABpwcmVzYWxlT3V0Y29tZUFtb3VudFNhbGVzXwkAAlgAAAABBQAAAA5vdXRjb21lQXNzZXRJZAEAAAAcZ2V0UHJlc2FsZU91dGNvbWVBbW91bnRTYWxlcwAAAAEAAAAOb3V0Y29tZUFzc2V0SWQEAAAAHHByZXNhbGVPdXRjb21lQW1vdW50U2FsZXNLZXkJAQAAAB9nZXRQcmVzYWxlT3V0Y29tZUFtb3VudFNhbGVzS2V5AAAAAQUAAAAOb3V0Y29tZUFzc2V0SWQJAQAAABVnZXRJbnRlZ2VyRnJvbUFjY291bnQAAAACBQAAAAR0aGlzBQAAABxwcmVzYWxlT3V0Y29tZUFtb3VudFNhbGVzS2V5AQAAABFnZXRSYXRlV0FWRVNJblVTRAAAAAAAAAAAAAAAADIBAAAAH2NhbGN1bGF0ZUZlZUluRXZlbnRQYXltZW50QXNzZXQAAAAACQAAaQAAAAIJAABoAAAAAgUAAAAUYnV5T3V0Y29tZVRva2VuVHhGZWUJAQAAABFnZXRSYXRlV0FWRVNJblVTRAAAAAAFAAAAA1VTRAEAAAADc3VtAAAAAQAAAAFuBAAAAAF4CQAAaQAAAAIFAAAAAW4FAAAAE2xpdmVQcmljZVN0ZXBQZXJpb2QEAAAAB2Z1bGxTdW0JAQAAABBhcml0aG1ldGljU2VyaWVzAAAAAwUAAAAJbGl2ZVByaWNlBQAAAA1saXZlUHJpY2VTdGVwBQAAAAF4CQAAZAAAAAIJAABoAAAAAgUAAAAHZnVsbFN1bQUAAAATbGl2ZVByaWNlU3RlcFBlcmlvZAkAAGgAAAACCQAAZQAAAAIJAQAAABBhcml0aG1ldGljU2VyaWVzAAAAAwUAAAAJbGl2ZVByaWNlBQAAAA1saXZlUHJpY2VTdGVwCQAAZAAAAAIFAAAAAXgAAAAAAAAAAAEFAAAAB2Z1bGxTdW0JAABqAAAAAgUAAAABbgUAAAATbGl2ZVByaWNlU3RlcFBlcmlvZAEAAAAMaXNSb290Q2FsbGVyAAAAAQAAAAFpBAAAABNjYWxsZXJBY2NvdW50UHViS2V5CQACWAAAAAEIBQAAAAFpAAAAD2NhbGxlclB1YmxpY0tleQQAAAARcm9vdEFjY291bnRQdWJLZXkJAAJYAAAAAQUAAAAUcm9vdEFjY291bnRQdWJsaWNLZXkDCQAAAAAAAAIFAAAAE2NhbGxlckFjY291bnRQdWJLZXkFAAAAEXJvb3RBY2NvdW50UHViS2V5BgcBAAAADWlzQWRtaW5DYWxsZXIAAAABAAAAAWkEAAAAE2NhbGxlckFjY291bnRQdWJLZXkJAAJYAAAAAQgFAAAAAWkAAAAPY2FsbGVyUHVibGljS2V5BAAAABFyb290QWNjb3VudFB1YktleQkAAlgAAAABBQAAABRyb290QWNjb3VudFB1YmxpY0tleQMJAAAAAAAAAgUAAAATY2FsbGVyQWNjb3VudFB1YktleQUAAAARcm9vdEFjY291bnRQdWJLZXkGBwEAAAALYW1vdW50VG9QYXkAAAACAAAAC2FscmVhZHlTb2xkAAAAC2Ftb3VudFRvQnV5CQAAZQAAAAIJAQAAAANzdW0AAAABCQAAZAAAAAIFAAAAC2FscmVhZHlTb2xkBQAAAAthbW91bnRUb0J1eQkBAAAAA3N1bQAAAAEFAAAAC2FscmVhZHlTb2xkAQAAAA9wcmVzYWxlU3RyYXRlZ3kAAAAGAAAAD2N1c3RvbWVyQWRkcmVzcwAAAA5vdXRjb21lQXNzZXRJZAAAAA1wYXltZW50QW1vdW50AAAAEm91dGNvbWVBbW91bnRUb0J1eQAAABlvdXRjb21lQW1vdW50RXZlbnRCYWxhbmNlAAAAA2ZlZQQAAAAYb3V0Y29tZUFtb3VudEFscmVhZHlTb2xkCQAAZQAAAAIFAAAAFXRvdGFsQXNzZXRzUGVyT3V0Y29tZQUAAAAZb3V0Y29tZUFtb3VudEV2ZW50QmFsYW5jZQQAAAAlb3V0Y29tZUFtb3VudEF2YWlsYWJsZUluUHJlc2FsZVBlcmlvZAkAAGUAAAACBQAAABpwcmVzYWxlTWF4QXNzZXRzUGVyT3V0Y29tZQUAAAAYb3V0Y29tZUFtb3VudEFscmVhZHlTb2xkBAAAABxvdXRjb21lUmVxdWlyZWRQYXltZW50QW1vdW50CQAAZAAAAAIJAABoAAAAAgUAAAAMcHJlc2FsZVByaWNlBQAAABJvdXRjb21lQW1vdW50VG9CdXkFAAAAA2ZlZQMJAABmAAAAAgUAAAASb3V0Y29tZUFtb3VudFRvQnV5BQAAACVvdXRjb21lQW1vdW50QXZhaWxhYmxlSW5QcmVzYWxlUGVyaW9kCQEAAAAudGhyb3dOb3RFbm91Z2hPdXRjb21lQXNzZXRzSW5QcmVzYWxlU3RvY2tFcnJvcgAAAAIFAAAAEm91dGNvbWVBbW91bnRUb0J1eQUAAAAlb3V0Y29tZUFtb3VudEF2YWlsYWJsZUluUHJlc2FsZVBlcmlvZAMJAQAAAAIhPQAAAAIFAAAADXBheW1lbnRBbW91bnQFAAAAHG91dGNvbWVSZXF1aXJlZFBheW1lbnRBbW91bnQJAQAAAB10aHJvd0luc3VmZmljaWVudFBheW1lbnRFcnJvcgAAAAIFAAAADXBheW1lbnRBbW91bnQFAAAAHG91dGNvbWVSZXF1aXJlZFBheW1lbnRBbW91bnQEAAAAHHByZXNhbGVPdXRjb21lQW1vdW50U2FsZXNLZXkJAQAAAB9nZXRQcmVzYWxlT3V0Y29tZUFtb3VudFNhbGVzS2V5AAAAAQUAAAAOb3V0Y29tZUFzc2V0SWQEAAAAIGN1cnJlbnRQcmVzYWxlT3V0Y29tZUFtb3VudFNhbGVzCQEAAAAcZ2V0UHJlc2FsZU91dGNvbWVBbW91bnRTYWxlcwAAAAEFAAAADm91dGNvbWVBc3NldElkBAAAABxuZXdQcmVzYWxlT3V0Y29tZUFtb3VudFNhbGVzCQAAZAAAAAIFAAAAIGN1cnJlbnRQcmVzYWxlT3V0Y29tZUFtb3VudFNhbGVzBQAAABJvdXRjb21lQW1vdW50VG9CdXkEAAAACHdyaXRlU2V0CQEAAAAIV3JpdGVTZXQAAAABCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACBQAAABxwcmVzYWxlT3V0Y29tZUFtb3VudFNhbGVzS2V5BQAAABxuZXdQcmVzYWxlT3V0Y29tZUFtb3VudFNhbGVzBQAAAANuaWwEAAAAC3RyYW5zZmVyU2V0CQEAAAALVHJhbnNmZXJTZXQAAAABCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMFAAAAD2N1c3RvbWVyQWRkcmVzcwUAAAAUYnV5T3V0Y29tZVRva2VuVHhGZWUFAAAABHVuaXQJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwUAAAAPY3VzdG9tZXJBZGRyZXNzBQAAABJvdXRjb21lQW1vdW50VG9CdXkFAAAADm91dGNvbWVBc3NldElkBQAAAANuaWwJAQAAAAxTY3JpcHRSZXN1bHQAAAACBQAAAAh3cml0ZVNldAUAAAALdHJhbnNmZXJTZXQBAAAADHNhbGVTdHJhdGVneQAAAAYAAAAPY3VzdG9tZXJBZGRyZXNzAAAADm91dGNvbWVBc3NldElkAAAADXBheW1lbnRBbW91bnQAAAASb3V0Y29tZUFtb3VudFRvQnV5AAAAGW91dGNvbWVBbW91bnRFdmVudEJhbGFuY2UAAAADZmVlBAAAABlwcmVzYWxlT3V0Y29tZUFtb3VudFNhbGVzCQEAAAAcZ2V0UHJlc2FsZU91dGNvbWVBbW91bnRTYWxlcwAAAAEFAAAADm91dGNvbWVBc3NldElkBAAAABhvdXRjb21lQW1vdW50QWxyZWFkeVNvbGQJAABlAAAAAgkAAGUAAAACBQAAABV0b3RhbEFzc2V0c1Blck91dGNvbWUFAAAAGXByZXNhbGVPdXRjb21lQW1vdW50U2FsZXMFAAAAGW91dGNvbWVBbW91bnRFdmVudEJhbGFuY2UEAAAAHG91dGNvbWVSZXF1aXJlZFBheW1lbnRBbW91bnQJAABkAAAAAgkBAAAAC2Ftb3VudFRvUGF5AAAAAgUAAAAYb3V0Y29tZUFtb3VudEFscmVhZHlTb2xkBQAAABJvdXRjb21lQW1vdW50VG9CdXkFAAAAA2ZlZQMJAABmAAAAAgUAAAASb3V0Y29tZUFtb3VudFRvQnV5BQAAABlvdXRjb21lQW1vdW50RXZlbnRCYWxhbmNlCQEAAAArdGhyb3dOb3RFbm91Z2hPdXRjb21lQXNzZXRzSW5TYWxlU3RvY2tFcnJvcgAAAAIFAAAAEm91dGNvbWVBbW91bnRUb0J1eQUAAAAZb3V0Y29tZUFtb3VudEV2ZW50QmFsYW5jZQMJAQAAAAIhPQAAAAIFAAAADXBheW1lbnRBbW91bnQFAAAAHG91dGNvbWVSZXF1aXJlZFBheW1lbnRBbW91bnQJAQAAAB10aHJvd0luc3VmZmljaWVudFBheW1lbnRFcnJvcgAAAAIFAAAADXBheW1lbnRBbW91bnQFAAAAHG91dGNvbWVSZXF1aXJlZFBheW1lbnRBbW91bnQJAQAAAAtUcmFuc2ZlclNldAAAAAEJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwUAAAAPY3VzdG9tZXJBZGRyZXNzBQAAABRidXlPdXRjb21lVG9rZW5UeEZlZQUAAAAEdW5pdAkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADBQAAAA9jdXN0b21lckFkZHJlc3MFAAAAEm91dGNvbWVBbW91bnRUb0J1eQUAAAAOb3V0Y29tZUFzc2V0SWQFAAAAA25pbAAAAAIAAAABaQEAAAAPYnV5T3V0Y29tZVRva2VuAAAAAgAAAA5vdXRjb21lQXNzZXRJZAAAABJvdXRjb21lQW1vdW50VG9CdXkEAAAAA2ZlZQkBAAAAH2NhbGN1bGF0ZUZlZUluRXZlbnRQYXltZW50QXNzZXQAAAAABAAAAA9jdXN0b21lckFkZHJlc3MIBQAAAAFpAAAABmNhbGxlcgQAAAAZb3V0Y29tZUFtb3VudEV2ZW50QmFsYW5jZQkAA+sAAAACBQAAAAR0aGlzBQAAAA5vdXRjb21lQXNzZXRJZAQAAAAGc3RhdHVzCQEAAAAJZ2V0U3RhdHVzAAAAAAQAAAAHcGF5bWVudAkBAAAACmdldFBheW1lbnQAAAABBQAAAAFpBAAAAA1wYXltZW50QW1vdW50CAUAAAAHcGF5bWVudAAAAAZhbW91bnQEAAAADnBheW1lbnRBc3NldElkCQEAAAARZ2V0UGF5bWVudEFzc2V0SWQAAAABBQAAAAdwYXltZW50BAAAABppc05vdFN1cHBvcnRlZFBheW1lbnRBc3NldAkBAAAAAiE9AAAAAgUAAAAOcGF5bWVudEFzc2V0SWQFAAAAD2V2ZW50Q3VycmVuY3lJZAQAAAAPaXNQcmVzYWxlU3RhdHVzCQAAAAAAAAIFAAAABnN0YXR1cwUAAAANcHJlc2FsZVN0YXR1cwQAAAAMaXNMaXZlU3RhdHVzCQAAAAAAAAIFAAAABnN0YXR1cwUAAAAKbGl2ZVN0YXR1cwQAAAAQaXNTYWxlc0F2YWlsYWJsZQMFAAAAD2lzUHJlc2FsZVN0YXR1cwYFAAAADGlzTGl2ZVN0YXR1cwMJAAAAAAAAAgUAAAAZb3V0Y29tZUFtb3VudEV2ZW50QmFsYW5jZQAAAAAAAAAAAAkBAAAAIXRocm93Tm9uZXhpc3RlbnRPdXRjb21lQXNzZXRFcnJvcgAAAAEFAAAADm91dGNvbWVBc3NldElkAwUAAAAaaXNOb3RTdXBwb3J0ZWRQYXltZW50QXNzZXQJAQAAACZ0aHJvd1Vuc3VwcG9ydGVkRXZlbnRQYXltZW50QXNzZXRFcnJvcgAAAAEFAAAADnBheW1lbnRBc3NldElkAwkBAAAAASEAAAABBQAAABBpc1NhbGVzQXZhaWxhYmxlCQEAAAAldGhyb3dTYWxlc0lzTm90QXZhaWxhYmxlSW5TdGF0dXNFcnJvcgAAAAEFAAAABnN0YXR1cwMFAAAAD2lzUHJlc2FsZVN0YXR1cwkBAAAAD3ByZXNhbGVTdHJhdGVneQAAAAYFAAAAD2N1c3RvbWVyQWRkcmVzcwUAAAAOb3V0Y29tZUFzc2V0SWQFAAAADXBheW1lbnRBbW91bnQFAAAAEm91dGNvbWVBbW91bnRUb0J1eQUAAAAZb3V0Y29tZUFtb3VudEV2ZW50QmFsYW5jZQUAAAADZmVlAwUAAAAMaXNMaXZlU3RhdHVzCQEAAAAMc2FsZVN0cmF0ZWd5AAAABgUAAAAPY3VzdG9tZXJBZGRyZXNzBQAAAA5vdXRjb21lQXNzZXRJZAUAAAANcGF5bWVudEFtb3VudAUAAAASb3V0Y29tZUFtb3VudFRvQnV5BQAAABlvdXRjb21lQW1vdW50RXZlbnRCYWxhbmNlBQAAAANmZWUJAQAAABN0aHJvd1VuZGVmaW5lZEVycm9yAAAAAAAAAAFpAQAAAAxjaGFuZ2VTdGF0dXMAAAABAAAACW5ld1N0YXR1cwMJAQAAAAEhAAAAAQkBAAAAEWlzU3VwcG9ydGVkU3RhdHVzAAAAAQUAAAAJbmV3U3RhdHVzCQEAAAAgdGhyb3dVbnN1cHBvcnRlZEV2ZW50U3RhdHVzRXJyb3IAAAAAAwkBAAAAASEAAAABCQEAAAAMaXNSb290Q2FsbGVyAAAAAQUAAAABaQkBAAAAGXRocm93SXNOb3RSb290Q2FsbGVyRXJyb3IAAAAACQEAAAAIV3JpdGVTZXQAAAABCQAETAAAAAIJAQAAAAlzZXRTdGF0dXMAAAABBQAAAAluZXdTdGF0dXMFAAAAA25pbAAAAACq4byY", "chainId": 84, "height": 765985, "spentComplexity": 0 } View: original | compacted Prev: 2RZqycgFwpiMsQxrUt6SyWTboi6g8eZB5od6VxD8FLcu Next: 3YVrBpMdeue8LMRXdrhZwr3vW45Q3Siw9ihamSgkfWw6 Diff:
OldNewDifferences
77
88 let USD = 100
99
10-let rootAccountPublicKey = base58'9xGjRFrZQ7GSPzYd69mDiZQQuy97kVW6Qux5Zrkqbx2G'
10+let rootAccountPublicKey = base58'CYF7FumpbZzyHMFuFQRQfo9XC9veJemd3XuBkusRCcAg'
1111
1212 let ligaCommission = 0
1313
144144 }
145145
146146
147-func getRateWAVESInUSD () = {
148- let rateWAVESInUSDDefault = 50
149- rateWAVESInUSDDefault
150- }
147+func getRateWAVESInUSD () = 50
151148
152149
153150 func calculateFeeInEventPaymentAsset () = ((buyOutcomeTokenTxFee * getRateWAVESInUSD()) / USD)
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 3 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let buyOutcomeTokenTxFee = 500000
55
66 let WAVES = 100000000
77
88 let USD = 100
99
10-let rootAccountPublicKey = base58'9xGjRFrZQ7GSPzYd69mDiZQQuy97kVW6Qux5Zrkqbx2G'
10+let rootAccountPublicKey = base58'CYF7FumpbZzyHMFuFQRQfo9XC9veJemd3XuBkusRCcAg'
1111
1212 let ligaCommission = 0
1313
1414 let totalAssetsPerOutcome = 10000
1515
1616 let presaleMaxAssetsPerOutcome = 3000
1717
1818 let eventCurrencyId = base58'D6N2rAqWN6ZCWnCeNFWLGqqjS6nJLeK4m19XiuhdDenr'
1919
2020 let presalePrice = 1000
2121
2222 let livePrice = 5000
2323
2424 let livePriceStep = 500
2525
2626 let livePriceStepPeriod = 100
2727
2828 let statusKey = "status"
2929
3030 let pauseStatus = "pause"
3131
3232 let presaleStatus = "presale"
3333
3434 let liveStatus = "live"
3535
3636 let completeStatus = "complete"
3737
3838 let payoutStatus = "payout"
3939
4040 func throwSalesIsNotAvailableInStatusError (status) = throw((("salesIsNotAvailableInStatusError" + ",") + status))
4141
4242
4343 func throwNonexistentOutcomeAssetError (outcomeAssetId) = throw(("nonexistentOutcomeAssetError," + toBase58String(outcomeAssetId)))
4444
4545
4646 func throwNotEnoughOutcomeAssetsInPresaleStockError (amountToBuy,balance) = throw((((("notEnoughOutcomeAssetsInPresaleStockError" + ",") + toString(balance)) + ",") + toString(amountToBuy)))
4747
4848
4949 func throwNotEnoughOutcomeAssetsInSaleStockError (amountToBuy,balance) = throw((((("notEnoughOutcomeAssetsInSaleStockError" + ",") + toString(balance)) + ",") + toString(amountToBuy)))
5050
5151
5252 func throwUnsupportedEventPaymentAssetError (paymentCurrency) = throw((((("unsupportedEventPaymentAssetError" + ",") + toBase58String(eventCurrencyId)) + ",") + toBase58String(paymentCurrency)))
5353
5454
5555 func throwInsufficientPaymentError (receivedPaymentAmount,expectedPaymentAmount) = throw((((("insufficientPaymentError" + ",") + toString(expectedPaymentAmount)) + ",") + toString(receivedPaymentAmount)))
5656
5757
5858 func throwUnsupportedEventStatusError () = throw("unsupportedEventStatusError")
5959
6060
6161 func throwIsNotRootCallerError () = throw("isNotRootCallerError")
6262
6363
6464 let noPaymentError = "noPaymentError"
6565
6666 func throwUndefinedError () = throw("undefinedError")
6767
6868
6969 func getIntOr (key,default) = if (isDefined(getInteger(this, key)))
7070 then getIntegerValue(this, key)
7171 else default
7272
7373
7474 func getStringOr (key,default) = if (isDefined(getInteger(this, key)))
7575 then getStringValue(this, key)
7676 else default
7777
7878
7979 func getInt (key) = getIntegerValue(this, key)
8080
8181
8282 func setInt (key,value) = DataEntry(key, value)
8383
8484
8585 func getStr (key) = getStringValue(this, key)
8686
8787
8888 func setStr (key,value) = DataEntry(key, value)
8989
9090
9191 func setBytes (key,value) = DataEntry(key, value)
9292
9393
9494 func getBytes (key) = getBinaryValue(this, key)
9595
9696
9797 func isSupportedStatus (status) = if (if (if (if ((status == pauseStatus))
9898 then true
9999 else (status == presaleStatus))
100100 then true
101101 else (status == liveStatus))
102102 then true
103103 else (status == completeStatus))
104104 then true
105105 else (status == payoutStatus)
106106
107107
108108 func getStatus () = getStr(statusKey)
109109
110110
111111 func setStatus (status) = setStr(statusKey, status)
112112
113113
114114 func getPayment (i) = valueOrErrorMessage(i.payment, noPaymentError)
115115
116116
117117 func getPaymentAssetId (payment) = match payment.assetId {
118118 case assetId: ByteVector =>
119119 assetId
120120 case assetId: Unit =>
121121 fromBase58String("WAVES")
122122 case _ =>
123123 throw()
124124 }
125125
126126
127127 func getIntegerFromAccount (accountAddress,key) = match getInteger(accountAddress, key) {
128128 case i: Int =>
129129 i
130130 case _ =>
131131 0
132132 }
133133
134134
135135 func arithmeticSeries (a,d,n) = ((n * ((2 * a) + ((n - 1) * d))) / 2)
136136
137137
138138 func getPresaleOutcomeAmountSalesKey (outcomeAssetId) = ("presaleOutcomeAmountSales_" + toBase58String(outcomeAssetId))
139139
140140
141141 func getPresaleOutcomeAmountSales (outcomeAssetId) = {
142142 let presaleOutcomeAmountSalesKey = getPresaleOutcomeAmountSalesKey(outcomeAssetId)
143143 getIntegerFromAccount(this, presaleOutcomeAmountSalesKey)
144144 }
145145
146146
147-func getRateWAVESInUSD () = {
148- let rateWAVESInUSDDefault = 50
149- rateWAVESInUSDDefault
150- }
147+func getRateWAVESInUSD () = 50
151148
152149
153150 func calculateFeeInEventPaymentAsset () = ((buyOutcomeTokenTxFee * getRateWAVESInUSD()) / USD)
154151
155152
156153 func sum (n) = {
157154 let x = (n / livePriceStepPeriod)
158155 let fullSum = arithmeticSeries(livePrice, livePriceStep, x)
159156 ((fullSum * livePriceStepPeriod) + ((arithmeticSeries(livePrice, livePriceStep, (x + 1)) - fullSum) * (n % livePriceStepPeriod)))
160157 }
161158
162159
163160 func isRootCaller (i) = {
164161 let callerAccountPubKey = toBase58String(i.callerPublicKey)
165162 let rootAccountPubKey = toBase58String(rootAccountPublicKey)
166163 if ((callerAccountPubKey == rootAccountPubKey))
167164 then true
168165 else false
169166 }
170167
171168
172169 func isAdminCaller (i) = {
173170 let callerAccountPubKey = toBase58String(i.callerPublicKey)
174171 let rootAccountPubKey = toBase58String(rootAccountPublicKey)
175172 if ((callerAccountPubKey == rootAccountPubKey))
176173 then true
177174 else false
178175 }
179176
180177
181178 func amountToPay (alreadySold,amountToBuy) = (sum((alreadySold + amountToBuy)) - sum(alreadySold))
182179
183180
184181 func presaleStrategy (customerAddress,outcomeAssetId,paymentAmount,outcomeAmountToBuy,outcomeAmountEventBalance,fee) = {
185182 let outcomeAmountAlreadySold = (totalAssetsPerOutcome - outcomeAmountEventBalance)
186183 let outcomeAmountAvailableInPresalePeriod = (presaleMaxAssetsPerOutcome - outcomeAmountAlreadySold)
187184 let outcomeRequiredPaymentAmount = ((presalePrice * outcomeAmountToBuy) + fee)
188185 if ((outcomeAmountToBuy > outcomeAmountAvailableInPresalePeriod))
189186 then throwNotEnoughOutcomeAssetsInPresaleStockError(outcomeAmountToBuy, outcomeAmountAvailableInPresalePeriod)
190187 else if ((paymentAmount != outcomeRequiredPaymentAmount))
191188 then throwInsufficientPaymentError(paymentAmount, outcomeRequiredPaymentAmount)
192189 else {
193190 let presaleOutcomeAmountSalesKey = getPresaleOutcomeAmountSalesKey(outcomeAssetId)
194191 let currentPresaleOutcomeAmountSales = getPresaleOutcomeAmountSales(outcomeAssetId)
195192 let newPresaleOutcomeAmountSales = (currentPresaleOutcomeAmountSales + outcomeAmountToBuy)
196193 let writeSet = WriteSet([DataEntry(presaleOutcomeAmountSalesKey, newPresaleOutcomeAmountSales)])
197194 let transferSet = TransferSet([ScriptTransfer(customerAddress, buyOutcomeTokenTxFee, unit), ScriptTransfer(customerAddress, outcomeAmountToBuy, outcomeAssetId)])
198195 ScriptResult(writeSet, transferSet)
199196 }
200197 }
201198
202199
203200 func saleStrategy (customerAddress,outcomeAssetId,paymentAmount,outcomeAmountToBuy,outcomeAmountEventBalance,fee) = {
204201 let presaleOutcomeAmountSales = getPresaleOutcomeAmountSales(outcomeAssetId)
205202 let outcomeAmountAlreadySold = ((totalAssetsPerOutcome - presaleOutcomeAmountSales) - outcomeAmountEventBalance)
206203 let outcomeRequiredPaymentAmount = (amountToPay(outcomeAmountAlreadySold, outcomeAmountToBuy) + fee)
207204 if ((outcomeAmountToBuy > outcomeAmountEventBalance))
208205 then throwNotEnoughOutcomeAssetsInSaleStockError(outcomeAmountToBuy, outcomeAmountEventBalance)
209206 else if ((paymentAmount != outcomeRequiredPaymentAmount))
210207 then throwInsufficientPaymentError(paymentAmount, outcomeRequiredPaymentAmount)
211208 else TransferSet([ScriptTransfer(customerAddress, buyOutcomeTokenTxFee, unit), ScriptTransfer(customerAddress, outcomeAmountToBuy, outcomeAssetId)])
212209 }
213210
214211
215212 @Callable(i)
216213 func buyOutcomeToken (outcomeAssetId,outcomeAmountToBuy) = {
217214 let fee = calculateFeeInEventPaymentAsset()
218215 let customerAddress = i.caller
219216 let outcomeAmountEventBalance = assetBalance(this, outcomeAssetId)
220217 let status = getStatus()
221218 let payment = getPayment(i)
222219 let paymentAmount = payment.amount
223220 let paymentAssetId = getPaymentAssetId(payment)
224221 let isNotSupportedPaymentAsset = (paymentAssetId != eventCurrencyId)
225222 let isPresaleStatus = (status == presaleStatus)
226223 let isLiveStatus = (status == liveStatus)
227224 let isSalesAvailable = if (isPresaleStatus)
228225 then true
229226 else isLiveStatus
230227 if ((outcomeAmountEventBalance == 0))
231228 then throwNonexistentOutcomeAssetError(outcomeAssetId)
232229 else if (isNotSupportedPaymentAsset)
233230 then throwUnsupportedEventPaymentAssetError(paymentAssetId)
234231 else if (!(isSalesAvailable))
235232 then throwSalesIsNotAvailableInStatusError(status)
236233 else if (isPresaleStatus)
237234 then presaleStrategy(customerAddress, outcomeAssetId, paymentAmount, outcomeAmountToBuy, outcomeAmountEventBalance, fee)
238235 else if (isLiveStatus)
239236 then saleStrategy(customerAddress, outcomeAssetId, paymentAmount, outcomeAmountToBuy, outcomeAmountEventBalance, fee)
240237 else throwUndefinedError()
241238 }
242239
243240
244241
245242 @Callable(i)
246243 func changeStatus (newStatus) = if (!(isSupportedStatus(newStatus)))
247244 then throwUnsupportedEventStatusError()
248245 else if (!(isRootCaller(i)))
249246 then throwIsNotRootCallerError()
250247 else WriteSet([setStatus(newStatus)])
251248
252249

github/deemru/w8io/026f985 
38.43 ms