-
Notifications
You must be signed in to change notification settings - Fork 35
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add ability for MPW to run explorer-less #427
base: master
Are you sure you want to change the base?
Changes from 1 commit
5e00057
734fe8f
4687cf0
a607539
cfb691d
b7c526b
5f6e35f
5803780
26aa132
6b4faf8
845555c
4711083
18ecfac
11bcdbd
a266dbd
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change | ||||||
---|---|---|---|---|---|---|---|---|
|
@@ -701,7 +701,29 @@ export class Wallet { | |||||||
// This is just to be sure since blockbook (as we know) | ||||||||
// usually does not return txs of the actual last block. | ||||||||
this.#lastProcessedBlock = blockCount - 5; | ||||||||
await this.#transparentSync(); | ||||||||
// Transparent sync is inherently less stable than Shield since it requires heavy | ||||||||
// explorer indexing, so we'll attempt once asynchronously, and if it fails, set a | ||||||||
// recurring "background" sync interval until it's finally successful. | ||||||||
try { | ||||||||
await this.#transparentSync(); | ||||||||
} catch { | ||||||||
// We'll set a 5s interval sync until it's finally successful, then nuke the 'thread'. | ||||||||
const cThread = new AsyncInterval(async () => { | ||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. You cannot use There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. The issue with blocking it is Shield then becomes unusable unless Transparent syncs (right now, Shield can be used even if Transparent is unable). There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Ideally we would split the state so that we have |
||||||||
try { | ||||||||
await this.#transparentSync(true); | ||||||||
cThread.clearInterval(); | ||||||||
} catch { | ||||||||
// Emit a transparent sync warning | ||||||||
getEventEmitter().emit( | ||||||||
'transparent-sync-status-update', | ||||||||
0, | ||||||||
0, | ||||||||
false, | ||||||||
'Explorers are unreachable, your wallet may not be fully synced!' | ||||||||
); | ||||||||
} | ||||||||
}, 5000); | ||||||||
} | ||||||||
if (this.hasShield()) { | ||||||||
await this.#syncShield(); | ||||||||
} | ||||||||
|
@@ -712,8 +734,12 @@ export class Wallet { | |||||||
getEventEmitter().emit('new-tx'); | ||||||||
}); | ||||||||
|
||||||||
async #transparentSync() { | ||||||||
if (!this.isLoaded() || this.#isSynced) return; | ||||||||
/** | ||||||||
* Synchronise UTXOs via xpub/address from the current explorer. | ||||||||
* @param {boolean} [force=false] - Force transparent sync, regardless of state | ||||||||
*/ | ||||||||
async #transparentSync(force = false) { | ||||||||
if ((!this.isLoaded() || this.#isSynced) && !force) return; | ||||||||
Comment on lines
+740
to
+741
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Move the loadedCheck and synced in the sync function, so we can remove the force param.
Suggested change
It's only going to be called by sync anyways |
||||||||
const cNet = getNetwork(); | ||||||||
const addr = this.getKeyToExport(); | ||||||||
let nStartHeight = Math.max( | ||||||||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Can you call this error/warning?