Random idea, encrypted group chat: a user generate a AES key, use this key to encrypt a message, and encrypt this key to the public keys of his friends(contact list) as envelops. Send all that to relay. Friend query from relay to get envelop, use private key to decrypt AES key to then decrypt the message.