
Security News
Happy Birthday, Shai-Hulud
It has been one year since Shai-Hulud made its first appearance on npm.
@canton-network/core-signing-bitgo
Advanced tools
A driver for signing and retrieving Canton transactions using the BitGo TSS MPC custodial wallet API, implementing the SigningDriverInterface from @canton-network/core-signing-lib.
BitGo signs Canton transactions asynchronously via its MPC TSS protocol:
POST /api/v2/{coin}/wallet). The returned Key carries the BitGo wallet ID as id (stable routing identifier) and the Ed25519 public key derived from the wallet keychain at m/0 as publicKey (used for Canton party allocation and fingerprint generation).POST /api/v2/wallet/{walletId}/msgrequests) and returns a txRequestId immediately with status pending.getTransaction(txRequestId) until status === 'signed'. The Ed25519 signature and Canton signer fingerprint are extracted from the signed txRequest response.| Variable | Required | Description |
|---|---|---|
BITGO_ACCESS_TOKEN | Yes | BitGo long-lived access token |
BITGO_API_URL | No | API base URL. Defaults to https://app.bitgo.com (prod). Use https://app.bitgo-test.com for testnet. |
BITGO_ENTERPRISE_ID | No | BitGo enterprise ID. Required for createKey. Enables restart-safe getTransaction fallback via the enterprise txrequests endpoint. |
BITGO_COIN | No | Canton coin identifier. Auto-detected: tcanton for bitgo-test.com URLs, canton for everything else (prod, proxies, custom URLs). |
BitGo signing is asynchronous — the MPC TSS protocol requires multiple internal rounds before a signature is produced. The driver maps BitGo states to Canton SigningStatus:
| BitGo state | Canton status | Notes |
|---|---|---|
initialized, pendingApproval, pendingDelivery, pendingUserSignature, pendingUserCommitment, pendingUserRShare, pendingUserGShare, readyToSend | pending | MPC rounds in progress |
messages[0].state === 'signed' | signed | Message-level state takes precedence — signing is complete even if txRequest is still pendingDelivery |
delivered, signed | signed | |
canceled, rejected | rejected | |
failed | failed |
The driver maintains in-memory caches for fast lookups (txRequestId → walletId, publicKey ↔ walletId). If the process restarts, these caches are empty. Transactions are recovered via the BitGo enterprise txrequests endpoint (requires BITGO_ENTERPRISE_ID). Public keys are resolved on demand per wallet via the BitGo wallet and keychain endpoints when not in cache.
pnpm build # compile
pnpm test # run tests
pnpm test:coverage # with coverage report
FAQs
Wallet Gateway signing driver for BitGo
The npm package @canton-network/core-signing-bitgo receives a total of 239 weekly downloads. As such, @canton-network/core-signing-bitgo popularity was classified as not popular.
We found that @canton-network/core-signing-bitgo demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 5 open source maintainers collaborating on the project.

Security News
It has been one year since Shai-Hulud made its first appearance on npm.

Research
/Security News
Operators behind PolinRider used a compromised GitHub account to plant malware in four development versions of a Packagist package with 700,000+ downloads.

Security News
GitHub Actions now supports cache-mode, a least-privilege control on the Actions cache aimed at the cache poisoning technique behind recent compromises.