tx · 2SyTVgofkoaTLdNE8b3qCqRKexvPC69zLCR2UkPeRg7p

3MpArhxuLBGPSJcfAW38sUQRjQj7MdfuMhw:  -0.01000000 Waves

2018.12.16 14:31 [407314] smart account 3MpArhxuLBGPSJcfAW38sUQRjQj7MdfuMhw > SELF 0.00000000 Waves

{ "type": 13, "id": "2SyTVgofkoaTLdNE8b3qCqRKexvPC69zLCR2UkPeRg7p", "fee": 1000000, "feeAssetId": null, "timestamp": 1544959945550, "version": 1, "sender": "3MpArhxuLBGPSJcfAW38sUQRjQj7MdfuMhw", "senderPublicKey": "GcumKP6hHJxy1VtAHxgLCPAmpDVRKyJMxoaAVAeFAPjZ", "proofs": [ "46JmFbkFdDMYyzHJoyMQFHd4TKJUr3LNhqfRMc2JdyCHh6A5tZDLUfoyXC1zdFc3MWjqHgyKD23YimS3jreAmwMK" ], "script": "base64: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", "chainId": 84, "height": 407314, "spentComplexity": 0 } View: original | compacted Prev: none Next: CtXd7W5gU8MjukqK1QpoCQyXwZCvpb4APyw8BT8M3gtB Full:
OldNewDifferences
1-# no script
1+{-# STDLIB_VERSION 1 #-}
2+{-# CONTENT_TYPE EXPRESSION #-}
3+let dealer = base58'BrpLMJrt3XATLKfqc24Vf95caJgpz781uz58riLeJAQj'
4+let dealerAddress = addressFromPublicKey(base58'BrpLMJrt3XATLKfqc24Vf95caJgpz781uz58riLeJAQj')
5+let player = base58'Bi48U6i3749BU35R1ANiZSNvQTHwoGcM2GcMGSp3trdR'
6+let playerAddress = addressFromPublicKey(base58'Bi48U6i3749BU35R1ANiZSNvQTHwoGcM2GcMGSp3trdR')
7+let multiSigAddress = addressFromPublicKey(base58'GcumKP6hHJxy1VtAHxgLCPAmpDVRKyJMxoaAVAeFAPjZ')
8+match tx {
9+ case tx: DataTransaction =>
10+ let dealerSigned = if (sigVerify(tx.bodyBytes, tx.proofs[0], dealer))
11+ then 1
12+ else 0
13+ let playerSigned = if (sigVerify(tx.bodyBytes, tx.proofs[1], player))
14+ then 1
15+ else 0
16+ let block = extract(getInteger(multiSigAddress, "block"))
17+ if ((block > 0))
18+ then {
19+ let method = extract(getString(tx.data, "method"))
20+ if ((method == "game"))
21+ then {
22+ let lastBlock = extract(getInteger(multiSigAddress, "lastBlock"))
23+ let newLastBlock = extract(getInteger(tx.data, "lastBlock"))
24+ if ((newLastBlock > lastBlock))
25+ then ((dealerSigned + playerSigned) == 2)
26+ else false
27+ }
28+ else if ((method == "getSaltDealer"))
29+ then (playerSigned == 1)
30+ else if ((method == "getSaltPlayer"))
31+ then (dealerSigned == 1)
32+ else if ((method == "setSaltPlayer"))
33+ then {
34+ let hashLastGame = extract(getString(multiSigAddress, "hashLastGame"))
35+ let hashLastBlock = extract(getString(multiSigAddress, "hashLastBlock"))
36+ let saltPlayer = extract(getString(tx.data, "saltPlayer"))
37+ if ((sha256(toBytes((saltPlayer + hashLastBlock))) == toBytes(hashLastBlock)))
38+ then (playerSigned == 1)
39+ else false
40+ }
41+ else if ((method == "setSaltDealer"))
42+ then {
43+ let hashLastGame = extract(getString(multiSigAddress, "hashLastGame"))
44+ let hashLastBlock = extract(getString(multiSigAddress, "hashLastBlock"))
45+ let saltDealer = extract(getString(tx.data, "saltDealer"))
46+ if ((sha256(toBytes((saltDealer + hashLastGame))) == toBytes(hashLastBlock)))
47+ then (dealerSigned == 1)
48+ else false
49+ }
50+ else false
51+ }
52+ else {
53+ let newBlock = extract(getInteger(tx.data, "block"))
54+ (newBlock > 0)
55+ }
56+ case tt: TransferTransaction =>
57+ let failurePayOut = extract(getBoolean(multiSigAddress, "failurePayOut"))
58+ let lastBlock = extract(getInteger(multiSigAddress, "lastBlock"))
59+ if ((tt.recipient == multiSigAddress))
60+ then if ((dealerAddress == tt.sender))
61+ then (tt.amount != 0)
62+ else (tt.amount != 0)
63+ else if (if ((failurePayOut == true))
64+ then (height > lastBlock)
65+ else false)
66+ then true
67+ else false
68+ case mtx: MassTransferTransaction =>
69+ if ((mtx.sender == multiSigAddress))
70+ then {
71+ let block = extract(getInteger(multiSigAddress, "block"))
72+ if ((height > block))
73+ then true
74+ else {
75+ let failurePayOut = extract(getBoolean(multiSigAddress, "failurePayOut"))
76+ let lastBlock = extract(getInteger(multiSigAddress, "lastBlock"))
77+ if (((lastBlock + 3) > height))
78+ then if ((failurePayOut == false))
79+ then {
80+ let dealerSigned = if (sigVerify(mtx.bodyBytes, mtx.proofs[0], dealer))
81+ then 1
82+ else 0
83+ let playerSigned = if (sigVerify(mtx.bodyBytes, mtx.proofs[1], player))
84+ then 1
85+ else 0
86+ ((dealerSigned + playerSigned) == 2)
87+ }
88+ else false
89+ else false
90+ }
91+ }
92+ else false
93+ case ta: SetScriptTransaction =>
94+ true
95+ case _ =>
96+ false
97+}

github/deemru/w8io/873ac7e 
62.50 ms