tx · 8NVTAvLHEyaXRjNFm9VVekHhYnDyVsRuLEXZ5WxXuRGZ

3MsX9C2MzzxE4ySF5aYcJoaiPfkyxZMg4cW:  -0.01400000 Waves

2020.07.15 09:18 [1088057] smart account 3MsX9C2MzzxE4ySF5aYcJoaiPfkyxZMg4cW > SELF 0.00000000 Waves

{ "type": 13, "id": "8NVTAvLHEyaXRjNFm9VVekHhYnDyVsRuLEXZ5WxXuRGZ", "fee": 1400000, "feeAssetId": null, "timestamp": 1594793924749, "version": 1, "sender": "3MsX9C2MzzxE4ySF5aYcJoaiPfkyxZMg4cW", "senderPublicKey": "AXbaBkJNocyrVpwqTzD4TpUY8fQ6eeRto9k1m2bNCzXV", "proofs": [ "2cFd77oEYWzWUdRK3cwAf8bmaC5bPXErFScFd1h8ikz2TPbCBRN72wv4AepH7XHnrg4AjLDAxCMu1TCtKoLLJLjV" ], "script": "base64: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", "chainId": 84, "height": 1088057, "spentComplexity": 0 } View: original | compacted Prev: 8m4oJMi5RaxJvJcBJF7KHZJ5NBzDhdT22SwcRiEjpjnU Next: 3AcGxtn2QCMCvjtVCWztESqFu5GgCPH6BS6Li1cbn68s Diff:
OldNewDifferences
4242 let count = ((((validateSign(toBytes(newConsuls), signs[0], consuls[0]) + validateSign(toBytes(newConsuls), signs[1], consuls[1])) + validateSign(toBytes(newConsuls), signs[2], consuls[2])) + validateSign(toBytes(newConsuls), signs[3], consuls[3])) + validateSign(toBytes(newConsuls), signs[4], consuls[4]))
4343 if ((count > bftCoefficient))
4444 then throw("invalid bft count")
45- else WriteSet([DataEntry(ConsulsKey, newConsuls), DataEntry(((LastRoundKey + "_") + toString(round)), round)])
45+ else if ((getNumberByKey(((LastRoundKey + "_") + toString(round))) == round))
46+ then throw("round is exist")
47+ else WriteSet([DataEntry(ConsulsKey, newConsuls), DataEntry(((LastRoundKey + "_") + toString(round)), round)])
4648 }
4749
4850
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 3 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let MaxConsuls = 5
55
66 func getNumberByKey (key) = match getInteger(this, key) {
77 case v: Int =>
88 v
99 case _ =>
1010 0
1111 }
1212
1313
1414 func getStringByKey (key) = match getString(this, key) {
1515 case v: String =>
1616 v
1717 case _ =>
1818 ""
1919 }
2020
2121
2222 let ConsulsKey = "consuls"
2323
2424 let BftCoefficientKey = "bft_coefficient"
2525
2626 let LastRoundKey = "last_round"
2727
2828 let consuls = split(getStringByKey(ConsulsKey), ",")
2929
3030 let bftCoefficient = getNumberByKey(BftCoefficientKey)
3131
3232 func validateSign (hash,sign,oracle) = if ((sign != "nil"))
3333 then if (sigVerify(hash, fromBase58String(sign), fromBase58String(oracle)))
3434 then 1
3535 else 0
3636 else 0
3737
3838
3939 @Callable(i)
4040 func setConsuls (newConsuls,stringSigns,round) = {
4141 let signs = split(stringSigns, ",")
4242 let count = ((((validateSign(toBytes(newConsuls), signs[0], consuls[0]) + validateSign(toBytes(newConsuls), signs[1], consuls[1])) + validateSign(toBytes(newConsuls), signs[2], consuls[2])) + validateSign(toBytes(newConsuls), signs[3], consuls[3])) + validateSign(toBytes(newConsuls), signs[4], consuls[4]))
4343 if ((count > bftCoefficient))
4444 then throw("invalid bft count")
45- else WriteSet([DataEntry(ConsulsKey, newConsuls), DataEntry(((LastRoundKey + "_") + toString(round)), round)])
45+ else if ((getNumberByKey(((LastRoundKey + "_") + toString(round))) == round))
46+ then throw("round is exist")
47+ else WriteSet([DataEntry(ConsulsKey, newConsuls), DataEntry(((LastRoundKey + "_") + toString(round)), round)])
4648 }
4749
4850

github/deemru/w8io/873ac7e 
25.20 ms