This library provides all tools required to write a client, node or even your
own protocol implementation 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.
The core p2panda
specification
is fully functional but still under review so please be prepared for breaking API changes until we reachv1.0
. Currently no p2panda implementation has recieved a security audit.
Installation
Example
use encode_entry;
use EntryBuilder;
use KeyPair;
use encode_operation;
use OperationBuilder;
// Id of the schema which describes the data we want to publish. This should
// already be known to the node we are publishing to.
pub const SCHEMA_ID: &str =
"profile_0020c65567ae37efea293e34a9c7d13f8f2bf23dbdc3b5c7b9ab46293111c48fc78b";
// Generate new Ed25519 key pair.
let key_pair = new;
// Add field data to "create" operation.
let operation = new
.fields
.build?;
// Encode operation into bytes.
let encoded_operation = encode_operation?;
// Create Bamboo entry (append-only log data type) with operation as payload.
let entry = new.sign?;
// Encode entry into bytes.
let encoded_entry = encode_entry?;
println!;
Run this code from the examples
folder:
Development
You will need the following tools to start development:
# Run tests
# Run WebAssembly tests
License
GNU Affero General Public License v3.0 AGPL-3.0-or-later
Supported by
This project has received funding from the European Union’s Horizon 2020 research and innovation programme within the framework of the NGI-POINTER Project funded under grant agreement No 871528