Bitcoin
How do Bitcoin wallets maintain address balances?

Do Bitcoin software wallets (not Bitcoin Core wallets) read the entire blockchain to collect balance information? Or do you read a UTXO set? Or is it some other data source? Should I read balance information every time I retrieve it, or simply read the last transaction posted to the blockchain?