tx · EsNL6QgZaNWX2A2S5QJUgqBdCfXhkbMCBYyXFYcUh8QZ

3PMVsY1G82ye8TRcuZXsTDuuM493t4Duf5u:  -0.01400000 Waves

2019.04.10 14:09 [1476368] smart account 3PMVsY1G82ye8TRcuZXsTDuuM493t4Duf5u > SELF 0.00000000 Waves

{ "type": 13, "id": "EsNL6QgZaNWX2A2S5QJUgqBdCfXhkbMCBYyXFYcUh8QZ", "fee": 1400000, "feeAssetId": null, "timestamp": 1554894628682, "version": 1, "sender": "3PMVsY1G82ye8TRcuZXsTDuuM493t4Duf5u", "senderPublicKey": "HeZQiJwDiD5Sm6947ApEu4AD9Vnr9qManYWnd6whQWAS", "proofs": [ "2qZCS61pev5xcXz5wwAQvnY9NCCZ1jK6ePNY3DPDNHVGozFEgtcfeJvxPzaa8kwnxvat7bV2zaURuS34NDTHrorB" ], "script": "base64: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", "chainId": 87, "height": 1476368, "spentComplexity": 0 } View: original | compacted Prev: faMEsrWFCnWxaf34cHDBkDURK6Uhvgm84b2xzVGztNH Next: HgFRgicAFMwVButWsPN5AbMVu3PAgeay4RYMjYbVS18D Diff:
OldNewDifferences
9797 then throw("d:f:3")
9898 else if ((feeKey != (gameId + "_fee_amount")))
9999 then throw("d:f:4")
100- else true
100+ else if (isDefined(getString(me, (gameId + "_winner"))))
101+ then throw("d:f:5")
102+ else true
101103 }
102104 else if ((type == "refund"))
103105 then {
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 2 #-}
22 {-# CONTENT_TYPE EXPRESSION #-}
33 let feeAddress = "3PPothMTqj2VsTVXavUH4w1Hck37Lv7wHKh"
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 player1Tx = transactionById(fromBase58String(player1TxId))
4141 let player2 = extract(getString(dt.data, (gameId + "_player2")))
4242 let player2TxId = extract(getString(dt.data, (gameId + "_tx2")))
4343 let player2Tx = transactionById(fromBase58String(player2TxId))
4444 let tr1Ok = match player1Tx {
4545 case t: TransferTransaction =>
4646 if (if (if (if ((t.amount == betAmount))
4747 then !(isDefined(getString(me, ("used_tx_" + player1TxId))))
4848 else false)
4949 then !(isDefined(t.assetId))
5050 else false)
5151 then (extract(getString(dt.data, ("game_" + toBase58String(addressFromPublicKey(fromBase58String(player1)).bytes)))) == gameId)
5252 else false)
5353 then (t.recipient == me)
5454 else false
5555 case _ =>
5656 false
5757 }
5858 let tr2Ok = match player2Tx {
5959 case t: TransferTransaction =>
6060 if (if (if (if ((t.amount == betAmount))
6161 then !(isDefined(getString(me, ("used_tx_" + player2TxId))))
6262 else false)
6363 then !(isDefined(t.assetId))
6464 else false)
6565 then (extract(getString(dt.data, ("game_" + toBase58String(addressFromPublicKey(fromBase58String(player2)).bytes)))) == gameId)
6666 else false)
6767 then (t.recipient == me)
6868 else false
6969 case _ =>
7070 false
7171 }
7272 if (!(tr1Ok))
7373 then throw("d:s:1")
7474 else if (!(tr2Ok))
7575 then throw("d:s:2")
7676 else true
7777 }
7878 else if ((type == "finish"))
7979 then {
8080 let winner = extract(getString(dt.data, (gameId + "_winner")))
8181 let correctWinner = if ((winner == extract(getString(me, (gameId + "_player1")))))
8282 then true
8383 else (winner == extract(getString(me, (gameId + "_player2"))))
8484 let squadron1 = extract(getBinary(dt.data, (gameId + "_squadron1")))
8585 let squadron2 = extract(getBinary(dt.data, (gameId + "_squadron2")))
8686 let gameSalt = extract(getBinary(dt.data, (gameId + "_salt")))
8787 let correctSquadrons = (sha256(((squadron1 + squadron2) + gameSalt)) == extract(getBinary(me, (gameId + "_squadronHash"))))
8888 let payoutTxId = extract(getString(dt.data, (gameId + "_payout_tx_id")))
8989 let payoutKey = extract(getString(dt.data, (payoutTxId + "_payout")))
9090 let feeTxId = extract(getString(dt.data, (gameId + "_fee_tx_id")))
9191 let feeKey = extract(getString(dt.data, (feeTxId + "_fee")))
9292 if (!(correctWinner))
9393 then throw("d:f:1")
9494 else if (!(correctSquadrons))
9595 then throw("d:f:2")
9696 else if ((payoutKey != (gameId + "_winAmount")))
9797 then throw("d:f:3")
9898 else if ((feeKey != (gameId + "_fee_amount")))
9999 then throw("d:f:4")
100- else true
100+ else if (isDefined(getString(me, (gameId + "_winner"))))
101+ then throw("d:f:5")
102+ else true
101103 }
102104 else if ((type == "refund"))
103105 then {
104106 let paymentTxId = extract(getString(dt.data, (gameId + "_payment_tx_id")))
105107 let refundTtxId = extract(getString(dt.data, (gameId + "_refund_ttx_id")))
106108 if (isDefined(getBoolean(me, ("used_tx_" + paymentTxId))))
107109 then throw("d:r:1")
108110 else if (!(isDefined(getBoolean(dt.data, ("used_tx_" + paymentTxId)))))
109111 then throw("d:r:2")
110112 else if (!(isDefined(getInteger(dt.data, (refundTtxId + "_refund_amount")))))
111113 then throw("d:r:3")
112114 else if (!(isDefined(getString(dt.data, (refundTtxId + "_refund_recipient")))))
113115 then throw("d:r:4")
114116 else true
115117 }
116118 else throw(("d:2:" + type))
117119 }
118120 case tt: TransferTransaction =>
119121 let serverSigned = sigVerify(tt.bodyBytes, tt.proofs[0], tx.senderPublicKey)
120122 let recipientAddr = toBase58String(addressFromRecipient(tt.recipient).bytes)
121123 if (!(serverSigned))
122124 then throw("t:1")
123125 else if (isDefined(getString(me, (toBase58String(tt.id) + "_payout"))))
124126 then {
125127 let gameId = extract(getString(me, ("game_" + recipientAddr)))
126128 let winner = extract(getString(me, (gameId + "_winner")))
127129 let winnerAddr = toBase58String(addressFromPublicKey(fromBase58String(winner)).bytes)
128130 let winAmountKey = extract(getString(me, (toBase58String(tt.id) + "_payout")))
129131 let winAmount = extract(getInteger(me, winAmountKey))
130132 if ((tt.amount != winAmount))
131133 then throw("t:p:1")
132134 else if (isDefined(tt.assetId))
133135 then throw("t:p:2")
134136 else if ((winnerAddr != recipientAddr))
135137 then throw("t:p:3")
136138 else true
137139 }
138140 else if (isDefined(getString(me, (toBase58String(tt.id) + "_fee"))))
139141 then {
140142 let feeAmountKey = extract(getString(me, (toBase58String(tt.id) + "_fee")))
141143 let feeAmount = extract(getInteger(me, feeAmountKey))
142144 if ((tt.amount != feeAmount))
143145 then throw("t:f:1")
144146 else if (isDefined(tt.assetId))
145147 then throw("t:f:2")
146148 else if ((recipientAddr != feeAddress))
147149 then throw("t:f:3")
148150 else true
149151 }
150152 else if (isDefined(getInteger(me, (toBase58String(tt.id) + "_refund_amount"))))
151153 then {
152154 let refundAmount = extract(getInteger(me, (toBase58String(tt.id) + "_refund_amount")))
153155 let refundRecipient = extract(getString(me, (toBase58String(tt.id) + "_refund_recipient")))
154156 if ((tt.amount != refundAmount))
155157 then throw("t:r:1")
156158 else if (isDefined(tt.assetId))
157159 then throw("t:r:2")
158160 else if ((recipientAddr != refundRecipient))
159161 then throw("t:r:3")
160162 else true
161163 }
162164 else throw("t:2")
163165 case st: SetScriptTransaction =>
164166 sigVerify(st.bodyBytes, st.proofs[0], tx.senderPublicKey)
165167 case _ =>
166168 false
167169 }

github/deemru/w8io/6500d08 
81.79 ms