Source: https://hackmd.io/OfNvS1E4Q5O0BSZwhYLZOw
Prior art:
See also ssbc/ssb-meta-feeds-spec#30
Can we separate "membership" from "groups", such that we could have public groups (i.e. membership mechanics without the box2 encryption)
TODO: FIX THIS DIAGRAM GIVEN THE PAPER NOTES
flowchart TB;
root-->groupsRootX
subgraph groups
direction LR
groupsRootX[.]:::invisible
announce1([meta/add: invitations])
announce2([meta/add: f3]):::encrypted
end
subgraph f3Feed
end
subgraph invitationsFeed[Invitations]
invitationsFeedX[.]:::invisible
group/addMember[group/addMember: Bob]:::encrypted
end
subgraph batsFeed[Bats]
batsFeedX[.]:::invisible
group/init:::encrypted
%% group/add
end
announce2-->f3Feed
announce1-->invitationsFeedX
classDef rainbow fill:#faf,stroke:#a7a;
classDef encrypted fill:#faa,stroke:#a77;
classDef invisible fill:#fff0,stroke:#fff0;
https://github.com/ssbc/ssb-network-identity-spec
startup:
- load db
- load in all your DM keys
- each subfeed has a keypair and could be DM'd
// ssb-box2
const ring = await keyRing(path)
// assume persisting dm keys
const keysToTry = ring.decryption(authorId)
groupKeys that authorId is know to be in
DMKeys:
DH(authorPk x rootSk)
DH(authorPk x mainSk) (optional)
- this may be needed if main feed is presen
Questions:
- who DM's who?
- author: @mixInvitationFeedId
- recps: [@andersFeedId]
- which anders feedId?
- which anders DM key?
- PROPOSAL A
- root metafeed is the recp
- PROPOSAL B
- only DM "parallel/sister" sub-feeds
- ehhhh... not sure
- PROPOSAL C
- main feed is the recp
- pros: good for compat, BUT, we don't need compat with Patchwork etc regarding box2 and metafeeds
Principles:
- low level foot-guns, high level good ideas
- complexity lens - you have to write the code
- make it work, make it right, make it fast; in that order
- (for now) when DM'ing a person: a) use the root feedId b) the DH key derived from root feedId
- (for now) drop membership from ssb-keyring
- anders is gonna benchmark
- check for 10 / 100 / 1000 groups
- check "known membership" versus "try all"
- anders is gonna benchmark