tx · 8z9ntPpH32zATzu2Z5zobFBvJKhJ2Dh2jycwRSAUDaKV

3N9XnyPpWxYohKH7z5dEuq8rpnobpyzPrzE:  -0.01400000 Waves

2019.09.08 13:55 [667007] smart account 3N9XnyPpWxYohKH7z5dEuq8rpnobpyzPrzE > SELF 0.00000000 Waves

{ "type": 13, "id": "8z9ntPpH32zATzu2Z5zobFBvJKhJ2Dh2jycwRSAUDaKV", "fee": 1400000, "feeAssetId": null, "timestamp": 1567940133004, "version": 1, "sender": "3N9XnyPpWxYohKH7z5dEuq8rpnobpyzPrzE", "senderPublicKey": "ESNVczQiY4oxY2hoRSZcruKNBwsPdXVu1nSCbpprDGJB", "proofs": [ "3m5TF3uiBbE4xH6iCLEaPwWyfHxMd2Q8CoRjfcMpPNm1kwtrwUAm2StzJDXyLjLw8jtqEZXvcm5ucc4uib6o2fA5" ], "script": "base64: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", "chainId": 84, "height": 667007, "spentComplexity": 0 } View: original | compacted Prev: FrygXG6WQUrVc79G6vSzuDoaTyd3rqrE4mtmkwK5qRbT Next: ATpPFcLMXmKvVMfWXYvgVqw3tCqYw8uCe15RKV6Nue6p Diff:
OldNewDifferences
5151 }
5252
5353
54-func win (gameId,winTicket,winnerAddressStr) = {
55- let winAmt = getIntegerValue(BetServer, (((gameId + "_") + winnerAddressStr) + "_IfWinsGet"))
54+func win (gameId,winTicket,winnerAddressStr,winAmt) = {
5655 let winTX = [ScriptTransfer(addressFromStringValue(winnerAddressStr), winAmt, unit)]
5756 let gameResult = [DataEntry((gameId + "_result"), toString(winTicket)), DataEntry((gameId + "_winner"), winnerAddressStr), DataEntry((gameId + "_winAmt"), winAmt)]
5857 ScriptResult(WriteSet(gameResult), TransferSet(winTX))
6867 let winTicket = GenerateRandInt(gameId, rsaSign)
6968 let players = getStringValue(BetServer, (gameId + "_players"))
7069 let playersList = split(players, "_")
70+ let winAmts = getStringValue(BetServer, (gameId + "_winAmts"))
71+ let winAmtsList = split(winAmts, "_")
7172 if (isWinner(getStringValue(BetServer, (((gameId + "_") + playersList[0]) + "_tickets")), winTicket))
72- then win(gameId, winTicket, playersList[0])
73+ then win(gameId, winTicket, playersList[0], parseIntValue(winAmtsList[0]))
7374 else if (isWinner(getStringValue(BetServer, (((gameId + "_") + playersList[1]) + "_tickets")), winTicket))
74- then win(gameId, winTicket, playersList[1])
75+ then win(gameId, winTicket, playersList[1], parseIntValue(winAmtsList[1]))
7576 else if (isWinner(getStringValue(BetServer, (((gameId + "_") + playersList[2]) + "_tickets")), winTicket))
76- then win(gameId, winTicket, playersList[2])
77+ then win(gameId, winTicket, playersList[2], parseIntValue(winAmtsList[2]))
7778 else if (isWinner(getStringValue(BetServer, (((gameId + "_") + playersList[3]) + "_tickets")), winTicket))
78- then win(gameId, winTicket, playersList[3])
79+ then win(gameId, winTicket, playersList[3], parseIntValue(winAmtsList[3]))
7980 else if (isWinner(getStringValue(BetServer, (((gameId + "_") + playersList[4]) + "_tickets")), winTicket))
80- then win(gameId, winTicket, playersList[4])
81+ then win(gameId, winTicket, playersList[4], parseIntValue(winAmtsList[4]))
8182 else throw("Error")
8283 }
8384 else throw(((("Current Game is " + currentGame) + ", but not ") + gameId))
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 3 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let ServerPublicKey = fromBase58String("7im9caiCmE4SL6jTm4KTicHH4bGPf5v59rnfUA3cCRDj")
55
66 let BetServer = addressFromStringValue("3N6yFJ5Z8NUUQvfGGMLp5efmevRRtTgQuun")
77
88 let WAVELET = ((100 * 1000) * 1000)
99
1010 let COMMISSION = ((5 * WAVELET) / 1000)
1111
1212 let TicketsPerWave = 100
1313
1414 let CURRENTGAME = "$CURRENT_GAME"
1515
1616 let LASTTICKET = "$LAST_TICKET"
1717
1818 func GenerateRandInt (gameId,rsaSign) = {
1919 let lastTicket = getIntegerValue(BetServer, LASTTICKET)
2020 let rsaSigValid = sigVerify(toBytes(gameId), rsaSign, ServerPublicKey)
2121 if (rsaSigValid)
2222 then {
2323 let rand = (toInt(sha256(rsaSign)) % lastTicket)
2424 if ((0 > rand))
2525 then ((-1 * rand) + 1)
2626 else (rand + 1)
2727 }
2828 else throw("Invalid RSA signature")
2929 }
3030
3131
3232 func isWinner (ticketsStr,winTicket) = {
3333 let tickets = split(ticketsStr, "_")
3434 if (if ((winTicket >= parseIntValue(tickets[0])))
3535 then (parseIntValue(tickets[1]) >= winTicket)
3636 else false)
3737 then true
3838 else if (if ((winTicket >= parseIntValue(tickets[2])))
3939 then (parseIntValue(tickets[3]) >= winTicket)
4040 else false)
4141 then true
4242 else if (if ((winTicket >= parseIntValue(tickets[4])))
4343 then (parseIntValue(tickets[5]) >= winTicket)
4444 else false)
4545 then true
4646 else if (if ((winTicket >= parseIntValue(tickets[6])))
4747 then (parseIntValue(tickets[7]) >= winTicket)
4848 else false)
4949 then true
5050 else false
5151 }
5252
5353
54-func win (gameId,winTicket,winnerAddressStr) = {
55- let winAmt = getIntegerValue(BetServer, (((gameId + "_") + winnerAddressStr) + "_IfWinsGet"))
54+func win (gameId,winTicket,winnerAddressStr,winAmt) = {
5655 let winTX = [ScriptTransfer(addressFromStringValue(winnerAddressStr), winAmt, unit)]
5756 let gameResult = [DataEntry((gameId + "_result"), toString(winTicket)), DataEntry((gameId + "_winner"), winnerAddressStr), DataEntry((gameId + "_winAmt"), winAmt)]
5857 ScriptResult(WriteSet(gameResult), TransferSet(winTX))
5958 }
6059
6160
6261 @Callable(i)
6362 func generateResult (gameId,rsaSignCrypted) = {
6463 let currentGame = getStringValue(BetServer, CURRENTGAME)
6564 if ((currentGame == gameId))
6665 then {
6766 let rsaSign = fromBase58String(rsaSignCrypted)
6867 let winTicket = GenerateRandInt(gameId, rsaSign)
6968 let players = getStringValue(BetServer, (gameId + "_players"))
7069 let playersList = split(players, "_")
70+ let winAmts = getStringValue(BetServer, (gameId + "_winAmts"))
71+ let winAmtsList = split(winAmts, "_")
7172 if (isWinner(getStringValue(BetServer, (((gameId + "_") + playersList[0]) + "_tickets")), winTicket))
72- then win(gameId, winTicket, playersList[0])
73+ then win(gameId, winTicket, playersList[0], parseIntValue(winAmtsList[0]))
7374 else if (isWinner(getStringValue(BetServer, (((gameId + "_") + playersList[1]) + "_tickets")), winTicket))
74- then win(gameId, winTicket, playersList[1])
75+ then win(gameId, winTicket, playersList[1], parseIntValue(winAmtsList[1]))
7576 else if (isWinner(getStringValue(BetServer, (((gameId + "_") + playersList[2]) + "_tickets")), winTicket))
76- then win(gameId, winTicket, playersList[2])
77+ then win(gameId, winTicket, playersList[2], parseIntValue(winAmtsList[2]))
7778 else if (isWinner(getStringValue(BetServer, (((gameId + "_") + playersList[3]) + "_tickets")), winTicket))
78- then win(gameId, winTicket, playersList[3])
79+ then win(gameId, winTicket, playersList[3], parseIntValue(winAmtsList[3]))
7980 else if (isWinner(getStringValue(BetServer, (((gameId + "_") + playersList[4]) + "_tickets")), winTicket))
80- then win(gameId, winTicket, playersList[4])
81+ then win(gameId, winTicket, playersList[4], parseIntValue(winAmtsList[4]))
8182 else throw("Error")
8283 }
8384 else throw(((("Current Game is " + currentGame) + ", but not ") + gameId))
8485 }
8586
8687

github/deemru/w8io/873ac7e 
25.73 ms