Trying to reinforce my understanding, so hoping you guys may help me out.
From reading the Ethereum wiki, I believe part of an Ethereum block header consist of the following:
stateRoot
transactionRoot
receiptsRoot
Which are the keccak hashes of the root node of the tries themselves.
My questions would be as follows......
Q1 - Where does geth stores these tries - I reckon within the block themselves, i.e. chaindata folder, within the ldb files? Or am I entirely off-base?
Q2 - (I am assuming the state trie is indeed kept in each block) Does the state trie of block N references the state trie of block N-1 (if no changes to an account's state is found, i.e. only log accounts with differences), or is the state trie duplicated across blocks?
Q3 - While state tree pruning, I reckon that the states are pruned off since if we have the stateRoot, this effectively verifies that the state trie nodes are OK, hence safe to discard the state trie themselves - Would this understanding be correct from high level perspective?
Q4 - What would the .\ethereum\nodes folder be for?
Thanks!