Skip to content

feat(sdk-lib-mpc): Added EdDSA DKG MPS#8284

Open
Marzooqa wants to merge 1 commit intomasterfrom
feat/eddsa-dkg-class
Open

feat(sdk-lib-mpc): Added EdDSA DKG MPS#8284
Marzooqa wants to merge 1 commit intomasterfrom
feat/eddsa-dkg-class

Conversation

@Marzooqa
Copy link
Contributor

Description

This pull request adds EdDSA multi-party schnorr Distributed Key Generation (DKG) support to the BitGoJS SDK, specifically within the sdk-lib-mpc module.
It introduces new dependencies for Silence Laboratories' EdDSA WASM libraries, implements the EdDSA DKG protocol for multi-party threshold key generation, and provides supporting types and utility functions.
The PR also includes comprehensive unit tests that cover key share generation, deterministic and random seeding, and utility behaviors.

Ticket: WP-8197

@Marzooqa Marzooqa force-pushed the feat/eddsa-dkg-class branch from 73943f4 to 198f1ea Compare March 12, 2026 14:43
@Marzooqa Marzooqa marked this pull request as ready for review March 12, 2026 15:10
@Marzooqa Marzooqa requested review from a team as code owners March 12, 2026 15:10
@Marzooqa Marzooqa force-pushed the feat/eddsa-dkg-class branch from 198f1ea to 79687b9 Compare March 16, 2026 06:05
@Marzooqa Marzooqa requested a review from mrdanish26 March 16, 2026 09:03
@johnoliverdriscoll
Copy link
Contributor

johnoliverdriscoll commented Mar 16, 2026

Why are we not using @bitgo/wasm-mps?

@Marzooqa Marzooqa marked this pull request as draft March 18, 2026 11:03
@Marzooqa Marzooqa force-pushed the feat/eddsa-dkg-class branch from 79687b9 to 7e545c5 Compare March 18, 2026 16:57
- Add EdDSA DKG MPS implementation with core types and utilities
- Implement distributed key generation for EdDSA signatures
- Add type definitions for DKG session

Ticket: WP-8197
@Marzooqa Marzooqa force-pushed the feat/eddsa-dkg-class branch from 7e545c5 to bf6ac45 Compare March 18, 2026 18:25
@Marzooqa Marzooqa marked this pull request as ready for review March 18, 2026 19:08
@Marzooqa Marzooqa requested a review from a team as a code owner March 18, 2026 19:09
lcovar

This comment was marked as outdated.

@lcovar lcovar self-requested a review March 19, 2026 07:42
}

const seed = dkgSeed ?? crypto.randomBytes(32);
const result = ed25519_dkg_round0_process(this.partyIdx, this.decryptionKey!, this.otherPubKeys!, seed);
Copy link
Contributor

@mrdanish26 mrdanish26 Mar 19, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

WASM calls can throw unexpected errors. Should we wrap in try-catch?

}

export function deserializeMessage(msg: SerializedMessage): DeserializedMessage {
return { from: msg.from, payload: new Uint8Array(Buffer.from(msg.payload, 'base64')) };
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Buffer.from() already returns a Buffer which is a Uint8Array

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants