An open API service indexing awesome lists of open source software.

https://github.com/witnet/ts-slip32

TypeScript implementation of the SLIP-0032 extended serialization format for BIP-32 wallets
https://github.com/witnet/ts-slip32

bech32 bip32 bitcoin blockchain hd-wallet satoshilabs slip-0032 witnet

Last synced: 8 months ago
JSON representation

TypeScript implementation of the SLIP-0032 extended serialization format for BIP-32 wallets

Awesome Lists containing this project

README

          

ts-slip32


Join the chat at https://gitter.im/witnet/community
Build Status
MIT



ts-slip32 is a typescript implementation of the SLIP-0032 extended serialization format for BIP-32 wallets.


## Installation

From npm:
```bash
npm install slip32
```

From git:
```bash
git clone https://github.com/witnet/ts-slip32.git
cd ts-slip32
yarn
yarn build
```

## Usage

The main two functions are described in `slip32.d.ts`:
```typescript
/**
* Import key from Slip32 format
* @param {string} slip32
* @returns {{keyPath: KeyPath; extendedKey: ExtendedKey}}
*/
export declare const importKeyFromSlip32: (slip32: string) => {
keyPath: number[];
extendedKey: ExtendedKey;
};

/**
* Export key to Slip32 format
* @param {KeyPath} keyPath
* @param {ExtendedKey | ExtendedKey} extendedKey
* @returns {string}
*/
export declare const exportKeyToSlip32: (keyPath: number[], extendedKey: ExtendedKey) => string;
```

The aforementioned functions use the following interfaces and types, defined in `keys.d.ts`:

```typescript
/**
* Key interface
* The buffer should have a length of 32 bytes
*/
export interface Key {
bytes: Uint8Array;
}

/**
* Chain code (32 bytes)
*/
export declare type ChainCode = Uint8Array;

/**
* Private Key (33 bytes)
*/
export interface PrivateKey extends Key {
type: "private";
}

/**
* Public Key (33 bytes)
*/
export interface PublicKey extends Key {
type: "public";
}

/**
* Extended keys, as introduced by BIP-0032, pair a key with a chain code
*/
export declare type ExtendedKey = {
key: Key;
chainCode: ChainCode;
};
```

## Example

```typescript
import * as Slip32 from "slip32"

const keyToImport = "xprv1qxqqqqqq78qr7hlewyyfzt74vasa87k63pu7g9e6hfzlzrdyh0v5k8zfw9sqpsyv7vcejeyzcpkm85jel7vmujlhpquzf4f3sh3nry0w0n4jh7t0jhc039"

// Import key as {keyPath: KeyPath, extendedKey: ExtendedKey}
const importedKey = Slip32.importKeyFromSlip32(keyToImport)

// Export key as string
const exportedKey = Slip32.exportKeyToSlip32(importedKey.keyPath, importedKey.extendedKey)
```

## License
This library is free and open-source software released under the [MIT](LICENSE) license.