Let's say a simple Ethereum blockchain consists of ten blocks which is distributed across 10 network nodes. Now, for whatever reason, an error has occurred which has enabled all nodes to agree that the blockchain is correct, even though block five is missing from each node's version of the blockchain.

My question is, how does the blockchain resolve this hypothetical situation? I know that node consensus would resolve the issues due to the existence of multiple versions of the blockchain, but this situation is different. In this scenario, we know that block five is missing from all versions of the blockchain, and therefore, we cannot trust that the transactional information in blocks six to ten is valid.

Perhaps if we consider a blockchain that operates purely within digital domains, then the blockchain could revert to its transactional status at block four. This hopefully returns digital currency back to the appropriate wallets — seems logical — yet it still has the potential for users to relinquished of digital currency that they have rightfully exchanged. Futhermore, if we use a blockchain as a mechanism to transfer physical assets, for example an asset management system, then reverting to a previous state is less practical — physically returning all assets to the original owner outlined in blocks one to four may be extremely resource consuming, not financially viable, and how can we trust that it will actually happen?

Will some transactions just be lost? Will the blockchain only be valid from block six? Will it require the creation of an entirely new blockchain? If this situation occurred, I cannot see how it can be fully rectified and trust in the system maintained?

I ask this question programming perspective: I'm currently using C++ to model a blockchain. However, please note, I'm not questioning how could a blockchain accidentally distribute an invalid blockchain to all network nodes — hashing and mining principles wouldn't allow this situation. I'm asking what would be the resolution should that scenario hypothetically occur.


I think reverting back to block 4 won't be a disaster, since it would be just 1 min back in time (there's a block every 10 secs right?)

I mean prices won't change that much, & assets like Flashloans in the oracle sense (although yes this is not just one oracle) all can be reversed back

I think if they truly applied optimistic scalability solutions like verifying only a carefully selected sample this would be a possible scenario, and they sure would have cautionary steps for it (connected to the time limit to complain or report a wrong TX/block) min46 if I noted it right of this talk https://www.joincolossus.com/episodes/14242194/drake-ethereum-into-the-ether?tab=blocks

  • Good shout with regard to the podcast; I'll be having a listen later, thank you. I agree that a block created within 40 seconds of the genesis block would cause too much of an issue, other than trust in the framework. I accept my question was flawed in regard to the length of the blockchain and the missing block. Therefore, what would be your thoughts if this situation occurred after ten days — roughly 864,000 blocks would have been created — and the error was spotted at block 1,000,000? In this situation the blockchain has the potential to have processed many more transactions. Jun 23 at 10:57

I believe the answer is as explained by Dr Gavin Wood in his paper ETHEREUM: A SECURE DECENTRALISED GENERALISED TRANSACTION LEDGER

"The world state is a mapping between addresses (160-bit identifiers) and account states (a data structure serialised as RLP, see Appendix B). Though not stored on the blockchain, it is assumed that the implementation will maintain this mapping in a modified Merkle Patricia tree (trie, see Appendix D). The trie requires a simple database back end that maintains a mapping of byte arrays to byte arrays; we name this underlying database the state database. This has a number of benefits; firstly the root node of this structure is cryptographically dependent on all internal data and as such its hash can be used as a secure identity for the entire system state. Secondly, being an immutable data structure, it allows any previous state (whose root hash is known) to be recalled by simply altering the root hash accordingly. Since we store all such root hashes in the blockchain, we are able to trivially revert to old states."

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.