tx · jHc41pMeYhYK4HCG9KxPcDyrTbCqJahQevxhC5rrNsg

3N2Z6EjzrzaCpD8ypDYLWDKe2PPVU8y9dJs:  -0.01400000 Waves

2019.09.08 07:18 [666619] smart account 3N2Z6EjzrzaCpD8ypDYLWDKe2PPVU8y9dJs > SELF 0.00000000 Waves

{ "type": 13, "id": "jHc41pMeYhYK4HCG9KxPcDyrTbCqJahQevxhC5rrNsg", "fee": 1400000, "feeAssetId": null, "timestamp": 1567916299293, "version": 1, "sender": "3N2Z6EjzrzaCpD8ypDYLWDKe2PPVU8y9dJs", "senderPublicKey": "HSTmdhPrJF81ozDBaqVn8QVtV76oD7gzDfcHPQRdxdwW", "proofs": [ "2xyBEeVNZTvRdrLUhoSf7aou7tmA6UFm4tqVb9w5xC1r1LU8rMZTu15fxpsuYHecY5sTuT6SJr7SGnt6ti7Hqjmk" ], "script": "base64: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AAAAAgUAAAAGZ2FtZUlkAgAAAAFfBQAAABBwbGF5ZXJBZGRyZXNzU3RyAgAAAAhfdGlja2V0cwkBAAAACmdldFRpY2tldHMAAAADBQAAAAZnYW1lSWQFAAAAEHBsYXllckFkZHJlc3NTdHIFAAAACnBheW1lbnRBbXQJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAAEsAAAAAgUAAAAGZ2FtZUlkAgAAAAhfcGxheWVycwkBAAAADmdldFBsYXllcnNMaXN0AAAAAgUAAAAGZ2FtZUlkBQAAABBwbGF5ZXJBZGRyZXNzU3RyCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACBQAAAApMQVNUVElDS0VUCQEAAAANZ2V0TGFzdFRpY2tldAAAAAEFAAAACnBheW1lbnRBbXQFAAAAA25pbAQAAAALdG9XaW5TZXJ2ZXIJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwUAAAAJV2luU2VydmVyBQAAAApwYXltZW50QW10BQAAAAR1bml0BQAAAANuaWwJAQAAAAxTY3JpcHRSZXN1bHQAAAACCQEAAAAIV3JpdGVTZXQAAAABBQAAAAdiZXREYXRhCQEAAAALVHJhbnNmZXJTZXQAAAABBQAAAAt0b1dpblNlcnZlcgAAAACvT5MX", "chainId": 84, "height": 666619, "spentComplexity": 0 } View: original | compacted Prev: Fqan4pQadVAqBL4NajBhjfFenHHs5Ecu3C6BozbEjSJV Next: none Diff:
OldNewDifferences
3838
3939
4040 func getOrCreateLastTicket () = {
41- let isLastTicketPresented = isDefined(getString(this, LASTTICKET))
41+ let isLastTicketPresented = isDefined(getInteger(this, LASTTICKET))
4242 if (!(isLastTicketPresented))
4343 then 0
4444 else getIntegerValue(this, LASTTICKET)
7676 0
7777 }
7878 if ((gameId == txId))
79- then toString((gameNum + 1))
80- else toString(gameNum)
79+ then (gameNum + 1)
80+ else gameNum
8181 }
8282
8383
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 3 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let WinServer = addressFromStringValue("3N9XnyPpWxYohKH7z5dEuq8rpnobpyzPrzE")
55
66 let WAVELET = ((100 * 1000) * 1000)
77
88 let COMMISSION = ((5 * WAVELET) / 1000)
99
1010 let TicketsPerWave = 100
1111
1212 let CURRENTGAME = "$CURRENT_GAME"
1313
1414 let GAMESCOUNTERKEY = "$GAME_NUM"
1515
1616 let LASTTICKET = "$LAST_TICKET"
1717
1818 func getPlayersList (gameId,currentPlayer) = {
1919 let playersPresented = isDefined(getString(this, (gameId + "_players")))
2020 if (!(playersPresented))
2121 then currentPlayer
2222 else if (isDefined(getString(this, (((gameId + "_") + currentPlayer) + "_tickets"))))
2323 then getStringValue(this, (gameId + "_players"))
2424 else ((getStringValue(this, (gameId + "_players")) + "_") + currentPlayer)
2525 }
2626
2727
2828 func FormatGameDataParam (p) = {
2929 let s = size(p)
3030 if ((s == 0))
3131 then throw("Parameter size must be greater then 0")
3232 else if ((s > 99))
3333 then throw("Parameter size must be less then 100")
3434 else if ((10 > s))
3535 then (("0" + toString(s)) + p)
3636 else (toString(s) + p)
3737 }
3838
3939
4040 func getOrCreateLastTicket () = {
41- let isLastTicketPresented = isDefined(getString(this, LASTTICKET))
41+ let isLastTicketPresented = isDefined(getInteger(this, LASTTICKET))
4242 if (!(isLastTicketPresented))
4343 then 0
4444 else getIntegerValue(this, LASTTICKET)
4545 }
4646
4747
4848 func getTickets (gameId,playerAddressStr,paymentAmt) = {
4949 let lastTicket = getOrCreateLastTicket()
5050 let wavesPayment = (paymentAmt / WAVELET)
5151 let firstNewTicket = (lastTicket + 1)
5252 let lastNewTicket = ((firstNewTicket + (wavesPayment * TicketsPerWave)) - 1)
5353 let newTickets = ((FormatGameDataParam(toString(firstNewTicket)) + "_") + FormatGameDataParam(toString(lastNewTicket)))
5454 let ticketsStr = isDefined(getString(this, (((gameId + "_") + playerAddressStr) + "_tickets")))
5555 if (ticketsStr)
5656 then {
5757 let currentTickets = getStringValue(this, (((gameId + "_") + playerAddressStr) + "_tickets"))
5858 ((currentTickets + " ") + newTickets)
5959 }
6060 else newTickets
6161 }
6262
6363
6464 func getLastTicket (paymentAmt) = {
6565 let lastTicket = getOrCreateLastTicket()
6666 let wavesPayment = (paymentAmt / WAVELET)
6767 (lastTicket + (wavesPayment * TicketsPerWave))
6868 }
6969
7070
7171 func IncrementGameNum (gameId,txId) = {
7272 let gameNum = match getInteger(this, GAMESCOUNTERKEY) {
7373 case num: Int =>
7474 num
7575 case _ =>
7676 0
7777 }
7878 if ((gameId == txId))
79- then toString((gameNum + 1))
80- else toString(gameNum)
79+ then (gameNum + 1)
80+ else gameNum
8181 }
8282
8383
8484 func getOrCreateCurrentGame (txId) = {
8585 let isCurrentGamePresented = isDefined(getString(this, CURRENTGAME))
8686 if (!(isCurrentGamePresented))
8787 then txId
8888 else if ((getStringValue(this, CURRENTGAME) == ""))
8989 then txId
9090 else getStringValue(this, CURRENTGAME)
9191 }
9292
9393
9494 func getCurrentGame (txId) = {
9595 let gameId = getOrCreateCurrentGame(txId)
9696 let gameAlreadyPlayed = isDefined(getString(this, (gameId + "_result")))
9797 if (gameAlreadyPlayed)
9898 then txId
9999 else gameId
100100 }
101101
102102
103103 @Callable(i)
104104 func resetGameData (gameId) = {
105105 let playerPubKey58 = toBase58String(i.callerPublicKey)
106106 let playerAddress = addressFromPublicKey(fromBase58String(playerPubKey58))
107107 let playerAddressStr = toString(playerAddress)
108108 let zeroData = [DataEntry(CURRENTGAME, ""), DataEntry(GAMESCOUNTERKEY, 0), DataEntry((((gameId + "_") + playerAddressStr) + "_tickets"), ""), DataEntry((gameId + "_players"), ""), DataEntry(LASTTICKET, 0)]
109109 WriteSet(zeroData)
110110 }
111111
112112
113113
114114 @Callable(i)
115115 func bet () = {
116116 let txId = toBase58String(i.transactionId)
117117 let gameId = getCurrentGame(txId)
118118 let gameNum = IncrementGameNum(gameId, txId)
119119 let pmt = extract(i.payment)
120120 let paymentAmt = pmt.amount
121121 let betNotInWaves = isDefined(pmt.assetId)
122122 let feeNotInWaves = isDefined(pmt.assetId)
123123 let playerPubKey58 = toBase58String(i.callerPublicKey)
124124 let playerAddress = addressFromPublicKey(fromBase58String(playerPubKey58))
125125 if (betNotInWaves)
126126 then throw("Bet amount must be in Waves")
127127 else if (feeNotInWaves)
128128 then throw("Transaction's fee must be in Waves")
129129 else {
130130 let playerAddressStr = toString(playerAddress)
131131 let betData = [DataEntry(CURRENTGAME, gameId), DataEntry(GAMESCOUNTERKEY, gameNum), DataEntry((((gameId + "_") + playerAddressStr) + "_tickets"), getTickets(gameId, playerAddressStr, paymentAmt)), DataEntry((gameId + "_players"), getPlayersList(gameId, playerAddressStr)), DataEntry(LASTTICKET, getLastTicket(paymentAmt))]
132132 let toWinServer = [ScriptTransfer(WinServer, paymentAmt, unit)]
133133 ScriptResult(WriteSet(betData), TransferSet(toWinServer))
134134 }
135135 }
136136
137137

github/deemru/w8io/c3f4982 
26.19 ms