/aquadoggo

Node server for the p2panda network handling validation, storage, aggregation and replication of bamboo append-only logs

Primary LanguageRustGNU Affero General Public License v3.0AGPL-3.0

aquadoggo

Embeddable p2p network node

CI Status Codecov Report Crates.io version

Configurable node server implementation for the p2panda network running as a command line application or embedded via the library inside your Rust program.

The core p2panda specification is fully functional but still under review so please be prepared for breaking API changes until we reach v1.0. Currently no p2panda implementation has recieved a security audit.

Features

  • Awaits signed operations from clients via GraphQL.
  • Verifies the consistency, format and signature of operations and rejects invalid ones.
  • Stores operations of the network in an SQL database of your choice (SQLite, PostgreSQL).
  • Materializes views on top of the known data.
  • Answers filterable and paginated data queries via GraphQL.
  • Discovers other nodes in local network and internet.
  • Replicates data with other nodes.

Example

Embed the node server in your Rust application or web container like Tauri:

use aquadoggo::{Configuration, Node};

let config = Configuration::default();
let node = Node::start(config).await;

You can also run the node server simply as a command line application:

# Compile and run local node at http://localhost:2020/graphql
cargo run

# Enable logging
RUST_LOG=aquadoggo=info cargo run

.. or run it inside a Docker container:

docker run -p 2020:2020 -e RUST_LOG=aquadoggo=info p2panda/aquadoggo

Installation

cargo add aquadoggo

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