Files
aitbc/apps/zk-circuits/ml_training_verification.circom
oib 15427c96c0 chore: update file permissions to executable across repository
- Change file mode from 644 to 755 for all project files
- Add chain_id parameter to get_balance RPC endpoint with default "ait-devnet"
- Rename Miner.extra_meta_data to extra_metadata for consistency
2026-03-06 22:17:54 +01:00

49 lines
1.5 KiB
Plaintext
Executable File

pragma circom 2.0.0;
include "node_modules/circomlib/circuits/poseidon.circom";
/*
* Simplified ML Training Verification Circuit
*
* Basic proof of gradient descent training without complex hashing
*/
template SimpleTrainingVerification(PARAM_COUNT, EPOCHS) {
signal input initial_parameters[PARAM_COUNT];
signal input learning_rate;
signal output final_parameters[PARAM_COUNT];
signal output training_complete;
// Input validation constraints
// Learning rate should be positive and reasonable (0 < lr < 1)
learning_rate * (1 - learning_rate) === learning_rate; // Ensures 0 < lr < 1
// Simulate simple training epochs
signal current_parameters[EPOCHS + 1][PARAM_COUNT];
// Initialize with initial parameters
for (var i = 0; i < PARAM_COUNT; i++) {
current_parameters[0][i] <== initial_parameters[i];
}
// Simple training: gradient descent simulation
for (var e = 0; e < EPOCHS; e++) {
for (var i = 0; i < PARAM_COUNT; i++) {
// Simplified gradient descent: param = param - learning_rate * gradient_constant
// Using constant gradient of 0.1 for demonstration
current_parameters[e + 1][i] <== current_parameters[e][i] - learning_rate * 1;
}
}
// Output final parameters
for (var i = 0; i < PARAM_COUNT; i++) {
final_parameters[i] <== current_parameters[EPOCHS][i];
}
// Training completion constraint
training_complete <== 1;
}
component main = SimpleTrainingVerification(4, 3);