tx · DqdYACqjeeW2kjvXb8eeeyzffMVoRi28jP9j2ErCcMmc

3MrTMXEvaz63AHA6K7U5hDgTY54gZZe3R4g:  -0.01400000 Waves

2019.03.05 18:10 [522792] smart account 3MrTMXEvaz63AHA6K7U5hDgTY54gZZe3R4g > SELF 0.00000000 Waves

{ "type": 13, "id": "DqdYACqjeeW2kjvXb8eeeyzffMVoRi28jP9j2ErCcMmc", "fee": 1400000, "feeAssetId": null, "timestamp": 1551798689199, "version": 1, "sender": "3MrTMXEvaz63AHA6K7U5hDgTY54gZZe3R4g", "senderPublicKey": "CEx6vd7D5Czxcfshd4vLpSw4LEmGULQw5avVZ7Vfrzgo", "proofs": [ "4KkpUqi5mgFFvUwnpqYwaXUaoNfx7wy86biLVAKA379RuURBxkTpZtHhKHT4zWvsFkPJQRVNEcqouhMVPZ3da4GH" ], "script": "base64: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", "chainId": 84, "height": 522792, "spentComplexity": 0 } View: original | compacted Prev: 2tgTniRMz6NhQXbqr8N8LXRraaveLwxr6Y7QUiBnLNBx Next: 4x1e9BHs33GTiCpzzbZ9fWULeyjaoX8f47UdARoBfJn8 Diff:
OldNewDifferences
5656 else throw("dtx:start - fail")
5757 }
5858 else if ((type == "finish"))
59- then throw("dtx:finish - success")
59+ then {
60+ let squadron1 = extract(getBinary(dt.data, (gameId + "_squadron1")))
61+ let squadron2 = extract(getBinary(dt.data, (gameId + "_squadron2")))
62+ let gameSalt = extract(getBinary(dt.data, (gameId + "_salt")))
63+ let correctSquadrons = (sha256(((squadron1 + squadron2) + gameSalt)) == extract(getBinary(tx.sender, (gameId + "_squadronHash"))))
64+ if (correctSquadrons)
65+ then throw("correct squadrons")
66+ else throw("incorrect squadrons")
67+ }
6068 else if ((type == "payout"))
6169 then throw("dtx:payout - success")
6270 else if ((type == "refund"))
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 }
4848 if (if (if (if (serverSigned)
4949 then tr1Ok
5050 else false)
5151 then tr2Ok
5252 else false)
5353 then dtStartDataDefined
5454 else false)
5555 then throw("dtx:start - success")
5656 else throw("dtx:start - fail")
5757 }
5858 else if ((type == "finish"))
59- then throw("dtx:finish - success")
59+ then {
60+ let squadron1 = extract(getBinary(dt.data, (gameId + "_squadron1")))
61+ let squadron2 = extract(getBinary(dt.data, (gameId + "_squadron2")))
62+ let gameSalt = extract(getBinary(dt.data, (gameId + "_salt")))
63+ let correctSquadrons = (sha256(((squadron1 + squadron2) + gameSalt)) == extract(getBinary(tx.sender, (gameId + "_squadronHash"))))
64+ if (correctSquadrons)
65+ then throw("correct squadrons")
66+ else throw("incorrect squadrons")
67+ }
6068 else if ((type == "payout"))
6169 then throw("dtx:payout - success")
6270 else if ((type == "refund"))
6371 then throw("dtx:refund - success")
6472 else throw(("dtx:type_unknown " + type))
6573 case tt: TransferTransaction =>
6674 sigVerify(tt.bodyBytes, tt.proofs[0], tx.senderPublicKey)
6775 case st: SetScriptTransaction =>
6876 sigVerify(st.bodyBytes, st.proofs[0], tx.senderPublicKey)
6977 case _ =>
7078 false
7179 }

github/deemru/w8io/c3f4982 
29.87 ms