tx · 4BWx5YweBxsTU7F51Yi5QLsLJ1MzfotiJhRUojKX3yzY

3N2Z6EjzrzaCpD8ypDYLWDKe2PPVU8y9dJs:  -0.01400000 Waves

2019.09.02 17:32 [658453] smart account 3N2Z6EjzrzaCpD8ypDYLWDKe2PPVU8y9dJs > SELF 0.00000000 Waves

{ "type": 13, "id": "4BWx5YweBxsTU7F51Yi5QLsLJ1MzfotiJhRUojKX3yzY", "fee": 1400000, "feeAssetId": null, "timestamp": 1567434671784, "version": 1, "sender": "3N2Z6EjzrzaCpD8ypDYLWDKe2PPVU8y9dJs", "senderPublicKey": "HSTmdhPrJF81ozDBaqVn8QVtV76oD7gzDfcHPQRdxdwW", "proofs": [ "2Rz9ym5JoNDUhYW1EHDzoHxCGiy9wTN2JwF5ke6RfTX3qyuaHAWvSVB9rcgijGTN8virqdarJf4o6aB3Hvzirhdp" ], "script": "base64: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", "chainId": 84, "height": 658453, "spentComplexity": 0 } View: original | compacted Prev: ACyzfJ9LZXRCTs4SxppprFe2xKuLFqthP2moUCJanFik Next: DHUxNBPJ575cWen318CiHp5hibxXjjgzd8WmqpKV9QM1 Diff:
OldNewDifferences
11 {-# STDLIB_VERSION 3 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4-let ServerPublicKey = fromBase58String("4VAAsVuuSJAB5XammAXe6G98tYKJYvGheyvpKG8NJWn1")
4+let ServerPublicKey = fromBase58String("7im9caiCmE4SL6jTm4KTicHH4bGPf5v59rnfUA3cCRDj")
55
66 let WAVELET = ((100 * 1000) * 1000)
77
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 3 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4-let ServerPublicKey = fromBase58String("4VAAsVuuSJAB5XammAXe6G98tYKJYvGheyvpKG8NJWn1")
4+let ServerPublicKey = fromBase58String("7im9caiCmE4SL6jTm4KTicHH4bGPf5v59rnfUA3cCRDj")
55
66 let WAVELET = ((100 * 1000) * 1000)
77
88 let COMMISSION = ((5 * WAVELET) / 1000)
99
1010 let TicketsRate = 100
1111
1212 func GenerateRandInt (gameId,rsaSign,lastTicket) = {
1313 let rsaSigValid = sigVerify(toBytes(gameId), rsaSign, ServerPublicKey)
1414 if (rsaSigValid)
1515 then {
1616 let rand = (toInt(sha256(rsaSign)) % lastTicket)
1717 if ((0 > rand))
1818 then ((-1 * rand) + 1)
1919 else (rand + 1)
2020 }
2121 else throw("Invalid RSA signature")
2222 }
2323
2424
2525 func getPlayers (gameId) = {
2626 let rawDataStr = match getString(this, gameId) {
2727 case str: String =>
2828 str
2929 case _ =>
3030 throw(("Couldn't find game by " + gameId))
3131 }
3232 split(rawDataStr, "_")
3333 }
3434
3535
3636 func getPlayersTickets (gameId,Player) = {
3737 let playerTicketsStr = match getString(this, ((gameId + "_") + Player)) {
3838 case str: String =>
3939 str
4040 case _ =>
4141 throw(("Couldn't find game by " + gameId))
4242 }
4343 split(playerTicketsStr, " ")
4444 }
4545
4646
4747 @Callable(i)
4848 func bet () = {
4949 let gameId = toBase58String(i.transactionId)
5050 let pmt = extract(i.payment)
5151 let betNotInWaves = isDefined(pmt.assetId)
5252 let feeNotInWaves = isDefined(pmt.assetId)
5353 let playerPubKey58 = toBase58String(i.callerPublicKey)
5454 let playerAddress = addressFromPublicKey(fromBase58String(playerPubKey58))
5555 if (betNotInWaves)
5656 then throw("Bet amount must be in Waves")
5757 else if (feeNotInWaves)
5858 then throw("Transaction's fee must be in Waves")
5959 else {
6060 let gameDataStr = toString(playerAddress)
6161 let betData = [DataEntry(gameId, gameDataStr)]
6262 WriteSet(betData)
6363 }
6464 }
6565
6666
6767
6868 @Callable(i)
6969 func generateResult (gameId,rsaSignCrypted,lastTicket,winAmt) = {
7070 let rsaSign = fromBase58String(rsaSignCrypted)
7171 let randTicket = GenerateRandInt(gameId, rsaSign, lastTicket)
7272 let playersList = getPlayers(gameId)
7373 let player1Tickets = getPlayersTickets(gameId, playersList[0])
7474 let player1TicketFirst = parseIntValue(player1Tickets[0])
7575 let player1TicketLast = parseIntValue(player1Tickets[1])
7676 if (if ((randTicket >= player1TicketFirst))
7777 then (player1TicketLast >= randTicket)
7878 else false)
7979 then TransferSet([ScriptTransfer(addressFromStringValue(playersList[0]), winAmt, unit)])
8080 else throw("Player1 not the Winner")
8181 }
8282
8383
8484 @Verifier(tx)
8585 func verify () = if (sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey))
8686 then match tx {
8787 case ttx: TransferTransaction =>
8888 true
8989 case stx: SetScriptTransaction =>
9090 true
9191 case _ =>
9292 false
9393 }
9494 else false
9595

github/deemru/w8io/169f3d6 
38.00 ms