tx · 3W2hjmHjuMfou3jwUaCTQMjcBTLQcT8yzVbm7AthHedW

3N2ahnPiA8og8iZGxdeY8v3ny16bxJv8LBS:  -0.01000000 Waves

2018.11.16 17:32 [378431] smart account 3N2ahnPiA8og8iZGxdeY8v3ny16bxJv8LBS > SELF 0.00000000 Waves

{ "type": 13, "id": "3W2hjmHjuMfou3jwUaCTQMjcBTLQcT8yzVbm7AthHedW", "fee": 1000000, "feeAssetId": null, "timestamp": 1542378819523, "version": 1, "sender": "3N2ahnPiA8og8iZGxdeY8v3ny16bxJv8LBS", "senderPublicKey": "4TYCkH4gQR2uY2VGAUmHk3LwYbMGWr98R75aXmZGNjvh", "proofs": [ "3JcjrnM6K1Din9LT1Szp7tcjHq6LEZncPTtT22t8UzBr2kZGsWAzQyX4BmdSwAuNoBVsBHYhiwPpNLmdiZ3E4pbj" ], "script": "base64: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AAAAAAAAAgUAAAADbnVtAAAAAAAAAAACBwMDAwUAAAAMY2FzaW5vU2lnbmVkBQAAAA1jYXNpbm9CZXRUdXJuBwUAAAASY2FzaW5vSW5wdXRDb3JyZWN0BwYDAwUAAAAMcGxheWVyU2lnbmVkBQAAAA1wbGF5ZXJCZXRUdXJuBwUAAAAScGxheWVySW5wdXRDb3JyZWN0BwMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAATVHJhbnNmZXJUcmFuc2FjdGlvbgQAAAADdHR4BQAAAAckbWF0Y2gwBAAAAApiZXRJblJhbmdlAwkAAGcAAAACBQAAAApjYXNpbm9EaWNlBQAAAAVkaWNlMQkAAGcAAAACBQAAAAVkaWNlMgUAAAAKY2FzaW5vRGljZQcEAAAAD3dpdGhkcmF3Q29ycmVjdAMJAABnAAAAAggFAAAAA3R0eAAAAAZhbW91bnQAAAAAAACYloAJAABnAAAAAgAAAAAAAA9CQAgFAAAAA3R0eAAAAANmZWUHBAAAAAlwbGF5ZXJXaW4DBQAAAAtjYXNpbm9CZXRPawUAAAAKYmV0SW5SYW5nZQcEAAAACWNhc2lub1dpbgMFAAAAC2Nhc2lub0JldE9rCQEAAAABIQAAAAEFAAAACmJldEluUmFuZ2UHBAAAABJwbGF5ZXJDYW5UYWtlUHJpemUDBQAAAAlwcml6ZVR1cm4FAAAACXBsYXllcldpbgcEAAAADXBsYXllckNhblRha2UDAwUAAAAScGxheWVyQ2FuVGFrZVByaXplBgUAAAAXcGxheWVyRW1lcmdlbmN5VGFrZVR1cm4JAAAAAAAAAggFAAAAA3R0eAAAAAlyZWNpcGllbnQFAAAACnBsYXllckFkZHIHBAAAABJjYXNpbm9DYW5UYWtlUHJpemUDAwUAAAAJcHJpemVUdXJuBQAAAAljYXNpbm9XaW4HCQAAAAAAAAIIBQAAAAN0dHgAAAAJcmVjaXBpZW50BQAAAApjYXNpbm9BZGRyBwQAAAANY2FzaW5vQ2FuVGFrZQMDBQAAABJjYXNpbm9DYW5UYWtlUHJpemUGBQAAABpjYXNpbm9DYW5FbWVyZ2VuY3lUYWtlVHVybgkAAAAAAAACCAUAAAADdHR4AAAACXJlY2lwaWVudAUAAAAKY2FzaW5vQWRkcgcDAwUAAAANcGxheWVyQ2FuVGFrZQYFAAAADWNhc2lub0NhblRha2UFAAAAD3dpdGhkcmF3Q29ycmVjdAcGMserMw==", "chainId": 84, "height": 378431, "spentComplexity": 0 } View: original | compacted Prev: none Next: none Full:
OldNewDifferences
1-# no script
1+{-# STDLIB_VERSION 1 #-}
2+{-# 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 = 88772727
11+let playerBet = 25000000
12+let gameBalance = (casinoBet + playerBet)
13+let start = 378431
14+let playerRangeSize = 0
15+let balance = wavesBalance(me)
16+let casinoChoiceHash = base58'CKeQzAitXR6CEtwLM2kGFYTk87kFrc1SFANCBPmyx7cM'
17+let dice1 = extract(getInteger(me, "dice1"))
18+let dice2 = extract(getInteger(me, "dice2"))
19+let casinoDice = extract(getInteger(me, "casinoDice"))
20+let playerDepositOk = (balance >= (casinoBet + playerBet))
21+let playerDepositTurn = if (if (((start + 50) > height))
22+ then (balance >= casinoBet)
23+ else false)
24+ then !(playerDepositOk)
25+ else false
26+let playerBetOk = if ((dice1 > 0))
27+ then (dice2 > 0)
28+ else false
29+let playerBetTurn = if (if (((start + 100) > height))
30+ then playerDepositOk
31+ else false)
32+ then !(playerBetOk)
33+ else false
34+let casinoBetOk = (casinoDice > 0)
35+let casinoBetTurn = if (if (((start + 200) > height))
36+ then playerBetOk
37+ else false)
38+ then !(casinoBetOk)
39+ else false
40+let prizeTurn = casinoBetOk
41+let playerEmergencyTakeTurn = if ((height >= (start + 300)))
42+ then !(casinoBetOk)
43+ else false
44+let casinoCanEmergencyTakeTurn = if ((height >= (start + 100)))
45+ then if (!(playerDepositOk))
46+ then true
47+ else !(playerBetOk)
48+ else false
49+match tx {
50+ case dtx: DataTransaction =>
51+ let num = size(dtx.data)
52+ let choice1 = extract(getInteger(dtx.data, "dice1"))
53+ let choice2 = extract(getInteger(dtx.data, "dice2"))
54+ let casinoChoice = extract(getInteger(dtx.data, "casinoDice"))
55+ let salt = extract(getString(dtx.data, "salt"))
56+ let playerDicesInRange = if (if (if ((choice1 >= 1))
57+ then (100 >= choice1)
58+ else false)
59+ then if ((choice2 >= 1))
60+ then (100 >= choice2)
61+ else false
62+ else false)
63+ then (choice2 >= choice1)
64+ else false
65+ let playerRangeCorrect = ((choice2 - choice1) == playerRangeSize)
66+ let casinoDicesInRange = if ((casinoChoice >= 1))
67+ then (100 >= casinoChoice)
68+ else false
69+ let newHash = keccak256(toBytes((toString(casinoChoice) + salt)))
70+ let casinoVerified = (newHash == casinoChoiceHash)
71+ let playerInputCorrect = if (playerDicesInRange)
72+ then (num == 2)
73+ else false
74+ let casinoInputCorrect = if (if (casinoDicesInRange)
75+ then casinoVerified
76+ else false)
77+ then (num == 2)
78+ else false
79+ if (if (if (casinoSigned)
80+ then casinoBetTurn
81+ else false)
82+ then casinoInputCorrect
83+ else false)
84+ then true
85+ else if (if (playerSigned)
86+ then playerBetTurn
87+ else false)
88+ then playerInputCorrect
89+ else false
90+ case ttx: TransferTransaction =>
91+ let betInRange = if ((casinoDice >= dice1))
92+ then (dice2 >= casinoDice)
93+ else false
94+ let withdrawCorrect = if ((ttx.amount >= 10000000))
95+ then (1000000 >= ttx.fee)
96+ else false
97+ let playerWin = if (casinoBetOk)
98+ then betInRange
99+ else false
100+ let casinoWin = if (casinoBetOk)
101+ then !(betInRange)
102+ else false
103+ let playerCanTakePrize = if (prizeTurn)
104+ then playerWin
105+ else false
106+ let playerCanTake = if (if (playerCanTakePrize)
107+ then true
108+ else playerEmergencyTakeTurn)
109+ then (ttx.recipient == playerAddr)
110+ else false
111+ let casinoCanTakePrize = if (if (prizeTurn)
112+ then casinoWin
113+ else false)
114+ then (ttx.recipient == casinoAddr)
115+ else false
116+ let casinoCanTake = if (if (casinoCanTakePrize)
117+ then true
118+ else casinoCanEmergencyTakeTurn)
119+ then (ttx.recipient == casinoAddr)
120+ else false
121+ if (if (playerCanTake)
122+ then true
123+ else casinoCanTake)
124+ then withdrawCorrect
125+ else false
126+ case _ =>
127+ true
128+}

github/deemru/w8io/169f3d6 
14.64 ms