tx · 7HrFimZchu1FretWi8PisaGHt3VQssvPt5m3Q3TwRwyP 3MsZenewD5qTK1WUbzrWnRe7NtP4Xq59LQL: -0.01000000 Waves 2019.02.28 19:02 [515494] smart account 3MsZenewD5qTK1WUbzrWnRe7NtP4Xq59LQL > SELF 0.00000000 Waves
{ "type": 13, "id": "7HrFimZchu1FretWi8PisaGHt3VQssvPt5m3Q3TwRwyP", "fee": 1000000, "feeAssetId": null, "timestamp": 1551369717045, "version": 1, "sender": "3MsZenewD5qTK1WUbzrWnRe7NtP4Xq59LQL", "senderPublicKey": "DfYkLCbsukr8ewAAU72PDr2Rmgv2EtDeR7xhKGYvBoWb", "proofs": [ "5vCmvULW7rEijQTkXgegaUSFHeqG338XvSdaQK1NzMpdU97eK96XichzYf3VD9snZ9D7FbFrnQGHa7gTHtMguLj5" ], "script": "base64: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", "chainId": 84, "height": 515494, "spentComplexity": 0 } View: original | compacted Prev: none Next: 4gTdL1t5mPQQu7bqeiGDJm4e1jztPA228mBDsnZ89UpP Full:
Old | New | Differences | |
---|---|---|---|
1 | - | # no script | |
1 | + | {-# STDLIB_VERSION 1 #-} | |
2 | + | {-# CONTENT_TYPE EXPRESSION #-} | |
3 | + | let sender = tx.sender | |
4 | + | let asset = base58'66eR7aymnuiQf87pQJvZQb25YtfHGm4iJkhs3qsrNEgC' | |
5 | + | let difficulty = extract(getInteger(sender, "difficulty")) | |
6 | + | let lastUpdateHeight = extract(getInteger(sender, "lastUpdateHeight")) | |
7 | + | let lastUpdateBalance = extract(getInteger(sender, "lastUpdateBalance")) | |
8 | + | let currentBalance = assetBalance(sender, asset) | |
9 | + | let validityPeriod = 20 | |
10 | + | let transferAmount = 1 | |
11 | + | let miningRate = 100 | |
12 | + | let minDifficulty = 20 | |
13 | + | let maxDifficulty = 64 | |
14 | + | match tx { | |
15 | + | case tx: TransferTransaction => | |
16 | + | let byte0LeadingZeros = extract(getInteger(sender, toBase58String(take(tx.id, 1)))) | |
17 | + | let byte1LeadingZeros = extract(getInteger(sender, toBase58String(takeRightBytes(take(tx.id, 2), 1)))) | |
18 | + | let byte2LeadingZeros = extract(getInteger(sender, toBase58String(takeRightBytes(take(tx.id, 3), 1)))) | |
19 | + | let byte3LeadingZeros = extract(getInteger(sender, toBase58String(takeRightBytes(take(tx.id, 4), 1)))) | |
20 | + | let byte4LeadingZeros = extract(getInteger(sender, toBase58String(takeRightBytes(take(tx.id, 5), 1)))) | |
21 | + | let byte5LeadingZeros = extract(getInteger(sender, toBase58String(takeRightBytes(take(tx.id, 6), 1)))) | |
22 | + | let byte6LeadingZeros = extract(getInteger(sender, toBase58String(takeRightBytes(take(tx.id, 7), 1)))) | |
23 | + | let byte7LeadingZeros = extract(getInteger(sender, toBase58String(takeRightBytes(take(tx.id, 8), 1)))) | |
24 | + | let firstZeroBits = if ((byte0LeadingZeros != 8)) | |
25 | + | then byte0LeadingZeros | |
26 | + | else (8 + (if ((byte1LeadingZeros != 8)) | |
27 | + | then byte1LeadingZeros | |
28 | + | else (8 + (if ((byte2LeadingZeros != 8)) | |
29 | + | then byte2LeadingZeros | |
30 | + | else (8 + (if ((byte3LeadingZeros != 8)) | |
31 | + | then byte3LeadingZeros | |
32 | + | else (8 + (if ((byte4LeadingZeros != 8)) | |
33 | + | then byte4LeadingZeros | |
34 | + | else (8 + (if ((byte5LeadingZeros != 8)) | |
35 | + | then byte5LeadingZeros | |
36 | + | else (8 + (if ((byte6LeadingZeros != 8)) | |
37 | + | then byte6LeadingZeros | |
38 | + | else (8 + byte7LeadingZeros))))))))))))) | |
39 | + | if (if (if (if (if (if ((validityPeriod > (height - lastUpdateHeight))) | |
40 | + | then (firstZeroBits >= difficulty) | |
41 | + | else false) | |
42 | + | then (tx.amount == transferAmount) | |
43 | + | else false) | |
44 | + | then (tx.assetId == asset) | |
45 | + | else false) | |
46 | + | then (tx.fee == 500000) | |
47 | + | else false) | |
48 | + | then !(isDefined(tx.feeAssetId)) | |
49 | + | else false) | |
50 | + | then (tx.attachment == toBytes(lastUpdateHeight)) | |
51 | + | else false | |
52 | + | case tx: DataTransaction => | |
53 | + | let delta = if (((miningRate / 4) > (lastUpdateBalance - currentBalance))) | |
54 | + | then (miningRate / 4) | |
55 | + | else if (((lastUpdateBalance - currentBalance) > (miningRate * 4))) | |
56 | + | then (miningRate * 4) | |
57 | + | else (lastUpdateBalance - currentBalance) | |
58 | + | let newDifficulty0 = ((difficulty * delta) / miningRate) | |
59 | + | let newDifficulty = if ((minDifficulty > newDifficulty0)) | |
60 | + | then minDifficulty | |
61 | + | else if ((newDifficulty0 > maxDifficulty)) | |
62 | + | then maxDifficulty | |
63 | + | else newDifficulty0 | |
64 | + | if (if (if (if (if (((height - lastUpdateHeight) >= validityPeriod)) | |
65 | + | then (size(tx.data) == 3) | |
66 | + | else false) | |
67 | + | then (extract(getInteger(tx.data, "difficulty")) == newDifficulty) | |
68 | + | else false) | |
69 | + | then (extract(getInteger(tx.data, "lastUpdateHeight")) == height) | |
70 | + | else false) | |
71 | + | then (extract(getInteger(tx.data, "lastUpdateBalance")) == currentBalance) | |
72 | + | else false) | |
73 | + | then (tx.fee == 500000) | |
74 | + | else false | |
75 | + | case _ => | |
76 | + | sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey) | |
77 | + | } |
github/deemru/w8io/169f3d6 24.06 ms ◑