Skip to content
main
Switch branches/tags
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
 
 
 
 
 
 

p2🐼

p2panda is a user-friendly peer-to-peer communications protocol for secure, energy-efficient, offline- and local-first web applications. We want this protocol to be a playful tool for people to hack, build, play, and experiment with.

Messages in p2panda are signed, encrypted and published by clients using the Bamboo append-only log data type which gets distributed over the network to other peers. p2panda allows for decentralised and federated network topologies or even hybrids of these and aims at running in web browsers without loosing its cryptographic features.

p2panda is currently very much in prototyping and specification phase, our milestones and progress can be seen below. If you're interested in any of these topics please get in touch!

Topics we're interested in

  • Browser friendliness: Lightweight clients that can easily be implemented as websites.
  • Decentralization: Networks consist of both federated or decentralised nodes.
  • Deletion: Data can be deleted without loosing verifiability and log integrity.
  • Encryption: Transport communication is end-to-end encrypted via SSB's Secret Handshake, data is encrypted for groups via the Messaging Layer Security (MLS) protocol.
  • Energy efficiency: Data- and energy-efficient storage and replication.
  • Fork proof: Automatic detection of accidentially or maliciously forked append-only logs.
  • Identities: A user account model that gives people options for managing one or multiple online identities across devices.
  • Integrity: Authorship of all published data can be verified through signatures.
  • Local- & offline first: Access to online services without reliable and performant internet infrastructure. Independence from the corporate cloud.
  • Low-power electronics: Useable on low power devices.
  • Moderation: Decentralised content moderation for users and groups.
  • Partial replication: Nodes do not need to download the whole log to verify them.
  • Schemas: User data is stored in published, versioned data schemas so data can be reliably accessed across services.
  • Warmth: Computers make it easy to get carried away by their rigidly structured ways. However, every computer also contains an undeniable spark of pure chaos. We want to capture that spark to ignite a campfire for you to gather around and get cosy.

Background

p2panda emerged out of activities around the self-curated zine BLATT 3000 (2014) and subsequent festivals VERANTWORTUNG 3000 (2016) and HOFFNUNG 3000 (2017), the latter of these being the catalyst for building a custom platform designed to help communities organise in a decentralised manner, also called HOFFNUNG 3000.

While exploring building a p2p festival platform we met many people from the communities around Secure Scuttlebutt, DAT / Hypercore, Cabal, Chaos Computer Club, Fediverse, Antiuniversity Now, Pixelache trying to understand how this technology affects the way we organise ourselves.

p2panda - サービス!サービス!

サービス!サービス!

This led to a group of people interested in realising a protocol for p2p communication, which ultimately should serve as a tool to build applications, like a festival tool and more. We've been meeting regularly on Mondays since 2019 to hack p2panda and have recently reached the point where we have a publicly running demo project. We have also been active in some other projects including the Liebe Chaos Verein, organising a p2p gathering and a reading group in Berlin. Obviously we're still going to organise another festival sometime 🐼.

Overview

These libraries and applications are current work-in-progress reference implementations. See the Milestones below for current progress status.

Libraries

  • p2panda: Provides tools to write a client for the p2panda network. It is shipped both as a Rust crate p2panda-rs with WebAssembly bindings and a NPM package p2panda-js with TypeScript definitions running in NodeJS or any modern web browser.

Nodes

  • aquadoggo: RPC node server for the p2panda network running as a standalone application or Rust aquadoggo crate.
  • fishyfish: Command line interface to manage p2panda nodes.

Clients

Milestones

  • Ed25519 key pair generation and handling
  • Bamboo Entry creation
  • Entry signing and validation
  • SQLite / PostgreSQL / MySQL support for data storage
  • WebAssembly support in the browser
  • aquadoggo HTTP and WebSocket RPC API
  • Publish first v0.1.0 p2panda-rs crate and p2panda-js npm package
  • Message specification, creation and validation
  • CBOR encoding and basic CDDL validation of messages
  • Experimental chat demo application
  • Embed aquadoggo library in Tauri container
  • Stabilize p2panda-js API, release 0.2.0 (in progress)
  • Naive materialization of data from logs (in progress)
  • Schemas and data validation (in progress)
  • Publish aquadoggo crate 0.1.0
  • Simple query interface to read data
  • Manually follow other nodes
  • Automatic local discovery via mDNS
  • Schema migrations
  • Persona schema to manage identities and key pairs
  • Efficient materialization of data from logs
  • Naive replication protocol
  • Transport encryption between nodes via SSB Secret Handshake
  • Message encryption for groups via OpenMLS
  • Automatic discovery via gossip protocol
  • Efficient point2point replication protocol
  • Schema backwards compatibility via lenses
  • p2panda specification 1.0 release 🐼
  • Automatic deletion of unused data
  • Automatic detection of forked logs
  • Filter and content moderation curated by users and groups

How to contribute

Further links

License

CC-BY-SA-4.0 License