diff --git a/ZCASH_LEDGER_IMPLEMENTATION.md b/ZCASH_LEDGER_IMPLEMENTATION.md new file mode 100644 index 000000000..926b64c8f --- /dev/null +++ b/ZCASH_LEDGER_IMPLEMENTATION.md @@ -0,0 +1,101 @@ +# Zcash Ledger Implementation Guide + +This document outlines the changes required to support Zcash (ZEC) on Ledger devices within `hdwallet`. + +## Overview +Zcash support on Ledger requires specific handling due to its unique transaction format (ZIP-244, v4/v5 versions) and consensus branch IDs. The standard Bitcoin app on Ledger does not natively support these features without specific flags and updated libraries. + +--- + +## Technical Specifications + +### BIP44 Derivation Path +- **SLIP44 Code**: 133 +- **Standard Path**: `m/44'/133'/0'/0/x` +- **Account Type**: P2PKH (Legacy) only - no SegWit support + +### Transaction Format +- **Versions**: v4 (Sapling), v5 (NU5+) +- **Version Encoding**: Little-endian with Overwinter flag + - v4: `0x80000004` + - v5: `0x80000005` +- **Version Group IDs**: + - v4 (Sapling): `0x892F2085` + - v5 (NU5+): `0x26A7270A` + +### Consensus Branch IDs +- **NU5**: `0xC2D6D0B4` (block 1,687,104) +- **NU6**: `0xC8E71055` (block 2,726,400 - Nov 2024) +- **NU6.1**: `0x4DEC4DF0` (block 3,146,400 - Nov 2025) + +### Address Format +- **Transparent addresses** (t-addresses): Start with "t1" (mainnet) +- **No shielded support**: z-addresses not supported in this implementation + +--- + +## Issues & Solutions Discovered + +### Issue 1: `getVarint called with unexpected parameters` +**Error**: `splitTransaction` failed with varint parsing error +**Root Cause**: Missing `additionals` parameter when calling `splitTransaction` +**Solution**: Pass `["zcash", "sapling"]` as 4th parameter +**Reference**: [Ledger splitTransaction tests](https://github.com/LedgerHQ/ledger-live/blob/develop/libs/ledgerjs/packages/hw-app-btc/tests/splitTransaction.test.ts) + +### Issue 2: Ledger App Quits / USB Transfer Cancelled +**Error**: `AbortError: Failed to execute 'transferIn' on 'USBDevice'` +**Root Cause**: Wrong `isSegwit` parameter value (was `false`, should be `true`) +**Solution**: Set 2nd parameter to `true` for Zcash in `splitTransaction` +**Reference**: Ledger test file shows `splitTransaction(hex, true, true, ["zcash", "sapling"])` + +### Issue 3: Consensus Branch ID Mismatch (NU6 vs NU6.1) +**Error**: `transaction uses an incorrect consensus branch id` +**Root Cause**: Zcash network upgraded to NU6.1 (0x4DEC4DF0), but older Ledger libraries defaulted to NU6. +**Solution**: +- Use `@ledgerhq/hw-app-btc` version `10.13.0` (strictly pinned across all packages) +- Explicitly set `consensusBranchId` in the adapter if necessary. + +### Issue 4: Invalid Trusted Input Hash (Zcash v5) +**Error**: "Missing inputs" error or invalid signature verification on broadcast. +**Root Cause**: `@ledgerhq/hw-app-btc` uses Double-SHA256 (SHA256d) to calculate the transaction hash for trusted inputs. However, Zcash v5 transactions use ZIP-244 transaction digests (Tree Hash) for the TXID. The library fails to handle this correctly for Zcash inputs, resulting in a mismatch between the trusted input's TXID and the actual input being signed. +**Solution**: **Monkey Patch** implemented in `packages/hdwallet-ledger/src/bitcoin.ts`. +- **Mechanism**: We patch `getTrustedInputBIP143` to intercept Zcash transactions. +- **Fix**: The patch injects the correct ZIP-244 TXID (provided by the adapter via `_customZcashTxId`) and Amount, bypassing the library's faulty re-hashing logic. +- **Safety**: The patch is strictly guarded to only affect Zcash transactions with the custom properties attached. Trusted input security is maintained as the Ledger device still verifies the signature. +- **Implementation**: Uses `require` to modify the CommonJS exports of the library, as ES6 imports are immutable. + +--- + +## Known Limitations + +### 1. Transparent Addresses Only +- Only supports t-addresses (transparent UTXO transactions) +- Does **not** support z-addresses (shielded transactions) + +### 2. Expiry Height Management +- **Current**: Hardcoded to 0 (no expiry) using `Buffer.alloc(4)` in the implementation. +- **Requirement**: Zcash transactions require `expiryHeight`. If 0, it means no expiry (valid per ZIP-203). +- **Note**: The current implementation does not derive expiry from input block height. + +--- + +## Files Modified + +| File | Changes | +|------|---------| +| `packages/hdwallet-ledger/src/bitcoin.ts` | **Major Update**: Added Monkey Patch for `getTrustedInputBIP143`. Logic for Zcash inputs (using `ZcashPsbt`, `splitTransaction` params). Constants for Version/Branch IDs. | +| `packages/hdwallet-ledger/src/utils.ts` | Configured `isSegwitSupported: true` and `areTransactionTimestamped: true` for Zcash (SLIP-133). | +| `packages/hdwallet-ledger/src/currencies.ts` | Added Zcash currency with xpub version. | + +--- + +## Testing Checklist + +- [x] Address derivation works (t-address format) +- [x] Transaction signing initiates +- [x] Ledger app stays open during signing +- [x] splitTransaction parses input transactions correctly +- [x] **Consensus Branch ID** matches NU6.1 (0x4DEC4DF0) +- [x] **Trusted Input Hashing** matches ZIP-244 (via Monkey Patch) +- [x] Broadcast succeeds (Simulated/Verified) +- [ ] Swap works end-to-end diff --git a/examples/sandbox/package.json b/examples/sandbox/package.json index 427ed6080..49f629723 100644 --- a/examples/sandbox/package.json +++ b/examples/sandbox/package.json @@ -1,6 +1,6 @@ { "name": "@shapeshiftoss/hdwallet-sandbox", - "version": "1.62.25", + "version": "1.62.26", "license": "MIT", "private": true, "browserslist": "> 0.5%, last 2 versions, not dead", @@ -12,24 +12,24 @@ "dependencies": { "@esm2cjs/p-queue": "^7.3.0", "@metamask/eth-sig-util": "^7.0.0", - "@shapeshiftoss/hdwallet-coinbase": "1.62.25", - "@shapeshiftoss/hdwallet-core": "1.62.25", - "@shapeshiftoss/hdwallet-keepkey": "1.62.25", - "@shapeshiftoss/hdwallet-keepkey-tcp": "1.62.25", - "@shapeshiftoss/hdwallet-keepkey-webusb": "1.62.25", - "@shapeshiftoss/hdwallet-keplr": "1.62.25", - "@shapeshiftoss/hdwallet-ledger": "1.62.25", - "@shapeshiftoss/hdwallet-ledger-webhid": "1.62.25", - "@shapeshiftoss/hdwallet-ledger-webusb": "1.62.25", - "@shapeshiftoss/hdwallet-metamask-multichain": "1.62.25", - "@shapeshiftoss/hdwallet-native": "1.62.25", - "@shapeshiftoss/hdwallet-phantom": "1.62.25", - "@shapeshiftoss/hdwallet-portis": "1.62.25", - "@shapeshiftoss/hdwallet-trezor": "1.62.25", - "@shapeshiftoss/hdwallet-trezor-connect": "1.62.25", - "@shapeshiftoss/hdwallet-vultisig": "1.62.25", - "@shapeshiftoss/hdwallet-walletconnect": "1.62.25", - "@shapeshiftoss/hdwallet-walletconnectv2": "1.62.25", + "@shapeshiftoss/hdwallet-coinbase": "1.62.26", + "@shapeshiftoss/hdwallet-core": "1.62.26", + "@shapeshiftoss/hdwallet-keepkey": "1.62.26", + "@shapeshiftoss/hdwallet-keepkey-tcp": "1.62.26", + "@shapeshiftoss/hdwallet-keepkey-webusb": "1.62.26", + "@shapeshiftoss/hdwallet-keplr": "1.62.26", + "@shapeshiftoss/hdwallet-ledger": "1.62.26", + "@shapeshiftoss/hdwallet-ledger-webhid": "1.62.26", + "@shapeshiftoss/hdwallet-ledger-webusb": "1.62.26", + "@shapeshiftoss/hdwallet-metamask-multichain": "1.62.26", + "@shapeshiftoss/hdwallet-native": "1.62.26", + "@shapeshiftoss/hdwallet-phantom": "1.62.26", + "@shapeshiftoss/hdwallet-portis": "1.62.26", + "@shapeshiftoss/hdwallet-trezor": "1.62.26", + "@shapeshiftoss/hdwallet-trezor-connect": "1.62.26", + "@shapeshiftoss/hdwallet-vultisig": "1.62.26", + "@shapeshiftoss/hdwallet-walletconnect": "1.62.26", + "@shapeshiftoss/hdwallet-walletconnectv2": "1.62.26", "bip32": "^2.0.4", "eip-712": "^1.0.0", "jquery": "^3.7.1", diff --git a/integration/jest.config.js b/integration/jest.config.js index 950e7b91a..8266f9f71 100644 --- a/integration/jest.config.js +++ b/integration/jest.config.js @@ -12,6 +12,7 @@ module.exports = { "^@shapeshiftoss/hdwallet-(.*)": "/../../packages/hdwallet-$1/src", "^valibot$": require.resolve("valibot"), "^axios$": require.resolve("axios"), + "^@brandonblack/musig/base_crypto$": "/../../node_modules/@brandonblack/musig/lib/base_crypto.js", }, globals: { "ts-jest": { diff --git a/integration/package.json b/integration/package.json index 5395cd35e..693aa4144 100644 --- a/integration/package.json +++ b/integration/package.json @@ -1,6 +1,6 @@ { "name": "@shapeshiftoss/integration", - "version": "1.62.25", + "version": "1.62.26", "main": "index.js", "license": "MIT", "private": true, @@ -11,16 +11,17 @@ }, "dependencies": { "@bitcoinerlab/secp256k1": "^1.1.1", - "@shapeshiftoss/hdwallet-core": "1.62.25", - "@shapeshiftoss/hdwallet-keepkey": "1.62.25", - "@shapeshiftoss/hdwallet-keepkey-nodewebusb": "1.62.25", - "@shapeshiftoss/hdwallet-keepkey-tcp": "1.62.25", - "@shapeshiftoss/hdwallet-ledger": "1.62.25", - "@shapeshiftoss/hdwallet-metamask-multichain": "1.62.25", - "@shapeshiftoss/hdwallet-native": "1.62.25", - "@shapeshiftoss/hdwallet-portis": "1.62.25", - "@shapeshiftoss/hdwallet-trezor": "1.62.25", - "@shapeshiftoss/hdwallet-vultisig": "1.62.25", + "@bitgo/utxo-lib": "^11.18.0", + "@shapeshiftoss/hdwallet-core": "1.62.26", + "@shapeshiftoss/hdwallet-keepkey": "1.62.26", + "@shapeshiftoss/hdwallet-keepkey-nodewebusb": "1.62.26", + "@shapeshiftoss/hdwallet-keepkey-tcp": "1.62.26", + "@shapeshiftoss/hdwallet-ledger": "1.62.26", + "@shapeshiftoss/hdwallet-metamask-multichain": "1.62.26", + "@shapeshiftoss/hdwallet-native": "1.62.26", + "@shapeshiftoss/hdwallet-portis": "1.62.26", + "@shapeshiftoss/hdwallet-trezor": "1.62.26", + "@shapeshiftoss/hdwallet-vultisig": "1.62.26", "fast-json-stable-stringify": "^2.1.0", "msw": "^0.27.1", "whatwg-fetch": "^3.6.2" diff --git a/lerna.json b/lerna.json index 8275f5642..1cec5da33 100644 --- a/lerna.json +++ b/lerna.json @@ -1,6 +1,6 @@ { "lerna": "5.2.0", - "version": "1.62.25", + "version": "1.62.26", "npmClient": "yarn", "useWorkspaces": true, "command": { diff --git a/packages/hdwallet-coinbase/package.json b/packages/hdwallet-coinbase/package.json index 131929ef1..c7727fd43 100644 --- a/packages/hdwallet-coinbase/package.json +++ b/packages/hdwallet-coinbase/package.json @@ -1,6 +1,6 @@ { "name": "@shapeshiftoss/hdwallet-coinbase", - "version": "1.62.25", + "version": "1.62.26", "license": "MIT", "publishConfig": { "access": "public" @@ -15,7 +15,7 @@ }, "dependencies": { "@coinbase/wallet-sdk": "^3.6.6", - "@shapeshiftoss/hdwallet-core": "1.62.25", + "@shapeshiftoss/hdwallet-core": "1.62.26", "eth-rpc-errors": "^4.0.3", "lodash": "^4.17.21" }, diff --git a/packages/hdwallet-core/package.json b/packages/hdwallet-core/package.json index 1fad93d3f..2363a7b33 100644 --- a/packages/hdwallet-core/package.json +++ b/packages/hdwallet-core/package.json @@ -1,6 +1,6 @@ { "name": "@shapeshiftoss/hdwallet-core", - "version": "1.62.25", + "version": "1.62.26", "license": "MIT", "publishConfig": { "access": "public" diff --git a/packages/hdwallet-gridplus/package.json b/packages/hdwallet-gridplus/package.json index 74398b57f..75cfb3053 100644 --- a/packages/hdwallet-gridplus/package.json +++ b/packages/hdwallet-gridplus/package.json @@ -1,6 +1,6 @@ { "name": "@shapeshiftoss/hdwallet-gridplus", - "version": "1.62.25", + "version": "1.62.26", "license": "MIT", "publishConfig": { "access": "public" @@ -20,7 +20,7 @@ "@ethereumjs/rlp": "5.0.2", "@ethereumjs/tx": "5.4.0", "@metamask/eth-sig-util": "^7.0.0", - "@shapeshiftoss/hdwallet-core": "1.62.25", + "@shapeshiftoss/hdwallet-core": "1.62.26", "bech32": "^1.1.4", "bs58": "^5.0.0", "bs58check": "^4.0.0", diff --git a/packages/hdwallet-keepkey-chromeusb/package.json b/packages/hdwallet-keepkey-chromeusb/package.json index fa3ab31a0..aa010f9a2 100644 --- a/packages/hdwallet-keepkey-chromeusb/package.json +++ b/packages/hdwallet-keepkey-chromeusb/package.json @@ -1,6 +1,6 @@ { "name": "@shapeshiftoss/hdwallet-keepkey-chromeusb", - "version": "1.62.25", + "version": "1.62.26", "license": "MIT", "publishConfig": { "access": "public" @@ -14,7 +14,7 @@ "prepublishOnly": "yarn clean && yarn build" }, "dependencies": { - "@shapeshiftoss/hdwallet-core": "1.62.25", - "@shapeshiftoss/hdwallet-keepkey": "1.62.25" + "@shapeshiftoss/hdwallet-core": "1.62.26", + "@shapeshiftoss/hdwallet-keepkey": "1.62.26" } } diff --git a/packages/hdwallet-keepkey-electron/package.json b/packages/hdwallet-keepkey-electron/package.json index 50aeaea46..96c52f5ea 100644 --- a/packages/hdwallet-keepkey-electron/package.json +++ b/packages/hdwallet-keepkey-electron/package.json @@ -1,6 +1,6 @@ { "name": "@shapeshiftoss/hdwallet-keepkey-electron", - "version": "1.62.25", + "version": "1.62.26", "license": "MIT", "publishConfig": { "access": "public" @@ -14,7 +14,7 @@ "prepublishOnly": "yarn clean && yarn build" }, "dependencies": { - "@shapeshiftoss/hdwallet-keepkey": "1.62.25", + "@shapeshiftoss/hdwallet-keepkey": "1.62.26", "uuid": "^8.3.2" }, "peerDependencies": { diff --git a/packages/hdwallet-keepkey-nodehid/package.json b/packages/hdwallet-keepkey-nodehid/package.json index bc77393a8..e5be67e38 100644 --- a/packages/hdwallet-keepkey-nodehid/package.json +++ b/packages/hdwallet-keepkey-nodehid/package.json @@ -1,6 +1,6 @@ { "name": "@shapeshiftoss/hdwallet-keepkey-nodehid", - "version": "1.62.25", + "version": "1.62.26", "license": "MIT", "publishConfig": { "access": "public" @@ -14,7 +14,7 @@ "prepublishOnly": "yarn clean && yarn build" }, "dependencies": { - "@shapeshiftoss/hdwallet-keepkey": "1.62.25" + "@shapeshiftoss/hdwallet-keepkey": "1.62.26" }, "peerDependencies": { "node-hid": "^2.1.1" diff --git a/packages/hdwallet-keepkey-nodewebusb/package.json b/packages/hdwallet-keepkey-nodewebusb/package.json index 85270577c..ab044d36c 100644 --- a/packages/hdwallet-keepkey-nodewebusb/package.json +++ b/packages/hdwallet-keepkey-nodewebusb/package.json @@ -1,6 +1,6 @@ { "name": "@shapeshiftoss/hdwallet-keepkey-nodewebusb", - "version": "1.62.25", + "version": "1.62.26", "license": "MIT", "publishConfig": { "access": "public" @@ -14,8 +14,8 @@ "prepublishOnly": "yarn clean && yarn build" }, "dependencies": { - "@shapeshiftoss/hdwallet-core": "1.62.25", - "@shapeshiftoss/hdwallet-keepkey": "1.62.25" + "@shapeshiftoss/hdwallet-core": "1.62.26", + "@shapeshiftoss/hdwallet-keepkey": "1.62.26" }, "peerDependencies": { "usb": "^2.3.1" diff --git a/packages/hdwallet-keepkey-tcp/package.json b/packages/hdwallet-keepkey-tcp/package.json index cfc2418bb..b9204d476 100644 --- a/packages/hdwallet-keepkey-tcp/package.json +++ b/packages/hdwallet-keepkey-tcp/package.json @@ -1,6 +1,6 @@ { "name": "@shapeshiftoss/hdwallet-keepkey-tcp", - "version": "1.62.25", + "version": "1.62.26", "license": "MIT", "publishConfig": { "access": "public" @@ -14,8 +14,8 @@ "prepublishOnly": "yarn clean && yarn build" }, "dependencies": { - "@shapeshiftoss/hdwallet-core": "1.62.25", - "@shapeshiftoss/hdwallet-keepkey": "1.62.25", + "@shapeshiftoss/hdwallet-core": "1.62.26", + "@shapeshiftoss/hdwallet-keepkey": "1.62.26", "axios": "^0.21.1" } } diff --git a/packages/hdwallet-keepkey-webusb/package.json b/packages/hdwallet-keepkey-webusb/package.json index 4a24b03ce..0b96ab2d9 100644 --- a/packages/hdwallet-keepkey-webusb/package.json +++ b/packages/hdwallet-keepkey-webusb/package.json @@ -1,6 +1,6 @@ { "name": "@shapeshiftoss/hdwallet-keepkey-webusb", - "version": "1.62.25", + "version": "1.62.26", "license": "MIT", "publishConfig": { "access": "public" @@ -14,8 +14,8 @@ "prepublishOnly": "yarn clean && yarn build" }, "dependencies": { - "@shapeshiftoss/hdwallet-core": "1.62.25", - "@shapeshiftoss/hdwallet-keepkey": "1.62.25" + "@shapeshiftoss/hdwallet-core": "1.62.26", + "@shapeshiftoss/hdwallet-keepkey": "1.62.26" }, "devDependencies": { "@types/w3c-web-usb": "^1.0.4" diff --git a/packages/hdwallet-keepkey/package.json b/packages/hdwallet-keepkey/package.json index b79a52f3d..128bdf38f 100644 --- a/packages/hdwallet-keepkey/package.json +++ b/packages/hdwallet-keepkey/package.json @@ -1,6 +1,6 @@ { "name": "@shapeshiftoss/hdwallet-keepkey", - "version": "1.62.25", + "version": "1.62.26", "license": "MIT", "publishConfig": { "access": "public" @@ -21,10 +21,12 @@ "@keepkey/device-protocol": "7.13.4", "@metamask/eth-sig-util": "^7.0.0", "@shapeshiftoss/bitcoinjs-lib": "7.0.0-shapeshift.2", - "@shapeshiftoss/hdwallet-core": "1.62.25", + "@shapeshiftoss/hdwallet-core": "1.62.26", "@shapeshiftoss/proto-tx-builder": "0.10.0", "bignumber.js": "^9.0.1", "bnb-javascript-sdk-nobroadcast": "2.16.15", + "bs58": "^5.0.0", + "bs58check": "^4.0.0", "crypto-js": "^4.0.0", "eip55": "^2.1.0", "google-protobuf": "^3.15.8", diff --git a/packages/hdwallet-keepkey/src/eos.ts b/packages/hdwallet-keepkey/src/eos.ts index 595efcd15..ef28b2489 100644 --- a/packages/hdwallet-keepkey/src/eos.ts +++ b/packages/hdwallet-keepkey/src/eos.ts @@ -1,7 +1,7 @@ import * as Messages from "@keepkey/device-protocol/lib/messages_pb"; import * as EosMessages from "@keepkey/device-protocol/lib/messages-eos_pb"; import * as core from "@shapeshiftoss/hdwallet-core"; -import * as bs58 from "bs58"; +import bs58 from "bs58"; import createHash from "create-hash"; import Long from "long"; diff --git a/packages/hdwallet-keplr/package.json b/packages/hdwallet-keplr/package.json index 293173550..ad08c7ded 100644 --- a/packages/hdwallet-keplr/package.json +++ b/packages/hdwallet-keplr/package.json @@ -1,6 +1,6 @@ { "name": "@shapeshiftoss/hdwallet-keplr", - "version": "1.62.25", + "version": "1.62.26", "license": "MIT", "publishConfig": { "access": "public" @@ -17,7 +17,7 @@ "@cosmjs/amino": "^0.28.13", "@cosmjs/stargate": "^0.28.13", "@shapeshiftoss/caip": "8.15.0", - "@shapeshiftoss/hdwallet-core": "1.62.25", + "@shapeshiftoss/hdwallet-core": "1.62.26", "@shapeshiftoss/proto-tx-builder": "0.10.0", "@shapeshiftoss/types": "3.1.3", "base64-js": "^1.5.1", diff --git a/packages/hdwallet-ledger-webhid/package.json b/packages/hdwallet-ledger-webhid/package.json index f0699fe18..77656265a 100644 --- a/packages/hdwallet-ledger-webhid/package.json +++ b/packages/hdwallet-ledger-webhid/package.json @@ -1,6 +1,6 @@ { "name": "@shapeshiftoss/hdwallet-ledger-webhid", - "version": "1.62.25", + "version": "1.62.26", "license": "MIT", "publishConfig": { "access": "public" @@ -14,12 +14,12 @@ "prepublishOnly": "yarn clean && yarn build" }, "dependencies": { - "@ledgerhq/hw-app-btc": "^10.10.0", - "@ledgerhq/hw-app-eth": "^6.45.13", - "@ledgerhq/hw-transport": "6.31.8", - "@ledgerhq/hw-transport-webhid": "^6.30.4", - "@shapeshiftoss/hdwallet-core": "1.62.25", - "@shapeshiftoss/hdwallet-ledger": "1.62.25", + "@ledgerhq/hw-app-btc": "10.13.0", + "@ledgerhq/hw-app-eth": "7.0.0", + "@ledgerhq/hw-transport": "6.31.13", + "@ledgerhq/hw-transport-webhid": "6.30.6", + "@shapeshiftoss/hdwallet-core": "1.62.26", + "@shapeshiftoss/hdwallet-ledger": "1.62.26", "@types/w3c-web-hid": "^1.0.2" } } diff --git a/packages/hdwallet-ledger-webusb/package.json b/packages/hdwallet-ledger-webusb/package.json index d80977867..55f03a4a9 100644 --- a/packages/hdwallet-ledger-webusb/package.json +++ b/packages/hdwallet-ledger-webusb/package.json @@ -1,6 +1,6 @@ { "name": "@shapeshiftoss/hdwallet-ledger-webusb", - "version": "1.62.25", + "version": "1.62.26", "license": "MIT", "publishConfig": { "access": "public" @@ -14,14 +14,14 @@ "prepublishOnly": "yarn clean && yarn build" }, "dependencies": { - "@ledgerhq/hw-app-btc": "^10.10.0", - "@ledgerhq/hw-app-cosmos": "^6.32.4", - "@ledgerhq/hw-app-eth": "^6.45.13", - "@ledgerhq/hw-app-solana": "^7.5.1", - "@ledgerhq/hw-transport": "6.31.8", - "@ledgerhq/hw-transport-webusb": "6.29.8", - "@shapeshiftoss/hdwallet-core": "1.62.25", - "@shapeshiftoss/hdwallet-ledger": "1.62.25", + "@ledgerhq/hw-app-btc": "10.13.0", + "@ledgerhq/hw-app-cosmos": "6.32.9", + "@ledgerhq/hw-app-eth": "7.0.0", + "@ledgerhq/hw-app-solana": "7.6.0", + "@ledgerhq/hw-transport": "6.31.13", + "@ledgerhq/hw-transport-webusb": "6.29.13", + "@shapeshiftoss/hdwallet-core": "1.62.26", + "@shapeshiftoss/hdwallet-ledger": "1.62.26", "@types/w3c-web-usb": "^1.0.4", "p-queue": "^7.4.1" }, diff --git a/packages/hdwallet-ledger/package.json b/packages/hdwallet-ledger/package.json index b900fe3b5..39da13d28 100644 --- a/packages/hdwallet-ledger/package.json +++ b/packages/hdwallet-ledger/package.json @@ -1,6 +1,6 @@ { "name": "@shapeshiftoss/hdwallet-ledger", - "version": "1.62.25", + "version": "1.62.26", "license": "MIT", "publishConfig": { "access": "public" @@ -15,19 +15,20 @@ "prepublishOnly": "yarn clean && yarn build" }, "dependencies": { + "@bitgo/utxo-lib": "^11.18.0", "@ethereumjs/common": "3.2.0", "@ethereumjs/tx": "4.2.0", - "@ledgerhq/device-core": "^0.5.4", - "@ledgerhq/hw-app-btc": "^10.10.0", - "@ledgerhq/hw-app-cosmos": "^6.32.4", - "@ledgerhq/hw-app-eth": "^6.45.13", - "@ledgerhq/hw-app-solana": "^7.5.1", - "@ledgerhq/hw-app-trx": "^6.31.9", - "@ledgerhq/hw-transport": "6.31.8", + "@ledgerhq/device-core": "0.6.9", + "@ledgerhq/hw-app-btc": "10.13.0", + "@ledgerhq/hw-app-cosmos": "6.32.9", + "@ledgerhq/hw-app-eth": "7.0.0", + "@ledgerhq/hw-app-solana": "7.6.0", + "@ledgerhq/hw-app-trx": "6.31.9", + "@ledgerhq/hw-transport": "6.31.13", "@ledgerhq/logs": "6.13.0", "@mysten/ledgerjs-hw-app-sui": "^0.7.0", "@shapeshiftoss/bitcoinjs-lib": "7.0.0-shapeshift.2", - "@shapeshiftoss/hdwallet-core": "1.62.25", + "@shapeshiftoss/hdwallet-core": "1.62.26", "@solana/web3.js": "1.95.8", "base64-js": "^1.5.1", "bchaddrjs": "^0.4.4", diff --git a/packages/hdwallet-ledger/src/bitcoin.ts b/packages/hdwallet-ledger/src/bitcoin.ts index 0c8a902a7..9e5205ee7 100644 --- a/packages/hdwallet-ledger/src/bitcoin.ts +++ b/packages/hdwallet-ledger/src/bitcoin.ts @@ -1,6 +1,9 @@ import ecc from "@bitcoinerlab/secp256k1"; +import { address as zcashAddress, bitgo, networks as bitgoNetworks } from "@bitgo/utxo-lib"; +import { type ZcashPsbt, ZcashTransaction } from "@bitgo/utxo-lib/dist/src/bitgo"; import { CreateTransactionArg } from "@ledgerhq/hw-app-btc/lib/createTransaction"; import { Transaction } from "@ledgerhq/hw-app-btc/lib/types"; +import Transport from "@ledgerhq/hw-transport"; import * as bitcoin from "@shapeshiftoss/bitcoinjs-lib"; import * as core from "@shapeshiftoss/hdwallet-core"; import { BTCInputScriptType, convertXpubVersion, scriptTypeToAccountType } from "@shapeshiftoss/hdwallet-core"; @@ -13,7 +16,81 @@ import { currencies } from "./currencies"; import { LedgerTransport } from "./transport"; import { handleError, networksUtil, translateScriptType } from "./utils"; -export const supportedCoins = ["Testnet", "Bitcoin", "BitcoinCash", "Litecoin", "Dash", "DigiByte", "Dogecoin"]; +const ZCASH_VERSION_GROUP_ID: Record = { + 4: 0x892f2085, + 5: 0x26a7270a, +}; + +const ZCASH_CONSENSUS_BRANCH_ID = 0x4dec4df0; + +type ZcashInput = core.BTCSignTxInputLedger & { + txid?: string; + blockHeight?: number; +}; + +type ZcashLedgerTransaction = Transaction & { + _customZcashTxId?: string; + _customZcashAmount?: string; +}; + +// Access hidden/protected property 'tx' on ZcashPsbt +type ExposedZcashPsbt = { + tx: ZcashTransaction; +}; + +// MONKEY PATCH: Fix Zcash v5 Trusted Input Hashing +// @ledgerhq/hw-app-btc calculates SHA256d hash for trusted inputs, but Zcash v5 uses ZIP-244 tree hash. +// We patch getTrustedInputBIP143 to use the correct TXID provided by the adapter (via _customZcashTxId property) +// instead of incorrectly re-hashing the simplified transaction buffer. +// +// NOTE: We use 'require' here because ES6 imports are read-only and immutable. +// To successfully patch the function exported by the library so that internal calls use our version, +// we must modify the CommonJS exports object directly. +try { + // eslint-disable-next-line @typescript-eslint/no-var-requires + const getTrustedInputModule = require("@ledgerhq/hw-app-btc/lib/getTrustedInputBIP143"); + const originGetTrustedInputBIP143 = getTrustedInputModule.getTrustedInputBIP143; + + getTrustedInputModule.getTrustedInputBIP143 = function ( + transport: Transport, + indexLookup: number, + transaction: Transaction & { _customZcashTxId?: string; _customZcashAmount?: string }, + additionals: Array, + ...args: any[] + ) { + if ( + additionals && + additionals.includes("zcash") && + transaction._customZcashTxId && + transaction._customZcashAmount + ) { + const txid = transaction._customZcashTxId; + const amount = transaction._customZcashAmount; + + const hash = Buffer.from(txid, "hex").reverse(); + const data = Buffer.alloc(4); + data.writeUInt32LE(indexLookup, 0); + const amountBuf = Buffer.alloc(8); + amountBuf.writeBigUInt64LE(BigInt(amount)); + + return Buffer.concat([hash, data, amountBuf]).toString("hex"); + } + return originGetTrustedInputBIP143.call(this, transport, indexLookup, transaction, additionals, ...args); + }; +} catch (e) { + console.error("[Zcash Ledger] Failed to patch getTrustedInputBIP143:", e); +} + +export const supportedCoins = [ + "Testnet", + "Bitcoin", + "BitcoinCash", + "Litecoin", + "Dash", + "DigiByte", + "Dogecoin", + "Zcash", +]; const segwitCoins = ["Bitcoin", "DigiByte", "Litecoin", "BitcoinGold", "Testnet"]; @@ -29,6 +106,7 @@ export async function btcSupportsScriptType(coin: core.Coin, scriptType?: core.B core.BTCInputScriptType.SpendP2SHWitness, ], BitcoinCash: [core.BTCInputScriptType.SpendAddress], + Zcash: [core.BTCInputScriptType.SpendAddress], } as Partial>>; const scriptTypes = supported[coin]; @@ -145,10 +223,20 @@ export async function btcSignTx( const slip44 = core.mustBeDefined(core.slip44ByCoin(msg.coin)); // instantiation of ecc lib required for taproot sends https://github.com/bitcoinjs/bitcoinjs-lib/issues/1889#issuecomment-1443792692 bitcoin.initEccLib(ecc); - const psbt = new bitcoin.Psbt({ network: networksUtil[slip44].bitcoinjs as bitcoin.Network }); + + // For Zcash, use BitGo's PSBT which natively supports Zcash v5 transactions + const psbt = + msg.coin === "Zcash" + ? (bitgo.createPsbtForNetwork( + { network: bitgoNetworks.zcash }, + { version: ZcashTransaction.VERSION4_BRANCH_NU6_1 } + ) as ZcashPsbt) + : new bitcoin.Psbt({ network: networksUtil[slip44].bitcoinjs as bitcoin.Network }); + const indexes: number[] = []; const txs: Transaction[] = []; const associatedKeysets: string[] = []; + const blockHeights: (number | undefined)[] = []; // For Zcash: blockHeight of each input let segwit = false; for (const output of msg.outputs) { @@ -175,7 +263,14 @@ export async function btcSignTx( if (msg.coin === "BitcoinCash" && bchAddr.isCashAddress(outputAddress)) { outputAddress = bchAddr.toLegacyAddress(outputAddress); } - psbt.addOutput({ address: outputAddress, value: BigInt(output.amount) }); + + // For Zcash, BitGo's PSBT expects { script, value } not { address, value } + if (msg.coin === "Zcash") { + const script = zcashAddress.toOutputScript(outputAddress, bitgoNetworks.zcash); + psbt.addOutput({ script: Buffer.from(script), value: BigInt(output.amount) }); + } else { + psbt.addOutput({ address: outputAddress, value: BigInt(output.amount) }); + } } if (msg.opReturnData) { @@ -185,12 +280,33 @@ export async function btcSignTx( const script = bitcoin.script.compile([bitcoin.opcodes.OP_RETURN, Buffer.from(msg.opReturnData)]); // OP_RETURN_DATA outputs always have a value of 0 - psbt.addOutput({ script, value: BigInt(0) }); + psbt.addOutput({ script: Buffer.from(script), value: BigInt(0) }); + } + + // For Zcash, set version defaults after all outputs are added + if (msg.coin === "Zcash") { + // Use VERSION4_BRANCH_NU6_1 like SwapKit (hw-app-btc doesn't support v5 unsigned txs) + (psbt as ZcashPsbt).setDefaultsForVersion(bitgoNetworks.zcash, ZcashTransaction.VERSION4_BRANCH_NU6_1); + + // Manually set versionGroupId and consensusBranchId because setDefaultsForVersion might not work + (psbt as unknown as ExposedZcashPsbt).tx.versionGroupId = ZCASH_VERSION_GROUP_ID[5]; // NU6 version group ID + (psbt as unknown as ExposedZcashPsbt).tx.consensusBranchId = ZCASH_CONSENSUS_BRANCH_ID; // NU6.1 consensus branch ID + (psbt as unknown as ExposedZcashPsbt).tx.overwintered = 1; } - const unsignedHex = Buffer.from(psbt.data.getTransaction()).toString("hex"); - const splitTxRes = await transport.call("Btc", "splitTransaction", unsignedHex); + // For Zcash, use the globalMap.unsignedTx like SwapKit does + const unsignedHex = + msg.coin === "Zcash" + ? psbt.data.globalMap.unsignedTx.toBuffer().toString("hex") + : Buffer.from(psbt.data.getTransaction()).toString("hex"); + + // For Zcash, pass the same parameters as we do for input transactions + const splitTxRes = + msg.coin === "Zcash" + ? await transport.call("Btc", "splitTransaction", unsignedHex, true, true, ["zcash", "sapling"]) + : await transport.call("Btc", "splitTransaction", unsignedHex); handleError(splitTxRes, transport, "splitTransaction failed"); + const outputScriptRes = await transport.call("Btc", "serializeTransactionOutputs", splitTxRes.payload); handleError(outputScriptRes, transport, "serializeTransactionOutputs failed"); const outputScriptHex = outputScriptRes.payload.toString("hex"); @@ -211,17 +327,57 @@ export async function btcSignTx( "splitTransaction", msg.inputs[i].hex, networksUtil[slip44].isSegwitSupported, - networksUtil[slip44].areTransactionTimestamped + networksUtil[slip44].areTransactionTimestamped, + networksUtil[slip44].additionals || [] ); handleError(tx, transport, "splitTransaction failed"); + // Collect blockHeight for this input to pass as 5th parameter for Zcash + const zcashInput = msg.inputs[i] as ZcashInput; + if (msg.coin === "Zcash" && zcashInput.blockHeight) { + blockHeights.push(zcashInput.blockHeight); + } else { + blockHeights.push(undefined); + } + indexes.push(vout); txs.push(tx.payload); associatedKeysets.push(keySet); } if (txs.length !== indexes.length) throw new Error("tx/index array length mismatch"); - const inputs = zip(txs, indexes, [], []) as Array<[Transaction, number, undefined, undefined]>; + + // For all coins (including Zcash), use empty sequences array to let Ledger use DEFAULT_SEQUENCE (0xffffffff) + // Setting sequence to 0 would enable RBF/locktime which causes issues + const sequences: number[] = []; + + // Build inputs array with 5 parameters: [tx, index, redeemScript, sequence, blockHeight] + // For Zcash, the blockHeight (5th param) is CRITICAL - Ledger uses it to calculate consensusBranchId + // for each input's signature validation + const inputs = + msg.coin === "Zcash" + ? (Array.from({ length: txs.length }, (_, i) => [ + txs[i], + indexes[i], + undefined, + undefined, + blockHeights[i], + ]) as Array<[Transaction, number, undefined, undefined, number | undefined]>) + : (zip(txs, indexes, [], sequences) as Array<[Transaction, number, undefined, number | undefined]>); + + // ZCASH MONKEY PATCH ACTIVATION: + // We attach the correct TXID and Amount to the transaction object so our patched getTrustedInputBIP143 can find it. + if (msg.coin === "Zcash") { + inputs.forEach((input, i) => { + const tx = input[0] as ZcashLedgerTransaction; + const zcashInput = msg.inputs[i] as ZcashInput; + if (tx && zcashInput) { + // Access txid via casting since it's not in the shared Ledger interface anymore + tx._customZcashTxId = zcashInput.txid; + tx._customZcashAmount = zcashInput.amount; + } + }); + } const txArgs: CreateTransactionArg = { inputs, @@ -229,12 +385,20 @@ export async function btcSignTx( outputScriptHex, additionals: (() => { if (msg.coin === "BitcoinCash") return ["abc"]; + if (msg.coin === "Zcash") return ["zcash", "sapling"]; if (msg.inputs.some((input) => input.scriptType === core.BTCInputScriptType.SpendWitness)) return ["bech32"]; return []; })(), segwit, useTrustedInputForSegwit: Boolean(segwit), + // For Zcash, use the FIRST input's blockHeight as a reasonable current blockHeight + // Ledger Live uses account.xpub.currentBlockHeight + blockHeight: + msg.coin === "Zcash" && (msg.inputs[0] as ZcashInput)?.blockHeight + ? (msg.inputs[0] as ZcashInput).blockHeight + : undefined, + expiryHeight: msg.coin === "Zcash" ? Buffer.alloc(4) : undefined, }; // "invalid data received" error from Ledger if not done this way: diff --git a/packages/hdwallet-ledger/src/currencies.ts b/packages/hdwallet-ledger/src/currencies.ts index 6116e8f3f..34bf1ccfa 100644 --- a/packages/hdwallet-ledger/src/currencies.ts +++ b/packages/hdwallet-ledger/src/currencies.ts @@ -19,4 +19,8 @@ export const currencies: Record = { name: "Litecoin", xpubVersion: 0x019da462, }, + Zcash: { + name: "Zcash", + xpubVersion: 0x0488b21e, + }, }; diff --git a/packages/hdwallet-ledger/src/utils.ts b/packages/hdwallet-ledger/src/utils.ts index 385da0865..5f2fd47d3 100644 --- a/packages/hdwallet-ledger/src/utils.ts +++ b/packages/hdwallet-ledger/src/utils.ts @@ -463,28 +463,29 @@ export const networksUtil: Record = { handleFeePerByte: false, areTransactionTimestamped: true, }, - // 133: { - // name: "zcash", - // satoshi: 8, - // unit: "ZEC", - // apiName: "zec", - // bitcoinjs: { - // messagePrefix: "Zcash Signed Message:", - // bip32: { - // public: { - // p2pkh: 76067358 - // }, - // private: 87393172 - // }, - // pubKeyHash: 7352, - // scriptHash: 7357, - // wif: 128 - // }, - // isSegwitSupported: false, - // handleFeePerByte: false, - // areTransactionTimestamped: undefined, - // expiryHeight: Buffer.from("00000000", "hex") - // }, + 133: { + name: "zcash", + satoshi: 8, + unit: "ZEC", + apiName: "zec", + appName: "Zcash", + bitcoinjs: { + messagePrefix: "Zcash Signed Message:", + bip32: { + public: { + p2pkh: 76067358, + }, + private: 87393172, + }, + pubKeyHash: 0x1cb8, + scriptHash: 0x1cbd, + wif: 128, + }, + isSegwitSupported: true, + handleFeePerByte: false, + areTransactionTimestamped: true, + additionals: ["zcash", "sapling"], + }, 141: { name: "komodo", satoshi: 8, @@ -598,6 +599,7 @@ const appNameBySlip44: Record = { 20: "Digibyte", 60: "Ethereum", 118: "Cosmos", + 133: "Zcash", 145: "Bitcoin Cash", 195: "Tron", 501: "Solana", diff --git a/packages/hdwallet-metamask-multichain/package.json b/packages/hdwallet-metamask-multichain/package.json index ccd4400e0..3c935d971 100644 --- a/packages/hdwallet-metamask-multichain/package.json +++ b/packages/hdwallet-metamask-multichain/package.json @@ -1,6 +1,6 @@ { "name": "@shapeshiftoss/hdwallet-metamask-multichain", - "version": "1.62.25", + "version": "1.62.26", "license": "MIT", "publishConfig": { "access": "public" @@ -17,7 +17,7 @@ "@metamask/detect-provider": "^1.2.0", "@metamask/onboarding": "^1.0.1", "@shapeshiftoss/common-api": "^9.3.0", - "@shapeshiftoss/hdwallet-core": "1.62.25", + "@shapeshiftoss/hdwallet-core": "1.62.26", "@shapeshiftoss/metamask-snaps-adapter": "^1.0.12", "@shapeshiftoss/metamask-snaps-types": "^1.0.12", "eth-rpc-errors": "^4.0.3", diff --git a/packages/hdwallet-native-vault/package.json b/packages/hdwallet-native-vault/package.json index 6a91bdeaa..128cbe3e0 100644 --- a/packages/hdwallet-native-vault/package.json +++ b/packages/hdwallet-native-vault/package.json @@ -1,6 +1,6 @@ { "name": "@shapeshiftoss/hdwallet-native-vault", - "version": "1.62.25", + "version": "1.62.26", "license": "MIT", "publishConfig": { "access": "public" @@ -15,7 +15,7 @@ }, "dependencies": { "@bitcoinerlab/secp256k1": "^1.1.1", - "@shapeshiftoss/hdwallet-native": "1.62.25", + "@shapeshiftoss/hdwallet-native": "1.62.26", "bip39": "^3.0.4", "hash-wasm": "^4.11.0", "idb-keyval": "^6.0.3", diff --git a/packages/hdwallet-native/package.json b/packages/hdwallet-native/package.json index 6d56fb299..39cbdd159 100644 --- a/packages/hdwallet-native/package.json +++ b/packages/hdwallet-native/package.json @@ -1,6 +1,6 @@ { "name": "@shapeshiftoss/hdwallet-native", - "version": "1.62.25", + "version": "1.62.26", "license": "MIT", "publishConfig": { "access": "public" @@ -17,7 +17,7 @@ "@bitcoinerlab/secp256k1": "^1.1.1", "@noble/curves": "^1.4.0", "@shapeshiftoss/bitcoinjs-lib": "7.0.0-shapeshift.2", - "@shapeshiftoss/hdwallet-core": "1.62.25", + "@shapeshiftoss/hdwallet-core": "1.62.26", "@shapeshiftoss/proto-tx-builder": "0.10.0", "@zxing/text-encoding": "^0.9.0", "bchaddrjs": "^0.4.9", diff --git a/packages/hdwallet-phantom/package.json b/packages/hdwallet-phantom/package.json index 6253138f9..a0b9a4d50 100644 --- a/packages/hdwallet-phantom/package.json +++ b/packages/hdwallet-phantom/package.json @@ -1,6 +1,6 @@ { "name": "@shapeshiftoss/hdwallet-phantom", - "version": "1.62.25", + "version": "1.62.26", "license": "MIT", "publishConfig": { "access": "public" @@ -15,7 +15,7 @@ }, "dependencies": { "@shapeshiftoss/bitcoinjs-lib": "7.0.0-shapeshift.2", - "@shapeshiftoss/hdwallet-core": "1.62.25", + "@shapeshiftoss/hdwallet-core": "1.62.26", "@solana/web3.js": "1.95.8", "base64-js": "^1.5.1", "bitcoinjs-message": "^2.0.0", diff --git a/packages/hdwallet-portis/package.json b/packages/hdwallet-portis/package.json index a5f8708dd..453290894 100644 --- a/packages/hdwallet-portis/package.json +++ b/packages/hdwallet-portis/package.json @@ -1,6 +1,6 @@ { "name": "@shapeshiftoss/hdwallet-portis", - "version": "1.62.25", + "version": "1.62.26", "license": "MIT", "publishConfig": { "access": "public" @@ -16,7 +16,7 @@ "dependencies": { "@portis/web3": "3.0.10", "@shapeshiftoss/bitcoinjs-lib": "7.0.0-shapeshift.2", - "@shapeshiftoss/hdwallet-core": "1.62.25", + "@shapeshiftoss/hdwallet-core": "1.62.26", "base64-js": "^1.5.1", "bip32": "^2.0.4", "bitcoinjs-message": "^2.1.0", diff --git a/packages/hdwallet-trezor-connect/package.json b/packages/hdwallet-trezor-connect/package.json index 3906eac68..4151ab990 100644 --- a/packages/hdwallet-trezor-connect/package.json +++ b/packages/hdwallet-trezor-connect/package.json @@ -1,6 +1,6 @@ { "name": "@shapeshiftoss/hdwallet-trezor-connect", - "version": "1.62.25", + "version": "1.62.26", "license": "MIT", "publishConfig": { "access": "public" @@ -14,8 +14,8 @@ "prepublishOnly": "yarn clean && yarn build" }, "dependencies": { - "@shapeshiftoss/hdwallet-core": "1.62.25", - "@shapeshiftoss/hdwallet-trezor": "1.62.25", + "@shapeshiftoss/hdwallet-core": "1.62.26", + "@shapeshiftoss/hdwallet-trezor": "1.62.26", "@trezor/connect-web": "^9.6.4" } } diff --git a/packages/hdwallet-trezor/package.json b/packages/hdwallet-trezor/package.json index f64d11cc8..e26819f03 100644 --- a/packages/hdwallet-trezor/package.json +++ b/packages/hdwallet-trezor/package.json @@ -1,6 +1,6 @@ { "name": "@shapeshiftoss/hdwallet-trezor", - "version": "1.62.25", + "version": "1.62.26", "license": "MIT", "publishConfig": { "access": "public" @@ -17,7 +17,7 @@ "dependencies": { "@ethereumjs/common": "3.2.0", "@ethereumjs/tx": "4.2.0", - "@shapeshiftoss/hdwallet-core": "1.62.25", + "@shapeshiftoss/hdwallet-core": "1.62.26", "base64-js": "^1.5.1", "bchaddrjs": "^0.4.4", "lodash": "^4.17.21" diff --git a/packages/hdwallet-vultisig/package.json b/packages/hdwallet-vultisig/package.json index 2498b8256..16525b2f0 100644 --- a/packages/hdwallet-vultisig/package.json +++ b/packages/hdwallet-vultisig/package.json @@ -1,6 +1,6 @@ { "name": "@shapeshiftoss/hdwallet-vultisig", - "version": "1.62.25", + "version": "1.62.26", "license": "MIT", "publishConfig": { "access": "public" @@ -17,7 +17,7 @@ "@cosmjs/amino": "^0.28.13", "@cosmjs/stargate": "^0.28.13", "@shapeshiftoss/bitcoinjs-lib": "7.0.0-shapeshift.2", - "@shapeshiftoss/hdwallet-core": "1.62.25", + "@shapeshiftoss/hdwallet-core": "1.62.26", "@solana/web3.js": "1.95.8", "base64-js": "^1.5.1", "bitcoinjs-message": "^2.0.0", diff --git a/packages/hdwallet-walletconnect/package.json b/packages/hdwallet-walletconnect/package.json index c8c3967a8..92723ebbc 100644 --- a/packages/hdwallet-walletconnect/package.json +++ b/packages/hdwallet-walletconnect/package.json @@ -1,6 +1,6 @@ { "name": "@shapeshiftoss/hdwallet-walletconnect", - "version": "1.62.25", + "version": "1.62.26", "license": "MIT", "publishConfig": { "access": "public" @@ -15,7 +15,7 @@ "prepublishOnly": "yarn clean && yarn build" }, "dependencies": { - "@shapeshiftoss/hdwallet-core": "1.62.25", + "@shapeshiftoss/hdwallet-core": "1.62.26", "@walletconnect/qrcode-modal": "^1.7.8", "@walletconnect/web3-provider": "^1.7.8", "ethers": "^5.6.5" diff --git a/packages/hdwallet-walletconnectV2/package.json b/packages/hdwallet-walletconnectV2/package.json index ebc8f7938..f441ae207 100644 --- a/packages/hdwallet-walletconnectV2/package.json +++ b/packages/hdwallet-walletconnectV2/package.json @@ -1,6 +1,6 @@ { "name": "@shapeshiftoss/hdwallet-walletconnectv2", - "version": "1.62.25", + "version": "1.62.26", "license": "MIT", "publishConfig": { "access": "public" @@ -15,7 +15,7 @@ "prepublishOnly": "yarn clean && yarn build" }, "dependencies": { - "@shapeshiftoss/hdwallet-core": "1.62.25", + "@shapeshiftoss/hdwallet-core": "1.62.26", "@walletconnect/ethereum-provider": "^2.20.2", "@walletconnect/modal": "^2.6.2", "ethers": "^5.6.5" diff --git a/yarn.lock b/yarn.lock index 435ebd983..fa5b1aa66 100644 --- a/yarn.lock +++ b/yarn.lock @@ -325,6 +325,51 @@ "@noble/hashes" "^1.1.5" "@noble/secp256k1" "^1.7.1" +"@bitgo/blake2b-wasm@^3.2.3": + version "3.2.3" + resolved "https://registry.npmjs.org/@bitgo/blake2b-wasm/-/blake2b-wasm-3.2.3.tgz#6ae5e942f2a5fd5b3ed27103af5df0ed50adfbc9" + integrity sha512-NaurBrMaEpjfg7EdUJgW/c6byt27O6q1ZaxB5Ita10MjjYjUu0SyYF4q7JPNxpHF/lMxb0YZakOxigbDBu9Jjw== + dependencies: + nanoassert "^1.0.0" + +"@bitgo/blake2b@^3.2.4": + version "3.2.4" + resolved "https://registry.npmjs.org/@bitgo/blake2b/-/blake2b-3.2.4.tgz#6440992affdeabc22b2de8b8f381f51b551dd513" + integrity sha512-46PEgEVPxecNJ/xczggIllSxIkFIvvbVM0OfIDdNJ5qpFHUeBCkNIiGdzC3fYZlsv7bVTdUZOj79GcFBLMYBqA== + dependencies: + "@bitgo/blake2b-wasm" "^3.2.3" + nanoassert "^2.0.0" + +"@bitgo/secp256k1@^1.7.0": + version "1.7.0" + resolved "https://registry.npmjs.org/@bitgo/secp256k1/-/secp256k1-1.7.0.tgz#e12ad4080e31caf4ad75f128145c5f66ce404c6f" + integrity sha512-pFzmFyDLNg4tyYUaSu1cvI724xxGSlMjD/G5yo/P3IEyz5WbE++3QxdijqxWubb86xpwIsNSV/coutLYUCagkQ== + dependencies: + "@brandonblack/musig" "^0.0.1-alpha.0" + "@noble/secp256k1" "1.6.3" + bip32 "^3.0.1" + create-hash "^1.2.0" + create-hmac "^1.1.7" + ecpair "npm:@bitgo/ecpair@2.1.0-rc.0" + +"@bitgo/utxo-lib@^11.18.0": + version "11.18.0" + resolved "https://registry.npmjs.org/@bitgo/utxo-lib/-/utxo-lib-11.18.0.tgz#dd596bd964cff603bd5f3fd95bedefc8a9a92526" + integrity sha512-PuGkID+kM24+BZ4MrIdFArCbTiv3h4CGGhKt1qn5Z7kDa2wn4y7ebc+poVQypiWUguT15QUQ0YAvkKVh81zgsg== + dependencies: + "@bitgo/blake2b" "^3.2.4" + "@bitgo/secp256k1" "^1.7.0" + "@brandonblack/musig" "^0.0.1-alpha.0" + bech32 "^2.0.0" + bip174 "npm:@bitgo-forks/bip174@3.1.0-master.4" + bitcoin-ops "^1.3.0" + bitcoinjs-lib "npm:@bitgo-forks/bitcoinjs-lib@7.1.0-master.11" + bs58check "^2.1.2" + cashaddress "^1.1.0" + fastpriorityqueue "^0.7.1" + typeforce "^1.11.3" + varuint-bitcoin "^1.1.2" + "@bithighlander/bitcoin-cash-js-lib@^5.2.1": version "5.2.1" resolved "https://registry.yarnpkg.com/@bithighlander/bitcoin-cash-js-lib/-/bitcoin-cash-js-lib-5.2.1.tgz#3153dec5774b0574a2347f6ca75cf3d7399af1b2" @@ -347,6 +392,11 @@ varuint-bitcoin "^1.0.4" wif "^2.0.1" +"@brandonblack/musig@^0.0.1-alpha.0": + version "0.0.1-alpha.1" + resolved "https://registry.npmjs.org/@brandonblack/musig/-/musig-0.0.1-alpha.1.tgz#0895f59977bedf519099ff6e2fcbcbced30bc761" + integrity sha512-00RbByQG85lSzrkDjCblzrUc2n1LJAPPrEMHS4oMg+QckE0kzjd26JytT6yx6tNU2+aOXfK7O4kGW/sKVL67cw== + "@cnakazawa/watch@^1.0.3": version "1.0.4" resolved "https://registry.yarnpkg.com/@cnakazawa/watch/-/watch-1.0.4.tgz#f864ae85004d0fcab6f50be9141c4da368d1656a" @@ -1656,34 +1706,26 @@ dependencies: long "^4.0.0" -"@ledgerhq/cryptoassets-evm-signatures@^13.5.10": - version "13.5.10" - resolved "https://registry.yarnpkg.com/@ledgerhq/cryptoassets-evm-signatures/-/cryptoassets-evm-signatures-13.5.10.tgz#1e5764acb56cbfb03149295bd0e21b3210a470d4" - integrity sha512-1s0a6P2E4KKDbk12eVmJfvSA/zmTC8GKuXz+XVVYJIY+xPWs4B3qtPLXC2EpdZhj7GOehj8i0csxlV3rhQRC6w== - dependencies: - "@ledgerhq/live-env" "^2.12.0" - axios "1.7.7" - -"@ledgerhq/device-core@^0.5.4": - version "0.5.4" - resolved "https://registry.yarnpkg.com/@ledgerhq/device-core/-/device-core-0.5.4.tgz#ffc0f4a96e0682f396deb5f9e9fbd6f1801f015b" - integrity sha512-3I02unzUKyVTNJY6rcJg6Fj64H7kWbSCq44qYKD5Du2oxQPcChBLf2Nr5moSMUv6RGqAzX9z9oKvDluaHKcNnA== +"@ledgerhq/device-core@0.6.9": + version "0.6.9" + resolved "https://registry.npmjs.org/@ledgerhq/device-core/-/device-core-0.6.9.tgz#37792a59863be8bd6006ade90ab7c91ed420d102" + integrity sha512-bvyDMeAvslocMsq0FD47SDT7RrTZVcwrA8qkbDVfKxR7b79/HKB3wv+NoD7xF2Sm1X6pKVpjjqLQ1OiCAX5Qjw== dependencies: - "@ledgerhq/devices" "8.4.8" - "@ledgerhq/errors" "^6.23.0" - "@ledgerhq/hw-transport" "^6.31.8" - "@ledgerhq/live-network" "^2.0.13" + "@ledgerhq/devices" "8.7.0" + "@ledgerhq/errors" "^6.27.0" + "@ledgerhq/hw-transport" "6.31.13" + "@ledgerhq/live-network" "^2.1.2" "@ledgerhq/logs" "^6.13.0" - "@ledgerhq/types-live" "^6.79.0" + "@ledgerhq/types-live" "^6.90.0" + "@noble/hashes" "1.8.0" semver "^7.3.5" - sha.js "^2.4.11" -"@ledgerhq/devices@8.4.8": - version "8.4.8" - resolved "https://registry.yarnpkg.com/@ledgerhq/devices/-/devices-8.4.8.tgz#0eee2e6b7f946dedd7adebb10dcb2dc54c1aaf87" - integrity sha512-joodpi1lTIoPswpH6DBtlAieEfP0xB1NlM8RY3xj82EtO8eU1IRqTQz7wtsbstXJ1FdLRg/CJ5OL41omdBsrZQ== +"@ledgerhq/devices@8.5.1": + version "8.5.1" + resolved "https://registry.npmjs.org/@ledgerhq/devices/-/devices-8.5.1.tgz#fed2960430ebab459211b692e1ecdc8c1dd04fe2" + integrity sha512-oW75YQQiP2muHveXTuwSAze6CBxJ7jOYILhFiJbsVzmgLPVqtdw4s0bJJlOBft4Aup67yNAjboFCIU7kTYQBFg== dependencies: - "@ledgerhq/errors" "^6.23.0" + "@ledgerhq/errors" "^6.25.0" "@ledgerhq/logs" "^6.13.0" rxjs "^7.8.1" semver "^7.3.5" @@ -1698,98 +1740,90 @@ rxjs "^7.8.1" semver "^7.3.5" -"@ledgerhq/domain-service@^1.2.38": - version "1.2.38" - resolved "https://registry.yarnpkg.com/@ledgerhq/domain-service/-/domain-service-1.2.38.tgz#b21ce81a907e6995262bd388e0d394c8cd309f9c" - integrity sha512-x3k1XcTCm4pA1x2pxNj8OK9f7A665uPtaVGqB+qgwN+Gw8HtTR1ngRTHHePzK+XMMuR3U9DIIoztmDPF98qUiQ== +"@ledgerhq/domain-service@^1.4.2": + version "1.4.2" + resolved "https://registry.npmjs.org/@ledgerhq/domain-service/-/domain-service-1.4.2.tgz#65afdf21b75d4ebde29e567540ad24706ab6931b" + integrity sha512-wVbvBhVXWNJ5Yb0aT23yE9NGGct5FX0kOCHjzEJmmPQt4aSHmHfCEKSO4DgD+51Mesux7se99GLa5+/a/s4tAQ== dependencies: - "@ledgerhq/errors" "^6.23.0" + "@ledgerhq/errors" "^6.27.0" "@ledgerhq/logs" "^6.13.0" - "@ledgerhq/types-live" "^6.79.0" - axios "1.7.7" + "@ledgerhq/types-live" "^6.90.0" + axios "1.12.2" eip55 "^2.1.1" - react "^18.2.0" - react-dom "^18.2.0" - -"@ledgerhq/errors@^6.23.0": - version "6.23.0" - resolved "https://registry.yarnpkg.com/@ledgerhq/errors/-/errors-6.23.0.tgz#fae7b61095ce4c033394d16085b5f14ca9f9d738" - integrity sha512-bM7tPYShPThtBy1Y+9D28iquOeP5W5s4p7KKD/cUQoaVaPibrtC7Mm4u+IeSlH4WGvFJkTmv0vmZJajuZtM79A== + react "18.3.1" + react-dom "18.3.1" -"@ledgerhq/errors@^6.26.0", "@ledgerhq/errors@^6.27.0": +"@ledgerhq/errors@^6.25.0", "@ledgerhq/errors@^6.26.0", "@ledgerhq/errors@^6.27.0": version "6.27.0" resolved "https://registry.npmjs.org/@ledgerhq/errors/-/errors-6.27.0.tgz#3acc978ed1dbbdd8049dcedccccf4a96968f583a" integrity sha512-EE2hATONHdNP3YWFe3rZwwpSEzI5oN+q/xTjOulnjHZo84TLjungegEJ54A/Pzld0woulkkeVA27FbW5SAO1aA== -"@ledgerhq/evm-tools@^1.7.1": - version "1.7.1" - resolved "https://registry.yarnpkg.com/@ledgerhq/evm-tools/-/evm-tools-1.7.1.tgz#58e3144eb56da542f0ff858b7d60a6ae8908947b" - integrity sha512-Un3GBDmJ6zUTX6Zf+ODnxnej/20VCZ4CQWobuRdEzR5PoCjgtb/u+v3XLbP/xU/CkYgOS2+ieWwnvOe0a0/WXg== +"@ledgerhq/evm-tools@^1.8.2": + version "1.8.2" + resolved "https://registry.npmjs.org/@ledgerhq/evm-tools/-/evm-tools-1.8.2.tgz#240042e3b2f990acdee908cac7b35fff7c557b55" + integrity sha512-6CSPwyeDXkhoaxZ/Fn/XgNn6yXmEzbhUQu9o1WJi+wAG2r5m+CwlUznYeA46r9AccqQ13UuM4cXWZQvrwzlSuA== dependencies: "@ethersproject/constants" "^5.7.0" "@ethersproject/hash" "^5.7.0" - "@ledgerhq/cryptoassets-evm-signatures" "^13.5.10" - "@ledgerhq/live-env" "^2.12.0" - axios "1.7.7" + "@ledgerhq/live-env" "^2.22.0" + axios "1.12.2" crypto-js "4.2.0" -"@ledgerhq/hw-app-btc@^10.10.0": - version "10.10.0" - resolved "https://registry.yarnpkg.com/@ledgerhq/hw-app-btc/-/hw-app-btc-10.10.0.tgz#a14ca34c9c251d7f59b0c4a378658ef611518e2b" - integrity sha512-cYx5W4eZZKcKzu54OEerr4cZTmjCWYSGB2t8DkfqqSE9DWcNAsqDjOdxcGle0mfcgsLDcfnVSdGCVytwUNHYiQ== +"@ledgerhq/hw-app-btc@10.13.0": + version "10.13.0" + resolved "https://registry.npmjs.org/@ledgerhq/hw-app-btc/-/hw-app-btc-10.13.0.tgz#161171c9ba70ea3746a521cb0e4e53e99f6e8eee" + integrity sha512-zloeQj0yrAVbZBPxdkafihUPOb40sCh4hmDsMbwKRf8ik3binozzXKsluQQNFd6Pd77tIImXLdRZRHCwFOIVFQ== dependencies: - "@ledgerhq/hw-transport" "^6.31.8" + "@ledgerhq/hw-transport" "6.31.13" "@ledgerhq/logs" "^6.13.0" + "@noble/curves" "1.9.7" + "@noble/hashes" "1.8.0" bip32-path "^0.4.2" bitcoinjs-lib "^5.2.0" bs58 "^4.0.1" bs58check "^2.1.2" invariant "^2.2.4" - ripemd160 "2" semver "^7.3.5" - sha.js "2" - tiny-secp256k1 "1.1.6" varuint-bitcoin "1.1.2" -"@ledgerhq/hw-app-cosmos@^6.32.4": - version "6.32.4" - resolved "https://registry.yarnpkg.com/@ledgerhq/hw-app-cosmos/-/hw-app-cosmos-6.32.4.tgz#657863c6aabb53ab723058d2305fe62298b4a5b5" - integrity sha512-hlVqVYMcubEkNN/NV9o5HvViIIJpU9oaPCcHctJUJFAe7kI7EFZ0dF2OOrgHOVvVUkHXfpYjdnNRSVSgZBhuSQ== +"@ledgerhq/hw-app-cosmos@6.32.9": + version "6.32.9" + resolved "https://registry.npmjs.org/@ledgerhq/hw-app-cosmos/-/hw-app-cosmos-6.32.9.tgz#4c4df69ba9f2069041f826183eb6837b12ae2c7f" + integrity sha512-TbSwS3wwyb6vBm4zN/tOQEuPZjcIFJ0mpTtrKHiD2qv//hkHO7rEWaUrjQ24a6Zli8M6HB3v4ySmr1edPV6eyw== dependencies: - "@ledgerhq/errors" "^6.23.0" - "@ledgerhq/hw-transport" "^6.31.8" + "@ledgerhq/errors" "^6.27.0" + "@ledgerhq/hw-transport" "6.31.13" bip32-path "^0.4.2" -"@ledgerhq/hw-app-eth@^6.45.13": - version "6.45.13" - resolved "https://registry.yarnpkg.com/@ledgerhq/hw-app-eth/-/hw-app-eth-6.45.13.tgz#5ba9ee8b650b2f190f193ff753aa2059c1ddd3cd" - integrity sha512-5/8Nuq9YvQIFfdrkCohd6uP9KTaxfPTwrN5rp70SiSP2AeY+5Mbi4CQSWUVfSMDEyf5IaL3Up6t19iOFUjk9Nw== +"@ledgerhq/hw-app-eth@7.0.0": + version "7.0.0" + resolved "https://registry.npmjs.org/@ledgerhq/hw-app-eth/-/hw-app-eth-7.0.0.tgz#460b24145568a33c1411de2e666cf86176d3c59e" + integrity sha512-TKBIMCTSPLRJ/0mcd8T8SHF/Z5cR5HrRkdKN2SvXQHTCt8PsZel1HqSj8Nte0MG1VAFVJ5O/Ce1MZY8cmta2mg== dependencies: "@ethersproject/abi" "^5.7.0" "@ethersproject/rlp" "^5.7.0" "@ethersproject/transactions" "^5.7.0" - "@ledgerhq/cryptoassets-evm-signatures" "^13.5.10" - "@ledgerhq/domain-service" "^1.2.38" - "@ledgerhq/errors" "^6.23.0" - "@ledgerhq/evm-tools" "^1.7.1" - "@ledgerhq/hw-transport" "^6.31.8" - "@ledgerhq/hw-transport-mocker" "^6.29.8" + "@ledgerhq/domain-service" "^1.4.2" + "@ledgerhq/errors" "^6.27.0" + "@ledgerhq/evm-tools" "^1.8.2" + "@ledgerhq/hw-transport" "6.31.13" + "@ledgerhq/hw-transport-mocker" "^6.29.13" "@ledgerhq/logs" "^6.13.0" - "@ledgerhq/types-live" "^6.79.0" - axios "1.7.7" + "@ledgerhq/types-live" "^6.90.0" + axios "1.12.2" bignumber.js "^9.1.2" semver "^7.3.5" -"@ledgerhq/hw-app-solana@^7.5.1": - version "7.5.1" - resolved "https://registry.yarnpkg.com/@ledgerhq/hw-app-solana/-/hw-app-solana-7.5.1.tgz#af59723e6f578dac00e648d816ec162d8fb4b4bf" - integrity sha512-MfN1XMGILbhE/VL15xtQGfJ3pzD93rP/JaJGipg56pabP02ogphm5Wyv7udYkJoGiGIixPt8zfhFzdtbMiLZNQ== +"@ledgerhq/hw-app-solana@7.6.0": + version "7.6.0" + resolved "https://registry.npmjs.org/@ledgerhq/hw-app-solana/-/hw-app-solana-7.6.0.tgz#37f70cd611ad9f78afcdfc6d2a4828ec65a0c75f" + integrity sha512-Y8ImqAJwOjc9kjN02OvK2G8xx8m/p57Cezg+lLKlHuRwQuLYzruInQASYsKGZWLhmH2rCuotE61Z91FY5JVdIw== dependencies: - "@ledgerhq/errors" "^6.23.0" - "@ledgerhq/hw-transport" "^6.31.8" + "@ledgerhq/errors" "^6.27.0" + "@ledgerhq/hw-transport" "6.31.13" bip32-path "^0.4.2" -"@ledgerhq/hw-app-trx@^6.31.9": +"@ledgerhq/hw-app-trx@6.31.9": version "6.31.9" resolved "https://registry.npmjs.org/@ledgerhq/hw-app-trx/-/hw-app-trx-6.31.9.tgz#8d73d1baa9b28a1f1d30f1a330c53f49204d362d" integrity sha512-lqtmOFm7f9XwbdHiA7qBiuhCppfKTHWu+8w06IS5seMxcLSCMvHvxsog91rWAijlD4qP1AzJTQFGnrE+bRvAjw== @@ -1803,33 +1837,33 @@ dependencies: "@ledgerhq/hw-transport" "6.31.13" -"@ledgerhq/hw-transport-mocker@^6.29.8": - version "6.29.8" - resolved "https://registry.yarnpkg.com/@ledgerhq/hw-transport-mocker/-/hw-transport-mocker-6.29.8.tgz#7188e0fe8dfa5df5451ce3b55c192c89007ccdea" - integrity sha512-Ea7j0M9miX6KkZTdHcCdcfT1yne1Uuy6/Ph51OKhleiSSBQytSxLtbsEw8r4dppqVHNybf+DoKOsBgo2p7XayA== +"@ledgerhq/hw-transport-mocker@^6.29.13": + version "6.29.13" + resolved "https://registry.npmjs.org/@ledgerhq/hw-transport-mocker/-/hw-transport-mocker-6.29.13.tgz#d6745b5f09f16536b41235312fe28bff4cce9c9e" + integrity sha512-yfslV0Xg8tGsvvn0R5ulduIgXBILk0qXg/YrOx8kJyzHGSRV58CeVw2ZhsO/pAXAZJ9ojH1kzdIBo0qFH2M0AA== dependencies: - "@ledgerhq/hw-transport" "^6.31.8" + "@ledgerhq/hw-transport" "6.31.13" "@ledgerhq/logs" "^6.13.0" rxjs "^7.8.1" -"@ledgerhq/hw-transport-webhid@^6.30.4": - version "6.30.4" - resolved "https://registry.yarnpkg.com/@ledgerhq/hw-transport-webhid/-/hw-transport-webhid-6.30.4.tgz#2f3b3039e7c4fa56692ba606412827c958874dea" - integrity sha512-A13E89U1wfWx8reA9ciwm/+SsbGM163yl1UXuWUQ521hIDAAwVbpnRhwaQT4XjTmDbWhvtT2RYRCoOWWO7N6GA== +"@ledgerhq/hw-transport-webhid@6.30.6": + version "6.30.6" + resolved "https://registry.npmjs.org/@ledgerhq/hw-transport-webhid/-/hw-transport-webhid-6.30.6.tgz#71886709477b2c995f201c99dc9549804ec98e26" + integrity sha512-AOzjFv5n1OTMfvEInAZRfLO11G5zfG8pB5zhmjK5d/mVQfFNcKsLZNAC2h4OZZMBtUy8UTT3n03z93e6k6n4pQ== dependencies: - "@ledgerhq/devices" "8.4.8" - "@ledgerhq/errors" "^6.23.0" - "@ledgerhq/hw-transport" "^6.31.8" + "@ledgerhq/devices" "8.5.1" + "@ledgerhq/errors" "^6.25.0" + "@ledgerhq/hw-transport" "^6.31.10" "@ledgerhq/logs" "^6.13.0" -"@ledgerhq/hw-transport-webusb@6.29.8": - version "6.29.8" - resolved "https://registry.yarnpkg.com/@ledgerhq/hw-transport-webusb/-/hw-transport-webusb-6.29.8.tgz#8dbda97cc124c4b3efc570bb04767558c499c460" - integrity sha512-hAFTnJYB++Ey8qlpGBL2ZHBX4ULQOcBzYzNBcrKUNXqlDaWODtc5uyPCyfGmfUjLnVvZoarDa3h+zDVVQCUHVA== +"@ledgerhq/hw-transport-webusb@6.29.13": + version "6.29.13" + resolved "https://registry.npmjs.org/@ledgerhq/hw-transport-webusb/-/hw-transport-webusb-6.29.13.tgz#6b138b56bfaec23830f6327f932eeb43140a245b" + integrity sha512-RhQMCX2kjpI5N+4EvepDtIH9opTJxmCAEWIip4Im+ScjoSvBI1wveE5aDFhjDsHJUcKIQzIbB5jSuv0DZaajFA== dependencies: - "@ledgerhq/devices" "8.4.8" - "@ledgerhq/errors" "^6.23.0" - "@ledgerhq/hw-transport" "^6.31.8" + "@ledgerhq/devices" "8.7.0" + "@ledgerhq/errors" "^6.27.0" + "@ledgerhq/hw-transport" "6.31.13" "@ledgerhq/logs" "^6.13.0" "@ledgerhq/hw-transport@6.31.13", "@ledgerhq/hw-transport@^6.31.10": @@ -1842,16 +1876,6 @@ "@ledgerhq/logs" "^6.13.0" events "^3.3.0" -"@ledgerhq/hw-transport@6.31.8", "@ledgerhq/hw-transport@^6.31.8": - version "6.31.8" - resolved "https://registry.yarnpkg.com/@ledgerhq/hw-transport/-/hw-transport-6.31.8.tgz#1127ad66ec68c2ec82f968e3764078b5bbbfbc1a" - integrity sha512-iH74gILq8BkkLX1Il0wNhcYp1BJ3tjR18fdok4KEdU86i9dOXRKfLbWNhDDFf1px/pMrsGlDS4SpaO74janeEA== - dependencies: - "@ledgerhq/devices" "8.4.8" - "@ledgerhq/errors" "^6.23.0" - "@ledgerhq/logs" "^6.13.0" - events "^3.3.0" - "@ledgerhq/ledger-cal-service@^1.6.0": version "1.9.0" resolved "https://registry.npmjs.org/@ledgerhq/ledger-cal-service/-/ledger-cal-service-1.9.0.tgz#b9797a71c17b8bf0f0a00ff9f84fa269b328540b" @@ -1884,10 +1908,10 @@ rxjs "^7.8.1" utility-types "^3.10.0" -"@ledgerhq/live-env@^2.12.0": - version "2.12.0" - resolved "https://registry.yarnpkg.com/@ledgerhq/live-env/-/live-env-2.12.0.tgz#d238595627211c669667c5d6b8042937e56288ac" - integrity sha512-p1pqfXN88TZWHdoQVLtrs1WdX1/VG07ZDDOwmrgi04iSh6NWaiiGJS27Xye3xSf/vL0pU5nLWmj2LP5Rjhxs6g== +"@ledgerhq/live-env@^2.22.0": + version "2.22.0" + resolved "https://registry.npmjs.org/@ledgerhq/live-env/-/live-env-2.22.0.tgz#3db27d1d2a20d20fe77e82b3208d3054d504f651" + integrity sha512-zOtxXQl0stQpNp/01nvClMyAdc5WLY8b4vAeP8KJvvoDPCY9VfKLNGvjfU7r/AGsTTmJqy8DOSlboQ24CNd+zg== dependencies: rxjs "^7.8.1" utility-types "^3.10.0" @@ -1916,16 +1940,16 @@ axios "1.12.2" lru-cache "^7.14.1" -"@ledgerhq/live-network@^2.0.13": - version "2.0.13" - resolved "https://registry.yarnpkg.com/@ledgerhq/live-network/-/live-network-2.0.13.tgz#ed881535da04ebc04d091eff8c6783051cfbc5f8" - integrity sha512-goqHDxL8jXLKF/Ymt7cf7EOi/p4/s/TCIMTLeWgZ+305lktcmQwT0iLw050LMWUUjVQRnWSKt0mka6zX6ZAIlA== +"@ledgerhq/live-network@^2.1.2": + version "2.1.2" + resolved "https://registry.npmjs.org/@ledgerhq/live-network/-/live-network-2.1.2.tgz#9ac48a7d4605558de9122392d003f4e784ace155" + integrity sha512-Sz1kgRcHhD5y/cIQrNi69JDJf9clLylTzIBy33im0Bpfeq/Ko1xL1YBzzSeoHMPezrxwhHVO5Q1M1B5HBczSyw== dependencies: - "@ledgerhq/errors" "^6.23.0" - "@ledgerhq/live-env" "^2.12.0" + "@ledgerhq/errors" "^6.27.0" + "@ledgerhq/live-env" "^2.22.0" "@ledgerhq/live-promise" "^0.1.1" "@ledgerhq/logs" "^6.13.0" - axios "1.7.7" + axios "1.12.2" lru-cache "^7.14.1" "@ledgerhq/live-promise@^0.1.1": @@ -1940,10 +1964,10 @@ resolved "https://registry.yarnpkg.com/@ledgerhq/logs/-/logs-6.13.0.tgz#0b083af64b6b85db0630c7b940a0ed74ff6262b6" integrity sha512-4+qRW2Pc8V+btL0QEmdB2X+uyx0kOWMWE1/LWsq5sZy3Q5tpi4eItJS6mB0XL3wGW59RQ+8bchNQQ1OW/va8Og== -"@ledgerhq/types-live@^6.79.0": - version "6.79.0" - resolved "https://registry.yarnpkg.com/@ledgerhq/types-live/-/types-live-6.79.0.tgz#269ca46b908e46164b949baa4af5b5734d21e83c" - integrity sha512-YpRBrrOlmX1vC2SNrDNci0uuww4h++Wn8wWGr/8ICYGFT+pkT2By4sZxEWito5YLQow4LIMAdHBoQgooXLu7vA== +"@ledgerhq/types-live@^6.90.0": + version "6.90.0" + resolved "https://registry.npmjs.org/@ledgerhq/types-live/-/types-live-6.90.0.tgz#163c2a2c019beeff0afc630192d50c92b57e3a47" + integrity sha512-F+YyfE0HZoqc8HkaJXEHhMjU4JX6eHzCfXKmJH/MHiymrqg8tOa+c07mWIlvspf5jcpswRM3r1k81y2A8q/aWw== dependencies: bignumber.js "^9.1.2" rxjs "^7.8.1" @@ -3176,7 +3200,7 @@ dependencies: "@noble/hashes" "1.8.0" -"@noble/curves@^1.0.0": +"@noble/curves@1.9.7", "@noble/curves@^1.0.0": version "1.9.7" resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.9.7.tgz#79d04b4758a43e4bca2cbdc62e7771352fa6b951" integrity sha512-gbKGcRUYIjA3/zCCNaWDciTMFI0dCkvou3TL8Zmy5Nc7sJ47a0jtOeZoTaMxkuqRo9cRhjOdZJXegxYE5FN/xw== @@ -3242,6 +3266,11 @@ resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.3.3.tgz#39908da56a4adc270147bb07968bf3b16cfe1699" integrity sha512-V7/fPHgl+jsVPXqqeOzT8egNj2iBIVt+ECeMMG8TdcnTikP3oaBtUVqpT/gYCR68aEBJSF+XbYUxStjbFMqIIA== +"@noble/secp256k1@1.6.3": + version "1.6.3" + resolved "https://registry.npmjs.org/@noble/secp256k1/-/secp256k1-1.6.3.tgz#7eed12d9f4404b416999d0c87686836c4c5c9b94" + integrity sha512-T04e4iTurVy7I8Sw4+c5OSN9/RkPlo1uKxAomtxQNLq8j1uPAqnsqG1bqvY3Jv7c13gyr6dui0zmh/I3+f/JaQ== + "@noble/secp256k1@^1.5.5", "@noble/secp256k1@^1.7.1": version "1.7.1" resolved "https://registry.yarnpkg.com/@noble/secp256k1/-/secp256k1-1.7.1.tgz#b251c70f824ce3ca7f8dc3df08d58f005cc0507c" @@ -6852,15 +6881,6 @@ axios@1.12.2: form-data "^4.0.4" proxy-from-env "^1.1.0" -axios@1.7.7, axios@^1.0.0: - version "1.7.7" - resolved "https://registry.yarnpkg.com/axios/-/axios-1.7.7.tgz#2f554296f9892a72ac8d8e4c5b79c14a91d0a47f" - integrity sha512-S4kL7XrjgBmvdGut0sN3yJxqYzrDOnivkBiN0OFs6hLiUam3UPvswUo0kqGyhqUZGEOytHyumEdXsAkgCOUf3Q== - dependencies: - follow-redirects "^1.15.6" - form-data "^4.0.0" - proxy-from-env "^1.1.0" - axios@^0.18.0: version "0.18.1" resolved "https://registry.yarnpkg.com/axios/-/axios-0.18.1.tgz#ff3f0de2e7b5d180e757ad98000f1081b87bcea3" @@ -6883,6 +6903,15 @@ axios@^0.26.1: dependencies: follow-redirects "^1.14.8" +axios@^1.0.0: + version "1.7.7" + resolved "https://registry.yarnpkg.com/axios/-/axios-1.7.7.tgz#2f554296f9892a72ac8d8e4c5b79c14a91d0a47f" + integrity sha512-S4kL7XrjgBmvdGut0sN3yJxqYzrDOnivkBiN0OFs6hLiUam3UPvswUo0kqGyhqUZGEOytHyumEdXsAkgCOUf3Q== + dependencies: + follow-redirects "^1.15.6" + form-data "^4.0.0" + proxy-from-env "^1.1.0" + axios@^1.8.4: version "1.13.2" resolved "https://registry.yarnpkg.com/axios/-/axios-1.13.2.tgz#9ada120b7b5ab24509553ec3e40123521117f687" @@ -7192,6 +7221,11 @@ bip174@^3.0.0-rc.0: uint8array-tools "^0.0.9" varuint-bitcoin "^2.0.0" +"bip174@npm:@bitgo-forks/bip174@3.1.0-master.4": + version "3.1.0-master.4" + resolved "https://registry.npmjs.org/@bitgo-forks/bip174/-/bip174-3.1.0-master.4.tgz#0c8a750cc98097120169e753e7fccc23b1cb9eaa" + integrity sha512-WDRNzPSdJGDqQNqfN+L5KHNHFDmNOPYnUnT7NkEkfHWn5m1jSOfcf8Swaslt5P0xcSDiERdN2gZxFc6XtOqRYg== + bip32-path@^0.4.2: version "0.4.2" resolved "https://registry.yarnpkg.com/bip32-path/-/bip32-path-0.4.2.tgz#5db0416ad6822712f077836e2557b8697c0c7c99" @@ -7210,6 +7244,18 @@ bip32@^2.0.4, bip32@^2.0.5: typeforce "^1.11.5" wif "^2.0.6" +bip32@^3.0.1: + version "3.1.0" + resolved "https://registry.npmjs.org/bip32/-/bip32-3.1.0.tgz#ce90e020d0e6b41e891a0122ff053efabcce1ccc" + integrity sha512-eoeajYEzJ4d6yyVtby8C+XkCeKItiC4Mx56a0M9VaqTMC73SWOm4xVZG7SaR8e/yp4eSyky2XcBpH3DApPdu7Q== + dependencies: + bs58check "^2.1.1" + create-hash "^1.2.0" + create-hmac "^1.1.7" + ripemd160 "^2.0.2" + typeforce "^1.11.5" + wif "^2.0.6" + bip39@^3.0.2, bip39@^3.0.4: version "3.1.0" resolved "https://registry.yarnpkg.com/bip39/-/bip39-3.1.0.tgz#c55a418deaf48826a6ceb34ac55b3ee1577e18a3" @@ -7265,6 +7311,22 @@ bitcoinjs-lib@^5.2.0: varuint-bitcoin "^1.0.4" wif "^2.0.1" +"bitcoinjs-lib@npm:@bitgo-forks/bitcoinjs-lib@7.1.0-master.11": + version "7.1.0-master.11" + resolved "https://registry.npmjs.org/@bitgo-forks/bitcoinjs-lib/-/bitcoinjs-lib-7.1.0-master.11.tgz#49b9c31b5a973b08c34c9dc468ac241c9416e18a" + integrity sha512-Yyh67I26iI7FGqPBY7rxqHZ9FM9JuouAsViQocrr7URhRpuZEWVsM/oMTNbMnRw2cPFj4jWKhRDLadgrUk2HEQ== + dependencies: + bech32 "^2.0.0" + bip174 "npm:@bitgo-forks/bip174@3.1.0-master.4" + bs58check "^2.1.2" + create-hash "^1.1.0" + fastpriorityqueue "^0.7.1" + json5 "^2.2.3" + ripemd160 "^2.0.2" + typeforce "^1.11.3" + varuint-bitcoin "^1.1.2" + wif "^2.0.1" + bitcoinjs-message@^2.0.0, bitcoinjs-message@^2.1.0: version "2.2.0" resolved "https://registry.yarnpkg.com/bitcoinjs-message/-/bitcoinjs-message-2.2.0.tgz#8116ec7f447f9889e23030fc15c5286a6ae5503b" @@ -7875,6 +7937,13 @@ caseless@~0.12.0: resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" integrity sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw== +cashaddress@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/cashaddress/-/cashaddress-1.1.0.tgz#1a7d3b4e3b3bbdef77b666fecf322ea79bcc9799" + integrity sha512-cdqIjZodtErhoQOiojQ1SRqDKh6bOVkLYNJjMmFEUxGoErrO2am8txotXmEi8glvU/y9wzup+LsvEBl8AttUwA== + dependencies: + bigi "^1.4.2" + cashaddrjs@0.4.4: version "0.4.4" resolved "https://registry.yarnpkg.com/cashaddrjs/-/cashaddrjs-0.4.4.tgz#169f1ae620d325db77700273d972282adeeee331" @@ -9237,6 +9306,15 @@ ecpair@^3.0.0-rc.0: valibot "^0.37.0" wif "^5.0.0" +"ecpair@npm:@bitgo/ecpair@2.1.0-rc.0": + version "2.1.0-rc.0" + resolved "https://registry.npmjs.org/@bitgo/ecpair/-/ecpair-2.1.0-rc.0.tgz#e281da5cc616cfd2b3c4f845d64c33deea7ebbaa" + integrity sha512-qPZetcEA1Lzzm9NsqsGF9NGorAGaXrv20eZjopLUjsdwftWcsYTE7lwzE/Xjdf4fcq6G4+vjrCudWAMGNfJqOQ== + dependencies: + randombytes "^2.1.0" + typeforce "^1.18.0" + wif "^2.0.6" + ecurve@^1.0.6: version "1.0.6" resolved "https://registry.yarnpkg.com/ecurve/-/ecurve-1.0.6.tgz#dfdabbb7149f8d8b78816be5a7d5b83fcf6de797" @@ -10616,6 +10694,11 @@ fast-url-parser@1.1.3: dependencies: punycode "^1.3.2" +fastpriorityqueue@^0.7.1: + version "0.7.5" + resolved "https://registry.npmjs.org/fastpriorityqueue/-/fastpriorityqueue-0.7.5.tgz#4125d5ee34ff5f79a7199f993a55d1b7e291c5ad" + integrity sha512-3Pa0n9gwy8yIbEsT3m2j/E9DXgWvvjfiZjjqcJ+AdNKTAlVMIuFYrYG5Y3RHEM8O6cwv9hOpOWY/NaMfywoQVA== + fastq@^1.6.0: version "1.17.1" resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.17.1.tgz#2a523f07a4e7b1e81a42b91b8bf2254107753b47" @@ -11514,6 +11597,16 @@ hash-base@^3.0.0: readable-stream "^3.6.0" safe-buffer "^5.2.0" +hash-base@^3.1.2: + version "3.1.2" + resolved "https://registry.npmjs.org/hash-base/-/hash-base-3.1.2.tgz#79d72def7611c3f6e3c3b5730652638001b10a74" + integrity sha512-Bb33KbowVTIj5s7Ked1OsqHUeCpz//tPwR+E2zJgJKo9Z5XolZ9b6bdUgjmYlwnWhoOQKoTd1TYToZGn5mAYOg== + dependencies: + inherits "^2.0.4" + readable-stream "^2.3.8" + safe-buffer "^5.2.1" + to-buffer "^1.2.1" + hash-base@~3.0: version "3.0.4" resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.0.4.tgz#5fc8686847ecd73499403319a6b0a3f3f6ae4918" @@ -14343,6 +14436,16 @@ nano-json-stream-parser@^0.1.2: resolved "https://registry.yarnpkg.com/nano-json-stream-parser/-/nano-json-stream-parser-0.1.2.tgz#0cc8f6d0e2b622b479c40d499c46d64b755c6f5f" integrity sha512-9MqxMH/BSJC7dnLsEMPyfN5Dvoo49IsPFYMcHw3Bcfc2kN0lpHRBSzlMSVx4HGyJ7s9B31CyBTVehWJoQ8Ctew== +nanoassert@^1.0.0: + version "1.1.0" + resolved "https://registry.npmjs.org/nanoassert/-/nanoassert-1.1.0.tgz#4f3152e09540fde28c76f44b19bbcd1d5a42478d" + integrity sha512-C40jQ3NzfkP53NsO8kEOFd79p4b9kDXQMwgiY1z8ZwrDZgUyom0AHwGegF4Dm99L+YoYhuaB0ceerUcXmqr1rQ== + +nanoassert@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/nanoassert/-/nanoassert-2.0.0.tgz#a05f86de6c7a51618038a620f88878ed1e490c09" + integrity sha512-7vO7n28+aYO4J+8w96AzhmU8G+Y/xpPDJz/se19ICsqj/momRbb9mh9ZUtkoJ5X3nTnPdhEJyc0qnM6yAsHBaA== + nanoid@^3.1.31, nanoid@^3.3.7: version "3.3.7" resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.7.tgz#d0c301a691bc8d54efa0a2226ccf3fe2fd656bd8" @@ -16011,9 +16114,9 @@ rc@^1.0.1, rc@^1.1.6: minimist "^1.2.0" strip-json-comments "~2.0.1" -react-dom@^18.2.0: +react-dom@18.3.1: version "18.3.1" - resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-18.3.1.tgz#c2265d79511b57d479b3dd3fdfa51536494c5cb4" + resolved "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz#c2265d79511b57d479b3dd3fdfa51536494c5cb4" integrity sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw== dependencies: loose-envify "^1.1.0" @@ -16024,9 +16127,9 @@ react-is@^17.0.1: resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0" integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w== -react@^18.2.0: +react@18.3.1: version "18.3.1" - resolved "https://registry.yarnpkg.com/react/-/react-18.3.1.tgz#49ab892009c53933625bd16b2533fc754cab2891" + resolved "https://registry.npmjs.org/react/-/react-18.3.1.tgz#49ab892009c53933625bd16b2533fc754cab2891" integrity sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ== dependencies: loose-envify "^1.1.0" @@ -16415,7 +16518,7 @@ rimraf@^3.0.0, rimraf@^3.0.2: dependencies: glob "^7.1.3" -ripemd160@2, ripemd160@^2.0.0, ripemd160@^2.0.1: +ripemd160@^2.0.0, ripemd160@^2.0.1: version "2.0.2" resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA== @@ -16423,6 +16526,14 @@ ripemd160@2, ripemd160@^2.0.0, ripemd160@^2.0.1: hash-base "^3.0.0" inherits "^2.0.1" +ripemd160@^2.0.2: + version "2.0.3" + resolved "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.3.tgz#9be54e4ba5e3559c8eee06a25cd7648bbccdf5a8" + integrity sha512-5Di9UC0+8h1L6ZD2d7awM7E/T4uA1fJRlx6zk/NvdCCVEoAnFqvHmCuNeIKoCeIixBX/q8uM+6ycDvF8woqosA== + dependencies: + hash-base "^3.1.2" + inherits "^2.0.4" + ripple-address-codec@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/ripple-address-codec/-/ripple-address-codec-5.0.0.tgz#97059f7bba6f9ed7a52843de8aa427723fb529f6" @@ -16894,14 +17005,6 @@ setprototypeof@1.2.0: resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== -sha.js@2, sha.js@^2.4.0, sha.js@^2.4.11, sha.js@^2.4.8: - version "2.4.11" - resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" - integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== - dependencies: - inherits "^2.0.1" - safe-buffer "^5.0.1" - sha.js@^2.3.6: version "2.4.12" resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.12.tgz#eb8b568bf383dfd1867a32c3f2b74eb52bdbf23f" @@ -16911,6 +17014,14 @@ sha.js@^2.3.6: safe-buffer "^5.2.1" to-buffer "^1.2.0" +sha.js@^2.4.0, sha.js@^2.4.11, sha.js@^2.4.8: + version "2.4.11" + resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" + integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + shallow-clone@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-3.0.1.tgz#8f2981ad92531f55035b01fb230769a40e02efa3" @@ -17738,7 +17849,7 @@ timers-browserify@^2.0.4: dependencies: setimmediate "^1.0.4" -tiny-secp256k1@1.1.6, tiny-secp256k1@^1.1.1, tiny-secp256k1@^1.1.3: +tiny-secp256k1@^1.1.1, tiny-secp256k1@^1.1.3: version "1.1.6" resolved "https://registry.yarnpkg.com/tiny-secp256k1/-/tiny-secp256k1-1.1.6.tgz#7e224d2bee8ab8283f284e40e6b4acb74ffe047c" integrity sha512-FmqJZGduTyvsr2cF3375fqGHUovSwDi/QytexX1Se4BPuPZpTE5Ftp5fg+EFSuEf3lhZqgCRjEG3ydUQ/aNiwA== @@ -17777,7 +17888,7 @@ tmpl@1.0.5: resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.5.tgz#8683e0b902bb9c20c4f726e3c0b69f36518c07cc" integrity sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw== -to-buffer@^1.2.0: +to-buffer@^1.2.0, to-buffer@^1.2.1: version "1.2.2" resolved "https://registry.yarnpkg.com/to-buffer/-/to-buffer-1.2.2.tgz#ffe59ef7522ada0a2d1cb5dfe03bb8abc3cdc133" integrity sha512-db0E3UJjcFhpDhAF4tLo03oli3pwl3dbnzXOUIlRKrp+ldk/VUxzpWYZENsw2SZiuBjHAk7DfB0VU7NKdpb6sw== @@ -18658,7 +18769,7 @@ varint@^5.0.0, varint@~5.0.0: resolved "https://registry.yarnpkg.com/varint/-/varint-5.0.2.tgz#5b47f8a947eb668b848e034dcfa87d0ff8a7f7a4" integrity sha512-lKxKYG6H03yCZUpAGOPOsMcGxd1RHCu1iKvEHYDPmTyq2HueGhD73ssNBqqQWfvYs04G9iUFRvmAVLW20Jw6ow== -varuint-bitcoin@1.1.2, varuint-bitcoin@^1.0.1, varuint-bitcoin@^1.0.4: +varuint-bitcoin@1.1.2, varuint-bitcoin@^1.0.1, varuint-bitcoin@^1.0.4, varuint-bitcoin@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/varuint-bitcoin/-/varuint-bitcoin-1.1.2.tgz#e76c138249d06138b480d4c5b40ef53693e24e92" integrity sha512-4EVb+w4rx+YfVM32HQX42AbbT7/1f5zwAYhIujKXKk8NQK+JfRVl3pqT3hjNn/L+RstigmGGKVwHA/P0wgITZw==