# Anonymous chat app <-> ZK Keeper integration 1. Register to InterRep with an identity commitment 2. Once registered, you can use the same identity commitment for using the RLN anonymous chat app. 3. ZK-Keeper can be used for managing identities 4. The RLN anonymous chat app can check if the identity is registered to InterRep (part of InterRep group) 5. If the identity is not registered, the user should be redirected to InterRep for registration 6. If the identity is registered the user can use the app (send messages) 7. The ZK-Keeper extension can generate proof based on the user's active identity. 8. Once proof is generated, it can be send from the RLN chat app client to the RLN chat app server for proof verification and further message broadcasting. 9. If the message is a spam, the user should be slashed -> removed from the RLN merkle tree and the user's id commitment should be added into a ban list, so that the user can not register again. ## InterRep interraction The RLN anonymous instant chat app has a spam threshold of 10 - it usees 10 part secret. From this secret an identity commitment is generated. The algorithm for generating identity commitment from multipart secret is different from the algorithm for generating identity commitment from identity secret + metamask signature (this is what interrep uses currently) for the provider groups. This incompatibility prevents the RLN anonymous instant chat app to use InterRep. ### Solutions 1. [The InterRep OnChain groups offer a solution to this problem](https://docs.interrep.link/technical-overview/groups/onchain-groups). The RLN anonymous instant chat app needs to provide a registration functionality, where upon registration the backend will register the identity commitment to an InterRep OnChain group. The downside of this approach is that the user group will be smaller (only for the users of the RLN anonymous instant chat app), thus the anonymity properties would be weaker. 2. [The InterRep OAUTH groups by using the InterRep API](https://docs.interrep.link/api) is another solution to the problem. The RLN anonymous instant chat needs to provide a registration functionality, where upon registration the backend will register the identity commitment to InterRep Oauth groups by using the InterRep API. This allows for an arbitrary identity commitment to be registered to an InterRep group. The RLN app needs to be whitelisted to interrep and also provide an OAUTH token upon registering a user.