feat: add marketplace metrics, privacy features, and service registry endpoints

- Add Prometheus metrics for marketplace API throughput and error rates with new dashboard panels
- Implement confidential transaction models with encryption support and access control
- Add key management system with registration, rotation, and audit logging
- Create services and registry routers for service discovery and management
- Integrate ZK proof generation for privacy-preserving receipts
- Add metrics instru
This commit is contained in:
oib
2025-12-22 10:33:23 +01:00
parent d98b2c7772
commit c8be9d7414
260 changed files with 59033 additions and 351 deletions

View File

@ -0,0 +1,125 @@
pragma circom 2.0.0;
include "circomlib/circuits/bitify.circom";
include "circomlib/circuits/escalarmulfix.circom";
include "circomlib/circuits/comparators.circom";
include "circomlib/circuits/poseidon.circom";
/*
* Receipt Attestation Circuit
*
* This circuit proves that a receipt is valid without revealing sensitive details.
*
* Public Inputs:
* - receiptHash: Hash of the receipt (for public verification)
* - settlementAmount: Amount to be settled (public)
* - timestamp: Receipt timestamp (public)
*
* Private Inputs:
* - receipt: The full receipt data (private)
* - computationResult: Result of the computation (private)
* - pricingRate: Pricing rate used (private)
* - minerReward: Reward for miner (private)
* - coordinatorFee: Fee for coordinator (private)
*/
template ReceiptAttestation() {
// Public signals
signal input receiptHash;
signal input settlementAmount;
signal input timestamp;
// Private signals
signal input receipt[8];
signal input computationResult;
signal input pricingRate;
signal input minerReward;
signal input coordinatorFee;
// Components
component hasher = Poseidon(8);
component amountChecker = GreaterEqThan(8);
component feeCalculator = Add8(8);
// Hash the receipt to verify it matches the public hash
for (var i = 0; i < 8; i++) {
hasher.inputs[i] <== receipt[i];
}
// Ensure the computed hash matches the public hash
hasher.out === receiptHash;
// Verify settlement amount calculation
// settlementAmount = minerReward + coordinatorFee
feeCalculator.a[0] <== minerReward;
feeCalculator.a[1] <== coordinatorFee;
for (var i = 2; i < 8; i++) {
feeCalculator.a[i] <== 0;
}
feeCalculator.out === settlementAmount;
// Ensure amounts are non-negative
amountChecker.in[0] <== settlementAmount;
amountChecker.in[1] <== 0;
amountChecker.out === 1;
// Additional constraints can be added here:
// - Timestamp validation
// - Pricing rate bounds
// - Computation result format
}
/*
* Simplified Receipt Hash Preimage Circuit
*
* This is a minimal circuit for initial testing that proves
* knowledge of a receipt preimage without revealing it.
*/
template ReceiptHashPreimage() {
// Public signal
signal input hash;
// Private signals (receipt data)
signal input data[4];
// Hash component
component poseidon = Poseidon(4);
// Connect inputs
for (var i = 0; i < 4; i++) {
poseidon.inputs[i] <== data[i];
}
// Constraint: computed hash must match public hash
poseidon.out === hash;
}
/*
* ECDSA Signature Verification Component
*
* Verifies that a receipt was signed by the coordinator
*/
template ECDSAVerify() {
// Public inputs
signal input publicKey[2];
signal input messageHash;
signal input signature[2];
// Private inputs
signal input r;
signal input s;
// Note: Full ECDSA verification in circom is complex
// This is a placeholder for the actual implementation
// In practice, we'd use a more efficient approach like:
// - EDDSA verification (simpler in circom)
// - Or move signature verification off-chain
// Placeholder constraint
signature[0] * signature[1] === r * s;
}
/*
* Main circuit for initial implementation
*/
component main = ReceiptHashPreimage();