tx · 134hALgiaMpYVRPUigiVtwnvfri4c6sxnZNJHCBEyiPy

3Mycg1A1qAQZZJMebf1J4oky79DikqhUuJB:  -0.01000000 Waves

2018.11.16 18:02 [378458] smart account 3Mycg1A1qAQZZJMebf1J4oky79DikqhUuJB > SELF 0.00000000 Waves

{ "type": 13, "id": "134hALgiaMpYVRPUigiVtwnvfri4c6sxnZNJHCBEyiPy", "fee": 1000000, "feeAssetId": null, "timestamp": 1542380521510, "version": 1, "sender": "3Mycg1A1qAQZZJMebf1J4oky79DikqhUuJB", "senderPublicKey": "BFwU8YuBsqRMYJVTk2gpX7ion3H9NJCDNTdDaYVSWNt4", "proofs": [ "5CBUABQMqzquQ9M7748G8Bu3adHc3fe6jUza9HQAbUusntE6EdrgbE3y38hp5wU8GBJgUyCMxKD78j5prdF3xYAe" ], "script": "base64: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AQAAAAEhAAAAAQUAAAAPY2FzaW5vUGxhY2VkQmV0BwkAAGYAAAACCQAAZAAAAAIFAAAABXN0YXJ0BQAAABBjYXNpbm9DaG9pY2VUaW1lBQAAAAZoZWlnaHQHAwUAAAAMaW5wdXRDb3JyZWN0AwUAAAAKcGxheWVyVHVybgYFAAAACmNhc2lub1R1cm4HAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAABNUcmFuc2ZlclRyYW5zYWN0aW9uBAAAAAN0dHgFAAAAByRtYXRjaDAEAAAAD3dpdGhkcmF3Q29ycmVjdAMJAABnAAAAAggFAAAAA3R0eAAAAAZhbW91bnQAAAAAAACYloAJAABnAAAAAgAAAAAAAA9CQAgFAAAAA3R0eAAAAANmZWUHBAAAAA5wbGF5ZXJUYWtlVGltZQMDCQAAAAAAAAIIBQAAAAN0dHgAAAAJcmVjaXBpZW50BQAAAApwbGF5ZXJBZGRyCQAAZgAAAAIFAAAABmhlaWdodAkAAGQAAAACBQAAAAVzdGFydAUAAAATcGxheWVyVGFrZVRpbWVTdGFydAcFAAAAD3BsYXllclBsYWNlZEJldAcEAAAADmNhc2lub1Rha2VUaW1lAwMJAAAAAAAAAggFAAAAA3R0eAAAAAlyZWNpcGllbnQFAAAACmNhc2lub0FkZHIJAABmAAAAAgUAAAAGaGVpZ2h0CQAAZAAAAAIFAAAABXN0YXJ0BQAAABNjYXNpbm9UYWtlVGltZVN0YXJ0BwUAAAAPY2FzaW5vUGxhY2VkQmV0BwQAAAAMcGxheWVyQ2hvaXNlCQEAAAAHZXh0cmFjdAAAAAEJAAQdAAAAAggFAAAAAnR4AAAABnNlbmRlcgIAAAAMcGxheWVyQ2hvaWNlBAAAAAxjYXNpbm9DaG9pc2UJAQAAAAdleHRyYWN0AAAAAQkABB0AAAACCAUAAAACdHgAAAAGc2VuZGVyAgAAAAxjYXNpbm9DaG9pY2UEAAAABXJlYWR5AwUAAAAPcGxheWVyUGxhY2VkQmV0BQAAAA9jYXNpbm9QbGFjZWRCZXQHBAAAAAlwbGF5ZXJXaW4DAwUAAAAFcmVhZHkJAAAAAAAAAgUAAAAMcGxheWVyQ2hvaXNlBQAAAAxjYXNpbm9DaG9pc2UHCQAAAAAAAAIIBQAAAAN0dHgAAAAJcmVjaXBpZW50BQAAAApwbGF5ZXJBZGRyBwQAAAAJY2FzaW5vV2luAwMFAAAABXJlYWR5CQEAAAACIT0AAAACBQAAAAxwbGF5ZXJDaG9pc2UFAAAADGNhc2lub0Nob2lzZQcJAAAAAAAAAggFAAAAA3R0eAAAAAlyZWNpcGllbnQFAAAACmNhc2lub0FkZHIHAwMDAwUAAAAJcGxheWVyV2luBgUAAAAJY2FzaW5vV2luBgUAAAAOcGxheWVyVGFrZVRpbWUGBQAAAA5jYXNpbm9UYWtlVGltZQUAAAAPd2l0aGRyYXdDb3JyZWN0Bwai7qtD", "chainId": 84, "height": 378458, "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 bet = 10000000
10+let start = 378457
11+let playerChoiceTime = 100
12+let casinoChoiceTime = 200
13+let playerTakeTimeStart = 1000
14+let casinoTakeTimeStart = 1500
15+let balance = wavesBalance(tx.sender)
16+let casinoChoiceHash = base58'CPAGhCPoDmmr3nU7mncidgnUqw8VW7manPSMZfJaBKaF'
17+let playerPlacedBet = isDefined(getString(tx.sender, "playerChoice"))
18+let casinoPlacedBet = isDefined(getString(tx.sender, "casinoChoice"))
19+match tx {
20+ case dtx: DataTransaction =>
21+ let num = size(dtx.data)
22+ let key = dtx.data[0].key
23+ let choice = extract(getString(dtx.data, key))
24+ let salt = if (isDefined(dtx.data[1].value))
25+ then extract(getString(dtx.data, "salt"))
26+ else ""
27+ let inputCorrect = if (if (if (if ((key == "playerChoice"))
28+ then true
29+ else (key == "casinoChoice"))
30+ then if ((choice == "0"))
31+ then true
32+ else (choice == "1")
33+ else false)
34+ then (balance >= (bet * 2))
35+ else false)
36+ then (2 >= num)
37+ else false
38+ let newHash = keccak256(toBytes((choice + salt)))
39+ let casinoVerified = (newHash == casinoChoiceHash)
40+ let playerTurn = if (if (if ((key == "playerChoice"))
41+ then playerSigned
42+ else false)
43+ then !(playerPlacedBet)
44+ else false)
45+ then ((start + playerChoiceTime) > height)
46+ else false
47+ let casinoTurn = if (if (if (if ((key == "casinoChoice"))
48+ then casinoSigned
49+ else false)
50+ then casinoVerified
51+ else false)
52+ then !(casinoPlacedBet)
53+ else false)
54+ then ((start + casinoChoiceTime) > height)
55+ else false
56+ if (inputCorrect)
57+ then if (playerTurn)
58+ then true
59+ else casinoTurn
60+ else false
61+ case ttx: TransferTransaction =>
62+ let withdrawCorrect = if ((ttx.amount >= 10000000))
63+ then (1000000 >= ttx.fee)
64+ else false
65+ let playerTakeTime = if (if ((ttx.recipient == playerAddr))
66+ then (height > (start + playerTakeTimeStart))
67+ else false)
68+ then playerPlacedBet
69+ else false
70+ let casinoTakeTime = if (if ((ttx.recipient == casinoAddr))
71+ then (height > (start + casinoTakeTimeStart))
72+ else false)
73+ then casinoPlacedBet
74+ else false
75+ let playerChoise = extract(getString(tx.sender, "playerChoice"))
76+ let casinoChoise = extract(getString(tx.sender, "casinoChoice"))
77+ let ready = if (playerPlacedBet)
78+ then casinoPlacedBet
79+ else false
80+ let playerWin = if (if (ready)
81+ then (playerChoise == casinoChoise)
82+ else false)
83+ then (ttx.recipient == playerAddr)
84+ else false
85+ let casinoWin = if (if (ready)
86+ then (playerChoise != casinoChoise)
87+ else false)
88+ then (ttx.recipient == casinoAddr)
89+ else false
90+ if (if (if (if (playerWin)
91+ then true
92+ else casinoWin)
93+ then true
94+ else playerTakeTime)
95+ then true
96+ else casinoTakeTime)
97+ then withdrawCorrect
98+ else false
99+ case _ =>
100+ true
101+}

github/deemru/w8io/026f985 
20.83 ms