holochain / holochain/docs-pages

Document common patterns to use in Apps

Open
#481 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
Nunjucks
Stars
98
Forks
32
Avg merge
9h 49m
Merged PRs (30d)
2

Description

Common patterns used in app development

Must include:
- code examples
- practical, terse explanation
- gotchas

Possible topics include:
* Lobby
* gaining access to privileged DHTs
* getting directory of DNA clones
* mediated access to other DHTs via `call_remote`
* Blockchain binding
* File chunking
* DNA composability
* One DHT per file/channel
* Throwaway DHT
* Per-role DNAs (combine with Lobby for mediated access)
* Various CRUD patterns
* See [https://github.com/mjbrisebois/blog/blob/master/drafts/holochain-architectural-pattern-vectors.md](https://github.com/mjbrisebois/blog/blob/master/drafts/holochain-architectural-pattern-vectors.md)
* Canonical updates
* Simple resolution strategy (e.g., LWW)
* Branch pointer (requires consensus protocol)
* 'latest update' link
* Update trees
* Communications
* [Asynchronous private messaging](https://forum.holochain.org/t/asynchronous-private-messaging/1085)
* [Mailbox](https://forum.holochain.org/t/mailbox/1084)
* Access control / privileges / privacy / secrecy
* Benevolent dictator
* Progenitor
* [Capability delegation](https://forum.holochain.org/t/capability-delegation/1082)
* Memproofs for DHT read / peer connection privileges
* Token gating
* Group password (better handled by network seed TBH)
* Certificate chains
* Lobby can be used to distribute memp
* DHT writes
* Only author can edit
* Read-only public DHT with memproof for write privileges (necessary for Holo resilience nodes to work)
* Encrypted DHT data
* key rotation for forward secrecy
* double ratchet
* manual rotation
* Private data and `call_remote`
* Homomorphic encryption
* ZKP
* Negotiation of shared secret, e.g., dice roll
* SMPC (e.g., EcDSA)
* just sharing the darn secret
* Shared secrets, public disclosure/auditing
* Validation
* Inductive validation
* Remote signals
* Heartbeat / presence indicators
* Online-ish-ness -- dealing with ambiguous definition of 'online' in P2P context
* swarm connectivity -- how connected am I to the people I'm doing work with?
* beacon or sentinel -- am I connected to 'the internet' (or at least the portion that I expected to see)?
* Anchor pub/sub
* Publish frontrunning -- sending out a signal in `post_commit` to let listeners know that a DHT entry should exist there eventually
* Real-time collaboration
* Syn v1 (scribe that collects CRDTs from collaborators, periodically commits change sets)
* Syn v2 (no scribe needed; don't know how this'll work yet)
* Branching revisions
* Consensus protocols
* Countersigning-based
* Single notary
* Notary pool (m-of-n optional witnesses)
* Hardened metadata (will be supported by Holochain eventually; curious if it could be implemented as an app-level pattern)
* Blockchain binding

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.