-
Notifications
You must be signed in to change notification settings - Fork 75
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Split CommunityDescription message (and all messages too big) #12188
Comments
Proposition I propose to split this message into several messages broken down by meaning, but not just chunks:
I think permissions should be scattered between these categories. @richard-ramos it will be great if we can store just one last message of each type for each community. Then we can broadcast those messages periodically in case they are got lost. @osmaczko @mprakhov @cammellos WDYT? @John-44 @iurimatias @jrainville I think we need this before releasing the MVP due to the risk of losing compatibility |
I like the idea. The primary challenge I foresee is how to manage situations where one of the messages is lost. We need to determine whether we should wait for all partitions or if we can apply them separately to modify the state of the community. Additionally, this change will enable encryption for both
I agree. Ideally, we should refrain from supporting the legacy |
Good idea; I also thought if it would be feasible to just compress/uncompress the description; it's plain text anyway, should be able to reach a high ratio |
After 0.15 is out we won't be able to make non-backwards compatible breaking changes. So @iurimatias @jrainville does this need to go on the list of must-have (release blocking) features for 0.15? |
I would say so. For 0.14 we will have a small fix that makes it possible for the Status CC community to continue working, but if there was a very big community that has lots of channels with permissions and lots of members, then we'll have the same issue happen again (the description will exceed the max number of bytes). So yes, this is something that needs to be done before the "breaking change freeze". |
If a refactor is going to be done for community members, please do include the following: Community members are stored like this in the community description:
with the string key containing a 130char string with the member public key ("0x" + 128 hex characters). We should use instead the 33 bytes compressed version with no "0x" prefix to save space. |
Also keep in mind that in the future the maximum size of a message might be reduced dramatically from 1MB to maybe 150kb as described in here, so we should consider looking at storing this type of large control messages outside of waku. (i.e. Codex / IPFS / Swarm / Torrent?) |
Storing only the last message of a type is not supported in the Store protocol, but you can achieve similar results via a store query:
|
This can't be relied on though, since anyone can publish on this topic, so you would still have to fetch until you find the one you care about, unless I am mistaking. @MishkaRogachev not sure I would go that way, the message fundamentally doesn't scale as the member list is fundamentally unbound. |
We will also be increasing the maximum size of binary messages that can be sent over waku via #9923 and when we do this we could perhaps extend this to split non-binary messages as well. Agree that it's a good idea to impose a max message size at the Waku protocol level, and then at the Status protocol level we can get larger message sizes than we have today via schemes like the one described in the above issue. |
@jrainville we may want to put it back to 0.15 if this release that guarantees backward compatibility. Other than size issue, there is an issue with data availability, |
Description
At the moment, the CommunityDescription message is too large, both in terms of meaningfulness and size in bytes. In this experiment, we found that the size of this message for Status CCs reaches 2 mb.
This PR is a temporary measure until this feature is implemented. When switching to split messages I think we should remove this optimisation, but in the list of channel members we should not send the members themselves, but only their IDs.
The text was updated successfully, but these errors were encountered: