This release adds 2 notable features for engineering teams evaluating rollout.
✓ No known CVEs patched in this version
Topics
+13 more
Summary
AI summaryBitcoin Phase 1 completes with full Ledger pairing and send support; fixes Marinade crashes under Node ESM‑CJS interop.
Full changelog
Headline
Bitcoin Phase 1 ships complete — pairing, native segwit + taproot sends, portfolio integration, message signing, all on Ledger USB HID with the BTC app's clear-sign UX. No Ledger Live / WalletConnect dependency for BTC; same hardware-wallet trust tier as Solana / TRON.
Two production Marinade fixes also rolled in (prepare_marinade_stake is no longer crashing under Node ESM-CJS interop quirks).
What's in here vs v0.7.0
Bitcoin Phase 1 — complete
pair_ledger_btc— pairs all 4 mainnet address types in one device round-trip (legacy1.../ P2SH-wrapped3.../ native segwitbc1q.../ taprootbc1p...); stored across sessions.prepare_btc_send— segwit + taproot sends with PSBT v0 build viabitcoinjs-lib, branch-and-bound + accumulative coin-selection (coinselect), RBF-on-by-default (sequence0xFFFFFFFD), fee-cap guard atmax(10× feeRate × vbytes, 2% of output)withallowHighFeeopt-out.send_transactionBTC branch — Ledger BTC app clear-signs every output (address + amount) + fee on-screen; broadcasts via mempool.space's/tx.get_transaction_statusBTC branch — confirmation count via mempool.space chain tip; distinguishespending/success/unknown.- Read tools —
get_btc_balance,get_btc_balances,get_btc_fee_estimates,get_btc_tx_history. Indexer URL configurable (BITCOIN_INDEXER_URLenv var orbitcoinIndexerUrlconfig) so self-hosted Esplora / Electrs work out of the box. - Portfolio integration —
get_portfolio_summaryacceptsbitcoinAddress(single) orbitcoinAddresses(1-20). BTC × USD price (DefiLlamacoingecko:bitcoin) folds intobreakdown.bitcoin+bitcoinUsd. Per-address fetch errors degrade viacoverage.bitcoin. sign_message_btc— BIP-137 message signing (legacy / P2SH-wrapped / native segwit). Header byte chosen per address-type convention (31..34 / 35..38 / 39..42). Taproot is refused with a pointer to BIP-322 (which the Ledger BTC app doesn't yet expose — sign with another paired type from the same account instead). 10000-char message ceiling.
Phase 1 simplifications (documented in code)
- Sends supported on segwit + taproot only; legacy / P2SH-wrapped reads work but sends are deferred (legacy needs
nonWitnessUtxoper input). - Change goes back to source address — proper BIP-32 internal-chain change is a follow-up. Receive-as-change is functionally correct; the device still walks the user through every output.
Bug fixes
- Marinade BN named-export resolution under Node ESM-from-CJS interop (#178).
await import("@coral-xyz/anchor")returns BN asundefinedon the named slot becausecjs-module-lexermisses theObject.definePropertygetter — fix falls back todefault.BN. Regression test pins the import shape. - Marinade nested anchor 0.28 override for the
marinade-ts-sdksubtree. Marinade SDK is pinned to Anchor 0.28; our top-level override forced 0.30 globally; Anchor'sProgramconstructor signature changed in 0.30 (programId now read fromidl.address), and Marinade's bundled IDL predates that field. Fix: scoped subtree override.
Release plumbing
- Bundled binaries grouped by platform via filename order (#175).
- Snyk SNYK-JS-ELLIPTIC-14908844 suppressed with reachability justification —
ellipticis transitive viabitcoinjs-lib@5 → tiny-secp256k1@1 → elliptic; the vulnerableec.sign()is never called in our paths (Ledger device does all signing).
Out of scope / what's next
- BTC RBF fee-bump tool (
prepare_btc_rbf_bump) — Phase 2 candidate - BTC multi-sig PSBT (co-signer flow) — Phase 2 candidate
- BRC-20 / Runes / Ordinals — would require inscription-aware UTXO blacklisting in coin-selection; deferred
- Lightning, signet/testnet, multi-vendor (Trezor / Coldcard) — deferred
Notes
- Full test suite green on this commit (1047 tests).
- Build clean.
- npm
@latestwill flip to0.8.0oncepublish.ymlruns. - Bundled binaries for all 4 OS targets attach automatically once
release-binaries.ymlfinishes (Linux x64, macOS arm64, macOS x64, Windows x64).
Weekly OSS security release digest.
The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.
No spam, unsubscribe anytime.
Share this release
About szhygulin/recon-crypto-mcp
Self-custodial crypto portfolio for AI agents. Reads EVM wallet balances, ENS, token prices, and DeFi positions across Ethereum/Arbitrum/Polygon/Base (Aave V3, Compound V3, Morpho Blue, Uniswap V3 LP, Lido, EigenLayer), surfaces health-factor alerts and protocol risk scores, then prepares unsigned transactions (supply, borrow, repay, withdraw, stake, send, LiFi swap/bridge) signed on Ledger via WalletConnect — private keys never leave the hardware wallet.
Related context
Beta — feedback welcome: [email protected]