@lodestar/state-transition 1.33.0-peerDAS.16e67f1abb → 1.33.0-peerDAS.22f8a0935e
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/util/loadState/index.d.ts +1 -0
- package/lib/util/loadState/index.js +1 -0
- package/lib/util/loadState/index.js.map +1 -1
- package/lib/util/loadState/loadValidator.d.ts +6 -1
- package/lib/util/loadState/loadValidator.js +25 -0
- package/lib/util/loadState/loadValidator.js.map +1 -1
- package/package.json +6 -6
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/util/loadState/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAE,sBAAsB,EAAC,MAAM,gBAAgB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/util/loadState/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAE,sBAAsB,EAAC,MAAM,gBAAgB,CAAC;AACjE,OAAO,EAAC,kCAAkC,EAAC,MAAM,oBAAoB,CAAC"}
|
|
@@ -1,9 +1,14 @@
|
|
|
1
1
|
import { CompositeViewDU } from "@chainsafe/ssz";
|
|
2
|
-
import {
|
|
2
|
+
import { ChainForkConfig } from "@lodestar/config";
|
|
3
|
+
import { ValidatorIndex, ssz } from "@lodestar/types";
|
|
3
4
|
/**
|
|
4
5
|
* Load validator from bytes given a seed validator.
|
|
5
6
|
* - Reuse pubkey and withdrawal credentials if possible to save memory
|
|
6
7
|
* - If it's a new validator, deserialize it
|
|
7
8
|
*/
|
|
8
9
|
export declare function loadValidator(seedValidator: CompositeViewDU<typeof ssz.phase0.Validator>, newValidatorBytes: Uint8Array): CompositeViewDU<typeof ssz.phase0.Validator>;
|
|
10
|
+
/**
|
|
11
|
+
* Extract and deserialize validator effective balances from state bytes
|
|
12
|
+
*/
|
|
13
|
+
export declare function getEffectiveBalancesFromStateBytes(config: ChainForkConfig, stateBytes: Uint8Array, validatorIndices: ValidatorIndex[]): number[];
|
|
9
14
|
//# sourceMappingURL=loadValidator.d.ts.map
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { deserializeContainerIgnoreFields, ssz } from "@lodestar/types";
|
|
2
|
+
import { getStateTypeFromBytes } from "../sszBytes.js";
|
|
2
3
|
/**
|
|
3
4
|
* Load validator from bytes given a seed validator.
|
|
4
5
|
* - Reuse pubkey and withdrawal credentials if possible to save memory
|
|
@@ -30,4 +31,28 @@ function getSameFields(validator, validatorBytes) {
|
|
|
30
31
|
}
|
|
31
32
|
return ignoredFields;
|
|
32
33
|
}
|
|
34
|
+
/**
|
|
35
|
+
* Extract and deserialize validator effective balances from state bytes
|
|
36
|
+
*/
|
|
37
|
+
export function getEffectiveBalancesFromStateBytes(config, stateBytes, validatorIndices) {
|
|
38
|
+
// stateType could be any types, casting just to make typescript happy
|
|
39
|
+
const stateType = getStateTypeFromBytes(config, stateBytes);
|
|
40
|
+
const stateView = new DataView(stateBytes.buffer, stateBytes.byteOffset, stateBytes.byteLength);
|
|
41
|
+
const stateFieldRanges = stateType.getFieldRanges(stateView, 0, stateBytes.length);
|
|
42
|
+
const stateFields = Object.keys(stateType.fields);
|
|
43
|
+
const validatorsFieldIndex = stateFields.indexOf("validators");
|
|
44
|
+
const validatorsRange = stateFieldRanges[validatorsFieldIndex];
|
|
45
|
+
const validatorsBytes = stateBytes.subarray(validatorsRange.start, validatorsRange.end);
|
|
46
|
+
const validatorSize = ssz.phase0.Validator.fixedSize;
|
|
47
|
+
const effectiveBalances = [];
|
|
48
|
+
for (const index of validatorIndices) {
|
|
49
|
+
const validatorBytes = validatorsBytes.subarray(index * validatorSize, (index + 1) * validatorSize);
|
|
50
|
+
if (validatorBytes.byteLength === 0) {
|
|
51
|
+
throw Error(`Validator index ${index} out of range`);
|
|
52
|
+
}
|
|
53
|
+
const validator = ssz.phase0.Validator.deserialize(validatorBytes);
|
|
54
|
+
effectiveBalances.push(validator.effectiveBalance);
|
|
55
|
+
}
|
|
56
|
+
return effectiveBalances;
|
|
57
|
+
}
|
|
33
58
|
//# sourceMappingURL=loadValidator.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loadValidator.js","sourceRoot":"","sources":["../../../src/util/loadState/loadValidator.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"loadValidator.js","sourceRoot":"","sources":["../../../src/util/loadState/loadValidator.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
"bugs": {
|
|
12
12
|
"url": "https://github.com/ChainSafe/lodestar/issues"
|
|
13
13
|
},
|
|
14
|
-
"version": "1.33.0-peerDAS.
|
|
14
|
+
"version": "1.33.0-peerDAS.22f8a0935e",
|
|
15
15
|
"type": "module",
|
|
16
16
|
"exports": {
|
|
17
17
|
".": {
|
|
@@ -65,10 +65,10 @@
|
|
|
65
65
|
"@chainsafe/pubkey-index-map": "^3.0.0",
|
|
66
66
|
"@chainsafe/ssz": "^1.2.1",
|
|
67
67
|
"@chainsafe/swap-or-not-shuffle": "^1.2.1",
|
|
68
|
-
"@lodestar/config": "1.33.0-peerDAS.
|
|
69
|
-
"@lodestar/params": "1.33.0-peerDAS.
|
|
70
|
-
"@lodestar/types": "1.33.0-peerDAS.
|
|
71
|
-
"@lodestar/utils": "1.33.0-peerDAS.
|
|
68
|
+
"@lodestar/config": "1.33.0-peerDAS.22f8a0935e",
|
|
69
|
+
"@lodestar/params": "1.33.0-peerDAS.22f8a0935e",
|
|
70
|
+
"@lodestar/types": "1.33.0-peerDAS.22f8a0935e",
|
|
71
|
+
"@lodestar/utils": "1.33.0-peerDAS.22f8a0935e",
|
|
72
72
|
"bigint-buffer": "^1.1.5"
|
|
73
73
|
},
|
|
74
74
|
"keywords": [
|
|
@@ -77,5 +77,5 @@
|
|
|
77
77
|
"beacon",
|
|
78
78
|
"blockchain"
|
|
79
79
|
],
|
|
80
|
-
"gitHead": "
|
|
80
|
+
"gitHead": "8409aed9fcd439208e5b47d30ed08d0a5f74ef44"
|
|
81
81
|
}
|