Private Messaging
Mike's notes
- Reiterate Lifecycle concepts:
- Create, Choose Recipient(s), Encrypt, Emit, Discover, Decrypt, Process, Store, Read, Nullify
- Message Delivery
- Note emission rails
- Syntax
- Event emission rails
- Syntax
- Share what?
- Optimisations, to reduce communication costs
- Brute-forcing the note nonce
- Deriving randomness from an ephemeral secret key
- Share with whom?
- Sharing with yourself.
- Backing-up your private activity
- Sharing with a recipient.
- Sharing with multiple people.
- Share how?
- See Logs
- Encrypt
- Choice of Encryption Scheme
- Note emission rails
- Message Discovery
- Brute Force vs Tagging
- See Mike's section of the Whitepaper for wording.
- Discovery from Web2
- Discovery from Logs
- Explain all the Note syncing code that is relevant to an end user.
- Advanced
- Explain code that would be relevant to an advanced user.
- Compute expected tags
- Fetch logs for those tags
- Process the logs
- Decode the logs
- Derive symmetric encryption key
- Decrypt the ciphertexts
- Decode the plaintext
- Interpret the data
- Store the data (events or notes)
- For notes, check whether the notes have been nullified.
- Brute Force vs Tagging
- Constraining delivery
- Unconstrained
- Constrained
- See Mike's Hackmd on constrained delivery
- Advanced
- Establishing an ECDH shared secret
- Custom log layouts
## Ciara's notes
- This replaces note discovery so we should make that crystal clear