tx · AVLttHkisLVeoL8fufv1bjmXiFcWnQyPL2ELJooyTAYg

3N2Z6EjzrzaCpD8ypDYLWDKe2PPVU8y9dJs:  -0.01400000 Waves

2019.09.07 15:09 [665630] smart account 3N2Z6EjzrzaCpD8ypDYLWDKe2PPVU8y9dJs > SELF 0.00000000 Waves

{ "type": 13, "id": "AVLttHkisLVeoL8fufv1bjmXiFcWnQyPL2ELJooyTAYg", "fee": 1400000, "feeAssetId": null, "timestamp": 1567858125173, "version": 1, "sender": "3N2Z6EjzrzaCpD8ypDYLWDKe2PPVU8y9dJs", "senderPublicKey": "HSTmdhPrJF81ozDBaqVn8QVtV76oD7gzDfcHPQRdxdwW", "proofs": [ "4U6SWJ8DHs5Hxmxu3kg9wXqmrEyGLFnhcdpfyXQ9PmtgSTpxmXYXXG2KsFaEfTpwbupPNe4NxPh8WHAVMFD6xQ9U" ], "script": "base64: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", "chainId": 84, "height": 665630, "spentComplexity": 0 } View: original | compacted Prev: JBR3Ab46RRb7MWoEStof8mBaJAqHDJVY17wDZYUkWCwK Next: DBoibHSauK7HCqAZCnJf4igFtEdWzinSrSt7FAjbkQ9 Diff:
OldNewDifferences
5151 }
5252
5353
54+func getLastTicket (paymentAmt) = {
55+ let lastTicket = getIntegerValue(this, LASTTICKET)
56+ let wavesPayment = (paymentAmt / WAVELET)
57+ (lastTicket + (wavesPayment * TicketsPerWave))
58+ }
59+
60+
5461 func IncrementGameNum (gameId,txId) = if ((gameId == txId))
5562 then {
5663 let gameNum = match getInteger(this, GAMESCOUNTERKEY) {
8996 then throw("Transaction's fee must be in Waves")
9097 else {
9198 let playerAddressStr = toString(playerAddress)
92- let betData = [DataEntry(CURRENTGAME, gameId), DataEntry(GAMESCOUNTERKEY, gameNum), DataEntry((((gameId + "_") + playerAddressStr) + "_tickets"), getTickets(gameId, playerAddressStr, pmt.amount)), DataEntry((gameId + "_players"), getPlayersList(gameId, playerAddressStr))]
99+ let betData = [DataEntry(CURRENTGAME, gameId), DataEntry(GAMESCOUNTERKEY, gameNum), DataEntry((((gameId + "_") + playerAddressStr) + "_tickets"), getTickets(gameId, playerAddressStr, pmt.amount)), DataEntry((gameId + "_players"), getPlayersList(gameId, playerAddressStr)), DataEntry(LASTTICKET, getLastTicket(pmt.amount))]
93100 WriteSet(betData)
94101 }
95102 }
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
54+func getLastTicket (paymentAmt) = {
55+ let lastTicket = getIntegerValue(this, LASTTICKET)
56+ let wavesPayment = (paymentAmt / WAVELET)
57+ (lastTicket + (wavesPayment * TicketsPerWave))
58+ }
59+
60+
5461 func IncrementGameNum (gameId,txId) = if ((gameId == txId))
5562 then {
5663 let gameNum = match getInteger(this, GAMESCOUNTERKEY) {
5764 case num: Int =>
5865 num
5966 case _ =>
6067 0
6168 }
6269 toString((gameNum + 1))
6370 }
6471 else toString(getIntegerValue(this, GAMESCOUNTERKEY))
6572
6673
6774 func getCurrentGame (txId) = {
6875 let gameId = getStringValue(this, CURRENTGAME)
6976 let gameStillOpen = isDefined(getString(this, (gameId + "_result")))
7077 if (gameStillOpen)
7178 then gameId
7279 else txId
7380 }
7481
7582
7683 @Callable(i)
7784 func bet () = {
7885 let txId = toBase58String(i.transactionId)
7986 let gameId = getCurrentGame(txId)
8087 let gameNum = IncrementGameNum(gameId, txId)
8188 let pmt = extract(i.payment)
8289 let betNotInWaves = isDefined(pmt.assetId)
8390 let feeNotInWaves = isDefined(pmt.assetId)
8491 let playerPubKey58 = toBase58String(i.callerPublicKey)
8592 let playerAddress = addressFromPublicKey(fromBase58String(playerPubKey58))
8693 if (betNotInWaves)
8794 then throw("Bet amount must be in Waves")
8895 else if (feeNotInWaves)
8996 then throw("Transaction's fee must be in Waves")
9097 else {
9198 let playerAddressStr = toString(playerAddress)
92- let betData = [DataEntry(CURRENTGAME, gameId), DataEntry(GAMESCOUNTERKEY, gameNum), DataEntry((((gameId + "_") + playerAddressStr) + "_tickets"), getTickets(gameId, playerAddressStr, pmt.amount)), DataEntry((gameId + "_players"), getPlayersList(gameId, playerAddressStr))]
99+ let betData = [DataEntry(CURRENTGAME, gameId), DataEntry(GAMESCOUNTERKEY, gameNum), DataEntry((((gameId + "_") + playerAddressStr) + "_tickets"), getTickets(gameId, playerAddressStr, pmt.amount)), DataEntry((gameId + "_players"), getPlayersList(gameId, playerAddressStr)), DataEntry(LASTTICKET, getLastTicket(pmt.amount))]
93100 WriteSet(betData)
94101 }
95102 }
96103
97104

github/deemru/w8io/03bedc9 
42.06 ms