Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
b8907e3
initial commit for bitcore-hardware including basic interaction for t…
MicahMaphet Jul 8, 2026
9327ef5
created aggregate and base class for hardware wallets with a signing …
MicahMaphet Jul 9, 2026
0eae020
added key generation for hardare wallets
MicahMaphet Jul 9, 2026
a6ed1f6
use Node16 module resolution in bitcore hardware
MicahMaphet Jul 9, 2026
6392d15
added public key retreival for bitcore-hardware
MicahMaphet Jul 10, 2026
fdc7f06
added address retrieval to bitcore-hardware
MicahMaphet Jul 11, 2026
bd50867
bitcore-hardware: sign with password
MicahMaphet Jul 11, 2026
1c724fa
connect to Ledger Nano S
MicahMaphet Jul 11, 2026
da1b8b3
refactored ledger hardware wallet connection
MicahMaphet Jul 11, 2026
ed77af2
get ledger version
MicahMaphet Jul 11, 2026
81df5ee
added version retrieval for ledger and burner
MicahMaphet Jul 11, 2026
b1ba1ec
added address fetching for ledger
MicahMaphet Jul 12, 2026
9a1a05f
fix bug by closing ledger app when getting version
MicahMaphet Jul 12, 2026
74709f1
removed hardware wallet aggregator for now
MicahMaphet Jul 12, 2026
16a18de
added public key fetching to ledger
MicahMaphet Jul 12, 2026
d1f2aef
implement same interface for burner and ledger
MicahMaphet Jul 12, 2026
b6632e3
signing demo for ledger sign method
MicahMaphet Jul 13, 2026
209409e
Merge branch 'master' into bitcore-hardware
MicahMaphet Jul 13, 2026
e49c094
sign any psbt form ledger wallet
MicahMaphet Jul 15, 2026
5fde95c
basic conversion from bitcore transaction to bitcoinjs-lib psbt
MicahMaphet Jul 19, 2026
7d667db
send digest to burner wallet to sign instead of message
MicahMaphet Jul 20, 2026
63fb486
verify signature for burner
MicahMaphet Jul 21, 2026
250c1e2
serialize burner transaction to check for errors
MicahMaphet Jul 21, 2026
c8f4108
removed unused libraries from bitcore-hardware
MicahMaphet Jul 23, 2026
8a11c79
import bitcore-lib properly in bitcore-hardware
MicahMaphet Jul 23, 2026
9de1168
use crypto-wallet-core and take in transaction instead of hash for bu…
MicahMaphet Jul 23, 2026
33d1d7a
burner sign handles all
MicahMaphet Jul 23, 2026
15b64a7
handle all transaction signing ledger
MicahMaphet Jul 23, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions packages/bitcore-hardware/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
build/
14 changes: 14 additions & 0 deletions packages/bitcore-hardware/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
# Bitcore Hardware
**A library for using different hardware wallets

In progress, working on the Burner wallet

## Contributing

See [CONTRIBUTING.md](https://github.com/bitpay/bitcore/blob/master/CONTRIBUTING.md) on the main bitcore repo for information about how to contribute.

## License

Code released under [the MIT license](https://github.com/bitpay/bitcore/blob/master/LICENSE).

Copyright 2013-2026 BitPay, Inc. Bitcore is a trademark maintained by BitPay, Inc.
10 changes: 10 additions & 0 deletions packages/bitcore-hardware/examples/burner/address.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
import Burner from '../../src/burner.js';

const burner = new Burner('btc');
burner.connect();

console.log('Tap burner wallet on an NFC reader to get the address...');
console.log(await burner.getAddress({ index: 9 }));

console.log('Recieved address');
process.exit(0);
10 changes: 10 additions & 0 deletions packages/bitcore-hardware/examples/burner/publicKey.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
import Burner from '../../src/burner.js';

const burner = new Burner('btc');
burner.connect();

console.log('Tap burner wallet on an NFC reader to output the public key...');
console.log(await burner.getPublicKey({ index: 9 }));

console.log('Recieved public key');
process.exit(0);
33 changes: 33 additions & 0 deletions packages/bitcore-hardware/examples/burner/sign.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
import CWC from '@bitpay-labs/crypto-wallet-core';
import Burner from '../../src/burner.js';

const { Transaction, PublicKey, Script } = CWC.BitcoreLib;

const burner = new Burner('btc');
burner.connect();

console.log('Tap burner for public key (used for the address and verifying the signature)');
const publicKey = new PublicKey(await burner.getPublicKey({ index: 9 }));
const address = publicKey.toAddress();

const utxo = {
txId: '115e8f72f39fad874cfab0deed11a80f24f967a84079fb56ddf53ea02e308986',
outputIndex: 0,
address: address.toString(),
script: Script.buildWitnessV0Out(address),
satoshis: 1100
};

const tx = new Transaction()
.from(utxo)
.to('1Gokm82v6DmtwKEB8AiVhm82hyFSsEvBDK', 1000);


console.log('Tap burner wallet on an NFC reader to sign a transaction');
const signedTransaction: any = await burner.sign({ index: 9, tx, password: '123456' });

console.log(signedTransaction);
console.log('Signed transaction');

console.log(signedTransaction.serialize());
process.exit(0);
10 changes: 10 additions & 0 deletions packages/bitcore-hardware/examples/burner/version.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
import Burner from '../../src/burner.js';

const burner = new Burner('btc');
burner.connect();

console.log('Tap burner wallet on an NFC reader to get the firmware version...');
console.log(await burner.getVersion({ index: 1 }));

console.log('Recieved version');
process.exit(0);
7 changes: 7 additions & 0 deletions packages/bitcore-hardware/examples/ledger/address.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
import Ledger from '../../src/ledger.js';

const ledger = new Ledger();
await ledger.connect();
console.log(await ledger.getAddress({ index: 0 }));
await ledger.disconnect();
process.exit(0);
7 changes: 7 additions & 0 deletions packages/bitcore-hardware/examples/ledger/publicKey.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
import Ledger from '../../src/ledger.js';

const ledger = new Ledger();
await ledger.connect();
console.log(await ledger.getPublicKey({ index: 0 }));
await ledger.disconnect();
process.exit(0);
26 changes: 26 additions & 0 deletions packages/bitcore-hardware/examples/ledger/sign.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
import bitcore from '@bitpay-labs/bitcore-lib';
import Ledger from '../../src/ledger.js';

const { HDPublicKey, Script, Transaction } = bitcore;

const ledger = new Ledger();
await ledger.connect();

const publickey = new HDPublicKey(await ledger.getPublicKey({ index: 0 })).derive('m/0/0').publicKey;

const tx = new Transaction()
.from({
address: 'bc1q0wsc0l2pzfn55ra67kr0vm40rjlllyh3a5kf88',
txId: 'a78dbd15bde4d8678c7e01451d6e54e92629395c9b76de7d37bf464514c8bc04',
outputIndex: 0,
script: Script.buildWitnessV0Out(publickey.toAddress()),
satoshis: 9290
});

const signedTransaction = await ledger.sign(tx);
console.log(signedTransaction);
console.log(signedTransaction.toBuffer().toString('hex'));
await ledger.disconnect();

console.log('Signed transaction');
process.exit(0);
7 changes: 7 additions & 0 deletions packages/bitcore-hardware/examples/ledger/version.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
import Ledger from '../../src/ledger.js';

const ledger = new Ledger();
await ledger.connect();
console.log(await ledger.getMasterKeyFingerprint());
await ledger.disconnect();
process.exit(0);
Loading