@lodestar/beacon-node 1.22.0-dev.6f470f8a35 → 1.22.0-dev.9f4bf50408
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/api/impl/beacon/blocks/index.js +14 -2
- package/lib/api/impl/beacon/blocks/index.js.map +1 -1
- package/lib/api/impl/beacon/pool/index.js +31 -4
- package/lib/api/impl/beacon/pool/index.js.map +1 -1
- package/lib/api/impl/config/constants.d.ts +5 -1
- package/lib/api/impl/config/constants.js +7 -2
- package/lib/api/impl/config/constants.js.map +1 -1
- package/lib/api/impl/validator/index.js +26 -4
- package/lib/api/impl/validator/index.js.map +1 -1
- package/lib/chain/archiver/archiveStates.d.ts +3 -1
- package/lib/chain/archiver/archiveStates.js +6 -3
- package/lib/chain/archiver/archiveStates.js.map +1 -1
- package/lib/chain/archiver/index.js +1 -1
- package/lib/chain/archiver/index.js.map +1 -1
- package/lib/chain/blocks/importBlock.js +6 -5
- package/lib/chain/blocks/importBlock.js.map +1 -1
- package/lib/chain/blocks/types.d.ts +2 -2
- package/lib/chain/blocks/types.js.map +1 -1
- package/lib/chain/chain.d.ts +42 -0
- package/lib/chain/chain.js +35 -3
- package/lib/chain/chain.js.map +1 -1
- package/lib/chain/errors/attestationError.d.ts +13 -1
- package/lib/chain/errors/attestationError.js +8 -0
- package/lib/chain/errors/attestationError.js.map +1 -1
- package/lib/chain/historicalState/worker.js +4 -0
- package/lib/chain/historicalState/worker.js.map +1 -1
- package/lib/chain/initState.d.ts +3 -3
- package/lib/chain/initState.js +7 -6
- package/lib/chain/initState.js.map +1 -1
- package/lib/chain/interface.d.ts +2 -0
- package/lib/chain/interface.js.map +1 -1
- package/lib/chain/opPools/aggregatedAttestationPool.d.ts +46 -12
- package/lib/chain/opPools/aggregatedAttestationPool.js +226 -59
- package/lib/chain/opPools/aggregatedAttestationPool.js.map +1 -1
- package/lib/chain/opPools/attestationPool.d.ts +22 -6
- package/lib/chain/opPools/attestationPool.js +61 -27
- package/lib/chain/opPools/attestationPool.js.map +1 -1
- package/lib/chain/opPools/opPool.d.ts +2 -2
- package/lib/chain/opPools/opPool.js +7 -5
- package/lib/chain/opPools/opPool.js.map +1 -1
- package/lib/chain/opPools/utils.d.ts +2 -0
- package/lib/chain/opPools/utils.js +3 -0
- package/lib/chain/opPools/utils.js.map +1 -1
- package/lib/chain/produceBlock/produceBlockBody.js +2 -1
- package/lib/chain/produceBlock/produceBlockBody.js.map +1 -1
- package/lib/chain/regen/queued.d.ts +6 -1
- package/lib/chain/regen/queued.js +38 -0
- package/lib/chain/regen/queued.js.map +1 -1
- package/lib/chain/regen/regen.d.ts +1 -1
- package/lib/chain/regen/regen.js +47 -11
- package/lib/chain/regen/regen.js.map +1 -1
- package/lib/chain/seenCache/seenAttestationData.d.ts +13 -5
- package/lib/chain/seenCache/seenAttestationData.js +5 -3
- package/lib/chain/seenCache/seenAttestationData.js.map +1 -1
- package/lib/chain/serializeState.d.ts +6 -0
- package/lib/chain/serializeState.js +22 -0
- package/lib/chain/serializeState.js.map +1 -0
- package/lib/chain/stateCache/blockStateCacheImpl.d.ts +1 -0
- package/lib/chain/stateCache/blockStateCacheImpl.js +4 -1
- package/lib/chain/stateCache/blockStateCacheImpl.js.map +1 -1
- package/lib/chain/stateCache/datastore/file.js +5 -4
- package/lib/chain/stateCache/datastore/file.js.map +1 -1
- package/lib/chain/stateCache/fifoBlockStateCache.d.ts +1 -0
- package/lib/chain/stateCache/fifoBlockStateCache.js +3 -0
- package/lib/chain/stateCache/fifoBlockStateCache.js.map +1 -1
- package/lib/chain/stateCache/inMemoryCheckpointsCache.d.ts +1 -0
- package/lib/chain/stateCache/inMemoryCheckpointsCache.js +3 -0
- package/lib/chain/stateCache/inMemoryCheckpointsCache.js.map +1 -1
- package/lib/chain/stateCache/persistentCheckpointsCache.d.ts +2 -2
- package/lib/chain/stateCache/persistentCheckpointsCache.js +27 -51
- package/lib/chain/stateCache/persistentCheckpointsCache.js.map +1 -1
- package/lib/chain/stateCache/types.d.ts +4 -0
- package/lib/chain/stateCache/types.js.map +1 -1
- package/lib/chain/validation/aggregateAndProof.d.ts +4 -4
- package/lib/chain/validation/aggregateAndProof.js +24 -7
- package/lib/chain/validation/aggregateAndProof.js.map +1 -1
- package/lib/chain/validation/attestation.d.ts +27 -6
- package/lib/chain/validation/attestation.js +109 -31
- package/lib/chain/validation/attestation.js.map +1 -1
- package/lib/chain/validation/attesterSlashing.js +2 -1
- package/lib/chain/validation/attesterSlashing.js.map +1 -1
- package/lib/chain/validation/signatureSets/aggregateAndProof.d.ts +4 -3
- package/lib/chain/validation/signatureSets/aggregateAndProof.js +3 -2
- package/lib/chain/validation/signatureSets/aggregateAndProof.js.map +1 -1
- package/lib/eth1/eth1DepositDataTracker.d.ts +5 -2
- package/lib/eth1/eth1DepositDataTracker.js +13 -2
- package/lib/eth1/eth1DepositDataTracker.js.map +1 -1
- package/lib/eth1/index.d.ts +2 -0
- package/lib/eth1/index.js +6 -0
- package/lib/eth1/index.js.map +1 -1
- package/lib/eth1/interface.d.ts +4 -0
- package/lib/eth1/provider/eth1Provider.js +2 -3
- package/lib/eth1/provider/eth1Provider.js.map +1 -1
- package/lib/eth1/provider/utils.js +4 -4
- package/lib/eth1/provider/utils.js.map +1 -1
- package/lib/eth1/utils/deposits.d.ts +2 -2
- package/lib/eth1/utils/deposits.js +6 -5
- package/lib/eth1/utils/deposits.js.map +1 -1
- package/lib/eth1/utils/eth1Vote.js +0 -1
- package/lib/eth1/utils/eth1Vote.js.map +1 -1
- package/lib/execution/engine/http.d.ts +2 -2
- package/lib/execution/engine/http.js +19 -15
- package/lib/execution/engine/http.js.map +1 -1
- package/lib/execution/engine/interface.d.ts +4 -4
- package/lib/execution/engine/interface.js.map +1 -1
- package/lib/execution/engine/mock.d.ts +1 -0
- package/lib/execution/engine/mock.js +6 -0
- package/lib/execution/engine/mock.js.map +1 -1
- package/lib/execution/engine/payloadIdCache.d.ts +17 -0
- package/lib/execution/engine/payloadIdCache.js.map +1 -1
- package/lib/execution/engine/types.d.ts +29 -3
- package/lib/execution/engine/types.js +81 -0
- package/lib/execution/engine/types.js.map +1 -1
- package/lib/index.d.ts +2 -2
- package/lib/index.js +2 -2
- package/lib/index.js.map +1 -1
- package/lib/metrics/metrics/beacon.d.ts +3 -0
- package/lib/metrics/metrics/beacon.js +6 -0
- package/lib/metrics/metrics/beacon.js.map +1 -1
- package/lib/metrics/metrics/lodestar.d.ts +30 -3
- package/lib/metrics/metrics/lodestar.js +63 -4
- package/lib/metrics/metrics/lodestar.js.map +1 -1
- package/lib/metrics/validatorMonitor.d.ts +1 -1
- package/lib/metrics/validatorMonitor.js +6 -1
- package/lib/metrics/validatorMonitor.js.map +1 -1
- package/lib/network/gossip/interface.d.ts +5 -5
- package/lib/network/gossip/interface.js.map +1 -1
- package/lib/network/gossip/topic.d.ts +1720 -129
- package/lib/network/gossip/topic.js +5 -5
- package/lib/network/gossip/topic.js.map +1 -1
- package/lib/network/interface.d.ts +2 -2
- package/lib/network/network.d.ts +2 -2
- package/lib/network/network.js.map +1 -1
- package/lib/network/peers/utils/assertPeerRelevance.js +2 -3
- package/lib/network/peers/utils/assertPeerRelevance.js.map +1 -1
- package/lib/network/processor/gossipHandlers.js +6 -6
- package/lib/network/processor/gossipHandlers.js.map +1 -1
- package/lib/network/processor/gossipQueues/index.js +5 -2
- package/lib/network/processor/gossipQueues/index.js.map +1 -1
- package/lib/network/processor/gossipQueues/indexed.js +1 -0
- package/lib/network/processor/gossipQueues/indexed.js.map +1 -1
- package/lib/util/bufferPool.d.ts +7 -2
- package/lib/util/bufferPool.js +13 -7
- package/lib/util/bufferPool.js.map +1 -1
- package/lib/util/sszBytes.d.ts +31 -8
- package/lib/util/sszBytes.js +74 -13
- package/lib/util/sszBytes.js.map +1 -1
- package/package.json +15 -15
package/lib/chain/initState.d.ts
CHANGED
|
@@ -7,7 +7,7 @@ import { Metrics } from "../metrics/index.js";
|
|
|
7
7
|
import { Eth1Options } from "../eth1/options.js";
|
|
8
8
|
import { GenesisResult } from "./genesis/interface.js";
|
|
9
9
|
export declare function persistGenesisResult(db: IBeaconDb, genesisResult: GenesisResult, genesisBlock: SignedBeaconBlock): Promise<void>;
|
|
10
|
-
export declare function persistAnchorState(config: ChainForkConfig, db: IBeaconDb, anchorState: BeaconStateAllForks): Promise<void>;
|
|
10
|
+
export declare function persistAnchorState(config: ChainForkConfig, db: IBeaconDb, anchorState: BeaconStateAllForks, anchorStateBytes: Uint8Array): Promise<void>;
|
|
11
11
|
export declare function createGenesisBlock(config: ChainForkConfig, genesisState: BeaconStateAllForks): SignedBeaconBlock;
|
|
12
12
|
/**
|
|
13
13
|
* Initialize and persist a genesis state and related data
|
|
@@ -26,10 +26,10 @@ export declare function initStateFromDb(config: ChainForkConfig, db: IBeaconDb,
|
|
|
26
26
|
/**
|
|
27
27
|
* Initialize and persist an anchor state (either weak subjectivity or genesis)
|
|
28
28
|
*/
|
|
29
|
-
export declare function
|
|
29
|
+
export declare function checkAndPersistAnchorState(config: ChainForkConfig, db: IBeaconDb, logger: Logger, anchorState: BeaconStateAllForks, anchorStateBytes: Uint8Array, { isWithinWeakSubjectivityPeriod, isCheckpointState, }: {
|
|
30
30
|
isWithinWeakSubjectivityPeriod: boolean;
|
|
31
31
|
isCheckpointState: boolean;
|
|
32
|
-
}): Promise<
|
|
32
|
+
}): Promise<void>;
|
|
33
33
|
export declare function initBeaconMetrics(metrics: Metrics, state: BeaconStateAllForks): void;
|
|
34
34
|
export declare function computeAnchorCheckpoint(config: ChainForkConfig, anchorState: BeaconStateAllForks): {
|
|
35
35
|
checkpoint: phase0.Checkpoint;
|
package/lib/chain/initState.js
CHANGED
|
@@ -16,17 +16,17 @@ export async function persistGenesisResult(db, genesisResult, genesisBlock) {
|
|
|
16
16
|
}),
|
|
17
17
|
]);
|
|
18
18
|
}
|
|
19
|
-
export async function persistAnchorState(config, db, anchorState) {
|
|
19
|
+
export async function persistAnchorState(config, db, anchorState, anchorStateBytes) {
|
|
20
20
|
if (anchorState.slot === GENESIS_SLOT) {
|
|
21
21
|
const genesisBlock = createGenesisBlock(config, anchorState);
|
|
22
22
|
await Promise.all([
|
|
23
23
|
db.blockArchive.add(genesisBlock),
|
|
24
24
|
db.block.add(genesisBlock),
|
|
25
|
-
db.stateArchive.
|
|
25
|
+
db.stateArchive.putBinary(anchorState.slot, anchorStateBytes),
|
|
26
26
|
]);
|
|
27
27
|
}
|
|
28
28
|
else {
|
|
29
|
-
await db.stateArchive.
|
|
29
|
+
await db.stateArchive.putBinary(anchorState.slot, anchorStateBytes);
|
|
30
30
|
}
|
|
31
31
|
}
|
|
32
32
|
export function createGenesisBlock(config, genesisState) {
|
|
@@ -101,7 +101,7 @@ export async function initStateFromDb(config, db, logger) {
|
|
|
101
101
|
/**
|
|
102
102
|
* Initialize and persist an anchor state (either weak subjectivity or genesis)
|
|
103
103
|
*/
|
|
104
|
-
export async function
|
|
104
|
+
export async function checkAndPersistAnchorState(config, db, logger, anchorState, anchorStateBytes, { isWithinWeakSubjectivityPeriod, isCheckpointState, }) {
|
|
105
105
|
const expectedFork = config.getForkInfo(computeStartSlotAtEpoch(anchorState.fork.epoch));
|
|
106
106
|
const expectedForkVersion = toHex(expectedFork.version);
|
|
107
107
|
const stateFork = toHex(anchorState.fork.currentVersion);
|
|
@@ -126,8 +126,9 @@ export async function initStateFromAnchorState(config, db, logger, anchorState,
|
|
|
126
126
|
});
|
|
127
127
|
logger.warn("Checkpoint sync recommended, please use --help to see checkpoint sync options");
|
|
128
128
|
}
|
|
129
|
-
|
|
130
|
-
|
|
129
|
+
if (isCheckpointState || anchorState.slot === GENESIS_SLOT) {
|
|
130
|
+
await persistAnchorState(config, db, anchorState, anchorStateBytes);
|
|
131
|
+
}
|
|
131
132
|
}
|
|
132
133
|
export function initBeaconMetrics(metrics, state) {
|
|
133
134
|
metrics.headSlot.set(state.slot);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"initState.js","sourceRoot":"","sources":["../../src/chain/initState.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,kBAAkB,EAGlB,iCAAiC,EACjC,uBAAuB,GACxB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAA4B,GAAG,EAAC,MAAM,iBAAiB,CAAC;AAE/D,OAAO,EAAS,KAAK,EAAE,SAAS,EAAC,MAAM,iBAAiB,CAAC;AACzD,OAAO,EAAC,YAAY,EAAE,SAAS,EAAC,MAAM,uBAAuB,CAAC;AAE9D,OAAO,EAAC,YAAY,EAAC,MAAM,kBAAkB,CAAC;AAG9C,OAAO,EAAC,cAAc,EAAC,MAAM,sBAAsB,CAAC;AAGpD,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,EAAa,EACb,aAA4B,EAC5B,YAA+B;IAE/B,MAAM,OAAO,CAAC,GAAG,CAAC;QAChB,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,aAAa,CAAC,KAAK,CAAC;QACxC,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,YAAY,CAAC;QACjC,EAAE,CAAC,eAAe,CAAC,OAAO,CAAC,aAAa,CAAC,WAAW,CAAC,oBAAoB,EAAE,CAAC;QAC5E,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,aAAa,CAAC,KAAK,CAAC,SAAS,EAAE;YAC7C,GAAG,aAAa,CAAC,KAAK;YACtB,YAAY,EAAE,aAAa,CAAC,WAAW,CAAC,MAAM;YAC9C,WAAW,EAAE,aAAa,CAAC,WAAW,CAAC,YAAY,EAAE;SACtD,CAAC;KACH,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,MAAuB,EACvB,EAAa,EACb,WAAgC;
|
|
1
|
+
{"version":3,"file":"initState.js","sourceRoot":"","sources":["../../src/chain/initState.ts"],"names":[],"mappings":"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"}
|
package/lib/chain/interface.d.ts
CHANGED
|
@@ -8,6 +8,7 @@ import { IEth1ForBlockProduction } from "../eth1/index.js";
|
|
|
8
8
|
import { IExecutionEngine, IExecutionBuilder } from "../execution/index.js";
|
|
9
9
|
import { Metrics } from "../metrics/metrics.js";
|
|
10
10
|
import { IClock } from "../util/clock.js";
|
|
11
|
+
import { BufferPool } from "../util/bufferPool.js";
|
|
11
12
|
import { ChainEventEmitter } from "./emitter.js";
|
|
12
13
|
import { IStateRegenerator, RegenCaller } from "./regen/index.js";
|
|
13
14
|
import { IBlsVerifier } from "./bls/index.js";
|
|
@@ -53,6 +54,7 @@ export interface IBeaconChain {
|
|
|
53
54
|
readonly config: BeaconConfig;
|
|
54
55
|
readonly logger: Logger;
|
|
55
56
|
readonly metrics: Metrics | null;
|
|
57
|
+
readonly bufferPool: BufferPool | null;
|
|
56
58
|
/** The initial slot that the chain is started with */
|
|
57
59
|
readonly anchorStateLatestBlockSlot: Slot;
|
|
58
60
|
readonly bls: IBlsVerifier;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interface.js","sourceRoot":"","sources":["../../src/chain/interface.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"interface.js","sourceRoot":"","sources":["../../src/chain/interface.ts"],"names":[],"mappings":"AAqDA,OAAO,EAAsC,SAAS,EAAC,MAAM,oCAAoC,CAAC;AAQlG,OAAO,EAAC,SAAS,EAA0B,CAAC;AAQ5C,MAAM,CAAN,IAAY,cAIX;AAJD,WAAY,cAAc;IACxB,qEAAmD,CAAA;IACnD,6DAA2C,CAAA;IAC3C,qDAAmC,CAAA;AACrC,CAAC,EAJW,cAAc,KAAd,cAAc,QAIzB"}
|
|
@@ -1,13 +1,25 @@
|
|
|
1
1
|
import { ForkName } from "@lodestar/params";
|
|
2
|
-
import { phase0, Epoch, Slot, ValidatorIndex, RootHex } from "@lodestar/types";
|
|
2
|
+
import { phase0, Epoch, Slot, ValidatorIndex, RootHex, electra, Attestation } from "@lodestar/types";
|
|
3
3
|
import { CachedBeaconStateAllForks } from "@lodestar/state-transition";
|
|
4
4
|
import { IForkChoice } from "@lodestar/fork-choice";
|
|
5
|
+
import { ChainForkConfig } from "@lodestar/config";
|
|
5
6
|
import { InsertOutcome } from "./types.js";
|
|
7
|
+
type CommitteeIndex = number;
|
|
6
8
|
/**
|
|
7
|
-
*
|
|
9
|
+
* for electra, this is to consolidate aggregated attestations of the same attestation data into a single attestation to be included in block
|
|
10
|
+
* note that this is local definition in this file and it's NOT validator consolidation
|
|
11
|
+
*/
|
|
12
|
+
export type AttestationsConsolidation = {
|
|
13
|
+
byCommittee: Map<CommitteeIndex, AttestationNonParticipant>;
|
|
14
|
+
attData: phase0.AttestationData;
|
|
15
|
+
totalNotSeenCount: number;
|
|
16
|
+
score: number;
|
|
17
|
+
};
|
|
18
|
+
/**
|
|
19
|
+
* This function returns not seen participation for a given epoch and slot and committe index.
|
|
8
20
|
* Return null if all validators are seen or no info to check.
|
|
9
21
|
*/
|
|
10
|
-
type GetNotSeenValidatorsFn = (epoch: Epoch,
|
|
22
|
+
type GetNotSeenValidatorsFn = (epoch: Epoch, slot: Slot, committeeIndex: number) => Set<number> | null;
|
|
11
23
|
type ValidateAttestationDataFn = (attData: phase0.AttestationData) => boolean;
|
|
12
24
|
/**
|
|
13
25
|
* Maintain a pool of aggregated attestations. Attestations can be retrieved for inclusion in a block
|
|
@@ -16,32 +28,48 @@ type ValidateAttestationDataFn = (attData: phase0.AttestationData) => boolean;
|
|
|
16
28
|
* Note that we want to remove attestations with attesters that were included in the chain.
|
|
17
29
|
*/
|
|
18
30
|
export declare class AggregatedAttestationPool {
|
|
19
|
-
private readonly
|
|
31
|
+
private readonly config;
|
|
32
|
+
/**
|
|
33
|
+
* post electra, different committees could have the same AttData and we have to consolidate attestations of the same
|
|
34
|
+
* data to be included in block, so we should group by data before index
|
|
35
|
+
* // TODO: make sure it does not affect performance for pre electra forks
|
|
36
|
+
*/
|
|
37
|
+
private readonly attestationGroupByIndexByDataHexBySlot;
|
|
20
38
|
private lowestPermissibleSlot;
|
|
39
|
+
constructor(config: ChainForkConfig);
|
|
21
40
|
/** For metrics to track size of the pool */
|
|
22
41
|
getAttestationCount(): {
|
|
23
42
|
attestationCount: number;
|
|
24
43
|
attestationDataCount: number;
|
|
25
44
|
};
|
|
26
|
-
add(attestation:
|
|
45
|
+
add(attestation: Attestation, dataRootHex: RootHex, attestingIndicesCount: number, committee: Uint32Array): InsertOutcome;
|
|
27
46
|
/** Remove attestations which are too old to be included in a block. */
|
|
28
47
|
prune(clockSlot: Slot): void;
|
|
48
|
+
getAttestationsForBlock(fork: ForkName, forkChoice: IForkChoice, state: CachedBeaconStateAllForks): Attestation[];
|
|
29
49
|
/**
|
|
30
|
-
* Get attestations to be included in a block. Returns $MAX_ATTESTATIONS items
|
|
50
|
+
* Get attestations to be included in a block pre-electra. Returns up to $MAX_ATTESTATIONS items
|
|
31
51
|
*/
|
|
32
|
-
|
|
52
|
+
getAttestationsForBlockPreElectra(fork: ForkName, forkChoice: IForkChoice, state: CachedBeaconStateAllForks): phase0.Attestation[];
|
|
53
|
+
/**
|
|
54
|
+
* Get attestations to be included in an electra block. Returns up to $MAX_ATTESTATIONS_ELECTRA items
|
|
55
|
+
*/
|
|
56
|
+
getAttestationsForBlockElectra(fork: ForkName, forkChoice: IForkChoice, state: CachedBeaconStateAllForks): electra.Attestation[];
|
|
33
57
|
/**
|
|
34
58
|
* Get all attestations optionally filtered by `attestation.data.slot`
|
|
59
|
+
* Note this function is not fork aware and can potentially return a mix
|
|
60
|
+
* of phase0.Attestations and electra.Attestations.
|
|
61
|
+
* Caller of this function is expected to filtered result if they desire
|
|
62
|
+
* a homogenous array.
|
|
35
63
|
* @param bySlot slot to filter, `bySlot === attestation.data.slot`
|
|
36
64
|
*/
|
|
37
|
-
getAll(bySlot?: Slot):
|
|
65
|
+
getAll(bySlot?: Slot): Attestation[];
|
|
38
66
|
}
|
|
39
67
|
interface AttestationWithIndex {
|
|
40
|
-
attestation:
|
|
68
|
+
attestation: Attestation;
|
|
41
69
|
trueBitsCount: number;
|
|
42
70
|
}
|
|
43
71
|
type AttestationNonParticipant = {
|
|
44
|
-
attestation:
|
|
72
|
+
attestation: Attestation;
|
|
45
73
|
notSeenAttesterCount: number;
|
|
46
74
|
};
|
|
47
75
|
/**
|
|
@@ -68,11 +96,17 @@ export declare class MatchingDataAttestationGroup {
|
|
|
68
96
|
* @param notSeenAttestingIndices not seen attestting indices, i.e. indices in the same committee
|
|
69
97
|
* @returns an array of AttestationNonParticipant
|
|
70
98
|
*/
|
|
71
|
-
getAttestationsForBlock(notSeenAttestingIndices: Set<number>): AttestationNonParticipant[];
|
|
99
|
+
getAttestationsForBlock(fork: ForkName, notSeenAttestingIndices: Set<number>): AttestationNonParticipant[];
|
|
72
100
|
/** Get attestations for API. */
|
|
73
|
-
getAttestations():
|
|
101
|
+
getAttestations(): Attestation[];
|
|
74
102
|
}
|
|
75
103
|
export declare function aggregateInto(attestation1: AttestationWithIndex, attestation2: AttestationWithIndex): void;
|
|
104
|
+
/**
|
|
105
|
+
* Electra and after: Block proposer consolidates attestations with the same
|
|
106
|
+
* attestation data from different committee into a single attestation
|
|
107
|
+
* https://github.com/ethereum/consensus-specs/blob/aba6345776aa876dad368cab27fbbb23fae20455/specs/_features/eip7549/validator.md?plain=1#L39
|
|
108
|
+
*/
|
|
109
|
+
export declare function aggregateConsolidation({ byCommittee, attData }: AttestationsConsolidation): electra.Attestation;
|
|
76
110
|
/**
|
|
77
111
|
* Pre-compute participation from a CachedBeaconStateAllForks, for use to check if an attestation's committee
|
|
78
112
|
* has already attested or not.
|