Hello status community
I’m involved on an open-source project named Vocdoni (http://vocdoni.io). As quick summary, it’s an online voting platform to empower people on the decision making. The big words are:
- censorship resistant
- ZK-snarks privacy
- Ethereum blockchain for data integrity and coordination (smart contracts)
- Third party participated via incentive/reward model
- Data availability provided by IPFS or DAT
- SmartPhone APP centered
- Communication layer provided by PubSub or Whisper
I can see many similarities between Status and Vocdoni. Specially on the communication layer. We need a way to send p2p messages from the Client (voter) to the Relay infrastructure (servers which process the votes, add them in a batch and register an IPFS hash to Ethereum were the batch is available).
We are now playing with IPFS PubSub, which kind of works but it’s weak (it’s very easy to loose messages and the protocol is too simple). Whisper in the other side has so many nice features useful for us, we were planning to implement some of them on top of PubSub (as an upper layer) but it does not make sense if Whisper is already implemented and works.
Here you can see what kind of messages are we sending through the P2P messaging protocol: https://github.com/vocdoni/docs/wiki/Data-structures
After making a quick research on Whisper I see that most of the “real world” development is made by Status. I mean, it’s the only real case scenario which is using Whisper in production AFAIK.
So I wonder which specific pieces of status could we reuse. We are mainly interested on the low level communication layer (we don’t need a chat but something to replace TCP/IP unicast communications).
As an initial test. I’ve compiled and executed “status-go” and used the HTTP API to send a symetric key message which was received in two different servers. That worked and might kind of solve the Relay side.
Now I’m wondering what could be used in the client side (SmartPhone). For PubSub we use a WebSocket bootnode which provide information about other WebSocket peers. Then we connect to those peers and subscrive to a specific topic to send/receive network messages. Is there something similar in Whisper/Status?
To finish, this is just an initial message to check if there might be common synergies between the two projects. For instance both projects are depending on Whisper, so we could contribute the current whisper network by making it bigger and stronger. We could also contribute together with the development of whisper related tools, on the server side and the client side.
Any thought, idea, comment, advice is very welcome.