tx · GTmjYGR3d9kpu8q4cdmZTu3Z2SQHpC9omAXdiQVi9LiA

3MwR2FzFtbHeds3NzvkbiaYMVNhbtqcfRPU:  -0.01400000 Waves

2019.02.10 16:28 [489283] smart account 3MwR2FzFtbHeds3NzvkbiaYMVNhbtqcfRPU > SELF 0.00000000 Waves

{ "type": 13, "id": "GTmjYGR3d9kpu8q4cdmZTu3Z2SQHpC9omAXdiQVi9LiA", "fee": 1400000, "feeAssetId": null, "timestamp": 1549816117357, "version": 1, "sender": "3MwR2FzFtbHeds3NzvkbiaYMVNhbtqcfRPU", "senderPublicKey": "H5rtwGVnkSHDfz6msD7itGURoKMXvvDwPoup1VESxfjJ", "proofs": [ "3EWjv5bqH14vqYcnatsbQkin7iJVbqhAK7KALZ6dr7vVXBi5ZZmYoaEtcfCQ6GR84DPcQbVDEMk3EgUSCj5HgHWS" ], "script": "base64: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", "chainId": 84, "height": 489283, "spentComplexity": 0 } View: original | compacted Prev: AMhwRMpgD9V1PF7acEWr3Tr7zufPXy359ofEwagv1sYf Next: 6Yc8haJb6FhejVevVQmE9NuDfEEFRgb51UbKFGGXVLxj Diff:
OldNewDifferences
7272 then isDataCountOk
7373 else false)
7474 then {
75- let att = paymentTx.attachment
76- let type = dropRightBytes(takeRightBytes(att, 2), 1)
77- let val = takeRightBytes(att, 1)
78- let key = dropRightBytes(att, 2)
79- let heightRes = extract(getInteger(oracle, (toBase58String(key) + "height")))
80- let isCheater = (extract(transactionHeightById(paymentTx.id)) >= heightRes)
81- let valComplex = extract(getBinary(oracle, toBase58String(key)))
75+ let guess = extract(getBinary(me, paymentTxIdStr))
76+ let type = take(guess, 1)
77+ let val = drop(guess, 1)
78+ let key = extract(getString(me, (toBase58String(tx.proofs[1]) + "_round")))
79+ let valComplex = extract(getBinary(oracle, key))
8280 let koeff = if ((type == drop(toBytes(0), 7)))
8381 then 35
8482 else if ((type == drop(toBytes(1), 7)))
110108 then (val != toBytes(38))
111109 else false
112110 let isMoneyStillEnough = (((paymentTx.amount * koeff) + minWithdrawFee) > newFees)
113- if (if (isWin)
114- then !(isCheater)
115- else false)
111+ if (isWin)
116112 then isMoneyStillEnough
117113 else false
118114 }
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 1 #-}
22 {-# CONTENT_TYPE EXPRESSION #-}
33 let me = tx.sender
44 let oracle = extract(addressFromString("3NCzaYTNDGtR8zf9yfcqePFjCqFx9S5zhs4"))
55 let minWithdrawFee = 400000
66 match tx {
77 case withdrawTx: TransferTransaction =>
88 let txId = extract(getString(me, toBase58String(tx.proofs[1])))
99 match transactionById(tx.proofs[1]) {
1010 case paymentTx: TransferTransaction =>
1111 let isPaymentTookPlace = if ((txId == toBase58String(tx.id)))
1212 then sigVerify(tx.bodyBytes, tx.proofs[0], paymentTx.senderPublicKey)
1313 else false
1414 let feesKey = (toBase58String(tx.proofs[1]) + "_fees")
1515 let dataTxsFees = extract(getInteger(me, feesKey))
1616 let guess = extract(getBinary(me, toBase58String(tx.proofs[1])))
1717 let type = take(guess, 1)
1818 let val = drop(guess, 1)
1919 let key = extract(getString(me, (toBase58String(tx.proofs[1]) + "_round")))
2020 let valComplex = extract(getBinary(oracle, key))
2121 let koeff = if ((type == drop(toBytes(0), 7)))
2222 then 35
2323 else if ((type == drop(toBytes(1), 7)))
2424 then 2
2525 else if ((type == drop(toBytes(2), 7)))
2626 then 2
2727 else if ((type == drop(toBytes(3), 7)))
2828 then 2
2929 else if ((type == drop(toBytes(4), 7)))
3030 then 3
3131 else if ((type == drop(toBytes(5), 7)))
3232 then 3
3333 else 0
3434 let correctAmount = (((paymentTx.amount * koeff) - dataTxsFees) - withdrawTx.fee)
3535 let isAmountOk = (withdrawTx.amount == correctAmount)
3636 let isInWaves = if (!(isDefined(withdrawTx.feeAssetId)))
3737 then !(isDefined(withdrawTx.assetId))
3838 else false
3939 if (if (isPaymentTookPlace)
4040 then isAmountOk
4141 else false)
4242 then isInWaves
4343 else false
4444 case _ =>
4545 false
4646 }
4747 case dtx: DataTransaction =>
4848 if ((size(dtx.data) == 2))
4949 then {
5050 let isDataCountOk = (size(dtx.data) == 2)
5151 let paymentTxIdStr = dropRight(extract(dtx.data[0].key), 9)
5252 let feesKey = (paymentTxIdStr + "_withdraw_fees")
5353 let paymentTx = transactionById(fromBase58String(paymentTxIdStr))
5454 let newFees = extract(getInteger(dtx.data, feesKey))
5555 let oldFees = if (isDefined(getInteger(me, feesKey)))
5656 then extract(getInteger(me, feesKey))
5757 else 0
5858 let isFeeCorrect = (newFees == (oldFees + dtx.fee))
5959 let isPaymentAlreadyMentioned = isDefined(getString(me, paymentTxIdStr))
6060 let withdrawTransactionId = fromBase58String(extract(getString(me, paymentTxIdStr)))
6161 let isWithdrawExist = isDefined(transactionById(withdrawTransactionId))
6262 match paymentTx {
6363 case paymentTx: TransferTransaction =>
6464 let isDtxSignedByPayer = sigVerify(dtx.bodyBytes, dtx.proofs[0], paymentTx.senderPublicKey)
6565 if (if (if (if (if (!(isPaymentAlreadyMentioned))
6666 then true
6767 else !(isWithdrawExist))
6868 then isDtxSignedByPayer
6969 else false)
7070 then isFeeCorrect
7171 else false)
7272 then isDataCountOk
7373 else false)
7474 then {
75- let att = paymentTx.attachment
76- let type = dropRightBytes(takeRightBytes(att, 2), 1)
77- let val = takeRightBytes(att, 1)
78- let key = dropRightBytes(att, 2)
79- let heightRes = extract(getInteger(oracle, (toBase58String(key) + "height")))
80- let isCheater = (extract(transactionHeightById(paymentTx.id)) >= heightRes)
81- let valComplex = extract(getBinary(oracle, toBase58String(key)))
75+ let guess = extract(getBinary(me, paymentTxIdStr))
76+ let type = take(guess, 1)
77+ let val = drop(guess, 1)
78+ let key = extract(getString(me, (toBase58String(tx.proofs[1]) + "_round")))
79+ let valComplex = extract(getBinary(oracle, key))
8280 let koeff = if ((type == drop(toBytes(0), 7)))
8381 then 35
8482 else if ((type == drop(toBytes(1), 7)))
8583 then 2
8684 else if ((type == drop(toBytes(2), 7)))
8785 then 2
8886 else if ((type == drop(toBytes(3), 7)))
8987 then 2
9088 else if ((type == drop(toBytes(4), 7)))
9189 then 3
9290 else if ((type == drop(toBytes(5), 7)))
9391 then 3
9492 else 0
9593 let ver = take(valComplex, 1)
9694 let valReal = if ((type == drop(toBytes(0), 7)))
9795 then drop(take(valComplex, 2), 1)
9896 else if ((type == drop(toBytes(1), 7)))
9997 then drop(take(valComplex, 3), 2)
10098 else if ((type == drop(toBytes(2), 7)))
10199 then drop(take(valComplex, 4), 3)
102100 else if ((type == drop(toBytes(3), 7)))
103101 then drop(take(valComplex, 5), 4)
104102 else if ((type == drop(toBytes(4), 7)))
105103 then drop(take(valComplex, 6), 5)
106104 else if ((type == drop(toBytes(5), 7)))
107105 then drop(take(valComplex, 7), 6)
108106 else toBytes(38)
109107 let isWin = if ((val == valReal))
110108 then (val != toBytes(38))
111109 else false
112110 let isMoneyStillEnough = (((paymentTx.amount * koeff) + minWithdrawFee) > newFees)
113- if (if (isWin)
114- then !(isCheater)
115- else false)
111+ if (isWin)
116112 then isMoneyStillEnough
117113 else false
118114 }
119115 else false
120116 case _ =>
121117 false
122118 }
123119 }
124120 else if ((size(dtx.data) == 3))
125121 then {
126122 let paymentTxIdStr = extract(dtx.data[0].key)
127123 let guessStr = extract(getString(dtx.data, paymentTxIdStr))
128124 let paymentRoundKey = (paymentTxIdStr + "_round")
129125 let paymentRound = extract(getString(dtx.data, paymentRoundKey))
130126 let sumBetsOld = if (isDefined(getInteger(me, (paymentRound + "_betsSum"))))
131127 then extract(getInteger(me, (paymentRound + "_betsSum")))
132128 else 0
133129 let sumBetsNew = extract(getInteger(dtx.data, (paymentRound + "_betsSum")))
134130 let isPaymentAlreadyMentioned = isDefined(getString(me, paymentTxIdStr))
135131 let paymentTx = transactionById(fromBase58String(paymentTxIdStr))
136132 match paymentTx {
137133 case paymentTx: TransferTransaction =>
138134 let isDtxSignedByPayer = sigVerify(dtx.bodyBytes, dtx.proofs[0], paymentTx.senderPublicKey)
139135 if (!(isPaymentAlreadyMentioned))
140136 then (sumBetsNew == ((sumBetsOld + paymentTx.amount) - dtx.fee))
141137 else false
142138 case _ =>
143139 false
144140 }
145141 }
146142 else false
147143 case _ =>
148144 sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
149145 }

github/deemru/w8io/169f3d6 
44.85 ms