Fix: addresses being derived from change branch instead of receive

This commit is contained in:
Matthew Zipkin 2022-03-14 13:17:50 -04:00
parent 50db541857
commit 05ca2c2c55
No known key found for this signature in database
GPG Key ID: E7E2984B6289C93A
2 changed files with 26 additions and 4 deletions

View File

@ -33,18 +33,29 @@ if (xpub === 'xpub6DBMpym6PM3qe7Ug7BwG6zo7dinMMjpk8nmb73czsjkzPTzfQ1d5ZvqDea4uNm
throw new Error('Example xpub must not be used! Repalce with your own account xpub.'); throw new Error('Example xpub must not be used! Repalce with your own account xpub.');
const acct = HDPublicKey.fromBase58(xpub); const acct = HDPublicKey.fromBase58(xpub);
// For some reason when bpkg'ed with -browser modules, we need to call
// this once as a throwaway before actually using it.
// The first function call FAILS because entropy can not be found to
// "pregenerate a random blinding value" as part of the ECDSA precomputation.
// For whatever reason, the function call succeeds from here on.
// This is either a bug in bcrypto or bpkg, exposing an inconguity
// with the -browser module.
// See https://github.com/handshake-org/hsd/issues/700
acct.derive(0);
const recv = acct.derive(0); const recv = acct.derive(0);
function addr() { function addr() {
const indexFile = path.join(__dirname, '..', 'log', 'hip2-index'); const indexFile = path.join(__dirname, '..', 'log', 'hip2-index');
let index = 0; let index = 0;
try { try {
index = parseInt(fs.readFileSync(indexFile)); index = parseInt(fs.readFileSync(indexFile, 'utf-8'));
} catch (e) { } catch (e) {
; ;
} }
fs.writeFileSync(indexFile, index + 1); fs.writeFileSync(indexFile, String(index + 1), 'utf-8');
// Wow, used all our non-hardened addresses! // Wow, used all our non-hardened addresses!
// Don't roll over the saved index (that way the user knows this has happened) // Don't roll over the saved index (that way the user knows this has happened)

View File

@ -25,18 +25,29 @@ if (xpub === 'xpub6DBMpym6PM3qe7Ug7BwG6zo7dinMMjpk8nmb73czsjkzPTzfQ1d5ZvqDea4uNm
throw new Error('Example xpub must not be used! Repalce with your own account xpub.'); throw new Error('Example xpub must not be used! Repalce with your own account xpub.');
const acct = HDPublicKey.fromBase58(xpub); const acct = HDPublicKey.fromBase58(xpub);
// For some reason when bpkg'ed with -browser modules, we need to call
// this once as a throwaway before actually using it.
// The first function call FAILS because entropy can not be found to
// "pregenerate a random blinding value" as part of the ECDSA precomputation.
// For whatever reason, the function call succeeds from here on.
// This is either a bug in bcrypto or bpkg, exposing an inconguity
// with the -browser module.
// See https://github.com/handshake-org/hsd/issues/700
acct.derive(0);
const recv = acct.derive(0); const recv = acct.derive(0);
function addr() { function addr() {
const indexFile = path.join(__dirname, '..', 'log', 'hip2-index'); const indexFile = path.join(__dirname, '..', 'log', 'hip2-index');
let index = 0; let index = 0;
try { try {
index = parseInt(fs.readFileSync(indexFile)); index = parseInt(fs.readFileSync(indexFile, 'utf-8'));
} catch (e) { } catch (e) {
; ;
} }
fs.writeFileSync(indexFile, index + 1); fs.writeFileSync(indexFile, String(index + 1), 'utf-8');
// Wow, used all our non-hardened addresses! // Wow, used all our non-hardened addresses!
// Don't roll over the saved index (that way the user knows this has happened) // Don't roll over the saved index (that way the user knows this has happened)