The service above provides the following illustration of what it’s doing
Paths Scanned:
m/0-19+
m/0-50/0-19+
m/0/0-20/0-19+
m/0/0-10/0-10/0-19
Does every watch-only service out there go through a similar procedure?
That's only necessary if you need to extensively search rarely used derivation paths.
Because if it's just the standard paths, you'll only need these three which will only scan 60 addresses (
plus more if gap limit is increased, "0-19+" = 20gap limit):
m/0-19+
m/0/0-19+
m/1/0-19+
For more info: in most wallets, the structure of derivation path looks like this (
from master prvKey derived from the seed):
m/purpose'/coin'/account'/chain (internal or external)/address indexIn some wallets that use BIP32 standard,
differs but usually:
m/account'/chain/address indexThe xpub that the users usually get from their wallet is at the "
account" level, so to derive the addresses from their xpub.
you only have to scan the paths (
from xpub):
m/external/address index [m/0/0-19+] (
receiving addresses) and
m/internal/address index [m/1/0-19+] (
change addresses)
So that's basically the options: "Typical Receiving Addresses (m/0)" and "Typical Change Addresses (m/1)" in your example tool.
Some wallets have xpub at the "
chain" level or the addresses are derived from the master pubKey pair of the master prvKey, so the path from the xpub should be:
m/address index [m/0-19+]Same as the option: "Root Addresses (m/)" in your example tool.
TL;DR: My suggestion is if you do not want to scan through the rarely used paths, go for the standard paths which should be a lot faster, but include an "
advanced option" to manually set a derivation path so that users can manually set the path for their "
rare wallet".