85 lines
3.1 KiB
Markdown
85 lines
3.1 KiB
Markdown
|
|
# @dgb-wallet/core
|
|||
|
|
|
|||
|
|
DigiByte wallet primitives — no node required.
|
|||
|
|
|
|||
|
|
- BIP39 seed generation / validation / import
|
|||
|
|
- BIP32 hierarchical deterministic derivation with DGB xpub/xprv version bytes
|
|||
|
|
- BIP44 legacy, BIP49 P2SH-SegWit, BIP84 native SegWit, BIP86 Taproot
|
|||
|
|
- Address encoding for `D…`, `S…`, `dgb1q…`, `dgb1p…`
|
|||
|
|
- WIF (Wallet Import Format) import/export with network-byte validation
|
|||
|
|
|
|||
|
|
This package is the shared crypto core that the mobile app and browser
|
|||
|
|
extension both depend on. All keygen and signing happens locally; the
|
|||
|
|
package never talks to a network.
|
|||
|
|
|
|||
|
|
## Quick start
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
cd "D:\Program Files\DigiByte-Wallet\packages\core" # or wherever you put it
|
|||
|
|
npm install
|
|||
|
|
npm run demo
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
Generates a fresh 12-word seed and prints the first three addresses at
|
|||
|
|
each of the four descriptor classes (legacy, P2SH-SegWit, native SegWit,
|
|||
|
|
Taproot).
|
|||
|
|
|
|||
|
|
To recover from an existing seed and dump many candidate addresses,
|
|||
|
|
generate a throwaway test seed first (never use a real seed):
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 1. generate a fresh throwaway seed and copy it from stdout
|
|||
|
|
npm run demo
|
|||
|
|
|
|||
|
|
# 2. paste ONLY those 12 words back — nothing else, no placeholder text
|
|||
|
|
npm run recover -- "word1 word2 word3 word4 word5 word6 word7 word8 word9 word10 word11 word12"
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
> ⚠️ **Never paste a real seed phrase into a terminal, a chat, a support
|
|||
|
|
> ticket, or any input field that isn't the wallet itself.** Terminal
|
|||
|
|
> command history persists in `~/.bash_history` /
|
|||
|
|
> `%USERPROFILE%\.bash_history` / PowerShell's `PSReadLine` history —
|
|||
|
|
> anyone with access to your machine can recover it. Use a fresh test
|
|||
|
|
> seed for any script that takes a seed as an argument.
|
|||
|
|
|
|||
|
|
Cross-check any produced address against `iancoleman.io/bip39` with
|
|||
|
|
coin = "DGB - Digibyte" — they should match byte-for-byte.
|
|||
|
|
|
|||
|
|
## Network parameters
|
|||
|
|
|
|||
|
|
Sourced from `src/kernel/chainparams.cpp` `CMainParams` in
|
|||
|
|
[DigiByte-Core/digibyte](https://github.com/DigiByte-Core/digibyte).
|
|||
|
|
|
|||
|
|
| | Mainnet | Testnet |
|
|||
|
|
|---|---|---|
|
|||
|
|
| bech32 HRP | `dgb` | `dgbt` |
|
|||
|
|
| pubKeyHash | `0x1e` → `D…` | `0x7e` |
|
|||
|
|
| scriptHash | `0x3f` → `S…` | `0x8c` |
|
|||
|
|
| WIF | `0x80` | `0xef` |
|
|||
|
|
| xpub / xprv | `0x0488b21e` / `0x0488ade4` | `0x043587cf` / `0x04358394` |
|
|||
|
|
| SLIP-0044 coin type | **20** | 1 (all testnets) |
|
|||
|
|
|
|||
|
|
## Layout
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
src/
|
|||
|
|
network.ts — DGB mainnet + testnet params, P2P constants
|
|||
|
|
seed.ts — BIP39: generate, validate, mnemonic → seed
|
|||
|
|
hd.ts — BIP32: root, account, address nodes
|
|||
|
|
address.ts — P2PKH, P2SH-P2WPKH, P2WPKH, P2TR encoders
|
|||
|
|
wif.ts — WIF import/export with version-byte validation
|
|||
|
|
descriptor.ts — derivation-path strings, xpub/xprv export
|
|||
|
|
index.ts — re-exports
|
|||
|
|
|
|||
|
|
scripts/
|
|||
|
|
derive-from-seed.ts — generate wallet, show 3 addresses per path
|
|||
|
|
recover-from-seed.ts — scan 5 accounts × 20 addresses per path
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## Roadmap
|
|||
|
|
|
|||
|
|
- **`@dgb-wallet/p2p`** — DGB P2P client with BIP157/158 compact block filters
|
|||
|
|
- **`@dgb-wallet/rpc`** — thin adapter for a local pruned Core (broadcast bastion)
|
|||
|
|
- **`@dgb-wallet/blockbook`** — opt-in convenience-mode backend
|
|||
|
|
- **`@dgb-wallet/psbt`** — transaction construction / signing on top of `core`
|