NAC_Blockchain/xtzh-ai/src/constants.rs

313 lines
8.7 KiB
Rust
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

//! 常量定义
//!
//! 本模块定义XTZH AI系统中所有常量包括模型参数、数据工程参数、
//! 预言机网络参数等。
// ============================================================================
// 模型架构常量
// ============================================================================
/// 输入特征维度50维宏观状态向量
pub const INPUT_DIM: usize = 50;
/// Transformer编码器层数
pub const TRANSFORMER_LAYERS: usize = 4;
/// 注意力头数
pub const ATTENTION_HEADS: usize = 8;
/// 嵌入维度
pub const EMBED_DIM: usize = 256;
/// 宏观上下文向量维度
pub const CONTEXT_DIM: usize = 128;
/// 商品偏离系数维度
pub const COMMODITY_DELTA_DIM: usize = 18;
/// 模型总参数量
pub const MODEL_PARAMETERS: usize = 2_100_000;
/// 最大约束数量zkML编译
pub const MAX_CONSTRAINTS: usize = 25_000_000;
// ============================================================================
// 特征工程常量
// ============================================================================
/// 全球增长因子维度
pub const GROWTH_FACTOR_DIM: usize = 10;
/// 通胀压力因子维度
pub const INFLATION_FACTOR_DIM: usize = 8;
/// 货币政策立场维度
pub const MONETARY_POLICY_DIM: usize = 6;
/// 风险与不确定性维度
pub const RISK_FACTOR_DIM: usize = 8;
/// 实体活动高频代理维度
pub const ACTIVITY_PROXY_DIM: usize = 10;
/// 商品市场内部结构维度
pub const COMMODITY_STRUCTURE_DIM: usize = 8;
/// 数据更新时间UTC小时
pub const DATA_UPDATE_HOUR: u32 = 12;
/// 数据延迟容忍度(分钟)
pub const DATA_DELAY_TOLERANCE_MINUTES: u32 = 5;
/// z-score标准化基准期开始年份
pub const NORMALIZATION_START_YEAR: i32 = 2015;
/// z-score标准化基准期结束年份
pub const NORMALIZATION_END_YEAR: i32 = 2025;
/// 历史数据回溯开始年份
pub const HISTORICAL_DATA_START_YEAR: i32 = 2000;
// ============================================================================
// 量化常量
// ============================================================================
/// INT8量化缩放因子
pub const QUANTIZATION_SCALE: f32 = 0.023529;
/// INT8量化零点
pub const QUANTIZATION_ZERO_POINT: i8 = 0;
/// INT8最小值
pub const INT8_MIN: i8 = -128;
/// INT8最大值
pub const INT8_MAX: i8 = 127;
// ============================================================================
// 权重约束常量(宪法层)
// ============================================================================
/// 货币层权重基准(基点)
pub const W_FX_BASE: u32 = 4000; // 40.00%
/// 黄金层权重基准(基点)
pub const W_AU_BASE: u32 = 1000; // 10.00%
/// 商品层权重基准(基点)
pub const W_COM_BASE: u32 = 5000; // 50.00%
/// 黄金层权重最小值(基点)
pub const W_AU_MIN: u32 = 500; // 5.00%
/// 黄金层权重最大值(基点)
pub const W_AU_MAX: u32 = 2000; // 20.00%
/// 权重和(基点)
pub const WEIGHT_SUM: u32 = 10000; // 100.00%
/// 黄金永续合约信任锚覆盖率(基点)
pub const GOLD_TRUST_ANCHOR_COVERAGE: u32 = 12500; // 125.00%
// ============================================================================
// 性能指标常量
// ============================================================================
/// 宏观预测R²最小值
pub const MIN_R_SQUARED: f64 = 0.65;
/// 单一指数R²最小值
pub const MIN_SINGLE_R_SQUARED: f64 = 0.5;
/// XTZH汇率预测RMSE最大值SDR
pub const MAX_RATE_RMSE: f64 = 0.02;
/// 极端情景波动率倍数
pub const EXTREME_VOLATILITY_MULTIPLIER: f64 = 2.0;
/// 2008金融危机最大回撤百分比
pub const MAX_DRAWDOWN_2008: f64 = 15.0;
/// 模型推理最大时间(毫秒)
pub const MAX_INFERENCE_TIME_MS: u64 = 100;
/// ZK证明生成最大时间
pub const MAX_ZK_PROOF_TIME_SECS: u64 = 10;
/// TEE推理最大时间毫秒
pub const MAX_TEE_INFERENCE_TIME_MS: u64 = 500;
/// 单元测试覆盖率最小值(百分比)
pub const MIN_TEST_COVERAGE: f64 = 80.0;
// ============================================================================
// 预言机网络常量
// ============================================================================
/// ZK节点数量
pub const ZK_NODE_COUNT: usize = 3;
/// TEE节点数量
pub const TEE_NODE_COUNT: usize = 2;
/// 乐观节点数量
pub const OPTIMISTIC_NODE_COUNT: usize = 2;
/// 总节点数量
pub const TOTAL_NODE_COUNT: usize = ZK_NODE_COUNT + TEE_NODE_COUNT + OPTIMISTIC_NODE_COUNT;
/// 最小有效响应数量
pub const MIN_VALID_RESPONSES: usize = 5;
/// 汇率偏差容忍度(基点)
pub const RATE_DEVIATION_TOLERANCE_BPS: u32 = 30; // 0.3%
/// BLS签名最小节点数
pub const MIN_BLS_SIGNERS: usize = 5;
/// Leader选举周期小时
pub const LEADER_ELECTION_PERIOD_HOURS: u64 = 24;
/// Leader超时时间
pub const LEADER_TIMEOUT_SECS: u64 = 30;
/// 节点质押金额XIC
pub const NODE_STAKE_AMOUNT: u64 = 100_000;
/// Leader额外质押金额XIC
pub const LEADER_EXTRA_STAKE_AMOUNT: u64 = 500_000;
/// 罚没比例(百分比)
pub const SLASHING_PERCENTAGE: f64 = 50.0;
// ============================================================================
// 证明系统常量
// ============================================================================
/// Groth16证明大小字节
pub const GROTH16_PROOF_SIZE: usize = 1216;
/// 验证密钥大小(字节)
pub const VERIFICATION_KEY_SIZE: usize = 51200; // ~50KB
/// 证明密钥大小(字节)
pub const PROVING_KEY_SIZE: usize = 1_258_291_200; // ~1.2GB
/// 链上验证Gas成本
pub const VERIFICATION_GAS_COST: u64 = 20_000;
/// TEE认证报告大小字节
pub const TEE_ATTESTATION_SIZE: usize = 4096; // ~4KB
/// Ed25519签名大小字节
pub const ED25519_SIGNATURE_SIZE: usize = 64;
// ============================================================================
// 数据格式常量
// ============================================================================
/// 汇率定点数精度
pub const RATE_PRECISION: u64 = 1_000_000; // 1e6
/// 权重基点精度
pub const WEIGHT_BASIS_POINTS: u32 = 10_000; // 1e4
/// 商品偏离系数最小值
pub const DELTA_MIN: i8 = -30;
/// 商品偏离系数最大值
pub const DELTA_MAX: i8 = 30;
// ============================================================================
// API常量
// ============================================================================
/// gRPC默认端口
pub const GRPC_DEFAULT_PORT: u16 = 50051;
/// JSON-RPC默认端口
pub const JSON_RPC_DEFAULT_PORT: u16 = 8545;
/// Prometheus指标端口
pub const METRICS_PORT: u16 = 9090;
/// 健康检查端点
pub const HEALTH_CHECK_ENDPOINT: &str = "/healthz";
/// API请求速率限制每秒
pub const API_RATE_LIMIT_PER_SEC: u32 = 100;
/// API超时时间
pub const API_TIMEOUT_SECS: u64 = 30;
// ============================================================================
// 文件路径常量
// ============================================================================
/// 模型文件名
pub const MODEL_FILE_NAME: &str = "xtzh_model_v1.0.onnx";
/// INT8量化模型文件名
pub const MODEL_INT8_FILE_NAME: &str = "xtzh_model_v1.0.int8.onnx";
/// FP16模型文件名
pub const MODEL_FP16_FILE_NAME: &str = "xtzh_model_v1.0.fp16.onnx";
/// 证明密钥文件名
pub const PROVING_KEY_FILE_NAME: &str = "circuit.zkey";
/// 验证密钥文件名
pub const VERIFICATION_KEY_FILE_NAME: &str = "verification_key.json";
/// 配置文件名
pub const CONFIG_FILE_NAME: &str = "xtzh_config.toml";
// ============================================================================
// 测试
// ============================================================================
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_feature_dimensions() {
assert_eq!(
GROWTH_FACTOR_DIM
+ INFLATION_FACTOR_DIM
+ MONETARY_POLICY_DIM
+ RISK_FACTOR_DIM
+ ACTIVITY_PROXY_DIM
+ COMMODITY_STRUCTURE_DIM,
INPUT_DIM
);
}
#[test]
fn test_weight_sum() {
assert_eq!(W_FX_BASE + W_AU_BASE + W_COM_BASE, WEIGHT_SUM);
}
#[test]
fn test_node_count() {
assert_eq!(
ZK_NODE_COUNT + TEE_NODE_COUNT + OPTIMISTIC_NODE_COUNT,
TOTAL_NODE_COUNT
);
}
#[test]
fn test_gold_weight_constraints() {
assert!(W_AU_MIN >= 500);
assert!(W_AU_MAX <= 2000);
assert!(W_AU_BASE >= W_AU_MIN);
assert!(W_AU_BASE <= W_AU_MAX);
}
#[test]
fn test_quantization_constants() {
assert_eq!(QUANTIZATION_ZERO_POINT, 0);
assert!(QUANTIZATION_SCALE > 0.0);
}
}