i have been reading about the ethereum project and its components, i understand that there are 3 major components (EVM, swarm, whisper) enter image description here

Swarm is a peer to peer data sharing network in which files are addressed by the hash of their content. ethdocs

Whisper - Decentralized messaging A protocol for private, secure communication directly between nodes. ethdocs

EVM is a stack-based interpreter, which has a memory byte array and key-value storage. ethereum smart contract development

But what i can't find anywhere is how do these components work together.

(i.e: when a smart contract is deployed to the ethereum network what is the contribution of each of these components to reach a successful deployment)

or if they're not involved in the deployment how are they useful during the run-time of the smart contract?

  • thank you for the response, i have read those posts and they motivate my question. what i am looking for is the sequence of events that happen in each component during the life time of the contract. my theory is : 1. the byte code is sent through whisper to the network 2. split into chunks and stored using swarm 3. the EVM performs the POW on a block including the byte code. is that correct? are there any more details on this process? the whisper wiki provides some use cases, but there's nothing on the swarm side – Mheni May 20 '18 at 13:31
  • "what i am looking for is the sequence of events that happen in each component during the life time of the contract"? It seems like you're confusing yourself, are you trying to understand the theory behind a scenario where all three components are being utilised in a decentralised application? because you don't need all three to execute smart contracts, just the EVM. – phant0m May 24 '18 at 1:21
  • if we only need the EVM, then what is the usefulness of swarm and whisper ? – Mheni May 24 '18 at 13:42
  • 2
    Those two are useful if you're building a DAPP which requires some sort of decentralised storage (IPFS/Swarm, etc. e.g. if you're building a DApp which is supposed to encrypt and store a lot of retrievable information decentralised, then you don't want to store it within the smart contract itself, only the hash of it) or decentralised messaging (Whisper and similar.) – phant0m May 29 '18 at 12:14

The three elements are largely independent from each other, with some restrictions:

  • You can run ethereum for smart contracts only (EVM) without using any whisper or swarm

  • You can send messages between ethereum nodes using whisper. All nodes will get the message, but only the recipient will be able to decrypt the message. You can't run whisper without ethereum.

  • You can run a dApp with smart contracts on ethereum and use swarm for storage, but you don't have to. You can run swarm without ethereum to store and retrieve data, but you would need ENS (Ethereum Name Service) if you want a naming service for your data (swarm assigns a unique hash for every piece of data uploaded, if you want a human-readable name you would need ENS). Also you would need ethereum if you want the accounting and incentives part of swarm active (currently not implemented)

How these components work together depends on the use case and the dApp, so it is largely a custom implementation.

Your Answer

By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

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