tx · 4gTdL1t5mPQQu7bqeiGDJm4e1jztPA228mBDsnZ89UpP 3MsZenewD5qTK1WUbzrWnRe7NtP4Xq59LQL: -0.01400000 Waves 2019.03.01 10:50 [516447] smart account 3MsZenewD5qTK1WUbzrWnRe7NtP4Xq59LQL > SELF 0.00000000 Waves
{ "type": 13, "id": "4gTdL1t5mPQQu7bqeiGDJm4e1jztPA228mBDsnZ89UpP", "fee": 1400000, "feeAssetId": null, "timestamp": 1551426664303, "version": 1, "sender": "3MsZenewD5qTK1WUbzrWnRe7NtP4Xq59LQL", "senderPublicKey": "DfYkLCbsukr8ewAAU72PDr2Rmgv2EtDeR7xhKGYvBoWb", "proofs": [ "5bJBRpGm3pTMqHCGP8E8hqCepL9c5XMhp32JXyZc6QDohcvS3wsVjbGRn82LankVgsSLGUwiDGRioLzmUtk1UGCG" ], "script": "base64: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", "chainId": 84, "height": 516447, "spentComplexity": 0 } View: original | compacted Prev: 7HrFimZchu1FretWi8PisaGHt3VQssvPt5m3Q3TwRwyP Next: HEtHQ9KK7CNkmFbNDKpqeMYctjiZp6huCWFr26NVBxEW Diff:
Old | New | Differences | |
---|---|---|---|
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) | |
46 | 46 | then (tx.fee == 500000) | |
47 | 47 | else false) | |
48 | 48 | then !(isDefined(tx.feeAssetId)) | |
49 | - | else false) | |
50 | - | then (tx.attachment == toBytes(lastUpdateHeight)) | |
51 | 49 | else false | |
52 | 50 | case tx: DataTransaction => | |
53 | 51 | let delta = if (((miningRate / 4) > (lastUpdateBalance - currentBalance))) |
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 1 #-} | |
2 | 2 | {-# CONTENT_TYPE EXPRESSION #-} | |
3 | 3 | let sender = tx.sender | |
4 | 4 | let asset = base58'66eR7aymnuiQf87pQJvZQb25YtfHGm4iJkhs3qsrNEgC' | |
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 = 20 | |
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 | - | else false) | |
50 | - | then (tx.attachment == toBytes(lastUpdateHeight)) | |
51 | 49 | else false | |
52 | 50 | case tx: DataTransaction => | |
53 | 51 | let delta = if (((miningRate / 4) > (lastUpdateBalance - currentBalance))) | |
54 | 52 | then (miningRate / 4) | |
55 | 53 | else if (((lastUpdateBalance - currentBalance) > (miningRate * 4))) | |
56 | 54 | then (miningRate * 4) | |
57 | 55 | else (lastUpdateBalance - currentBalance) | |
58 | 56 | let newDifficulty0 = ((difficulty * delta) / miningRate) | |
59 | 57 | let newDifficulty = if ((minDifficulty > newDifficulty0)) | |
60 | 58 | then minDifficulty | |
61 | 59 | else if ((newDifficulty0 > maxDifficulty)) | |
62 | 60 | then maxDifficulty | |
63 | 61 | else newDifficulty0 | |
64 | 62 | if (if (if (if (if (((height - lastUpdateHeight) >= validityPeriod)) | |
65 | 63 | then (size(tx.data) == 3) | |
66 | 64 | else false) | |
67 | 65 | then (extract(getInteger(tx.data, "difficulty")) == newDifficulty) | |
68 | 66 | else false) | |
69 | 67 | then (extract(getInteger(tx.data, "lastUpdateHeight")) == height) | |
70 | 68 | else false) | |
71 | 69 | then (extract(getInteger(tx.data, "lastUpdateBalance")) == currentBalance) | |
72 | 70 | else false) | |
73 | 71 | then (tx.fee == 500000) | |
74 | 72 | else false | |
75 | 73 | case _ => | |
76 | 74 | sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey) | |
77 | 75 | } |
github/deemru/w8io/169f3d6 26.91 ms ◑![]()