diff --git a/packages/interfaces/src/enr.ts b/packages/interfaces/src/enr.ts index d3ffe24c15..f930842ae9 100644 --- a/packages/interfaces/src/enr.ts +++ b/packages/interfaces/src/enr.ts @@ -21,7 +21,6 @@ export interface Waku2 { export interface ShardInfo { clusterId: number; shards: number[]; - autosharding?: boolean; contentTopics?: string[]; } diff --git a/packages/message-encryption/src/ecies.ts b/packages/message-encryption/src/ecies.ts index 1ba72241e2..d26e315643 100644 --- a/packages/message-encryption/src/ecies.ts +++ b/packages/message-encryption/src/ecies.ts @@ -84,6 +84,8 @@ class Encoder implements IEncoder { } export interface EncoderOptions extends BaseEncoderOptions { + /** Indicates if autosharding is enabled */ + autosharding?: boolean; /** The public key to encrypt the payload for. */ publicKey: Uint8Array; /** An optional private key to be used to sign the payload before encryption. */ @@ -102,17 +104,15 @@ export interface EncoderOptions extends BaseEncoderOptions { * The payload can optionally be signed with the given private key as defined * in [26/WAKU2-PAYLOAD](https://rfc.vac.dev/spec/26/). */ -export function createEncoder( - { - pubsubTopicShardInfo, - contentTopic, - publicKey, - sigPrivKey, - ephemeral = false, - metaSetter - }: EncoderOptions, - autosharding = false -): Encoder { +export function createEncoder({ + autosharding = false, + pubsubTopicShardInfo, + contentTopic, + publicKey, + sigPrivKey, + ephemeral = false, + metaSetter +}: EncoderOptions): Encoder { return new Encoder( autosharding ? contentTopicToPubsubTopic(contentTopic) diff --git a/packages/message-encryption/src/symmetric.ts b/packages/message-encryption/src/symmetric.ts index 9d91c05695..abf9c3ee1c 100644 --- a/packages/message-encryption/src/symmetric.ts +++ b/packages/message-encryption/src/symmetric.ts @@ -84,6 +84,8 @@ class Encoder implements IEncoder { } export interface EncoderOptions extends BaseEncoderOptions { + /** Indicates if autosharding is enabled */ + autosharding?: boolean; /** The symmetric key to encrypt the payload with. */ symKey: Uint8Array; /** An optional private key to be used to sign the payload before encryption. */ @@ -102,17 +104,15 @@ export interface EncoderOptions extends BaseEncoderOptions { * The payload can optionally be signed with the given private key as defined * in [26/WAKU2-PAYLOAD](https://rfc.vac.dev/spec/26/). */ -export function createEncoder( - { - pubsubTopicShardInfo, - contentTopic, - symKey, - sigPrivKey, - ephemeral = false, - metaSetter - }: EncoderOptions, - autosharding = false -): Encoder { +export function createEncoder({ + autosharding = false, + pubsubTopicShardInfo, + contentTopic, + symKey, + sigPrivKey, + ephemeral = false, + metaSetter +}: EncoderOptions): Encoder { return new Encoder( autosharding ? contentTopicToPubsubTopic(contentTopic) diff --git a/packages/tests/tests/filter/multiple_pubsub.node.spec.ts b/packages/tests/tests/filter/multiple_pubsub.node.spec.ts index 0ce8063248..4ac207174f 100644 --- a/packages/tests/tests/filter/multiple_pubsub.node.spec.ts +++ b/packages/tests/tests/filter/multiple_pubsub.node.spec.ts @@ -202,7 +202,6 @@ describe("Waku Filter V2 (Autosharding): Multiple PubsubTopics", function () { const shardInfo: ShardInfo = { clusterId: 3, shards: [0, 1, 2], - autosharding: true, contentTopics: [customContentTopic1, customContentTopic2] }; const customEncoder1 = createEncoder( diff --git a/packages/tests/tests/light-push/multiple_pubsub.node.spec.ts b/packages/tests/tests/light-push/multiple_pubsub.node.spec.ts index 535834356b..640c7afdaf 100644 --- a/packages/tests/tests/light-push/multiple_pubsub.node.spec.ts +++ b/packages/tests/tests/light-push/multiple_pubsub.node.spec.ts @@ -193,7 +193,6 @@ describe("Waku Light Push (Autosharding): Multiple PubsubTopics", function () { const shardInfo: ShardInfo = { clusterId: 3, shards: [0, 1, 2], - autosharding: true, contentTopics: [customContentTopic1, customContentTopic2] }; const customEncoder1 = createEncoder( @@ -356,7 +355,6 @@ describe("Waku Light Push (Autosharding): Multiple PubsubTopics", function () { const shardInfo: ShardInfo = { clusterId, shards: [0, 1, 2], - autosharding: true, contentTopics: [customContentTopic1, customContentTopic2] }; const customEncoder1 = createEncoder( diff --git a/packages/tests/tests/light-push/utils.ts b/packages/tests/tests/light-push/utils.ts index beb437e3ee..1e58b5adf0 100644 --- a/packages/tests/tests/light-push/utils.ts +++ b/packages/tests/tests/light-push/utils.ts @@ -44,7 +44,7 @@ export async function runNodes( if (waku) { await waku.dial(await nwaku.getMultiaddrWithId()); await waitForRemotePeer(waku, [Protocols.LightPush]); - if (shardInfo?.autosharding) { + if (shardInfo?.contentTopics && shardInfo.contentTopics.length > 0) { await nwaku.ensureSubscriptionsAutosharding(shardInfo!.contentTopics!); } await nwaku.ensureSubscriptions(pubsubTopics); diff --git a/packages/tests/tests/relay/multiple_pubsub.node.spec.ts b/packages/tests/tests/relay/multiple_pubsub.node.spec.ts index 6c291eee95..07e3663914 100644 --- a/packages/tests/tests/relay/multiple_pubsub.node.spec.ts +++ b/packages/tests/tests/relay/multiple_pubsub.node.spec.ts @@ -328,13 +328,11 @@ describe("Waku Relay (Autosharding), multiple pubsub topics", function () { const shardInfo1: ShardInfo = { clusterId: 3, shards: [1], - autosharding: true, contentTopics: [customContentTopic1] }; const shardInfo2: ShardInfo = { clusterId: 3, shards: [2], - autosharding: true, contentTopics: [customContentTopic2] }; const customEncoder1 = createEncoder( @@ -356,7 +354,6 @@ describe("Waku Relay (Autosharding), multiple pubsub topics", function () { const shardInfoBothShards: ShardInfo = { clusterId: 3, shards: [1, 2], - autosharding: true, contentTopics: [customContentTopic1, customContentTopic2] }; diff --git a/packages/tests/tests/sharding/peer_management.spec.ts b/packages/tests/tests/sharding/peer_management.spec.ts index 029434b50b..97781839e5 100644 --- a/packages/tests/tests/sharding/peer_management.spec.ts +++ b/packages/tests/tests/sharding/peer_management.spec.ts @@ -249,7 +249,6 @@ describe("Autoharding: Peer Management", function () { waku = await createLightNode({ shardInfo: { ...shardInfo, - autosharding: true, contentTopics: [ContentTopic] }, libp2p: { @@ -324,8 +323,7 @@ describe("Autoharding: Peer Management", function () { waku = await createLightNode({ shardInfo: { ...shardInfoToDial, - contentTopics: [ContentTopic], - autosharding: true + contentTopics: [ContentTopic] }, libp2p: { peerDiscovery: [ diff --git a/packages/tests/tests/sharding/running_nodes.spec.ts b/packages/tests/tests/sharding/running_nodes.spec.ts index 47cf5c19aa..b369cd03ea 100644 --- a/packages/tests/tests/sharding/running_nodes.spec.ts +++ b/packages/tests/tests/sharding/running_nodes.spec.ts @@ -115,7 +115,6 @@ describe("Autosharding: Running Nodes", () => { waku = await createLightNode({ shardInfo: { ...shardInfoBothShards, - autosharding: true, // For autosharding, we configure multiple pubsub topics by using two content topics that hash to different shards contentTopics: [ContentTopic, ContentTopic2] } diff --git a/packages/tests/tests/store/multiple_pubsub.spec.ts b/packages/tests/tests/store/multiple_pubsub.spec.ts index 0a69fc4ba2..f1dc0e3969 100644 --- a/packages/tests/tests/store/multiple_pubsub.spec.ts +++ b/packages/tests/tests/store/multiple_pubsub.spec.ts @@ -192,7 +192,6 @@ describe("Waku Store (Autosharding), custom pubsub topic", function () { const shardInfo1: ShardInfo = { clusterId, shards: [1], - autosharding: true, contentTopics: [customContentTopic1] }; const customDecoder1 = createDecoder( @@ -210,7 +209,6 @@ describe("Waku Store (Autosharding), custom pubsub topic", function () { const shardInfoBothShards: ShardInfo = { clusterId, shards: [0, 1], - autosharding: true, contentTopics: [customContentTopic1, customContentTopic2] }; diff --git a/packages/utils/src/common/sharding.ts b/packages/utils/src/common/sharding.ts index c1c1a7e07f..a51713f4fa 100644 --- a/packages/utils/src/common/sharding.ts +++ b/packages/utils/src/common/sharding.ts @@ -17,10 +17,7 @@ export const shardInfoToPubsubTopics = ( ): PubsubTopic[] => { if (shardInfo.clusterId === undefined || shardInfo.shards === undefined) throw new Error("Invalid shard"); - if (shardInfo.autosharding) { - if (!shardInfo.contentTopics) { - throw new Error("Content topics must be set if autosharding is enabled"); - } + if (shardInfo.contentTopics && shardInfo.contentTopics.length > 0) { return shardInfo.contentTopics.map((contentTopic) => contentTopicToPubsubTopic(contentTopic, shardInfo.clusterId) );