tx · 5mQsmZJmPFCJhXUDARfCcsAjr863bBCGYJrh2mKmdjA1

3NBFHpzVTqcHQB6Zxec1f6N6ZGBWQ4VsBFD:  -0.01500000 Waves

2019.10.05 15:33 [706438] smart account 3NBFHpzVTqcHQB6Zxec1f6N6ZGBWQ4VsBFD > SELF 0.00000000 Waves

{ "type": 13, "id": "5mQsmZJmPFCJhXUDARfCcsAjr863bBCGYJrh2mKmdjA1", "fee": 1500000, "feeAssetId": null, "timestamp": 1570278804687, "version": 1, "sender": "3NBFHpzVTqcHQB6Zxec1f6N6ZGBWQ4VsBFD", "senderPublicKey": "8W9JLTJTfxrJrBNXxngzueBF4vJqeb6p9jFob7wb6QWQ", "proofs": [ "2hSxpWgWqtJN2f8cjX6hJLQrHPRQzy33D1PUhknq1aimZnjPpfcbLDnuZMR2xamp4hMiyTF93FQbAz1GV6ungAab" ], "script": "base64:AAIDAAAAAAAAAAwIARIAEgYKBAgICAgAAAAkAAAAAA1yc2FQdWJsaWNLZXkxCQACWwAAAAECAAAAgE1Gd3dEUVlKS29aSWh2Y05BUUVCQlFBRFN3QXdTQUpCQU9raXV6L0JWNEVqb3hHaFRtTkNidDJUZ2tiU1BIL3c2OWIzRjFyS21ENjFKaVBYdnZGOEwycEk5eE9ZY1c0Rm1vRVpWSGxSUXRBbGFKeWtsMytyc3JFQ0F3RUFBUT09AAAAAA1yc2FQdWJsaWNLZXkyCQACWwAAAAECAAAAgE1Gd3dEUVlKS29aSWh2Y05BUUVCQlFBRFN3QXdTQUpCQUpuWHpiTS9WMnNEVjFVTGJQU09sSGtsZE9UV1JySGk1ZnhJa0JtdWV2ckNsTVBWSDdycWNjd2lyRE5jTWRJZHdYSEk5QWRoajlGV2p3R0l3ZlUvSzZNQ0F3RUFBUT09AAAAAA1yc2FQdWJsaWNLZXkzCQACWwAAAAECAAAAgE1Gd3dEUVlKS29aSWh2Y05BUUVCQlFBRFN3QXdTQUpCQU9SRGV2eTByNGt6THFPeVNsb0I2M0h1djJlNHplSEtIakNzeTV2dEZLbVdaYlhKYThnWll0NCtFa2xGSW8xSzlvcXU1QkFQVmZKM0ZPenMyVTFBK2cwQ0F3RUFBUT09AAAAAA1nYW1lVGltZUZyYW1lCQAAaAAAAAIAAAAAAAAABaAAAAAAAAAAAAIAAAAACmNvbW1pc3Npb24AAAAAAAAHoSAAAAAACHN0YXRlQWNjAgAAAAhBY2NlcHRlZAAAAAAIc3RhdGVXaW4CAAAAA1dpbgAAAAAMc3RhdGVUaW1lb3V0AgAAAAxXaW5CeVRpbWVvdXQAAAAACXN0YXRlTG9zZQIAAAAETG9zZQAAAAAHd2F2ZXNJZAUAAAAEdW5pdAAAAAAFYnRjSWQBAAAAIOvzosVhoibMsJFhnXGyvjcIhgPvNh4Hf/DTda1QyUJGAAAAAAVldGhJZAEAAAAgTJ+bcfm5c5bsRO7AKKuBgxBIo86PQvQYe3Uj/7n7JnoAAAAABWx0Y0lkAQAAACBlCsW0lfXNUW1dchHvCCRKuoSGa9K+jEhi7hIhhzyatgAAAAAFdnN0SWQBAAAAIEKY/z/ZZkga57PyFNSxGKoaWKMhf/RBjPIdj8CXT+qQAAAAAAV3Y3RJZAEAAAAg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AgUAAAAGZ2FtZUlkBQAAAApkYXRhU3RyaW5nCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQABLAAAAAICAAAACVJlc2VydmVkXwUAAAAMcG10QXNzZXROYW1lBQAAABJzZXRSZXNlcnZlZEJhbGFuY2UFAAAAA25pbAkAAAIAAAABAgAAABRhc3NldElkIGlzIGluY29ycmVjdAAAAAFpAQAAAAhwbGF5R2FtZQAAAAQAAAAGZ2FtZUlkAAAACHJzYVNpZ24xAAAACHJzYVNpZ24yAAAACHJzYVNpZ24zBAAAAAhkYXRhTGlzdAkBAAAAC2dldERhdGFMaXN0AAAAAQUAAAAGZ2FtZUlkBAAAAAlnYW1lU3RhdGUJAAGRAAAAAgUAAAAIZGF0YUxpc3QAAAAAAAAAAAAEAAAADXBsYXllckFkZHJlc3MJAQAAABRhZGRyZXNzRnJvbVB1YmxpY0tleQAAAAEJAAJZAAAAAQkAAZEAAAACBQAAAAhkYXRhTGlzdAAAAAAAAAAAAQQAAAAGYmV0QW10CQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAAIZGF0YUxpc3QAAAAAAAAAAAIEAAAACWFzc2V0TmFtZQkAAZEAAAACBQAAAAhkYXRhTGlzdAAAAAAAAAAAAwQAAAAJZ2FtZVN0YXJ0CQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAAIZGF0YUxpc3QAAAAAAAAAAAQEAAAACWFzc2V0SWQ1OAkBAAAAEUFzc2V0TmFtZVRvQmFzZTU4AAAAAQUAAAAJYXNzZXROYW1lBAAAAA1nYW1lVGltZUNoZWNrCQAAZgAAAAIFAAAADWdhbWVUaW1lRnJhbWUJAABlAAAAAgUAAAAGaGVpZ2h0BQAAAAlnYW1lU3RhcnQEAAAADHN0YXRlQ29ycmVjdAkAAAAAAAACBQAAAAlnYW1lU3RhdGUFAAAACHN0YXRlQWNjBAAAABJzZXRSZXNlcnZlZEJhbGFuY2UJAQAAABdkZWNyZWFzZVJlc2VydmVkQmFsYW5jZQAAAAIFAAAABmJldEFtdAUAAAAJYXNzZXROYW1lBAAAABNkcm9wcGVkRWxlbWVudHNMaXN0BAAAAAhyb2xsMUludAkBAAAACHJzYVRvSW50AAAAAwUAAAAG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", "chainId": 84, "height": 706438, "spentComplexity": 0 } View: original | compacted Prev: C6BVxkC4o14UBNcA5r9YrqtbVuDsDvAXyShBAjCgvhvw Next: Djsd1aDex2Jq1UAZyRjDcxNTHQLCgkz8kFEjdPRNT9Z7 Diff:
OldNewDifferences
3535
3636 let WavesMinAmt = (100000000 / divider)
3737
38-let WavesMaxAmt = (WavesMinAmt * 10)
38+let WavesMaxAmt = ((WavesMinAmt * 10) / divider)
3939
4040 let BtcMinAmt = (10000 / divider)
4141
42-let BtcMaxAmt = (BtcMinAmt * 10)
42+let BtcMaxAmt = ((BtcMinAmt * 10) / divider)
4343
4444 let EthMinAmt = (1000000 / divider)
4545
46-let EthMaxAmt = (EthMinAmt * 10)
46+let EthMaxAmt = ((EthMinAmt * 10) / divider)
4747
4848 let LtcMinAmt = (2000000 / divider)
4949
50-let LtcMaxAmt = (LtcMinAmt * 10)
50+let LtcMaxAmt = ((LtcMinAmt * 10) / divider)
5151
5252 let WctMinAmt = (500000000 / divider)
5353
54-let WctMaxAmt = (WctMinAmt * 10)
54+let WctMaxAmt = ((WctMinAmt * 10) / divider)
5555
5656 let VstMinAmt = (500000000 / divider)
5757
58-let VstMaxAmt = (VstMinAmt * 10)
58+let VstMaxAmt = ((VstMinAmt * 10) / divider)
5959
6060 func pmtAmtCheck (pmtAssetId,betAmount) = if ((pmtAssetId == "WAVES"))
6161 then if (if ((betAmount >= WavesMinAmt))
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 3 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let rsaPublicKey1 = fromBase64String("MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAOkiuz/BV4EjoxGhTmNCbt2TgkbSPH/w69b3F1rKmD61JiPXvvF8L2pI9xOYcW4FmoEZVHlRQtAlaJykl3+rsrECAwEAAQ==")
55
66 let rsaPublicKey2 = fromBase64String("MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAJnXzbM/V2sDV1ULbPSOlHkldOTWRrHi5fxIkBmuevrClMPVH7rqccwirDNcMdIdwXHI9Adhj9FWjwGIwfU/K6MCAwEAAQ==")
77
88 let rsaPublicKey3 = fromBase64String("MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAORDevy0r4kzLqOySloB63Huv2e4zeHKHjCsy5vtFKmWZbXJa8gZYt4+EklFIo1K9oqu5BAPVfJ3FOzs2U1A+g0CAwEAAQ==")
99
1010 let gameTimeFrame = (1440 * 2)
1111
1212 let commission = 500000
1313
1414 let stateAcc = "Accepted"
1515
1616 let stateWin = "Win"
1717
1818 let stateTimeout = "WinByTimeout"
1919
2020 let stateLose = "Lose"
2121
2222 let wavesId = unit
2323
2424 let btcId = base58'Gt4HLkHunts7bWbtYP5UCsAPW7TUA4gmQEnjgjbZ2NqB'
2525
2626 let ethId = base58'6A79GDQj8bdHqUaoJQ3qE1TCPnBc3wFirNCSsAY5RKry'
2727
2828 let ltcId = base58'7oRhs4zoufHM4KiBDuJwRXUWb9JQaFt98N8ubpmytMmw'
2929
3030 let vstId = base58'5UyDjBMx1Q8UWhJj1r7JuA6h4aCkKrHE1J19HvMXRpRd'
3131
3232 let wctId = base58'Ae5W927iuKSLLT6Sdt3bqWze6ZUbYHDWzPY6dLKQusZv'
3333
3434 let divider = 1000
3535
3636 let WavesMinAmt = (100000000 / divider)
3737
38-let WavesMaxAmt = (WavesMinAmt * 10)
38+let WavesMaxAmt = ((WavesMinAmt * 10) / divider)
3939
4040 let BtcMinAmt = (10000 / divider)
4141
42-let BtcMaxAmt = (BtcMinAmt * 10)
42+let BtcMaxAmt = ((BtcMinAmt * 10) / divider)
4343
4444 let EthMinAmt = (1000000 / divider)
4545
46-let EthMaxAmt = (EthMinAmt * 10)
46+let EthMaxAmt = ((EthMinAmt * 10) / divider)
4747
4848 let LtcMinAmt = (2000000 / divider)
4949
50-let LtcMaxAmt = (LtcMinAmt * 10)
50+let LtcMaxAmt = ((LtcMinAmt * 10) / divider)
5151
5252 let WctMinAmt = (500000000 / divider)
5353
54-let WctMaxAmt = (WctMinAmt * 10)
54+let WctMaxAmt = ((WctMinAmt * 10) / divider)
5555
5656 let VstMinAmt = (500000000 / divider)
5757
58-let VstMaxAmt = (VstMinAmt * 10)
58+let VstMaxAmt = ((VstMinAmt * 10) / divider)
5959
6060 func pmtAmtCheck (pmtAssetId,betAmount) = if ((pmtAssetId == "WAVES"))
6161 then if (if ((betAmount >= WavesMinAmt))
6262 then (WavesMaxAmt >= betAmount)
6363 else false)
6464 then true
6565 else throw("Bet amount is not in range")
6666 else if ((pmtAssetId == "BTC"))
6767 then if (if ((betAmount >= BtcMinAmt))
6868 then (BtcMaxAmt >= betAmount)
6969 else false)
7070 then true
7171 else throw("Bet amount is not in range")
7272 else if ((pmtAssetId == "ETH"))
7373 then if (if ((betAmount >= EthMinAmt))
7474 then (EthMaxAmt >= betAmount)
7575 else false)
7676 then true
7777 else throw("Bet amount is not in range")
7878 else if ((pmtAssetId == "LTC"))
7979 then if (if ((betAmount >= LtcMinAmt))
8080 then (LtcMaxAmt >= betAmount)
8181 else false)
8282 then true
8383 else throw("Bet amount is not in range")
8484 else if ((pmtAssetId == "WCT"))
8585 then if (if ((betAmount >= WctMinAmt))
8686 then (WctMaxAmt >= betAmount)
8787 else false)
8888 then true
8989 else throw("Bet amount is not in range")
9090 else if (if ((betAmount >= VstMinAmt))
9191 then (VstMaxAmt >= betAmount)
9292 else false)
9393 then true
9494 else throw("Bet amount is not in range")
9595
9696
9797 func increaseReservedBalance (pmtAmt,pmtAssetName) = {
9898 let currentReservedBalance = {
9999 let valueReservedBalance = getInteger(this, ("Reserved_" + pmtAssetName))
100100 match valueReservedBalance {
101101 case a: Int =>
102102 a
103103 case _ =>
104104 0
105105 }
106106 }
107107 let newReservedBalance = (currentReservedBalance + pmtAmt)
108108 if ((wavesBalance(this) >= newReservedBalance))
109109 then {
110110 let increaseReservedBalance = newReservedBalance
111111 increaseReservedBalance
112112 }
113113 else throw("Bet was rejected. Insufficient funds on game account.")
114114 }
115115
116116
117117 func getDataList (gameId) = {
118118 let getDataString = getString(this, gameId)
119119 let a = match getDataString {
120120 case a: String =>
121121 a
122122 case _ =>
123123 throw("GameId was not found")
124124 }
125125 split(a, "_")
126126 }
127127
128128
129129 func intToElem (rsaInt) = if ((2 > rsaInt))
130130 then "7"
131131 else if ((4 > rsaInt))
132132 then "6"
133133 else if ((6 > rsaInt))
134134 then "5"
135135 else if ((8 > rsaInt))
136136 then "4"
137137 else if ((10 > rsaInt))
138138 then "3"
139139 else if ((12 > rsaInt))
140140 then "2"
141141 else "1"
142142
143143
144144 func rsaToInt (gameId,rsaSign,rsaPublicKey) = {
145145 let rsaCheck = rsaVerify(SHA256, toBytes(gameId), fromBase64String(rsaSign), rsaPublicKey)
146146 if (rsaCheck)
147147 then {
148148 let rsaInt = ((toInt(sha256(fromBase64String(rsaSign))) % 19) + 1)
149149 if (if ((rsaInt > 0))
150150 then (20 >= rsaInt)
151151 else false)
152152 then rsaInt
153153 else throw("Integer is not in range")
154154 }
155155 else throw("Rsa Signature is invalid")
156156 }
157157
158158
159159 func decreaseReservedBalance (betAmt,assetId) = {
160160 let valueReservedBalance = getInteger(this, ("Reserved_" + assetId))
161161 let extractReservedBalance = match valueReservedBalance {
162162 case a: Int =>
163163 a
164164 case _ =>
165165 0
166166 }
167167 let decreaseReservedBalance = (extractReservedBalance - betAmt)
168168 if ((decreaseReservedBalance > 0))
169169 then decreaseReservedBalance
170170 else throw("Reserved balance couldn't be less than 0")
171171 }
172172
173173
174174 func defineMultiplier (threeDrums,twoDrums) = if ((threeDrums == "777"))
175175 then 5370
176176 else if ((threeDrums == "666"))
177177 then 1300
178178 else if ((threeDrums == "555"))
179179 then 450
180180 else if ((threeDrums == "444"))
181181 then 200
182182 else if ((threeDrums == "333"))
183183 then 150
184184 else if ((threeDrums == "222"))
185185 then 110
186186 else if ((threeDrums == "111"))
187187 then 40
188188 else if ((twoDrums == "77"))
189189 then 270
190190 else if ((twoDrums == "66"))
191191 then 130
192192 else if ((twoDrums == "55"))
193193 then 65
194194 else if ((twoDrums == "44"))
195195 then 30
196196 else if ((twoDrums == "33"))
197197 then 20
198198 else if ((twoDrums == "22"))
199199 then 15
200200 else if ((twoDrums == "11"))
201201 then 10
202202 else 0
203203
204204
205205 func AssetNameToBase58 (assetName) = if ((assetName == "WAVES"))
206206 then wavesId
207207 else if ((assetName == "BTC"))
208208 then btcId
209209 else if ((assetName == "ETH"))
210210 then ethId
211211 else if ((assetName == "LTC"))
212212 then ltcId
213213 else if ((assetName == "VST"))
214214 then vstId
215215 else if ((assetName == "WCT"))
216216 then wctId
217217 else throw("Asset name is incorrect")
218218
219219
220220 @Callable(i)
221221 func makeBet () = {
222222 let pmt = extract(i.payment)
223223 let betAmount = (pmt.amount - commission)
224224 let gameId = toBase58String(i.transactionId)
225225 let gameStart = height
226226 let playerPublicKey = toBase58String(i.callerPublicKey)
227227 let pmtAssetName = if (!(isDefined(pmt.assetId)))
228228 then "WAVES"
229229 else if ((pmt.assetId == btcId))
230230 then "BTC"
231231 else if ((pmt.assetId == ethId))
232232 then "ETH"
233233 else if ((pmt.assetId == ltcId))
234234 then "LTC"
235235 else if ((pmt.assetId == wctId))
236236 then "WCT"
237237 else if ((pmt.assetId == vstId))
238238 then "VST"
239239 else throw("AssetId is incorrect")
240240 let setReservedBalance = increaseReservedBalance(betAmount, pmtAssetName)
241241 let pmtAmtCorrect = pmtAmtCheck(pmtAssetName, betAmount)
242242 if (pmtAmtCorrect)
243243 then {
244244 let dataString = ((((((((stateAcc + "_") + playerPublicKey) + "_") + toString(betAmount)) + "_") + pmtAssetName) + "_") + toString(gameStart))
245245 WriteSet([DataEntry(gameId, dataString), DataEntry(("Reserved_" + pmtAssetName), setReservedBalance)])
246246 }
247247 else throw("assetId is incorrect")
248248 }
249249
250250
251251
252252 @Callable(i)
253253 func playGame (gameId,rsaSign1,rsaSign2,rsaSign3) = {
254254 let dataList = getDataList(gameId)
255255 let gameState = dataList[0]
256256 let playerAddress = addressFromPublicKey(fromBase58String(dataList[1]))
257257 let betAmt = parseIntValue(dataList[2])
258258 let assetName = dataList[3]
259259 let gameStart = parseIntValue(dataList[4])
260260 let assetId58 = AssetNameToBase58(assetName)
261261 let gameTimeCheck = (gameTimeFrame > (height - gameStart))
262262 let stateCorrect = (gameState == stateAcc)
263263 let setReservedBalance = decreaseReservedBalance(betAmt, assetName)
264264 let droppedElementsList = {
265265 let roll1Int = rsaToInt(gameId, rsaSign1, rsaPublicKey1)
266266 let roll2Int = rsaToInt(gameId, rsaSign2, rsaPublicKey2)
267267 let roll3Int = rsaToInt(gameId, rsaSign3, rsaPublicKey3)
268268 let element1 = intToElem(roll1Int)
269269 let element2 = intToElem(roll2Int)
270270 let element3 = intToElem(roll3Int)
271271 [element1, element2, element3]
272272 }
273273 let winAmt = {
274274 let threeDrums = ((droppedElementsList[0] + droppedElementsList[1]) + droppedElementsList[2])
275275 let twoDrums = (droppedElementsList[0] + droppedElementsList[1])
276276 let multiplier = defineMultiplier(threeDrums, twoDrums)
277277 ((betAmt * multiplier) / 10)
278278 }
279279 let winPmtAmt = {
280280 let balance = assetBalance(this, assetId58)
281281 if ((winAmt > balance))
282282 then (betAmt * 2)
283283 else winAmt
284284 }
285285 let stringForNewData = ((((((dataList[1] + "_") + dataList[2]) + "_") + dataList[3]) + "_") + dataList[4])
286286 let droppedElements = ((droppedElementsList[0] + droppedElementsList[1]) + droppedElementsList[2])
287287 if (stateCorrect)
288288 then if (gameTimeCheck)
289289 then if ((winAmt == 0))
290290 then WriteSet([DataEntry(gameId, ((((((stateLose + "_") + stringForNewData) + "_") + toString(winAmt)) + "_") + droppedElements)), DataEntry(("Reserved_" + assetName), setReservedBalance)])
291291 else ScriptResult(WriteSet([DataEntry(gameId, ((((((stateWin + "_") + stringForNewData) + "_") + toString(winAmt)) + "_") + droppedElements)), DataEntry(("Reserved_" + assetName), setReservedBalance)]), TransferSet([ScriptTransfer(playerAddress, winPmtAmt, assetId58)]))
292292 else ScriptResult(WriteSet([DataEntry(gameId, (stateTimeout + stringForNewData)), DataEntry(("Reserved_" + assetName), setReservedBalance)]), TransferSet([ScriptTransfer(playerAddress, betAmt, assetId58)]))
293293 else throw("Game state is incorrect")
294294 }
295295
296296
297297 @Verifier(tx)
298298 func verify () = match tx {
299299 case ttx: TransferTransaction =>
300300 let valueReservedBalance = getInteger(this, "Reserved")
301301 let reservedBalance = match valueReservedBalance {
302302 case a: Int =>
303303 a
304304 case _ =>
305305 0
306306 }
307307 let availableBalance = (wavesBalance(this) - reservedBalance)
308308 let availibleAmount = (availableBalance >= ttx.amount)
309309 let signature = sigVerify(ttx.bodyBytes, ttx.proofs[0], ttx.senderPublicKey)
310310 if (availibleAmount)
311311 then signature
312312 else false
313313 case sstx: SetScriptTransaction =>
314314 sigVerify(sstx.bodyBytes, sstx.proofs[0], sstx.senderPublicKey)
315315 case istx: InvokeScriptTransaction =>
316316 sigVerify(istx.bodyBytes, istx.proofs[0], istx.senderPublicKey)
317317 case _ =>
318318 false
319319 }
320320

github/deemru/w8io/873ac7e 
42.80 ms