migrate: add logs for wallet migration.
This commit is contained in:
parent
86dc53f9dd
commit
d896e221c0
@ -66,8 +66,12 @@ async function updateState() {
|
|||||||
if (!raw)
|
if (!raw)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (raw.length === 40)
|
console.log('Updating state...');
|
||||||
|
|
||||||
|
if (raw.length === 40) {
|
||||||
batch.put(layout.R, c(raw, Buffer.from([1])));
|
batch.put(layout.R, c(raw, Buffer.from([1])));
|
||||||
|
console.log('State updated.');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
async function updateBlockMap() {
|
async function updateBlockMap() {
|
||||||
@ -78,6 +82,10 @@ async function updateBlockMap() {
|
|||||||
values: true
|
values: true
|
||||||
});
|
});
|
||||||
|
|
||||||
|
console.log('Updating block map...');
|
||||||
|
|
||||||
|
let total = 0;
|
||||||
|
|
||||||
await iter.each((key, value) => {
|
await iter.each((key, value) => {
|
||||||
const height = layout.bb(key);
|
const height = layout.bb(key);
|
||||||
const block = BlockMapRecord.fromRaw(height, value);
|
const block = BlockMapRecord.fromRaw(height, value);
|
||||||
@ -92,7 +100,11 @@ async function updateBlockMap() {
|
|||||||
serializeMap(bw, map);
|
serializeMap(bw, map);
|
||||||
|
|
||||||
batch.put(key, bw.render());
|
batch.put(key, bw.render());
|
||||||
|
|
||||||
|
total += 1;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
console.log('Updated %d block maps.', total);
|
||||||
}
|
}
|
||||||
|
|
||||||
async function updateTXDB() {
|
async function updateTXDB() {
|
||||||
@ -103,6 +115,10 @@ async function updateTXDB() {
|
|||||||
parse: k => layout.ww(k)
|
parse: k => layout.ww(k)
|
||||||
});
|
});
|
||||||
|
|
||||||
|
console.log('Updating wallets...');
|
||||||
|
|
||||||
|
let total = 0;
|
||||||
|
|
||||||
for (const wid of wids) {
|
for (const wid of wids) {
|
||||||
await updateInputs(wid);
|
await updateInputs(wid);
|
||||||
await updateCoins(wid);
|
await updateCoins(wid);
|
||||||
@ -110,7 +126,10 @@ async function updateTXDB() {
|
|||||||
await updateWalletBalance(wid);
|
await updateWalletBalance(wid);
|
||||||
await updateAccountBalances(wid);
|
await updateAccountBalances(wid);
|
||||||
await updateWallet(wid);
|
await updateWallet(wid);
|
||||||
|
total += 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
console.log('Updated %d wallets.', total);
|
||||||
}
|
}
|
||||||
|
|
||||||
async function updateInputs(wid) {
|
async function updateInputs(wid) {
|
||||||
@ -122,6 +141,10 @@ async function updateInputs(wid) {
|
|||||||
keys: true
|
keys: true
|
||||||
});
|
});
|
||||||
|
|
||||||
|
console.log('Updating inputs for %d.', wid);
|
||||||
|
|
||||||
|
let total = 0;
|
||||||
|
|
||||||
await iter.each(async (k, value) => {
|
await iter.each(async (k, value) => {
|
||||||
const key = k.slice(pre.length);
|
const key = k.slice(pre.length);
|
||||||
const [height, hash] = tlayout.hh(key);
|
const [height, hash] = tlayout.hh(key);
|
||||||
@ -132,8 +155,11 @@ async function updateInputs(wid) {
|
|||||||
for (const {prevout} of tx.inputs) {
|
for (const {prevout} of tx.inputs) {
|
||||||
const {hash, index} = prevout;
|
const {hash, index} = prevout;
|
||||||
batch.del(c(pre, tlayout.s(hash, index)));
|
batch.del(c(pre, tlayout.s(hash, index)));
|
||||||
|
total += 1;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
console.log('Updated %d inputs for %d.', total, wid);
|
||||||
}
|
}
|
||||||
|
|
||||||
async function updateCoins(wid) {
|
async function updateCoins(wid) {
|
||||||
@ -146,15 +172,23 @@ async function updateCoins(wid) {
|
|||||||
values: true
|
values: true
|
||||||
});
|
});
|
||||||
|
|
||||||
|
console.log('Updating coins for %d...', wid);
|
||||||
|
|
||||||
|
let total = 0;
|
||||||
|
|
||||||
await iter.each((key, value) => {
|
await iter.each((key, value) => {
|
||||||
const br = bio.read(value, true);
|
const br = bio.read(value, true);
|
||||||
|
|
||||||
Coin.fromReader(br);
|
Coin.fromReader(br);
|
||||||
br.readU8();
|
br.readU8();
|
||||||
|
|
||||||
if (br.left() === 0)
|
if (br.left() === 0) {
|
||||||
batch.put(key, c(value, Buffer.from([0])));
|
batch.put(key, c(value, Buffer.from([0])));
|
||||||
|
total += 1;
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
console.log('Updated %d coins for %d.', total, wid);
|
||||||
}
|
}
|
||||||
|
|
||||||
async function updateTX(wid) {
|
async function updateTX(wid) {
|
||||||
@ -166,6 +200,10 @@ async function updateTX(wid) {
|
|||||||
keys: true
|
keys: true
|
||||||
});
|
});
|
||||||
|
|
||||||
|
console.log('Adding TX maps for %d...', wid);
|
||||||
|
|
||||||
|
let total = 0;
|
||||||
|
|
||||||
await iter.each(async (k, value) => {
|
await iter.each(async (k, value) => {
|
||||||
const key = k.slice(pre.length);
|
const key = k.slice(pre.length);
|
||||||
const hash = tlayout.pp(key);
|
const hash = tlayout.pp(key);
|
||||||
@ -185,7 +223,11 @@ async function updateTX(wid) {
|
|||||||
const bw = bio.write(sizeMap(map));
|
const bw = bio.write(sizeMap(map));
|
||||||
serializeMap(bw, map);
|
serializeMap(bw, map);
|
||||||
batch.put(layout.T(hash), bw.render());
|
batch.put(layout.T(hash), bw.render());
|
||||||
|
|
||||||
|
total += 1;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
console.log('Added %d TX maps for %d.', total, wid);
|
||||||
}
|
}
|
||||||
|
|
||||||
async function updateWalletBalance(wid) {
|
async function updateWalletBalance(wid) {
|
||||||
@ -207,6 +249,8 @@ async function updateWalletBalance(wid) {
|
|||||||
values: true
|
values: true
|
||||||
});
|
});
|
||||||
|
|
||||||
|
console.log('Updating wallet balance for %d.', wid);
|
||||||
|
|
||||||
await iter.each((key, value) => {
|
await iter.each((key, value) => {
|
||||||
const br = bio.read(value, true);
|
const br = bio.read(value, true);
|
||||||
const coin = Coin.fromReader(br);
|
const coin = Coin.fromReader(br);
|
||||||
@ -222,6 +266,8 @@ async function updateWalletBalance(wid) {
|
|||||||
});
|
});
|
||||||
|
|
||||||
batch.put(c(pre, tlayout.R), serializeBalance(bal));
|
batch.put(c(pre, tlayout.R), serializeBalance(bal));
|
||||||
|
|
||||||
|
console.log('Updated wallet balance for %d.', wid);
|
||||||
}
|
}
|
||||||
|
|
||||||
async function updateAccountBalances(wid) {
|
async function updateAccountBalances(wid) {
|
||||||
@ -238,8 +284,12 @@ async function updateAccountBalances(wid) {
|
|||||||
|
|
||||||
const depth = br.readU32();
|
const depth = br.readU32();
|
||||||
|
|
||||||
|
console.log('Updating account balances for %d...', wid);
|
||||||
|
|
||||||
for (let acct = 0; acct < depth; acct++)
|
for (let acct = 0; acct < depth; acct++)
|
||||||
await updateAccountBalance(wid, acct);
|
await updateAccountBalance(wid, acct);
|
||||||
|
|
||||||
|
console.log('Updated %d account balances for %d.', depth, wid);
|
||||||
}
|
}
|
||||||
|
|
||||||
async function updateAccountBalance(wid, acct) {
|
async function updateAccountBalance(wid, acct) {
|
||||||
@ -260,6 +310,8 @@ async function updateAccountBalance(wid, acct) {
|
|||||||
keys: true
|
keys: true
|
||||||
});
|
});
|
||||||
|
|
||||||
|
console.log('Updating account balance for %d/%d...', wid, acct);
|
||||||
|
|
||||||
await iter.each(async (k, value) => {
|
await iter.each(async (k, value) => {
|
||||||
const key = k.slice(pre.length);
|
const key = k.slice(pre.length);
|
||||||
const [, hash, index] = tlayout.Cc(key);
|
const [, hash, index] = tlayout.Cc(key);
|
||||||
@ -279,12 +331,16 @@ async function updateAccountBalance(wid, acct) {
|
|||||||
});
|
});
|
||||||
|
|
||||||
batch.put(c(pre, tlayout.r(acct)), serializeBalance(bal));
|
batch.put(c(pre, tlayout.r(acct)), serializeBalance(bal));
|
||||||
|
|
||||||
|
console.log('Updated account balance for %d/%d.', wid, acct);
|
||||||
}
|
}
|
||||||
|
|
||||||
async function updateWallet(wid) {
|
async function updateWallet(wid) {
|
||||||
const raw = await db.get(layout.w(wid));
|
const raw = await db.get(layout.w(wid));
|
||||||
assert(raw);
|
assert(raw);
|
||||||
|
|
||||||
|
console.log('Updating wallet: %d.', wid);
|
||||||
|
|
||||||
const br = bio.read(raw, true);
|
const br = bio.read(raw, true);
|
||||||
|
|
||||||
br.readU32(); // Skip network.
|
br.readU32(); // Skip network.
|
||||||
@ -360,14 +416,22 @@ async function updateWallet(wid) {
|
|||||||
|
|
||||||
batch.put(layout.w(wid), bw.render());
|
batch.put(layout.w(wid), bw.render());
|
||||||
|
|
||||||
|
console.log('Updating accounts for %d...', wid);
|
||||||
|
|
||||||
for (let acct = 0; acct < accountDepth; acct++)
|
for (let acct = 0; acct < accountDepth; acct++)
|
||||||
await updateAccount(wid, acct);
|
await updateAccount(wid, acct);
|
||||||
|
|
||||||
|
console.log('Updated %d accounts for %d.', accountDepth, wid);
|
||||||
|
|
||||||
|
console.log('Updated wallet: %d.', wid);
|
||||||
}
|
}
|
||||||
|
|
||||||
async function updateAccount(wid, acct) {
|
async function updateAccount(wid, acct) {
|
||||||
const raw = await db.get(layout.a(wid, acct));
|
const raw = await db.get(layout.a(wid, acct));
|
||||||
assert(raw);
|
assert(raw);
|
||||||
|
|
||||||
|
console.log('Updating account: %d/%d...', wid, acct);
|
||||||
|
|
||||||
const br = bio.read(raw, true);
|
const br = bio.read(raw, true);
|
||||||
|
|
||||||
const name = br.readVarString('ascii');
|
const name = br.readVarString('ascii');
|
||||||
@ -446,6 +510,8 @@ async function updateAccount(wid, acct) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
batch.put(layout.a(wid, acct), bw.render());
|
batch.put(layout.a(wid, acct), bw.render());
|
||||||
|
|
||||||
|
console.log('Updated account: %d/%d.', wid, acct);
|
||||||
}
|
}
|
||||||
|
|
||||||
async function updatePaths() {
|
async function updatePaths() {
|
||||||
@ -456,6 +522,10 @@ async function updatePaths() {
|
|||||||
values: true
|
values: true
|
||||||
});
|
});
|
||||||
|
|
||||||
|
console.log('Updating paths....');
|
||||||
|
|
||||||
|
let total = 0;
|
||||||
|
|
||||||
await iter.each((key, value) => {
|
await iter.each((key, value) => {
|
||||||
const br = bio.read(value, true);
|
const br = bio.read(value, true);
|
||||||
|
|
||||||
@ -527,7 +597,11 @@ async function updatePaths() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
batch.put(key, bw.render());
|
batch.put(key, bw.render());
|
||||||
|
|
||||||
|
total += 1;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
console.log('Updated %d paths.', total);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -742,4 +816,7 @@ function serializeBalance(bal) {
|
|||||||
})().then(() => {
|
})().then(() => {
|
||||||
console.log('Migration complete.');
|
console.log('Migration complete.');
|
||||||
process.exit(0);
|
process.exit(0);
|
||||||
|
}).catch((err) => {
|
||||||
|
console.error(err.stack);
|
||||||
|
process.exit(1);
|
||||||
});
|
});
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user