diff --git a/packages/beacon-node/src/chain/chain.ts b/packages/beacon-node/src/chain/chain.ts index fd6636661fc3..d52ae5365f80 100644 --- a/packages/beacon-node/src/chain/chain.ts +++ b/packages/beacon-node/src/chain/chain.ts @@ -505,7 +505,7 @@ export class BeaconChain implements IBeaconChain { } seenBlock(blockRoot: RootHex): boolean { - return this.seenBlockInputCache.hasBlock(blockRoot) || this.forkChoice.hasBlockHexUnsafe(blockRoot); + return this.seenBlockInputCache.has(blockRoot) || this.forkChoice.hasBlockHexUnsafe(blockRoot); } seenPayloadEnvelope(blockRoot: RootHex): boolean { diff --git a/packages/beacon-node/src/chain/seenCache/seenGossipBlockInput.ts b/packages/beacon-node/src/chain/seenCache/seenGossipBlockInput.ts index abf0df1959f9..b70c59760dee 100644 --- a/packages/beacon-node/src/chain/seenCache/seenGossipBlockInput.ts +++ b/packages/beacon-node/src/chain/seenCache/seenGossipBlockInput.ts @@ -153,6 +153,10 @@ export class SeenBlockInput { return this.blockInputs.get(rootHex)?.hasBlock() ?? false; } + has(rootHex: RootHex): boolean { + return this.blockInputs.has(rootHex); + } + get(rootHex: RootHex): IBlockInput | undefined { return this.blockInputs.get(rootHex); } diff --git a/packages/beacon-node/test/unit/chain/seenCache/seenBlockInput.test.ts b/packages/beacon-node/test/unit/chain/seenCache/seenBlockInput.test.ts index e9531b816c95..07aef9a39fea 100644 --- a/packages/beacon-node/test/unit/chain/seenCache/seenBlockInput.test.ts +++ b/packages/beacon-node/test/unit/chain/seenCache/seenBlockInput.test.ts @@ -23,6 +23,7 @@ import { config, generateBlock, generateBlockWithBlobSidecars, + generateBlockWithColumnSidecars, generateChainOfBlocks, } from "../../../utils/blocksAndData.js"; @@ -83,6 +84,22 @@ describe("SeenBlockInputCache", async () => { }); }); + describe("has()", () => { + it("should return true for a cached fulu column-only BlockInput", () => { + const {columnSidecars, rootHex} = generateBlockWithColumnSidecars({forkName: ForkName.fulu}); + + cache.getByColumn({ + columnSidecar: columnSidecars[0], + blockRootHex: rootHex, + source: BlockInputSource.gossip, + seenTimestampSec: Date.now() / 1000, + }); + + expect(cache.has(rootHex)).toBeTruthy(); + expect(cache.hasBlock(rootHex)).toBeFalsy(); + }); + }); + describe("get()", () => { it("should return BlockInput if in cache", () => { const {block, rootHex} = generateBlock({forkName: ForkName.capella});