tx · 8AVLbMD1iWfvpCvfSWzWiiM4esJu3Z7QbowqX2GJGvga

3N6hQF6HBBQ5JCKB8Xs17Q61wkG3VrLvbGd:  -0.10000000 Waves

2021.11.30 23:37 [1814441] smart account 3N6hQF6HBBQ5JCKB8Xs17Q61wkG3VrLvbGd > SELF 0.00000000 Waves

{ "type": 13, "id": "8AVLbMD1iWfvpCvfSWzWiiM4esJu3Z7QbowqX2GJGvga", "fee": 10000000, "feeAssetId": null, "timestamp": 1638315508640, "version": 2, "chainId": 84, "sender": "3N6hQF6HBBQ5JCKB8Xs17Q61wkG3VrLvbGd", "senderPublicKey": "7Hi4o6vBstRs79NMVMjEove52dmP87RAcvNDAXN8C4Wi", "proofs": [ "3wPf23UjJ7ENupRhzQY84axYVuu1m4wgPYuRYwKTcrR3p3RnWgbHgydDyNZNkEe5JCNduoWvWgX8DWtEEYF3bQLK" ], "script": "base64:AAIFAAAAAAAAA44IAhIDCgEIEgMKAQgaDAoCYTESBmNhc2lubxoLCgJhMhIFV0FWRVMaDAoCYTMSBm1heEJldBoPCgJhNBIJc2VwYXJhdG9yGhAKAmE1EgpnZXROZXdEZWNrGg0KAmE2EgdnZXREZWNrGgoKAmE3EgRkZWNrGhUKAmE4Eg9nZXRSYW5kb21OdW1iZXIaCwoCYTkSBXNhbHQxGgsKAmIxEgVzYWx0MhoSCgJiMhIMYW5zd2Vyc0NvdW50GgoKAmIzEgRoYXNoGgsKAmI0EgVpbmRleBoKCgJiNRIEcmFuZBodCgJiNhIXZ2V0UHJldmlvdXNSYW5kb21OdW1iZXIaDQoCYjcSB2FkZHJlc3MaDQoCYjgSByRtYXRjaDAaFQoCYjkSD2dldEFtb3VudE9yWmVybxoKCgJjMRIEdGhpcxoJCgJjMhIDa2V5GhAKAmMzEgpnZXRQYXltZW50GgkKAmM0EgNwbXQaEgoCYzUSDGdldENhcmRWYWx1ZRoQCgJjNhIKc3RyaW5nQ2FyZBoPCgJjNxIJZ2V0V2lubmVyGhAKAmM4EgpjYXJkUGxheWVyGhAKAmM5EgpjYXJkQ2FzaW5vGhMKAmQxEg1jYWxsZXJBZGRyZXNzGhYKAmQyEhBnZXRBdmFpbGFibGVEZWNrGhMKAmQzEg1hdmFpbGFibGVQcm9wGhAKAmQ0EgpzdHJpbmdEZWNrGiAKAmQ1EhpnZXRQbGF5ZXJDYXJkQW5kVXBkYXRlRGVjaxoLCgJkNhIFbWVLZXkaDQoCZDcSB2F2RGVjazIaEgoCZDgSDGNhcmRQb3NpdGlvbhoKCgJkORIEY2FyZBoNCgJlMRIHYXZEZWNrMxoLCgJlMhIFcm91bmQaEgoCZTMSDHJvdW5kQmV0c0tleRoQCgJlNBIKY3VyU3VtQmV0cxoSCgJlNRIMY3VycmVudERyYXdzGhMKAmU2Eg1jdXJyZW50UGxheWVyGhAKAmU3EgpuZXdTdW1CZXRzGgwKAmU4EgZhdkRlY2saGAoCZTkSEmNhcmRQb3NpdGlvblBsYXllchoNCgJmMRIHYXZEZWNrMRoYCgJmMhISY2FyZFBvc2l0aW9uQ2FzaW5vGgwKAmYzEgZ3aW5uZXIaEQoCZjQSC3dpdGhkcmF3S2V5GgwKAmY1EgZwbGF5ZXIaDwoCZjYSCWN1clN1bUJldBoMCgJmNxIGdmVyaWZ5AAAADgAAAAACYTECAAAAIzNNdGFDTDR2MWJqVGFiVXFzN29VNG9mUzhmYmFpMzRXTTFpAAAAAAJhMgAAAAAAO5rKAAAAAAACYTMJAABoAAAAAgAAAAAAAAAAZAUAAAACYTIAAAAAAmE0AgAAAAEsAQAAAAJhNQAAAAAJAARMAAAAAgIAAAADMDFDCQAETAAAAAICAAAAAzAyQwkABEwAAAACAgAAAAMwM0MJAARMAAAAAgIAAAADMDRDCQAETAAAAAICAAAAAzA1QwkABEwAAAACAgAAAAMwNkMJAARMAAAAAgIAAAADMDdDCQAETAAAAAICAAAAAzA4QwkABEwAAAACAgAAAAMwOUMJAARMAAAAAgIAAAADMTBDCQAETAAAAAICAAAAAzExQwkABEwAAAACAgAAAAMxMkMJAARMAAAAAgIAAAADMTNDCQAETAAAAAICAAAAAzAxRAkABEwAAAACAgAAAAMwMkQJAARMAAAAAgIAAAADMDNECQAETAAAAAICAAAAAzA0RAkABEwAAAACAgAAAAMwNUQJAARMAAAAAgIAAAADMDZECQAETAAAAAICAAAAAzA3RAkABEwAAAACAgAAAAMwOEQJAARMAAAAAgIAAAADMDlECQAETAAAAAICAAAAAzEwRAkABEwAAAACAgAAAAMxMUQJAARMAAAAAgIAAAADMTJECQAETAAAAAICAAAAAzEzRAkABEwAAAACAgAAAAMwMUgJAARMAAAAAgIAAAADMDJICQAETAAAAAICAAAAAzAzSAkABEwAAAACAgAAAAMwNEgJAARMAAAAAgIAAAADMDVICQAETAAAAAICAAAAAzA2SAkABEwAAAACAgAAAAMwN0gJAARMAAAAAgIAAAADMDhICQAETAAAAAICAAAAAzA5SAkABEwAAAACAgAAAAMxMEgJAARMAAAAAgIAAAADMTFICQAETAAAAAICAAAAAzEySAkABEwAAAACAgAAAAMxM0gJAARMAAAAAgIAAAADMDFTCQAETAAAAAICAAAAAzAyUwkABEwAAAACAgAAAAMwM1MJAARMAAAAAgIAAAADMDRTCQAETAAAAAICAAAAAzA1UwkABEwAAAACAgAAAAMwNlMJAARMAAAAAgIAAAADMDdTCQAETAAAAAICAAAAAzA4UwkABEwA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", "height": 1814441, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 6b9MVRo8n32nB7SRtyjPRuV2pYeMMwW5wGQBQSGnY1ta Next: nZ5dojutrrLe6L2pez8Te1wUBGVHN34gbTXkXX2ZZyq Diff:
OldNewDifferences
1212 func getNewDeck () = ["01C", "02C", "03C", "04C", "05C", "06C", "07C", "08C", "09C", "10C", "11C", "12C", "13C", "01D", "02D", "03D", "04D", "05D", "06D", "07D", "08D", "09D", "10D", "11D", "12D", "13D", "01H", "02H", "03H", "04H", "05H", "06H", "07H", "08H", "09H", "10H", "11H", "12H", "13H", "01S", "02S", "03S", "04S", "05S", "06S", "07S", "08S", "09S", "10S", "11S", "12S", "13S"]
1313
1414
15-func getSixNewDecks () = (((((getNewDeck() ++ getNewDeck()) ++ getNewDeck()) ++ getNewDeck()) ++ getNewDeck()) ++ getNewDeck())
16-
17-
1815 func getDeck (deck) = if ((0 >= size(deck)))
19- then getSixNewDecks()
16+ then getNewDeck()
2017 else deck
2118
2219
7976 let deck = split(stringDeck, separator)
8077 getDeck(deck)
8178 }
82- else getSixNewDecks()
79+ else getNewDeck()
8380
8481
85-func getPlayerCardAndPositionAndUpdateDeck (meKey,callerAddress,deck) = {
82+func getPlayerCardAndUpdateDeck (meKey,callerAddress,deck) = {
8683 let avDeck2 = getDeck(deck)
8784 let cardPosition = getRandomNumber(((meKey + makeString(avDeck2, separator)) + callerAddress), getPreviousRandomNumber(callerAddress), size(avDeck2))
8885 let card = avDeck2[(cardPosition % size(avDeck2))]
8986 let avDeck3 = removeByIndex(avDeck2, (cardPosition % size(avDeck2)))
90- $Tuple3(card, cardPosition, avDeck3)
87+ $Tuple2(card, avDeck3)
9188 }
9289
9390
9491 @Callable(i)
95-func bet1 (round) = {
92+func bet (round) = {
9693 let callerAddress = toBase58String(i.caller.bytes)
9794 let meKey = round
9895 let p = getPayment(i)
9996 let roundBetsKey = (round + "_sumBets")
100- let curSumBets = getAmountOrZero(c2, roundBetsKey)
101- let currentDraws = match getInteger(c2, (round + "_drawSequence")) {
97+ let curSumBets = getAmountOrZero(c1, roundBetsKey)
98+ let currentDraws = match getInteger(c1, (round + "_drawSequence")) {
10299 case a: Int =>
103100 (a + 1)
104101 case _ =>
105102 0
106103 }
107- let currentPlayer = match getString(c2, (round + "_player")) {
104+ let currentPlayer = match getString(c1, (round + "_player")) {
108105 case a: String =>
109106 a
110107 case _ =>
111108 unit
112109 }
113- let initialBet = match getInteger(c2, (round + "_initialBet")) {
114- case a: Int =>
115- a
116- case _ =>
117- p
118- }
119110 let availableProp = (meKey + "_available")
120111 let newSumBets = (curSumBets + p)
121- if (if (isDefined(getBoolean(c2, (round + "_stop"))))
112+ if (if (isDefined(getBoolean(c1, (round + "_stop"))))
122113 then true
123- else isDefined(getString(c2, round)))
114+ else isDefined(getString(c1, round)))
124115 then throw("This round is already played")
125- else if (if (isDefined(getString(c2, (round + "_player"))))
116+ else if (if (isDefined(getString(c1, (round + "_player"))))
126117 then (currentPlayer != callerAddress)
127118 else false)
128119 then throw("This is not your game")
129120 else if ((newSumBets > maxBet))
130121 then throw(((("Maximum amount of bets for round " + toString(maxBet)) + ". With your bet it's ") + toString(newSumBets)))
131- else if ((initialBet != p))
132- then throw(((("Initial bet not maching original:" + toString(initialBet)) + ", actual:") + toString(p)))
133- else {
134- let avDeck = getAvailableDeck(c2, availableProp)
135- let $t040084123 = getPlayerCardAndPositionAndUpdateDeck(meKey, callerAddress, avDeck)
136- let cardPlayer = $t040084123._1
137- let cardPositionPlayer = $t040084123._2
138- let avDeck1 = $t040084123._3
139- let $t041284244 = getPlayerCardAndPositionAndUpdateDeck(meKey, callerAddress, avDeck1)
140- let cardCasino = $t041284244._1
141- let cardPositionCasino = $t041284244._2
142- let avDeck2 = $t041284244._3
143- if ((getCardValue(cardPlayer) == getCardValue(cardCasino)))
144- then [StringEntry(availableProp, makeString(avDeck2, separator)), StringEntry((round + "_player"), callerAddress), IntegerEntry((round + "_initialBet"), initialBet), StringEntry((meKey + "_salt_debug"), meKey), IntegerEntry((meKey + "_LastRandonNumber"), cardPositionCasino), IntegerEntry((round + "_sumBets"), newSumBets), StringEntry((meKey + "_playerCard"), cardPlayer), StringEntry((meKey + "_casinoCard"), cardCasino), IntegerEntry((round + "_drawSequence"), (currentDraws + 1))]
145- else {
146- let winner = getWinner(cardPlayer, cardCasino, callerAddress, casino)
147-[StringEntry(availableProp, makeString(avDeck2, separator)), StringEntry((round + "_player"), callerAddress), IntegerEntry((round + "_initialBet"), initialBet), StringEntry((meKey + "_salt_debug"), meKey), IntegerEntry((meKey + "_LastRandonNumber"), cardPositionCasino), IntegerEntry((round + "_sumBets"), newSumBets), StringEntry((meKey + "_playerCard"), cardPlayer), StringEntry((meKey + "_casinoCard"), cardCasino), BooleanEntry((round + "_stop"), true), StringEntry((round + "_winner"), winner)]
148- }
149- }
122+ else {
123+ let avDeck = getAvailableDeck(c1, availableProp)
124+ let cardPositionPlayer = getRandomNumber(((meKey + makeString(avDeck, separator)) + callerAddress), getPreviousRandomNumber(callerAddress), size(avDeck))
125+ let cardPlayer = avDeck[(cardPositionPlayer % size(avDeck))]
126+ let avDeck1 = removeByIndex(avDeck, (cardPositionPlayer % size(avDeck)))
127+ let avDeck2 = getDeck(avDeck1)
128+ let cardPositionCasino = getRandomNumber(((meKey + makeString(avDeck2, separator)) + callerAddress), getPreviousRandomNumber(callerAddress), size(avDeck2))
129+ let cardCasino = avDeck2[(cardPositionCasino % size(avDeck2))]
130+ let avDeck3 = removeByIndex(avDeck2, (cardPositionCasino % size(avDeck2)))
131+ if ((getCardValue(cardPlayer) == getCardValue(cardCasino)))
132+ then [StringEntry(availableProp, makeString(avDeck3, separator)), StringEntry((round + "_player"), callerAddress), StringEntry((meKey + "_salt_debug"), meKey), IntegerEntry((meKey + "_LastRandonNumber"), cardPositionCasino), IntegerEntry((round + "_sumBets"), newSumBets), StringEntry((meKey + "_playerCard"), cardPlayer), StringEntry((meKey + "_casinoCard"), cardCasino), IntegerEntry((round + "_drawSequence"), (currentDraws + 1))]
133+ else {
134+ let winner = getWinner(cardPlayer, cardCasino, callerAddress, casino)
135+[StringEntry(availableProp, makeString(avDeck3, separator)), StringEntry((meKey + "_salt_debug"), meKey), StringEntry((round + "_player"), callerAddress), IntegerEntry((meKey + "_LastRandonNumber"), cardPositionCasino), IntegerEntry((round + "_sumBets"), newSumBets), StringEntry((meKey + "_playerCard"), cardPlayer), StringEntry((meKey + "_casinoCard"), cardCasino), BooleanEntry((round + "_stop"), true), StringEntry((round + "_winner"), winner)]
136+ }
137+ }
150138 }
151139
152140
153141
154142 @Callable(i)
155-func withdraw1 (round) = {
143+func withdraw (round) = {
156144 let callerAddress = toBase58String(i.caller.bytes)
157145 let meKey = ((round + "_") + callerAddress)
158146 let withdrawKey = (round + "_withdraw")
159- if (isDefined(getString(c2, withdrawKey)))
147+ if (isDefined(getString(c1, withdrawKey)))
160148 then throw("You have already got your prize")
161- else if (!(isDefined(getString(c2, (round + "_winner")))))
149+ else if (!(isDefined(getString(c1, (round + "_winner")))))
162150 then throw("There is no winner, it was a draw")
163151 else {
164- let winner = getStringValue(c2, (round + "_winner"))
165- let player = getStringValue(c2, (round + "_player"))
166- let curSumBet = getIntegerValue(c2, (round + "_sumBets"))
152+ let winner = getStringValue(c1, (round + "_winner"))
153+ let player = getStringValue(c1, (round + "_player"))
154+ let curSumBet = getIntegerValue(c1, (round + "_sumBets"))
167155 if ((curSumBet == 0))
168156 then throw("You won nothing this round")
169157 else if (if ((winner == callerAddress))
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let casino = "3MtaCL4v1bjTabUqs7oU4ofS8fbai34WM1i"
55
66 let WAVES = 1000000000
77
88 let maxBet = (100 * WAVES)
99
1010 let separator = ","
1111
1212 func getNewDeck () = ["01C", "02C", "03C", "04C", "05C", "06C", "07C", "08C", "09C", "10C", "11C", "12C", "13C", "01D", "02D", "03D", "04D", "05D", "06D", "07D", "08D", "09D", "10D", "11D", "12D", "13D", "01H", "02H", "03H", "04H", "05H", "06H", "07H", "08H", "09H", "10H", "11H", "12H", "13H", "01S", "02S", "03S", "04S", "05S", "06S", "07S", "08S", "09S", "10S", "11S", "12S", "13S"]
1313
1414
15-func getSixNewDecks () = (((((getNewDeck() ++ getNewDeck()) ++ getNewDeck()) ++ getNewDeck()) ++ getNewDeck()) ++ getNewDeck())
16-
17-
1815 func getDeck (deck) = if ((0 >= size(deck)))
19- then getSixNewDecks()
16+ then getNewDeck()
2017 else deck
2118
2219
2320 func getRandomNumber (salt1,salt2,answersCount) = {
2421 let hash = sha256(toBytes((salt1 + salt2)))
2522 let index = toInt(hash)
2623 let rand = (index % answersCount)
2724 if ((0 > rand))
2825 then ((-1 * rand) + 1)
2926 else (rand + 1)
3027 }
3128
3229
3330 func getPreviousRandomNumber (address) = match getInteger(this, (address + "_LastRandonNumber")) {
3431 case n: Int =>
3532 toString(n)
3633 case _ =>
3734 address
3835 }
3936
4037
4138 func getAmountOrZero (this,key) = match getInteger(this, key) {
4239 case a: Int =>
4340 a
4441 case _ =>
4542 0
4643 }
4744
4845
4946 func getPayment (i) = if ((size(i.payments) == 0))
5047 then throw("Payment must be attached")
5148 else {
5249 let pmt = i.payments[0]
5350 if (isDefined(pmt.assetId))
5451 then throw("This function accepts WAVES tokens only")
5552 else pmt.amount
5653 }
5754
5855
5956 func getCardValue (stringCard) = {
6057 let p = parseIntValue(take(stringCard, 2))
6158 if ((p == 1))
6259 then 20
6360 else p
6461 }
6562
6663
6764 func getWinner (cardPlayer,cardCasino,callerAddress,casino) = {
6865 let p = getCardValue(cardPlayer)
6966 let o = getCardValue(cardCasino)
7067 if ((p > o))
7168 then callerAddress
7269 else casino
7370 }
7471
7572
7673 func getAvailableDeck (this,availableProp) = if (isDefined(getString(this, availableProp)))
7774 then {
7875 let stringDeck = getStringValue(this, availableProp)
7976 let deck = split(stringDeck, separator)
8077 getDeck(deck)
8178 }
82- else getSixNewDecks()
79+ else getNewDeck()
8380
8481
85-func getPlayerCardAndPositionAndUpdateDeck (meKey,callerAddress,deck) = {
82+func getPlayerCardAndUpdateDeck (meKey,callerAddress,deck) = {
8683 let avDeck2 = getDeck(deck)
8784 let cardPosition = getRandomNumber(((meKey + makeString(avDeck2, separator)) + callerAddress), getPreviousRandomNumber(callerAddress), size(avDeck2))
8885 let card = avDeck2[(cardPosition % size(avDeck2))]
8986 let avDeck3 = removeByIndex(avDeck2, (cardPosition % size(avDeck2)))
90- $Tuple3(card, cardPosition, avDeck3)
87+ $Tuple2(card, avDeck3)
9188 }
9289
9390
9491 @Callable(i)
95-func bet1 (round) = {
92+func bet (round) = {
9693 let callerAddress = toBase58String(i.caller.bytes)
9794 let meKey = round
9895 let p = getPayment(i)
9996 let roundBetsKey = (round + "_sumBets")
100- let curSumBets = getAmountOrZero(c2, roundBetsKey)
101- let currentDraws = match getInteger(c2, (round + "_drawSequence")) {
97+ let curSumBets = getAmountOrZero(c1, roundBetsKey)
98+ let currentDraws = match getInteger(c1, (round + "_drawSequence")) {
10299 case a: Int =>
103100 (a + 1)
104101 case _ =>
105102 0
106103 }
107- let currentPlayer = match getString(c2, (round + "_player")) {
104+ let currentPlayer = match getString(c1, (round + "_player")) {
108105 case a: String =>
109106 a
110107 case _ =>
111108 unit
112109 }
113- let initialBet = match getInteger(c2, (round + "_initialBet")) {
114- case a: Int =>
115- a
116- case _ =>
117- p
118- }
119110 let availableProp = (meKey + "_available")
120111 let newSumBets = (curSumBets + p)
121- if (if (isDefined(getBoolean(c2, (round + "_stop"))))
112+ if (if (isDefined(getBoolean(c1, (round + "_stop"))))
122113 then true
123- else isDefined(getString(c2, round)))
114+ else isDefined(getString(c1, round)))
124115 then throw("This round is already played")
125- else if (if (isDefined(getString(c2, (round + "_player"))))
116+ else if (if (isDefined(getString(c1, (round + "_player"))))
126117 then (currentPlayer != callerAddress)
127118 else false)
128119 then throw("This is not your game")
129120 else if ((newSumBets > maxBet))
130121 then throw(((("Maximum amount of bets for round " + toString(maxBet)) + ". With your bet it's ") + toString(newSumBets)))
131- else if ((initialBet != p))
132- then throw(((("Initial bet not maching original:" + toString(initialBet)) + ", actual:") + toString(p)))
133- else {
134- let avDeck = getAvailableDeck(c2, availableProp)
135- let $t040084123 = getPlayerCardAndPositionAndUpdateDeck(meKey, callerAddress, avDeck)
136- let cardPlayer = $t040084123._1
137- let cardPositionPlayer = $t040084123._2
138- let avDeck1 = $t040084123._3
139- let $t041284244 = getPlayerCardAndPositionAndUpdateDeck(meKey, callerAddress, avDeck1)
140- let cardCasino = $t041284244._1
141- let cardPositionCasino = $t041284244._2
142- let avDeck2 = $t041284244._3
143- if ((getCardValue(cardPlayer) == getCardValue(cardCasino)))
144- then [StringEntry(availableProp, makeString(avDeck2, separator)), StringEntry((round + "_player"), callerAddress), IntegerEntry((round + "_initialBet"), initialBet), StringEntry((meKey + "_salt_debug"), meKey), IntegerEntry((meKey + "_LastRandonNumber"), cardPositionCasino), IntegerEntry((round + "_sumBets"), newSumBets), StringEntry((meKey + "_playerCard"), cardPlayer), StringEntry((meKey + "_casinoCard"), cardCasino), IntegerEntry((round + "_drawSequence"), (currentDraws + 1))]
145- else {
146- let winner = getWinner(cardPlayer, cardCasino, callerAddress, casino)
147-[StringEntry(availableProp, makeString(avDeck2, separator)), StringEntry((round + "_player"), callerAddress), IntegerEntry((round + "_initialBet"), initialBet), StringEntry((meKey + "_salt_debug"), meKey), IntegerEntry((meKey + "_LastRandonNumber"), cardPositionCasino), IntegerEntry((round + "_sumBets"), newSumBets), StringEntry((meKey + "_playerCard"), cardPlayer), StringEntry((meKey + "_casinoCard"), cardCasino), BooleanEntry((round + "_stop"), true), StringEntry((round + "_winner"), winner)]
148- }
149- }
122+ else {
123+ let avDeck = getAvailableDeck(c1, availableProp)
124+ let cardPositionPlayer = getRandomNumber(((meKey + makeString(avDeck, separator)) + callerAddress), getPreviousRandomNumber(callerAddress), size(avDeck))
125+ let cardPlayer = avDeck[(cardPositionPlayer % size(avDeck))]
126+ let avDeck1 = removeByIndex(avDeck, (cardPositionPlayer % size(avDeck)))
127+ let avDeck2 = getDeck(avDeck1)
128+ let cardPositionCasino = getRandomNumber(((meKey + makeString(avDeck2, separator)) + callerAddress), getPreviousRandomNumber(callerAddress), size(avDeck2))
129+ let cardCasino = avDeck2[(cardPositionCasino % size(avDeck2))]
130+ let avDeck3 = removeByIndex(avDeck2, (cardPositionCasino % size(avDeck2)))
131+ if ((getCardValue(cardPlayer) == getCardValue(cardCasino)))
132+ then [StringEntry(availableProp, makeString(avDeck3, separator)), StringEntry((round + "_player"), callerAddress), StringEntry((meKey + "_salt_debug"), meKey), IntegerEntry((meKey + "_LastRandonNumber"), cardPositionCasino), IntegerEntry((round + "_sumBets"), newSumBets), StringEntry((meKey + "_playerCard"), cardPlayer), StringEntry((meKey + "_casinoCard"), cardCasino), IntegerEntry((round + "_drawSequence"), (currentDraws + 1))]
133+ else {
134+ let winner = getWinner(cardPlayer, cardCasino, callerAddress, casino)
135+[StringEntry(availableProp, makeString(avDeck3, separator)), StringEntry((meKey + "_salt_debug"), meKey), StringEntry((round + "_player"), callerAddress), IntegerEntry((meKey + "_LastRandonNumber"), cardPositionCasino), IntegerEntry((round + "_sumBets"), newSumBets), StringEntry((meKey + "_playerCard"), cardPlayer), StringEntry((meKey + "_casinoCard"), cardCasino), BooleanEntry((round + "_stop"), true), StringEntry((round + "_winner"), winner)]
136+ }
137+ }
150138 }
151139
152140
153141
154142 @Callable(i)
155-func withdraw1 (round) = {
143+func withdraw (round) = {
156144 let callerAddress = toBase58String(i.caller.bytes)
157145 let meKey = ((round + "_") + callerAddress)
158146 let withdrawKey = (round + "_withdraw")
159- if (isDefined(getString(c2, withdrawKey)))
147+ if (isDefined(getString(c1, withdrawKey)))
160148 then throw("You have already got your prize")
161- else if (!(isDefined(getString(c2, (round + "_winner")))))
149+ else if (!(isDefined(getString(c1, (round + "_winner")))))
162150 then throw("There is no winner, it was a draw")
163151 else {
164- let winner = getStringValue(c2, (round + "_winner"))
165- let player = getStringValue(c2, (round + "_player"))
166- let curSumBet = getIntegerValue(c2, (round + "_sumBets"))
152+ let winner = getStringValue(c1, (round + "_winner"))
153+ let player = getStringValue(c1, (round + "_player"))
154+ let curSumBet = getIntegerValue(c1, (round + "_sumBets"))
167155 if ((curSumBet == 0))
168156 then throw("You won nothing this round")
169157 else if (if ((winner == callerAddress))
170158 then (winner == casino)
171159 else false)
172160 then [StringEntry(withdrawKey, toString(curSumBet)), ScriptTransfer(i.caller, curSumBet, unit)]
173161 else if (if ((winner == callerAddress))
174162 then (winner == player)
175163 else false)
176164 then [StringEntry(withdrawKey, toString((curSumBet * 2))), ScriptTransfer(i.caller, (curSumBet * 2), unit)]
177165 else throw("You are not the winner")
178166 }
179167 }
180168
181169
182170 @Verifier(tx)
183171 func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
184172

github/deemru/w8io/169f3d6 
43.76 ms