2

I'm reading about scaling in the whitepaper

In the near term, Ethereum will use two additional strategies to cope with this problem. First, because of the blockchain-based mining algorithms, at least every miner will be forced to be a full node, creating a lower bound on the number of full nodes. Second and more importantly, however, we will include an intermediate state tree root in the blockchain after processing each transaction. Even if block validation is centralized, as long as one honest verifying node exists, the centralization problem can be circumvented via a verification protocol. If a miner publishes an invalid block, that block must either be badly formatted, or the state S[n] is incorrect. Since S[0] is known to be correct, there must be some first state S[i] that is incorrect where S[i-1] is correct. The verifying node would provide the index i, along with a "proof of invalidity" consisting of the subset of Patricia tree nodes needing to process APPLY(S[i-1],TX[i]) -> S[i]. Nodes would be able to use those nodes to run that part of the computation, and see that the S[i] generated does not match the S[i] provided.

Lets say there is only one honest node, and that node could provide proof of invalidity.

Nodes would be able to use those nodes to run that part of the computation, and see that the S[i] generated does not match the S[i] provided.

If there is no other honest nodes, why would they accept that S[i] generated does not match the S[i] provided? Wouldn't they just discard that proof?

EDIT Problem that's being addressed here in the whitepaper,

The problem with such a large blockchain size is centralization risk. If the blockchain size increases to, say, 100 TB, then the likely scenario would be that only a very small number of large businesses would run full nodes, with all regular users using light SPV nodes. In such a situation, there arises the potential concern that the full nodes could band together and all agree to cheat in some profitable fashion (eg. change the block reward, give themselves BTC). Light nodes would have no way of detecting this immediately. Of course, at least one honest full node would likely exist, and after a few hours information about the fraud would trickle out through channels like Reddit, but at that point it would be too late: it would be up to the ordinary users to organize an effort to blacklist the given blocks, a massive and likely infeasible coordination problem on a similar scale as that of pulling off a successful 51% attack. In the case of Bitcoin, this is currently a problem, but there exists a blockchain modification suggested by Peter Todd which will alleviate this issue.

1

The context of the problem is about a time when it's hard to run a full node due to the immense size of the blockchain data and only few organizations will be able to have full nodes.

As I understand, If at least one honest full node exists it will provide a proof of invalidity to other nodes (everyone including light nodes) can verify it. So if other nodes find that block is invalid they will discard that invalid block.

If there is no other honest nodes, why would they accept that S[i] generated does not match the S[i] provided? Wouldn't they just discard that proof?

What I feel is no other honest node refer to no other honest full node (may be that's what you have gotten mistakenly). But there are light nodes who will use the proof of invalidity and reject the invalid blocks.
(if what it means by no other honest node is every node including light nodes, there's no point of trying to give a proof of invalidity and it's not the problem context stated in the white paper. )

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.