tx · 8F5kUFrVGtKgGdhdpMSKHexGmzregZB4M1dGryDZjv1M

3N6yFJ5Z8NUUQvfGGMLp5efmevRRtTgQuun:  -0.01400000 Waves

2019.09.08 12:20 [666909] smart account 3N6yFJ5Z8NUUQvfGGMLp5efmevRRtTgQuun > SELF 0.00000000 Waves

{ "type": 13, "id": "8F5kUFrVGtKgGdhdpMSKHexGmzregZB4M1dGryDZjv1M", "fee": 1400000, "feeAssetId": null, "timestamp": 1567934489355, "version": 1, "sender": "3N6yFJ5Z8NUUQvfGGMLp5efmevRRtTgQuun", "senderPublicKey": "7uRSDXQUkUS7719CDA4wXghhzsWrF22gb18FGDPZyA6P", "proofs": [ "2yUZjzuqHsLBDjTRJQTC87C4DKs7FFNYirYzJM6PQbbwSow5CSgF7A6Pdhfi2n14Srs92nPaKpH8GcV7yLVx7uW9" ], "script": "base64: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b21QdWJsaWNLZXkAAAABCQACWQAAAAEFAAAADnBsYXllclB1YktleTU4AwUAAAANYmV0Tm90SW5XYXZlcwkAAAIAAAABAgAAABtCZXQgYW1vdW50IG11c3QgYmUgaW4gV2F2ZXMDBQAAAA1mZWVOb3RJbldhdmVzCQAAAgAAAAECAAAAIlRyYW5zYWN0aW9uJ3MgZmVlIG11c3QgYmUgaW4gV2F2ZXMEAAAAEHBsYXllckFkZHJlc3NTdHIJAAQlAAAAAQUAAAANcGxheWVyQWRkcmVzcwQAAAAObmV3QmFua0JhbGFuY2UJAQAAAA5nZXRCYW5rQmFsYW5jZQAAAAIFAAAABmdhbWVJZAUAAAAKcGF5bWVudEFtdAQAAAAVbmV3VG90YWxQbGF5ZXJCZXRzQW10CQEAAAAVZ2V0VG90YWxQbGF5ZXJCZXRzQW10AAAAAwUAAAAGZ2FtZUlkBQAAABBwbGF5ZXJBZGRyZXNzU3RyBQAAAApwYXltZW50QW10BAAAAAxwbGF5ZXJXaW5BbXQJAQAAAA9nZXRQbGF5ZXJXaW5BbXQAAAACBQAAAA5uZXdCYW5rQmFsYW5jZQUAAAAVbmV3VG90YWxQbGF5ZXJCZXRzQW10BAAAAAdiZXREYXRhCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACBQAAAAtDVVJSRU5UR0FNRQUAAAAGZ2FtZUlkCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACBQAAAA9HQU1FU0NPVU5URVJLRVkFAAAAB2dhbWVOdW0JAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIFAAAABmdhbWVJZAIAAAABXwUAAAAQcGxheWVyQWRkcmVzc1N0cgIAAAAIX3RpY2tldHMJAQAAAApnZXRUaWNrZXRzAAAAAwUAAAAGZ2FtZUlkBQAAABBwbGF5ZXJBZGRyZXNzU3RyBQAAAApwYXltZW50QW10CQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACBQAAAAZnYW1lSWQCAAAAAV8FAAAAEHBsYXllckFkZHJlc3NTdHICAAAACl9iZXRzQ291bnQJAABkAAAAAgkBAAAAEmdldFBsYXllckJldHNDb3VudAAAAAIFAAAABmdhbWVJZAUAAAAQcGxheWVyQWRkcmVzc1N0cgAAAAAAAAAAAQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgUAAAAGZ2FtZUlkAgAAAAFfBQAAABBwbGF5ZXJBZGRyZXNzU3RyAgAAAApfSWZXaW5zR2V0BQAAAAxwbGF5ZXJXaW5BbXQJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIFAAAABmdhbWVJZAIAAAABXwUAAAAQcGxheWVyQWRkcmVzc1N0cgIAAAANX3RvdGFsQmV0c0FtdAUAAAAVbmV3VG90YWxQbGF5ZXJCZXRzQW10CQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQABLAAAAAIFAAAABmdhbWVJZAIAAAAIX3BsYXllcnMJAQAAAA5nZXRQbGF5ZXJzTGlzdAAAAAIFAAAABmdhbWVJZAUAAAAQcGxheWVyQWRkcmVzc1N0cgkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgUAAAAKTEFTVFRJQ0tFVAkBAAAADWdldExhc3RUaWNrZXQAAAABBQAAAApwYXltZW50QW10CQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgUAAAAGZ2FtZUlkAgAAAAFfBQAAAARCQU5LBQAAAA5uZXdCYW5rQmFsYW5jZQUAAAADbmlsBAAAAAt0b1dpblNlcnZlcgkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADBQAAAAlXaW5TZXJ2ZXIFAAAACnBheW1lbnRBbXQFAAAABHVuaXQFAAAAA25pbAkBAAAADFNjcmlwdFJlc3VsdAAAAAIJAQAAAAhXcml0ZVNldAAAAAEFAAAAB2JldERhdGEJAQAAAAtUcmFuc2ZlclNldAAAAAEFAAAAC3RvV2luU2VydmVyAAAAAMI0pN0=", "chainId": 84, "height": 666909, "spentComplexity": 0 } View: original | compacted Prev: BF1z96Yeah1dGQ7ygP7YgAaMzo6iso7wnErSrEgsLByF Next: Ey5a6bFhmv79hBDcz1BFTL4uXqHGNuGc3FP8fG4Enm25 Diff:
OldNewDifferences
121121 }
122122
123123
124+func getPlayerWinAmt (newBankBalance,newTotalPlayerBetsAmt) = if ((newBankBalance == newTotalPlayerBetsAmt))
125+ then 0
126+ else (((newBankBalance - newTotalPlayerBetsAmt) * 90) / 100)
127+
128+
124129 func getTotalPlayerBetsAmt (gameId,playerAddressStr,paymentAmt) = {
125130 let totalPlayerBets = match getInteger(this, (((gameId + "_") + playerAddressStr) + "_totalBetsAmt")) {
126131 case num: Int =>
162167 let playerAddressStr = toString(playerAddress)
163168 let newBankBalance = getBankBalance(gameId, paymentAmt)
164169 let newTotalPlayerBetsAmt = getTotalPlayerBetsAmt(gameId, playerAddressStr, paymentAmt)
165- let playerWinAmt = ((newTotalPlayerBetsAmt * 90) / 100)
170+ let playerWinAmt = getPlayerWinAmt(newBankBalance, newTotalPlayerBetsAmt)
166171 let betData = [DataEntry(CURRENTGAME, gameId), DataEntry(GAMESCOUNTERKEY, gameNum), DataEntry((((gameId + "_") + playerAddressStr) + "_tickets"), getTickets(gameId, playerAddressStr, paymentAmt)), DataEntry((((gameId + "_") + playerAddressStr) + "_betsCount"), (getPlayerBetsCount(gameId, playerAddressStr) + 1)), DataEntry((((gameId + "_") + playerAddressStr) + "_IfWinsGet"), playerWinAmt), DataEntry((((gameId + "_") + playerAddressStr) + "_totalBetsAmt"), newTotalPlayerBetsAmt), DataEntry((gameId + "_players"), getPlayersList(gameId, playerAddressStr)), DataEntry(LASTTICKET, getLastTicket(paymentAmt)), DataEntry(((gameId + "_") + BANK), newBankBalance)]
167172 let toWinServer = [ScriptTransfer(WinServer, paymentAmt, unit)]
168173 ScriptResult(WriteSet(betData), TransferSet(toWinServer))
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 let BANK = "$GAME_BANK"
1919
2020 func getPlayersList (gameId,currentPlayer) = {
2121 let playersPresented = isDefined(getString(this, (gameId + "_players")))
2222 if (!(playersPresented))
2323 then currentPlayer
2424 else if (isDefined(getString(this, (((gameId + "_") + currentPlayer) + "_tickets"))))
2525 then getStringValue(this, (gameId + "_players"))
2626 else ((getStringValue(this, (gameId + "_players")) + "_") + currentPlayer)
2727 }
2828
2929
3030 func getOrCreateLastTicket () = {
3131 let isLastTicketPresented = isDefined(getInteger(this, LASTTICKET))
3232 if (!(isLastTicketPresented))
3333 then 0
3434 else getIntegerValue(this, LASTTICKET)
3535 }
3636
3737
3838 func getPlayerBetsCount (gameId,playerAddressStr) = {
3939 let betsCount = match getInteger(this, (((gameId + "_") + playerAddressStr) + "_betsCount")) {
4040 case num: Int =>
4141 num
4242 case _ =>
4343 0
4444 }
4545 betsCount
4646 }
4747
4848
4949 func getTickets (gameId,playerAddressStr,paymentAmt) = {
5050 let lastTicket = getOrCreateLastTicket()
5151 let wavesPayment = (paymentAmt / WAVELET)
5252 let firstNewTicket = (lastTicket + 1)
5353 let lastNewTicket = ((firstNewTicket + (wavesPayment * TicketsPerWave)) - 1)
5454 let firstNewTicketStr = toString(firstNewTicket)
5555 let lastNewTicketStr = toString(lastNewTicket)
5656 let ticketsStr = isDefined(getString(this, (((gameId + "_") + playerAddressStr) + "_tickets")))
5757 if (ticketsStr)
5858 then {
5959 let currentTickets = getStringValue(this, (((gameId + "_") + playerAddressStr) + "_tickets"))
6060 let currentPlayerBetNum = getPlayerBetsCount(gameId, playerAddressStr)
6161 let CTL = split(currentTickets, "_")
6262 if ((currentPlayerBetNum == 1))
6363 then (((((((CTL[0] + "_") + CTL[1]) + "_") + firstNewTicketStr) + "_") + lastNewTicketStr) + "_0_0_0_0")
6464 else if ((currentPlayerBetNum == 2))
6565 then ((((((((((CTL[0] + "_") + CTL[1]) + "_") + CTL[2]) + "_") + CTL[3]) + firstNewTicketStr) + "_") + lastNewTicketStr) + "_0_0")
6666 else if ((currentPlayerBetNum == 3))
6767 then ((((((((((((CTL[0] + "_") + CTL[1]) + "_") + CTL[2]) + "_") + CTL[3]) + CTL[4]) + "_") + CTL[5]) + firstNewTicketStr) + "_") + lastNewTicketStr)
6868 else throw("Error, bid limit exceeded")
6969 }
7070 else (((firstNewTicketStr + "_") + lastNewTicketStr) + "_0_0_0_0_0_0")
7171 }
7272
7373
7474 func getLastTicket (paymentAmt) = {
7575 let lastTicket = getOrCreateLastTicket()
7676 let wavesPayment = (paymentAmt / WAVELET)
7777 (lastTicket + (wavesPayment * TicketsPerWave))
7878 }
7979
8080
8181 func IncrementGameNum (gameId,txId) = {
8282 let gameNum = match getInteger(this, GAMESCOUNTERKEY) {
8383 case num: Int =>
8484 num
8585 case _ =>
8686 0
8787 }
8888 if ((gameId == txId))
8989 then (gameNum + 1)
9090 else gameNum
9191 }
9292
9393
9494 func getOrCreateCurrentGame (txId) = {
9595 let isCurrentGamePresented = isDefined(getString(this, CURRENTGAME))
9696 if (!(isCurrentGamePresented))
9797 then txId
9898 else if ((getStringValue(this, CURRENTGAME) == ""))
9999 then txId
100100 else getStringValue(this, CURRENTGAME)
101101 }
102102
103103
104104 func getCurrentGame (txId) = {
105105 let gameId = getOrCreateCurrentGame(txId)
106106 let gameAlreadyPlayed = isDefined(getString(this, (gameId + "_result")))
107107 if (gameAlreadyPlayed)
108108 then txId
109109 else gameId
110110 }
111111
112112
113113 func getBankBalance (gameId,paymentAmt) = {
114114 let bankBalance = match getInteger(this, ((gameId + "_") + BANK)) {
115115 case num: Int =>
116116 num
117117 case _ =>
118118 0
119119 }
120120 (bankBalance + paymentAmt)
121121 }
122122
123123
124+func getPlayerWinAmt (newBankBalance,newTotalPlayerBetsAmt) = if ((newBankBalance == newTotalPlayerBetsAmt))
125+ then 0
126+ else (((newBankBalance - newTotalPlayerBetsAmt) * 90) / 100)
127+
128+
124129 func getTotalPlayerBetsAmt (gameId,playerAddressStr,paymentAmt) = {
125130 let totalPlayerBets = match getInteger(this, (((gameId + "_") + playerAddressStr) + "_totalBetsAmt")) {
126131 case num: Int =>
127132 num
128133 case _ =>
129134 0
130135 }
131136 (totalPlayerBets + paymentAmt)
132137 }
133138
134139
135140 @Callable(i)
136141 func resetGameData (gameId) = {
137142 let playerPubKey58 = toBase58String(i.callerPublicKey)
138143 let playerAddress = addressFromPublicKey(fromBase58String(playerPubKey58))
139144 let playerAddressStr = toString(playerAddress)
140145 let zeroData = [DataEntry(CURRENTGAME, ""), DataEntry(GAMESCOUNTERKEY, 0), DataEntry((((gameId + "_") + playerAddressStr) + "_tickets"), ""), DataEntry((((gameId + "_") + playerAddressStr) + "_betsCount"), 0), DataEntry((((gameId + "_") + playerAddressStr) + "_IfWinsGet"), 0), DataEntry((((gameId + "_") + playerAddressStr) + "_totalBetsAmt"), 0), DataEntry(((gameId + "_") + BANK), 0), DataEntry((gameId + "_players"), ""), DataEntry(LASTTICKET, 0)]
141146 WriteSet(zeroData)
142147 }
143148
144149
145150
146151 @Callable(i)
147152 func bet () = {
148153 let txId = toBase58String(i.transactionId)
149154 let gameId = getCurrentGame(txId)
150155 let gameNum = IncrementGameNum(gameId, txId)
151156 let pmt = extract(i.payment)
152157 let paymentAmt = pmt.amount
153158 let betNotInWaves = isDefined(pmt.assetId)
154159 let feeNotInWaves = isDefined(pmt.assetId)
155160 let playerPubKey58 = toBase58String(i.callerPublicKey)
156161 let playerAddress = addressFromPublicKey(fromBase58String(playerPubKey58))
157162 if (betNotInWaves)
158163 then throw("Bet amount must be in Waves")
159164 else if (feeNotInWaves)
160165 then throw("Transaction's fee must be in Waves")
161166 else {
162167 let playerAddressStr = toString(playerAddress)
163168 let newBankBalance = getBankBalance(gameId, paymentAmt)
164169 let newTotalPlayerBetsAmt = getTotalPlayerBetsAmt(gameId, playerAddressStr, paymentAmt)
165- let playerWinAmt = ((newTotalPlayerBetsAmt * 90) / 100)
170+ let playerWinAmt = getPlayerWinAmt(newBankBalance, newTotalPlayerBetsAmt)
166171 let betData = [DataEntry(CURRENTGAME, gameId), DataEntry(GAMESCOUNTERKEY, gameNum), DataEntry((((gameId + "_") + playerAddressStr) + "_tickets"), getTickets(gameId, playerAddressStr, paymentAmt)), DataEntry((((gameId + "_") + playerAddressStr) + "_betsCount"), (getPlayerBetsCount(gameId, playerAddressStr) + 1)), DataEntry((((gameId + "_") + playerAddressStr) + "_IfWinsGet"), playerWinAmt), DataEntry((((gameId + "_") + playerAddressStr) + "_totalBetsAmt"), newTotalPlayerBetsAmt), DataEntry((gameId + "_players"), getPlayersList(gameId, playerAddressStr)), DataEntry(LASTTICKET, getLastTicket(paymentAmt)), DataEntry(((gameId + "_") + BANK), newBankBalance)]
167172 let toWinServer = [ScriptTransfer(WinServer, paymentAmt, unit)]
168173 ScriptResult(WriteSet(betData), TransferSet(toWinServer))
169174 }
170175 }
171176
172177

github/deemru/w8io/169f3d6 
50.46 ms