tx · JDaxUVvNtYCTC9ZLZ9eGb2hTmLhSH1y2Lpieoz5x3Gpp

3My9Kd9gApw3GCoz2KWSZPiTRNzDsNE2eeh:  -0.01400000 Waves

2021.02.16 16:08 [1400766] smart account 3My9Kd9gApw3GCoz2KWSZPiTRNzDsNE2eeh > SELF 0.00000000 Waves

{ "type": 13, "id": "JDaxUVvNtYCTC9ZLZ9eGb2hTmLhSH1y2Lpieoz5x3Gpp", "fee": 1400000, "feeAssetId": null, "timestamp": 1613480914145, "version": 2, "chainId": 84, "sender": "3My9Kd9gApw3GCoz2KWSZPiTRNzDsNE2eeh", "senderPublicKey": "BjjwtwUgZ4s8p9HJuFwyRMR3egd3zMAHGDV2HoZ1J7ho", "proofs": [ "4nwfywaYxPzghvj4hgYedJVpSTYDPkL1yn4SkJiaiM23CszXhGdqyT5WDDdDzjFsPbuhsA6K6PtciBcjjM4QrCTS" ], "script": "base64:AAIDAAAAAAAAAAYIARIAEgAAAAAXAAAAAA1nYW1lUHVibGljS2V5CQACWQAAAAECAAAALEJqand0d1VnWjRzOHA5SEp1Rnd5Uk1SM2VnZDN6TUFIR0RWMkhvWjFKN2hvAAAAAA5BZG1pblB1YmxpY0tleQkAAlkAAAABAgAAACw1MkRqVE54b3llc0FkTGtLcDlVSjdyTjFYMk5QNW5uTnZrSHdLTDI5d2JuWgAAAAAMQWRtaW5BZGRyZXNzCQEAAAAUYWRkcmVzc0Zyb21QdWJsaWNLZXkAAAABBQAAAA5BZG1pblB1YmxpY0tleQAAAAANcnNhUHVibGljS2V5MQkAAlsAAAABAgAAAIBNRnd3RFFZSktvWklodmNOQVFFQkJRQURTd0F3U0FKQkFPa2l1ei9CVjRFam94R2hUbU5DYnQyVGdrYlNQSC93NjliM0YxckttRDYxSmlQWHZ2RjhMMnBJOXhPWWNXNEZtb0VaVkhsUlF0QWxhSnlrbDMrcnNyRUNBd0VBQVE9PQAAAAANcnNhUHVibGljS2V5MgkAAlsAAAABAgAAAIBNRnd3RFFZSktvWklodmNOQVFFQkJRQURTd0F3U0FKQkFKblh6Yk0vVjJzRFYxVUxiUFNPbEhrbGRPVFdSckhpNWZ4SWtCbXVldnJDbE1QVkg3cnFjY3dpckROY01kSWR3WEhJOUFkaGo5Rldqd0dJd2ZVL0s2TUNBd0VBQVE9PQAAAAANcnNhUHVibGljS2V5MwkAAlsAAAABAgAAAIBNRnd3RFFZSktvWklodmNOQVFFQkJRQURTd0F3U0FKQkFPUkRldnkwcjRrekxxT3lTbG9CNjNIdXYyZTR6ZUhLSGpDc3k1dnRGS21XWmJYSmE4Z1pZdDQrRWtsRklvMUs5b3F1NUJBUFZmSjNGT3pzMlUxQStnMENBd0VBQVE9PQAAAAAFZHJ1bTEJAARMAAAAAgIAAAABMgkABEwAAAACAgAAAAExCQAETAAAAAICAAAAATMJAARMAAAAAgIAAAABNQkABEwAAAACAgAAAAE3CQAETAAAAAICAAAAATMJAARMAAAAAgIAAAABMwkABEwAAAACAgAAAAExCQAETAAAAAICAAAAATQJAARMAAAAAgIAAAABMQkABEwAAAACAgAAAAEzCQAETAAAAAICAAAAATUJAARMAAAAAgIAAAABMgkABEwAAAACAgAAAAE0CQAETAAAAAICAAAAATIJAARMAAAAAgIAAAABNgkABEwAAAACAgAAAAE1CQAETAAAAAICAAAAATIJAARMAAAAAgIAAAABMQkABEwAAAACAgAAAAE0BQAAAANuaWwAAAAABWRydW0yCQAETAAAAAICAAAAATQJAARMAAAAAgIAAAABMgkABEwAAAACAgAAAAEzCQAETAAAAAICAAAAATEJAARMAAAAAgIAAAABNgkABEwAAAACAgAAAAE0CQAETAAAAAICAAAAATIJAARMAAAAAgIAAAABMQkABEwAAAACAgAAAAE0CQAETAAAAAICAAAAATIJAARMAAAAAgIAAAABMQkABEwAAAACAgAAAAE2CQAETAAAAAICAAAAATMJAARMAAAAAgIAAAABMQkABEwAAAACAgAAAAEyCQAETAAAAAICAAAAATUJAARMAAAAAgIAAAABMQkABEwAAAACAgAAAAE1CQAETAAAAAICAAAAATMJAARMAAAAAgIAAAABNwUAAAADbmlsAAAAAAVkcnVtMwkABEwAAAACAgAAAAEzCQAETAAAAAICAAAAATIJAARMAAAAAgIAAAABNwkABEwAAAACAgAAAAE0CQAETAAAAAICAAAAATEJAARMAAAAAgIAAAABNgkABEwAAAACAgAAAAE0CQAETAAAAAICAAAAATIJAARMAAAAAgIAAAABMwkABEwAAAACAgAAAAExCQAETAAAAAICAAAAATQJAARMAAAAAgIAAAABMQkABEwAAAACAgAAAAE1CQAETAAAAAICAAAAATUJAARMAAAAAgIAAAABMQkABEwAAAACAgAAAAEzCQAETAAAAAICAAAAATcJAARMAAAAAgIAAAABMQkABEwAAAACAgAAAAEyCQAETAAAAAICAAAAATYFAAAAA25pbAAAAAAIc3RhdGVBY2MCAAAACEFDQ0VQVEVEAAAAAAhzdGF0ZVdpbgIAAAADV09OAAAAAAlzdGF0ZUxvc2UCAAAABExPU1QAAAAAB3dhdmVzSWQFAAAABHVuaXQAAAAAC3dhdmVzTWluQW10AAAAAAABMS0AAAAAAAt3YXZlc01heEFtdAkAAGgAAAACBQAAAAt3YXZlc01pbkFtdAAAAAAAAAAACgEAAAAKY29tbWlzc2lvbgAAAAEAAAAJYmV0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", "height": 1400766, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: B35FRY9KNJiD7xt2zYtkNkpoZJ4SNs3Run4Tkq15R2dW Next: 7wrs4HGmKmL4znKbcTnws5LRNGSit3EMjJwbhbmbWcLz Diff:
OldNewDifferences
55
66 let AdminPublicKey = fromBase58String("52DjTNxoyesAdLkKp9UJ7rN1X2NP5nnNvkHwKL29wbnZ")
77
8-let dividendProgramAddress = addressFromPublicKey(AdminPublicKey)
8+let AdminAddress = addressFromPublicKey(AdminPublicKey)
99
1010 let rsaPublicKey1 = fromBase64String("MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAOkiuz/BV4EjoxGhTmNCbt2TgkbSPH/w69b3F1rKmD61JiPXvvF8L2pI9xOYcW4FmoEZVHlRQtAlaJykl3+rsrECAwEAAQ==")
1111
1919
2020 let drum3 = ["3", "2", "7", "4", "1", "6", "4", "2", "3", "1", "4", "1", "5", "5", "1", "3", "7", "1", "2", "6"]
2121
22-let stateAcc = "Accepted"
22+let stateAcc = "ACCEPTED"
2323
24-let stateWin = "Win"
24+let stateWin = "WON"
2525
26-let stateLose = "Lose"
27-
28-let stateTimeout = "WinByTimeout"
26+let stateLose = "LOST"
2927
3028 let wavesId = unit
3129
3331
3432 let wavesMaxAmt = (wavesMinAmt * 10)
3533
36-let commission = 500000
34+func commission (betAmount) = ((5 * betAmount) / 1000)
3735
38-let gameTimeFrame = 2880
3936
4037 func pmtAmtCheck (betAmount) = if (if ((betAmount >= wavesMinAmt))
4138 then (wavesMaxAmt >= betAmount)
6966 else toString(drumInt)
7067
7168
72-func defineMultiplier (threeInARow,twoInARow) = if ((threeInARow == "777"))
73- then 2600
74- else if ((threeInARow == "666"))
75- then 1300
76- else if ((threeInARow == "555"))
77- then 450
78- else if ((threeInARow == "444"))
79- then 200
80- else if ((threeInARow == "333"))
81- then 150
82- else if ((threeInARow == "222"))
83- then 110
84- else if ((threeInARow == "111"))
85- then 50
86- else if ((twoInARow == "77"))
87- then 270
88- else if ((twoInARow == "66"))
89- then 130
90- else if ((twoInARow == "55"))
91- then 45
92- else if ((twoInARow == "44"))
93- then 30
94- else if ((twoInARow == "33"))
95- then 20
96- else if ((twoInARow == "22"))
97- then 17
98- else if ((twoInARow == "11"))
99- then 13
100- else 0
69+func payout (pay) = {
70+ let reverse = wavesBalance(addressFromPublicKey(gamePublicKey))
71+ if ((reverse > 0))
72+ then ((pay / 100) * reverse)
73+ else throw("Empty Contract Account")
74+ }
10175
10276
103-func assetNameToBase58 (assetName) = if ((assetName == "WAVES"))
104- then wavesId
105- else throw("Asset name is incorrect")
106-
107-
108-func setNewGamesPlayedNum (address) = {
109- let valueGamesPlayedNum = getInteger(this, (address + "_GamesPlayed"))
110- let currentGamesPlayedNum = match valueGamesPlayedNum {
111- case a: Int =>
112- a
113- case _ =>
114- 0
115- }
116- (currentGamesPlayedNum + 1)
117- }
77+func defineMultiplier (threeInARow,twoInARow) = if ((threeInARow == "777"))
78+ then payout(100)
79+ else if ((threeInARow == "666"))
80+ then payout(45)
81+ else if ((threeInARow == "555"))
82+ then payout(40)
83+ else if ((threeInARow == "444"))
84+ then payout(36)
85+ else if ((threeInARow == "333"))
86+ then payout(33)
87+ else if ((threeInARow == "222"))
88+ then payout(28)
89+ else if ((threeInARow == "111"))
90+ then payout(25)
91+ else if ((twoInARow == "77"))
92+ then payout(22)
93+ else if ((twoInARow == "66"))
94+ then payout(18)
95+ else if ((twoInARow == "55"))
96+ then payout(15)
97+ else if ((twoInARow == "44"))
98+ then payout(12)
99+ else if ((twoInARow == "33"))
100+ then payout(9)
101+ else if ((twoInARow == "22"))
102+ then payout(7)
103+ else if ((twoInARow == "11"))
104+ then payout(5)
105+ else 0
118106
119107
120108 func checkCallerIsAdmin (callerPublicKey) = (callerPublicKey == AdminPublicKey)
121109
122110
123-func getCurrentIncome (assetName) = {
124- let val = getInteger(this, (assetName + "_Income"))
125- match val {
126- case a: Int =>
127- a
128- case _ =>
129- 0
130- }
131- }
132-
133-
134-func callerIsDepositOwner (assetName,callerPublicKey) = {
135- let depositOwner = getString(dividendProgramAddress, (assetName + "_DepositOwner"))
136- if ((callerPublicKey == depositOwner))
137- then callerPublicKey
138- else throw("Only deposit owner can withdrawal deposit")
139- }
140-
141-
142-func getDepositData (assetName,keySuffix) = {
143- let key = (assetName + keySuffix)
144- let val = getInteger(dividendProgramAddress, key)
145- match val {
146- case a: Int =>
147- a
148- case _ =>
149- throw("Couldn't find dividend program start height")
150- }
151- }
152-
153-
154111 @Callable(i)
155112 func initGame () = if (checkCallerIsAdmin(i.callerPublicKey))
156- then match getInteger(this, "X_GAMESCOUNTER") {
157- case GAMESCOUNTER: Int =>
113+ then match getInteger(this, "GAMESTATUS") {
114+ case STATUS: Int =>
158115 throw("INIT_ALREADY_DONE")
159116 case _ =>
160- WriteSet([DataEntry("X_GAMESCOUNTER", 1), DataEntry("WAVES_Reserved", wavesMinAmt)])
117+ WriteSet([DataEntry("GAMESTATUS", 1), DataEntry("WAVES_Reserved", wavesMinAmt)])
161118 }
162119 else throw("initGame_FORBBIDEN")
163120
168125 let gameId = toBase58String(i.transactionId)
169126 let playerAddress = extract(i.caller)
170127 let pmt = extract(i.payment)
171- let betAmount = (pmt.amount - commission)
128+ let betAmount = (pmt.amount - commission(pmt.amount))
172129 let pmtAmtCorrect = pmtAmtCheck(betAmount)
173130 if (pmtAmtCorrect)
174131 then {
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 3 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let gamePublicKey = fromBase58String("BjjwtwUgZ4s8p9HJuFwyRMR3egd3zMAHGDV2HoZ1J7ho")
55
66 let AdminPublicKey = fromBase58String("52DjTNxoyesAdLkKp9UJ7rN1X2NP5nnNvkHwKL29wbnZ")
77
8-let dividendProgramAddress = addressFromPublicKey(AdminPublicKey)
8+let AdminAddress = addressFromPublicKey(AdminPublicKey)
99
1010 let rsaPublicKey1 = fromBase64String("MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAOkiuz/BV4EjoxGhTmNCbt2TgkbSPH/w69b3F1rKmD61JiPXvvF8L2pI9xOYcW4FmoEZVHlRQtAlaJykl3+rsrECAwEAAQ==")
1111
1212 let rsaPublicKey2 = fromBase64String("MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAJnXzbM/V2sDV1ULbPSOlHkldOTWRrHi5fxIkBmuevrClMPVH7rqccwirDNcMdIdwXHI9Adhj9FWjwGIwfU/K6MCAwEAAQ==")
1313
1414 let rsaPublicKey3 = fromBase64String("MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAORDevy0r4kzLqOySloB63Huv2e4zeHKHjCsy5vtFKmWZbXJa8gZYt4+EklFIo1K9oqu5BAPVfJ3FOzs2U1A+g0CAwEAAQ==")
1515
1616 let drum1 = ["2", "1", "3", "5", "7", "3", "3", "1", "4", "1", "3", "5", "2", "4", "2", "6", "5", "2", "1", "4"]
1717
1818 let drum2 = ["4", "2", "3", "1", "6", "4", "2", "1", "4", "2", "1", "6", "3", "1", "2", "5", "1", "5", "3", "7"]
1919
2020 let drum3 = ["3", "2", "7", "4", "1", "6", "4", "2", "3", "1", "4", "1", "5", "5", "1", "3", "7", "1", "2", "6"]
2121
22-let stateAcc = "Accepted"
22+let stateAcc = "ACCEPTED"
2323
24-let stateWin = "Win"
24+let stateWin = "WON"
2525
26-let stateLose = "Lose"
27-
28-let stateTimeout = "WinByTimeout"
26+let stateLose = "LOST"
2927
3028 let wavesId = unit
3129
3230 let wavesMinAmt = 20000000
3331
3432 let wavesMaxAmt = (wavesMinAmt * 10)
3533
36-let commission = 500000
34+func commission (betAmount) = ((5 * betAmount) / 1000)
3735
38-let gameTimeFrame = 2880
3936
4037 func pmtAmtCheck (betAmount) = if (if ((betAmount >= wavesMinAmt))
4138 then (wavesMaxAmt >= betAmount)
4239 else false)
4340 then true
4441 else throw("Bet amount is not in range")
4542
4643
4744 func getDataList (gameId) = {
4845 let getDataString = getString(this, (gameId + "_GameId"))
4946 let a = match getDataString {
5047 case a: String =>
5148 a
5249 case _ =>
5350 throw("GameId was not found")
5451 }
5552 split(a, "_")
5653 }
5754
5855
5956 func rsaToInt (gameId,rsaSign,rsaPublicKey) = {
6057 let rsaCheck = rsaVerify(SHA256, toBytes(gameId), rsaSign, rsaPublicKey)
6158 if (rsaCheck)
6259 then (toInt(sha256(rsaSign)) % 19)
6360 else throw("Invalid RSA Signature")
6461 }
6562
6663
6764 func drumIntToString (drumInt) = if ((10 > drumInt))
6865 then ("0" + toString(drumInt))
6966 else toString(drumInt)
7067
7168
72-func defineMultiplier (threeInARow,twoInARow) = if ((threeInARow == "777"))
73- then 2600
74- else if ((threeInARow == "666"))
75- then 1300
76- else if ((threeInARow == "555"))
77- then 450
78- else if ((threeInARow == "444"))
79- then 200
80- else if ((threeInARow == "333"))
81- then 150
82- else if ((threeInARow == "222"))
83- then 110
84- else if ((threeInARow == "111"))
85- then 50
86- else if ((twoInARow == "77"))
87- then 270
88- else if ((twoInARow == "66"))
89- then 130
90- else if ((twoInARow == "55"))
91- then 45
92- else if ((twoInARow == "44"))
93- then 30
94- else if ((twoInARow == "33"))
95- then 20
96- else if ((twoInARow == "22"))
97- then 17
98- else if ((twoInARow == "11"))
99- then 13
100- else 0
69+func payout (pay) = {
70+ let reverse = wavesBalance(addressFromPublicKey(gamePublicKey))
71+ if ((reverse > 0))
72+ then ((pay / 100) * reverse)
73+ else throw("Empty Contract Account")
74+ }
10175
10276
103-func assetNameToBase58 (assetName) = if ((assetName == "WAVES"))
104- then wavesId
105- else throw("Asset name is incorrect")
106-
107-
108-func setNewGamesPlayedNum (address) = {
109- let valueGamesPlayedNum = getInteger(this, (address + "_GamesPlayed"))
110- let currentGamesPlayedNum = match valueGamesPlayedNum {
111- case a: Int =>
112- a
113- case _ =>
114- 0
115- }
116- (currentGamesPlayedNum + 1)
117- }
77+func defineMultiplier (threeInARow,twoInARow) = if ((threeInARow == "777"))
78+ then payout(100)
79+ else if ((threeInARow == "666"))
80+ then payout(45)
81+ else if ((threeInARow == "555"))
82+ then payout(40)
83+ else if ((threeInARow == "444"))
84+ then payout(36)
85+ else if ((threeInARow == "333"))
86+ then payout(33)
87+ else if ((threeInARow == "222"))
88+ then payout(28)
89+ else if ((threeInARow == "111"))
90+ then payout(25)
91+ else if ((twoInARow == "77"))
92+ then payout(22)
93+ else if ((twoInARow == "66"))
94+ then payout(18)
95+ else if ((twoInARow == "55"))
96+ then payout(15)
97+ else if ((twoInARow == "44"))
98+ then payout(12)
99+ else if ((twoInARow == "33"))
100+ then payout(9)
101+ else if ((twoInARow == "22"))
102+ then payout(7)
103+ else if ((twoInARow == "11"))
104+ then payout(5)
105+ else 0
118106
119107
120108 func checkCallerIsAdmin (callerPublicKey) = (callerPublicKey == AdminPublicKey)
121109
122110
123-func getCurrentIncome (assetName) = {
124- let val = getInteger(this, (assetName + "_Income"))
125- match val {
126- case a: Int =>
127- a
128- case _ =>
129- 0
130- }
131- }
132-
133-
134-func callerIsDepositOwner (assetName,callerPublicKey) = {
135- let depositOwner = getString(dividendProgramAddress, (assetName + "_DepositOwner"))
136- if ((callerPublicKey == depositOwner))
137- then callerPublicKey
138- else throw("Only deposit owner can withdrawal deposit")
139- }
140-
141-
142-func getDepositData (assetName,keySuffix) = {
143- let key = (assetName + keySuffix)
144- let val = getInteger(dividendProgramAddress, key)
145- match val {
146- case a: Int =>
147- a
148- case _ =>
149- throw("Couldn't find dividend program start height")
150- }
151- }
152-
153-
154111 @Callable(i)
155112 func initGame () = if (checkCallerIsAdmin(i.callerPublicKey))
156- then match getInteger(this, "X_GAMESCOUNTER") {
157- case GAMESCOUNTER: Int =>
113+ then match getInteger(this, "GAMESTATUS") {
114+ case STATUS: Int =>
158115 throw("INIT_ALREADY_DONE")
159116 case _ =>
160- WriteSet([DataEntry("X_GAMESCOUNTER", 1), DataEntry("WAVES_Reserved", wavesMinAmt)])
117+ WriteSet([DataEntry("GAMESTATUS", 1), DataEntry("WAVES_Reserved", wavesMinAmt)])
161118 }
162119 else throw("initGame_FORBBIDEN")
163120
164121
165122
166123 @Callable(i)
167124 func makeBet () = {
168125 let gameId = toBase58String(i.transactionId)
169126 let playerAddress = extract(i.caller)
170127 let pmt = extract(i.payment)
171- let betAmount = (pmt.amount - commission)
128+ let betAmount = (pmt.amount - commission(pmt.amount))
172129 let pmtAmtCorrect = pmtAmtCheck(betAmount)
173130 if (pmtAmtCorrect)
174131 then {
175132 let dataString = ((((((stateAcc + "_") + toString(playerAddress)) + "_") + toString(betAmount)) + "_WAVES_") + toString(height))
176133 WriteSet([DataEntry((gameId + "_GameId"), dataString), DataEntry("WAVES_Reserved", betAmount)])
177134 }
178135 else throw("AssetId is incorrect")
179136 }
180137
181138
182139 @Verifier(tx)
183140 func verify () = if (sigVerify(tx.bodyBytes, tx.proofs[0], gamePublicKey))
184141 then match tx {
185142 case tx: SetScriptTransaction =>
186143 true
187144 case _ =>
188145 false
189146 }
190147 else false
191148

github/deemru/w8io/169f3d6 
112.75 ms