Is there any way, other than
importaddress, to watch balances of specific addresses?
You can import a wallet that was exported in the
dumpwallet format using the
importwallet command. You can also import addresses using
importpubkey. But, in general, no, there is no way to watch balances of specific addresses in Bitcoin Core without using an
With Bitcoin Core 0.17, you can use the
scantxoutset command which will scan the UTXO set for the UTXOs pertaining to an output script (defined in various ways).
If not, how it is possible for wallets and explorers to give information (balance, transactions) about specific addresses even though importaddress takes some time? Because we have to rescan sooner or later.
Wallets keep track of this information themselves. They do so in the same way that the
import* command work.
import* commands are wallet commands to tell a wallet to keep track of certain output scripts. They keep track of these in the same way: scan incoming blocks and transactions for outputs that match what they are looking for.
Blockchain explorers do not use Bitcoin Core nor do they use the wallet for this sort of stuff. They maintain their own databases that store the information for all transactions and their outputs. They do so in a similar way to wallets, but instead of looking for specific output scripts, they just store all output scripts.