tx · 942HiodPA16FECR6g6LttxXovqdhobUs8A6eMdJbab8e

3N2Z6EjzrzaCpD8ypDYLWDKe2PPVU8y9dJs:  -0.01400000 Waves

2019.09.07 03:03 [664911] smart account 3N2Z6EjzrzaCpD8ypDYLWDKe2PPVU8y9dJs > SELF 0.00000000 Waves

{ "type": 13, "id": "942HiodPA16FECR6g6LttxXovqdhobUs8A6eMdJbab8e", "fee": 1400000, "feeAssetId": null, "timestamp": 1567814588973, "version": 1, "sender": "3N2Z6EjzrzaCpD8ypDYLWDKe2PPVU8y9dJs", "senderPublicKey": "HSTmdhPrJF81ozDBaqVn8QVtV76oD7gzDfcHPQRdxdwW", "proofs": [ "5yuAz55b6WfpDQx6QtkF2uY4e23eknAzPccbFLxzXvPVQm9hQ4zgCXqcsB2cka23fhwGtDYTrXpE3jrzsoAzkcjn" ], "script": "base64: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", "chainId": 84, "height": 664911, "spentComplexity": 0 } View: original | compacted Prev: 3xdgn5HftbjmQoJa5ao3AypK5rrSQmkZXK4BjLvajARm Next: 9pAnbzNCLGuURtfJX6wFQU47v6Pp24hYbU1EtHRbohjw Diff:
OldNewDifferences
3333 }
3434
3535
36-func IncrementGameNum () = {
37- let gameNum = match getInteger(this, GAMESCOUNTERKEY) {
38- case num: Int =>
39- num
40- case _ =>
41- 0
42- }
43- (gameNum + 1)
44- }
36+func IncrementGameNum (gameId,txId) = if ((gameId == txId))
37+ then {
38+ let gameNum = match getInteger(this, GAMESCOUNTERKEY) {
39+ case num: Int =>
40+ num
41+ case _ =>
42+ 0
43+ }
44+ toString((gameNum + 1))
45+ }
46+ else toString(getIntegerValue(this, GAMESCOUNTERKEY))
4547
4648
4749 func getCurrentGame (txId) = {
5759 func bet () = {
5860 let txId = toBase58String(i.transactionId)
5961 let gameId = getCurrentGame(txId)
62+ let gameNum = IncrementGameNum(gameId, txId)
6063 let pmt = extract(i.payment)
6164 let betNotInWaves = isDefined(pmt.assetId)
6265 let feeNotInWaves = isDefined(pmt.assetId)
6871 then throw("Transaction's fee must be in Waves")
6972 else {
7073 let playerAddressStr = toString(playerAddress)
71- let betData = [DataEntry(CURRENTGAME, gameId), DataEntry((((gameId + "_") + playerAddressStr) + "_tickets"), getTickets(pmt.amount)), DataEntry((gameId + "_players"), getPlayersList(gameId, playerAddressStr))]
74+ let betData = [DataEntry(CURRENTGAME, gameId), DataEntry(GAMESCOUNTERKEY, gameNum), DataEntry((((gameId + "_") + playerAddressStr) + "_tickets"), getTickets(pmt.amount)), DataEntry((gameId + "_players"), getPlayersList(gameId, playerAddressStr))]
7275 WriteSet(betData)
7376 }
7477 }
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 3 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let ServerBetPublicKey = fromBase58String("7im9caiCmE4SL6jTm4KTicHH4bGPf5v59rnfUA3cCRDj")
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(getStringValue(this, (gameId + "_players")))
2020 if (!(playersPresented))
2121 then currentPlayer
2222 else if (isDefined(getStringValue(this, (((gameId + "_") + currentPlayer) + "_tickets"))))
2323 then getStringValue(this, (gameId + "_players"))
2424 else ((getStringValue(this, (gameId + "_players")) + "_") + currentPlayer)
2525 }
2626
2727
2828 func getTickets (paymentAmt) = {
2929 let lastTicket = getIntegerValue(this, LASTTICKET)
3030 let wavesPayment = (paymentAmt / WAVELET)
3131 let tickets = "011_03100__03101_03300__010_010__010_010__010_010"
3232 tickets
3333 }
3434
3535
36-func IncrementGameNum () = {
37- let gameNum = match getInteger(this, GAMESCOUNTERKEY) {
38- case num: Int =>
39- num
40- case _ =>
41- 0
42- }
43- (gameNum + 1)
44- }
36+func IncrementGameNum (gameId,txId) = if ((gameId == txId))
37+ then {
38+ let gameNum = match getInteger(this, GAMESCOUNTERKEY) {
39+ case num: Int =>
40+ num
41+ case _ =>
42+ 0
43+ }
44+ toString((gameNum + 1))
45+ }
46+ else toString(getIntegerValue(this, GAMESCOUNTERKEY))
4547
4648
4749 func getCurrentGame (txId) = {
4850 let gameId = getStringValue(this, CURRENTGAME)
4951 let gameStillOpen = isDefined(getString(this, (gameId + "_result")))
5052 if (gameStillOpen)
5153 then gameId
5254 else txId
5355 }
5456
5557
5658 @Callable(i)
5759 func bet () = {
5860 let txId = toBase58String(i.transactionId)
5961 let gameId = getCurrentGame(txId)
62+ let gameNum = IncrementGameNum(gameId, txId)
6063 let pmt = extract(i.payment)
6164 let betNotInWaves = isDefined(pmt.assetId)
6265 let feeNotInWaves = isDefined(pmt.assetId)
6366 let playerPubKey58 = toBase58String(i.callerPublicKey)
6467 let playerAddress = addressFromPublicKey(fromBase58String(playerPubKey58))
6568 if (betNotInWaves)
6669 then throw("Bet amount must be in Waves")
6770 else if (feeNotInWaves)
6871 then throw("Transaction's fee must be in Waves")
6972 else {
7073 let playerAddressStr = toString(playerAddress)
71- let betData = [DataEntry(CURRENTGAME, gameId), DataEntry((((gameId + "_") + playerAddressStr) + "_tickets"), getTickets(pmt.amount)), DataEntry((gameId + "_players"), getPlayersList(gameId, playerAddressStr))]
74+ let betData = [DataEntry(CURRENTGAME, gameId), DataEntry(GAMESCOUNTERKEY, gameNum), DataEntry((((gameId + "_") + playerAddressStr) + "_tickets"), getTickets(pmt.amount)), DataEntry((gameId + "_players"), getPlayersList(gameId, playerAddressStr))]
7275 WriteSet(betData)
7376 }
7477 }
7578
7679

github/deemru/w8io/03bedc9 
50.39 ms