206 releases
new 0.7.45 | Dec 11, 2024 |
---|---|
0.7.43 | Nov 21, 2024 |
0.7.28 | Jul 30, 2024 |
0.7.1 | Mar 21, 2024 |
0.1.4 | Jul 26, 2022 |
#1168 in Network programming
1,060 downloads per month
Used in divviup-cli
425KB
10K
SLoC
janus_client
janus_client
is a self-contained implementation of the Distributed Aggregation Protocol's client role. It is intended for use with Janus and Divvi Up, ISRG's privacy-respecting metrics service. janus_client
is published to crates.io by a GitHub Action that runs when a janus
release is created.
lib.rs
:
A DAP client
This library implements the client role of the DAP-PPM protocol. It uploads measurements to two DAP aggregator servers which in turn compute a statistical aggregate over data from many clients, while preserving the privacy of each client's data.
Examples
use url::Url;
use prio::vdaf::prio3::Prio3Histogram;
use janus_messages::{Duration, TaskId};
use std::str::FromStr;
#[tokio::main]
async fn main() {
let leader_url = Url::parse("https://leader.example.com/").unwrap();
let helper_url = Url::parse("https://helper.example.com/").unwrap();
let vdaf = Prio3Histogram::new_histogram(
2,
12,
4
).unwrap();
let taskid = "rc0jgm1MHH6Q7fcI4ZdNUxas9DAYLcJFK5CL7xUl-gU";
let task = TaskId::from_str(taskid).unwrap();
let client = janus_client::Client::new(
task,
leader_url,
helper_url,
Duration::from_seconds(300),
vdaf
)
.await
.unwrap();
client.upload(&5).await.unwrap();
}
Dependencies
~38–53MB
~1M SLoC