Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
43 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
2b27a32
added TypeScript source mapping
MicahMaphet Aug 6, 2026
841ca21
use local packages - proper bitcore-hardware installation
MicahMaphet Aug 6, 2026
9a8a6b5
make CWC.Transactions create, sign, and getSighash all accept both bi…
MicahMaphet Aug 7, 2026
1cb6617
apply node lib utxo conversion to bch, ltc, and doge
MicahMaphet Aug 7, 2026
01c55ff
standardize utxo type differentiation with isNodeUtxo
MicahMaphet Aug 7, 2026
b72064e
refactored CWC.Transactions utxo handling with standard and external …
MicahMaphet Aug 7, 2026
c4348d7
utxo CWC.Transactions: improved utxo types, multiple bug fixes, and c…
MicahMaphet Aug 10, 2026
c3ff523
fix bitcore-lib import
MicahMaphet Aug 10, 2026
1ab84ae
Merge branch 'uni-tx-create' into bitcore-hardware
MicahMaphet Aug 10, 2026
80c2309
use CWC to apply signature to transaction for burner
MicahMaphet Aug 13, 2026
3083498
make burner.sign compatible with hex encoded transactions + utxos
MicahMaphet Aug 13, 2026
fe72071
created a signing test for burner
MicahMaphet Aug 13, 2026
5e219d1
sign full transaction on burner and added command queue to sign all t…
MicahMaphet Aug 13, 2026
eb9c142
added signature verification test and refactored test suite for bitco…
MicahMaphet Aug 13, 2026
81b6e2d
added bitcore-lib transaction to test and bitcore-node utxo test for …
MicahMaphet Aug 13, 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/
4 changes: 4 additions & 0 deletions packages/bitcore-hardware/.mocharc.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
enable-source-maps: true
exit: true
recursive: true
timeout: 5000
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.
11 changes: 11 additions & 0 deletions packages/bitcore-hardware/examples/burner/address.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
import 'source-map-support/register.js';
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);
11 changes: 11 additions & 0 deletions packages/bitcore-hardware/examples/burner/publicKey.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
import 'source-map-support/register.js';
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);
62 changes: 62 additions & 0 deletions packages/bitcore-hardware/examples/burner/sign.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
import 'source-map-support/register.js';
import CWC from '@bitpay-labs/crypto-wallet-core';
import Burner from '../../src/burner.js';

const { PublicKey, Script } = CWC.BitcoreLib;

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

// Predefined for now. For other wallets:
// const publicKey = new PublicKey(await burner.getPublicKey({ index: 9 }))
const publicKey = new PublicKey('04161f62f9778a44bd3d07009b1f2e9df7ab1dc57e74665db7ed8baa95780452ab39f4975099f3ae36f7b6a874b46edd79d1d88573a325b9976fd8f120bed704aa');
const address = publicKey.toAddress();

const utxos = [
{
chain: 'BTC',
network: 'regtest',
coinbase: true,
mintIndex: 0,
spentTxid: '517dc566fb3a82121840eecdcce4636fb776b6b64ccc4f29f74b870e6bcc44b0',
mintTxid: 'd3667993af738c3db4033dc462ab95f9916da455c628bbf71488484e2b6803c3',
mintHeight: 5,
spentHeight: 111,
address: address.toString(),
script: Script.buildWitnessV0Out(address),
value: 600,
confirmations: 1,
sequenceNumber: 4294967293,
wallets: []
},
{
chain: 'BTC',
network: 'regtest',
coinbase: false,
mintIndex: 1,
spentTxid: '',
mintTxid: '517dc566fb3a82121840eecdcce4636fb776b6b64ccc4f29f74b870e6bcc44b0',
mintHeight: 111,
spentHeight: -2,
address: address.toString(),
script: Script.buildWitnessV0Out(address),
value: 600,
confirmations: 1,
sequenceNumber: 4294967295,
wallets: []
}
];

const tx = CWC.Transactions.create({
chain: 'BTC',
recipients: [{ address: '1Gokm82v6DmtwKEB8AiVhm82hyFSsEvBDK', amount: 1000 }],
utxos
});

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

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

process.exit(0);
11 changes: 11 additions & 0 deletions packages/bitcore-hardware/examples/burner/version.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
import 'source-map-support/register.js';
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);
8 changes: 8 additions & 0 deletions packages/bitcore-hardware/examples/ledger/address.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
import 'source-map-support/register.js';
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);
8 changes: 8 additions & 0 deletions packages/bitcore-hardware/examples/ledger/publicKey.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
import 'source-map-support/register.js';
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);
27 changes: 27 additions & 0 deletions packages/bitcore-hardware/examples/ledger/sign.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
import 'source-map-support/register.js';
import { BitcoreLib } from '@bitpay-labs/crypto-wallet-core';
import Ledger from '../../src/ledger.js';

const { HDPublicKey, Script, Transaction } = BitcoreLib;

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);
8 changes: 8 additions & 0 deletions packages/bitcore-hardware/examples/ledger/version.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
import 'source-map-support/register.js';
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