Skip to content

feat(sdk-core): implement EdDSA MPCv2 external signer orchestrator#8744

Draft
bitgo-ai-agent-dev[bot] wants to merge 2 commits into
masterfrom
WCI-374/eddsa-mpcv2-external-signer-orchestrator
Draft

feat(sdk-core): implement EdDSA MPCv2 external signer orchestrator#8744
bitgo-ai-agent-dev[bot] wants to merge 2 commits into
masterfrom
WCI-374/eddsa-mpcv2-external-signer-orchestrator

Conversation

@bitgo-ai-agent-dev
Copy link
Copy Markdown

Summary

  • Implements signEddsaMPCv2TssUsingExternalSigner in EddsaMPCv2Utils, replacing the stub in baseTSSUtils. Full 3-round orchestration using caller-supplied generator functions, with pickBitgoPubGpgKeyForSigning(isEddsaMpcv2=true) and armored BitGo GPG key passed to round 2/3 generators.
  • Adds dispatch block in wallet.ts signTransaction for customEddsaMPCv2Signing* params (placed before existing ECDSA MPCv2 block), plus private signTransactionTssExternalSignerEdDSAMPCv2 method.
  • Adds unit tests: happy path, string txRequestId resolution, missing round-2 signatureShares assert, message-signing rejection, and armored key delivery to generators.

Depends on: WCI-373 (types + stub — already merged)
Scope: WCI-165

Test plan

  • Unit tests in modules/sdk-core/test/unit/bitgo/utils/tss/eddsa/eddsaMPCv2Utils.ts cover the 5 cases listed above
  • yarn unit-test --scope @bitgo/sdk-core passes in CI
  • Wallet dispatch block verified: customEddsaMPCv2Signing* functions route to signTransactionTssExternalSignerEdDSAMPCv2, not the ECDSA path

Ticket: WCI-374

🤖 Generated with Ralph

Implement signEddsaMPCv2TssUsingExternalSigner in EddsaMPCv2Utils,
replacing the stub in baseTSSUtils. Also wire up the wallet.ts
dispatch block and private signTransactionTssExternalSignerEdDSAMPCv2
method so the calling code and implementation land together.

- EddsaMPCv2Utils.signEddsaMPCv2TssUsingExternalSigner: full 3-round
  orchestration using caller-supplied generator functions, pickBitgo-
  PubGpgKeyForSigning with isEddsaMpcv2=true, and armored BitGo GPG
  key passed to round 2/3 generators. Asserts signatureShares after
  round 2, mirrors ECDSA counterpart.
- wallet.ts: adds dispatch block for customEddsaMPCv2Signing* params
  before existing ECDSA MPCv2 block; adds private
  signTransactionTssExternalSignerEdDSAMPCv2 method.
- Unit tests: 5 cases covering happy path, string txRequestId
  resolution, missing round-2 signatureShares assert, message-signing
  rejection, and armored key delivery to generators.

Ticket: WCI-374

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Session-Id: 68742945-d54f-4fb6-a866-47a802ad253e
Task-Id: bb6a6972-cbe9-43f2-a9c3-74eefc045a44
@linear-code
Copy link
Copy Markdown

linear-code Bot commented May 12, 2026

WCI-374

@bitgo-ai-agent-dev bitgo-ai-agent-dev Bot force-pushed the WCI-374/eddsa-mpcv2-external-signer-orchestrator branch from 1678a2d to ae9684c Compare May 12, 2026 11:07
@types/mocha does not accept a string as the first argument to
before() and beforeEach(); drop the descriptive titles to fix
the TS2345 compile error.

Ticket: WCI-374
Session-Id: 68742945-d54f-4fb6-a866-47a802ad253e
Task-Id: bb6a6972-cbe9-43f2-a9c3-74eefc045a44
@bitgo-ai-agent-dev bitgo-ai-agent-dev Bot force-pushed the WCI-374/eddsa-mpcv2-external-signer-orchestrator branch from b7ed415 to 2910b20 Compare May 12, 2026 11:20
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.

1 participant