tx · 8E9eFXsfjdNghQfNTd4CjxnaostzQov1QCJKg7Py5jQU

3MrTMXEvaz63AHA6K7U5hDgTY54gZZe3R4g:  -0.01400000 Waves

2019.03.05 18:37 [522821] smart account 3MrTMXEvaz63AHA6K7U5hDgTY54gZZe3R4g > SELF 0.00000000 Waves

{ "type": 13, "id": "8E9eFXsfjdNghQfNTd4CjxnaostzQov1QCJKg7Py5jQU", "fee": 1400000, "feeAssetId": null, "timestamp": 1551800232844, "version": 1, "sender": "3MrTMXEvaz63AHA6K7U5hDgTY54gZZe3R4g", "senderPublicKey": "CEx6vd7D5Czxcfshd4vLpSw4LEmGULQw5avVZ7Vfrzgo", "proofs": [ "2qXEL3TVECRbs1HdTLrdEJ9PAXZfgYixeBu3hUZ7jhD6xct6tLHt4dLY4jJstgreSR9Zc8PHnuRAgiRFcYgk215c" ], "script": "base64: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", "chainId": 84, "height": 522821, "spentComplexity": 0 } View: original | compacted Prev: Gq5LDbrXUnFLGhaeRuCETmtuszScLiRD3xDbqHjVgvEr Next: 7ZhKs6rckBAhii26kwTnviponCpRvK9CdbUrrU8PLQQh Diff:
OldNewDifferences
7171 then throw("winner incorrect")
7272 else if (!(correctSquadrons))
7373 then throw("squadrons incorrect")
74- else throw("dtx:finish ok")
74+ else true
7575 }
7676 else if ((type == "payout"))
7777 then throw("dtx:payout - success")
78- else if ((type == "refund"))
79- then throw("dtx:refund - success")
80- else throw(("dtx:type_unknown " + type))
78+ else throw(("dtx:type_unknown " + type))
8179 case tt: TransferTransaction =>
8280 sigVerify(tt.bodyBytes, tt.proofs[0], tx.senderPublicKey)
8381 case st: SetScriptTransaction =>
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 (!(serverSigned))
4949 then throw("not server signed")
5050 else if (!(tr1Ok))
5151 then throw("not tr1 ok")
5252 else if (!(tr2Ok))
5353 then throw("not tr2 ok")
5454 else if (!(dtStartDataDefined))
5555 then throw("not dt start data defined")
5656 else true
5757 }
5858 else if ((type == "finish"))
5959 then {
6060 let winner = extract(getString(dt.data, (gameId + "_winner")))
6161 let correctWinner = if ((winner == extract(getString(tx.sender, (gameId + "_player1")))))
6262 then true
6363 else (winner == extract(getString(tx.sender, (gameId + "_player2"))))
6464 let squadron1 = extract(getBinary(dt.data, (gameId + "_squadron1")))
6565 let squadron2 = extract(getBinary(dt.data, (gameId + "_squadron2")))
6666 let gameSalt = extract(getBinary(dt.data, (gameId + "_salt")))
6767 let correctSquadrons = (sha256(((squadron1 + squadron2) + gameSalt)) == extract(getBinary(tx.sender, (gameId + "_squadronHash"))))
6868 if (!(serverSigned))
6969 then throw("not server signed")
7070 else if (!(correctWinner))
7171 then throw("winner incorrect")
7272 else if (!(correctSquadrons))
7373 then throw("squadrons incorrect")
74- else throw("dtx:finish ok")
74+ else true
7575 }
7676 else if ((type == "payout"))
7777 then throw("dtx:payout - success")
78- else if ((type == "refund"))
79- then throw("dtx:refund - success")
80- else throw(("dtx:type_unknown " + type))
78+ else throw(("dtx:type_unknown " + type))
8179 case tt: TransferTransaction =>
8280 sigVerify(tt.bodyBytes, tt.proofs[0], tx.senderPublicKey)
8381 case st: SetScriptTransaction =>
8482 sigVerify(st.bodyBytes, st.proofs[0], tx.senderPublicKey)
8583 case _ =>
8684 false
8785 }

github/deemru/w8io/873ac7e 
23.37 ms