tx · 5rgEVY2Jv4Du8fJdbMatAZ2qcYakztvEds3n4XDfPopD

3Mu46QfBkouwvPnhYc6QZa45NAFTpiD64YG:  -0.01400000 Waves

2019.02.12 21:22 [492275] smart account 3Mu46QfBkouwvPnhYc6QZa45NAFTpiD64YG > SELF 0.00000000 Waves

{ "type": 13, "id": "5rgEVY2Jv4Du8fJdbMatAZ2qcYakztvEds3n4XDfPopD", "fee": 1400000, "feeAssetId": null, "timestamp": 1549995716832, "version": 1, "sender": "3Mu46QfBkouwvPnhYc6QZa45NAFTpiD64YG", "senderPublicKey": "6pNwnxPaq9gFLzCbWjiseC5UTT3Gtt3RFwaQ6bMshN6p", "proofs": [ "5MfPTvxwNZP315mi97arVs6rpZV1JzGwecipaacouhK2XjWQwzAHQeQV2dqGDpgHD3n7dwtJdJTJQjbWkYBykFkU" ], "script": "base64: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", "chainId": 84, "height": 492275, "spentComplexity": 0 } View: original | compacted Prev: AJwraVHbGZETX4LA2k7ejNkSYinksMEwywySndVxnocB Next: HafENXW6ZAEKAB82hBwaPrYvGZW2L7H5orX3Wx8oFBoW Diff:
OldNewDifferences
3939 then {
4040 let winStr = extract(dtx.data[0].key)
4141 let paymentTxIdStr = dropRight(winStr, 4)
42- let guess = extract(getString(me, paymentTxIdStr))
42+ let guess = extract(getInteger(me, paymentTxIdStr))
4343 let linkToGame = extract(getString(me, (paymentTxIdStr + "_round")))
44- let resultOfGame = extract(getString(oracle, linkToGame))
44+ let resultOfGame = extract(getInteger(oracle, linkToGame))
4545 let paymentTx = transactionById(fromBase58String(paymentTxIdStr))
4646 match paymentTx {
4747 case paymentTx: TransferTransaction =>
5757 then extract(getInteger(me, (linkToGame + "_2")))
5858 else 0
5959 let total = ((sum0 + sum1) + sum2)
60- let koeff = if ((resultOfGame == "0"))
60+ let koeff = if ((resultOfGame == 0))
6161 then (total / sum0)
62- else if ((resultOfGame == "1"))
62+ else if ((resultOfGame == 1))
6363 then (total / sum1)
64- else if ((resultOfGame == "2"))
64+ else if ((resultOfGame == 2))
6565 then (total / sum2)
6666 else throw("Internal error. Wrong value for result of game")
6767 ((((paymentTx.amount - registerBetTxFee) * koeff) - dtx.fee) == extract(getInteger(dtx.data, dtx.data[0].key)))
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 1 #-}
22 {-# CONTENT_TYPE EXPRESSION #-}
33 let me = tx.sender
44 let oracle = extract(addressFromString("3NCzaYTNDGtR8zf9yfcqePFjCqFx9S5zhs4"))
55 let minWithdrawFee = 500000
66 let registerBetTxFee = 500000
77 match tx {
88 case withdrawTx: TransferTransaction =>
99 let paymentTxIdStr = toBase58String(tx.proofs[1])
1010 let withdrawId = extract(getString(me, (paymentTxIdStr + "_withdraw")))
1111 match transactionById(tx.proofs[1]) {
1212 case paymentTx: TransferTransaction =>
1313 let withdrawAllowed = if ((withdrawId == toBase58String(tx.id)))
1414 then sigVerify(tx.bodyBytes, tx.proofs[0], paymentTx.senderPublicKey)
1515 else false
1616 let feesKey = (toBase58String(tx.proofs[1]) + "_withdraw_fees")
1717 let dataTxsFees = extract(getInteger(me, feesKey))
1818 let winAmount = extract(getInteger(me, (paymentTxIdStr + "_win")))
1919 let correctAmount = ((winAmount - dataTxsFees) - withdrawTx.fee)
2020 let isInWaves = if (!(isDefined(withdrawTx.feeAssetId)))
2121 then !(isDefined(withdrawTx.assetId))
2222 else false
2323 if (if (if (withdrawAllowed)
2424 then true
2525 else throw("Withdraw isn't registered or isn't signed by orignal payment sender"))
2626 then if ((withdrawTx.amount == correctAmount))
2727 then true
2828 else throw(("Amount of withdraw is incorrect. Correct amount is " + toString(correctAmount)))
2929 else false)
3030 then if (isInWaves)
3131 then true
3232 else throw("Withdraw and fee must be in WAVES")
3333 else false
3434 case _ =>
3535 false
3636 }
3737 case dtx: DataTransaction =>
3838 if ((size(dtx.data) == 1))
3939 then {
4040 let winStr = extract(dtx.data[0].key)
4141 let paymentTxIdStr = dropRight(winStr, 4)
42- let guess = extract(getString(me, paymentTxIdStr))
42+ let guess = extract(getInteger(me, paymentTxIdStr))
4343 let linkToGame = extract(getString(me, (paymentTxIdStr + "_round")))
44- let resultOfGame = extract(getString(oracle, linkToGame))
44+ let resultOfGame = extract(getInteger(oracle, linkToGame))
4545 let paymentTx = transactionById(fromBase58String(paymentTxIdStr))
4646 match paymentTx {
4747 case paymentTx: TransferTransaction =>
4848 if ((guess == resultOfGame))
4949 then {
5050 let sum0 = if (isDefined(getInteger(me, (linkToGame + "_0"))))
5151 then extract(getInteger(me, (linkToGame + "_0")))
5252 else 0
5353 let sum1 = if (isDefined(getInteger(me, (linkToGame + "_1"))))
5454 then extract(getInteger(me, (linkToGame + "_1")))
5555 else 0
5656 let sum2 = if (isDefined(getInteger(me, (linkToGame + "_2"))))
5757 then extract(getInteger(me, (linkToGame + "_2")))
5858 else 0
5959 let total = ((sum0 + sum1) + sum2)
60- let koeff = if ((resultOfGame == "0"))
60+ let koeff = if ((resultOfGame == 0))
6161 then (total / sum0)
62- else if ((resultOfGame == "1"))
62+ else if ((resultOfGame == 1))
6363 then (total / sum1)
64- else if ((resultOfGame == "2"))
64+ else if ((resultOfGame == 2))
6565 then (total / sum2)
6666 else throw("Internal error. Wrong value for result of game")
6767 ((((paymentTx.amount - registerBetTxFee) * koeff) - dtx.fee) == extract(getInteger(dtx.data, dtx.data[0].key)))
6868 }
6969 else throw("You didn't guess right.")
7070 case _ =>
7171 false
7272 }
7373 }
7474 else if ((size(dtx.data) == 2))
7575 then {
7676 let withdrawStr = extract(dtx.data[0].key)
7777 let paymentTxIdStr = dropRight(withdrawStr, 9)
7878 let winAmount = extract(getInteger(me, (paymentTxIdStr + "_win")))
7979 let feesKey = (extract(dtx.data[0].key) + "_fees")
8080 let newFees = extract(getInteger(dtx.data, feesKey))
8181 let oldFees = if (isDefined(getInteger(me, feesKey)))
8282 then extract(getInteger(me, feesKey))
8383 else 0
8484 let isFeeCorrect = (newFees == (oldFees + dtx.fee))
8585 let isPaymentAlreadyMentioned = isDefined(getString(me, withdrawStr))
8686 let withdrawTransactionId = fromBase58String(extract(getString(me, withdrawStr)))
8787 let isWithdrawExist = isDefined(transactionById(withdrawTransactionId))
8888 if (if (if (if (if (!(isPaymentAlreadyMentioned))
8989 then true
9090 else !(isWithdrawExist))
9191 then true
9292 else throw("Withdraw for this bet already exist"))
9393 then isFeeCorrect
9494 else false)
9595 then true
9696 else throw("Value for withdraw fees is incorrect"))
9797 then if ((winAmount > (newFees - minWithdrawFee)))
9898 then true
9999 else throw("Win amount is not enough for all fees")
100100 else false
101101 }
102102 else if ((size(dtx.data) == 3))
103103 then {
104104 let paymentTxIdStr = extract(dtx.data[0].key)
105105 let guessStr = extract(getString(dtx.data, paymentTxIdStr))
106106 let paymentRoundKey = (paymentTxIdStr + "_round")
107107 let paymentRound = extract(getString(dtx.data, paymentRoundKey))
108108 let sumBetsOld = if (isDefined(getInteger(me, ((paymentRound + "_") + guessStr))))
109109 then extract(getInteger(me, ((paymentRound + "_") + guessStr)))
110110 else 0
111111 let sumBetsNew = extract(getInteger(dtx.data, ((paymentRound + "_") + guessStr)))
112112 let isPaymentAlreadyMentioned = isDefined(getString(me, paymentTxIdStr))
113113 let paymentTx = transactionById(fromBase58String(paymentTxIdStr))
114114 match paymentTx {
115115 case paymentTx: TransferTransaction =>
116116 let isDtxSignedByPayer = sigVerify(dtx.bodyBytes, dtx.proofs[0], paymentTx.senderPublicKey)
117117 if (!(isPaymentAlreadyMentioned))
118118 then (sumBetsNew == ((sumBetsOld + paymentTx.amount) - dtx.fee))
119119 else false
120120 case _ =>
121121 false
122122 }
123123 }
124124 else false
125125 case _ =>
126126 sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
127127 }

github/deemru/w8io/169f3d6 
31.44 ms