Its an event sourced database. The state it’s trying to reconstruct is the state of all of the balances for every unspent transaction output (utxo). This state is called the utxo set.
For your node to know if a payment to you is valid, it needs to be able to verify if an output paying you *actually* has that much bitcoin.
The only way to get to a valid view of the utxo set in a completely untrusted way is to download every block and build up this state by verifying every transaction that has ever happened.