Problem
Right now there is no documentation explaining to developers when to use the KV store and when to use the chain for storing data.
Solution
Explain the convention of:
- Anything that requires keeping track of a history of events (e.g. chatrooms, or payments), go on-chain
- All key operations go on-chain
- Anything that requires consistent complicated historical validation logic to transform data and apply it to the state goes on-chain
And everything else goes into the KV-store (if it's to be stored), e.g.: group/chatroom names, descriptions, emails, display names, preferences/settings, etc.