tx · JBR3Ab46RRb7MWoEStof8mBaJAqHDJVY17wDZYUkWCwK

3N2Z6EjzrzaCpD8ypDYLWDKe2PPVU8y9dJs:  -0.01400000 Waves

2019.09.07 04:55 [665025] smart account 3N2Z6EjzrzaCpD8ypDYLWDKe2PPVU8y9dJs > SELF 0.00000000 Waves

{ "type": 13, "id": "JBR3Ab46RRb7MWoEStof8mBaJAqHDJVY17wDZYUkWCwK", "fee": 1400000, "feeAssetId": null, "timestamp": 1567821353644, "version": 1, "sender": "3N2Z6EjzrzaCpD8ypDYLWDKe2PPVU8y9dJs", "senderPublicKey": "HSTmdhPrJF81ozDBaqVn8QVtV76oD7gzDfcHPQRdxdwW", "proofs": [ "4PrtLAECMExN5Zs37BMF7vUqghfrDNkod7bLGBtpEczw4MnLyZUsKpdAZswkhMoEvZUZRs5XVQKMHX5zVAhM6RQm" ], "script": "base64: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", "chainId": 84, "height": 665025, "spentComplexity": 0 } View: original | compacted Prev: 9pLz7eev4hTAbL6UederunZSrj6zHEg8pMaFjVMmHDXz Next: AVLttHkisLVeoL8fufv1bjmXiFcWnQyPL2ELJooyTAYg Full:
OldNewDifferences
11 {-# STDLIB_VERSION 3 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let WAVELET = ((100 * 1000) * 1000)
55
66 let COMMISSION = ((5 * WAVELET) / 1000)
77
88 let TicketsPerWave = 100
99
1010 let CURRENTGAME = "$CURRENT_GAME"
1111
1212 let GAMESCOUNTERKEY = "$GAME_NUM"
1313
1414 let LASTTICKET = "$LAST_TICKET"
1515
1616 func getPlayersList (gameId,currentPlayer) = {
1717 let playersPresented = isDefined(getString(this, (gameId + "_players")))
1818 if (!(playersPresented))
1919 then currentPlayer
2020 else if (isDefined(getString(this, (((gameId + "_") + currentPlayer) + "_tickets"))))
2121 then getStringValue(this, (gameId + "_players"))
2222 else ((getStringValue(this, (gameId + "_players")) + "_") + currentPlayer)
2323 }
2424
2525
2626 func FormatGameDataParam (p) = {
2727 let s = size(p)
2828 if ((s == 0))
2929 then throw("Parameter size must be greater then 0")
3030 else if ((s > 99))
3131 then throw("Parameter size must be less then 100")
3232 else if ((10 > s))
3333 then (("0" + toString(s)) + p)
3434 else (toString(s) + p)
3535 }
3636
3737
3838 func getTickets (gameId,playerAddressStr,paymentAmt) = {
3939 let lastTicket = getIntegerValue(this, LASTTICKET)
4040 let wavesPayment = (paymentAmt / WAVELET)
4141 let firstNewTicket = (lastTicket + 1)
4242 let lastNewTicket = (firstNewTicket + (wavesPayment * TicketsPerWave))
4343 let newTickets = ((FormatGameDataParam(toString(firstNewTicket)) + "_") + FormatGameDataParam(toString(lastNewTicket)))
4444 let ticketsStr = isDefined(getString(this, (((gameId + "_") + playerAddressStr) + "_tickets")))
4545 if (ticketsStr)
4646 then {
4747 let currentTickets = getStringValue(this, (((gameId + "_") + playerAddressStr) + "_tickets"))
4848 ((currentTickets + " ") + newTickets)
4949 }
5050 else newTickets
5151 }
5252
5353
5454 func IncrementGameNum (gameId,txId) = if ((gameId == txId))
5555 then {
5656 let gameNum = match getInteger(this, GAMESCOUNTERKEY) {
5757 case num: Int =>
5858 num
5959 case _ =>
6060 0
6161 }
6262 toString((gameNum + 1))
6363 }
6464 else toString(getIntegerValue(this, GAMESCOUNTERKEY))
6565
6666
6767 func getCurrentGame (txId) = {
6868 let gameId = getStringValue(this, CURRENTGAME)
6969 let gameStillOpen = isDefined(getString(this, (gameId + "_result")))
7070 if (gameStillOpen)
7171 then gameId
7272 else txId
7373 }
7474
7575
7676 @Callable(i)
7777 func bet () = {
7878 let txId = toBase58String(i.transactionId)
7979 let gameId = getCurrentGame(txId)
8080 let gameNum = IncrementGameNum(gameId, txId)
8181 let pmt = extract(i.payment)
8282 let betNotInWaves = isDefined(pmt.assetId)
8383 let feeNotInWaves = isDefined(pmt.assetId)
8484 let playerPubKey58 = toBase58String(i.callerPublicKey)
8585 let playerAddress = addressFromPublicKey(fromBase58String(playerPubKey58))
8686 if (betNotInWaves)
8787 then throw("Bet amount must be in Waves")
8888 else if (feeNotInWaves)
8989 then throw("Transaction's fee must be in Waves")
9090 else {
9191 let playerAddressStr = toString(playerAddress)
9292 let betData = [DataEntry(CURRENTGAME, gameId), DataEntry(GAMESCOUNTERKEY, gameNum), DataEntry((((gameId + "_") + playerAddressStr) + "_tickets"), getTickets(gameId, playerAddressStr, pmt.amount)), DataEntry((gameId + "_players"), getPlayersList(gameId, playerAddressStr))]
9393 WriteSet(betData)
9494 }
9595 }
9696
9797

github/deemru/w8io/026f985 
36.57 ms