Skip to content
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

Private messaging architecture #68

Open
peterbroadhurst opened this issue Jun 11, 2021 · 0 comments
Open

Private messaging architecture #68

peterbroadhurst opened this issue Jun 11, 2021 · 0 comments
Assignees

Comments

@peterbroadhurst
Copy link
Contributor

See #4 for info on why this is in Git

Off-chain / on-chain private sequenced transfer coordination

image

This gen2 architecture provides an extension over the first generation, to solve two interconnected problems:

  1. When you miss the private (off-chain) data for a message, you don't know which messages this blocks
  • This can lead to "stop the world" scenarios, where the only safe thing to do is to stop processing anything
  • Most business solutions can use a "topic" (such as a customer ID, or business transaction ID) to discriminated sequences that need to be ordered
  • By specifying a topic in the message, an app can state which sequence it's involved in, so if you miss a message, then only that sequence becomes blocked - the other sequences can continue.
  1. Putting an identifier in all messages on a topic leaks metadata
  • Information can be gleaned by seeing that X messages happened on a given topic
  • Even if the topic is hashed, you can still see that the message were interconnected
  • In the architecture, we mask this strongly using:
    • A monotonically increasing nonce unique to each sender
    • An ID for the group (calculated as a hash of the membership list and optional name)
  • To allow global ordering without leaking the group ID to the chain, we calculate the next-hash of all members, and match new message arrivals against that

Note this issue does not cover anonymity of the sender of the transaction. The integration of HD Wallets, ID mixers etc. is protocol specific, and handled in ethconnect and other Blockchain Interface implementations.

@peterbroadhurst peterbroadhurst self-assigned this Jun 11, 2021
peterbroadhurst added a commit that referenced this issue Jul 5, 2023
Batch insert of events all the way to the DB operations
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant