Skip to content

Commit 727024a

Browse files
authored
Merge pull request #61 from swan-bitcoin/jdf/caravan-upgrade
upgrade to caravan from (deprecated) unchained-bitcoin, add taproot support
2 parents 1435653 + dec8e96 commit 727024a

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

48 files changed

+3789
-14545
lines changed

.circleci/config.yml

Lines changed: 0 additions & 28 deletions
This file was deleted.

.nvmrc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
14.7.0
1+
20.12.2

README.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
[![code style: prettier](https://img.shields.io/badge/code_style-prettier-ff69b4.svg?style=flat-square)](https://github.com/prettier/prettier)
44

55
A small JavaScript library and accompanying tool that derives bitcoin addresses from extended public keys. Built upon
6-
[unchained-bitcoin](https://github.com/unchained-capital/unchained-bitcoin)
6+
[caravan](https://github.com/caravan-bitcoin/caravan)
77
and [bitcoinjs-lib](https://github.com/bitcoinjs/bitcoinjs-lib).
88

99
For more details refer to the individual packages:
@@ -17,6 +17,7 @@ For more details refer to the individual packages:
1717
- [BIP 44](https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki) - Multi-Account Hierarchy for Deterministic Wallets
1818
- [BIP 49](https://github.com/bitcoin/bips/blob/master/bip-0049.mediawiki) - Derivation scheme for P2WPKH-nested-in-P2SH based accounts
1919
- [BIP 84](https://github.com/bitcoin/bips/blob/master/bip-0084.mediawiki) - Derivation scheme for P2WPKH based accounts
20+
- [BIP 86](https://github.com/bitcoin/bips/blob/master/bip-0086.mediawiki) - Key Derivation for Single Key P2TR Outputs
2021

2122
Samourai Wallet wrote a short summary on the differences between [BIP 44, BIP 49, BIP 84](https://samourai.kayako.com/article/65-bip-44-bip-49-and-bip84) and [XPUB's, YPUB's, ZPUB's](https://samourai.kayako.com/article/49-xpub-s-ypub-s-zpub-s). For a detailed explanation on derivation paths refer to [learn me a bitcoin](https://learnmeabitcoin.com/technical/derivation-paths).
2223

packages/xpub-cli/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@
5353
"test": "echo \"Warning: no test specified\""
5454
},
5555
"dependencies": {
56-
"@swan-bitcoin/xpub-lib": "^0.1.4",
56+
"@swan-bitcoin/xpub-lib": "^0.2.0",
5757
"commander": "^6.1.0"
5858
},
5959
"devDependencies": {

packages/xpub-cli/src/xpub.js

Lines changed: 16 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,14 @@
11
#!/usr/bin/env node
22

3-
import {
4-
NETWORKS,
3+
const {
4+
Network,
55
isValidAddress,
66
isValidExtPubKey,
77
addressFromExtPubKey,
88
addressesFromExtPubKey,
99
Purpose,
10-
} from "@swan-bitcoin/xpub-lib"
11-
12-
import { version } from "../package.json"
10+
} = require("@swan-bitcoin/xpub-lib")
11+
const { version } = require("../package.json")
1312

1413
function parsePurpose(purpose) {
1514
switch (purpose.toLowerCase()) {
@@ -22,6 +21,9 @@ function parsePurpose(purpose) {
2221
case "p2wpkh": {
2322
return Purpose.P2WPKH
2423
}
24+
case "p2tr": {
25+
return Purpose.P2TR
26+
}
2527
default: {
2628
return undefined
2729
}
@@ -45,7 +47,7 @@ program
4547
.description("derive address(es) from an extended public key")
4648
.option(
4749
"-p, --purpose <purpose>",
48-
"derivation purpose which dictates the address type ['p2pkh', 'p2sh', 'p2wpkh']",
50+
"derivation purpose which dictates the address type ['p2pkh', 'p2sh', 'p2wpkh', 'p2tr']",
4951
"p2wpkh"
5052
) // use `choices` once this feature is released: https://github.com/tj/commander.js/issues/518
5153
.option(
@@ -54,8 +56,8 @@ program
5456
1
5557
)
5658
.option(
57-
"-c, --accountNumber <accountNumber>",
58-
"the account number as defined in BIP 44",
59+
"-c, --change <change>",
60+
"the change index to use (0 = external aka receive, 1 = internal aka change / other)",
5961
0
6062
)
6163
.option(
@@ -70,7 +72,7 @@ program
7072
cmdObj.help()
7173
}
7274

73-
const network = cmdObj.testnet ? NETWORKS.TESTNET : NETWORKS.MAINNET
75+
const network = cmdObj.testnet ? Network.TESTNET : Network.MAINNET
7476
if (!isValidExtPubKey(extPubKey, network)) {
7577
console.error(`error: invalid extended public key '${extPubKey}'`)
7678
process.exitCode = 1
@@ -80,16 +82,16 @@ program
8082
const purpose = cmdObj.purpose
8183
? parsePurpose(cmdObj.purpose)
8284
: Purpose.P2WPKH // default to P2WPKH
83-
const keyIndex = cmdObj.keyIndex ? cmdObj.keyIndex : 0 // default to P2WPKH
84-
const accountNumber = cmdObj.accountNumber ? cmdObj.accountNumber : 0 // default to P2WPKH
85+
const change = cmdObj.change ? cmdObj.change : 0 // default to external chain
86+
const keyIndex = cmdObj.keyIndex ? cmdObj.keyIndex : 0 // default to first index
8587

8688
if (cmdObj.addressCount > 1) {
8789
// Multiple addresses
8890
const { addressCount } = cmdObj
8991
const addresses = addressesFromExtPubKey({
9092
extPubKey,
9193
addressCount,
92-
accountNumber,
94+
change,
9395
purpose,
9496
network,
9597
})
@@ -100,7 +102,7 @@ program
100102
// Single address
101103
const address = addressFromExtPubKey({
102104
extPubKey,
103-
accountNumber,
105+
change,
104106
keyIndex,
105107
purpose,
106108
network,
@@ -123,7 +125,7 @@ program
123125
cmdObj.help()
124126
}
125127

126-
const network = cmdObj.testnet ? NETWORKS.TESTNET : NETWORKS.MAINNET
128+
const network = cmdObj.testnet ? Network.TESTNET : Network.MAINNET
127129
let isValid = false
128130
let type = ""
129131
if (cmdObj.checkAddress) {

packages/xpub-components-bootstrap/index.js

Lines changed: 0 additions & 8 deletions
This file was deleted.

packages/xpub-components-bootstrap/package.json

Lines changed: 0 additions & 35 deletions
This file was deleted.

packages/xpub-components-bootstrap/src/components/addressDerivationInput.js

Lines changed: 0 additions & 64 deletions
This file was deleted.

packages/xpub-components-bootstrap/src/components/derivedAddressesTable.js

Lines changed: 0 additions & 43 deletions
This file was deleted.

packages/xpub-components-bootstrap/src/components/hardwareWallets.js

Lines changed: 0 additions & 27 deletions
This file was deleted.

packages/xpub-components-bootstrap/src/components/networkSwitcher.js

Lines changed: 0 additions & 27 deletions
This file was deleted.

0 commit comments

Comments
 (0)