secure-fl 2026.3.17.dev1__tar.gz → 2026.3.17.dev2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {secure_fl-2026.3.17.dev1 → secure_fl-2026.3.17.dev2}/.gitignore +1 -1
- {secure_fl-2026.3.17.dev1 → secure_fl-2026.3.17.dev2}/PKG-INFO +1 -1
- secure_fl-2026.3.17.dev2/src/secure_fl/.build_number +1 -0
- secure_fl-2026.3.17.dev2/src/secure_fl/proofs/server/aggregation.circom +55 -0
- secure_fl-2026.3.17.dev1/src/secure_fl/.build_number +0 -1
- {secure_fl-2026.3.17.dev1 → secure_fl-2026.3.17.dev2}/LICENSE +0 -0
- {secure_fl-2026.3.17.dev1 → secure_fl-2026.3.17.dev2}/README.md +0 -0
- {secure_fl-2026.3.17.dev1 → secure_fl-2026.3.17.dev2}/docs/research paper/README.md +0 -0
- {secure_fl-2026.3.17.dev1 → secure_fl-2026.3.17.dev2}/experiments/README.md +0 -0
- {secure_fl-2026.3.17.dev1 → secure_fl-2026.3.17.dev2}/pyproject.toml +0 -0
- {secure_fl-2026.3.17.dev1 → secure_fl-2026.3.17.dev2}/src/secure_fl/__init__.py +0 -0
- {secure_fl-2026.3.17.dev1 → secure_fl-2026.3.17.dev2}/src/secure_fl/__main__.py +0 -0
- {secure_fl-2026.3.17.dev1 → secure_fl-2026.3.17.dev2}/src/secure_fl/benchmarks/__init__.py +0 -0
- {secure_fl-2026.3.17.dev1 → secure_fl-2026.3.17.dev2}/src/secure_fl/benchmarks/defaults.py +0 -0
- {secure_fl-2026.3.17.dev1 → secure_fl-2026.3.17.dev2}/src/secure_fl/benchmarks/execution.py +0 -0
- {secure_fl-2026.3.17.dev1 → secure_fl-2026.3.17.dev2}/src/secure_fl/benchmarks/pipeline.py +0 -0
- {secure_fl-2026.3.17.dev1 → secure_fl-2026.3.17.dev2}/src/secure_fl/benchmarks/reporting.py +0 -0
- {secure_fl-2026.3.17.dev1 → secure_fl-2026.3.17.dev2}/src/secure_fl/cli/__init__.py +0 -0
- {secure_fl-2026.3.17.dev1 → secure_fl-2026.3.17.dev2}/src/secure_fl/cli/__main__.py +0 -0
- {secure_fl-2026.3.17.dev1 → secure_fl-2026.3.17.dev2}/src/secure_fl/cli/handlers.py +0 -0
- {secure_fl-2026.3.17.dev1 → secure_fl-2026.3.17.dev2}/src/secure_fl/cli/main.py +0 -0
- {secure_fl-2026.3.17.dev1 → secure_fl-2026.3.17.dev2}/src/secure_fl/cli/setup.py +0 -0
- {secure_fl-2026.3.17.dev1 → secure_fl-2026.3.17.dev2}/src/secure_fl/cli/zkp_check.py +0 -0
- {secure_fl-2026.3.17.dev1 → secure_fl-2026.3.17.dev2}/src/secure_fl/core/__init__.py +0 -0
- {secure_fl-2026.3.17.dev1 → secure_fl-2026.3.17.dev2}/src/secure_fl/core/_version.py +0 -0
- {secure_fl-2026.3.17.dev1 → secure_fl-2026.3.17.dev2}/src/secure_fl/core/config.py +0 -0
- {secure_fl-2026.3.17.dev1 → secure_fl-2026.3.17.dev2}/src/secure_fl/core/exceptions.py +0 -0
- {secure_fl-2026.3.17.dev1 → secure_fl-2026.3.17.dev2}/src/secure_fl/core/types.py +0 -0
- {secure_fl-2026.3.17.dev1 → secure_fl-2026.3.17.dev2}/src/secure_fl/data/__init__.py +0 -0
- {secure_fl-2026.3.17.dev1 → secure_fl-2026.3.17.dev2}/src/secure_fl/data/benchmark_data.py +0 -0
- {secure_fl-2026.3.17.dev1 → secure_fl-2026.3.17.dev2}/src/secure_fl/federation/__init__.py +0 -0
- {secure_fl-2026.3.17.dev1 → secure_fl-2026.3.17.dev2}/src/secure_fl/federation/aggregation.py +0 -0
- {secure_fl-2026.3.17.dev1 → secure_fl-2026.3.17.dev2}/src/secure_fl/federation/client.py +0 -0
- {secure_fl-2026.3.17.dev1 → secure_fl-2026.3.17.dev2}/src/secure_fl/federation/client_runtime.py +0 -0
- {secure_fl-2026.3.17.dev1 → secure_fl-2026.3.17.dev2}/src/secure_fl/federation/client_utils.py +0 -0
- {secure_fl-2026.3.17.dev1 → secure_fl-2026.3.17.dev2}/src/secure_fl/federation/server.py +0 -0
- {secure_fl-2026.3.17.dev1 → secure_fl-2026.3.17.dev2}/src/secure_fl/federation/server_runtime.py +0 -0
- {secure_fl-2026.3.17.dev1 → secure_fl-2026.3.17.dev2}/src/secure_fl/federation/stability_monitor.py +0 -0
- {secure_fl-2026.3.17.dev1 → secure_fl-2026.3.17.dev2}/src/secure_fl/models/__init__.py +0 -0
- {secure_fl-2026.3.17.dev1 → secure_fl-2026.3.17.dev2}/src/secure_fl/models/factory.py +0 -0
- {secure_fl-2026.3.17.dev1 → secure_fl-2026.3.17.dev2}/src/secure_fl/models/mnist_cnn.py +0 -0
- {secure_fl-2026.3.17.dev1 → secure_fl-2026.3.17.dev2}/src/secure_fl/models/simple.py +0 -0
- {secure_fl-2026.3.17.dev1 → secure_fl-2026.3.17.dev2}/src/secure_fl/proofs/__init__.py +0 -0
- {secure_fl-2026.3.17.dev1 → secure_fl-2026.3.17.dev2}/src/secure_fl/proofs/client_circuits/__init__.py +0 -0
- {secure_fl-2026.3.17.dev1 → secure_fl-2026.3.17.dev2}/src/secure_fl/proofs/client_circuits/delta_bound.py +0 -0
- {secure_fl-2026.3.17.dev1 → secure_fl-2026.3.17.dev2}/src/secure_fl/proofs/client_circuits/sgd_full_trace.cairo +0 -0
- {secure_fl-2026.3.17.dev1 → secure_fl-2026.3.17.dev2}/src/secure_fl/proofs/server/pot12_final.ptau +0 -0
- {secure_fl-2026.3.17.dev1 → secure_fl-2026.3.17.dev2}/src/secure_fl/proofs/server/test.txt +0 -0
- {secure_fl-2026.3.17.dev1 → secure_fl-2026.3.17.dev2}/src/secure_fl/py.typed +0 -0
- {secure_fl-2026.3.17.dev1 → secure_fl-2026.3.17.dev2}/src/secure_fl/utils/__init__.py +0 -0
- {secure_fl-2026.3.17.dev1 → secure_fl-2026.3.17.dev2}/src/secure_fl/utils/helpers.py +0 -0
- {secure_fl-2026.3.17.dev1 → secure_fl-2026.3.17.dev2}/src/secure_fl/utils/logging_config.py +0 -0
- {secure_fl-2026.3.17.dev1 → secure_fl-2026.3.17.dev2}/src/secure_fl/zkp/__init__.py +0 -0
- {secure_fl-2026.3.17.dev1 → secure_fl-2026.3.17.dev2}/src/secure_fl/zkp/base.py +0 -0
- {secure_fl-2026.3.17.dev1 → secure_fl-2026.3.17.dev2}/src/secure_fl/zkp/client_proof_manager.py +0 -0
- {secure_fl-2026.3.17.dev1 → secure_fl-2026.3.17.dev2}/src/secure_fl/zkp/proof_manager.py +0 -0
- {secure_fl-2026.3.17.dev1 → secure_fl-2026.3.17.dev2}/src/secure_fl/zkp/proof_schema.py +0 -0
- {secure_fl-2026.3.17.dev1 → secure_fl-2026.3.17.dev2}/src/secure_fl/zkp/quantization.py +0 -0
- {secure_fl-2026.3.17.dev1 → secure_fl-2026.3.17.dev2}/src/secure_fl/zkp/server_proof_manager.py +0 -0
- {secure_fl-2026.3.17.dev1 → secure_fl-2026.3.17.dev2}/src/secure_fl/zkp/server_setup.py +0 -0
- {secure_fl-2026.3.17.dev1 → secure_fl-2026.3.17.dev2}/src/secure_fl/zkp/server_snark_io.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: secure-fl
|
|
3
|
-
Version: 2026.3.17.
|
|
3
|
+
Version: 2026.3.17.dev2
|
|
4
4
|
Summary: Dual-Verifiable Framework for Federated Learning using Zero-Knowledge Proofs
|
|
5
5
|
Project-URL: Homepage, https://github.com/krishantt/secure-fl
|
|
6
6
|
Project-URL: Bug Reports, https://github.com/krishantt/secure-fl/issues
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
2026.03.17:2
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
pragma circom 2.0.0;
|
|
2
|
+
// Federated Learning Aggregation Circuit
|
|
3
|
+
|
|
4
|
+
template FedJSCMAggregation(n_clients, param_size) {
|
|
5
|
+
signal input client_deltas[n_clients][param_size];
|
|
6
|
+
signal input old_momentum[param_size];
|
|
7
|
+
signal input client_weights[n_clients];
|
|
8
|
+
signal input active_clients[n_clients];
|
|
9
|
+
signal input momentum_coeff;
|
|
10
|
+
signal input old_params[param_size];
|
|
11
|
+
|
|
12
|
+
signal output new_params[param_size];
|
|
13
|
+
signal output new_momentum[param_size];
|
|
14
|
+
|
|
15
|
+
// Intermediate signals for weighted sum
|
|
16
|
+
signal weighted_sum[param_size];
|
|
17
|
+
signal partial_sums[n_clients][param_size];
|
|
18
|
+
|
|
19
|
+
var SCALE = 1000000;
|
|
20
|
+
|
|
21
|
+
// Enforce active_clients as binary and zero-contribution for inactive slots.
|
|
22
|
+
for (var j = 0; j < n_clients; j++) {
|
|
23
|
+
active_clients[j] * (active_clients[j] - 1) === 0;
|
|
24
|
+
client_weights[j] * (1 - active_clients[j]) === 0;
|
|
25
|
+
for (var i = 0; i < param_size; i++) {
|
|
26
|
+
client_deltas[j][i] * (1 - active_clients[j]) === 0;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
// Calculate weighted deltas
|
|
31
|
+
for (var i = 0; i < param_size; i++) {
|
|
32
|
+
for (var j = 0; j < n_clients; j++) {
|
|
33
|
+
partial_sums[j][i] <== client_weights[j] * client_deltas[j][i] / SCALE;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
// Sum the weighted deltas
|
|
38
|
+
for (var i = 0; i < param_size; i++) {
|
|
39
|
+
var sum = 0;
|
|
40
|
+
for (var j = 0; j < n_clients; j++) {
|
|
41
|
+
sum += partial_sums[j][i];
|
|
42
|
+
}
|
|
43
|
+
weighted_sum[i] <== sum;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
// Compute momentum and new params
|
|
47
|
+
signal momentum_term[param_size];
|
|
48
|
+
for (var i = 0; i < param_size; i++) {
|
|
49
|
+
momentum_term[i] <== momentum_coeff * old_momentum[i] / SCALE;
|
|
50
|
+
new_momentum[i] <== momentum_term[i] + weighted_sum[i];
|
|
51
|
+
new_params[i] <== old_params[i] + new_momentum[i];
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
component main = FedJSCMAggregation(8, 50);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
2026.03.17:1
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{secure_fl-2026.3.17.dev1 → secure_fl-2026.3.17.dev2}/src/secure_fl/federation/aggregation.py
RENAMED
|
File without changes
|
|
File without changes
|
{secure_fl-2026.3.17.dev1 → secure_fl-2026.3.17.dev2}/src/secure_fl/federation/client_runtime.py
RENAMED
|
File without changes
|
{secure_fl-2026.3.17.dev1 → secure_fl-2026.3.17.dev2}/src/secure_fl/federation/client_utils.py
RENAMED
|
File without changes
|
|
File without changes
|
{secure_fl-2026.3.17.dev1 → secure_fl-2026.3.17.dev2}/src/secure_fl/federation/server_runtime.py
RENAMED
|
File without changes
|
{secure_fl-2026.3.17.dev1 → secure_fl-2026.3.17.dev2}/src/secure_fl/federation/stability_monitor.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{secure_fl-2026.3.17.dev1 → secure_fl-2026.3.17.dev2}/src/secure_fl/proofs/server/pot12_final.ptau
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{secure_fl-2026.3.17.dev1 → secure_fl-2026.3.17.dev2}/src/secure_fl/zkp/client_proof_manager.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{secure_fl-2026.3.17.dev1 → secure_fl-2026.3.17.dev2}/src/secure_fl/zkp/server_proof_manager.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|