mirror of https://codeberg.org/pzp/pzp-wiki.git
Change start page and update intro
This commit is contained in:
parent
490df1b16c
commit
c01b6458f1
|
@ -6,7 +6,7 @@ const darkCodeTheme = require('prism-react-renderer/themes/dracula');
|
|||
|
||||
/** @type {import('@docusaurus/types').Config} */
|
||||
const config = {
|
||||
title: 'PZP Wiki',
|
||||
title: 'PZP',
|
||||
tagline: 'A rad p2p protocol',
|
||||
favicon: 'img/favicon.ico',
|
||||
|
||||
|
|
|
@ -5,25 +5,29 @@ sidebar_position: 1
|
|||
# PZP Docs
|
||||
|
||||
What is "PZP":
|
||||
- A local-first P2P protocol with 10 years of learnings baked in
|
||||
- A [local-first][local-first] P2P protocol with 10 years of learnings baked in
|
||||
- Message formats + Message validation + RPC methods
|
||||
- If scuttlebutt is :slightly_smiling_face: then pzp is :sunglasses:
|
||||
|
||||
What it doesn't specify:
|
||||
- Disk storage
|
||||
- No apps so far except for a [demo app][zooboard], but it's ready for developers to have fun with and hack on.
|
||||
|
||||
## Features
|
||||
|
||||
- sig-chains - you know what the messages are
|
||||
- first class multi-device support
|
||||
- partial replication (using lipmaa links)
|
||||
- message deletion (can leave nothing, or only metadata)
|
||||
- Peer to peer. PZP is designed in a way to avoid centralization of power.
|
||||
- Low storage expectations. Expecting users to store large amounts of data makes adoption on phones and old devices hard, and eventually risks centralization and corporate takeover when only resource rich users or even companies have enough resources needed to keep the network running.
|
||||
- Content/public-key adressed data. We try to avoid relying on DNS since that would put too much trust/pressure on single nodes.
|
||||
- Easy to use CRDT data structures like sets and dicts.
|
||||
- [Local-first][local-first]
|
||||
- No DHTs or other [singletons](https://handbook.scuttlebutt.nz/stories/design-challenge-avoid-centralization-and-singletons).
|
||||
- First class multi-device and multi-app support. A user's account ID is independent of what keypair(s) they choose to use, so keypairs can be added and rotated.
|
||||
- Partial replication using tangles (merkle-trees) and [lipmaa links][lipmaa].
|
||||
- Message deletion (can leave nothing, or only metadata).
|
||||
- Trust based (friend to friend) with a simple invite system.
|
||||
|
||||
### How PZP is different from SSB (Secure Scuttlebutt)
|
||||
### How PZP is different from [SSB (Secure Scuttlebutt)][ssb]
|
||||
|
||||
- Storage is designed to not grow indefinitely. By default (of course overridable) an app's storage shouldn't go above 100MB.
|
||||
- Multi device/app support from the start. Every device/app has its own keypair. They're connected together into one identity using an Account tangle. The Account tangle's root message ID is the account's identifier.
|
||||
- One account or even keypair can post messages concurrently (forking) without problem. Because there aren't linear feeds, everything is in tangles.
|
||||
- One account or even keypair can post messages concurrently (forking) without problem. Because there aren't linear feeds, everything is in tangles, including state updates like e.g. username changes.
|
||||
- Deletion is possible. The data contents of a message is separate from the message metadata, and only the metadata + hash of the data is signed.
|
||||
- When messages are getting signed they get serialized according to [RFC 8785](https://tools.ietf.org/html/rfc8785).
|
||||
- Easy to use invites
|
||||
|
@ -57,6 +61,15 @@ There are 3 sorts of tangles:
|
|||
- e.g. all the messages in a discussion
|
||||
- e.g. all the messages in a shared shopping list
|
||||
|
||||
All tangles have
|
||||
- a root / root message
|
||||
- an ID (the id of the root message of the tangle)
|
||||
- have tangle-data for causal ordering
|
||||
|
||||
How the tangles differ
|
||||
- the Account tangle has strict validation of messages (it is only valid to write to it if you've been given permission to)
|
||||
- a Feed root is deterministic! (only inputs are accountId + domain)
|
||||
|
||||
### Account Tangle
|
||||
|
||||
The account tangle starts with a message which says "This key is allowed to author messages on behalf of this account, and add further keys".
|
||||
|
@ -73,30 +86,36 @@ _Domain Tangle, AccountDomain Tangle_
|
|||
|
||||
### Thread Tangle
|
||||
|
||||
All tangles have
|
||||
- a root / root message
|
||||
- an ID (the id of the root message of the tangle)
|
||||
- have tangle-data for causal ordering
|
||||
TODO
|
||||
|
||||
How the tangles differ
|
||||
- the Account tangle has strict validation of messages (it is only valid to write to it if you've been given permission to)
|
||||
- a Feed root is deterministic! (only inputs are accountId + domain)
|
||||
## Specifications
|
||||
|
||||
### [Messages](https://codeberg.org/pzp/pzp-db/src/branch/master/protospec.md)
|
||||
|
||||
### [Replication](https://codeberg.org/pzp/pzp-sync/src/branch/master/protospec.md)
|
||||
|
||||
### [Invites](https://codeberg.org/pzp/pzp-invite/src/branch/master/protospec.md)
|
||||
|
||||
### [Sets](https://codeberg.org/pzp/pzp-set/src/branch/master/protospec.md)
|
||||
|
||||
### [Dicts](https://codeberg.org/pzp/pzp-dict/src/branch/master/protospec.md)
|
||||
|
||||
|
||||
## Messages
|
||||
## Further exploration
|
||||
|
||||
https://github.com/staltz/ppppp-db/blob/master/protospec.md
|
||||
### Code
|
||||
|
||||
PZP is not ready for end users yet but it's stable enough for developers to have a fun time hacking with/on it. All the code is available [on codeberg](https://codeberg.org/pzp)
|
||||
|
||||
## RPC methods
|
||||
### SDK
|
||||
|
||||
- [Replication](https://github.com/staltz/ppppp-sync/blob/master/protospec.md)
|
||||
We have [a simple SDK](https://codeberg.org/pzp/pzp-sdk) that helps you get started making PZP apps.
|
||||
|
||||
## Other
|
||||
### Demo app
|
||||
|
||||
- [ppppp-invite](https://github.com/staltz/ppppp-invite/blob/master/protospec.md)
|
||||
|
||||
- [ppppp-set](https://github.com/staltz/ppppp-set/blob/master/protospec.md)
|
||||
|
||||
- [ppppp-dict](https://github.com/staltz/ppppp-dict/blob/master/protospec.md)
|
||||
[A demo app](https://codeberg.org/pzp/zooboard) demonstrating some PZP features. Take a look at the code for inspiration. Note that you probably have to be a developer to build and use it.
|
||||
|
||||
[local-first]: https://www.inkandswitch.com/local-first/
|
||||
[lipmaa]: https://github.com/AljoschaMeyer/bamboo#links-and-entry-verification
|
||||
[zooboard]: https://codeberg.org/pzp/zooboard
|
||||
[ssb]: https://scuttlebutt.nz/
|
||||
|
|
|
@ -4,46 +4,42 @@ import styles from './styles.module.css';
|
|||
|
||||
const FeatureList = [
|
||||
{
|
||||
title: 'Easy to Use',
|
||||
Svg: require('@site/static/img/undraw_docusaurus_mountain.svg').default,
|
||||
title: 'Code',
|
||||
description: (
|
||||
<>
|
||||
Docusaurus was designed from the ground up to be easily installed and
|
||||
used to get your website up and running quickly.
|
||||
PZP is not ready for end users yet but it's stable enough for developers to have a fun time hacking with/on it.
|
||||
</>
|
||||
),
|
||||
link: 'https://codeberg.org/pzp',
|
||||
},
|
||||
{
|
||||
title: 'Focus on What Matters',
|
||||
Svg: require('@site/static/img/undraw_docusaurus_tree.svg').default,
|
||||
title: 'SDK',
|
||||
description: (
|
||||
<>
|
||||
Docusaurus lets you focus on your docs, and we'll do the chores. Go
|
||||
ahead and move your docs into the <code>docs</code> directory.
|
||||
We have a simple SDK that helps you get started making PZP apps.
|
||||
</>
|
||||
),
|
||||
link: 'https://codeberg.org/pzp/pzp-sdk',
|
||||
},
|
||||
{
|
||||
title: 'Powered by React',
|
||||
Svg: require('@site/static/img/undraw_docusaurus_react.svg').default,
|
||||
title: 'Demo app',
|
||||
description: (
|
||||
<>
|
||||
Extend or customize your website layout by reusing React. Docusaurus can
|
||||
be extended while reusing the same header and footer.
|
||||
A demo app demonstrating some PZP features. Take a look at the code for inspiration. Note that you probably have to be a developer to build and use it.
|
||||
</>
|
||||
),
|
||||
link: 'https://codeberg.org/pzp/zooboard',
|
||||
},
|
||||
];
|
||||
|
||||
function Feature({Svg, title, description}) {
|
||||
function Feature({title, description, link}) {
|
||||
return (
|
||||
<div className={clsx('col col--4')}>
|
||||
<div className="text--center">
|
||||
<Svg className={styles.featureSvg} role="img" />
|
||||
</div>
|
||||
<div className="text--center padding-horiz--md">
|
||||
<a href={link} target='_blank' style={{color: 'var(--ifm-font-color-base)'}}>
|
||||
<h3>{title}</h3>
|
||||
<p>{description}</p>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
|
|
Loading…
Reference in New Issue