tx · 68VUVr8TbsfinGAGARUhuecZDugzigFKnKAeppMBY9Yn

3P3tLiDmaAiTZD7sRA3djWqYazpoNcg6drT:  -0.01400000 Waves

2019.03.01 17:51 [1418207] smart account 3P3tLiDmaAiTZD7sRA3djWqYazpoNcg6drT > SELF 0.00000000 Waves

{ "type": 13, "id": "68VUVr8TbsfinGAGARUhuecZDugzigFKnKAeppMBY9Yn", "fee": 1400000, "feeAssetId": null, "timestamp": 1551451702058, "version": 1, "sender": "3P3tLiDmaAiTZD7sRA3djWqYazpoNcg6drT", "senderPublicKey": "CanMZkMmTYKHVLqKXrVMXTHuyUtag853a8ti9m1LHYFa", "proofs": [ "2diHeT2dE1EnkG46KFE8f6oRh3CNNSv863E3izkFRj8KEQnFdgjEjFReTizvkDXMS2cRDpiciSCWTXCB646RpzUt" ], "script": "base64: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", "chainId": 87, "height": 1418207, "spentComplexity": 0 } View: original | compacted Prev: Ba1hCQaGou7K4gxk31LD34QpZqzuLHtWb9nZqwkQgmEA Next: ELw9wrW1aN8LoZYewzrpCVksDzjspKRwph9cLCbFaBYP Diff:
OldNewDifferences
4848 then !(isDefined(tx.feeAssetId))
4949 else false
5050 case tx: DataTransaction =>
51- let delta = if (((miningRate / 2) > (lastUpdateBalance - currentBalance)))
52- then (miningRate / 2)
53- else if (((lastUpdateBalance - currentBalance) > (miningRate * 2)))
54- then (miningRate * 2)
55- else (lastUpdateBalance - currentBalance)
56- let newDifficulty0 = ((difficulty * delta) / miningRate)
51+ let delta = (lastUpdateBalance - currentBalance)
52+ let sgn = if ((miningRate > delta))
53+ then -1
54+ else 1
55+ let k = if ((miningRate > delta))
56+ then (miningRate / delta)
57+ else (delta / miningRate)
58+ let log2 = if ((2 > k))
59+ then 0
60+ else if ((4 > k))
61+ then 1
62+ else if ((8 > k))
63+ then 2
64+ else if ((16 > k))
65+ then 3
66+ else if ((32 > k))
67+ then 4
68+ else if ((64 > k))
69+ then 5
70+ else if ((128 > k))
71+ then 6
72+ else if ((256 > k))
73+ then 7
74+ else if ((512 > k))
75+ then 8
76+ else if ((1024 > k))
77+ then 9
78+ else 10
79+ let newDifficulty0 = (difficulty + (sgn * delta))
5780 let newDifficulty = if ((minDifficulty > newDifficulty0))
5881 then minDifficulty
5982 else if ((newDifficulty0 > maxDifficulty))
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 1 #-}
22 {-# CONTENT_TYPE EXPRESSION #-}
33 let sender = tx.sender
44 let asset = base58'BXSAEa9jm9Qrkmn2XPqqKBkukZoBkJ8YpQ9EZywjdnnx'
55 let difficulty = extract(getInteger(sender, "difficulty"))
66 let lastUpdateHeight = extract(getInteger(sender, "lastUpdateHeight"))
77 let lastUpdateBalance = extract(getInteger(sender, "lastUpdateBalance"))
88 let currentBalance = assetBalance(sender, asset)
99 let validityPeriod = 15
1010 let transferAmount = 1
1111 let miningRate = 100
1212 let minDifficulty = 20
1313 let maxDifficulty = 64
1414 match tx {
1515 case tx: TransferTransaction =>
1616 let byte0LeadingZeros = extract(getInteger(sender, toBase58String(take(tx.id, 1))))
1717 let byte1LeadingZeros = extract(getInteger(sender, toBase58String(takeRightBytes(take(tx.id, 2), 1))))
1818 let byte2LeadingZeros = extract(getInteger(sender, toBase58String(takeRightBytes(take(tx.id, 3), 1))))
1919 let byte3LeadingZeros = extract(getInteger(sender, toBase58String(takeRightBytes(take(tx.id, 4), 1))))
2020 let byte4LeadingZeros = extract(getInteger(sender, toBase58String(takeRightBytes(take(tx.id, 5), 1))))
2121 let byte5LeadingZeros = extract(getInteger(sender, toBase58String(takeRightBytes(take(tx.id, 6), 1))))
2222 let byte6LeadingZeros = extract(getInteger(sender, toBase58String(takeRightBytes(take(tx.id, 7), 1))))
2323 let byte7LeadingZeros = extract(getInteger(sender, toBase58String(takeRightBytes(take(tx.id, 8), 1))))
2424 let firstZeroBits = if ((byte0LeadingZeros != 8))
2525 then byte0LeadingZeros
2626 else (8 + (if ((byte1LeadingZeros != 8))
2727 then byte1LeadingZeros
2828 else (8 + (if ((byte2LeadingZeros != 8))
2929 then byte2LeadingZeros
3030 else (8 + (if ((byte3LeadingZeros != 8))
3131 then byte3LeadingZeros
3232 else (8 + (if ((byte4LeadingZeros != 8))
3333 then byte4LeadingZeros
3434 else (8 + (if ((byte5LeadingZeros != 8))
3535 then byte5LeadingZeros
3636 else (8 + (if ((byte6LeadingZeros != 8))
3737 then byte6LeadingZeros
3838 else (8 + byte7LeadingZeros)))))))))))))
3939 if (if (if (if (if ((validityPeriod > (height - lastUpdateHeight)))
4040 then (firstZeroBits >= difficulty)
4141 else false)
4242 then (tx.amount == transferAmount)
4343 else false)
4444 then (tx.assetId == asset)
4545 else false)
4646 then (tx.fee == 500000)
4747 else false)
4848 then !(isDefined(tx.feeAssetId))
4949 else false
5050 case tx: DataTransaction =>
51- let delta = if (((miningRate / 2) > (lastUpdateBalance - currentBalance)))
52- then (miningRate / 2)
53- else if (((lastUpdateBalance - currentBalance) > (miningRate * 2)))
54- then (miningRate * 2)
55- else (lastUpdateBalance - currentBalance)
56- let newDifficulty0 = ((difficulty * delta) / miningRate)
51+ let delta = (lastUpdateBalance - currentBalance)
52+ let sgn = if ((miningRate > delta))
53+ then -1
54+ else 1
55+ let k = if ((miningRate > delta))
56+ then (miningRate / delta)
57+ else (delta / miningRate)
58+ let log2 = if ((2 > k))
59+ then 0
60+ else if ((4 > k))
61+ then 1
62+ else if ((8 > k))
63+ then 2
64+ else if ((16 > k))
65+ then 3
66+ else if ((32 > k))
67+ then 4
68+ else if ((64 > k))
69+ then 5
70+ else if ((128 > k))
71+ then 6
72+ else if ((256 > k))
73+ then 7
74+ else if ((512 > k))
75+ then 8
76+ else if ((1024 > k))
77+ then 9
78+ else 10
79+ let newDifficulty0 = (difficulty + (sgn * delta))
5780 let newDifficulty = if ((minDifficulty > newDifficulty0))
5881 then minDifficulty
5982 else if ((newDifficulty0 > maxDifficulty))
6083 then maxDifficulty
6184 else newDifficulty0
6285 if (if (if (if (if (((height - lastUpdateHeight) >= validityPeriod))
6386 then (size(tx.data) == 3)
6487 else false)
6588 then (extract(getInteger(tx.data, "difficulty")) == newDifficulty)
6689 else false)
6790 then (extract(getInteger(tx.data, "lastUpdateHeight")) == height)
6891 else false)
6992 then (extract(getInteger(tx.data, "lastUpdateBalance")) == currentBalance)
7093 else false)
7194 then (tx.fee == 500000)
7295 else false
7396 case _ =>
7497 sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
7598 }

github/deemru/w8io/3ef1775 
132.53 ms