Join GitHub today
GitHub is home to over 28 million developers working together to host and review code, manage projects, and build software together.Sign up
Swarm working groups
For further development, focused working groups have been identified:
- Network testing and simulation framework
- pss messaging and communication tools
- Swap swear and swindle - contract development
- DB support
Network testing and simulation framework
- Set up network models, to control, measure, test, benchmark network behaviour
- Provide single peer with mock peer 'network' for protocol (module) unit testing
- Provide various simulated test network environments with the same testing interface
- HTTP server with REST API to the network controllers to serve as backend to cluster dashboards, simulations, visualisations
- Visualise network and topology health, status, metrics
Status - 2nd October 2017
- Backend with HTTP server implemented
- Ability to run in-process, executable and docker adapters for nodes
- Command-line interface
- Example simulations implemented
- Usage documented: https://github.com/ethersphere/go-ethereum/blob/p2p-simulations/p2p/simulations/README.md
- Backend code merged to
- 3D visualisation finalized: https://github.com/ethersphere/simple-p2p-d3/
- Proof-of-concept for visualisation terminated
- Refine requirements for simulation frontend and backend
- Document frontend requirements at https://github.com/ethersphere/swarm/wiki/sim-frontend
- Update planning and roadmap for frontend and backend
- README https://github.com/ethersphere/go-ethereum/blob/p2p-simulations/p2p/simulations/README.md, https://github.com/ethersphere/go-ethereum/tree/a5e7f0cf9c7c2dcd7f516315a063c410f81ffe83/p2p/simulations/README.md,
- ping pong example: https://github.com/ethersphere/go-ethereum/blob/a5e7f0cf9c7c2dcd7f516315a063c410f81ffe83/p2p/simulations/examples/README.md
- more examples
- open PR https://github.com/ethereum/go-ethereum/pull/14982
- visualisation: https://github.com/ethersphere/simple-p2p-d3/
- netsim slides - berlin internal talk 2016-11-30 http://swarm-gateways.net/bzz:/e5fbcaad92ede8a429896ff91d5653510a16a2cf86061697648340d32bbe40a8/
- Lewis Marshall @lmars
- Fabio Barone @holisticode
pss messaging and communication tools
roadmap: https://github.com/ethersphere/go-ethereum/wiki/Pss-roadmap dedicated gitter channel: https://gitter.im/ethersphere/pss
- Enable messaging between nodes that are not directly connected through IP.
- Allow full, partial and no disclosure of addresses of communicating nodes. ("luminosity")
- Asymmetric and symmetric encryption using ephemeral keys.
- Transparent implementation of devp2p protocols over pss.
- Decentralized storage of undelivered messages. (mailserver)
- Create a fully decentralized end-user messaging platform that's end-to-end encrypted.
- Implements swarm kademlia routing.
- Address "luminosity" can be defined bytewise, from 0 (whisper routing) to 32 (full swarm address disclosed). How much of a node's address which is revealed / known to its individual peers is fully at the node's own discretion.
- Asymmetric messaging can be performed using only the node's public key and a topic.
- Symmetric messaging using a pair of ephemeral symmetric keys, each for outgoing and incoming messages.
- Support for arbitrary or handshake-negotiated symmetric keys
- Asymmetric and symmetric keys can be renewed/replaced at will.
- Uses swarm DPA for caching of messages, used for flood prevention and to prevent backwards routing. This is possibly a preliminary step towards decentralized message storage for "mailserver" functionality.
- virtual devp2p protocol over pss, same and separate process
- Rewrite pss js lib
- Full-fledged traffic testing and benchmarking using network testing framework (depends on functional network testing framework)
- MERGE TO ETHEREUM MASTER
- Update go ethereum p2p docs
- Identify and start work on 2-3 real-world pilot cases for production-level implementation of pss.
- Browser/js based messaging application (in time for Cancun??)
- Implement visualizations for different pss payloads in the network testing framework visualizer
- Mailserver functionality (depends on offchain resource update framework)
- Roadmap and dependencies https://github.com/ethersphere/go-ethereum/wiki/Pss-roadmap
- README https://github.com/ethersphere/go-ethereum/blob/pss-whisper-protocols/swarm/pss/README.md
docs tutorial https://github.com/nolash/go-ethereum-p2p-demo(outdated for pss)
- current code in https://github.com/ethersphere/go-ethereum/tree/pss-whisper-protocols/swarm/pss
- open PR https://github.com/ethersphere/go-ethereum/pull/118
talk like pss client https://github.com/nolash/psstalk(broken after pss whisper encryption refactor)
- pss js websocket demo https://github.com/nolash/pss-js
- pss usecases https://github.com/ethersphere/go-ethereum/wiki/PSS-usecases
- whisper v5 docs on wiki: https://github.com/ethereum/go-ethereum/wiki/Whisper
- Louis Holbrook: @nolash
- Vlad Gluhovsky: @gluk56
- Viktor Tron: @zelig
- Guillaume Ballet: @gballet
- Status.im https://status.im/
- Ricardo Geraldes @rgeraldes
- Fabio Barone @holisticode
Low level swarm support for p2p data streams.
- Tentative preliminary code for the new network layer. Code not pushed yet?
- Livepeer code https://github.com/livepeer/livepeer-swarm
The majority of the additions to swarm are in the livepeer package and the mediaserver package. The mediaserver package serves as a bridge to our LPMS media server at https://github.com/livepeer/lpms.
We updated the swarm storage package because we had to add Stream and StopStream to the CloudStore interface (in netstore file), which forwarder implements. And this is how forwarder routes stream and stopstream requests around the network.
We use API package because we have to add ffmpegpath and RTMPport to the config object.
We added a streamDB to the networking package, and added message types to support streaming to the protocol.
We added a streaming package which contains a lot of the logic around streaming.
Scope for v0.3
- Support data streams in Swarm
- Add StreamRequestMsg and StreamStopMsg into the Bzz protocol
- Expose an io.Writer for writing stream data, and io.Reader for reading stream data
- Decide on interface to support video
- Doug Petkanics @dob
- Eric Tang @ericxtang
- Zahoor @jmozah
- Vik @zelig
Swap swear and swindle - contract development
- Implement the incentives layer of the p2p network
- Provide storage insurance in swarm
- Offer litigation and mitigation mechanisms for ensuring service quality and provide trust
- Platform for digital services economy
Status 29th August 2017
- Draft version of Swap, Swear and Swindle (sw^3) paper crafted
- swap and chequebook v0 already in master since POC2
- initial stab at courtroom/swear/swindle component
- Iterate on, refine and publish paper
- Implement modules of sw^3:
- related components:
- provable data exchange
- SMASH/CRASH proof of custody
- resource update notifications
- paper source: https://github.com/ethersphere/swarm-docs/blob/games/games/main.tex
- orange papers: http://swarm-gateways.net/bzz:/theswarm.eth/#the-thsph-orange-paper-series
- courtroom suite initial stab: https://github.com/ethersphere/swap-swear-and-swindle
- swap code (to be rewritten): https://github.com/ethereum/go-ethereum/tree/master/swarm/services/swap
- chequebook contract: https://github.com/ethereum/go-ethereum/tree/master/contracts/chequebook
- Viktor Trón @zelig
- Oren Sokolowsky @orenyodfat
- Aron Fischer @homotopycolimit
- Daniel Nagy @nagydani
- Fred Tibbles @MrTibbles
- Alexey Akhunov @
- Fabio Barone @holisticode
Db support (POT and indexing)
- Provide DB functionality on top of swarm
- POT serialisation,use POT for Manifest encoding
- Network protocol for index lookups with delegated traversal and pot proof response
- Blockchain and ethereum state on swarm
- Provable object traversal for knowledge graph proofs
- Use pot for swarm storage layer
- related components to implement:
- resource update notifications of offchain mutability (sub-block ENS)
- provable data exchange
- Basic inmemory POT implementation https://github.com/ethersphere/go-ethereum/tree/network-testing-framework/pot
- abstract out the potbin iterator
- type signatures
- design and implement canonical serialisation for pot
- semantic inclusion proofs
- frequency (recency) sensitive insertion
- serialisation for db: persistence
- encryption, obfuscation
- Zahoor Mohamed @jmozah
- Viktor Tron @zelig
- Elad Verbin @eladve
- Samuli @haadcode
- Louis Holbrook @nolash, Lewis Marshall @lmars (JAAK)
- Sorabh, Mayumi, David (WOLK)