tx · FrygXG6WQUrVc79G6vSzuDoaTyd3rqrE4mtmkwK5qRbT

3N9XnyPpWxYohKH7z5dEuq8rpnobpyzPrzE:  -0.01400000 Waves

2019.09.08 12:04 [666893] smart account 3N9XnyPpWxYohKH7z5dEuq8rpnobpyzPrzE > SELF 0.00000000 Waves

{ "type": 13, "id": "FrygXG6WQUrVc79G6vSzuDoaTyd3rqrE4mtmkwK5qRbT", "fee": 1400000, "feeAssetId": null, "timestamp": 1567933475704, "version": 1, "sender": "3N9XnyPpWxYohKH7z5dEuq8rpnobpyzPrzE", "senderPublicKey": "ESNVczQiY4oxY2hoRSZcruKNBwsPdXVu1nSCbpprDGJB", "proofs": [ "t7tAsheLqh92J41n2MDiy6Bv58wP8BBKyxToTrWyEYVFJ8jMBDTmTTaDWzjcHUKJ9CR1zoPZ4Hmd9rsnyeHx58q" ], "script": "base64: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", "chainId": 84, "height": 666893, "spentComplexity": 0 } View: original | compacted Prev: 4j8FQcv5Vib3a7s3y8M1L3pjMA85ULsFqCtSCfCbspnS Next: 8z9ntPpH32zATzu2Z5zobFBvJKhJ2Dh2jycwRSAUDaKV 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
5454 func win (gameId,winTicket,winnerAddressStr) = {
5555 let winAmt = getIntegerValue(BetServer, (((gameId + "_") + winnerAddressStr) + "_IfWinsGet"))
5656 let winTX = [ScriptTransfer(addressFromStringValue(winnerAddressStr), winAmt, unit)]
5757 let gameResult = [DataEntry((gameId + "_result"), toString(winTicket)), DataEntry((gameId + "_winner"), winnerAddressStr), DataEntry((gameId + "_winAmt"), winAmt)]
5858 ScriptResult(WriteSet(gameResult), TransferSet(winTX))
5959 }
6060
6161
6262 @Callable(i)
6363 func generateResult (gameId,rsaSignCrypted) = {
6464 let currentGame = getStringValue(BetServer, CURRENTGAME)
6565 if ((currentGame == gameId))
6666 then {
6767 let rsaSign = fromBase58String(rsaSignCrypted)
6868 let winTicket = GenerateRandInt(gameId, rsaSign)
6969 let players = getStringValue(BetServer, (gameId + "_players"))
7070 let playersList = split(players, "_")
7171 if (isWinner(getStringValue(BetServer, (((gameId + "_") + playersList[0]) + "_tickets")), winTicket))
7272 then win(gameId, winTicket, playersList[0])
7373 else if (isWinner(getStringValue(BetServer, (((gameId + "_") + playersList[1]) + "_tickets")), winTicket))
7474 then win(gameId, winTicket, playersList[1])
7575 else if (isWinner(getStringValue(BetServer, (((gameId + "_") + playersList[2]) + "_tickets")), winTicket))
7676 then win(gameId, winTicket, playersList[2])
7777 else if (isWinner(getStringValue(BetServer, (((gameId + "_") + playersList[3]) + "_tickets")), winTicket))
7878 then win(gameId, winTicket, playersList[3])
7979 else if (isWinner(getStringValue(BetServer, (((gameId + "_") + playersList[4]) + "_tickets")), winTicket))
8080 then win(gameId, winTicket, playersList[4])
8181 else throw("Error")
8282 }
8383 else throw(((("Current Game is " + currentGame) + ", but not ") + gameId))
8484 }
8585
8686

github/deemru/w8io/873ac7e 
27.42 ms