Post-Mortem: Breaking Compatibility due to Partitioned Topic
Complete, action items in progress
We have to break compatibility of 1-1 chats and private group chats with
version 0.9.33 and earlier.
Users who use 0.9.33 and earlier version won’t be able to communicate with
users of 0.11.0 and higher versions.
Bad architectural decision to use a single Whisper topic for all 1-1 and group
chats of all users of Status. The decision is very root and it is extremely
hard to change it without breaking compatibility.
What is exactly bad about using a single Whisper topic?
Every user download private messages from everyone in the network (because they are mixed in the same topic).
There is no issue in security/privacy, because everything is asym-encrypted.
But it leads to a significant waste of traffic.
(Currently 1 day of data is ~100mb, 10x users will mean 1000mb trafic per day)
Users had their data plans wasted during popular events (ETHDenver, ETHBerlin).
Bite the bullet and play our “beta” card to break compatiblity.
Complains about wasting data from the users.
|Discuss the approaches to this problem||mitigate||-||n/a DONE|
|Document the protocol||prevent||adamb||IN PROGRESS|
|Audit the protocol implementation||prevent||igorm||TODO|
What went well
- First releasing a version that supports partitioned private chat topics, and
then releaing a version that actually sends data there (breaking
What went wrong
- We don’t have great documentation on our protocol, and we didn’t audit it
from the tecnical perspective.
Where we got lucky
We are still in beta so traffic didn’t grow too much (1GB per user per day
would be very bad, but 100MB in modern world isn’t too big of a deal).
At least on iOS we have ability to “expire” incompatible builds, so we are
sure that no iOS user is using them.
|20180907||ETHBerlin: Complains about wasting traffic on limited data plans|
|20171207||Mailserver outage, see postmortem|
|20181218||Discussion on “Darkness vs. Traffic” on Discuss Whisper, Darkness vs. Traffic|
To understand what a topic is in Whisper
Whisper Overview: https://github.com/ethereum/wiki/wiki/Whisper-Overview
Shh! Whisper: https://medium.com/caelumlabs/whisper-shh-bc5416ec0046