tx · GVEQ4BGfHw7jeZu32EFKNfNkuSdCzF5aSbwSxb4dLBgf

3N5ezXT9QVpBcxseKRkqbLdTRSUkbMJLzbD:  -0.01400000 Waves

2019.03.20 19:25 [544853] smart account 3N5ezXT9QVpBcxseKRkqbLdTRSUkbMJLzbD > SELF 0.00000000 Waves

{ "type": 13, "id": "GVEQ4BGfHw7jeZu32EFKNfNkuSdCzF5aSbwSxb4dLBgf", "fee": 1400000, "feeAssetId": null, "timestamp": 1553099137736, "version": 1, "sender": "3N5ezXT9QVpBcxseKRkqbLdTRSUkbMJLzbD", "senderPublicKey": "HMMwXJWPUWM7VKP5hJaoazWJiLMZZSta2F9AaWkUk1FX", "proofs": [ "3iMbBnD6mikDwU6ttAJvubfoDLsHbWYWNg7128gQAxws69N1sReiKj6m6ZUysi9Vd82WYdFongt86hMBDdh9G7i7" ], "script": "base64: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", "chainId": 84, "height": 544853, "spentComplexity": 0 } View: original | compacted Prev: 74sxUfaGmRtAjjmjArHmpcNhEp4UEhR7jY75dVG2Z3VW Next: none Diff:
OldNewDifferences
3939 let player1TxId = extract(getString(dt.data, (gameId + "_tx1")))
4040 let player2 = extract(getString(dt.data, (gameId + "_player2")))
4141 let player2TxId = extract(getString(dt.data, (gameId + "_tx2")))
42- let startId = extract(getString(dt.data, (gameId + "_start_id")))
4342 let player1Tx = transactionById(fromBase58String(player1TxId))
4443 let player2Tx = transactionById(fromBase58String(player2TxId))
4544 let tr1Ok = match player1Tx {
103102 else if ((type == "refund"))
104103 then {
105104 let paymentTxId = extract(getString(dt.data, (gameId + "_payment_tx_id")))
105+ let refundTtxId = extract(getString(dt.data, (gameId + "_refund_ttx_id")))
106106 if (isDefined(getBoolean(me, ("used_tx_" + paymentTxId))))
107107 then throw("d:r:1")
108108 else if (!(isDefined(getBoolean(dt.data, ("used_tx_" + paymentTxId)))))
109109 then throw("d:r:2")
110- else if (!(isDefined(getInteger(dt.data, (paymentTxId + "_refund_amount")))))
110+ else if (!(isDefined(getInteger(dt.data, (refundTtxId + "_refund_amount")))))
111111 then throw("d:r:3")
112- else if (!(isDefined(getInteger(dt.data, (paymentTxId + "_refund_recipient")))))
112+ else if (!(isDefined(getString(dt.data, (refundTtxId + "_refund_recipient")))))
113113 then throw("d:r:4")
114114 else true
115115 }
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 2 #-}
22 {-# CONTENT_TYPE EXPRESSION #-}
33 let feeAddress = "3N9vD6GdHspqprY2di6N854fuT7ugJPkHo5"
44 let me = tx.sender
55 match tx {
66 case dt: DataTransaction =>
77 let serverSigned = sigVerify(dt.bodyBytes, dt.proofs[0], tx.senderPublicKey)
88 if (!(serverSigned))
99 then throw("d:1")
1010 else {
1111 let type = extract(getString(dt.data, "type"))
1212 let gameId = extract(getString(dt.data, "gameId"))
1313 if ((type == "init"))
1414 then {
1515 let player1 = extract(getString(dt.data, (gameId + "_player1")))
1616 let player1TxId = extract(getString(dt.data, (gameId + "_tx1")))
1717 let player2 = extract(getString(dt.data, (gameId + "_player2")))
1818 let player2TxId = extract(getString(dt.data, (gameId + "_tx2")))
1919 if (!(isDefined(getInteger(dt.data, (gameId + "_winAmount")))))
2020 then throw("d:i:1")
2121 else if (!(isDefined(getInteger(dt.data, (gameId + "_fee_amount")))))
2222 then throw("d:i:2")
2323 else if (!(isDefined(getBinary(dt.data, (gameId + "_squadronHash")))))
2424 then throw("d:i:3")
2525 else if (!(isDefined(getBoolean(dt.data, ("used_tx_" + player1TxId)))))
2626 then throw("d:i:4")
2727 else if (!(isDefined(getBoolean(dt.data, ("used_tx_" + player2TxId)))))
2828 then throw("d:i:5")
2929 else if (isDefined(getBoolean(me, ("used_tx_" + player1TxId))))
3030 then throw("d:i:6")
3131 else if (isDefined(getBoolean(me, ("used_tx_" + player2TxId))))
3232 then throw("d:i:7")
3333 else true
3434 }
3535 else if ((type == "start"))
3636 then {
3737 let betAmount = extract(getInteger(dt.data, (gameId + "_amount")))
3838 let player1 = extract(getString(dt.data, (gameId + "_player1")))
3939 let player1TxId = extract(getString(dt.data, (gameId + "_tx1")))
4040 let player2 = extract(getString(dt.data, (gameId + "_player2")))
4141 let player2TxId = extract(getString(dt.data, (gameId + "_tx2")))
42- let startId = extract(getString(dt.data, (gameId + "_start_id")))
4342 let player1Tx = transactionById(fromBase58String(player1TxId))
4443 let player2Tx = transactionById(fromBase58String(player2TxId))
4544 let tr1Ok = match player1Tx {
4645 case t: TransferTransaction =>
4746 if (if (if (if ((t.amount == betAmount))
4847 then !(isDefined(getString(me, ("used_tx_" + player1TxId))))
4948 else false)
5049 then !(isDefined(t.assetId))
5150 else false)
5251 then (extract(getString(dt.data, ("game_" + toBase58String(addressFromPublicKey(fromBase58String(player1)).bytes)))) == gameId)
5352 else false)
5453 then (t.recipient == me)
5554 else false
5655 case _ =>
5756 false
5857 }
5958 let tr2Ok = match player2Tx {
6059 case t: TransferTransaction =>
6160 if (if (if (if ((t.amount == betAmount))
6261 then !(isDefined(getString(me, ("used_tx_" + player2TxId))))
6362 else false)
6463 then !(isDefined(t.assetId))
6564 else false)
6665 then (extract(getString(dt.data, ("game_" + toBase58String(addressFromPublicKey(fromBase58String(player2)).bytes)))) == gameId)
6766 else false)
6867 then (t.recipient == me)
6968 else false
7069 case _ =>
7170 false
7271 }
7372 if (!(tr1Ok))
7473 then throw("d:s:1")
7574 else if (!(tr2Ok))
7675 then throw("d:s:2")
7776 else true
7877 }
7978 else if ((type == "finish"))
8079 then {
8180 let winner = extract(getString(dt.data, (gameId + "_winner")))
8281 let correctWinner = if ((winner == extract(getString(me, (gameId + "_player1")))))
8382 then true
8483 else (winner == extract(getString(me, (gameId + "_player2"))))
8584 let squadron1 = extract(getBinary(dt.data, (gameId + "_squadron1")))
8685 let squadron2 = extract(getBinary(dt.data, (gameId + "_squadron2")))
8786 let gameSalt = extract(getBinary(dt.data, (gameId + "_salt")))
8887 let correctSquadrons = (sha256(((squadron1 + squadron2) + gameSalt)) == extract(getBinary(me, (gameId + "_squadronHash"))))
8988 let payoutTxId = extract(getString(dt.data, (gameId + "_payout_tx_id")))
9089 let payoutKey = extract(getString(dt.data, (payoutTxId + "_payout")))
9190 let feeTxId = extract(getString(dt.data, (gameId + "_fee_tx_id")))
9291 let feeKey = extract(getString(dt.data, (feeTxId + "_fee")))
9392 if (!(correctWinner))
9493 then throw("d:f:1")
9594 else if (!(correctSquadrons))
9695 then throw("d:f:2")
9796 else if ((payoutKey != (gameId + "_winAmount")))
9897 then throw("d:f:3")
9998 else if ((feeKey != (gameId + "_fee_amount")))
10099 then throw("d:f:4")
101100 else true
102101 }
103102 else if ((type == "refund"))
104103 then {
105104 let paymentTxId = extract(getString(dt.data, (gameId + "_payment_tx_id")))
105+ let refundTtxId = extract(getString(dt.data, (gameId + "_refund_ttx_id")))
106106 if (isDefined(getBoolean(me, ("used_tx_" + paymentTxId))))
107107 then throw("d:r:1")
108108 else if (!(isDefined(getBoolean(dt.data, ("used_tx_" + paymentTxId)))))
109109 then throw("d:r:2")
110- else if (!(isDefined(getInteger(dt.data, (paymentTxId + "_refund_amount")))))
110+ else if (!(isDefined(getInteger(dt.data, (refundTtxId + "_refund_amount")))))
111111 then throw("d:r:3")
112- else if (!(isDefined(getInteger(dt.data, (paymentTxId + "_refund_recipient")))))
112+ else if (!(isDefined(getString(dt.data, (refundTtxId + "_refund_recipient")))))
113113 then throw("d:r:4")
114114 else true
115115 }
116116 else throw(("d:2:" + type))
117117 }
118118 case tt: TransferTransaction =>
119119 let serverSigned = sigVerify(tt.bodyBytes, tt.proofs[0], tx.senderPublicKey)
120120 let recipientAddr = toBase58String(addressFromRecipient(tt.recipient).bytes)
121121 if (!(serverSigned))
122122 then throw("t:1")
123123 else if (isDefined(getString(me, (toBase58String(tt.id) + "_payout"))))
124124 then {
125125 let gameId = extract(getString(me, ("game_" + recipientAddr)))
126126 let winner = extract(getString(me, (gameId + "_winner")))
127127 let winnerAddr = toBase58String(addressFromPublicKey(fromBase58String(winner)).bytes)
128128 let winAmountKey = extract(getString(me, (toBase58String(tt.id) + "_payout")))
129129 let winAmount = extract(getInteger(me, winAmountKey))
130130 if ((tt.amount != winAmount))
131131 then throw("t:p:1")
132132 else if (isDefined(tt.assetId))
133133 then throw("t:p:2")
134134 else if ((winnerAddr != recipientAddr))
135135 then throw("t:p:3")
136136 else true
137137 }
138138 else if (isDefined(getString(me, (toBase58String(tt.id) + "_fee"))))
139139 then {
140140 let feeAmountKey = extract(getString(me, (toBase58String(tt.id) + "_fee")))
141141 let feeAmount = extract(getInteger(me, feeAmountKey))
142142 if ((tt.amount != feeAmount))
143143 then throw("t:f:1")
144144 else if (isDefined(tt.assetId))
145145 then throw("t:f:2")
146146 else if ((recipientAddr != feeAddress))
147147 then throw("t:f:3")
148148 else true
149149 }
150150 else if (isDefined(getInteger(me, (toBase58String(tt.id) + "_refund_amount"))))
151151 then {
152152 let refundAmount = extract(getInteger(me, (toBase58String(tt.id) + "_refund_amount")))
153153 let refundRecipient = extract(getString(me, (toBase58String(tt.id) + "_refund_recipient")))
154154 if ((tt.amount != refundAmount))
155155 then throw("t:r:1")
156156 else if (isDefined(tt.assetId))
157157 then throw("t:r:2")
158158 else if ((recipientAddr != refundRecipient))
159159 then throw("t:r:3")
160160 else true
161161 }
162162 else throw("t:2")
163163 case st: SetScriptTransaction =>
164164 sigVerify(st.bodyBytes, st.proofs[0], tx.senderPublicKey)
165165 case _ =>
166166 false
167167 }

github/deemru/w8io/169f3d6 
52.98 ms