Skip to main content

Crate pubport

Crate pubport 

Source
Expand description

Parse wallet public-key exports into descriptors

Pubport accepts common single-sig wallet export formats and converts them into external and internal output descriptors. Use parse_from_str or Format::try_new_from_str when you have an unknown export string, then match on Format to inspect the parsed descriptors

§Supported formats

  • Descriptors
  • Electrum
  • Wasabi
  • JSON
  • Bare XPUB
  • BIP380 Key Expressions
    • note: XPUBs only, key expressions with private keys, bare compressed or uncompressed public keys are not supported

§Supported descriptors

  • Single Sig

§Examples

§Import in generic JSON format used by many wallets

use pubport::Format;

let string = std::fs::read_to_string("test/data/sparrow-export.json").unwrap();
let format = Format::try_new_from_str(&string);

assert!(format.is_ok());

let format = format.unwrap();
assert!(matches!(format, Format::Json(_)));

§Import from file containing descriptors

note: need external and internal descriptors, but can be single descriptor or multiple descriptor format

use pubport::Format;

let string = std::fs::read_to_string("test/data/descriptor.txt").unwrap();
let format = Format::try_new_from_str(&string);

assert!(format.is_ok());

let format = format.unwrap();
assert!(matches!(format, Format::Descriptor(_)));

§Import from wasabi wallet format

use pubport::Format;

let string = std::fs::read_to_string("test/data/new-wasabi.json").unwrap();
let format = Format::try_new_from_str(&string);

assert!(format.is_ok());

let format = format.unwrap();
assert!(matches!(format, Format::Wasabi(_)));

§Import from electrum wallet format

use pubport::Format;

let string = std::fs::read_to_string("test/data/new-electrum.json").unwrap();
let format = Format::try_new_from_str(&string);

assert!(format.is_ok());

let format = format.unwrap();
assert!(matches!(format, Format::Electrum(_)));

Modules§

descriptor
Descriptor parsing and construction utilities
formats
Format detection for supported wallet export strings
json
Serde models for supported JSON wallet export formats
key_expression
BIP380 key-expression parsing Parse BIP380-style key expressions
xpub
Extended public-key normalization helpers

Functions§

parse_from_str
Parse a wallet export string into the first supported format that matches

Type Aliases§

Error
Error returned by top-level format parsing
Format
Supported parsed wallet export format