Repository navigation
feat: add approach card for private institutional messaging - #215
Conversation
rymnc
left a comment
There was a problem hiding this comment.
thank you for your PR! left some comments in-line
| - url: https://github.com/xmtp/libxmtp | ||
| description: "XMTP messaging protocol client library (encrypted, wallet-keyed messaging)" | ||
| language: Rust | ||
| - url: https://github.com/waku-org/nwaku |
There was a problem hiding this comment.
| - url: https://github.com/waku-org/nwaku | |
| - url: https://github.com/logos-messaging/logos-delivery |
I think a couple things might be out of date here.
|
|
||
| ## [Unreleased] | ||
|
|
||
| - feat(approach): [Private Institutional Messaging](approaches/approach-private-messaging.md), filling the "Approach TBD" gap on [Private Messaging](use-cases/private-messaging.md). Compares anchored off-chain messaging (documented, I2I), mixnet-routed messaging (concept) and threshold-encrypted on-chain channels (concept), with a 10-row comparison matrix, persona perspectives, a conditional recommendation and open questions. ([#215](https://github.com/ethsystems/map/pull/215)) |
There was a problem hiding this comment.
this line says that the pr fills the Approach TBD gap. the pr does not change the use case. line 55 of use-cases/private-messaging.md still says Approach TBD, and the use case does not link to this card.
suggestion: replace section 5 of the use case with a link to this approach.
| - pattern-l2-encrypted-offchain-audit | ||
| - pattern-regulatory-disclosure-keys-proofs | ||
| supporting_patterns: | ||
| - pattern-commit-and-prove |
There was a problem hiding this comment.
refer to the comment on line 67. after that change, no sub-approach uses this pattern.
| - pattern-commit-and-prove |
| description: "Matrix homeserver reference implementation (federated, Olm/Megolm message encryption)" | ||
| language: Python | ||
| - url: https://github.com/xmtp/libxmtp | ||
| description: "XMTP messaging protocol client library (encrypted, wallet-keyed messaging)" |
There was a problem hiding this comment.
libxmtp now uses mls for end-to-end encryption, and an inbox id is the identity (readme). "wallet-keyed" describes the older protocol.
| description: "XMTP messaging protocol client library (encrypted, wallet-keyed messaging)" | |
| description: "XMTP messaging protocol library (MLS end-to-end encryption, inbox ID identity)" |
| description: "XMTP messaging protocol client library (encrypted, wallet-keyed messaging)" | ||
| language: Rust | ||
| - url: https://github.com/waku-org/nwaku | ||
| description: "Waku v2 node implementation (privacy-preserving relay, mixnet-ready messaging for web3)" |
There was a problem hiding this comment.
logosdeliverynode replaced wakunode2 in this repo (changelog line 76). so "waku v2 node" is stale. mix sender anonymity is opt-in per send (line 77). mix nodes ship only in the dev and test presets (line 79).
| description: "Waku v2 node implementation (privacy-preserving relay, mixnet-ready messaging for web3)" | |
| description: "Logos Delivery node, formerly nwaku (Logos Messaging protocols, opt-in mix sender anonymity)" |
| |---|---|---|---| | ||
| | **Maturity** | documented | concept | concept | | ||
| | **Context** | i2i | i2i | i2i | | ||
| | **CROPS** | CR:med O:part P:part S:med | CR:med O:part P:full S:med | CR:hi O:y P:full S:med | |
There was a problem hiding this comment.
| | **Trust model** | Node operators + anchor schedule | Mix node majority | Threshold committee | | ||
| | **Privacy scope** | Content hidden; metadata visible | Content + metadata hidden | Content hidden; existence public | | ||
| | **Performance** | Real-time; anchoring periodic | Seconds to minutes (batching) | Per-message chain latency | | ||
| | **Operator req.** | Yes (nodes + key escrow) | Yes (mix infrastructure) | No (chain-native) | |
There was a problem hiding this comment.
the trust model at line 159 is a threshold committee. line 142 also says that an l2 adds an operator. approach-private-broadcasting.md lists the same design as Threshold network.
| | **Operator req.** | Yes (nodes + key escrow) | Yes (mix infrastructure) | No (chain-native) | | |
| | **Operator req.** | Yes (nodes + key escrow) | Yes (mix infrastructure) | Yes (threshold committee) | |
| | **Performance** | Real-time; anchoring periodic | Seconds to minutes (batching) | Per-message chain latency | | ||
| | **Operator req.** | Yes (nodes + key escrow) | Yes (mix infrastructure) | No (chain-native) | | ||
| | **Cost class** | Low | Medium | High (per-message gas) | | ||
| | **Regulatory fit** | Strong (scoped disclosure, retention) | Unproven (retention and eDiscovery open) | Strong content audit; traffic visible | |
There was a problem hiding this comment.
this row rates the anchored design and the on-chain channels as strong. line 179 says that it is unsettled whether regulators accept scoped key disclosure. line 200 keeps ediscovery over ciphertext as an open question. line 150 says to avoid on-chain channels when institutions need off-chain ediscovery.
suggestion: rate both as unproven, or give the reason for each "strong".
|
|
||
| ### Technical perspective | ||
|
|
||
| The anchored approach is mostly integration work: federated or wallet-keyed messaging protocols exist and run, and the engineering lifts are the hash-chain anchoring job and multi-year key management, which is an unsolved operational problem more than a cryptographic one. Mixnets are the simplest to deploy as a sidecar but hardest to keep effective on thin institutional traffic; batching needs volume that two-party channels rarely produce. On-chain channels require the least infrastructure to operate and the most cryptographic care per message, and they inherit consensus-level liveness, which is either a feature or an outage dependency depending on the deal. |
|
|
||
| ### Hybrid | ||
|
|
||
| Run the anchored design as the base layer, add mixnet routing on the most sensitive negotiation channels, and move contract milestones (signed term sheets, amendment notices) into on-chain encrypted channels so their ordering is trustless. One disclosure-key scheme spans all three layers so a regulator request has a single entry point. |
There was a problem hiding this comment.
the mixnet sub-approach lists no disclosure pattern (line 96). the mixnet pattern leaves content to a separate layer. the threshold committee releases each slot key to everyone, so it is not a scoped key (line 86). so one disclosure-key scheme cannot span all three layers with the cited patterns.
suggestion: limit the single scheme to the anchored layer, or remove this sentence.
…saging (ethsystems#215) - replace stale libxmtp (MLS, inbox ID) and nwaku (Logos Delivery) entries - cite the L2 audit log pattern for anchoring, drop commit-and-prove - name sender signatures for non-repudiation; drop the dispute-path parenthetical - name the retention regimes (SEC 17a-4(b)(4), CFTC 1.31(b)) instead of a blanket 5-7 year window - add the counterparty-identity requirement and note the anchored design does not meet it alone - correct mixnet and threshold crops (p partial, o partial) - on-chain channels: encrypt to counterparty keys only, drop the threshold mempool citation (committee releases keys after inclusion, so content would go public); rename the variant - re-rate regulatory fit rows with the reason for each claim - align the mixnet sidecar claim with the trade-off sections; scope the disclosure-key scheme to the anchored layer - link the Private Messaging use case's recommended-approaches section to the card
rymnc
left a comment
There was a problem hiding this comment.
@Darkjay123 could you comment on the reasoning behind the specific crops ratings, here in github, so we're on the same page?
|
Thanks for the review. All 21 line comments are applied in 8d1b43b, including the three CROPS values you suggested. Here is the reasoning behind each, per the rubric in CONTRIBUTING.md: Anchored Off-chain Messaging (cr: medium, o: partial, p: partial, s: medium)
Mixnet-routed Institutional Messaging (cr: medium, o: partial, p: partial, s: medium)
On-chain Encrypted Channels (cr: high, o: partial, p: partial, s: medium)
If you read any of these differently against the rubric, point me at the row and I will adjust. |
Refs #138
What this adds
approaches/approach-private-messaging.md, filling the "Approach TBD" gap onuse-cases/private-messaging.md.The card compares three designs for institutions (banks, asset managers, corporates) that need private messaging between known entities:
Also included: a 10-row comparison matrix, three persona perspectives (ops head, compliance officer, security engineer), an explicit recommendation with the conditions that would change it, and five open questions.
Validation
approaches/_template.mdstructure (frontmatter, sub-approaches, comparison, personas, recommendation, open questions)patterns/(l2-encrypted-offchain-audit, regulatory-disclosure-keys-proofs, commit-and-prove, mixnet-anonymity, onion-routing, threshold-encrypted-mempool, user-controlled-viewing-keys)