Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/bajetech/digitalbits-hd-wallet
๐ Key derivation for the DigitalBits blockchain (based on Stellar's SEP-0005) ๐
https://github.com/bajetech/digitalbits-hd-wallet
bip39 cryptocurrencies digitalbits ed25519 javascript keys nodejs sep-0005
Last synced: about 1 month ago
JSON representation
๐ Key derivation for the DigitalBits blockchain (based on Stellar's SEP-0005) ๐
- Host: GitHub
- URL: https://github.com/bajetech/digitalbits-hd-wallet
- Owner: bajetech
- License: apache-2.0
- Created: 2021-09-08T19:01:50.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2023-03-01T14:58:40.000Z (almost 2 years ago)
- Last Synced: 2024-08-09T19:19:15.612Z (5 months ago)
- Topics: bip39, cryptocurrencies, digitalbits, ed25519, javascript, keys, nodejs, sep-0005
- Language: JavaScript
- Homepage: https://www.npmjs.com/package/@bajetech/digitalbits-hd-wallet
- Size: 521 KB
- Stars: 2
- Watchers: 1
- Forks: 1
- Open Issues: 5
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
# digitalbits-hd-wallet
> ๐ Key derivation for the DigitalBits blockchain (based on Stellar's [SEP-0005](https://github.com/stellar/stellar-protocol/blob/master/ecosystem/sep-0005.md)) ๐
## IMPORTANT NOTICE
**Update to v1.1.0 or higher**: Versions of this package prior to v1.1.0 are broken! It is very likely that if you attempt to use a pre-1.1.0 release of this package in your projects, they will NOT run! Please be sure to update to v1.1.0 or higher for a working release.
## Installation
```bash
yarn add @bajetech/digitalbits-hd-wallet # or npm i @bajetech/digitalbits-hd-wallet
```## Usage
```js
import DigitalBitsHDWallet from "@bajetech/digitalbits-hd-wallet";const mnemonic = DigitalBitsHDWallet.generateMnemonic();
const wallet = DigitalBitsHDWallet.fromMnemonic(mnemonic);wallet.getPublicKey(0); // => GDKYMXOAJ5MK4EVIHHNWRGAAOUZMNZYAETMHFCD6JCVBPZ77TUAZFPKT
wallet.getSecret(0); // => SCVVKNLBHOWBNJYHD3CNROOA2P3K35I5GNTYUHLLMUHMHWQYNEI7LVED
wallet.getKeypair(0); // => DigitalBitsBase.Keypair for account 0
wallet.derive(`m/44'/148'/0'`); // => raw key for account 0 as a Buffer// wallet instance from seeds
const seedHex =
"794fc27373add3ac7676358e868a787bcbf1edfac83edcecdb34d7f1068c645dbadba563f3f3a4287d273ac4f052d2fc650ba953e7af1a016d7b91f4d273378f";
const seedBuffer = Buffer.from(seedHex);
DigitalBitsHDWallet.fromSeed(seedHex);
DigitalBitsHDWallet.fromSeed(seedBuffer);// mnemonics with different lengths
DigitalBitsHDWallet.generateMnemonic(); // 24 words
DigitalBitsHDWallet.generateMnemonic({ entropyBits: 224 }); // 21 words
DigitalBitsHDWallet.generateMnemonic({ entropyBits: 160 }); // 18 words
DigitalBitsHDWallet.generateMnemonic({ entropyBits: 128 }); // 12 words// validate a mnemonic
DigitalBitsHDWallet.validateMnemonic("too short and non wordlist words"); // false
```## Mnemonic Language
Mnemonics can be generated in any language supported by the underlying [bip39 npm module](https://github.com/bitcoinjs/bip39).
The full list of language keys are under exports 'wordlists' [here](https://github.com/bitcoinjs/bip39/blob/master/index.js).
### Usage
```js
import DigitalBitsHDWallet from "@bajetech/digitalbits-hd-wallet";// traditional chinese - 24 words
DigitalBitsHDWallet.generateMnemonic({
language: "chinese_traditional",
});
// => '็ ไป ๅฏ ่ฝ ๆฟ ้กฟ ๅ ๆค ็ขณ ๅฎ ็ธ ๅฆ ้ ้ข ๆถจ ้ชค ๅบฆ ็ฒ ๆฑ ๅธ ๅณ ๅง ่ฎฒ ่'// french - 12 words
DigitalBitsHDWallet.generateMnemonic({ language: "french", entropyBits: 128 });
// => 'directif terrible leฬgume deฬrober science vision venimeux exulter abrasif vague mutuel innocent'
```## Randomness
- NodeJs: crypto.randomBytes
- Browser: window.crypto.getRandomValues(using [randombytes npm module](https://github.com/crypto-browserify/randombytes))
## TypeScript Support
Many thanks to [Kyle Roach](https://github.com/iRoachie) for converting this library to [TypeScript](https://www.typescriptlang.org) via the following [PR](https://github.com/bajetech/digitalbits-hd-wallet/pull/3). TypeScript support is now available as of version **1.2.0**.
## Tests
All [SEP-0005 test cases](https://github.com/stellar/stellar-protocol/blob/master/ecosystem/sep-0005.md#test-cases) are exercised [here](https://github.com/bajetech/digitalbits-hd-wallet/blob/main/test/sep0005.test.js) against [these](https://github.com/bajetech/digitalbits-hd-wallet/tree/main/test/data).
## Credits
This package was cloned and adapted from [`stellar-hd-wallet`](https://github.com/chatch/stellar-hd-wallet) for use with the [DigitalBits blockchain network](https://digitalbits.io), which is itself adapted from the [Stellar blockchain network](https://www.stellar.org).
Specifically the following differences from `stellar-hd-wallet` are worthy of mention:
- GitHub Actions is used for a CI workflow instead of Travis CI.
- All _direct_ package dependencies and dev dependencies are brought up-to-date and the code modified where necessary to use up-to-date APIs.
- The `xdb-digitalbits-base` package is used instead of `stellar-base`.
- As of version 1.2.0 the package is written in TypeScript, with built-in TypeScript definitions exported.
- Yarn is used as the package manager of choice for development of this library.