diff --git a/packages/beacon-node/src/network/metadata.ts b/packages/beacon-node/src/network/metadata.ts index 1b3c72d6e4b2..4b8e1ee4be6a 100644 --- a/packages/beacon-node/src/network/metadata.ts +++ b/packages/beacon-node/src/network/metadata.ts @@ -98,6 +98,7 @@ export class MetadataController { return; } this.onSetValue(ENRKey.cgc, serializeCgc(custodyGroupCount)); + this._metadata.seqNumber++; this._metadata.custodyGroupCount = custodyGroupCount; } diff --git a/packages/beacon-node/test/unit/network/metadata.test.ts b/packages/beacon-node/test/unit/network/metadata.test.ts index ff77095f149e..c93235436729 100644 --- a/packages/beacon-node/test/unit/network/metadata.test.ts +++ b/packages/beacon-node/test/unit/network/metadata.test.ts @@ -57,5 +57,24 @@ describe("network / metadata", () => { metadata.custodyGroupCount = 128; expect(onSetValue).toHaveBeenCalledWith(ENRKey.cgc, serializeCgc(128)); }); + + it("should increment seqNumber when cgc is updated", () => { + const onSetValue = vi.fn(); + const networkConfig = new NetworkConfig(getValidPeerId(), config); + const metadata = new MetadataController({}, {onSetValue, networkConfig}); + const initialSeqNumber = metadata.seqNumber; + metadata.custodyGroupCount = 128; + expect(metadata.seqNumber).toBe(initialSeqNumber + 1n); + }); + + it("should not increment seqNumber when cgc is set to the same value", () => { + const onSetValue = vi.fn(); + const networkConfig = new NetworkConfig(getValidPeerId(), config); + const metadata = new MetadataController({}, {onSetValue, networkConfig}); + metadata.custodyGroupCount = 128; + const initialSeqNumber = metadata.seqNumber; + metadata.custodyGroupCount = 128; + expect(metadata.seqNumber).toBe(initialSeqNumber); + }); }); });