tx · 68ZotzFFqy1pt7KSE6v43dAfQLby9x4GpDMdNVtWePng

3MpwcwacJAfY3Wt5no8Vayek5Y2wLHCoqKa:  -0.01400000 Waves

2021.02.21 01:31 [1407040] smart account 3MpwcwacJAfY3Wt5no8Vayek5Y2wLHCoqKa > SELF 0.00000000 Waves

{ "type": 13, "id": "68ZotzFFqy1pt7KSE6v43dAfQLby9x4GpDMdNVtWePng", "fee": 1400000, "feeAssetId": null, "timestamp": 1613860306372, "version": 2, "chainId": 84, "sender": "3MpwcwacJAfY3Wt5no8Vayek5Y2wLHCoqKa", "senderPublicKey": "22LwkZvhBgiz8QycnmX7skuLXNvp4gKCEBD4r474vKgp", "proofs": [ "4XGu8cEdpLsSfqMHLokcCfdzekiXCcBWCd8BoTbiRmF9999c6ZCF1WYLkkGmELLcr2QkpBkxtT3yHMMTNJQ8sSmp" ], "script": "base64:AAIDAAAAAAAAAA4IARIAEgASBgoECAgICAAAACwAAAAADXJzYVB1YmxpY0tleTEJAAJbAAAAAQIAAAGITUlJQklqQU5CZ2txaGtpRzl3MEJBUUVGQUFPQ0FROEFNSUlCQ2dLQ0FRRUFsNm91VVp5VXJ5VUcyTGxGMnVZUVhkYi9FNlVobFpBYnFsT0pVQ1hrZTRYM29zYXlhNjNiTlFlVU5QSzdtLzlRTjloRGl1bTRLa2lvOUYycitSOTJ2TWdXYWx1dll2aUZHSnc4VjhYTDh5aGNwa0tnWUpVUTB2ME1DYnBJOWM3aFNLUk54dmFJOWppa1lHeUdOU3NGZElUd2NYM2EweEptRGZ3Q3NzUDc2bUlBQzZ2WEROdVNjZXkrdjNualErNm8vN0FvdjhZRmlzWkxLbXhnWm52dVhESW45enBOaGlndGxJT1RLZVkxSTROWlE3ektEbEp6U2J6QlJTV1dhTlpBV0R2bHdGci9aUU9NTlEyNHBoS1ZtbmVQVEVWRkFTc3VtVWlJQkxYYlR3NzhiL1NZM2Jnejc5ZGh3OEExUHU1Tlc0WDloaWNybU5yMUV5WDM5VXNURFFJREFRQUIAAAAADXJzYVB1YmxpY0tleTIJAAJbAAAAAQIAAAGITUlJQklqQU5CZ2txaGtpRzl3MEJBUUVGQUFPQ0FROEFNSUlCQ2dLQ0FRRUFsNm91VVp5VXJ5VUcyTGxGMnVZUVhkYi9FNlVobFpBYnFsT0pVQ1hrZTRYM29zYXlhNjNiTlFlVU5QSzdtLzlRTjloRGl1bTRLa2lvOUYycitSOTJ2TWdXYWx1dll2aUZHSnc4VjhYTDh5aGNwa0tnWUpVUTB2ME1DYnBJOWM3aFNLUk54dmFJOWppa1lHeUdOU3NGZElUd2NYM2EweEptRGZ3Q3NzUDc2bUlBQzZ2WEROdVNjZXkrdjNualErNm8vN0FvdjhZRmlzWkxLbXhnWm52dVhESW45enBOaGlndGxJT1RLZVkxSTROWlE3ektEbEp6U2J6QlJTV1dhTlpBV0R2bHdGci9aUU9NTlEyNHBoS1ZtbmVQVEVWRkFTc3VtVWlJQkxYYlR3NzhiL1NZM2Jnejc5ZGh3OEExUHU1Tlc0WDloaWNybU5yMUV5WDM5VXNURFFJREFRQUIAAAAADXJzYVB1YmxpY0tleTMJAAJbAAAAAQIAAAGITUlJQklqQU5CZ2txaGtpRzl3MEJBUUVGQUFPQ0FROEFNSUlCQ2dLQ0FRRUFsNm91VVp5VXJ5VUcyTGxGMnVZUVhkYi9FNlVobFpBYnFsT0pVQ1hrZTRYM29zYXlhNjNiTlFlVU5QSzdtLzlRTjloRGl1bTRLa2lvOUYycitSOTJ2TWdXYWx1dll2aUZHSnc4VjhYTDh5aGNwa0tnWUpVUTB2ME1DYnBJOWM3aFNLUk54dmFJOWppa1lHeUdOU3NGZElUd2NYM2EweEptRGZ3Q3NzUDc2bUlBQzZ2WEROdVNjZXkrdjNualErNm8vN0FvdjhZRmlzWkxLbXhnWm52dVhESW45enBOaGlndGxJT1RLZVkxSTROWlE3ektEbEp6U2J6QlJTV1dhTlpBV0R2bHdGci9aUU9NTlEyNHBoS1ZtbmVQVEVWRkFTc3VtVWlJQkxYYlR3NzhiL1NZM2Jnejc5ZGh3OEExUHU1Tlc0WDloaWNybU5yMUV5WDM5VXNURFFJREFRQUIAAAAADWdhbWVQdWJsaWNLZXkJAAJZAAAAAQIAAAAsMjJMd2tadmhCZ2l6OFF5Y25tWDdza3VMWE52cDRnS0NFQkQ0cjQ3NHZLZ3AAAAAAC2dhbWVBZGRyZXNzCQEAAAAUYWRkcmVzc0Zyb21QdWJsaWNLZXkAAAABBQAAAA1nYW1lUHVibGljS2V5AAAAAA5hZG1pblB1YmxpY0tleQEAAAAgo48gw3sh+zm7Ti9Qukc32bYx6mSAxesLg4xaN7sn3DIAAAAADGFkbWluQWRkcmVzcwkBAAAAFGFkZHJlc3NGcm9tUHVibGljS2V5AAAAAQUAAAAOYWRtaW5QdWJsaWNLZXkAAAAABWRydW0xCQAETAAAAAICAAAAATYJAARMAAAAAgIAAAABMQkABEwAAAACAgAAAAE1CQAETAAAAAICAAAAATQJAARMAAAAAgIAAAABMwkABEwAAAACAgAAAAEyCQAETAAAAAICAAAAATEJAARMAAAAAgIAAAABMwkABEwAAAACAgAAAAE1CQAETAAAAAICAAAAATIJAARMAAAAAgIAAAABNAkABEwAAAACAgAAAAExCQAETAAAAAICAAAAATcJAARMAAAAAgIAAAABMwkABEwAAAACAgAAAAEyCQAETAAAAAICAAAAATMJAARMAAAAAgIAAAABMQkABEwAAAACAgAAAAE0CQAETAAAAAICAAAAATEJAARMAAAAAgIAAAABMwkABEwAAAACAgAAAAE1CQAETAAAAAICAAAAATIJAARMAAAAAgIAAAABMQkABEwAAAACAgAAAAE0CQAETAAAAAICAAAAATIJAARMAAAAAgIAAAABNgkABEwAAAACAgAAAAE1CQAETAAAAAICAAAAATIJAARMAAAAAgIAAAABMQkABEwAAAACAgAAAAE0BQAAAANuaWwAAAAABWRydW0yCQAETAAAAAICAAAAATEJAARMAAAAAgIAAAABMwkABEwAAAACAgAAAAE0CQAETAAAAAICAAAAATIJAARMAAAAAgIAAAABMwkABEwAAAACAgAAAAE1CQAETAAAAAICAAAAATEJAARMAAAAAgIAAAABNgkABEwAAAACAgAAAAE0CQAETAAAAAICAAAAATIJAARMAAAAAgIAAAABMQkABEwAAAACAgAAAAExCQAETAAAAAICAAAAATQJAARMAAAAAgIAAAABMgkABEwAAAACAgAAAAExCQAETAAAAAICAAAAATYJAARMAAAAAgIAAAABMwkABEwAAAACAgAAAAE0CQAETAAAAAICAAAAATEJAARMAAAAAgIAAAABMgkABEwAAAACAgAAAAE1CQAETAAAAAICAAAAATQJAARMAAAAAgIAAAABMQkABEwAAAACAgAAAAE1CQAETAAAAAICAAAAATMJAARMAAAAAgIAAAABMgkABEwAAAACAgAAAAE3CQAETAAAAAICAAAAATUJAARMAAAAAgIAAAABMQkABEwAAAACAgAAAAEzBQAAAANuaWwAAAAABWRydW0zCQAETAAAAAICAAAAATMJAARMAAAAAgIAAAABMgkABEwAAAACAgAAAAE1CQAETAAAAAICAAAAATIJAARMAAAAAgIAAAABNwkABEwAAAACAgAAAAE0CQAETAAAAAICAAAAATEJAARMAAAAAgIAAAABMwkABEwAAAACAgAAAAE2CQAETAAAAAICAAAAATQJAARMAAAAAgIAAAABMgkABEwAAAACAgAAAAEzCQAETAAAAAICAAAAATEJAARMAAAAAgIAAAABNgkABEwAAAACAgAAAAE0CQAETAAAAAICAAAAATIJAARMAAAAAgIAAAABMQkABEwAAAACAgAAAAE1CQAE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", "height": 1407040, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: N9AMzqEXaWYyY4x7jxvzJpjGiW9NEMqzUhwKDHcTgVQ Next: 2doLte3ywMb2qMduGHZQC4h9ZjzohPunsNnYXcYNt54W Diff:
OldNewDifferences
130130 else throw("Bet amount is not in range")
131131
132132
133-func rsaToInt (msg,rsaSign,rsaPublicKey) = {
134- let rsaCheck = rsaVerify(SHA256, toBytes(msg), fromBase64String(rsaSign), rsaPublicKey)
133+func rsaToInt (message,rsaSign,rsaPublicKey) = {
134+ let rsaCheck = rsaVerify(SHA256, toBytes(message), fromBase64String(rsaSign), rsaPublicKey)
135135 if (rsaCheck)
136136 then (toInt(sha256(fromBase64String(rsaSign))) % 29)
137137 else throw("Invalid RSA Signature")
158158 else if ((threeInARow == "111"))
159159 then 2
160160 else 0
161+
162+
163+func randomizer (inv) = {
164+ let rand = ((((inv.transactionId + inv.callerPublicKey) + lastBlock.generationSignature) + toBytes(lastBlock.timestamp)) + toBytes(lastBlock.height))
165+ sha256(rand)
166+ }
161167
162168
163169 @Callable(i)
230236 let betStatus = betDataList[0]
231237 let playerAddr = betDataList[1]
232238 let betAmount = parseIntValue(betDataList[2])
233- let drum1Int = rsaToInt(signMsg, rsaSign1, rsaPublicKey1)
234- let drum2Int = rsaToInt(signMsg, rsaSign2, rsaPublicKey2)
235- let drum3Int = rsaToInt(signMsg, rsaSign3, rsaPublicKey3)
236- let threeInARow = ((drum1[drum1Int] + drum2[drum2Int]) + drum3[drum3Int])
237- let elementToString = ((drumIntToString(drum1Int) + drumIntToString(drum2Int)) + drumIntToString(drum3Int))
239+ let drum1Int = randomizer(i)
240+ let drum2Int = randomizer(i)
241+ let drum3Int = randomizer(i)
242+ let threeInARow = ((drum1[toInt(drum1Int)] + drum2[toInt(drum2Int)]) + drum3[toInt(drum3Int)])
243+ let elementToString = ((drumIntToString(toInt(drum1Int)) + drumIntToString(toInt(drum1Int))) + drumIntToString(toInt(drum1Int)))
238244 let amountWon = ((defineMultiplier(threeInARow) * wavesBalance(this)) / 100)
239245 match gameGetStatus() {
240246 case state: String =>
253259 if ((threeInARow == "444"))
254260 then ScriptResult(WriteSet([DataEntry(gameLabelBetStatus(playerAddr), "PLAYED"), DataEntry(gameLabelBet(toString(i.caller)), ((((((((((((((("TRIPLE_BAR_" + playerAddr) + "_") + toString(betAmount)) + "_WAVES_") + toString(height)) + "_") + toString(newWin)) + "_") + betDataList[6]) + "_") + betDataList[7]) + "_") + threeInARow) + "_") + elementToString)), DataEntry(addressLabelWins(toString(i.caller)), newWin), DataEntry(gameLabelRow, ((toString(0) + "_") + playerAddr))]), TransferSet([ScriptTransfer(addressFromStringValue(playerAddr), amountWon, unit)]))
255261 else if ((WINS >= 200))
256- then ScriptResult(WriteSet([DataEntry(gameLabelBet(toString(i.caller)), (((((((((((((((betWin + playerAddr) + "_") + toString(betAmount)) + "_WAVES_") + toString(height)) + "_") + toString(0)) + "_") + betDataList[6]) + "_") + betDataList[7]) + "_") + threeInARow) + "_") + elementToString)), DataEntry(addressLabelWins(toString(i.caller)), 0), DataEntry(gameLabelRow, ((toString(0) + "_") + playerAddr))]), TransferSet([ScriptTransfer(addressFromStringValue(playerAddr), amountWon, unit)]))
262+ then ScriptResult(WriteSet([DataEntry(gameLabelBetStatus(playerAddr), "PLAYED"), DataEntry(gameLabelBet(toString(i.caller)), ((((((((((((((((betWin + "_") + playerAddr) + "_") + toString(betAmount)) + "_WAVES_") + toString(height)) + "_") + toString(0)) + "_") + betDataList[6]) + "_") + betDataList[7]) + "_") + threeInARow) + "_") + elementToString)), DataEntry(addressLabelWins(toString(i.caller)), 0), DataEntry(gameLabelRow, ((toString(0) + "_") + playerAddr))]), TransferSet([ScriptTransfer(addressFromStringValue(playerAddr), amountWon, unit)]))
257263 else if (if ((playerAddr == rowPlayer))
258264 then (row == 5)
259265 else false)
260- then ScriptResult(WriteSet([DataEntry(gameLabelBet(toString(i.caller)), (((((((((((((((betWin + playerAddr) + "_") + toString(betAmount)) + "_WAVES_") + toString(height)) + "_") + toString(newWin)) + "_") + toString(0)) + "_") + betDataList[7]) + "_") + threeInARow) + "_") + elementToString)), DataEntry(addressLabelWins(toString(i.caller)), newWin), DataEntry(gameLabelRow, ((toString(0) + "_") + playerAddr))]), TransferSet([ScriptTransfer(addressFromStringValue(playerAddr), amountWon, unit)]))
261- else ScriptResult(WriteSet([DataEntry(gameLabelBet(playerAddr), ((((((((((((((((((betWin + "_") + playerAddr) + "_") + toString(betAmount)) + "_WAVES_") + toString(height)) + "_") + toString(newWin)) + "_") + toString(newWin)) + "_") + betDataList[7]) + "_") + threeInARow) + "_") + elementToString) + "_") + toString(amountWon))), DataEntry(addressLabelWins(toString(i.caller)), newWin), DataEntry(gameLabelRow, ((toString(newWin) + "_") + playerAddr))]), TransferSet([ScriptTransfer(addressFromStringValue(playerAddr), amountWon, unit)]))
266+ then ScriptResult(WriteSet([DataEntry(gameLabelBetStatus(playerAddr), "PLAYED"), DataEntry(gameLabelBet(toString(i.caller)), ((((((((((((((((betWin + "_") + playerAddr) + "_") + toString(betAmount)) + "_WAVES_") + toString(height)) + "_") + toString(newWin)) + "_") + toString(0)) + "_") + betDataList[7]) + "_") + threeInARow) + "_") + elementToString)), DataEntry(addressLabelWins(toString(i.caller)), newWin), DataEntry(gameLabelRow, ((toString(0) + "_") + playerAddr))]), TransferSet([ScriptTransfer(addressFromStringValue(playerAddr), amountWon, unit)]))
267+ else ScriptResult(WriteSet([DataEntry(gameLabelBetStatus(playerAddr), "PLAYED"), DataEntry(gameLabelBet(playerAddr), ((((((((((((((((((betWin + "_") + playerAddr) + "_") + toString(betAmount)) + "_WAVES_") + toString(height)) + "_") + toString(newWin)) + "_") + toString(newWin)) + "_") + betDataList[7]) + "_") + threeInARow) + "_") + elementToString) + "_") + toString(amountWon))), DataEntry(addressLabelWins(toString(i.caller)), newWin), DataEntry(gameLabelRow, ((toString(newWin) + "_") + playerAddr))]), TransferSet([ScriptTransfer(addressFromStringValue(playerAddr), amountWon, unit)]))
262268 case _ =>
263269 throw("INIT_WIN:addressGetWins")
264270 }
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 3 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let rsaPublicKey1 = fromBase64String("MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAl6ouUZyUryUG2LlF2uYQXdb/E6UhlZAbqlOJUCXke4X3osaya63bNQeUNPK7m/9QN9hDium4Kkio9F2r+R92vMgWaluvYviFGJw8V8XL8yhcpkKgYJUQ0v0MCbpI9c7hSKRNxvaI9jikYGyGNSsFdITwcX3a0xJmDfwCssP76mIAC6vXDNuScey+v3njQ+6o/7Aov8YFisZLKmxgZnvuXDIn9zpNhigtlIOTKeY1I4NZQ7zKDlJzSbzBRSWWaNZAWDvlwFr/ZQOMNQ24phKVmnePTEVFASsumUiIBLXbTw78b/SY3bgz79dhw8A1Pu5NW4X9hicrmNr1EyX39UsTDQIDAQAB")
55
66 let rsaPublicKey2 = fromBase64String("MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAl6ouUZyUryUG2LlF2uYQXdb/E6UhlZAbqlOJUCXke4X3osaya63bNQeUNPK7m/9QN9hDium4Kkio9F2r+R92vMgWaluvYviFGJw8V8XL8yhcpkKgYJUQ0v0MCbpI9c7hSKRNxvaI9jikYGyGNSsFdITwcX3a0xJmDfwCssP76mIAC6vXDNuScey+v3njQ+6o/7Aov8YFisZLKmxgZnvuXDIn9zpNhigtlIOTKeY1I4NZQ7zKDlJzSbzBRSWWaNZAWDvlwFr/ZQOMNQ24phKVmnePTEVFASsumUiIBLXbTw78b/SY3bgz79dhw8A1Pu5NW4X9hicrmNr1EyX39UsTDQIDAQAB")
77
88 let rsaPublicKey3 = fromBase64String("MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAl6ouUZyUryUG2LlF2uYQXdb/E6UhlZAbqlOJUCXke4X3osaya63bNQeUNPK7m/9QN9hDium4Kkio9F2r+R92vMgWaluvYviFGJw8V8XL8yhcpkKgYJUQ0v0MCbpI9c7hSKRNxvaI9jikYGyGNSsFdITwcX3a0xJmDfwCssP76mIAC6vXDNuScey+v3njQ+6o/7Aov8YFisZLKmxgZnvuXDIn9zpNhigtlIOTKeY1I4NZQ7zKDlJzSbzBRSWWaNZAWDvlwFr/ZQOMNQ24phKVmnePTEVFASsumUiIBLXbTw78b/SY3bgz79dhw8A1Pu5NW4X9hicrmNr1EyX39UsTDQIDAQAB")
99
1010 let gamePublicKey = fromBase58String("22LwkZvhBgiz8QycnmX7skuLXNvp4gKCEBD4r474vKgp")
1111
1212 let gameAddress = addressFromPublicKey(gamePublicKey)
1313
1414 let adminPublicKey = base58'C1U3CKj36gYHoZC119pyKKqgkUK1xigC3yQg5XrLSZsf'
1515
1616 let adminAddress = addressFromPublicKey(adminPublicKey)
1717
1818 let drum1 = ["6", "1", "5", "4", "3", "2", "1", "3", "5", "2", "4", "1", "7", "3", "2", "3", "1", "4", "1", "3", "5", "2", "1", "4", "2", "6", "5", "2", "1", "4"]
1919
2020 let drum2 = ["1", "3", "4", "2", "3", "5", "1", "6", "4", "2", "1", "1", "4", "2", "1", "6", "3", "4", "1", "2", "5", "4", "1", "5", "3", "2", "7", "5", "1", "3"]
2121
2222 let drum3 = ["3", "2", "5", "2", "7", "4", "1", "3", "6", "4", "2", "3", "1", "6", "4", "2", "1", "5", "2", "5", "1", "3", "7", "1", "2", "6", "4", "1", "3", "1"]
2323
2424 let stateAcc = "ACCEPTED"
2525
2626 let betPlaced = "PENDING"
2727
2828 let betWin = "WON"
2929
3030 let betLose = "LOST"
3131
3232 let gameTimeFrame = 3
3333
3434 let wavesId = unit
3535
3636 let wavesMinAmt = 20000000
3737
3838 let wavesMaxAmt = (wavesMinAmt * 10)
3939
4040 let gameLabelCounter = "GAMESCOUNTER"
4141
4242 func gameGetCounter () = getInteger(this, gameLabelCounter)
4343
4444
4545 let gameLabel = (toString(gameAddress) + "_GAME_ADDRESS")
4646
4747 func gameGet () = getString(this, gameLabel)
4848
4949
5050 let gameLabelStatus = (("G_" + toString(gameAddress)) + "_STATUS")
5151
5252 func gameGetStatus () = getString(this, gameLabelStatus)
5353
5454
5555 let gameLabelRow = (("R_" + toString(gameAddress)) + "_ROW_WIN/LOSE")
5656
5757 func gameGetRow () = getString(this, gameLabelRow)
5858
5959
6060 func gameLabelBetStatus (playerAddr) = (playerAddr + "_BET_STATUS")
6161
6262
6363 func gameGetBetStatus (playerAddr) = getString(this, gameLabelBetStatus(playerAddr))
6464
6565
6666 func gameLabelBet (playerAddr) = (playerAddr + "_BETDATA")
6767
6868
6969 func gameGetBet (playerAddr) = getString(this, gameLabelBet(playerAddr))
7070
7171
7272 func addressLabelAmount (addr) = (("B_" + addr) + "_AMOUNT")
7373
7474
7575 func addressGetAmount (addr) = getInteger(this, addressLabelAmount(addr))
7676
7777
7878 func addressLabelWins (addr) = (("B_" + addr) + "_WINS")
7979
8080
8181 func addressGetWins (addr) = getInteger(this, addressLabelWins(addr))
8282
8383
8484 func addressLabelLoses (addr) = (("B_" + addr) + "_LOSES")
8585
8686
8787 func addressGetLoses (addr) = getInteger(this, addressLabelLoses(addr))
8888
8989
9090 func gameGetData () = {
9191 let gameData = gameGet()
9292 let a = match gameData {
9393 case a: String =>
9494 a
9595 case _ =>
9696 throw("GAME_DATA_ERROR")
9797 }
9898 split(a, "_")
9999 }
100100
101101
102102 func gameGetRowData () = {
103103 let gameRowData = gameGetRow()
104104 let a = match gameRowData {
105105 case a: String =>
106106 a
107107 case _ =>
108108 throw("GAME_DATA_ERROR")
109109 }
110110 split(a, "_")
111111 }
112112
113113
114114 func gameGetBetData (playerAddr) = {
115115 let gameBetData = gameGetBet(playerAddr)
116116 let a = match gameBetData {
117117 case a: String =>
118118 a
119119 case _ =>
120120 throw("BET_DATA_ERROR")
121121 }
122122 split(a, "_")
123123 }
124124
125125
126126 func pmtAmtCheck (betAmount) = if (if ((betAmount >= wavesMinAmt))
127127 then (wavesMaxAmt >= betAmount)
128128 else false)
129129 then true
130130 else throw("Bet amount is not in range")
131131
132132
133-func rsaToInt (msg,rsaSign,rsaPublicKey) = {
134- let rsaCheck = rsaVerify(SHA256, toBytes(msg), fromBase64String(rsaSign), rsaPublicKey)
133+func rsaToInt (message,rsaSign,rsaPublicKey) = {
134+ let rsaCheck = rsaVerify(SHA256, toBytes(message), fromBase64String(rsaSign), rsaPublicKey)
135135 if (rsaCheck)
136136 then (toInt(sha256(fromBase64String(rsaSign))) % 29)
137137 else throw("Invalid RSA Signature")
138138 }
139139
140140
141141 func drumIntToString (drumInt) = if ((10 > drumInt))
142142 then ("0" + toString(drumInt))
143143 else toString(drumInt)
144144
145145
146146 func defineMultiplier (threeInARow) = if ((threeInARow == "777"))
147147 then 100
148148 else if ((threeInARow == "666"))
149149 then 20
150150 else if ((threeInARow == "555"))
151151 then 14
152152 else if ((threeInARow == "444"))
153153 then 10
154154 else if ((threeInARow == "333"))
155155 then 7
156156 else if ((threeInARow == "222"))
157157 then 5
158158 else if ((threeInARow == "111"))
159159 then 2
160160 else 0
161+
162+
163+func randomizer (inv) = {
164+ let rand = ((((inv.transactionId + inv.callerPublicKey) + lastBlock.generationSignature) + toBytes(lastBlock.timestamp)) + toBytes(lastBlock.height))
165+ sha256(rand)
166+ }
161167
162168
163169 @Callable(i)
164170 func initSlotGame () = if ((i.callerPublicKey != adminPublicKey))
165171 then throw("initGame_FORBBIDEN")
166172 else match gameGetCounter() {
167173 case GAMESCOUNTER: Int =>
168174 throw("INIT_ALREADY_DONE")
169175 case _ =>
170176 WriteSet([DataEntry(gameLabelCounter, 0), DataEntry(gameLabelStatus, "ACTIVE"), DataEntry(gameLabel, ((stateAcc + "_WAVES_") + toString(height))), DataEntry(gameLabelRow, ("0_" + toString(gameAddress)))])
171177 }
172178
173179
174180
175181 @Callable(i)
176182 func placeBet () = {
177183 let playerAddress = extract(i.caller)
178184 let pmt = extract(i.payment)
179185 let betAmount = pmt.amount
180186 let pmtAmtCorrect = pmtAmtCheck(betAmount)
181187 match gameGetStatus() {
182188 case state: String =>
183189 if ((state != "ACTIVE"))
184190 then throw("SLOT_GAME_NOT_INITIALIZED")
185191 else match gameGetCounter() {
186192 case GAMESCOUNTER: Int =>
187193 if (!(pmtAmtCorrect))
188194 then throw("PLACEBET:_WRONG_BET_AMOUNT")
189195 else {
190196 let newGameCounter = (GAMESCOUNTER + 1)
191197 match addressGetWins(toString(playerAddress)) {
192198 case WINS: Int =>
193199 if ((WINS >= 0))
194200 then match gameGetBetStatus(toString(playerAddress)) {
195201 case betStatus: String =>
196202 if ((betStatus != "PLAYED"))
197203 then throw("COMPLETE_ PREVIOUS_GAME_1")
198204 else WriteSet([DataEntry(gameLabelCounter, newGameCounter), DataEntry(gameLabel, ((stateAcc + "_WAVES_") + toString(height))), DataEntry(gameLabelBetStatus(toString(playerAddress)), "BET"), DataEntry(addressLabelAmount(toString(playerAddress)), betAmount), DataEntry(gameLabelBet(toString(playerAddress)), (((((((betPlaced + "_") + toString(playerAddress)) + "_") + toString(betAmount)) + "_WAVES_") + toString(height)) + "_0_0_0_0_0"))])
199205 case _ =>
200206 WriteSet([DataEntry(gameLabelCounter, newGameCounter), DataEntry(gameLabel, ((stateAcc + "_WAVES_") + toString(height))), DataEntry(gameLabelBetStatus(toString(playerAddress)), "BET"), DataEntry(addressLabelAmount(toString(playerAddress)), betAmount), DataEntry(gameLabelBet(toString(playerAddress)), (((((((betPlaced + "_") + toString(playerAddress)) + "_") + toString(betAmount)) + "_WAVES_") + toString(height)) + "_0_0_0_0_0"))])
201207 }
202208 else throw("BAD_WIN_INIT")
203209 case _ =>
204210 match gameGetBetStatus(toString(playerAddress)) {
205211 case betStatus: String =>
206212 if ((betStatus != "PLAYED"))
207213 then throw("COMPLETE_ PREVIOUS_GAME_2")
208214 else WriteSet([DataEntry(gameLabelCounter, newGameCounter), DataEntry(gameLabel, ((stateAcc + "_WAVES_") + toString(height))), DataEntry(gameLabelBetStatus(toString(playerAddress)), "BET"), DataEntry(addressLabelAmount(toString(playerAddress)), betAmount), DataEntry(gameLabelBet(toString(playerAddress)), (((((((betPlaced + "_") + toString(playerAddress)) + "_") + toString(betAmount)) + "_WAVES_") + toString(height)) + "_0_0_0_0_0")), DataEntry(addressLabelWins(toString(playerAddress)), 0), DataEntry(addressLabelLoses(toString(playerAddress)), 0)])
209215 case _ =>
210216 WriteSet([DataEntry(gameLabelCounter, newGameCounter), DataEntry(gameLabel, ((stateAcc + "_WAVES_") + toString(height))), DataEntry(gameLabelBetStatus(toString(playerAddress)), "BET"), DataEntry(addressLabelAmount(toString(playerAddress)), betAmount), DataEntry(gameLabelBet(toString(playerAddress)), (((((((betPlaced + "_") + toString(playerAddress)) + "_") + toString(betAmount)) + "_WAVES_") + toString(height)) + "_0_0_0_0_0")), DataEntry(addressLabelWins(toString(playerAddress)), 0), DataEntry(addressLabelLoses(toString(playerAddress)), 0)])
211217 }
212218 }
213219 }
214220 case _ =>
215221 throw("INIT_NEEDED_FOR_COUNT")
216222 }
217223 case _ =>
218224 throw("INIT_ERROR")
219225 }
220226 }
221227
222228
223229
224230 @Callable(i)
225231 func playGame (signMsg,rsaSign1,rsaSign2,rsaSign3) = {
226232 let rowDatatList = gameGetRowData()
227233 let row = parseIntValue(rowDatatList[0])
228234 let rowPlayer = rowDatatList[1]
229235 let betDataList = gameGetBetData(toString(i.caller))
230236 let betStatus = betDataList[0]
231237 let playerAddr = betDataList[1]
232238 let betAmount = parseIntValue(betDataList[2])
233- let drum1Int = rsaToInt(signMsg, rsaSign1, rsaPublicKey1)
234- let drum2Int = rsaToInt(signMsg, rsaSign2, rsaPublicKey2)
235- let drum3Int = rsaToInt(signMsg, rsaSign3, rsaPublicKey3)
236- let threeInARow = ((drum1[drum1Int] + drum2[drum2Int]) + drum3[drum3Int])
237- let elementToString = ((drumIntToString(drum1Int) + drumIntToString(drum2Int)) + drumIntToString(drum3Int))
239+ let drum1Int = randomizer(i)
240+ let drum2Int = randomizer(i)
241+ let drum3Int = randomizer(i)
242+ let threeInARow = ((drum1[toInt(drum1Int)] + drum2[toInt(drum2Int)]) + drum3[toInt(drum3Int)])
243+ let elementToString = ((drumIntToString(toInt(drum1Int)) + drumIntToString(toInt(drum1Int))) + drumIntToString(toInt(drum1Int)))
238244 let amountWon = ((defineMultiplier(threeInARow) * wavesBalance(this)) / 100)
239245 match gameGetStatus() {
240246 case state: String =>
241247 if ((state != "ACTIVE"))
242248 then throw("SLOT_GAME_NOT_ACTIVE")
243249 else match gameGetBetStatus(playerAddr) {
244250 case gameBetStatus: String =>
245251 if ((gameBetStatus != "BET"))
246252 then throw("PLACE_BET_BEFORE_YOU_PLAY")
247253 else if ((i.caller != addressFromStringValue(playerAddr)))
248254 then throw("NOT_CURRENT_PLAYER")
249255 else if ((amountWon != 0))
250256 then match addressGetWins(playerAddr) {
251257 case WINS: Int =>
252258 let newWin = (WINS + 1)
253259 if ((threeInARow == "444"))
254260 then ScriptResult(WriteSet([DataEntry(gameLabelBetStatus(playerAddr), "PLAYED"), DataEntry(gameLabelBet(toString(i.caller)), ((((((((((((((("TRIPLE_BAR_" + playerAddr) + "_") + toString(betAmount)) + "_WAVES_") + toString(height)) + "_") + toString(newWin)) + "_") + betDataList[6]) + "_") + betDataList[7]) + "_") + threeInARow) + "_") + elementToString)), DataEntry(addressLabelWins(toString(i.caller)), newWin), DataEntry(gameLabelRow, ((toString(0) + "_") + playerAddr))]), TransferSet([ScriptTransfer(addressFromStringValue(playerAddr), amountWon, unit)]))
255261 else if ((WINS >= 200))
256- then ScriptResult(WriteSet([DataEntry(gameLabelBet(toString(i.caller)), (((((((((((((((betWin + playerAddr) + "_") + toString(betAmount)) + "_WAVES_") + toString(height)) + "_") + toString(0)) + "_") + betDataList[6]) + "_") + betDataList[7]) + "_") + threeInARow) + "_") + elementToString)), DataEntry(addressLabelWins(toString(i.caller)), 0), DataEntry(gameLabelRow, ((toString(0) + "_") + playerAddr))]), TransferSet([ScriptTransfer(addressFromStringValue(playerAddr), amountWon, unit)]))
262+ then ScriptResult(WriteSet([DataEntry(gameLabelBetStatus(playerAddr), "PLAYED"), DataEntry(gameLabelBet(toString(i.caller)), ((((((((((((((((betWin + "_") + playerAddr) + "_") + toString(betAmount)) + "_WAVES_") + toString(height)) + "_") + toString(0)) + "_") + betDataList[6]) + "_") + betDataList[7]) + "_") + threeInARow) + "_") + elementToString)), DataEntry(addressLabelWins(toString(i.caller)), 0), DataEntry(gameLabelRow, ((toString(0) + "_") + playerAddr))]), TransferSet([ScriptTransfer(addressFromStringValue(playerAddr), amountWon, unit)]))
257263 else if (if ((playerAddr == rowPlayer))
258264 then (row == 5)
259265 else false)
260- then ScriptResult(WriteSet([DataEntry(gameLabelBet(toString(i.caller)), (((((((((((((((betWin + playerAddr) + "_") + toString(betAmount)) + "_WAVES_") + toString(height)) + "_") + toString(newWin)) + "_") + toString(0)) + "_") + betDataList[7]) + "_") + threeInARow) + "_") + elementToString)), DataEntry(addressLabelWins(toString(i.caller)), newWin), DataEntry(gameLabelRow, ((toString(0) + "_") + playerAddr))]), TransferSet([ScriptTransfer(addressFromStringValue(playerAddr), amountWon, unit)]))
261- else ScriptResult(WriteSet([DataEntry(gameLabelBet(playerAddr), ((((((((((((((((((betWin + "_") + playerAddr) + "_") + toString(betAmount)) + "_WAVES_") + toString(height)) + "_") + toString(newWin)) + "_") + toString(newWin)) + "_") + betDataList[7]) + "_") + threeInARow) + "_") + elementToString) + "_") + toString(amountWon))), DataEntry(addressLabelWins(toString(i.caller)), newWin), DataEntry(gameLabelRow, ((toString(newWin) + "_") + playerAddr))]), TransferSet([ScriptTransfer(addressFromStringValue(playerAddr), amountWon, unit)]))
266+ then ScriptResult(WriteSet([DataEntry(gameLabelBetStatus(playerAddr), "PLAYED"), DataEntry(gameLabelBet(toString(i.caller)), ((((((((((((((((betWin + "_") + playerAddr) + "_") + toString(betAmount)) + "_WAVES_") + toString(height)) + "_") + toString(newWin)) + "_") + toString(0)) + "_") + betDataList[7]) + "_") + threeInARow) + "_") + elementToString)), DataEntry(addressLabelWins(toString(i.caller)), newWin), DataEntry(gameLabelRow, ((toString(0) + "_") + playerAddr))]), TransferSet([ScriptTransfer(addressFromStringValue(playerAddr), amountWon, unit)]))
267+ else ScriptResult(WriteSet([DataEntry(gameLabelBetStatus(playerAddr), "PLAYED"), DataEntry(gameLabelBet(playerAddr), ((((((((((((((((((betWin + "_") + playerAddr) + "_") + toString(betAmount)) + "_WAVES_") + toString(height)) + "_") + toString(newWin)) + "_") + toString(newWin)) + "_") + betDataList[7]) + "_") + threeInARow) + "_") + elementToString) + "_") + toString(amountWon))), DataEntry(addressLabelWins(toString(i.caller)), newWin), DataEntry(gameLabelRow, ((toString(newWin) + "_") + playerAddr))]), TransferSet([ScriptTransfer(addressFromStringValue(playerAddr), amountWon, unit)]))
262268 case _ =>
263269 throw("INIT_WIN:addressGetWins")
264270 }
265271 else match addressGetLoses(playerAddr) {
266272 case LOSES: Int =>
267273 let newLose = (LOSES + 1)
268274 if ((LOSES >= 5))
269275 then WriteSet([DataEntry(gameLabelBetStatus(playerAddr), "PLAYED"), DataEntry(gameLabelBet(toString(i.caller)), ((((((((((((((betLose + "_") + playerAddr) + "_") + toString(betAmount)) + "_WAVES_") + toString(height)) + "_") + betDataList[5]) + "_") + betDataList[6]) + "_0_") + threeInARow) + "_") + elementToString)), DataEntry(addressLabelLoses(toString(i.caller)), 0), DataEntry(gameLabelRow, ((toString(0) + "_") + playerAddr))])
270276 else WriteSet([DataEntry(gameLabelBetStatus(playerAddr), "PLAYED"), DataEntry(gameLabelBet(toString(i.caller)), ((((((((((((((((betLose + "_") + playerAddr) + "_") + toString(betAmount)) + "_WAVES_") + toString(height)) + "_") + betDataList[5]) + "_") + betDataList[6]) + "_") + toString(newLose)) + "_") + threeInARow) + "_") + elementToString)), DataEntry(addressLabelLoses(toString(i.caller)), newLose), DataEntry(gameLabelRow, ((toString(newLose) + "_") + playerAddr))])
271277 case _ =>
272278 throw("INIT_LOSES")
273279 }
274280 case _ =>
275281 throw("BET_PLACED")
276282 }
277283 case _ =>
278284 throw("INIT_ERROR")
279285 }
280286 }
281287
282288
283289 @Verifier(tx)
284290 func verify () = if (sigVerify(tx.bodyBytes, tx.proofs[0], gamePublicKey))
285291 then match tx {
286292 case tx: SetScriptTransaction =>
287293 true
288294 case _ =>
289295 false
290296 }
291297 else false
292298

github/deemru/w8io/873ac7e 
167.92 ms