| Crates.io | ledger_bitcoin_client |
| lib.rs | ledger_bitcoin_client |
| version | 0.5.0 |
| created_at | 2022-11-28 10:12:57.53558+00 |
| updated_at | 2024-08-23 14:02:20.51981+00 |
| description | Ledger Bitcoin application client |
| homepage | |
| repository | https://github.com/LedgerHQ/app-bitcoin-new |
| max_upload_size | |
| id | 724352 |
| size | 303,095 |
Client library in Rust for the Ledger Bitcoin application with minimal dependencies.
If you wish to contribute to this library, please read CONTRIBUTING.md.
bitcoin_client_rs should always compile using Rust 1.60.
The client::BitcoinClient struct implements the methods that call and
interpret the commands between the Ledger device and your software.
pub struct BitcoinClient<T: Transport> {...}
impl<T: Transport> BitcoinClient<T> {
pub fn get_extended_pubkey(
&self,
path: &bitcoin::util::bip32::DerivationPath,
display: bool,
) -> Result<bitcoin::util::bip32::ExtendedPubKey, BitcoinClientError<T::Error>>;
}
It requires an internal connection implementing the client::Transport
Trait.
pub trait Transport {
type Error: Debug;
fn exchange(&self, command: &APDUCommand) -> Result<(StatusWord, Vec<u8>), Self::Error>;
}
In order to satisfy this Trait, it is possible to import the
ledger-transport-hid crate from https://github.com/Zondax/ledger-rs.
Please, read the examples/ledger_hwi/src/transport.rs file to find an example.
async featureThe optional feature async adds the async_client module to the crate
and imports the async_trait library. The async_client::BitcoinClient
struct is an asynchronous equivalent to the BitcoinClient struct. It
requires an internal connection implementing the async_client::Transport Trait.
#[async_trait]
pub trait Transport {
type Error: Debug;
async fn exchange(&self, command: &APDUCommand) -> Result<(StatusWord, Vec<u8>), Self::Error>;
}
no-std supportWork in progress.
The code source for a simple tool to communicate with either a Ledger device or Speculos
emulator can be found in the examples directory.
Example of a command to retrieve the extended pubkey with the given derivation path and display it on the device screen:
cargo run --package ledger_hwi -- \
get-extended-pubkey --derivation-path "m/44'/0'/0'/0/0" --display