Skip to content

feat(sdk-coin-iota): add MPCv2 signed hot recovery support - #9426

Draft
Marzooqa wants to merge 1 commit into
masterfrom
marzooqakather498/wci-1226-sdk-coin-iota-mpcv2-signed-hot-recovery
Draft

feat(sdk-coin-iota): add MPCv2 signed hot recovery support#9426
Marzooqa wants to merge 1 commit into
masterfrom
marzooqakather498/wci-1226-sdk-coin-iota-mpcv2-signed-hot-recovery

Conversation

@Marzooqa

@Marzooqa Marzooqa commented Aug 5, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Adds MPCv2 signed hot recovery support to Iota.recover(), alongside the existing MPCv1 path (auto-detected, no new params)
  • Detects MPCv1 (JSON) vs MPCv2 (CBOR) keycard format via EDDSAUtils.isEddsaMpcV1SigningMaterial and dispatches signing accordingly, mirroring the SOL implementation (WCI-398)
  • MPCv2 path uses EDDSAUtils.getEddsaMpcV2RecoveryKeySharesFromReducedKey + EDDSAUtils.signRecoveryEddsaMPCv2, validates commonKeyChain against bitgoKey, and wraps the resulting 64-byte signature in the existing SUI-style envelope (0x00 flag byte + 64-byte sig + 32-byte pubkey)
  • recoverConsolidations() MPCv2 support is out of scope, tracked separately in WCI-1235

Test plan

  • Native IOTA MPCv2 signed recovery — returns { serializedTx, scanIndex } with correctly-formed signature envelope
  • Token MPCv2 signed recovery — routes to MPCv2 path, envelope applied correctly
  • MPCv1 regression — unchanged signing path still exercised
  • Mismatched bitgoKey vs keycard commonKeyChain — throws
  • yarn unit-test (251 passing), tsc --noEmit, eslint all clean

TICKET: WCI-1226

🤖 Generated with Claude Code

Detects MPCv1 vs MPCv2 keycard format in Iota.recover() and dispatches
signing accordingly, mirroring the SOL implementation. MPCv2 signatures
are wrapped in the existing SUI-style envelope (0x00 flag + 64-byte sig
+ 32-byte pubkey).

TICKET: WCI-1226
@linear-code

linear-code Bot commented Aug 5, 2026

Copy link
Copy Markdown
Contributor

WCI-1226

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