Aegis now shares its DGB code with the standalone DigiByte web-wallet at
D:\Dev\SilentCode\Digibyte. Address derivation and PSBT construction come
from that project's @dgb-wallet/core and @dgb-wallet/psbt packages instead
of Aegis-local reimplementations. Any bugfix upstream flows in via a
re-vendor of dist/*.
- lib/dgb/{core,psbt}/ — vendored dist/ output of the two packages plus
a tiny package.json shim marking them as ESM. @dgb-wallet/core's own
import specifier "@dgb-wallet/core" inside psbt/*.js is rewritten to
"../core/index.js" so the sibling module resolves without a workspace.
- New Theseus deps: bitcoinjs-lib, bip32, bip39, @bitcoinerlab/secp256k1,
ecpair — the peer deps the vendored packages need. Loaded via
api.require in index.js's loadDeps().
- chain-dgb.js is a thin adapter now: BIP32 tree via bip32 + DGB
Network object, addresses via core.p2wpkhAddress, tx via
psbt.buildPsbt + PSBT.signInput (per-input, since each UTXO's key
differs) + psbt.finalizeAndExtract. Runtime backend stays the same —
Theseus's lib/electrum.js against the DGB ElectrumX pool.
- Verified end-to-end in scratchpad: abandon×11 mnemonic derives
dgb1q9gmf0pv8jdymcly6lz6fl7lf6mhslsd72e2jq8 (matches iancoleman.io/bip39
and the previous inline implementation, so no on-chain address change
for anyone who was already using Aegis's DGB slot). PSBT build+sign+
finalize on a mock UTXO produces a valid 223-byte witness tx.
BIP44 (D…) and BIP49 (S…) address families are implemented in the
vendored core but not yet exposed in Aegis's picker — the panel needs
an "address family" selector inside the DGB settings block first. Left
for a follow-up; today's DGB pick uses BIP84 native SegWit only.
24 lines
No EOL
952 B
JavaScript
24 lines
No EOL
952 B
JavaScript
import { BIP32Factory } from 'bip32';
|
|
import * as ecc from '@bitcoinerlab/secp256k1';
|
|
import { digibyte, DGB_COIN_TYPE } from './network.js';
|
|
const bip32 = BIP32Factory(ecc);
|
|
export const PURPOSE_LABEL = {
|
|
44: 'BIP44 legacy P2PKH',
|
|
49: 'BIP49 P2SH-wrapped SegWit',
|
|
84: 'BIP84 native SegWit v0',
|
|
86: 'BIP86 Taproot (SegWit v1)',
|
|
};
|
|
export function rootFromSeed(seed, network = digibyte) {
|
|
return bip32.fromSeed(seed, network);
|
|
}
|
|
// Standard account-level derivation: m/purpose'/coin'/account'.
|
|
// account defaults to 0 (the first account).
|
|
export function accountNode(root, purpose, account = 0) {
|
|
return root.derivePath(`m/${purpose}'/${DGB_COIN_TYPE}'/${account}'`);
|
|
}
|
|
// Address-level derivation from an account node.
|
|
// change = 0 for external (receive) addresses, 1 for internal (change).
|
|
export function addressNode(account, change, index) {
|
|
return account.derive(change).derive(index);
|
|
}
|
|
//# sourceMappingURL=hd.js.map
|