tx · 64Mt3478zpgw6Sh8xKihXCmdwBhD1SRWC1u3xA7Pr91T

3PMVsY1G82ye8TRcuZXsTDuuM493t4Duf5u:  -0.01400000 Waves

2019.05.14 12:56 [1525913] smart account 3PMVsY1G82ye8TRcuZXsTDuuM493t4Duf5u > SELF 0.00000000 Waves

{ "type": 13, "id": "64Mt3478zpgw6Sh8xKihXCmdwBhD1SRWC1u3xA7Pr91T", "fee": 1400000, "feeAssetId": null, "timestamp": 1557827788868, "version": 1, "sender": "3PMVsY1G82ye8TRcuZXsTDuuM493t4Duf5u", "senderPublicKey": "HeZQiJwDiD5Sm6947ApEu4AD9Vnr9qManYWnd6whQWAS", "proofs": [ "V8Z3rTWfDDVvhL2NRBE6Yq5aSFwDHhdEXPJWSwythxuRBubLnVmKppmYwdso3Va2ChTJmgLU4bYVBaVHSNr7uiJ" ], "script": "base64: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", "chainId": 87, "height": 1525913, "spentComplexity": 0 } View: original | compacted Prev: 5v7RLQTtdMcdJTFJEGQwisU17aTzKsAbvsVA86hgiexe Next: F1m8Ec4DHL1yHPXtLcYsSfQvXTMhBm1yEwvS3yb2gqy8 Diff:
OldNewDifferences
159159 then throw("t:r:3")
160160 else true
161161 }
162- else true
162+ else throw("t:2")
163163 case st: SetScriptTransaction =>
164164 sigVerify(st.bodyBytes, st.proofs[0], tx.senderPublicKey)
165165 case _ =>
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")
100100 else true
101101 }
102102 else if ((type == "refund"))
103103 then {
104104 let paymentTxId = extract(getString(dt.data, (gameId + "_payment_tx_id")))
105105 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")
110110 else if (!(isDefined(getInteger(dt.data, (refundTtxId + "_refund_amount")))))
111111 then throw("d:r:3")
112112 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 }
162- else true
162+ 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/3ef1775 
95.57 ms