When you make a payment, other people on the network need to verify that the payment is valid.
Normally, this is done by running a full network node, which stores all of the transactions that have ever happened on the network.
However, it’s possible to verify payments without doing this.
Instead, you can just keep a copy of the block headers from the longest chain of transactions that have been verified by the network.
These block headers contain a summary of all the transactions that have happened in each block, but not the full details of each individual transaction.
To check that a payment is valid, you can use the block headers to find the block where the payment was made, and then use a special link called a Merkle branch to connect the payment to that block.
By doing this, you can see that the network has accepted the payment and that it’s now part of the longest chain of verified transactions.
This method of verification is reliable as long as most of the nodes on the network are honest and follow the rules.
However, if an attacker gains enough control over the network, they could potentially create fake transactions and trick you into accepting them as valid.
To protect against this, some businesses may choose to run their own nodes on the network for extra security and faster verification.
They may also choose to accept alerts from other nodes on the network if they detect any invalid transactions or blocks.