tx · B9QL3h2vsnABgegk3FxpguZBhy2zbVs6KKHdrLzckdaY

3PMXJ1EhpYFvBFQ2mHjrTCqd28Zem1YuSeN:  -0.01400000 Waves

2020.02.15 14:21 [1931037] smart account 3PMXJ1EhpYFvBFQ2mHjrTCqd28Zem1YuSeN > SELF 0.00000000 Waves

{ "type": 13, "id": "B9QL3h2vsnABgegk3FxpguZBhy2zbVs6KKHdrLzckdaY", "fee": 1400000, "feeAssetId": null, "timestamp": 1581765697732, "version": 1, "sender": "3PMXJ1EhpYFvBFQ2mHjrTCqd28Zem1YuSeN", "senderPublicKey": "2o1waDCX67ArC4iV4WWHa41MHbCKS4na7KWDJmcKNAQ3", "proofs": [ "3CMjX67KTWvyewLxtYPLNow2FtiEmk9Pixmd2KzKtatnFsWmsdzFseyYm36Wt8nyMi6F2oVKwdMMn8zmLzb7qTRN" ], "script": "base64:AAIDAAAAAAAAABEIARIAEgYKBAgCAgISAwoBCAAAADUAAAAAFmRpdmlkZW5kUHJvZ3JhbUFkZHJlc3MJAQAAABRhZGRyZXNzRnJvbVB1YmxpY0tleQAAAAEJAAJZAAAAAQIAAAAsNFl6U1F4ano4dGFoUTYyYmdjS0x4b2g5NDI0RVlEaVlkWlV6VXRRVkN6a3MAAAAADWdhbWVQdWJsaWNLZXkJAAJZAAAAAQIAAAAsMm8xd2FEQ1g2N0FyQzRpVjRXV0hhNDFNSGJDS1M0bmE3S1dESm1jS05BUTMAAAAAFnJlZmVycmFsUHJvZ3JhbUFkZHJlc3MJAQAAABRhZGRyZXNzRnJvbVB1YmxpY0tleQAAAAEJAAJZAAAAAQIAAAABMQAAAAANcnNhUHVibGljS2V5MQkAAlsAAAABAgAAAIBNRnd3RFFZSktvWklodmNOQVFFQkJRQURTd0F3U0FKQkFPa2l1ei9CVjRFam94R2hUbU5DYnQyVGdrYlNQSC93NjliM0YxckttRDYxSmlQWHZ2RjhMMnBJOXhPWWNXNEZtb0VaVkhsUlF0QWxhSnlrbDMrcnNyRUNBd0VBQVE9PQAAAAANcnNhUHVibGljS2V5MgkAAlsAAAABAgAAAIBNRnd3RFFZSktvWklodmNOQVFFQkJRQURTd0F3U0FKQkFKblh6Yk0vVjJzRFYxVUxiUFNPbEhrbGRPVFdSckhpNWZ4SWtCbXVldnJDbE1QVkg3cnFjY3dpckROY01kSWR3WEhJOUFkaGo5Rldqd0dJd2ZVL0s2TUNBd0VBQVE9PQAAAAANcnNhUHVibGljS2V5MwkAAlsAAAABAgAAAIBNRnd3RFFZSktvWklodmNOQVFFQkJRQURTd0F3U0FKQkFPUkRldnkwcjRrekxxT3lTbG9CNjNIdXYyZTR6ZUhLSGpDc3k1dnRGS21XWmJYSmE4Z1pZdDQrRWtsRklvMUs5b3F1NUJBUFZmSjNGT3pzMlUxQStnMENBd0VBQVE9PQAAAAAFZHJ1bTEJAARMAAAAAgIAAAABMgkABEwAAAACAgAAAAExCQAETAAAAAICAAAAATMJAARMAAAAAgIAAAABNQkABEwAAAACAgAAAAE3CQAETAAAAAICAAAAATMJAARMAAAAAgIAAAABMwkABEwAAAACAgAAAAExCQAETAAAAAICAAAAATQJAARMAAAAAgIAAAABMQkABEwAAAACAgAAAAEzCQAETAAAAAICAAAAATUJAARMAAAAAgIAAAABMgkABEwAAAACAgAAAAE0CQAETAAAAAICAAAAATIJAARMAAAAAgIAAAABNgkABEwAAAACAgAAAAE1CQAETAAAAAICAAAAATIJAARMAAAAAgIAAAABMQkABEwAAAACAgAAAAE0BQAAAANuaWwAAAAABWRydW0yCQAETAAAAAICAAAAATQJAARMAAAAAgIAAAABMgkABEwAAAACAgAAAAEzCQAETAAAAAICAAAAATEJAARMAAAAAgIAAAABNgkABEwAAAACAgAAAAE0CQAETAAAAAICAAAAATIJAARMAAAAAgIAAAABMQkABEwAAAACAgAAAAE0CQAETAAAAAICAAAAATIJAARMAAAAAgIAAAABMQkABEwAAAACAgAAAAE2CQAETAAAAAICAAAAATMJAARMAAAAAgIAAAABMQkABEwAAAACAgAAAAEyCQAETAAAAAICAAAAATUJAARMAAAAAgIAAAABMQkABEwAAAACAgAAAAE1CQAETAAAAAICAAAAATMJAARMAAAAAgIAAAABNwUAAAADbmlsAAAAAAVkcnVtMwkABEwAAAACAgAAAAEzCQAETAAAAAICAAAAATIJAARMAAAAAgIAAAABNwkABEwAAAACAgAAAAE0CQAETAAAAAICAAAAATEJAARMAAAAAgIAAAABNgkABEwAAAACAgAAAAE0CQAETAAAAAICAAAAATIJAARMAAAAAgIAAAABMwkABEwAAAACAgAAAAExCQAETAAAAAICAAAAATQJAARMAAAAAgIAAAABMQkABEwAAAACAgAAAAE1CQAETAAAAAICAAAAATUJAARMAAAAAgIAAAABMQkABEwAAAACAgAAAAEzCQAETAAAAAICAAAAATcJAARMAAAAAgIAAAABMQkABEwAAAACAgAAAAEyCQAETAAAAAICAAAAATYFAAAAA25pbAAAAAANZ2FtZVRpbWVGcmFtZQAAAAAAAAALQAAAAAAIc3RhdGVBY2MCAAAACEFjY2VwdGVkAAAAAAhzdGF0ZVdpbgIAAAADV2luAAAAAAxzdGF0ZVRpbWVvdXQCAAAADFdpbkJ5VGltZW91dAAAAAAJc3RhdGVMb3NlAgAAAARMb3NlAAAAAAd3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YWxhbmNlCQAEGgAAAAIFAAAABHRoaXMJAAEsAAAAAgUAAAAMcG10QXNzZXROYW1lAgAAAAlfUmVzZXJ2ZWQEAAAAByRtYXRjaDAFAAAAFHZhbHVlUmVzZXJ2ZWRCYWxhbmNlAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAANJbnQEAAAAAWEFAAAAByRtYXRjaDAFAAAAAWEAAAAAAAAAAAAEAAAAEm5ld1Jlc2VydmVkQmFsYW5jZQkAAGQAAAACBQAAABZjdXJyZW50UmVzZXJ2ZWRCYWxhbmNlCQAAaAAAAAIFAAAABnBtdEFtdAAAAAAAAAABBAMJAABnAAAAAgkAA+sAAAACBQAAAAR0aGlzBQAAAAlhc3NldElkNTgFAAAAEm5ld1Jlc2VydmVkQmFsYW5jZQUAAAASbmV3UmVzZXJ2ZWRCYWxhbmNlCQAAAgAAAAECAAAANUJldCB3YXMgcmVqZWN0ZWQuIEluc3VmZmljaWVudCBmdW5kcyBvbiBnYW1lIGFjY291bnQuAQAAABdkZWNyZWFzZVJlc2VydmVkQmFsYW5jZQAAAAIAAAAGYmV0QW10AAAAB2Fzc2V0SWQEAAAAFHZhbHVlUmVzZXJ2ZWRCYWxhbmNlCQAEGgAAAAIFAAAABHRoaXMJAAEsAAAAAgUAAAAHYXNzZXRJZAIAAAAJX1Jlc2VydmVkBAAAABZleHRyYWN0UmVzZXJ2ZWRCYWxhbmNlBAAAAAckbWF0Y2gwBQAAABR2YWx1ZVJlc2VydmVkQmFsYW5jZQMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAADSW50BAAAAAFhBQAAAAckbWF0Y2gwBQAAAAFhAAAAAAAAAAAABAAAABdkZWNyZWFzZVJlc2VydmVkQmFsYW5jZQkAAGUAAAACBQAAABZleHRyYWN0UmVzZXJ2ZWRCYWxhbmNlCQAAaAAAAAIFAAAABmJldEFtdAAAAAAAAAABBAMJAABnAAAAAgUAAAAXZGVjcmVhc2VSZXNlcnZlZEJhbGFuY2UAAAAAAAAAAAAFAAAAF2RlY3JlYXNlUmVzZXJ2ZWRCYWxhbmNlCQAAAgAAAAECAAAAKFJlc2VydmVkIGJhbGFuY2UgY291bGRuJ3QgYmUgbGVzcyB0aGFuIDABAAAAD2RydW1JbnRUb1N0cmluZwAAAAEAAAAH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bWVzUGxheWVkBAAAABVjdXJyZW50R2FtZXNQbGF5ZWROdW0EAAAAByRtYXRjaDAFAAAAE3ZhbHVlR2FtZXNQbGF5ZWROdW0DCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAA0ludAQAAAABYQUAAAAHJG1hdGNoMAUAAAABYQAAAAAAAAAAAAkAAGQAAAACBQAAABVjdXJyZW50R2FtZXNQbGF5ZWROdW0AAAAAAAAAAAEBAAAAEGdldEN1cnJlbnRJbmNvbWUAAAABAAAACWFzc2V0TmFtZQQAAAADdmFsCQAEGgAAAAIFAAAABHRoaXMJAAEsAAAAAgUAAAAJYXNzZXROYW1lAgAAAAdfSW5jb21lBAAAAAckbWF0Y2gwBQAAAAN2YWwDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAA0ludAQAAAABYQUAAAAHJG1hdGNoMAUAAAABYQAAAAAAAAAAAAEAAAAUY2FsbGVySXNEZXBvc2l0T3duZXIAAAACAAAACWFzc2V0TmFtZQAAAA9jYWxsZXJQdWJsaWNLZXkEAAAADGRlcG9zaXRPd25lcgkABB0AAAACBQAAABZkaXZpZGVuZFByb2dyYW1BZGRyZXNzCQABLAAAAAIFAAAACWFzc2V0TmFtZQIAAAANX0RlcG9zaXRPd25lcgMJAAAAAAAAAgUAAAAPY2FsbGVyUHVibGljS2V5BQAAAAxkZXBvc2l0T3duZXIFAAAAD2NhbGxlclB1YmxpY0tleQkAAAIAAAABAgAAAClPbmx5IGRlcG9zaXQgb3duZXIgY2FuIHdpdGhkcmF3YWwgZGVwb3NpdAEAAAAOZ2V0RGVwb3NpdERhdGEAAAACAAAACWFzc2V0TmFtZQAAAAlrZXlTdWZmaXgEAAAAA2tleQkAASwAAAACBQAAAAlhc3NldE5hbWUFAAAACWtleVN1ZmZpeAQAAAADdmFsCQAEGgAAAAIFAAAAFmRpdmlkZW5kUHJvZ3JhbUFkZHJlc3MFAAAAA2tleQQAAAAHJG1hdGNoMAUAAAADdmFsAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAANJbnQEAAAAAWEFAAAAByRtYXRjaDAFAAAAAWEJAAACAAAAAQIAAAArQ291bGRuJ3QgZmluZCBkaXZpZGVuZCBwcm9ncmFtIHN0YXJ0IGhlaWdodAAAAAMAAAABaQEAAAAHbWFrZUJldAAAAAAEAAAAA3BtdAkBAAAAB2V4dHJhY3QAAAABCAUAAAABaQAAAAdwYXltZW50BAAAAAliZXRBbW91bnQIBQAAAANwbXQAAAAGYW1vdW50BAAAAAdhc3NldElkCAUAAAADcG10AAAAB2Fzc2V0SWQEAAAABmdhbWVJZAkAAlgAAAABCAUAAAABaQAAAA10cmFuc2FjdGlvbklkBAAAAA1wbGF5ZXJBZGRyZXNzCQEAAAAHZXh0cmFjdAAAAAEIBQAAAAFpAAAABmNhbGxlcgQAAAAMcG10QXNzZXROYW1lCQEAAAARYXNzZXRCYXNlNThUb05hbWUAAAABBQAAAAdhc3NldElkBAAAABJzZXRSZXNlcnZlZEJhbGFuY2UJAQAAABdpbmNyZWFzZVJlc2VydmVkQmFsYW5jZQAAAAMFAAAACWJldEFtb3VudAUAAAAMcG10QXNzZXROYW1lCAUAAAADcG10AAAAB2Fzc2V0SWQEAAAADXBtdEFtdENvcnJlY3QJAQAAAAtwbXRBbXRDaGVjawAAAAIFAAAADHBtdEFzc2V0TmFtZQUAAAAJYmV0QW1vdW50AwUAAAANcG10QW10Q29ycmVjdAQAAAAKZGF0YVN0cmluZwkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIFAAAACHN0YXRlQWNjAgAAAAFfCQAEJQAAAAEFAAAADXBsYXllckFkZHJlc3MCAAAAAV8JAAGkAAAAAQUAAAAJYmV0QW1vdW50AgAAAAFfBQAAAAxwbXRBc3NldE5hbWUCAAAAAV8JAAGkAAAAAQUAAAAGaGVpZ2h0CQEAAAAIV3JpdGVTZXQAAAABCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQABLAAAAAIFAAAABmdhbWVJZAIAAAAHX0dhbWVJZAUAAAAKZGF0YVN0cmluZwkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkAASwAAAACBQAAAAxwbXRBc3NldE5hbWUCAAAACV9SZXNlcnZlZAUAAAASc2V0UmVzZXJ2ZWRCYWxhbmNlBQAAAANuaWwJAAACAAAAAQIAAAAUYXNzZXRJZCBpcyBpbmNvcnJlY3QAAAABaQEAAAAIcGxheUdhbWUAAAAEAAAABmdhbWVJZAAAAAhyc2FTaWduMQAAAAhyc2FTaWduMgAAAAhyc2FTaWduMwQAAAAIZGF0YUxpc3QJAQAAAAtnZXREYXRhTGlzdAAAAAEFAAAABmdhbWVJZAQAAAAJZ2FtZVN0YXRlCQABkQAAAAIFAAAACGRhdGFMaXN0AAAAAAAAAAAABAAAAA1wbGF5ZXJBZGRyZXNzCQABkQAAAAIFAAAACGRhdGFMaXN0AAAAAAAAAAABBAAAAAZiZXRBbXQJAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAAAhkYXRhTGlzdAAAAAAAAAAAAgQAAAAJYXNzZXROYW1lCQABkQAAAAIFAAAACGRhdGFMaXN0AAAAAAAAAAADBAAAAAlnYW1lU3RhcnQJAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAAAhkYXRhTGlzdAAAAAAAAAAABAQAAAAJYXNzZXRJZDU4CQEAAAARYXNzZXROYW1lVG9CYXNlNTgAAAABBQAAAAlhc3NldE5hbWUEAAAAEnNldFJlc2VydmVkQmFsYW5jZQkBAAAAF2RlY3JlYXNlUmVzZXJ2ZWRCYWxhbmNlAAAAAgUAAAAGYmV0QW10BQAAAAlhc3NldE5hbWUEAAAACGRydW0xSW50CQEAAAAIcnNhVG9JbnQAAAADBQAAAAZnYW1lSWQFAAAACHJzYVNpZ24xBQAAAA1yc2FQdWJsaWNLZXkxBAAAAAhkcnVtMkludAkBAAAACHJzYVRvSW50AAAAAwUAAAAGZ2FtZUlkBQAAAAhyc2FTaWduMgUAAAANcnNhUHVibGljS2V5MgQAAAAIZHJ1bTNJbnQJAQAAAAhyc2FUb0ludAAAAAMFAAAABmdhbWVJZAUAAAAIcnNhU2lnbjMFAAAADXJzYVB1YmxpY0tleTMEAAAACXR3b0luQVJvdwkAASwAAAACCQABkQAAAAIFAAAABWRydW0xBQAAAAhkcnVtMUludAkAAZEAAAACBQAAAAVkcnVtMgUAAAAIZHJ1bTJJbnQEAAAAC3RocmVlSW5BUm93CQABLAAAAAIFAAAACXR3b0luQVJvdwkAAZEAAAACBQAAAAVkcnVtMwUAAAAIZHJ1bTNJbnQEAAAAFWRyb3BwZWRFbGVtZW50c1N0cmluZwkAASwAAAACCQABLAAAAAIJAQAAAA9kcnVtSW50VG9TdHJpbmcAAAABBQAAAAhkcnVtMUludAkBAAAAD2RydW1JbnRUb1N0cmluZwAAAAEFAAAACGRydW0ySW50CQEAAAAPZHJ1bUludFRvU3RyaW5nAAAAAQUAAAAIZHJ1bTNJbnQEAAAABndpbkFtdAkAAGkAAAACCQAAaAAAAAIFAAAABmJldEFtdAkBAAAAEGRlZmluZU11bHRpcGxpZXIAAAACBQAAAAt0aHJlZUluQVJvdwUAAAAJdHdvSW5BUm93AAAAAAAAAAAKBAAAAAxyZWZlckFkZHJlc3MJAQAAAA9nZXRSZWZlckFkZHJlc3MAAAABBQAAAA1wbGF5ZXJBZGRyZXNzBAAAAAtyZWZlclJld2FyZAkBAAAAD3NldE5ld1JlZlJld2FyZAAAAAMFAAAADHJlZmVyQWRkcmVzcwUAAAAGYmV0QW10BQAAAAZ3aW5BbXQDCQAAAAAAAAIFAAAACWdhbWVTdGF0ZQUAAAAIc3RhdGVBY2MDCQAAZgAAAAIFAAAADWdhbWVUaW1lRnJhbWUJAABlAAAAAgUAAAAGaGVpZ2h0BQAAAAlnYW1lU3RhcnQDCQAAAAAAAAIFAAAABndpbkFtdAAAAAAAAAAAAAQAAAASYXZhaWxhYmxlRGl2aWRlbmRzBAAAAAlkaXZpZGVuZHMJAABkAAAAAgkBAAAAEGdldEN1cnJlbnRJbmNvbWUAAAABBQAAAAlhc3NldE5hbWUFAAAABmJldEFtdAMJAABmAAAAAgUAAAAJZGl2aWRlbmRzAAAAAAAAAAAABQAAAAlkaXZpZGVuZHMAAAAAAAAAAAAEAAAABmluY29tZQQAAAAJZGl2aWRlbmRzCQAAZAAAAAIJAQAAABBnZXRDdXJyZW50SW5jb21lAAAAAQUAAAAJYXNzZXROYW1lBQAAAAZiZXRBbXQDCQAAZgAAAAIFAAAACWRpdmlkZW5kcwAAAAAAAAAAAAAAAAAAAAAAAAUAAAAJZGl2aWRlbmRzAwkAAAAAAAACBQAAAAxyZWZlckFkZHJlc3MCAAAABE5vbmUJAQAAAAxTY3JpcHRSZXN1bHQAAAACCQEAAAAIV3JpdGVTZXQAAAABCQAETAAAAAIJAQAAAAlEYXRhRW50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bmNlCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQABLAAAAAIFAAAACWFzc2V0TmFtZQIAAAAHX0luY29tZQkAAGUAAAACCQEAAAAQZ2V0Q3VycmVudEluY29tZQAAAAEFAAAACWFzc2V0TmFtZQkAAGgAAAACBQAAAAZiZXRBbXQAAAAAAAAAAAIFAAAAA25pbAkBAAAAC1RyYW5zZmVyU2V0AAAAAQkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCQEAAAAcQGV4dHJVc2VyKGFkZHJlc3NGcm9tU3RyaW5nKQAAAAEFAAAADXBsYXllckFkZHJlc3MJAABoAAAAAgUAAAAGYmV0QW10AAAAAAAAAAACBQAAAAlhc3NldElkNTgFAAAAA25pbAkAAAIAAAABAgAAABdHYW1lIHN0YXRlIGlzIGluY29ycmVjdAAAAAFpAQAAAA93aXRoZHJhd0RlcG9zaXQAAAABAAAACWFzc2V0TmFtZQQAAAAJYXNzZXRJZDU4CQEAAAARYXNzZXROYW1lVG9CYXNlNTgAAAABBQAAAAlhc3NldE5hbWUEAAAACWNhbGxlclB1YgkBAAAAFGNhbGxlcklzRGVwb3NpdE93bmVyAAAAAgUAAAAJYXNzZXROYW1lCQACWAAAAAEIBQAAAAFpAAAAD2NhbGxlclB1YmxpY0tleQQAAAATZGl2aWRlbmRTdGFydEhlaWdodAkBAAAADmdldERlcG9zaXREYXRhAAAAAgUAAAAJYXNzZXROYW1lAgAAABJfRGVwb3NpdFN0YXJ0QmxvY2sEAAAAD2RlcG9zaXREdXJhdGlvbgkBAAAADmdldERlcG9zaXREYXRhAAAAAgUAAAAJYXNzZXROYW1lAgAAABVfRGVwb3NpdER1cmF0aW9uQmxvY2sEAAAADWRlcG9zaXRBbW91bnQJAQAAAA5nZXREZXBvc2l0RGF0YQAAAAIFAAAACWFzc2V0TmFtZQIAAAAOX0RlcG9zaXRBbW91bnQDCQAAZwAAAAIJAABlAAAAAgUAAAAGaGVpZ2h0BQAAABNkaXZpZGVuZFN0YXJ0SGVpZ2h0BQAAAA9kZXBvc2l0RHVyYXRpb24JAQAAAAxTY3JpcHRSZXN1bHQAAAACCQEAAAAIV3JpdGVTZXQAAAABCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQABLAAAAAIFAAAACWFzc2V0TmFtZQIAAAAdX0RlcG9zaXRXaXRoZHJhd1RyYW5zYWN0aW9uSWQIBQAAAAFpAAAADXRyYW5zYWN0aW9uSWQFAAAAA25pbAkBAAAAC1RyYW5zZmVyU2V0AAAAAQkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCQEAAAAUYWRkcmVzc0Zyb21QdWJsaWNLZXkAAAABCQACWQAAAAEFAAAACWNhbGxlclB1YgUAAAANZGVwb3NpdEFtb3VudAUAAAAJYXNzZXRJZDU4BQAAAANuaWwJAAACAAAAAQkAASwAAAACCQABLAAAAAICAAAAGkRlcG9zaXQgdGltZSBpcyBub3Qgb3Zlci4gCQABpAAAAAEJAABlAAAAAgUAAAAGaGVpZ2h0CQAAZAAAAAIFAAAAE2RpdmlkZW5kU3RhcnRIZWlnaHQFAAAAD2RlcG9zaXREdXJhdGlvbgIAAAANIGJsb2NrcyBsZWZ0LgAAAAEAAAACdHgBAAAABnZlcmlmeQAAAAADCQAB9AAAAAMIBQAAAAJ0eAAAAAlib2R5Qnl0ZXMJAAGRAAAAAggFAAAAAnR4AAAABnByb29mcwAAAAAAAAAAAAUAAAANZ2FtZVB1YmxpY0tleQQAAAAHJG1hdGNoMAUAAAACdHgDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAFFNldFNjcmlwdFRyYW5zYWN0aW9uBAAAAARzc3R4BQAAAAckbWF0Y2gwBgcHSz4iDg==", "chainId": 87, "height": 1931037, "spentComplexity": 0 } View: original | compacted Prev: 8ho2RsXqe78Phmoq729jsAiRmJD39U6tH6YvG6YzYp32 Next: 2FZsu5Z9wpy7bh4rKNYVZt2NHe5jf5hWzP6KYX69uwRS Diff:
OldNewDifferences
2020 let drum3 = ["3", "2", "7", "4", "1", "6", "4", "2", "3", "1", "4", "1", "5", "5", "1", "3", "7", "1", "2", "6"]
2121
2222 let gameTimeFrame = 2880
23-
24-let commission = 500000
2523
2624 let stateAcc = "Accepted"
2725
342340 @Callable(i)
343341 func makeBet () = {
344342 let pmt = extract(i.payment)
345- let betAmount = (pmt.amount - commission)
343+ let betAmount = pmt.amount
346344 let assetId = pmt.assetId
347345 let gameId = toBase58String(i.transactionId)
348346 let playerAddress = extract(i.caller)
423421 then match tx {
424422 case sstx: SetScriptTransaction =>
425423 true
426- case dtx: DataTransaction =>
427- true
428- case ttx: TransferTransaction =>
429- true
430424 case _ =>
431425 false
432426 }
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 3 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let dividendProgramAddress = addressFromPublicKey(fromBase58String("4YzSQxjz8tahQ62bgcKLxoh9424EYDiYdZUzUtQVCzks"))
55
66 let gamePublicKey = fromBase58String("2o1waDCX67ArC4iV4WWHa41MHbCKS4na7KWDJmcKNAQ3")
77
88 let referralProgramAddress = addressFromPublicKey(fromBase58String("1"))
99
1010 let rsaPublicKey1 = fromBase64String("MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAOkiuz/BV4EjoxGhTmNCbt2TgkbSPH/w69b3F1rKmD61JiPXvvF8L2pI9xOYcW4FmoEZVHlRQtAlaJykl3+rsrECAwEAAQ==")
1111
1212 let rsaPublicKey2 = fromBase64String("MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAJnXzbM/V2sDV1ULbPSOlHkldOTWRrHi5fxIkBmuevrClMPVH7rqccwirDNcMdIdwXHI9Adhj9FWjwGIwfU/K6MCAwEAAQ==")
1313
1414 let rsaPublicKey3 = fromBase64String("MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAORDevy0r4kzLqOySloB63Huv2e4zeHKHjCsy5vtFKmWZbXJa8gZYt4+EklFIo1K9oqu5BAPVfJ3FOzs2U1A+g0CAwEAAQ==")
1515
1616 let drum1 = ["2", "1", "3", "5", "7", "3", "3", "1", "4", "1", "3", "5", "2", "4", "2", "6", "5", "2", "1", "4"]
1717
1818 let drum2 = ["4", "2", "3", "1", "6", "4", "2", "1", "4", "2", "1", "6", "3", "1", "2", "5", "1", "5", "3", "7"]
1919
2020 let drum3 = ["3", "2", "7", "4", "1", "6", "4", "2", "3", "1", "4", "1", "5", "5", "1", "3", "7", "1", "2", "6"]
2121
2222 let gameTimeFrame = 2880
23-
24-let commission = 500000
2523
2624 let stateAcc = "Accepted"
2725
2826 let stateWin = "Win"
2927
3028 let stateTimeout = "WinByTimeout"
3129
3230 let stateLose = "Lose"
3331
3432 let wavesId = unit
3533
3634 let btcId = base58'8LQW8f7P5d5PZM7GtZEBgaqRPGSzS3DfPuiXrURJ4AJS'
3735
3836 let ethId = base58'474jTeYx2r2Va35794tCScAXWJG9hU2HcgxzMowaZUnu'
3937
4038 let ltcId = base58'HZk1mbfuJpmxU1Fs4AX5MWLVYtctsNcg6e2C6VKqK8zk'
4139
4240 let westId = base58'4LHHvYGNKJUg5hj65aGD5vgScvCBmLpdRFtjokvCjSL8'
4341
4442 let wctId = base58'DHgwrRvVyqJsepd32YbBqUeDH4GJ1N984X8QoekjgH8J'
4543
4644 let usdtId = base58'34N9YcEETLWn93qYQ64EsP1x89tSruJU44RrEMSXXEPJ'
4745
4846 let usdnId = base58'DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p'
4947
5048 let wavesMinAmt = 20000000
5149
5250 let wavesMaxAmt = (wavesMinAmt * 10)
5351
5452 let btcMinAmt = 2000
5553
5654 let btcMaxAmt = (btcMinAmt * 10)
5755
5856 let ethMinAmt = 100000
5957
6058 let ethMaxAmt = (ethMinAmt * 10)
6159
6260 let ltcMinAmt = 200000
6361
6462 let ltcMaxAmt = (ltcMinAmt * 10)
6563
6664 let wctMinAmt = 200000000
6765
6866 let wctMaxAmt = (wctMinAmt * 10)
6967
7068 let westMinAmt = 200000000
7169
7270 let westMaxAmt = (westMinAmt * 10)
7371
7472 let usdtMinAmt = 200000
7573
7674 let usdtMaxAmt = (usdtMinAmt * 10)
7775
7876 let usdnMinAmt = 200000
7977
8078 let usdnMaxAmt = (usdnMinAmt * 10)
8179
8280 func pmtAmtCheck (pmtAssetId,betAmount) = if ((pmtAssetId == "WAVES"))
8381 then if (if ((betAmount >= wavesMinAmt))
8482 then (wavesMaxAmt >= betAmount)
8583 else false)
8684 then true
8785 else throw("Bet amount is not in range")
8886 else if ((pmtAssetId == "BTC"))
8987 then if (if ((betAmount >= btcMinAmt))
9088 then (btcMaxAmt >= betAmount)
9189 else false)
9290 then true
9391 else throw("Bet amount is not in range")
9492 else if ((pmtAssetId == "ETH"))
9593 then if (if ((betAmount >= ethMinAmt))
9694 then (ethMaxAmt >= betAmount)
9795 else false)
9896 then true
9997 else throw("Bet amount is not in range")
10098 else if ((pmtAssetId == "LTC"))
10199 then if (if ((betAmount >= ltcMinAmt))
102100 then (ltcMaxAmt >= betAmount)
103101 else false)
104102 then true
105103 else throw("Bet amount is not in range")
106104 else if ((pmtAssetId == "WEST"))
107105 then if (if ((betAmount >= westMinAmt))
108106 then (westMaxAmt >= betAmount)
109107 else false)
110108 then true
111109 else throw("Bet amount is not in range")
112110 else if ((pmtAssetId == "USDT"))
113111 then if (if ((betAmount >= usdtMinAmt))
114112 then (usdtMaxAmt >= betAmount)
115113 else false)
116114 then true
117115 else throw("Bet amount is not in range")
118116 else if ((pmtAssetId == "USDN"))
119117 then if (if ((betAmount >= usdnMinAmt))
120118 then (usdnMaxAmt >= betAmount)
121119 else false)
122120 then true
123121 else throw("Bet amount is not in range")
124122 else if (if ((betAmount >= wctMinAmt))
125123 then (wctMaxAmt >= betAmount)
126124 else false)
127125 then true
128126 else throw("Bet amount is not in range")
129127
130128
131129 func getDataList (gameId) = {
132130 let getDataString = getString(this, (gameId + "_GameId"))
133131 let a = match getDataString {
134132 case a: String =>
135133 a
136134 case _ =>
137135 throw("GameId was not found")
138136 }
139137 split(a, "_")
140138 }
141139
142140
143141 func rsaToInt (gameId,rsaSign,rsaPublicKey) = {
144142 let rsaCheck = rsaVerify(SHA256, toBytes(gameId), rsaSign, rsaPublicKey)
145143 if (rsaCheck)
146144 then (toInt(sha256(rsaSign)) % 19)
147145 else throw("Rsa Signature is invalid")
148146 }
149147
150148
151149 func increaseReservedBalance (pmtAmt,pmtAssetName,assetId58) = {
152150 let currentReservedBalance = {
153151 let valueReservedBalance = getInteger(this, (pmtAssetName + "_Reserved"))
154152 match valueReservedBalance {
155153 case a: Int =>
156154 a
157155 case _ =>
158156 0
159157 }
160158 }
161159 let newReservedBalance = (currentReservedBalance + (pmtAmt * 260))
162160 if ((assetBalance(this, assetId58) >= newReservedBalance))
163161 then newReservedBalance
164162 else throw("Bet was rejected. Insufficient funds on game account.")
165163 }
166164
167165
168166 func decreaseReservedBalance (betAmt,assetId) = {
169167 let valueReservedBalance = getInteger(this, (assetId + "_Reserved"))
170168 let extractReservedBalance = match valueReservedBalance {
171169 case a: Int =>
172170 a
173171 case _ =>
174172 0
175173 }
176174 let decreaseReservedBalance = (extractReservedBalance - (betAmt * 260))
177175 if ((decreaseReservedBalance >= 0))
178176 then decreaseReservedBalance
179177 else throw("Reserved balance couldn't be less than 0")
180178 }
181179
182180
183181 func drumIntToString (drumInt) = if ((10 > drumInt))
184182 then ("0" + toString(drumInt))
185183 else toString(drumInt)
186184
187185
188186 func defineMultiplier (threeInARow,twoInARow) = if ((threeInARow == "777"))
189187 then 2600
190188 else if ((threeInARow == "666"))
191189 then 1300
192190 else if ((threeInARow == "555"))
193191 then 450
194192 else if ((threeInARow == "444"))
195193 then 200
196194 else if ((threeInARow == "333"))
197195 then 150
198196 else if ((threeInARow == "222"))
199197 then 110
200198 else if ((threeInARow == "111"))
201199 then 50
202200 else if ((twoInARow == "77"))
203201 then 270
204202 else if ((twoInARow == "66"))
205203 then 130
206204 else if ((twoInARow == "55"))
207205 then 45
208206 else if ((twoInARow == "44"))
209207 then 30
210208 else if ((twoInARow == "33"))
211209 then 20
212210 else if ((twoInARow == "22"))
213211 then 17
214212 else if ((twoInARow == "11"))
215213 then 13
216214 else 0
217215
218216
219217 func assetNameToBase58 (assetName) = if ((assetName == "WAVES"))
220218 then wavesId
221219 else if ((assetName == "BTC"))
222220 then btcId
223221 else if ((assetName == "ETH"))
224222 then ethId
225223 else if ((assetName == "LTC"))
226224 then ltcId
227225 else if ((assetName == "WEST"))
228226 then westId
229227 else if ((assetName == "WCT"))
230228 then wctId
231229 else if ((assetName == "USDT"))
232230 then usdtId
233231 else if ((assetName == "USDN"))
234232 then usdnId
235233 else throw("Asset name is incorrect")
236234
237235
238236 func assetBase58ToName (assetId) = if (!(isDefined(assetId)))
239237 then "WAVES"
240238 else if ((assetId == btcId))
241239 then "BTC"
242240 else if ((assetId == ethId))
243241 then "ETH"
244242 else if ((assetId == ltcId))
245243 then "LTC"
246244 else if ((assetId == westId))
247245 then "WEST"
248246 else if ((assetId == wctId))
249247 then "WCT"
250248 else if ((assetId == usdtId))
251249 then "USDT"
252250 else if ((assetId == usdnId))
253251 then "USDN"
254252 else throw("AssetId is incorrect")
255253
256254
257255 func getReferAddress (address) = {
258256 let referAddress = getString(referralProgramAddress, (address + "_Refer"))
259257 match referAddress {
260258 case a: String =>
261259 a
262260 case _ =>
263261 "None"
264262 }
265263 }
266264
267265
268266 func setNewRefReward (referAddress,betAmt,winAmt) = if ((referAddress == "None"))
269267 then 0
270268 else {
271269 let valueRefReward = getInteger(this, (referAddress + "_RefReward"))
272270 let currentRefReward = match valueRefReward {
273271 case a: Int =>
274272 a
275273 case _ =>
276274 throw("Couldn't find refer reward for this address")
277275 }
278276 let refKoeff = {
279277 let a = match getInteger(this, (referAddress + "_GamesPlayedByRef")) {
280278 case a: Int =>
281279 a
282280 case _ =>
283281 throw("Couldn't find games played number by referrals for this address")
284282 }
285283 if ((a > 10000))
286284 then 30
287285 else if ((a > 1000))
288286 then 20
289287 else if ((a > 100))
290288 then 10
291289 else 5
292290 }
293291 let gameIncome = (betAmt - winAmt)
294292 let rewardForThisGame = ((gameIncome * refKoeff) / 100)
295293 (currentRefReward + rewardForThisGame)
296294 }
297295
298296
299297 func setNewGamesPlayedNum (address) = {
300298 let valueGamesPlayedNum = getInteger(this, (address + "_GamesPlayed"))
301299 let currentGamesPlayedNum = match valueGamesPlayedNum {
302300 case a: Int =>
303301 a
304302 case _ =>
305303 0
306304 }
307305 (currentGamesPlayedNum + 1)
308306 }
309307
310308
311309 func getCurrentIncome (assetName) = {
312310 let val = getInteger(this, (assetName + "_Income"))
313311 match val {
314312 case a: Int =>
315313 a
316314 case _ =>
317315 0
318316 }
319317 }
320318
321319
322320 func callerIsDepositOwner (assetName,callerPublicKey) = {
323321 let depositOwner = getString(dividendProgramAddress, (assetName + "_DepositOwner"))
324322 if ((callerPublicKey == depositOwner))
325323 then callerPublicKey
326324 else throw("Only deposit owner can withdrawal deposit")
327325 }
328326
329327
330328 func getDepositData (assetName,keySuffix) = {
331329 let key = (assetName + keySuffix)
332330 let val = getInteger(dividendProgramAddress, key)
333331 match val {
334332 case a: Int =>
335333 a
336334 case _ =>
337335 throw("Couldn't find dividend program start height")
338336 }
339337 }
340338
341339
342340 @Callable(i)
343341 func makeBet () = {
344342 let pmt = extract(i.payment)
345- let betAmount = (pmt.amount - commission)
343+ let betAmount = pmt.amount
346344 let assetId = pmt.assetId
347345 let gameId = toBase58String(i.transactionId)
348346 let playerAddress = extract(i.caller)
349347 let pmtAssetName = assetBase58ToName(assetId)
350348 let setReservedBalance = increaseReservedBalance(betAmount, pmtAssetName, pmt.assetId)
351349 let pmtAmtCorrect = pmtAmtCheck(pmtAssetName, betAmount)
352350 if (pmtAmtCorrect)
353351 then {
354352 let dataString = ((((((((stateAcc + "_") + toString(playerAddress)) + "_") + toString(betAmount)) + "_") + pmtAssetName) + "_") + toString(height))
355353 WriteSet([DataEntry((gameId + "_GameId"), dataString), DataEntry((pmtAssetName + "_Reserved"), setReservedBalance)])
356354 }
357355 else throw("assetId is incorrect")
358356 }
359357
360358
361359
362360 @Callable(i)
363361 func playGame (gameId,rsaSign1,rsaSign2,rsaSign3) = {
364362 let dataList = getDataList(gameId)
365363 let gameState = dataList[0]
366364 let playerAddress = dataList[1]
367365 let betAmt = parseIntValue(dataList[2])
368366 let assetName = dataList[3]
369367 let gameStart = parseIntValue(dataList[4])
370368 let assetId58 = assetNameToBase58(assetName)
371369 let setReservedBalance = decreaseReservedBalance(betAmt, assetName)
372370 let drum1Int = rsaToInt(gameId, rsaSign1, rsaPublicKey1)
373371 let drum2Int = rsaToInt(gameId, rsaSign2, rsaPublicKey2)
374372 let drum3Int = rsaToInt(gameId, rsaSign3, rsaPublicKey3)
375373 let twoInARow = (drum1[drum1Int] + drum2[drum2Int])
376374 let threeInARow = (twoInARow + drum3[drum3Int])
377375 let droppedElementsString = ((drumIntToString(drum1Int) + drumIntToString(drum2Int)) + drumIntToString(drum3Int))
378376 let winAmt = ((betAmt * defineMultiplier(threeInARow, twoInARow)) / 10)
379377 let referAddress = getReferAddress(playerAddress)
380378 let referReward = setNewRefReward(referAddress, betAmt, winAmt)
381379 if ((gameState == stateAcc))
382380 then if ((gameTimeFrame > (height - gameStart)))
383381 then if ((winAmt == 0))
384382 then {
385383 let availableDividends = {
386384 let dividends = (getCurrentIncome(assetName) + betAmt)
387385 if ((dividends > 0))
388386 then dividends
389387 else 0
390388 }
391389 let income = {
392390 let dividends = (getCurrentIncome(assetName) + betAmt)
393391 if ((dividends > 0))
394392 then 0
395393 else dividends
396394 }
397395 if ((referAddress == "None"))
398396 then ScriptResult(WriteSet([DataEntry((gameId + "_GameId"), ((((((((((((((stateLose + "_") + dataList[1]) + "_") + dataList[2]) + "_") + dataList[3]) + "_") + toString(height)) + "_") + toString(winAmt)) + "_") + threeInARow) + "_") + droppedElementsString)), DataEntry((assetName + "_Reserved"), setReservedBalance), DataEntry((assetName + "_Income"), income)]), TransferSet([ScriptTransfer(dividendProgramAddress, availableDividends, assetId58)]))
399397 else ScriptResult(WriteSet([DataEntry((gameId + "_GameId"), ((((((((((((((stateLose + "_") + dataList[1]) + "_") + dataList[2]) + "_") + dataList[3]) + "_") + toString(height)) + "_") + toString(winAmt)) + "_") + threeInARow) + "_") + droppedElementsString)), DataEntry((assetName + "_Reserved"), setReservedBalance), DataEntry((assetName + "_Income"), income)]), TransferSet([ScriptTransfer(dividendProgramAddress, availableDividends, assetId58)]))
400398 }
401399 else ScriptResult(WriteSet([DataEntry((gameId + "_GameId"), ((((((((((((((stateWin + "_") + dataList[1]) + "_") + dataList[2]) + "_") + dataList[3]) + "_") + toString(height)) + "_") + toString(winAmt)) + "_") + threeInARow) + "_") + droppedElementsString)), DataEntry((assetName + "_Reserved"), setReservedBalance), DataEntry((assetName + "_Income"), (getCurrentIncome(assetName) - winAmt))]), TransferSet([ScriptTransfer(addressFromStringValue(playerAddress), winAmt, assetId58)]))
402400 else ScriptResult(WriteSet([DataEntry((gameId + "_GameId"), ((((((((((((((stateTimeout + "_") + dataList[1]) + "_") + dataList[2]) + "_") + dataList[3]) + "_") + toString(height)) + "_") + toString((betAmt * 2))) + "_") + "000") + "_") + "000000")), DataEntry((assetName + "_Reserved"), setReservedBalance), DataEntry((assetName + "_Income"), (getCurrentIncome(assetName) - (betAmt * 2)))]), TransferSet([ScriptTransfer(addressFromStringValue(playerAddress), (betAmt * 2), assetId58)]))
403401 else throw("Game state is incorrect")
404402 }
405403
406404
407405
408406 @Callable(i)
409407 func withdrawDeposit (assetName) = {
410408 let assetId58 = assetNameToBase58(assetName)
411409 let callerPub = callerIsDepositOwner(assetName, toBase58String(i.callerPublicKey))
412410 let dividendStartHeight = getDepositData(assetName, "_DepositStartBlock")
413411 let depositDuration = getDepositData(assetName, "_DepositDurationBlock")
414412 let depositAmount = getDepositData(assetName, "_DepositAmount")
415413 if (((height - dividendStartHeight) >= depositDuration))
416414 then ScriptResult(WriteSet([DataEntry((assetName + "_DepositWithdrawTransactionId"), i.transactionId)]), TransferSet([ScriptTransfer(addressFromPublicKey(fromBase58String(callerPub)), depositAmount, assetId58)]))
417415 else throw((("Deposit time is not over. " + toString((height - (dividendStartHeight + depositDuration)))) + " blocks left."))
418416 }
419417
420418
421419 @Verifier(tx)
422420 func verify () = if (sigVerify(tx.bodyBytes, tx.proofs[0], gamePublicKey))
423421 then match tx {
424422 case sstx: SetScriptTransaction =>
425423 true
426- case dtx: DataTransaction =>
427- true
428- case ttx: TransferTransaction =>
429- true
430424 case _ =>
431425 false
432426 }
433427 else false
434428

github/deemru/w8io/3ef1775 
69.27 ms