Some wallets scan each transaction, different wallets use totally different mechanisms to study funds. Bitcoin is a peer-to-peer gossip community. Nodes on the Bitcoin community announce new blocks instantly to all their friends, so in case your pockets software program interacts with the Bitcoin community, it should know to scan for updates every time a brand new block is introduced. Pockets software program that doesn’t immediately take part within the Bitcoin community frequently polls a server to request updates or may register for push notification, however often doesn’t course of the whole blockchain itself. In case your pockets is barely on-line intermittently, it should study concerning the transactions as quickly because it comes on-line and catches as much as the chaintip.
- Full node
When you run a full node, it should study new blocks from peer bulletins and course of the blocks itself. The Bitcoin Core pockets will scan every transaction because it enters the mempool and scan each transaction on every block because it is available in. It would determine any transactions that include recognized output scripts, and any transactions that spend any of its personal UTXOs. - Mild shopper
When you run a lightweight shopper (that doesn’t preserve a full copy of the blockchain), it might use bloom filters, the Electrum protocol, or compact block filters to study funds. Each time a brand new block is introduced on the community, the sunshine shopper makes an attempt to study new confirmed transactions that pay it. Some mechanisms additionally let it study unconfirmed transactions paying it.- Compact block filters
Since about 2020, many full nodes supply compact block filters (BIP 157, BIP 158). You may consider them as a register for wanting up “addresses” in blocks. Some mild purchasers obtain this compact block filter every time a brand new block is discovered, after which client-side examine whether or not any of their output scripts or UTXOs produce hits on the filter. In the event that they get successful, they obtain the entire block and parse every transaction to seek out those related to them. This has fairly respectable privateness, because the pockets may even obtain the compact block filter and the block from totally different friends, in order that the friends really study subsequent to nothing about what the pockets was . It trades this privateness off with a better bandwidth utilization and extra implementation work, because the node really wants to have the ability to parse blocks and implement BIP 157 and BIP 158. Additionally, the compact block filter protocol can’t inform about unconfirmed transactions, so a lightweight shopper that solely will depend on it should solely study transactions as soon as they’re confirmed. - Bloom filters
Transaction bloom filtering was launched by BIP 37 in 2012. The shopper would craft a bloom filter from its addresses, hand this filter to the server, the server would scan its mempool and up to date blocks with the filter and return any transactions that produced successful. The bloom filter had a configurable false-positive charge, which was supposed to offer some believable deniability. This scheme has since fallen out of use, because it had a number of points. Firstly, the false constructive charge needed to be set so excessive to truly obtain any privateness, that it will have dramatically elevated bandwidth use. Due to this fact most wallets set the false constructive charge low and primarily leaked their whole handle listing to any peer they requested the bloom filter service from. Secondly, the nodes providing this service would want to run a separate filter for every shopper which may trigger a number of computation, particularly on a rescan of an outdated pockets. Providing the bloom filter community service opened a node as much as a number of DOS vectors. Bitcoin Core 0.19 disabled this service by default. - Electrum protocol
Most mild purchasers use the Electrum protocol. The sunshine shopper connects to a pre-defined or random Electrum server on the community and tells the server precisely what output scripts it’s concerned with. The server checks whether or not it has any hits in its database and serves the corresponding information. That is easy to implement and makes use of minimal bandwidth, however the mild shopper leaks its whole physique of addresses to the Electrum server together with even addresses that by no means acquired paid.
- Compact block filters
- Account with custodian
When you have an account with a custodian, your “pockets” software program
connects to the service supplier’s backend to search for its account info. The service supplier pushes notifications when a brand new cost is noticed or a cost is confirmed.