tx · 76RPxGUEJSZ9Kdu5SZDkW5jwcu4pStv49dZdP8hrco7G 3MzDG9rt13Eu5uw4mZqkG5axDiijvVSDbjc: -0.01000000 Waves 2019.12.27 17:07 [827539] smart account 3MzDG9rt13Eu5uw4mZqkG5axDiijvVSDbjc > SELF 0.00000000 Waves
{ "type": 13, "id": "76RPxGUEJSZ9Kdu5SZDkW5jwcu4pStv49dZdP8hrco7G", "fee": 1000000, "feeAssetId": null, "timestamp": 1577455598062, "version": 1, "sender": "3MzDG9rt13Eu5uw4mZqkG5axDiijvVSDbjc", "senderPublicKey": "6MTSfDEbfZ9Vr7hxN2PkJT6tQvCPZ1jN7K9L8gCiZnF5", "proofs": [ "2Wv934pupnJtcPVA8mKaZziZGV59Eo3kxPnvE55nMvJtC3PZ2HL62Qcc4ohvGgxNDsbWus9XCGaYx1nTiWTvFHHo" ], "script": "base64:AAIDAAAAAAAAABEIARIAEgYKBAgICAgSAwoBCAAAADAAAAAAFmRpdmlkZW5kUHJvZ3JhbUFkZHJlc3MJAQAAABRhZGRyZXNzRnJvbVB1YmxpY0tleQAAAAEJAAJZAAAAAQIAAAAsNVNZUnJXQWtrSGlpeURTelRWYlRha3Z4M2pzdno3M1ljNXNMY0RnZEs4c2cAAAAADWdhbWVQdWJsaWNLZXkJAAJZAAAAAQIAAAAsNk1UU2ZERWJmWjlWcjdoeE4yUGtKVDZ0UXZDUFoxak43SzlMOGdDaVpuRjUAAAAADXJzYVB1YmxpY0tleTEJAAJbAAAAAQIAAACATUZ3d0RRWUpLb1pJaHZjTkFRRUJCUUFEU3dBd1NBSkJBT2tpdXovQlY0RWpveEdoVG1OQ2J0MlRna2JTUEgvdzY5YjNGMXJLbUQ2MUppUFh2dkY4TDJwSTl4T1ljVzRGbW9FWlZIbFJRdEFsYUp5a2wzK3JzckVDQXdFQUFRPT0AAAAADXJzYVB1YmxpY0tleTIJAAJbAAAAAQIAAACATUZ3d0RRWUpLb1pJaHZjTkFRRUJCUUFEU3dBd1NBSkJBSm5YemJNL1Yyc0RWMVVMYlBTT2xIa2xkT1RXUnJIaTVmeElrQm11ZXZyQ2xNUFZIN3JxY2N3aXJETmNNZElkd1hISTlBZGhqOUZXandHSXdmVS9LNk1DQXdFQUFRPT0AAAAADXJzYVB1YmxpY0tleTMJAAJbAAAAAQIAAACATUZ3d0RRWUpLb1pJaHZjTkFRRUJCUUFEU3dBd1NBSkJBT1JEZXZ5MHI0a3pMcU95U2xvQjYzSHV2MmU0emVIS0hqQ3N5NXZ0RkttV1piWEphOGdaWXQ0K0VrbEZJbzFLOW9xdTVCQVBWZkozRk96czJVMUErZzBDQXdFQUFRPT0AAAAABWRydW0xCQAETAAAAAICAAAAATIJAARMAAAAAgIAAAABMQkABEwAAAACAgAAAAEzCQAETAAAAAICAAAAATUJAARMAAAAAgIAAAABNwkABEwAAAACAgAAAAEzCQAETAAAAAICAAAAATMJAARMAAAAAgIAAAABMQkABEwAAAACAgAAAAE0CQAETAAAAAICAAAAATEJAARMAAAAAgIAAAABMwkABEwAAAACAgAAAAE1CQAETAAAAAICAAAAATIJAARMAAAAAgIAAAABNAkABEwAAAACAgAAAAEyCQAETAAAAAICAAAAATYJAARMAAAAAgIAAAABNQkABEwAAAACAgAAAAEyCQAETAAAAAICAAAAATEJAARMAAAAAgIAAAABNAUAAAADbmlsAAAAAAVkcnVtMgkABEwAAAACAgAAAAE0CQAETAAAAAICAAAAATIJAARMAAAAAgIAAAABMwkABEwAAAACAgAAAAExCQAETAAAAAICAAAAATYJAARMAAAAAgIAAAABNAkABEwAAAACAgAAAAEyCQAETAAAAAICAAAAATEJAARMAAAAAgIAAAABNAkABEwAAAACAgAAAAEyCQAETAAAAAICAAAAATEJAARMAAAAAgIAAAABNgkABEwAAAACAgAAAAEzCQAETAAAAAICAAAAATEJAARMAAAAAgIAAAABMgkABEwAAAACAgAAAAE1CQAETAAAAAICAAAAATEJAARMAAAAAgIAAAABNQkABEwAAAACAgAAAAEzCQAETAAAAAICAAAAATcFAAAAA25pbAAAAAAFZHJ1bTMJAARMAAAAAgIAAAABMwkABEwAAAACAgAAAAEyCQAETAAAAAICAAAAATcJAARMAAAAAgIAAAABNAkABEwAAAACAgAAAAExCQAETAAAAAICAAAAATYJAARMAAAAAgIAAAABNAkABEwAAAACAgAAAAEyCQAETAAAAAICAAAAATMJAARMAAAAAgIAAAABMQkABEwAAAACAgAAAAE0CQAETAAAAAICAAAAATEJAARMAAAAAgIAAAABNQkABEwAAAACAgAAAAE1CQAETAAAAAICAAAAATEJAARMAAAAAgIAAAABMwkABEwAAAACAgAAAAE3CQAETAAAAAICAAAAATEJAARMAAAAAgIAAAABMgkABEwAAAACAgAAAAE2BQAAAANuaWwAAAAADWdhbWVUaW1lRnJhbWUJAABoAAAAAgAAAAAAAAAFoAAAAAAAAAAAAgAAAAAKY29tbWlzc2lvbgAAAAAAAAehIAAAAAAIc3RhdGVBY2MCAAAACEFjY2VwdGVkAAAAAAhzdGF0ZVdpbgIAAAADV2luAAAAAAxzdGF0ZVRpbWVvdXQCAAAADFdpbkJ5VGltZW91dAAAAAAJc3RhdGVMb3NlAgAAAARMb3NlAAAAAAd3YXZlc0lkBQAAAAR1bml0AAAAAAVidGNJZAEAAAAg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BQAAAAR0aGlzCQABLAAAAAIFAAAADHBtdEFzc2V0TmFtZQIAAAAJX1Jlc2VydmVkBAAAAAckbWF0Y2gwBQAAABR2YWx1ZVJlc2VydmVkQmFsYW5jZQMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAADSW50BAAAAAFhBQAAAAckbWF0Y2gwBQAAAAFhAAAAAAAAAAAABAAAABJuZXdSZXNlcnZlZEJhbGFuY2UJAABkAAAAAgUAAAAWY3VycmVudFJlc2VydmVkQmFsYW5jZQkAAGgAAAACBQAAAAZwbXRBbXQAAAAAAAAAAQQDCQAAZwAAAAIJAAPrAAAAAgUAAAAEdGhpcwUAAAAJYXNzZXRJZDU4BQAAABJuZXdSZXNlcnZlZEJhbGFuY2UFAAAAEm5ld1Jlc2VydmVkQmFsYW5jZQkAAAIAAAABAgAAADVCZXQgd2FzIHJlamVjdGVkLiBJbnN1ZmZpY2llbnQgZnVuZHMgb24gZ2FtZSBhY2NvdW50LgEAAAAXZGVjcmVhc2VSZXNlcnZlZEJhbGFuY2UAAAACAAAABmJldEFtdAAAAAdhc3NldElkBAAAABR2YWx1ZVJlc2VydmVkQmFsYW5jZQkABBoAAAACBQAAAAR0aGlzCQABLAAAAAIFAAAAB2Fzc2V0SWQCAAAACV9SZXNlcnZlZAQAAAAWZXh0cmFjdFJlc2VydmVkQmFsYW5jZQQAAAAHJG1hdGNoMAUAAAAUdmFsdWVSZXNlcnZlZEJhbGFuY2UDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAA0ludAQAAAABYQUAAAAHJG1hdGNoMAUAAAABYQAAAAAAAAAAAAQAAAAXZGVjcmVhc2VSZXNlcnZlZEJhbGFuY2UJAABlAAAAAgUAAAAWZXh0cmFjdFJlc2VydmVkQmFsYW5jZQkAAGgAAAACBQAAAAZiZXRBbXQAAAAAAAAAAQQDCQAAZwAAAAIFAAAAF2RlY3JlYXNlUmVzZXJ2ZWRCYWxhbmNlAAAAAAAAAAAABQAAABdkZWNyZWFzZVJlc2VydmVkQmFsYW5jZQkAAAIAAAABAgAAAChSZXNlcnZlZCBiYWxhbmNlIGNvdWxkbid0IGJlIGxlc3MgdGhhbiAwAQAAAA9kcnVtSW50VG9TdHJpbmcAAAABAAAAB2RydW1JbnQDCQAAZgAA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ZGF0YUxpc3QAAAAAAAAAAAMEAAAACWdhbWVTdGFydAkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAACGRhdGFMaXN0AAAAAAAAAAAEBAAAAAlhc3NldElkNTgJAQAAABFhc3NldE5hbWVUb0Jhc2U1OAAAAAEFAAAACWFzc2V0TmFtZQQAAAASc2V0UmVzZXJ2ZWRCYWxhbmNlCQEAAAAXZGVjcmVhc2VSZXNlcnZlZEJhbGFuY2UAAAACBQAAAAZiZXRBbXQFAAAACWFzc2V0TmFtZQQAAAANY3VycmVudEluY29tZQkBAAAAEGdldEN1cnJlbnRJbmNvbWUAAAABBQAAAAlhc3NldE5hbWUEAAAACGRydW0xSW50CQEAAAAIcnNhVG9JbnQAAAADBQAAAAZnYW1lSWQFAAAACHJzYVNpZ24xBQAAAA1yc2FQdWJsaWNLZXkxBAAAAAhkcnVtMkludAkBAAAACHJzYVRvSW50AAAAAwUAAAAGZ2FtZUlkBQAAAAhyc2FTaWduMgUAAAANcnNhUHVibGljS2V5MgQAAAAIZHJ1bTNJbnQJAQAAAAhyc2FUb0ludAAAAAMFAAAABmdhbWVJZAUAAAAIcnNhU2lnbjMFAAAADXJzYVB1YmxpY0tleTMEAAAACXR3b0luQVJvdwkAASwAAAACCQABkQAAAAIFAAAABWRydW0xBQAAAAhkcnVtMUludAkAAZEAAAACBQAAAAVkcnVtMgUAAAAIZHJ1bTJJbnQEAAAAC3RocmVlSW5BUm93CQABLAAAAAIFAAAACXR3b0luQVJvdwkAAZEAAAACBQAAAAVkcnVtMwUAAAAIZHJ1bTNJbnQEAAAAFWRyb3BwZWRFbGVtZW50c1N0cmluZwkAASwAAAACCQABLAAAAAIJAQAAAA9kcnVtSW50VG9TdHJpbmcAAAABBQAAAAhkcnVtMUludAkBAAAAD2RydW1JbnRUb1N0cmluZwAAAAEFAAAACGRydW0ySW50CQEAAAAPZHJ1bUludFRvU3RyaW5nAAAAAQUAAAAIZHJ1bTNJbnQEAAAABndpbkFtdAkAAGkAAAACCQAAaAAAAAIFAAAABmJldEFtdAkBAAAAEGRlZmluZU11bHRpcGxpZXIAAAACBQAAAAt0aHJlZUluQVJvdwUAAAAJdHdvSW5BUm93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YXNzZXROYW1lAgAAABVfRGVwb3NpdER1cmF0aW9uQmxvY2sEAAAADWRlcG9zaXRBbW91bnQJAQAAAA5nZXREZXBvc2l0RGF0YQAAAAIFAAAACWFzc2V0TmFtZQIAAAAOX0RlcG9zaXRBbW91bnQEAAAAGWRpdmlkZW5kUHJvZ3JhbVRpbWVJc092ZXIJAABnAAAAAgkAAGUAAAACBQAAAAZoZWlnaHQFAAAAE2RpdmlkZW5kU3RhcnRIZWlnaHQFAAAAD2RlcG9zaXREdXJhdGlvbgMFAAAAGWRpdmlkZW5kUHJvZ3JhbVRpbWVJc092ZXIJAQAAAAxTY3JpcHRSZXN1bHQAAAACCQEAAAAIV3JpdGVTZXQAAAABCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQABLAAAAAIFAAAACWFzc2V0TmFtZQIAAAAdX0RlcG9zaXRXaXRoZHJhd1RyYW5zYWN0aW9uSWQIBQAAAAFpAAAADXRyYW5zYWN0aW9uSWQFAAAAA25pbAkBAAAAC1RyYW5zZmVyU2V0AAAAAQkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCQEAAAAUYWRkcmVzc0Zyb21QdWJsaWNLZXkAAAABCQACWQAAAAEFAAAACWNhbGxlclB1YgUAAAANZGVwb3NpdEFtb3VudAUAAAAJYXNzZXRJZDU4BQAAAANuaWwJAAACAAAAAQkAASwAAAACCQABLAAAAAICAAAAGkRlcG9zaXQgdGltZSBpcyBub3Qgb3Zlci4gCQABpAAAAAEJAABlAAAAAgUAAAAGaGVpZ2h0CQAAZAAAAAIFAAAAE2RpdmlkZW5kU3RhcnRIZWlnaHQFAAAAD2RlcG9zaXREdXJhdGlvbgIAAAANIGJsb2NrcyBsZWZ0LgAAAAEAAAACdHgBAAAABnZlcmlmeQAAAAADCQAB9AAAAAMIBQAAAAJ0eAAAAAlib2R5Qnl0ZXMJAAGRAAAAAggFAAAAAnR4AAAABnByb29mcwAAAAAAAAAAAAUAAAANZ2FtZVB1YmxpY0tleQQAAAAHJG1hdGNoMAUAAAACdHgDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAE1RyYW5zZmVyVHJhbnNhY3Rpb24EAAAAA3R0eAUAAAAHJG1hdGNoMAcDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAFFNldFNjcmlwdFRyYW5zYWN0aW9uBAAAAARzc3R4BQAAAAckbWF0Y2gwBgMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAXSW52b2tlU2NyaXB0VHJhbnNhY3Rpb24EAAAABGlzdHgFAAAAByRtYXRjaDAGAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAA9EYXRhVHJhbnNhY3Rpb24EAAAAA2R0eAUAAAAHJG1hdGNoMAYHB5bYgP0=", "chainId": 84, "height": 827539, "spentComplexity": 0 } View: original | compacted Prev: none Next: 3uYSQLVqNwvwHaziJFAB58qArU9KNvNG1DYHwyYkSWUX Full:
Old | New | Differences | |
---|---|---|---|
1 | - | # no script | |
1 | + | {-# STDLIB_VERSION 3 #-} | |
2 | + | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | + | {-# CONTENT_TYPE DAPP #-} | |
4 | + | let dividendProgramAddress = addressFromPublicKey(fromBase58String("5SYRrWAkkHiiyDSzTVbTakvx3jsvz73Yc5sLcDgdK8sg")) | |
5 | + | ||
6 | + | let gamePublicKey = fromBase58String("6MTSfDEbfZ9Vr7hxN2PkJT6tQvCPZ1jN7K9L8gCiZnF5") | |
7 | + | ||
8 | + | let rsaPublicKey1 = fromBase64String("MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAOkiuz/BV4EjoxGhTmNCbt2TgkbSPH/w69b3F1rKmD61JiPXvvF8L2pI9xOYcW4FmoEZVHlRQtAlaJykl3+rsrECAwEAAQ==") | |
9 | + | ||
10 | + | let rsaPublicKey2 = fromBase64String("MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAJnXzbM/V2sDV1ULbPSOlHkldOTWRrHi5fxIkBmuevrClMPVH7rqccwirDNcMdIdwXHI9Adhj9FWjwGIwfU/K6MCAwEAAQ==") | |
11 | + | ||
12 | + | let rsaPublicKey3 = fromBase64String("MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAORDevy0r4kzLqOySloB63Huv2e4zeHKHjCsy5vtFKmWZbXJa8gZYt4+EklFIo1K9oqu5BAPVfJ3FOzs2U1A+g0CAwEAAQ==") | |
13 | + | ||
14 | + | let drum1 = ["2", "1", "3", "5", "7", "3", "3", "1", "4", "1", "3", "5", "2", "4", "2", "6", "5", "2", "1", "4"] | |
15 | + | ||
16 | + | let drum2 = ["4", "2", "3", "1", "6", "4", "2", "1", "4", "2", "1", "6", "3", "1", "2", "5", "1", "5", "3", "7"] | |
17 | + | ||
18 | + | let drum3 = ["3", "2", "7", "4", "1", "6", "4", "2", "3", "1", "4", "1", "5", "5", "1", "3", "7", "1", "2", "6"] | |
19 | + | ||
20 | + | let gameTimeFrame = (1440 * 2) | |
21 | + | ||
22 | + | let commission = 500000 | |
23 | + | ||
24 | + | let stateAcc = "Accepted" | |
25 | + | ||
26 | + | let stateWin = "Win" | |
27 | + | ||
28 | + | let stateTimeout = "WinByTimeout" | |
29 | + | ||
30 | + | let stateLose = "Lose" | |
31 | + | ||
32 | + | let wavesId = unit | |
33 | + | ||
34 | + | let btcId = base58'Gt4HLkHunts7bWbtYP5UCsAPW7TUA4gmQEnjgjbZ2NqB' | |
35 | + | ||
36 | + | let ethId = base58'6A79GDQj8bdHqUaoJQ3qE1TCPnBc3wFirNCSsAY5RKry' | |
37 | + | ||
38 | + | let ltcId = base58'7oRhs4zoufHM4KiBDuJwRXUWb9JQaFt98N8ubpmytMmw' | |
39 | + | ||
40 | + | let vstId = base58'5UyDjBMx1Q8UWhJj1r7JuA6h4aCkKrHE1J19HvMXRpRd' | |
41 | + | ||
42 | + | let wctId = base58'Ae5W927iuKSLLT6Sdt3bqWze6ZUbYHDWzPY6dLKQusZv' | |
43 | + | ||
44 | + | let divider = 1000 | |
45 | + | ||
46 | + | let WavesMinAmt = (100000000 / divider) | |
47 | + | ||
48 | + | let WavesMaxAmt = (WavesMinAmt * 10) | |
49 | + | ||
50 | + | let BtcMinAmt = (10000 / divider) | |
51 | + | ||
52 | + | let BtcMaxAmt = (BtcMinAmt * 10) | |
53 | + | ||
54 | + | let EthMinAmt = (1000000 / divider) | |
55 | + | ||
56 | + | let EthMaxAmt = (EthMinAmt * 10) | |
57 | + | ||
58 | + | let LtcMinAmt = (2000000 / divider) | |
59 | + | ||
60 | + | let LtcMaxAmt = (LtcMinAmt * 10) | |
61 | + | ||
62 | + | let WctMinAmt = (500000000 / divider) | |
63 | + | ||
64 | + | let WctMaxAmt = (WctMinAmt * 10) | |
65 | + | ||
66 | + | let VstMinAmt = (500000000 / divider) | |
67 | + | ||
68 | + | let VstMaxAmt = (VstMinAmt * 10) | |
69 | + | ||
70 | + | func getInvestorPub (assetName) = { | |
71 | + | let val = getBinary(this, (assetName + "_DepositInvestor")) | |
72 | + | match val { | |
73 | + | case a: ByteVector => | |
74 | + | a | |
75 | + | case _ => | |
76 | + | throw("Error") | |
77 | + | } | |
78 | + | } | |
79 | + | ||
80 | + | ||
81 | + | func getDepositAmount (assetName) = { | |
82 | + | let val = getBinary(this, (assetName + "_DepositAmount")) | |
83 | + | match val { | |
84 | + | case a: ByteVector => | |
85 | + | a | |
86 | + | case _ => | |
87 | + | throw("Error") | |
88 | + | } | |
89 | + | } | |
90 | + | ||
91 | + | ||
92 | + | func pmtAmtCheck (pmtAssetId,betAmount) = if ((pmtAssetId == "WAVES")) | |
93 | + | then if (if ((betAmount >= WavesMinAmt)) | |
94 | + | then (WavesMaxAmt >= betAmount) | |
95 | + | else false) | |
96 | + | then true | |
97 | + | else throw("Bet amount is not in range") | |
98 | + | else if ((pmtAssetId == "BTC")) | |
99 | + | then if (if ((betAmount >= BtcMinAmt)) | |
100 | + | then (BtcMaxAmt >= betAmount) | |
101 | + | else false) | |
102 | + | then true | |
103 | + | else throw("Bet amount is not in range") | |
104 | + | else if ((pmtAssetId == "ETH")) | |
105 | + | then if (if ((betAmount >= EthMinAmt)) | |
106 | + | then (EthMaxAmt >= betAmount) | |
107 | + | else false) | |
108 | + | then true | |
109 | + | else throw("Bet amount is not in range") | |
110 | + | else if ((pmtAssetId == "LTC")) | |
111 | + | then if (if ((betAmount >= LtcMinAmt)) | |
112 | + | then (LtcMaxAmt >= betAmount) | |
113 | + | else false) | |
114 | + | then true | |
115 | + | else throw("Bet amount is not in range") | |
116 | + | else if ((pmtAssetId == "WCT")) | |
117 | + | then if (if ((betAmount >= WctMinAmt)) | |
118 | + | then (WctMaxAmt >= betAmount) | |
119 | + | else false) | |
120 | + | then true | |
121 | + | else throw("Bet amount is not in range") | |
122 | + | else if (if ((betAmount >= VstMinAmt)) | |
123 | + | then (VstMaxAmt >= betAmount) | |
124 | + | else false) | |
125 | + | then true | |
126 | + | else throw("Bet amount is not in range") | |
127 | + | ||
128 | + | ||
129 | + | func getDataList (gameId) = { | |
130 | + | let getDataString = getString(this, (gameId + "_GameId")) | |
131 | + | let a = match getDataString { | |
132 | + | case a: String => | |
133 | + | a | |
134 | + | case _ => | |
135 | + | throw("GameId was not found") | |
136 | + | } | |
137 | + | split(a, "_") | |
138 | + | } | |
139 | + | ||
140 | + | ||
141 | + | func rsaToInt (gameId,rsaSign,rsaPublicKey) = { | |
142 | + | let rsaCheck = rsaVerify(SHA256, toBytes(gameId), fromBase64String(rsaSign), rsaPublicKey) | |
143 | + | if (rsaCheck) | |
144 | + | then (toInt(sha256(fromBase64String(rsaSign))) % 19) | |
145 | + | else throw("Rsa Signature is invalid") | |
146 | + | } | |
147 | + | ||
148 | + | ||
149 | + | func increaseReservedBalance (pmtAmt,pmtAssetName,assetId58) = { | |
150 | + | let currentReservedBalance = { | |
151 | + | let valueReservedBalance = getInteger(this, (pmtAssetName + "_Reserved")) | |
152 | + | match valueReservedBalance { | |
153 | + | case a: Int => | |
154 | + | a | |
155 | + | case _ => | |
156 | + | 0 | |
157 | + | } | |
158 | + | } | |
159 | + | let newReservedBalance = (currentReservedBalance + (pmtAmt * 260)) | |
160 | + | if ((assetBalance(this, assetId58) >= newReservedBalance)) | |
161 | + | then newReservedBalance | |
162 | + | else throw("Bet was rejected. Insufficient funds on game account.") | |
163 | + | } | |
164 | + | ||
165 | + | ||
166 | + | func decreaseReservedBalance (betAmt,assetId) = { | |
167 | + | let valueReservedBalance = getInteger(this, (assetId + "_Reserved")) | |
168 | + | let extractReservedBalance = match valueReservedBalance { | |
169 | + | case a: Int => | |
170 | + | a | |
171 | + | case _ => | |
172 | + | 0 | |
173 | + | } | |
174 | + | let decreaseReservedBalance = (extractReservedBalance - (betAmt * 260)) | |
175 | + | if ((decreaseReservedBalance >= 0)) | |
176 | + | then decreaseReservedBalance | |
177 | + | else throw("Reserved balance couldn't be less than 0") | |
178 | + | } | |
179 | + | ||
180 | + | ||
181 | + | func drumIntToString (drumInt) = if ((10 > drumInt)) | |
182 | + | then ("0" + toString(drumInt)) | |
183 | + | else toString(drumInt) | |
184 | + | ||
185 | + | ||
186 | + | func defineMultiplier (threeInARow,twoInARow) = if ((threeInARow == "777")) | |
187 | + | then 2600 | |
188 | + | else if ((threeInARow == "666")) | |
189 | + | then 1300 | |
190 | + | else if ((threeInARow == "555")) | |
191 | + | then 450 | |
192 | + | else if ((threeInARow == "444")) | |
193 | + | then 200 | |
194 | + | else if ((threeInARow == "333")) | |
195 | + | then 150 | |
196 | + | else if ((threeInARow == "222")) | |
197 | + | then 110 | |
198 | + | else if ((threeInARow == "111")) | |
199 | + | then 50 | |
200 | + | else if ((twoInARow == "77")) | |
201 | + | then 270 | |
202 | + | else if ((twoInARow == "66")) | |
203 | + | then 130 | |
204 | + | else if ((twoInARow == "55")) | |
205 | + | then 45 | |
206 | + | else if ((twoInARow == "44")) | |
207 | + | then 30 | |
208 | + | else if ((twoInARow == "33")) | |
209 | + | then 20 | |
210 | + | else if ((twoInARow == "22")) | |
211 | + | then 17 | |
212 | + | else if ((twoInARow == "11")) | |
213 | + | then 13 | |
214 | + | else 0 | |
215 | + | ||
216 | + | ||
217 | + | func assetNameToBase58 (assetName) = if ((assetName == "WAVES")) | |
218 | + | then wavesId | |
219 | + | else if ((assetName == "BTC")) | |
220 | + | then btcId | |
221 | + | else if ((assetName == "ETH")) | |
222 | + | then ethId | |
223 | + | else if ((assetName == "LTC")) | |
224 | + | then ltcId | |
225 | + | else if ((assetName == "VST")) | |
226 | + | then vstId | |
227 | + | else if ((assetName == "WCT")) | |
228 | + | then wctId | |
229 | + | else throw("Asset name is incorrect") | |
230 | + | ||
231 | + | ||
232 | + | func assetBase58ToName (assetId) = if (!(isDefined(assetId))) | |
233 | + | then "WAVES" | |
234 | + | else if ((assetId == btcId)) | |
235 | + | then "BTC" | |
236 | + | else if ((assetId == ethId)) | |
237 | + | then "ETH" | |
238 | + | else if ((assetId == ltcId)) | |
239 | + | then "LTC" | |
240 | + | else if ((assetId == wctId)) | |
241 | + | then "WCT" | |
242 | + | else if ((assetId == vstId)) | |
243 | + | then "VST" | |
244 | + | else throw("AssetId is incorrect") | |
245 | + | ||
246 | + | ||
247 | + | func getCurrentIncome (assetName) = { | |
248 | + | let val = getInteger(this, (assetName + "_Income")) | |
249 | + | match val { | |
250 | + | case a: Int => | |
251 | + | a | |
252 | + | case _ => | |
253 | + | 0 | |
254 | + | } | |
255 | + | } | |
256 | + | ||
257 | + | ||
258 | + | func callerIsDepositOwner (assetName,callerPublicKey) = { | |
259 | + | let depositOwner = getString(dividendProgramAddress, (assetName + "_DepositOwner")) | |
260 | + | if ((callerPublicKey == depositOwner)) | |
261 | + | then callerPublicKey | |
262 | + | else throw("Only deposit owner can withdrawal deposit") | |
263 | + | } | |
264 | + | ||
265 | + | ||
266 | + | func assetNameCheck (asset) = if (if (if (if (if (if ((asset == "WAVES")) | |
267 | + | then true | |
268 | + | else (asset == "WAVES")) | |
269 | + | then true | |
270 | + | else (asset == "WAVES")) | |
271 | + | then true | |
272 | + | else (asset == "WAVES")) | |
273 | + | then true | |
274 | + | else (asset == "WAVES")) | |
275 | + | then true | |
276 | + | else (asset == "WAVES")) | |
277 | + | then asset | |
278 | + | else throw("Incorrect asset name provided") | |
279 | + | ||
280 | + | ||
281 | + | func getDepositData (assetName,keySuffix) = { | |
282 | + | let key = (assetName + "_DepositAmount") | |
283 | + | let val = getInteger(dividendProgramAddress, key) | |
284 | + | match val { | |
285 | + | case a: Int => | |
286 | + | a | |
287 | + | case _ => | |
288 | + | throw("Couldn't find dividend program start height") | |
289 | + | } | |
290 | + | } | |
291 | + | ||
292 | + | ||
293 | + | @Callable(i) | |
294 | + | func makeBet () = { | |
295 | + | let pmt = extract(i.payment) | |
296 | + | let betAmount = (pmt.amount - commission) | |
297 | + | let assetId = pmt.assetId | |
298 | + | let gameId = toBase58String(i.transactionId) | |
299 | + | let playerAddress = extract(i.caller) | |
300 | + | let pmtAssetName = assetBase58ToName(assetId) | |
301 | + | let setReservedBalance = increaseReservedBalance(betAmount, pmtAssetName, pmt.assetId) | |
302 | + | let pmtAmtCorrect = pmtAmtCheck(pmtAssetName, betAmount) | |
303 | + | if (pmtAmtCorrect) | |
304 | + | then { | |
305 | + | let dataString = ((((((((stateAcc + "_") + toString(playerAddress)) + "_") + toString(betAmount)) + "_") + pmtAssetName) + "_") + toString(height)) | |
306 | + | WriteSet([DataEntry((gameId + "_GameId"), dataString), DataEntry((pmtAssetName + "_Reserved"), setReservedBalance)]) | |
307 | + | } | |
308 | + | else throw("assetId is incorrect") | |
309 | + | } | |
310 | + | ||
311 | + | ||
312 | + | ||
313 | + | @Callable(i) | |
314 | + | func playGame (gameId,rsaSign1,rsaSign2,rsaSign3) = { | |
315 | + | let dataList = getDataList(gameId) | |
316 | + | let gameState = dataList[0] | |
317 | + | let playerAddress = addressFromStringValue(dataList[1]) | |
318 | + | let betAmt = parseIntValue(dataList[2]) | |
319 | + | let assetName = dataList[3] | |
320 | + | let gameStart = parseIntValue(dataList[4]) | |
321 | + | let assetId58 = assetNameToBase58(assetName) | |
322 | + | let setReservedBalance = decreaseReservedBalance(betAmt, assetName) | |
323 | + | let currentIncome = getCurrentIncome(assetName) | |
324 | + | let drum1Int = rsaToInt(gameId, rsaSign1, rsaPublicKey1) | |
325 | + | let drum2Int = rsaToInt(gameId, rsaSign2, rsaPublicKey2) | |
326 | + | let drum3Int = rsaToInt(gameId, rsaSign3, rsaPublicKey3) | |
327 | + | let twoInARow = (drum1[drum1Int] + drum2[drum2Int]) | |
328 | + | let threeInARow = (twoInARow + drum3[drum3Int]) | |
329 | + | let droppedElementsString = ((drumIntToString(drum1Int) + drumIntToString(drum2Int)) + drumIntToString(drum3Int)) | |
330 | + | let winAmt = ((betAmt * defineMultiplier(threeInARow, twoInARow)) / 10) | |
331 | + | let gameTimeCheck = (gameTimeFrame > (height - gameStart)) | |
332 | + | let stateCorrect = (gameState == stateAcc) | |
333 | + | if (stateCorrect) | |
334 | + | then if (gameTimeCheck) | |
335 | + | then if ((winAmt == 0)) | |
336 | + | then ScriptResult(WriteSet([DataEntry((gameId + "_GameId"), ((((((((((((((stateLose + "_") + dataList[1]) + "_") + dataList[2]) + "_") + dataList[3]) + "_") + toString(height)) + "_") + toString(winAmt)) + "_") + threeInARow) + "_") + droppedElementsString)), DataEntry((assetName + "_Reserved"), setReservedBalance)]), TransferSet([ScriptTransfer(dividendProgramAddress, betAmt, assetId58)])) | |
337 | + | 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"), (currentIncome - winAmt))]), TransferSet([ScriptTransfer(playerAddress, winAmt, assetId58)])) | |
338 | + | 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"), (currentIncome - (betAmt * 2)))]), TransferSet([ScriptTransfer(playerAddress, (betAmt * 2), assetId58)])) | |
339 | + | else throw("Game state is incorrect") | |
340 | + | } | |
341 | + | ||
342 | + | ||
343 | + | ||
344 | + | @Callable(i) | |
345 | + | func withdrawDeposit (assetName) = { | |
346 | + | let assetId58 = assetNameToBase58(assetName) | |
347 | + | let callerPub = callerIsDepositOwner(assetName, toBase58String(i.callerPublicKey)) | |
348 | + | let dividendStartHeight = getDepositData(assetName, "_DepositStartBlock") | |
349 | + | let depositDuration = getDepositData(assetName, "_DepositDurationBlock") | |
350 | + | let depositAmount = getDepositData(assetName, "_DepositAmount") | |
351 | + | let dividendProgramTimeIsOver = ((height - dividendStartHeight) >= depositDuration) | |
352 | + | if (dividendProgramTimeIsOver) | |
353 | + | then ScriptResult(WriteSet([DataEntry((assetName + "_DepositWithdrawTransactionId"), i.transactionId)]), TransferSet([ScriptTransfer(addressFromPublicKey(fromBase58String(callerPub)), depositAmount, assetId58)])) | |
354 | + | else throw((("Deposit time is not over. " + toString((height - (dividendStartHeight + depositDuration)))) + " blocks left.")) | |
355 | + | } | |
356 | + | ||
357 | + | ||
358 | + | @Verifier(tx) | |
359 | + | func verify () = if (sigVerify(tx.bodyBytes, tx.proofs[0], gamePublicKey)) | |
360 | + | then match tx { | |
361 | + | case ttx: TransferTransaction => | |
362 | + | false | |
363 | + | case sstx: SetScriptTransaction => | |
364 | + | true | |
365 | + | case istx: InvokeScriptTransaction => | |
366 | + | true | |
367 | + | case dtx: DataTransaction => | |
368 | + | true | |
369 | + | case _ => | |
370 | + | false | |
371 | + | } | |
372 | + | else false | |
373 | + |
github/deemru/w8io/169f3d6 39.88 ms ◑![]()