sorry for the dumb question, but i'm wondering how different Ethereum clients, like for example Trinity, Geth, or Parity, written in different languages, communicates over the network. I did not found a specific answer for that question.

  • 1
    They all use the same communication protocol. Jan 5 '20 at 17:16

Ethereum is a protocol specification, not an implementation.

There are, of course, discrete elements of the protocol such as node discovery, transaction propagation and consensus about transaction blocks, and more - each is handled in its own fashion. It would be over-simplifying to say there is only one simple process going on.

Most aspects of the protocol contain error-detection/validation - e.g. valid transaction payloads, valid signatures and valid blocks. Blocks, in particular, contain a proof-of-work that is verifiable by others and enforces the distributed consensus rules of the protocol which themselves enforce economic incentives that underpin certain assurances.

The world state, i.e. the ledger balances of all accounts and the data contents of all contracts are defined as a logical data structure which itself contains error-detection elements (e.g. state-root in each block).

The specification is silent on the implementation details of any client/node that wants to implement the protocol. Any language is acceptable and clients are free to organize physical storage any way they like to optimize for performance or other considerations. What matters is that they support the protocol and other nodes can see that they do it without erring on any computation the protocol calls for.

It's more like TCP/IP (protocol) than your OS's drivers (implementation). Anything can use it if it follows protocol. The network ignores participants that don't follow protocol.

It is a stateful protocol, which is to say that data persists ("immutable") and is discoverable by any node that understands the protocol and syncs up.

Unlike a stateless protocol (TCP/IP, SMTP, HTTP) there doesn't need to be someone on the other end for a participant to receive data. A stateful protocol contains and persists the data. The nodes don't rely on each other for state information. They perform their own computations on the transactions they find in the blockchain (sort of like a replay log) and they construct the state for themselves.

If you want to dig in:

Hope it helps.

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.