tx · ELw9wrW1aN8LoZYewzrpCVksDzjspKRwph9cLCbFaBYP 3P3tLiDmaAiTZD7sRA3djWqYazpoNcg6drT: -0.01400000 Waves 2019.03.01 17:51 [1418207] smart account 3P3tLiDmaAiTZD7sRA3djWqYazpoNcg6drT > SELF 0.00000000 Waves
{ "type": 13, "id": "ELw9wrW1aN8LoZYewzrpCVksDzjspKRwph9cLCbFaBYP", "fee": 1400000, "feeAssetId": null, "timestamp": 1551451890755, "version": 1, "sender": "3P3tLiDmaAiTZD7sRA3djWqYazpoNcg6drT", "senderPublicKey": "CanMZkMmTYKHVLqKXrVMXTHuyUtag853a8ti9m1LHYFa", "proofs": [ "2fVWrkCrmQMovqM75wBqNWdxCPZrzb8imCibgtPQ5UpdrDjBpCj8uHSFFZYcgMYA5QmWhwVVytoKQJkD5MqETUuT" ], "script": "base64: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", "chainId": 87, "height": 1418207, "spentComplexity": 0 } View: original | compacted Prev: 68VUVr8TbsfinGAGARUhuecZDugzigFKnKAeppMBY9Yn Next: 7djzFLMsm6DZ8KCkLQPJrAVsM4zppVbVTbRRLwe1ptdZ Full:
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 1 #-} | |
2 | 2 | {-# CONTENT_TYPE EXPRESSION #-} | |
3 | 3 | let sender = tx.sender | |
4 | 4 | let asset = base58'BXSAEa9jm9Qrkmn2XPqqKBkukZoBkJ8YpQ9EZywjdnnx' | |
5 | 5 | let difficulty = extract(getInteger(sender, "difficulty")) | |
6 | 6 | let lastUpdateHeight = extract(getInteger(sender, "lastUpdateHeight")) | |
7 | 7 | let lastUpdateBalance = extract(getInteger(sender, "lastUpdateBalance")) | |
8 | 8 | let currentBalance = assetBalance(sender, asset) | |
9 | 9 | let validityPeriod = 15 | |
10 | 10 | let transferAmount = 1 | |
11 | 11 | let miningRate = 100 | |
12 | 12 | let minDifficulty = 20 | |
13 | 13 | let maxDifficulty = 64 | |
14 | 14 | match tx { | |
15 | 15 | case tx: TransferTransaction => | |
16 | 16 | let byte0LeadingZeros = extract(getInteger(sender, toBase58String(take(tx.id, 1)))) | |
17 | 17 | let byte1LeadingZeros = extract(getInteger(sender, toBase58String(takeRightBytes(take(tx.id, 2), 1)))) | |
18 | 18 | let byte2LeadingZeros = extract(getInteger(sender, toBase58String(takeRightBytes(take(tx.id, 3), 1)))) | |
19 | 19 | let byte3LeadingZeros = extract(getInteger(sender, toBase58String(takeRightBytes(take(tx.id, 4), 1)))) | |
20 | 20 | let byte4LeadingZeros = extract(getInteger(sender, toBase58String(takeRightBytes(take(tx.id, 5), 1)))) | |
21 | 21 | let byte5LeadingZeros = extract(getInteger(sender, toBase58String(takeRightBytes(take(tx.id, 6), 1)))) | |
22 | 22 | let byte6LeadingZeros = extract(getInteger(sender, toBase58String(takeRightBytes(take(tx.id, 7), 1)))) | |
23 | 23 | let byte7LeadingZeros = extract(getInteger(sender, toBase58String(takeRightBytes(take(tx.id, 8), 1)))) | |
24 | 24 | let firstZeroBits = if ((byte0LeadingZeros != 8)) | |
25 | 25 | then byte0LeadingZeros | |
26 | 26 | else (8 + (if ((byte1LeadingZeros != 8)) | |
27 | 27 | then byte1LeadingZeros | |
28 | 28 | else (8 + (if ((byte2LeadingZeros != 8)) | |
29 | 29 | then byte2LeadingZeros | |
30 | 30 | else (8 + (if ((byte3LeadingZeros != 8)) | |
31 | 31 | then byte3LeadingZeros | |
32 | 32 | else (8 + (if ((byte4LeadingZeros != 8)) | |
33 | 33 | then byte4LeadingZeros | |
34 | 34 | else (8 + (if ((byte5LeadingZeros != 8)) | |
35 | 35 | then byte5LeadingZeros | |
36 | 36 | else (8 + (if ((byte6LeadingZeros != 8)) | |
37 | 37 | then byte6LeadingZeros | |
38 | 38 | else (8 + byte7LeadingZeros))))))))))))) | |
39 | 39 | if (if (if (if (if ((validityPeriod > (height - lastUpdateHeight))) | |
40 | 40 | then (firstZeroBits >= difficulty) | |
41 | 41 | else false) | |
42 | 42 | then (tx.amount == transferAmount) | |
43 | 43 | else false) | |
44 | 44 | then (tx.assetId == asset) | |
45 | 45 | else false) | |
46 | 46 | then (tx.fee == 500000) | |
47 | 47 | else false) | |
48 | 48 | then !(isDefined(tx.feeAssetId)) | |
49 | 49 | else false | |
50 | 50 | case tx: DataTransaction => | |
51 | 51 | let delta = (lastUpdateBalance - currentBalance) | |
52 | 52 | let sgn = if ((miningRate > delta)) | |
53 | 53 | then -1 | |
54 | 54 | else 1 | |
55 | 55 | let k = if ((miningRate > delta)) | |
56 | 56 | then (miningRate / delta) | |
57 | 57 | else (delta / miningRate) | |
58 | 58 | let log2 = if ((2 > k)) | |
59 | 59 | then 0 | |
60 | 60 | else if ((4 > k)) | |
61 | 61 | then 1 | |
62 | 62 | else if ((8 > k)) | |
63 | 63 | then 2 | |
64 | 64 | else if ((16 > k)) | |
65 | 65 | then 3 | |
66 | 66 | else if ((32 > k)) | |
67 | 67 | then 4 | |
68 | 68 | else if ((64 > k)) | |
69 | 69 | then 5 | |
70 | 70 | else if ((128 > k)) | |
71 | 71 | then 6 | |
72 | 72 | else if ((256 > k)) | |
73 | 73 | then 7 | |
74 | 74 | else if ((512 > k)) | |
75 | 75 | then 8 | |
76 | 76 | else if ((1024 > k)) | |
77 | 77 | then 9 | |
78 | 78 | else 10 | |
79 | 79 | let newDifficulty0 = (difficulty + (sgn * delta)) | |
80 | 80 | let newDifficulty = if ((minDifficulty > newDifficulty0)) | |
81 | 81 | then minDifficulty | |
82 | 82 | else if ((newDifficulty0 > maxDifficulty)) | |
83 | 83 | then maxDifficulty | |
84 | 84 | else newDifficulty0 | |
85 | 85 | if (if (if (if (if (((height - lastUpdateHeight) >= validityPeriod)) | |
86 | 86 | then (size(tx.data) == 3) | |
87 | 87 | else false) | |
88 | 88 | then (extract(getInteger(tx.data, "difficulty")) == newDifficulty) | |
89 | 89 | else false) | |
90 | 90 | then (extract(getInteger(tx.data, "lastUpdateHeight")) == height) | |
91 | 91 | else false) | |
92 | 92 | then (extract(getInteger(tx.data, "lastUpdateBalance")) == currentBalance) | |
93 | 93 | else false) | |
94 | 94 | then (tx.fee == 500000) | |
95 | 95 | else false | |
96 | 96 | case _ => | |
97 | 97 | sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey) | |
98 | 98 | } |
github/deemru/w8io/6500d08 102.03 ms ◑