I created a wallet on a SPV node. The wallet is initialized from a mnemonic. After receiving some transactions, the wallet's balance looks like:
{ account: -1, tx: 3, coin: 3, unconfirmed: 136300, confirmed: 0 }
But when I re-initialize the wallet, it looks so:
{ account: -1, tx: 0, coin: 0, unconfirmed: 0, confirmed: 0 }
On the each initialization the wallet have the same address.
Here is my code:
const bcoin = require('bcoin');
bcoin.set('testnet');
const KeyRing = bcoin.keyring;
const Mnemonic = bcoin.hd.Mnemonic;
const HD = bcoin.hd;
const node = new bcoin.node.SPVNode({
config: true,
argv: true,
env: true,
logFile: true,
logConsole: true,
logLevel: 'debug',
db: 'leveldb',
memory: false,
persistent: true,
workers: true,
listen: true,
loader: require,
network: 'testnet'
});
// Temporary hack
if (!node.has('walletdb')) {
const plugin = require('./node_modules/bcoin/lib/wallet/plugin');
node.use(plugin);
}
process.on('unhandledRejection', (err, promise) => {
throw err;
});
const walletdb = new bcoin.wallet.WalletDB({ memory: false, network: 'testnet', prefix: '/Users/alestsurko/.bcoin/spvchain' });
(async () => {
await node.ensure();
await node.open();
await node.connect();
await walletdb.open();
const mnemonic = new Mnemonic('uncover cash coral neglect upon nurse argue deal right song hood tennis');
const masterKey = HD.fromMnemonic(mnemonic);
const wallet = await walletdb.create({master: masterKey});
console.log('Created wallet with address %s', await wallet.receiveAddress());
const bl = await wallet.getBalance();
console.log(bl.toJSON());
// Add our address to the spv filter.
node.pool.watchAddress(await wallet.receiveAddress());
node.startSync();
node.on('error', async (err) => {
console.log(err);
});
node.pool.on('tx', async (tx) => {
console.log('------ New tx. Adding to walletdb...');
console.log(tx);
await walletdb.addTX(tx);
});
wallet.on('balance', async (balance) => {
console.log('Balance updated.');
console.log(balance.toJSON());
});
})().catch((err) => {
console.error(err.stack);
process.exit(1);
});