11个版本 (7个重大更新)
0.8.1 | 2023年11月19日 |
---|---|
0.7.1 | 2023年7月27日 |
0.7.0 | 2023年3月6日 |
0.6.0 | 2022年9月7日 |
0.1.0 | 2021年1月28日 |
#3 in #entry
每月128次下载
在 2 crates 中使用
1MB
16K SLoC
p2panda-rs
熊猫所需的所有功能(针对Rust)
此库提供了编写p2panda
网络客户端、节点甚至您自己的协议实现的所需所有工具。它既以带有WebAssembly绑定的Rust crate p2panda-rs
的形式提供,也以带有TypeScript定义的NPM包 p2panda-js
的形式提供,在NodeJS或任何现代Web浏览器中运行。
核心p2panda
specification
完全功能但仍在审查中,因此请做好API更改的准备,直到我们达到v1.0
。目前没有任何p2panda实现接受了安全审计。
安装
cargo add p2panda-rs
示例
use p2panda_rs::entry::encode::encode_entry;
use p2panda_rs::entry::EntryBuilder;
use p2panda_rs::identity::KeyPair;
use p2panda_rs::operation::encode::encode_operation;
use p2panda_rs::operation::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 = KeyPair::new();
// Add field data to "create" operation.
let operation = OperationBuilder::new(&SCHEMA_ID.parse()?)
.fields(&[("username", "panda".into())])
.build()?;
// Encode operation into bytes.
let encoded_operation = encode_operation(&operation)?;
// Create Bamboo entry (append-only log data type) with operation as payload.
let entry = EntryBuilder::new().sign(&encoded_operation, &key_pair)?;
// Encode entry into bytes.
let encoded_entry = encode_entry(&entry)?;
println!("{} {}", encoded_entry, encoded_operation);
从examples
文件夹中运行此代码
cargo run --example=create_operation
开发
您需要以下工具以开始开发
# Run tests
cargo test
# Run WebAssembly tests
wasm-pack test --headless --firefox
许可证
GNU Affero通用公共许可证v3.0 AGPL-3.0-或-后续
支持者
本项目已获得欧洲联盟“地平线2020”研究和创新计划资助,该计划在NGI-POINTER项目(资助协议号871528)和NGI-ASSURE项目(资助协议号957073)框架下进行。
依赖项
~8–14MB
~250K SLoC