What will happen if a client does not update to the newest version after a hard fork?

Hi everyone

A hard fork will generate two chains, one old, one new. The new client can involve in the new chain, while the old client can only involve in the old chain. I am not sure whether my understanding is correct.

My question is if an old client sends some ethers to another old client after a hard fork, then both the sender and receiver update to the new client, whether the transaction will be reflected in their accounts?

Thanks!

Comments

  • o0ragman0oo0ragman0o Posts: 1,251Member, Moderator mod
    @chenting A hard fork is determined by the node (client) validating the transactions according to some new rule.
    The old clients will know no different and continue on their merry way which is why we still have 'Ethereum Classic'.

    The upgraded clients (e.g. post DAO attack HF ) are aware of the new rules and also go merrily on their way also on the child chain, though may be configured to ignore it in preference for the old chain.

    It's a misunderstanding to think of a 'client sending to a client'. Ether is sent to an address and a client sees the TX's on the blockchain and updates it's own state accordingly.

    In your question both clients are old (not fork aware) so they will both see the same TX's pre and post HF.

    If the TX was sent before the HF, then the TX exists on both chains after the HF, though the clients only see the old chain.

    If one client updates and the other does not, they cannot see each other's post HF TX's, i.e cannot interact across the chain. So the state they see (balances etc) becomes increasingly different over time for the same addresses.



  • chentingchenting Posts: 7Member
    @o0ragman0o, Thanks for your answer. I am still a little bit confused.
    You say, "If one client updates and the other does not, they cannot see each other's post HF TX's, i.e cannot interact across the chain. So the state they see (balances etc) becomes increasingly different over time for the same addresses."

    Do you mean, the sender thought he has sent some ethers to the receiver, and the sender's account changes, but the receiver (using new client) cannot receive the ethers, so its balance does not change? Once the receiver changes back to old client, its balance will be influenced by that transaction. Am I misunderstanding?

  • o0ragman0oo0ragman0o Posts: 1,251Member, Moderator mod
    That's correct. The address spaces are still the same and the private keys can still unlock accounts on both chain. It's just that an old client has one version of events, while the new client has another.
  • chentingchenting Posts: 7Member
    @o0ragman0o Do you mean, the two chains are isolated after fork, so the transaction produced by an old client cannot propagate to the new chain, and vice versa?
  • o0ragman0oo0ragman0o Posts: 1,251Member, Moderator mod
    @chenting not they cannot. However their is the opportunity for a 'replay attack' on those same addresses.
  • chentingchenting Posts: 7Member
    @o0ragman0o Thank you so much. Please consider the following situation. An old client calls a smart contract (deployed before fork), the transaction can be found on old chain since it sent from an old client. The smart contract is not invoked for the new clients because the transaction sent by old client cannot be seen by new clients. Am I misunderstanding?
  • o0ragman0oo0ragman0o Posts: 1,251Member, Moderator mod
    That's correct. You can consider it a mathematically 'orthogonal' process in which a fork branches off perpendicular to the parent. They can never interact from then on as both chain heads become increasingly distant from each other in the space of possible state mutating operations.
Sign In or Register to comment.