tx · HpVWr5r51M4AeuXgMYWD8jhoZR7j1pLy9CCQf7SgivBc

3MrTMXEvaz63AHA6K7U5hDgTY54gZZe3R4g:  -0.01400000 Waves

2019.03.05 18:21 [522804] smart account 3MrTMXEvaz63AHA6K7U5hDgTY54gZZe3R4g > SELF 0.00000000 Waves

{ "type": 13, "id": "HpVWr5r51M4AeuXgMYWD8jhoZR7j1pLy9CCQf7SgivBc", "fee": 1400000, "feeAssetId": null, "timestamp": 1551799290074, "version": 1, "sender": "3MrTMXEvaz63AHA6K7U5hDgTY54gZZe3R4g", "senderPublicKey": "CEx6vd7D5Czxcfshd4vLpSw4LEmGULQw5avVZ7Vfrzgo", "proofs": [ "5UfW1HaEVzb2eWYJM4FNTFTSPtHTUVh1ULvnVV2N4RgZXghkRpSX1gJhuZdP25hHYYJq94YytVFaS7ycFsDzEKsP" ], "script": "base64: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", "chainId": 84, "height": 522804, "spentComplexity": 0 } View: original | compacted Prev: 4x1e9BHs33GTiCpzzbZ9fWULeyjaoX8f47UdARoBfJn8 Next: GVkzERnhd9PQibkxxPFgZcegMGYYXPezw2J9JpcdRKM8 Diff:
OldNewDifferences
4545 case _ =>
4646 false
4747 }
48- if (if (if (if (serverSigned)
49- then tr1Ok
50- else false)
51- then tr2Ok
52- else false)
53- then dtStartDataDefined
54- else false)
55- then true
56- else throw("dtx:start - fail")
48+ if (!(serverSigned))
49+ then throw("not server signed")
50+ else if (!(tr1Ok))
51+ then throw("not tr1 ok")
52+ else if (!(tr2Ok))
53+ then throw("not tr2 ok")
54+ else if (!(dtStartDataDefined))
55+ then throw("not dt start data defined")
56+ else throw("start ok")
5757 }
5858 else if ((type == "finish"))
5959 then {
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 1 #-}
22 {-# CONTENT_TYPE EXPRESSION #-}
33 match tx {
44 case dt: DataTransaction =>
55 let type = extract(getString(dt.data, "type"))
66 let gameId = extract(getString(dt.data, "gameId"))
77 let serverSigned = sigVerify(dt.bodyBytes, dt.proofs[0], tx.senderPublicKey)
88 if ((type == "start"))
99 then {
1010 let betAmount = extract(getInteger(dt.data, (gameId + "_amount")))
1111 let player1 = extract(getString(dt.data, (gameId + "_player1")))
1212 let player1TxId = extract(getString(dt.data, (gameId + "_tx1")))
1313 let player2 = extract(getString(dt.data, (gameId + "_player2")))
1414 let player2TxId = extract(getString(dt.data, (gameId + "_tx2")))
1515 let dtStartDataDefined = if (if (if (isDefined(getInteger(dt.data, (gameId + "_winAmount"))))
1616 then isDefined(getBinary(dt.data, (gameId + "_squadronHash")))
1717 else false)
1818 then isDefined(getBoolean(dt.data, ("used_tx_" + player1TxId)))
1919 else false)
2020 then isDefined(getBoolean(dt.data, ("used_tx_" + player2TxId)))
2121 else false
2222 let player1Tx = transactionById(fromBase58String(player1TxId))
2323 let player2Tx = transactionById(fromBase58String(player2TxId))
2424 let tr1Ok = match player1Tx {
2525 case t: TransferTransaction =>
2626 if (if (if ((t.amount == betAmount))
2727 then !(isDefined(t.assetId))
2828 else false)
2929 then (extract(getString(dt.data, ("game_" + toBase58String(addressFromPublicKey(fromBase58String(player1)).bytes)))) == gameId)
3030 else false)
3131 then (t.recipient == tx.sender)
3232 else false
3333 case _ =>
3434 false
3535 }
3636 let tr2Ok = match player2Tx {
3737 case t: TransferTransaction =>
3838 if (if (if ((t.amount == betAmount))
3939 then !(isDefined(t.assetId))
4040 else false)
4141 then (extract(getString(dt.data, ("game_" + toBase58String(addressFromPublicKey(fromBase58String(player2)).bytes)))) == gameId)
4242 else false)
4343 then (t.recipient == tx.sender)
4444 else false
4545 case _ =>
4646 false
4747 }
48- if (if (if (if (serverSigned)
49- then tr1Ok
50- else false)
51- then tr2Ok
52- else false)
53- then dtStartDataDefined
54- else false)
55- then true
56- else throw("dtx:start - fail")
48+ if (!(serverSigned))
49+ then throw("not server signed")
50+ else if (!(tr1Ok))
51+ then throw("not tr1 ok")
52+ else if (!(tr2Ok))
53+ then throw("not tr2 ok")
54+ else if (!(dtStartDataDefined))
55+ then throw("not dt start data defined")
56+ else throw("start ok")
5757 }
5858 else if ((type == "finish"))
5959 then {
6060 let squadron1 = extract(getBinary(dt.data, (gameId + "_squadron1")))
6161 let squadron2 = extract(getBinary(dt.data, (gameId + "_squadron2")))
6262 let gameSalt = extract(getBinary(dt.data, (gameId + "_salt")))
6363 let correctSquadrons = (sha256(((squadron1 + squadron2) + gameSalt)) == extract(getBinary(tx.sender, (gameId + "_squadronHash"))))
6464 if (correctSquadrons)
6565 then throw("correct squadrons")
6666 else throw("incorrect squadrons")
6767 }
6868 else if ((type == "payout"))
6969 then throw("dtx:payout - success")
7070 else if ((type == "refund"))
7171 then throw("dtx:refund - success")
7272 else throw(("dtx:type_unknown " + type))
7373 case tt: TransferTransaction =>
7474 sigVerify(tt.bodyBytes, tt.proofs[0], tx.senderPublicKey)
7575 case st: SetScriptTransaction =>
7676 sigVerify(st.bodyBytes, st.proofs[0], tx.senderPublicKey)
7777 case _ =>
7878 false
7979 }

github/deemru/w8io/873ac7e 
34.44 ms