tx · 2MaHw6TPkmBc2pazxGwQCfdvzjdv63cbYidDGM5BAa8D

3Mv3P51SkiCzfNMq6RrQVuD68Ku8wsVkUeH:  -0.01400000 Waves

2019.08.19 17:52 [638177] smart account 3Mv3P51SkiCzfNMq6RrQVuD68Ku8wsVkUeH > SELF 0.00000000 Waves

{ "type": 13, "id": "2MaHw6TPkmBc2pazxGwQCfdvzjdv63cbYidDGM5BAa8D", "fee": 1400000, "feeAssetId": null, "timestamp": 1566226347938, "version": 1, "sender": "3Mv3P51SkiCzfNMq6RrQVuD68Ku8wsVkUeH", "senderPublicKey": "7vQqCzQUT31cRC7PLuHJs6j3Wu7iwG7xbLHt9STCSKoi", "proofs": [ "2PVr6XvnvYwvBD4Xw2NQepbLNYYCZLrS3g36WUeHKnQxhoLHVM8fT4uAXMY6jdeqBvUpKuQJb9weEKJVBTSsMfNJ" ], "script": "base64:AwQAAAAHUHViS2V5MQEAAAAgaQxxSAhSITOlMYdvwKcfK7u/x0yzOg/68EH0ax0QlWUEAAAAB1B1YktleTIBAAAAILb58FcZXTIbjEshMW6ayDB2XcNop87YatlbtNE8j6N0BAAAAARzaWcxAwkAAfQAAAADCAUAAAACdHgAAAAJYm9keUJ5dGVzCQABkQAAAAIIBQAAAAJ0eAAAAAZwcm9vZnMAAAAAAAAAAAAFAAAAB1B1YktleTEAAAAAAAAAAAEAAAAAAAAAAAAEAAAABHNpZzIDCQAB9AAAAAMIBQAAAAJ0eAAAAAlib2R5Qnl0ZXMJAAGRAAAAAggFAAAAAnR4AAAABnByb29mcwAAAAAAAAAAAQUAAAAHUHViS2V5MgAAAAAAAAAAAQAAAAAAAAAAAAkAAGYAAAACCQAAZAAAAAIFAAAABHNpZzEFAAAABHNpZzIAAAAAAAAAAADO+UOI", "chainId": 84, "height": 638177, "spentComplexity": 0 } View: original | compacted Prev: 5fB3N3gLuqqkxCFapf1qoenpF1jrcGQgxiSsURyTCV2X Next: AgqZJmdLELJrh7aY1EGu3LYY1cWf3Lf7rqTWGQsmvivP Full:
OldNewDifferences
1-{-# STDLIB_VERSION 1 #-}
1+{-# STDLIB_VERSION 3 #-}
22 {-# CONTENT_TYPE EXPRESSION #-}
3-let playerAddr = Address(base58'3MyaPJkHmZy4u57uKcHXgzQxsk9wAP9LTZ5')
4-let playerPubKey = base58'EhyhHkMbyNu8PwHoiJVCq2SciN9FmM5KvBeSN2NkTmeL'
5-let casinoAddr = Address(base58'3MyaPJkHmZy4u57uKcHXgzQxsk9wAP9LTZ5')
6-let casinoPubKey = base58'EhyhHkMbyNu8PwHoiJVCq2SciN9FmM5KvBeSN2NkTmeL'
7-let playerSigned = sigVerify(tx.bodyBytes, tx.proofs[0], playerPubKey)
8-let casinoSigned = sigVerify(tx.bodyBytes, tx.proofs[0], casinoPubKey)
9-let me = tx.sender
10-let casinoBet = 20000000
11-let playerBet = 10000000
12-let amountOfDicesSelectedByPlayer = 2
13-let start = 374157
14-let balance = wavesBalance(me)
15-let dice1 = extract(getInteger(me, "dice1"))
16-let dice2 = extract(getInteger(me, "dice2"))
17-let dice3 = extract(getInteger(me, "dice3"))
18-let dice4 = extract(getInteger(me, "dice4"))
19-let dice5 = extract(getInteger(me, "dice5"))
20-let dice6 = extract(getInteger(me, "dice6"))
21-let diceSum = (((((dice1 + dice2) + dice3) + dice4) + dice5) + dice6)
22-let casinoDice = extract(getInteger(me, "casinoDice"))
23-let playerDepositOk = (balance >= (casinoBet + playerBet))
24-let playerDepositTurn = if (if (((start + 50) > height))
25- then (balance >= casinoBet)
26- else false)
27- then !(playerDepositOk)
28- else false
29-let playerBetOk = (diceSum > 0)
30-let playerBetTurn = if (if (((start + 100) > height))
31- then playerDepositOk
32- else false)
33- then !(playerBetOk)
34- else false
35-let casinoBetOk = (casinoDice > 0)
36-let casinoBetTurn = if (if (((start + 200) > height))
37- then playerBetOk
38- else false)
39- then !(casinoBetOk)
40- else false
41-let prizeTurn = casinoBetOk
42-let playerEmergencyTakeTurn = if ((height >= (start + 300)))
43- then !(casinoBetOk)
44- else false
45-let casinoCanEmergencyTakeTurn = if ((height >= (start + 100)))
46- then if (!(playerDepositOk))
47- then true
48- else !(playerBetOk)
49- else false
50-match tx {
51- case dtx: DataTransaction =>
52- let num = size(dtx.data)
53- let choice1 = extract(getInteger(dtx.data, "dice1"))
54- let choice2 = extract(getInteger(dtx.data, "dice2"))
55- let choice3 = extract(getInteger(dtx.data, "dice3"))
56- let choice4 = extract(getInteger(dtx.data, "dice4"))
57- let choice5 = extract(getInteger(dtx.data, "dice5"))
58- let choice6 = extract(getInteger(dtx.data, "dice6"))
59- let isDice1 = if ((choice1 > 0))
60- then 1
61- else 0
62- let isDice2 = if ((choice2 > 0))
63- then 1
64- else 0
65- let isDice3 = if ((choice3 > 0))
66- then 1
67- else 0
68- let isDice4 = if ((choice4 > 0))
69- then 1
70- else 0
71- let isDice5 = if ((choice5 > 0))
72- then 1
73- else 0
74- let isDice6 = if ((choice6 > 0))
75- then 1
76- else 0
77- let amountOfDicesSelectedInTransaction = (((((isDice1 + isDice2) + isDice3) + isDice4) + isDice5) + isDice6)
78- let casinoChoice = extract(getInteger(dtx.data, "casinoDice"))
79- let salt = extract(getString(dtx.data, "salt"))
80- let playerDicesInRange = if (if (if (if (if (if ((choice1 >= 0))
81- then (6 >= choice1)
82- else false)
83- then if ((choice2 >= 0))
84- then (6 >= choice2)
85- else false
86- else false)
87- then if ((choice3 >= 0))
88- then (6 >= choice3)
89- else false
90- else false)
91- then if ((choice4 >= 0))
92- then (6 >= choice4)
93- else false
94- else false)
95- then if ((choice5 >= 0))
96- then (6 >= choice5)
97- else false
98- else false)
99- then if ((choice6 >= 0))
100- then (6 >= choice6)
101- else false
102- else false
103- let playerChoiceSum = (((((choice1 + choice2) + choice3) + choice4) + choice5) + choice6)
104- let playerChoiceMul = (((((choice1 * choice2) * choice3) * choice4) * choice5) * choice6)
105- let playerDicesNumberCorrect = if ((playerChoiceSum > 0))
106- then (playerChoiceMul == 0)
107- else false
108- let casinoDicesInRange = if ((casinoChoice >= 1))
109- then (6 >= casinoChoice)
110- else false
111- let newHash = keccak256(toBytes((toString(casinoChoice) + salt)))
112- let casinoVerified = (newHash == base58'GgDo7Z6z89EnYQiNdT1ZvzLxjgKSGZ5MP4RWK236bov4')
113- let playerInputCorrect = if (if (if (playerDicesInRange)
114- then playerDicesNumberCorrect
115- else false)
116- then (num == 6)
117- else false)
118- then (amountOfDicesSelectedInTransaction == amountOfDicesSelectedByPlayer)
119- else false
120- let casinoInputCorrect = if (if (casinoDicesInRange)
121- then casinoVerified
122- else false)
123- then (num == 2)
124- else false
125- if (if (if (casinoSigned)
126- then casinoBetTurn
127- else false)
128- then casinoInputCorrect
129- else false)
130- then true
131- else if (if (playerSigned)
132- then playerBetTurn
133- else false)
134- then playerInputCorrect
135- else false
136- case ttx: TransferTransaction =>
137- let dicesMatch = if (if (if (if (if ((dice1 == casinoDice))
138- then true
139- else (dice2 == casinoDice))
140- then true
141- else (dice3 == casinoDice))
142- then true
143- else (dice4 == casinoDice))
144- then true
145- else (dice5 == casinoDice))
146- then true
147- else (dice6 == casinoDice)
148- let withdrawCorrect = if ((ttx.amount >= 10000000))
149- then (1000000 >= ttx.fee)
150- else false
151- let playerWin = if (casinoBetOk)
152- then dicesMatch
153- else false
154- let casinoWin = if (if (casinoBetOk)
155- then !(dicesMatch)
156- else false)
157- then (ttx.recipient == casinoAddr)
158- else false
159- let playerCanTakePrize = if (prizeTurn)
160- then playerWin
161- else false
162- let playerCanTake = if (if (playerCanTakePrize)
163- then true
164- else playerEmergencyTakeTurn)
165- then (ttx.recipient == playerAddr)
166- else false
167- let casinoCanTakePrize = if (if (prizeTurn)
168- then casinoWin
169- else false)
170- then (ttx.recipient == casinoAddr)
171- else false
172- let casinoCanTake = if (if (casinoCanTakePrize)
173- then true
174- else casinoCanEmergencyTakeTurn)
175- then (ttx.recipient == casinoAddr)
176- else false
177- if (if (playerCanTake)
178- then true
179- else casinoCanTake)
180- then withdrawCorrect
181- else false
182- case _ =>
183- true
184-}
3+let PubKey1 = base58'854p8BYzrj6yBPRPmfQur3oF1Rjc1AJ548qRp5FT5kDa'
4+let PubKey2 = base58'DKGFPozLrsiR8NM4NJzqQaBYC8NyGYjuw2hDYicQVjco'
5+let sig1 = if (sigVerify(tx.bodyBytes, tx.proofs[0], PubKey1))
6+ then 1
7+ else 0
8+let sig2 = if (sigVerify(tx.bodyBytes, tx.proofs[1], PubKey2))
9+ then 1
10+ else 0
11+((sig1 + sig2) > 0)

github/deemru/w8io/c3f4982 
22.09 ms