Earlier quoted context omitted.
My understanding that a full sync in Bitcoin means something different than a full sync on Ethereum. Bitcoin's database is modeled on UTXO ( https://en.m.wikipedia.org/wiki/Unspent_transaction_output ) therefore all clients need to validate all transactions from genesis to calculate final balances. Meanwhile, Ethereum is account based and state is global, and to determine the balances you only need to check the merkl…
You say “check merkle proof”, how do you know what it’s supposed to be? Trust somebody gives you the right hash? There is no difference between BTC’s UTXO model and Ethereum’s account model in this sense - both are aggregate structures and to have full certainty the aggregate you’re looking at is correct you have to run through all the transactions. To speedup sync in BTC it is assumed that blocks older than some amo…
The information is in the block headers.
> In ETH instead it is common to just download the result and trust it’s valid
Nope. You still have to download all the block headers from block 0 and check if they are valid, including the PoW and other hashes.. The blocks are basically tamper proof as in Bitcoin (but can also be vulnerable to a 51% attack)
Then that's where it all diverges from Bitcoin: in Ethereum, there are three merkle trees: one for the state, one for transactions and one for the transaction results (receipts). The roots of these trees are in the blocks, once you have these, you can verify a particular value of, say, a state value, without the need to verify each and every other value, by walking through the tree and doing a merkle proof. There's plenty of info on the web explaining how it works if you look it up, eg. Search for "ethereum state trie"
As for syncing, recently it improved a lot. I did it a few times last month with Geth on an old machine just to test it out. Synced within 2 days, a big improvement over the previous versions of Geth. And yes, it got all the blocks from 0 to current. Blocks by themselves are very light.