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.

Reply to this note

Please Login to reply.

Discussion

Right, but I could just create the wallet, the receive address give it to somebody and get a message the the software is syncing and until then it cannot fully verify the transaction, right?

yup, bitcoin core alerts you of 0 conf transactions

Not if it's still syncing right? That's my beef.

It doesn’t let you generate addresses ? Yeah there’s no technical reason why it couldn’t. It’s just bip32 which is completely independent from anything onchain/syncing.

It’s really hard to make changes to core since theres a lot of cruft and everyone is overly cautious of merging stuff. So it may not have the optimal wallet experience.

It’s great for coinselection and working with watchonly wallets with hardware wallet descriptors though once it’s synced. This is the *ideal* way to use core imo, but more advanced.

You don’t want keys on your computer, it’s best to just let core be a way to generate addresses from your hardware wallets and check balances.