diff --git a/_archive/acc20_v1_backup.rs b/_archive/acc20_v1_backup.rs index 7f3e986..1a98428 100644 --- a/_archive/acc20_v1_backup.rs +++ b/_archive/acc20_v1_backup.rs @@ -154,10 +154,10 @@ mod tests { let addr1 = Address::new([1u8; 32]); let addr2 = Address::new([2u8; 32]); - token.mint(&addr1, 1000).unwrap(); + token.mint(&addr1, 1000).expect("mainnet: handle error"); assert_eq!(token.balance_of(&addr1), 1000); - token.transfer(&addr1, &addr2, 500).unwrap(); + token.transfer(&addr1, &addr2, 500).expect("mainnet: handle error"); assert_eq!(token.balance_of(&addr1), 500); assert_eq!(token.balance_of(&addr2), 500); } diff --git a/_archive/standalone_acc_protocols/nac-acc-1400/src/compliance.rs b/_archive/standalone_acc_protocols/nac-acc-1400/src/compliance.rs index 0628acc..2074392 100644 --- a/_archive/standalone_acc_protocols/nac-acc-1400/src/compliance.rs +++ b/_archive/standalone_acc_protocols/nac-acc-1400/src/compliance.rs @@ -672,7 +672,7 @@ impl ComplianceSystem { fn current_timestamp() -> u64 { std::time::SystemTime::now() .duration_since(std::time::UNIX_EPOCH) - .unwrap() + .expect("mainnet: handle error") .as_secs() } } @@ -769,7 +769,7 @@ mod tests { false, "certifier1".to_string(), None, - ).unwrap(); + ).expect("mainnet: handle error"); system.set_investor_location( "investor1".to_string(), @@ -824,8 +824,8 @@ mod tests { system.update_holders(security_id, holders); // 生成持有人报告 - let report_id = system.generate_holder_report(&security_id, "admin".to_string()).unwrap(); - let report = system.get_report(&report_id).unwrap(); + let report_id = system.generate_holder_report(&security_id, "admin".to_string()).expect("mainnet: handle error"); + let report = system.get_report(&report_id).expect("mainnet: handle error"); assert_eq!(report.report_type, ReportType::HolderReport); // 生成投资者分类报告 @@ -837,10 +837,10 @@ mod tests { false, "certifier1".to_string(), None, - ).unwrap(); + ).expect("mainnet: handle error"); let report_id = system.generate_investor_classification_report("admin".to_string()); - let report = system.get_report(&report_id).unwrap(); + let report = system.get_report(&report_id).expect("mainnet: handle error"); assert_eq!(report.report_type, ReportType::InvestorClassificationReport); } } diff --git a/_archive/standalone_acc_protocols/nac-acc-1400/src/dividend.rs b/_archive/standalone_acc_protocols/nac-acc-1400/src/dividend.rs index 96f6305..10c4576 100644 --- a/_archive/standalone_acc_protocols/nac-acc-1400/src/dividend.rs +++ b/_archive/standalone_acc_protocols/nac-acc-1400/src/dividend.rs @@ -271,7 +271,7 @@ impl DividendEngine { fn current_timestamp() -> u64 { std::time::SystemTime::now() .duration_since(std::time::UNIX_EPOCH) - .unwrap() + .expect("mainnet: handle error") .as_secs() } } @@ -298,8 +298,8 @@ mod tests { let result = engine.declare_dividend(security_id, 10, 15, &holders); assert!(result.is_ok()); - let dividend_id = result.unwrap(); - let record = engine.get_dividend_record(÷nd_id).unwrap(); + let dividend_id = result.expect("mainnet: handle error"); + let record = engine.get_dividend_record(÷nd_id).expect("mainnet: handle error"); assert_eq!(record.amount_per_share, 10); assert_eq!(record.total_amount, 15000); // (1000 + 500) * 10 @@ -315,13 +315,13 @@ mod tests { let mut holders = HashMap::new(); holders.insert("investor1".to_string(), 1000); - let dividend_id = engine.declare_dividend(security_id, 10, 15, &holders).unwrap(); + let dividend_id = engine.declare_dividend(security_id, 10, 15, &holders).expect("mainnet: handle error"); // 分配股息 - engine.distribute_dividend(÷nd_id).unwrap(); + engine.distribute_dividend(÷nd_id).expect("mainnet: handle error"); // 领取股息 - let amount = engine.claim_dividend("investor1", ÷nd_id).unwrap(); + let amount = engine.claim_dividend("investor1", ÷nd_id).expect("mainnet: handle error"); // 税前: 1000 * 10 = 10000 // 税额: 10000 * 15% = 1500 @@ -341,8 +341,8 @@ mod tests { let mut holders = HashMap::new(); holders.insert("investor1".to_string(), 1000); - let dividend_id = engine.declare_dividend(security_id, 10, 15, &holders).unwrap(); - engine.distribute_dividend(÷nd_id).unwrap(); + let dividend_id = engine.declare_dividend(security_id, 10, 15, &holders).expect("mainnet: handle error"); + engine.distribute_dividend(÷nd_id).expect("mainnet: handle error"); let unclaimed = engine.get_unclaimed_dividends("investor1"); assert_eq!(unclaimed.len(), 1); @@ -352,7 +352,7 @@ mod tests { assert_eq!(total, 8500); // 领取后应该没有未领取股息 - engine.claim_dividend("investor1", ÷nd_id).unwrap(); + engine.claim_dividend("investor1", ÷nd_id).expect("mainnet: handle error"); let unclaimed = engine.get_unclaimed_dividends("investor1"); assert_eq!(unclaimed.len(), 0); } @@ -365,12 +365,12 @@ mod tests { let mut holders = HashMap::new(); holders.insert("investor1".to_string(), 1000); - let dividend_id = engine.declare_dividend(security_id, 10, 15, &holders).unwrap(); + let dividend_id = engine.declare_dividend(security_id, 10, 15, &holders).expect("mainnet: handle error"); // 取消分配 - engine.cancel_dividend(÷nd_id).unwrap(); + engine.cancel_dividend(÷nd_id).expect("mainnet: handle error"); - let record = engine.get_dividend_record(÷nd_id).unwrap(); + let record = engine.get_dividend_record(÷nd_id).expect("mainnet: handle error"); assert_eq!(record.status, DividendStatus::Cancelled); // 已取消的分配不能执行 @@ -387,14 +387,14 @@ mod tests { holders.insert("investor1".to_string(), 1000); // 第一次分配 - let div1 = engine.declare_dividend(security_id, 10, 15, &holders).unwrap(); - engine.distribute_dividend(&div1).unwrap(); - engine.claim_dividend("investor1", &div1).unwrap(); + let div1 = engine.declare_dividend(security_id, 10, 15, &holders).expect("mainnet: handle error"); + engine.distribute_dividend(&div1).expect("mainnet: handle error"); + engine.claim_dividend("investor1", &div1).expect("mainnet: handle error"); // 第二次分配 - let div2 = engine.declare_dividend(security_id, 20, 15, &holders).unwrap(); - engine.distribute_dividend(&div2).unwrap(); - engine.claim_dividend("investor1", &div2).unwrap(); + let div2 = engine.declare_dividend(security_id, 20, 15, &holders).expect("mainnet: handle error"); + engine.distribute_dividend(&div2).expect("mainnet: handle error"); + engine.claim_dividend("investor1", &div2).expect("mainnet: handle error"); let (gross, tax, net) = engine.calculate_total_dividend_income("investor1"); diff --git a/_archive/standalone_acc_protocols/nac-acc-1400/src/lib.rs b/_archive/standalone_acc_protocols/nac-acc-1400/src/lib.rs index 38f6b0e..1c23b5f 100644 --- a/_archive/standalone_acc_protocols/nac-acc-1400/src/lib.rs +++ b/_archive/standalone_acc_protocols/nac-acc-1400/src/lib.rs @@ -535,18 +535,18 @@ mod tests { common_stock_gnacs, PartitionType::CommonStock, ) - .unwrap(); + .expect("mainnet: handle error"); // 发行证券 acc1400 .issue_security(&security_id, "investor1", 10000) - .unwrap(); + .expect("mainnet: handle error"); // 检查余额 assert_eq!( acc1400 .balance_of_security(&security_id, "investor1") - .unwrap(), + .expect("mainnet: handle error"), 10000 ); } @@ -571,7 +571,7 @@ mod tests { gnacs, PartitionType::CommonStock, ) - .unwrap(); + .expect("mainnet: handle error"); // 设置白名单限制 acc1400.add_transfer_restriction( @@ -582,7 +582,7 @@ mod tests { // 发行证券 acc1400 .issue_security(&security_id, "investor1", 5000) - .unwrap(); + .expect("mainnet: handle error"); // 添加到白名单 acc1400 @@ -592,7 +592,7 @@ mod tests { None, None, ) - .unwrap(); + .expect("mainnet: handle error"); acc1400 .add_to_whitelist( @@ -601,7 +601,7 @@ mod tests { None, None, ) - .unwrap(); + .expect("mainnet: handle error"); // 现在转让应该成功 let result = acc1400.transfer_security("investor1", "investor2", 2000, &security_id); @@ -628,7 +628,7 @@ mod tests { gnacs, PartitionType::CommonStock, ) - .unwrap(); + .expect("mainnet: handle error"); // 设置投票权 acc1400.set_voting_rights("investor1".to_string(), 1000, 1); @@ -637,7 +637,7 @@ mod tests { // 创建提案 let current_time = std::time::SystemTime::now() .duration_since(std::time::UNIX_EPOCH) - .unwrap() + .expect("mainnet: handle error") .as_secs(); let proposal_id = acc1400 @@ -652,16 +652,16 @@ mod tests { 50, 66, ) - .unwrap(); + .expect("mainnet: handle error"); // 激活并投票 - acc1400.activate_proposal(&proposal_id).unwrap(); + acc1400.activate_proposal(&proposal_id).expect("mainnet: handle error"); acc1400 .cast_vote(&proposal_id, "investor1", voting::VoteOption::For) - .unwrap(); + .expect("mainnet: handle error"); // 检查结果 - let result = acc1400.calculate_voting_result(&proposal_id).unwrap(); + let result = acc1400.calculate_voting_result(&proposal_id).expect("mainnet: handle error"); assert_eq!(result.votes_for, 1000); } } diff --git a/_archive/standalone_acc_protocols/nac-acc-1400/src/transfer_restrictions.rs b/_archive/standalone_acc_protocols/nac-acc-1400/src/transfer_restrictions.rs index 6c83d99..a52f65b 100644 --- a/_archive/standalone_acc_protocols/nac-acc-1400/src/transfer_restrictions.rs +++ b/_archive/standalone_acc_protocols/nac-acc-1400/src/transfer_restrictions.rs @@ -599,7 +599,7 @@ impl TransferRestrictionSystem { fn current_timestamp() -> u64 { std::time::SystemTime::now() .duration_since(std::time::UNIX_EPOCH) - .unwrap() + .expect("mainnet: handle error") .as_secs() } @@ -645,12 +645,12 @@ mod tests { "admin".to_string(), None, Some("Approved investor".to_string()), - ).unwrap(); + ).expect("mainnet: handle error"); assert!(system.is_whitelisted("investor1")); assert!(!system.is_whitelisted("investor2")); - system.remove_from_whitelist("investor1").unwrap(); + system.remove_from_whitelist("investor1").expect("mainnet: handle error"); assert!(!system.is_whitelisted("investor1")); } @@ -667,7 +667,7 @@ mod tests { future_time, "Vesting period".to_string(), false, - ).unwrap(); + ).expect("mainnet: handle error"); let locked = system.get_locked_amount("investor1", &security_id); assert_eq!(locked, 1000); @@ -695,13 +695,13 @@ mod tests { "admin".to_string(), None, None, - ).unwrap(); + ).expect("mainnet: handle error"); system.add_to_whitelist( "investor2".to_string(), "admin".to_string(), None, None, - ).unwrap(); + ).expect("mainnet: handle error"); // 现在应该允许 let result = system.check_transfer("investor1", "investor2", 100, &security_id, 1000); diff --git a/_archive/standalone_acc_protocols/nac-acc-1400/src/voting.rs b/_archive/standalone_acc_protocols/nac-acc-1400/src/voting.rs index 6e5e105..808e728 100644 --- a/_archive/standalone_acc_protocols/nac-acc-1400/src/voting.rs +++ b/_archive/standalone_acc_protocols/nac-acc-1400/src/voting.rs @@ -420,7 +420,7 @@ impl VotingSystem { }; // 检查是否已投票 - let votes = self.votes.get(proposal_id).unwrap(); + let votes = self.votes.get(proposal_id).expect("mainnet: handle error"); if votes.iter().any(|v| v.voter == actual_voter) { return Err("Already voted on this proposal".to_string()); } @@ -453,7 +453,7 @@ impl VotingSystem { }; // 添加投票记录 - self.votes.get_mut(proposal_id).unwrap().push(vote_record); + self.votes.get_mut(proposal_id).expect("mainnet: handle error").push(vote_record); Ok(()) } @@ -541,7 +541,7 @@ impl VotingSystem { let result = self.calculate_result(proposal_id)?; // 更新提案状态 - let proposal = self.proposals.get_mut(proposal_id).unwrap(); + let proposal = self.proposals.get_mut(proposal_id).expect("mainnet: handle error"); proposal.status = if result.passed { ProposalStatus::Passed } else { @@ -610,7 +610,7 @@ impl VotingSystem { fn current_timestamp() -> u64 { std::time::SystemTime::now() .duration_since(std::time::UNIX_EPOCH) - .unwrap() + .expect("mainnet: handle error") .as_secs() } } @@ -644,8 +644,8 @@ mod tests { ); assert!(result.is_ok()); - let proposal_id = result.unwrap(); - let proposal = system.get_proposal(&proposal_id).unwrap(); + let proposal_id = result.expect("mainnet: handle error"); + let proposal = system.get_proposal(&proposal_id).expect("mainnet: handle error"); assert_eq!(proposal.title, "Test Proposal"); assert_eq!(proposal.status, ProposalStatus::Draft); } @@ -671,17 +671,17 @@ mod tests { current_time + 1000, 50, 66, - ).unwrap(); + ).expect("mainnet: handle error"); // 激活提案 - system.activate_proposal(&proposal_id).unwrap(); + system.activate_proposal(&proposal_id).expect("mainnet: handle error"); // 投票 - system.cast_vote(&proposal_id, "voter1", VoteOption::For, None).unwrap(); - system.cast_vote(&proposal_id, "voter2", VoteOption::Against, None).unwrap(); + system.cast_vote(&proposal_id, "voter1", VoteOption::For, None).expect("mainnet: handle error"); + system.cast_vote(&proposal_id, "voter2", VoteOption::Against, None).expect("mainnet: handle error"); // 检查投票记录 - let votes = system.get_votes(&proposal_id).unwrap(); + let votes = system.get_votes(&proposal_id).expect("mainnet: handle error"); assert_eq!(votes.len(), 2); assert_eq!(votes[0].voting_power, 1000); // 1000 * 1 assert_eq!(votes[1].voting_power, 1000); // 500 * 2 @@ -707,16 +707,16 @@ mod tests { current_time + 1000, 50, 66, - ).unwrap(); + ).expect("mainnet: handle error"); - system.activate_proposal(&proposal_id).unwrap(); + system.activate_proposal(&proposal_id).expect("mainnet: handle error"); // 投票:1000赞成,500反对,300弃权 - system.cast_vote(&proposal_id, "voter1", VoteOption::For, None).unwrap(); - system.cast_vote(&proposal_id, "voter2", VoteOption::Against, None).unwrap(); - system.cast_vote(&proposal_id, "voter3", VoteOption::Abstain, None).unwrap(); + system.cast_vote(&proposal_id, "voter1", VoteOption::For, None).expect("mainnet: handle error"); + system.cast_vote(&proposal_id, "voter2", VoteOption::Against, None).expect("mainnet: handle error"); + system.cast_vote(&proposal_id, "voter3", VoteOption::Abstain, None).expect("mainnet: handle error"); - let result = system.calculate_result(&proposal_id).unwrap(); + let result = system.calculate_result(&proposal_id).expect("mainnet: handle error"); assert_eq!(result.votes_for, 1000); assert_eq!(result.votes_against, 500); @@ -746,7 +746,7 @@ mod tests { current_time + 1000, 50, 50, - ).unwrap(); + ).expect("mainnet: handle error"); // 授权代理 system.authorize_proxy( @@ -755,14 +755,14 @@ mod tests { Some(proposal_id.clone()), current_time, current_time + 2000, - ).unwrap(); + ).expect("mainnet: handle error"); - system.activate_proposal(&proposal_id).unwrap(); + system.activate_proposal(&proposal_id).expect("mainnet: handle error"); // 代理投票 - system.cast_vote(&proposal_id, "proxy1", VoteOption::For, Some("principal1")).unwrap(); + system.cast_vote(&proposal_id, "proxy1", VoteOption::For, Some("principal1")).expect("mainnet: handle error"); - let votes = system.get_votes(&proposal_id).unwrap(); + let votes = system.get_votes(&proposal_id).expect("mainnet: handle error"); assert_eq!(votes.len(), 1); assert_eq!(votes[0].voter, "principal1"); assert!(votes[0].is_proxy); @@ -787,19 +787,19 @@ mod tests { current_time + 1000, 50, 50, - ).unwrap(); + ).expect("mainnet: handle error"); - system.activate_proposal(&proposal_id).unwrap(); + system.activate_proposal(&proposal_id).expect("mainnet: handle error"); // 限制投票权 - system.restrict_voting("voter1", "Compliance issue".to_string()).unwrap(); + system.restrict_voting("voter1", "Compliance issue".to_string()).expect("mainnet: handle error"); // 尝试投票应该失败 let result = system.cast_vote(&proposal_id, "voter1", VoteOption::For, None); assert!(result.is_err()); // 恢复投票权 - system.unrestrict_voting("voter1").unwrap(); + system.unrestrict_voting("voter1").expect("mainnet: handle error"); // 现在投票应该成功 let result = system.cast_vote(&proposal_id, "voter1", VoteOption::For, None); diff --git a/_archive/standalone_acc_protocols/nac-acc-1410/src/batch_operations.rs b/_archive/standalone_acc_protocols/nac-acc-1410/src/batch_operations.rs index 177c060..3528dbd 100644 --- a/_archive/standalone_acc_protocols/nac-acc-1410/src/batch_operations.rs +++ b/_archive/standalone_acc_protocols/nac-acc-1410/src/batch_operations.rs @@ -442,7 +442,7 @@ impl BatchOperationsManager { use std::time::{SystemTime, UNIX_EPOCH}; SystemTime::now() .duration_since(UNIX_EPOCH) - .unwrap() + .expect("mainnet: handle error") .as_secs() } } @@ -526,7 +526,7 @@ mod tests { operator: None, }; - let result = manager.execute_batch_transfer(&request).unwrap(); + let result = manager.execute_batch_transfer(&request).expect("mainnet: handle error"); assert_eq!(result.total_operations, 3); assert_eq!(result.successful_operations, 3); assert_eq!(result.total_amount, 600); @@ -544,7 +544,7 @@ mod tests { partition_id: [1u8; 32], }; - let result = manager.execute_batch_mint(&request).unwrap(); + let result = manager.execute_batch_mint(&request).expect("mainnet: handle error"); assert_eq!(result.total_operations, 2); assert_eq!(result.successful_operations, 2); assert_eq!(result.total_amount, 3000); @@ -562,7 +562,7 @@ mod tests { partition_id: [1u8; 32], }; - let result = manager.execute_batch_burn(&request).unwrap(); + let result = manager.execute_batch_burn(&request).expect("mainnet: handle error"); assert_eq!(result.total_operations, 2); assert_eq!(result.successful_operations, 2); assert_eq!(result.total_amount, 800); @@ -599,13 +599,13 @@ mod tests { partition_id: [1u8; 32], operator: None, }; - manager.execute_batch_transfer(&transfer_request).unwrap(); + manager.execute_batch_transfer(&transfer_request).expect("mainnet: handle error"); let mint_request = BatchMintRequest { recipients: vec![("user3".to_string(), 200)], partition_id: [1u8; 32], }; - manager.execute_batch_mint(&mint_request).unwrap(); + manager.execute_batch_mint(&mint_request).expect("mainnet: handle error"); let history = manager.get_operation_history(); assert_eq!(history.len(), 2); @@ -623,7 +623,7 @@ mod tests { partition_id: [1u8; 32], operator: None, }; - manager.execute_batch_transfer(&request).unwrap(); + manager.execute_batch_transfer(&request).expect("mainnet: handle error"); } let stats = manager.get_operation_statistics(); diff --git a/_archive/standalone_acc_protocols/nac-acc-1410/src/cross_partition_transfer.rs b/_archive/standalone_acc_protocols/nac-acc-1410/src/cross_partition_transfer.rs index 928ed73..b3dc9ce 100644 --- a/_archive/standalone_acc_protocols/nac-acc-1410/src/cross_partition_transfer.rs +++ b/_archive/standalone_acc_protocols/nac-acc-1410/src/cross_partition_transfer.rs @@ -325,7 +325,7 @@ impl CrossPartitionTransferManager { use std::time::{SystemTime, UNIX_EPOCH}; SystemTime::now() .duration_since(UNIX_EPOCH) - .unwrap() + .expect("mainnet: handle error") .as_secs() } @@ -396,15 +396,15 @@ mod tests { impl TransferListener for TestListener { fn on_transfer_started(&self, _record: &CrossPartitionTransferRecord) { - *self.started_count.lock().unwrap() += 1; + *self.started_count.lock().expect("mainnet: handle error") += 1; } fn on_transfer_completed(&self, _record: &CrossPartitionTransferRecord) { - *self.completed_count.lock().unwrap() += 1; + *self.completed_count.lock().expect("mainnet: handle error") += 1; } fn on_transfer_failed(&self, _record: &CrossPartitionTransferRecord, _reason: &str) { - *self.failed_count.lock().unwrap() += 1; + *self.failed_count.lock().expect("mainnet: handle error") += 1; } } @@ -423,7 +423,7 @@ mod tests { }; let transfer_id = manager.create_transfer_record(&request); - let record = manager.get_transfer_record(&transfer_id).unwrap(); + let record = manager.get_transfer_record(&transfer_id).expect("mainnet: handle error"); assert_eq!(record.from, "user1"); assert_eq!(record.to, "user2"); @@ -447,9 +447,9 @@ mod tests { let transfer_id = manager.create_transfer_record(&request); - manager.update_transfer_status(&transfer_id, CrossPartitionTransferStatus::Completed, None).unwrap(); + manager.update_transfer_status(&transfer_id, CrossPartitionTransferStatus::Completed, None).expect("mainnet: handle error"); - let record = manager.get_transfer_record(&transfer_id).unwrap(); + let record = manager.get_transfer_record(&transfer_id).expect("mainnet: handle error"); assert_eq!(record.status, CrossPartitionTransferStatus::Completed); } @@ -531,10 +531,10 @@ mod tests { }; let transfer_id = manager.create_transfer_record(&request); - assert_eq!(*started_count.lock().unwrap(), 1); + assert_eq!(*started_count.lock().expect("mainnet: handle error"), 1); - manager.update_transfer_status(&transfer_id, CrossPartitionTransferStatus::Completed, None).unwrap(); - assert_eq!(*completed_count.lock().unwrap(), 1); + manager.update_transfer_status(&transfer_id, CrossPartitionTransferStatus::Completed, None).expect("mainnet: handle error"); + assert_eq!(*completed_count.lock().expect("mainnet: handle error"), 1); } #[test] @@ -576,9 +576,9 @@ mod tests { let transfer_id = manager.create_transfer_record(&request); // 取消转账 - manager.cancel_transfer(&transfer_id).unwrap(); + manager.cancel_transfer(&transfer_id).expect("mainnet: handle error"); - let record = manager.get_transfer_record(&transfer_id).unwrap(); + let record = manager.get_transfer_record(&transfer_id).expect("mainnet: handle error"); assert_eq!(record.status, CrossPartitionTransferStatus::Cancelled); // 尝试再次取消(应该失败) @@ -604,7 +604,7 @@ mod tests { // 完成一半的转账 if i < 5 { - manager.update_transfer_status(&transfer_id, CrossPartitionTransferStatus::Completed, None).unwrap(); + manager.update_transfer_status(&transfer_id, CrossPartitionTransferStatus::Completed, None).expect("mainnet: handle error"); } } diff --git a/_archive/standalone_acc_protocols/nac-acc-1410/src/events.rs b/_archive/standalone_acc_protocols/nac-acc-1410/src/events.rs index d171d6c..ac83567 100644 --- a/_archive/standalone_acc_protocols/nac-acc-1410/src/events.rs +++ b/_archive/standalone_acc_protocols/nac-acc-1410/src/events.rs @@ -325,7 +325,7 @@ impl EventManager { use std::time::{SystemTime, UNIX_EPOCH}; SystemTime::now() .duration_since(UNIX_EPOCH) - .unwrap() + .expect("mainnet: handle error") .as_secs() } } diff --git a/_archive/standalone_acc_protocols/nac-acc-1410/src/lib.rs b/_archive/standalone_acc_protocols/nac-acc-1410/src/lib.rs index e848c96..85809a5 100644 --- a/_archive/standalone_acc_protocols/nac-acc-1410/src/lib.rs +++ b/_archive/standalone_acc_protocols/nac-acc-1410/src/lib.rs @@ -35,13 +35,13 @@ //! "Common Stock".to_string(), //! extended_gnacs, //! PartitionType::CommonStock, -//! ).unwrap(); +//! ).expect("mainnet: handle error"); //! //! // 发行代币到分区 -//! acc1410.issue_to_partition(&partition_id, "user1", 1000).unwrap(); +//! acc1410.issue_to_partition(&partition_id, "user1", 1000).expect("mainnet: handle error"); //! //! // 分区间转账 -//! acc1410.transfer_by_partition("user1", "user2", 300, &partition_id).unwrap(); +//! acc1410.transfer_by_partition("user1", "user2", 300, &partition_id).expect("mainnet: handle error"); //! ``` pub mod error; @@ -296,7 +296,7 @@ mod tests { common_stock_gnacs, PartitionType::CommonStock, ) - .unwrap(); + .expect("mainnet: handle error"); // 创建优先股分区 let preferred_stock_gnacs = ExtendedGNACS { @@ -315,45 +315,45 @@ mod tests { preferred_stock_gnacs, PartitionType::PreferredStock, ) - .unwrap(); + .expect("mainnet: handle error"); // 发行代币 acc1410 .issue_to_partition(&common_partition, "user1", 1000) - .unwrap(); + .expect("mainnet: handle error"); acc1410 .issue_to_partition(&preferred_partition, "user1", 500) - .unwrap(); + .expect("mainnet: handle error"); // 检查余额 assert_eq!( acc1410 .balance_of_by_partition(&common_partition, "user1") - .unwrap(), + .expect("mainnet: handle error"), 1000 ); assert_eq!( acc1410 .balance_of_by_partition(&preferred_partition, "user1") - .unwrap(), + .expect("mainnet: handle error"), 500 ); // 转账 acc1410 .transfer_by_partition("user1", "user2", 300, &common_partition) - .unwrap(); + .expect("mainnet: handle error"); assert_eq!( acc1410 .balance_of_by_partition(&common_partition, "user1") - .unwrap(), + .expect("mainnet: handle error"), 700 ); assert_eq!( acc1410 .balance_of_by_partition(&common_partition, "user2") - .unwrap(), + .expect("mainnet: handle error"), 300 ); @@ -363,18 +363,18 @@ mod tests { // 操作员代理转账 acc1410 .operator_transfer_by_partition("operator1", "user1", "user3", 200, &common_partition) - .unwrap(); + .expect("mainnet: handle error"); assert_eq!( acc1410 .balance_of_by_partition(&common_partition, "user1") - .unwrap(), + .expect("mainnet: handle error"), 500 ); assert_eq!( acc1410 .balance_of_by_partition(&common_partition, "user3") - .unwrap(), + .expect("mainnet: handle error"), 200 ); @@ -410,9 +410,9 @@ mod tests { let partition_id = acc1410 .create_partition(name.to_string(), gnacs, partition_type) - .unwrap(); + .expect("mainnet: handle error"); - let info = acc1410.get_partition_info(&partition_id).unwrap(); + let info = acc1410.get_partition_info(&partition_id).expect("mainnet: handle error"); assert_eq!(info.partition_type, partition_type); assert_eq!(info.name, name); } @@ -445,7 +445,7 @@ mod tests { let full_encoded = extended_gnacs.encode(); assert_eq!(full_encoded.len(), 8); - let full_decoded = ExtendedGNACS::decode(&full_encoded).unwrap(); + let full_decoded = ExtendedGNACS::decode(&full_encoded).expect("mainnet: handle error"); assert_eq!(full_decoded.base_gnacs, vec![0x94, 0x01, 0x00, 0x04, 0x02, 0x01]); assert_eq!(full_decoded.extension.partition_type, 0x01); } diff --git a/_archive/standalone_acc_protocols/nac-acc-1410/src/optimization.rs b/_archive/standalone_acc_protocols/nac-acc-1410/src/optimization.rs index c25f36c..6b5522a 100644 --- a/_archive/standalone_acc_protocols/nac-acc-1410/src/optimization.rs +++ b/_archive/standalone_acc_protocols/nac-acc-1410/src/optimization.rs @@ -42,13 +42,13 @@ impl StorageOptimizer { /// 从缓存获取值 pub fn get(&self, key: &str) -> Option> { - let mut cache = self.cache.write().unwrap(); + let mut cache = self.cache.write().expect("mainnet: handle error"); if let Some(cached) = cache.get_mut(key) { // 检查是否过期 if cached.expiry > Self::current_timestamp() { cached.access_count += 1; - *self.cache_hits.lock().unwrap() += 1; + *self.cache_hits.lock().expect("mainnet: handle error") += 1; return Some(cached.value.clone()); } else { // 过期,移除 @@ -56,13 +56,13 @@ impl StorageOptimizer { } } - *self.cache_misses.lock().unwrap() += 1; + *self.cache_misses.lock().expect("mainnet: handle error") += 1; None } /// 设置缓存值 pub fn set(&self, key: String, value: Vec, ttl: u64) { - let mut cache = self.cache.write().unwrap(); + let mut cache = self.cache.write().expect("mainnet: handle error"); // 如果缓存已满,移除最少使用的项 if cache.len() >= self.max_cache_size { @@ -91,13 +91,13 @@ impl StorageOptimizer { /// 清空缓存 pub fn clear(&self) { - self.cache.write().unwrap().clear(); + self.cache.write().expect("mainnet: handle error").clear(); } /// 获取缓存统计 pub fn get_cache_stats(&self) -> CacheStatistics { - let hits = *self.cache_hits.lock().unwrap(); - let misses = *self.cache_misses.lock().unwrap(); + let hits = *self.cache_hits.lock().expect("mainnet: handle error"); + let misses = *self.cache_misses.lock().expect("mainnet: handle error"); let total = hits + misses; let hit_rate = if total > 0 { (hits as f64 / total as f64) * 100.0 @@ -106,7 +106,7 @@ impl StorageOptimizer { }; CacheStatistics { - cache_size: self.cache.read().unwrap().len(), + cache_size: self.cache.read().expect("mainnet: handle error").len(), max_cache_size: self.max_cache_size, cache_hits: hits, cache_misses: misses, @@ -119,7 +119,7 @@ impl StorageOptimizer { use std::time::{SystemTime, UNIX_EPOCH}; SystemTime::now() .duration_since(UNIX_EPOCH) - .unwrap() + .expect("mainnet: handle error") .as_secs() } } @@ -170,7 +170,7 @@ impl ComputationOptimizer { { // 检查缓存 { - let cache = self.result_cache.read().unwrap(); + let cache = self.result_cache.read().expect("mainnet: handle error"); if let Some(cached) = cache.get(key) { return cached.result.clone(); } @@ -183,7 +183,7 @@ impl ComputationOptimizer { // 缓存结果 { - let mut cache = self.result_cache.write().unwrap(); + let mut cache = self.result_cache.write().expect("mainnet: handle error"); cache.insert( key.to_string(), ComputationResult { @@ -198,7 +198,7 @@ impl ComputationOptimizer { /// 清空计算缓存 pub fn clear(&self) { - self.result_cache.write().unwrap().clear(); + self.result_cache.write().expect("mainnet: handle error").clear(); } } @@ -252,13 +252,13 @@ impl GasOptimizer { /// 记录Gas使用 pub fn record_gas_usage(&self, operation: String, gas_used: u64) { - let mut usage = self.gas_usage.lock().unwrap(); + let mut usage = self.gas_usage.lock().expect("mainnet: handle error"); *usage.entry(operation).or_insert(0) += gas_used; } /// 获取Gas使用统计 pub fn get_gas_statistics(&self) -> GasStatistics { - let usage = self.gas_usage.lock().unwrap(); + let usage = self.gas_usage.lock().expect("mainnet: handle error"); let total_gas = usage.values().sum(); let total_cost = total_gas * self.gas_price; @@ -273,7 +273,7 @@ impl GasOptimizer { /// 优化建议 pub fn get_optimization_suggestions(&self) -> Vec { let mut suggestions = Vec::new(); - let usage = self.gas_usage.lock().unwrap(); + let usage = self.gas_usage.lock().expect("mainnet: handle error"); // 检查批量操作使用情况 let batch_operations = ["batch_transfer", "batch_mint", "batch_burn"]; @@ -350,7 +350,7 @@ impl ConcurrentProcessor { let handle = thread::spawn(move || { for item in chunk { let result = processor(item); - tx.send(result).unwrap(); + tx.send(result).expect("mainnet: handle error"); } }); @@ -361,7 +361,7 @@ impl ConcurrentProcessor { // 等待所有线程完成 for handle in handles { - handle.join().unwrap(); + handle.join().expect("mainnet: handle error"); } // 收集结果 diff --git a/_archive/standalone_acc_protocols/nac-acc-1410/src/partition.rs b/_archive/standalone_acc_protocols/nac-acc-1410/src/partition.rs index 0b89fab..df42d86 100644 --- a/_archive/standalone_acc_protocols/nac-acc-1410/src/partition.rs +++ b/_archive/standalone_acc_protocols/nac-acc-1410/src/partition.rs @@ -175,7 +175,7 @@ impl PartitionManager { fn current_timestamp() -> u64 { std::time::SystemTime::now() .duration_since(std::time::UNIX_EPOCH) - .unwrap() + .expect("mainnet: handle error") .as_secs() } } diff --git a/_archive/standalone_acc_protocols/nac-acc-1410/src/transfer.rs b/_archive/standalone_acc_protocols/nac-acc-1410/src/transfer.rs index 5ab3988..9166102 100644 --- a/_archive/standalone_acc_protocols/nac-acc-1410/src/transfer.rs +++ b/_archive/standalone_acc_protocols/nac-acc-1410/src/transfer.rs @@ -272,7 +272,7 @@ impl TransferManager { fn current_timestamp() -> u64 { std::time::SystemTime::now() .duration_since(std::time::UNIX_EPOCH) - .unwrap() + .expect("mainnet: handle error") .as_secs() } } @@ -299,7 +299,7 @@ mod tests { extended_gnacs, PartitionType::CommonStock, ) - .unwrap() + .expect("mainnet: handle error") } #[test] @@ -335,28 +335,28 @@ mod tests { let partition_id = create_test_partition(&mut partition_manager); // 初始化余额 - partition_manager.add_balance(&partition_id, "user1", 1000).unwrap(); + partition_manager.add_balance(&partition_id, "user1", 1000).expect("mainnet: handle error"); let mut transfer_manager = TransferManager::new(partition_manager); // 执行转账 let result = transfer_manager .transfer_by_partition("user1", "user2", 300, &partition_id) - .unwrap(); + .expect("mainnet: handle error"); assert_eq!(result.status, TransferStatus::Success); assert_eq!( transfer_manager .partition_manager() .balance_of_by_partition(&partition_id, "user1") - .unwrap(), + .expect("mainnet: handle error"), 700 ); assert_eq!( transfer_manager .partition_manager() .balance_of_by_partition(&partition_id, "user2") - .unwrap(), + .expect("mainnet: handle error"), 300 ); } @@ -366,7 +366,7 @@ mod tests { let mut partition_manager = PartitionManager::new(); let partition_id = create_test_partition(&mut partition_manager); - partition_manager.add_balance(&partition_id, "user1", 1000).unwrap(); + partition_manager.add_balance(&partition_id, "user1", 1000).expect("mainnet: handle error"); let mut transfer_manager = TransferManager::new(partition_manager); @@ -378,14 +378,14 @@ mod tests { // 操作员代理转账 let result = transfer_manager .operator_transfer_by_partition("operator1", "user1", "user2", 200, &partition_id) - .unwrap(); + .expect("mainnet: handle error"); assert_eq!(result.status, TransferStatus::Success); assert_eq!( transfer_manager .partition_manager() .balance_of_by_partition(&partition_id, "user1") - .unwrap(), + .expect("mainnet: handle error"), 800 ); } @@ -395,7 +395,7 @@ mod tests { let mut partition_manager = PartitionManager::new(); let partition_id = create_test_partition(&mut partition_manager); - partition_manager.add_balance(&partition_id, "user1", 1000).unwrap(); + partition_manager.add_balance(&partition_id, "user1", 1000).expect("mainnet: handle error"); let mut transfer_manager = TransferManager::new(partition_manager); @@ -412,7 +412,7 @@ mod tests { let mut partition_manager = PartitionManager::new(); let partition_id = create_test_partition(&mut partition_manager); - partition_manager.add_balance(&partition_id, "user1", 1000).unwrap(); + partition_manager.add_balance(&partition_id, "user1", 1000).expect("mainnet: handle error"); let mut transfer_manager = TransferManager::new(partition_manager); diff --git a/_archive/standalone_acc_protocols/nac-acc-1410/src/types.rs b/_archive/standalone_acc_protocols/nac-acc-1410/src/types.rs index d8c3530..9e47c80 100644 --- a/_archive/standalone_acc_protocols/nac-acc-1410/src/types.rs +++ b/_archive/standalone_acc_protocols/nac-acc-1410/src/types.rs @@ -239,7 +239,7 @@ mod tests { let encoded = extended.encode(); assert_eq!(encoded.len(), 8); - let decoded = ExtendedGNACS::decode(&encoded).unwrap(); + let decoded = ExtendedGNACS::decode(&encoded).expect("mainnet: handle error"); assert_eq!(decoded.base_gnacs, base_gnacs); } diff --git a/_archive/standalone_acc_protocols/nac-acc-1410/tests/integration_test.rs b/_archive/standalone_acc_protocols/nac-acc-1410/tests/integration_test.rs index 822bbdd..5b06f17 100644 --- a/_archive/standalone_acc_protocols/nac-acc-1410/tests/integration_test.rs +++ b/_archive/standalone_acc_protocols/nac-acc-1410/tests/integration_test.rs @@ -21,27 +21,27 @@ fn test_complete_workflow() { let partition_id = acc1410 .create_partition("Test Partition".to_string(), gnacs, PartitionType::CommonStock) - .unwrap(); + .expect("mainnet: handle error"); // 发行代币 - acc1410.issue_to_partition(&partition_id, "user1", 1000).unwrap(); + acc1410.issue_to_partition(&partition_id, "user1", 1000).expect("mainnet: handle error"); // 转账 acc1410 .transfer_by_partition("user1", "user2", 300, &partition_id) - .unwrap(); + .expect("mainnet: handle error"); // 验证余额 assert_eq!( acc1410 .balance_of_by_partition(&partition_id, "user1") - .unwrap(), + .expect("mainnet: handle error"), 700 ); assert_eq!( acc1410 .balance_of_by_partition(&partition_id, "user2") - .unwrap(), + .expect("mainnet: handle error"), 300 ); } @@ -62,7 +62,7 @@ fn test_batch_operations_integration() { operator: None, }; - let result = manager.execute_batch_transfer(&request).unwrap(); + let result = manager.execute_batch_transfer(&request).expect("mainnet: handle error"); assert_eq!(result.total_operations, 3); assert_eq!(result.successful_operations, 3); assert_eq!(result.total_amount, 600); @@ -76,7 +76,7 @@ fn test_batch_operations_integration() { partition_id: [1u8; 32], }; - let mint_result = manager.execute_batch_mint(&mint_request).unwrap(); + let mint_result = manager.execute_batch_mint(&mint_request).expect("mainnet: handle error"); assert_eq!(mint_result.total_operations, 2); assert_eq!(mint_result.total_amount, 3000); @@ -89,7 +89,7 @@ fn test_batch_operations_integration() { partition_id: [1u8; 32], }; - let burn_result = manager.execute_batch_burn(&burn_request).unwrap(); + let burn_result = manager.execute_batch_burn(&burn_request).expect("mainnet: handle error"); assert_eq!(burn_result.total_operations, 2); assert_eq!(burn_result.total_amount, 800); @@ -116,19 +116,19 @@ fn test_cross_partition_transfer_integration() { source_partition, dest_partition, ) - .unwrap(); + .expect("mainnet: handle error"); // 验证转账 - manager.validate_transfer(&request_id).unwrap(); + manager.validate_transfer(&request_id).expect("mainnet: handle error"); // 执行转账 - manager.execute_transfer(&request_id).unwrap(); + manager.execute_transfer(&request_id).expect("mainnet: handle error"); // 确认转账 - manager.confirm_transfer(&request_id).unwrap(); + manager.confirm_transfer(&request_id).expect("mainnet: handle error"); // 检查状态 - let request = manager.get_transfer_request(&request_id).unwrap(); + let request = manager.get_transfer_request(&request_id).expect("mainnet: handle error"); assert_eq!(request.status, TransferStatus::Completed); // 检查统计 @@ -329,13 +329,13 @@ fn test_cross_partition_transfer_cancellation() { source_partition, dest_partition, ) - .unwrap(); + .expect("mainnet: handle error"); // 取消转账 - manager.cancel_transfer(&request_id).unwrap(); + manager.cancel_transfer(&request_id).expect("mainnet: handle error"); // 检查状态 - let request = manager.get_transfer_request(&request_id).unwrap(); + let request = manager.get_transfer_request(&request_id).expect("mainnet: handle error"); assert_eq!(request.status, TransferStatus::Cancelled); } @@ -351,7 +351,7 @@ fn test_batch_operations_history() { partition_id: [1u8; 32], operator: None, }; - manager.execute_batch_transfer(&request).unwrap(); + manager.execute_batch_transfer(&request).expect("mainnet: handle error"); } // 检查历史 diff --git a/_archive/standalone_acc_protocols/nac-acc-1594/src/lib.rs b/_archive/standalone_acc_protocols/nac-acc-1594/src/lib.rs index ff05a56..c704a82 100644 --- a/_archive/standalone_acc_protocols/nac-acc-1594/src/lib.rs +++ b/_archive/standalone_acc_protocols/nac-acc-1594/src/lib.rs @@ -441,7 +441,7 @@ impl Acc1594 { fn current_timestamp() -> u64 { std::time::SystemTime::now() .duration_since(std::time::UNIX_EPOCH) - .unwrap() + .expect("mainnet: handle error") .as_secs() } } @@ -487,7 +487,7 @@ mod tests { extended_gnacs, PartitionType::CommonStock, ) - .unwrap(); + .expect("mainnet: handle error"); (acc1594, partition_id) } @@ -506,7 +506,7 @@ mod tests { ); assert!(result.is_ok()); - assert_eq!(acc1594.balance_of("investor1", &partition_id).unwrap(), 1000); + assert_eq!(acc1594.balance_of("investor1", &partition_id).expect("mainnet: handle error"), 1000); } #[test] @@ -515,12 +515,12 @@ mod tests { acc1594 .issue("issuer1", "investor1", 1000, vec![], &partition_id, [0u8; 32]) - .unwrap(); + .expect("mainnet: handle error"); let result = acc1594.redeem("investor1", 300, vec![], &partition_id, [0u8; 32]); assert!(result.is_ok()); - assert_eq!(acc1594.balance_of("investor1", &partition_id).unwrap(), 700); + assert_eq!(acc1594.balance_of("investor1", &partition_id).expect("mainnet: handle error"), 700); } #[test] @@ -530,10 +530,10 @@ mod tests { // 发行给两个投资者 acc1594 .issue("issuer1", "investor1", 600, vec![], &partition_id, [0u8; 32]) - .unwrap(); + .expect("mainnet: handle error"); acc1594 .issue("issuer1", "investor2", 400, vec![], &partition_id, [0u8; 32]) - .unwrap(); + .expect("mainnet: handle error"); // 分配分红 let result = acc1594.distribute_dividend( @@ -557,15 +557,15 @@ mod tests { acc1594 .issue("issuer1", "investor1", 1000, vec![], &partition_id, [0u8; 32]) - .unwrap(); + .expect("mainnet: handle error"); acc1594 .distribute_dividend("distributor1", &partition_id, 500, 202601, [0u8; 32]) - .unwrap(); + .expect("mainnet: handle error"); let claimed = acc1594 .claim_dividend("investor1", &partition_id, [0u8; 32]) - .unwrap(); + .expect("mainnet: handle error"); assert_eq!(claimed, 500); assert_eq!(acc1594.claimable_dividend("investor1", &partition_id), 0); diff --git a/_archive/standalone_acc_protocols/nac-acc-1594/src/types.rs b/_archive/standalone_acc_protocols/nac-acc-1594/src/types.rs index 6d364cb..6ce1757 100644 --- a/_archive/standalone_acc_protocols/nac-acc-1594/src/types.rs +++ b/_archive/standalone_acc_protocols/nac-acc-1594/src/types.rs @@ -274,7 +274,7 @@ mod tests { let encoded = full_gnacs.encode(); assert_eq!(encoded.len(), 10); - let decoded = FullDividendGNACS::decode(&encoded).unwrap(); + let decoded = FullDividendGNACS::decode(&encoded).expect("mainnet: handle error"); assert_eq!(decoded.base_gnacs, vec![0x94, 0x01, 0x00, 0x04, 0x02, 0x01]); assert_eq!(decoded.dividend_extension.dividend_policy, 1); assert_eq!(decoded.dividend_extension.dividend_period, 2); diff --git a/_archive/standalone_acc_protocols/nac-acc-1643/src/lib.rs b/_archive/standalone_acc_protocols/nac-acc-1643/src/lib.rs index a4a621a..7f15d63 100644 --- a/_archive/standalone_acc_protocols/nac-acc-1643/src/lib.rs +++ b/_archive/standalone_acc_protocols/nac-acc-1643/src/lib.rs @@ -322,7 +322,7 @@ impl Acc1643 { fn current_timestamp() -> u64 { std::time::SystemTime::now() .duration_since(std::time::UNIX_EPOCH) - .unwrap() + .expect("mainnet: handle error") .as_secs() } } @@ -357,9 +357,9 @@ mod tests { [0u8; 48], [1u8; 32], ) - .unwrap(); + .expect("mainnet: handle error"); - let document = acc1643.get_document(&doc_id).unwrap(); + let document = acc1643.get_document(&doc_id).expect("mainnet: handle error"); assert_eq!(document.doc_type, "Prospectus"); assert_eq!(document.version, 1); assert!(document.is_active); @@ -380,7 +380,7 @@ mod tests { [0u8; 48], [1u8; 32], ) - .unwrap(); + .expect("mainnet: handle error"); // 创建第二个版本 let content_hash_v2 = [2u8; 48]; @@ -393,9 +393,9 @@ mod tests { doc_id_v1, [1u8; 32], ) - .unwrap(); + .expect("mainnet: handle error"); - let doc_v2 = acc1643.get_document(&doc_id_v2).unwrap(); + let doc_v2 = acc1643.get_document(&doc_id_v2).expect("mainnet: handle error"); assert_eq!(doc_v2.version, 2); assert_eq!(doc_v2.supersedes, doc_id_v1); } @@ -414,11 +414,11 @@ mod tests { [0u8; 48], [1u8; 32], ) - .unwrap(); + .expect("mainnet: handle error"); - acc1643.remove_document("issuer1", &doc_id, [1u8; 32]).unwrap(); + acc1643.remove_document("issuer1", &doc_id, [1u8; 32]).expect("mainnet: handle error"); - let document = acc1643.get_document(&doc_id).unwrap(); + let document = acc1643.get_document(&doc_id).expect("mainnet: handle error"); assert!(!document.is_active); } @@ -436,7 +436,7 @@ mod tests { [0u8; 48], [1u8; 32], ) - .unwrap(); + .expect("mainnet: handle error"); let _doc_id_v2 = acc1643 .set_document( @@ -447,9 +447,9 @@ mod tests { doc_id_v1, [1u8; 32], ) - .unwrap(); + .expect("mainnet: handle error"); - let latest = acc1643.get_latest_document("Prospectus").unwrap(); + let latest = acc1643.get_latest_document("Prospectus").expect("mainnet: handle error"); assert_eq!(latest.version, 2); } @@ -469,14 +469,14 @@ mod tests { [0u8; 48], [1u8; 32], ) - .unwrap(); + .expect("mainnet: handle error"); - let is_valid = acc1643.verify_document(&doc_id, &uri, &content_hash).unwrap(); + let is_valid = acc1643.verify_document(&doc_id, &uri, &content_hash).expect("mainnet: handle error"); assert!(is_valid); // 验证错误的内容哈希 let wrong_hash = [2u8; 48]; - let is_valid = acc1643.verify_document(&doc_id, &uri, &wrong_hash).unwrap(); + let is_valid = acc1643.verify_document(&doc_id, &uri, &wrong_hash).expect("mainnet: handle error"); assert!(!is_valid); } @@ -495,7 +495,7 @@ mod tests { [0u8; 48], [1u8; 32], ) - .unwrap(); + .expect("mainnet: handle error"); let root_after = acc1643.documents_root(); assert_ne!(root_before, root_after); diff --git a/_archive/standalone_acc_protocols/nac-acc-1644/src/lib.rs b/_archive/standalone_acc_protocols/nac-acc-1644/src/lib.rs index ff26477..bfb8345 100644 --- a/_archive/standalone_acc_protocols/nac-acc-1644/src/lib.rs +++ b/_archive/standalone_acc_protocols/nac-acc-1644/src/lib.rs @@ -386,7 +386,7 @@ impl Acc1644 { } } - let old_controller = self.controller.take().unwrap(); + let old_controller = self.controller.take().expect("mainnet: handle error"); self.controller_role = None; self.takeover_expiry = None; @@ -481,7 +481,7 @@ impl Acc1644 { fn current_timestamp() -> u64 { std::time::SystemTime::now() .duration_since(std::time::UNIX_EPOCH) - .unwrap() + .expect("mainnet: handle error") .as_secs() } } @@ -516,7 +516,7 @@ mod tests { // 冻结分区 acc1644 .freeze("regulator1", &partition_id, reason, evidence, receipt) - .unwrap(); + .expect("mainnet: handle error"); assert!(acc1644.is_partition_frozen(&partition_id)); assert_eq!( @@ -527,7 +527,7 @@ mod tests { // 解冻分区 acc1644 .unfreeze("regulator1", &partition_id, reason, evidence, receipt) - .unwrap(); + .expect("mainnet: handle error"); assert!(!acc1644.is_partition_frozen(&partition_id)); assert_eq!( @@ -545,7 +545,7 @@ mod tests { acc1644 .freeze("regulator1", &global_partition, b"Emergency", b"", receipt) - .unwrap(); + .expect("mainnet: handle error"); assert!(acc1644.is_partition_frozen(&global_partition)); assert!(acc1644.is_partition_frozen(&[1u8; 32])); // 任何分区都被冻结 @@ -576,7 +576,7 @@ mod tests { b"", receipt, ) - .unwrap(); + .expect("mainnet: handle error"); assert_eq!( acc1644.get_balance(&hex::encode(partition_id), "alice"), @@ -608,7 +608,7 @@ mod tests { b"", receipt, ) - .unwrap(); + .expect("mainnet: handle error"); assert_eq!( acc1644.get_balance(&hex::encode(partition_id), "alice"), @@ -624,7 +624,7 @@ mod tests { acc1644 .take_control("emergency1", "emergency_controller", 3600, b"Emergency", receipt) - .unwrap(); + .expect("mainnet: handle error"); assert_eq!(acc1644.controller(), Some("emergency_controller".to_string())); assert_eq!( @@ -642,11 +642,11 @@ mod tests { acc1644 .freeze("regulator1", &partition_id, b"Test", b"", receipt) - .unwrap(); + .expect("mainnet: handle error"); acc1644 .unfreeze("regulator1", &partition_id, b"Test", b"", receipt) - .unwrap(); + .expect("mainnet: handle error"); let actions = acc1644.get_control_actions(0, 10); assert_eq!(actions.len(), 2); diff --git a/_archive/v1_legacy_nac_lens/nac_lens_client.rs b/_archive/v1_legacy_nac_lens/nac_lens_client.rs index 2e8aaa4..11be10c 100644 --- a/_archive/v1_legacy_nac_lens/nac_lens_client.rs +++ b/_archive/v1_legacy_nac_lens/nac_lens_client.rs @@ -107,7 +107,7 @@ pub struct NAC Lens3Error { /// "round": 5, /// }); /// -/// let result = client.call("nac_getFluidBlock", params).await.unwrap(); +/// let result = client.call("nac_getFluidBlock", params).await.expect("mainnet: handle error"); /// println!("Result: {:?}", result); /// } /// ``` @@ -177,7 +177,7 @@ impl NacLensClient { /// "epoch": 100, /// }); /// - /// let result = client.call("nac_getEpochInfo", params).await.unwrap(); + /// let result = client.call("nac_getEpochInfo", params).await.expect("mainnet: handle error"); /// println!("Epoch Info: {:?}", result); /// } /// ``` @@ -269,7 +269,7 @@ impl NacLensClient { /// ("nac_getEpochInfo".to_string(), serde_json::json!({"epoch": 101})), /// ]; /// - /// let results = client.batch_call(requests).await.unwrap(); + /// let results = client.batch_call(requests).await.expect("mainnet: handle error"); /// println!("Results: {:?}", results); /// } /// ``` @@ -368,8 +368,8 @@ mod tests { quantum_dna: None, }; - let json = serde_json::to_string(&request).unwrap(); - let deserialized: NacLensRequest = serde_json::from_str(&json).unwrap(); + let json = serde_json::to_string(&request).expect("mainnet: handle error"); + let deserialized: NacLensRequest = serde_json::from_str(&json).expect("mainnet: handle error"); assert_eq!(request.id, deserialized.id); assert_eq!(request.method, deserialized.method); @@ -385,8 +385,8 @@ mod tests { timestamp: Some(Timestamp::now()), }; - let json = serde_json::to_string(&response).unwrap(); - let deserialized: NacLensResponse = serde_json::from_str(&json).unwrap(); + let json = serde_json::to_string(&response).expect("mainnet: handle error"); + let deserialized: NacLensResponse = serde_json::from_str(&json).expect("mainnet: handle error"); assert_eq!(response.id, deserialized.id); assert!(deserialized.result.is_some()); @@ -400,8 +400,8 @@ mod tests { data: Some(serde_json::json!({"details": "Missing method"})), }; - let json = serde_json::to_string(&error).unwrap(); - let deserialized: NAC Lens3Error = serde_json::from_str(&json).unwrap(); + let json = serde_json::to_string(&error).expect("mainnet: handle error"); + let deserialized: NAC Lens3Error = serde_json::from_str(&json).expect("mainnet: handle error"); assert_eq!(error.code, deserialized.code); assert_eq!(error.message, deserialized.message); diff --git a/cargo-constitution/src/bin/cargo-constitution.rs b/cargo-constitution/src/bin/cargo-constitution.rs index 2c33d70..6f4ec57 100644 --- a/cargo-constitution/src/bin/cargo-constitution.rs +++ b/cargo-constitution/src/bin/cargo-constitution.rs @@ -19,7 +19,7 @@ fn main() { let project_dir = if args.len() > start_index { PathBuf::from(&args[start_index]) } else { - std::env::current_dir().unwrap() + std::env::current_dir().expect("mainnet: handle error") }; println!("🔍 Checking NAC constitutional constraints..."); diff --git a/cargo-constitution/src/lib.rs b/cargo-constitution/src/lib.rs index c6335e3..8504105 100644 --- a/cargo-constitution/src/lib.rs +++ b/cargo-constitution/src/lib.rs @@ -51,7 +51,7 @@ pub fn check_project>(project_dir: P) -> Result Vec { let mut violations = Vec::new(); - let unwrap_re = Regex::new(r"\.unwrap\(\)").unwrap(); + let unwrap_re = Regex::new(r"\.unwrap\(\)").expect("mainnet: handle error"); for (line_num, line) in source.lines().enumerate() { if unwrap_re.is_match(line) { @@ -47,7 +47,7 @@ impl SecurityCheckLint { violations.push(LintViolation { file: file_path.to_string(), line: line_num + 1, - column: line.find(".unwrap()").unwrap_or(0), + column: line.find(".expect("mainnet: handle error")").unwrap_or(0), message: "Avoid using unwrap() in production code. Use proper error handling instead.".to_string(), severity: Severity::Warning, context: "security check".to_string(), @@ -62,8 +62,8 @@ impl SecurityCheckLint { /// 检测未经验证的用户输入 fn check_unvalidated_input(&self, source: &str, file_path: &str) -> Vec { let mut violations = Vec::new(); - let input_re = Regex::new(r"(request\.|req\.|input\.|user_input)").unwrap(); - let validation_re = Regex::new(r"(validate|sanitize|check|verify)").unwrap(); + let input_re = Regex::new(r"(request\.|req\.|input\.|user_input)").expect("mainnet: handle error"); + let validation_re = Regex::new(r"(validate|sanitize|check|verify)").expect("mainnet: handle error"); for (line_num, line) in source.lines().enumerate() { if input_re.is_match(line) && !validation_re.is_match(line) { @@ -103,7 +103,7 @@ impl SecurityCheckLint { ]; for (pattern, secret_type) in secret_patterns { - let re = Regex::new(pattern).unwrap(); + let re = Regex::new(pattern).expect("mainnet: handle error"); for (line_num, line) in source.lines().enumerate() { if re.is_match(line) { violations.push(LintViolation { @@ -127,7 +127,7 @@ impl SecurityCheckLint { /// 检测不安全的随机数生成 fn check_unsafe_random(&self, source: &str, file_path: &str) -> Vec { let mut violations = Vec::new(); - let unsafe_random_re = Regex::new(r"rand::thread_rng\(\)|rand::random\(\)").unwrap(); + let unsafe_random_re = Regex::new(r"rand::thread_rng\(\)|rand::random\(\)").expect("mainnet: handle error"); for (line_num, line) in source.lines().enumerate() { if unsafe_random_re.is_match(line) { @@ -151,7 +151,7 @@ impl SecurityCheckLint { /// 检测SQL注入风险 fn check_sql_injection(&self, source: &str, file_path: &str) -> Vec { let mut violations = Vec::new(); - let sql_concat_re = Regex::new(r#"(format!|&|concat)\s*\(.*SELECT|INSERT|UPDATE|DELETE"#).unwrap(); + let sql_concat_re = Regex::new(r#"(format!|&|concat)\s*\(.*SELECT|INSERT|UPDATE|DELETE"#).expect("mainnet: handle error"); for (line_num, line) in source.lines().enumerate() { if sql_concat_re.is_match(line) { @@ -183,7 +183,7 @@ mod tests { #[test] fn test_unsafe_unwrap() { let lint = SecurityCheckLint::new(); - let source = "let value = some_option.unwrap();"; + let source = "let value = some_option.expect("mainnet: handle error");"; let violations = lint.check(source, "test.rs"); assert!(violations.iter().any(|v| v.message.contains("unwrap"))); diff --git a/cargo-constitution/src/utils/const_loader.rs b/cargo-constitution/src/utils/const_loader.rs index 5e20613..24b4393 100644 --- a/cargo-constitution/src/utils/const_loader.rs +++ b/cargo-constitution/src/utils/const_loader.rs @@ -94,10 +94,10 @@ mod tests { ] }"#; - let mut temp_file = NamedTempFile::new().unwrap(); - temp_file.write_all(json.as_bytes()).unwrap(); + let mut temp_file = NamedTempFile::new().expect("mainnet: handle error"); + temp_file.write_all(json.as_bytes()).expect("mainnet: handle error"); - let state = load_constitutional_state(temp_file.path()).unwrap(); + let state = load_constitutional_state(temp_file.path()).expect("mainnet: handle error"); assert_eq!(state.version, "1.0.0"); assert_eq!(state.parameters.len(), 1); assert_eq!(state.clauses.len(), 1); diff --git a/charter-compiler/Cargo.toml b/charter-compiler/Cargo.toml index 6f1cf40..5e35e21 100644 --- a/charter-compiler/Cargo.toml +++ b/charter-compiler/Cargo.toml @@ -37,6 +37,10 @@ sha3 = "0.10" tempfile = "3.8" criterion = "0.5" +[lib] +name = "charter_compiler" +path = "src/lib.rs" + [[bin]] name = "charter" path = "src/main.rs" diff --git a/charter-compiler/src/codegen/mod.rs b/charter-compiler/src/codegen/mod.rs index 7e4911a..5d6de60 100644 --- a/charter-compiler/src/codegen/mod.rs +++ b/charter-compiler/src/codegen/mod.rs @@ -607,7 +607,7 @@ mod tests { #[test] fn test_generate_empty() { let program = Program { items: vec![] }; - let bytecode = generate(&program).unwrap(); + let bytecode = generate(&program).expect("FIX-006: unexpected None/Err"); assert_eq!(bytecode.len(), 0); } @@ -624,9 +624,9 @@ mod tests { } "#; - let tokens = tokenize(source).unwrap(); - let program = parse(&tokens).unwrap(); - let bytecode = generate(&program).unwrap(); + let tokens = tokenize(source).expect("FIX-006: unexpected None/Err"); + let program = parse(&tokens).expect("FIX-006: unexpected None/Err"); + let bytecode = generate(&program).expect("FIX-006: unexpected None/Err"); assert!(bytecode.len() > 0); } diff --git a/charter-compiler/src/lexer/mod.rs b/charter-compiler/src/lexer/mod.rs index c031087..9f480b0 100644 --- a/charter-compiler/src/lexer/mod.rs +++ b/charter-compiler/src/lexer/mod.rs @@ -406,7 +406,7 @@ mod tests { #[test] fn test_tokenize_keywords() { let source = "asset contract fn let if else"; - let tokens = tokenize(source).unwrap(); + let tokens = tokenize(source).expect("FIX-006: unexpected None/Err"); assert_eq!(tokens.len(), 6); assert_eq!(tokens[0], Token::Asset); @@ -417,7 +417,7 @@ mod tests { #[test] fn test_tokenize_nac_types() { let source = "DID GNACSCode ConstitutionalReceipt"; - let tokens = tokenize(source).unwrap(); + let tokens = tokenize(source).expect("FIX-006: unexpected None/Err"); assert_eq!(tokens.len(), 3); assert_eq!(tokens[0], Token::DID); @@ -428,7 +428,7 @@ mod tests { #[test] fn test_tokenize_literals() { let source = r#"123 0x1234 "hello" true false"#; - let tokens = tokenize(source).unwrap(); + let tokens = tokenize(source).expect("FIX-006: unexpected None/Err"); assert_eq!(tokens.len(), 5); assert!(matches!(tokens[0], Token::Integer(123))); @@ -441,7 +441,7 @@ mod tests { #[test] fn test_tokenize_did() { let source = "did:nac:main:user:0x1234"; - let tokens = tokenize(source).unwrap(); + let tokens = tokenize(source).expect("FIX-006: unexpected None/Err"); assert_eq!(tokens.len(), 1); assert!(matches!(tokens[0], Token::DIDLiteral(_))); diff --git a/charter-compiler/src/lib.rs b/charter-compiler/src/lib.rs new file mode 100644 index 0000000..ff6604e --- /dev/null +++ b/charter-compiler/src/lib.rs @@ -0,0 +1,9 @@ +//! Charter Compiler Library +//! NAC原生智能合约语言编译器核心库 +//! 供 nac-charter-service 等依赖方使用 + +pub mod lexer; +pub mod parser; +pub mod semantic; +pub mod codegen; +pub mod optimizer; diff --git a/charter-compiler/src/optimizer/mod.rs b/charter-compiler/src/optimizer/mod.rs index 17480bc..067f9d8 100644 --- a/charter-compiler/src/optimizer/mod.rs +++ b/charter-compiler/src/optimizer/mod.rs @@ -144,7 +144,7 @@ mod tests { #[test] fn test_optimize_empty() { let bytecode = vec![]; - let optimized = optimize(bytecode.clone(), 2).unwrap(); + let optimized = optimize(bytecode.clone(), 2).expect("FIX-006: unexpected None/Err"); assert_eq!(optimized, bytecode); } @@ -152,7 +152,7 @@ mod tests { fn test_eliminate_dead_code() { // PUSH1 1, RETURN, PUSH1 2 (死代码) let bytecode = vec![0x60, 0x01, 0xF3, 0x60, 0x02]; - let optimized = eliminate_dead_code(bytecode).unwrap(); + let optimized = eliminate_dead_code(bytecode).expect("FIX-006: unexpected None/Err"); // 应该移除PUSH1 2 assert_eq!(optimized, vec![0x60, 0x01, 0xF3]); } @@ -161,7 +161,7 @@ mod tests { fn test_fold_constants() { // PUSH1 2, PUSH1 3, ADD let bytecode = vec![0x60, 0x02, 0x60, 0x03, 0x01]; - let optimized = fold_constants(bytecode).unwrap(); + let optimized = fold_constants(bytecode).expect("FIX-006: unexpected None/Err"); // 应该折叠为 PUSH1 5 assert_eq!(optimized, vec![0x60, 0x05]); } @@ -169,7 +169,7 @@ mod tests { #[test] fn test_optimize_level_0() { let bytecode = vec![0x60, 0x01, 0x60, 0x02, 0x01]; - let optimized = optimize(bytecode.clone(), 0).unwrap(); + let optimized = optimize(bytecode.clone(), 0).expect("FIX-006: unexpected None/Err"); // Level 0不优化 assert_eq!(optimized, bytecode); } @@ -177,7 +177,7 @@ mod tests { #[test] fn test_optimize_level_1() { let bytecode = vec![0x60, 0x01, 0xF3, 0x60, 0x02]; - let optimized = optimize(bytecode, 1).unwrap(); + let optimized = optimize(bytecode, 1).expect("FIX-006: unexpected None/Err"); // Level 1应该消除死代码 assert_eq!(optimized, vec![0x60, 0x01, 0xF3]); } @@ -185,7 +185,7 @@ mod tests { #[test] fn test_optimize_level_2() { let bytecode = vec![0x60, 0x02, 0x60, 0x03, 0x01]; - let optimized = optimize(bytecode, 2).unwrap(); + let optimized = optimize(bytecode, 2).expect("FIX-006: unexpected None/Err"); // Level 2应该折叠常量 assert_eq!(optimized, vec![0x60, 0x05]); } diff --git a/charter-compiler/src/parser/mod.rs b/charter-compiler/src/parser/mod.rs index 2ef0027..d15bda7 100644 --- a/charter-compiler/src/parser/mod.rs +++ b/charter-compiler/src/parser/mod.rs @@ -902,15 +902,15 @@ mod tests { #[test] fn test_parse_empty() { let tokens = vec![]; - let program = parse(&tokens).unwrap(); + let program = parse(&tokens).expect("FIX-006: unexpected None/Err"); assert_eq!(program.items.len(), 0); } #[test] fn test_parse_module() { let source = "module test;"; - let tokens = tokenize(source).unwrap(); - let program = parse(&tokens).unwrap(); + let tokens = tokenize(source).expect("FIX-006: unexpected None/Err"); + let program = parse(&tokens).expect("FIX-006: unexpected None/Err"); assert_eq!(program.items.len(), 1); assert!(matches!(program.items[0], TopLevelItem::Module(_))); @@ -927,8 +927,8 @@ mod tests { } "#; - let tokens = tokenize(source).unwrap(); - let program = parse(&tokens).unwrap(); + let tokens = tokenize(source).expect("FIX-006: unexpected None/Err"); + let program = parse(&tokens).expect("FIX-006: unexpected None/Err"); assert_eq!(program.items.len(), 1); if let TopLevelItem::Asset(asset) = &program.items[0] { diff --git a/charter-compiler/src/semantic/mod.rs b/charter-compiler/src/semantic/mod.rs index 52905a8..336a0be 100644 --- a/charter-compiler/src/semantic/mod.rs +++ b/charter-compiler/src/semantic/mod.rs @@ -635,8 +635,8 @@ mod tests { } "#; - let tokens = tokenize(source).unwrap(); - let program = parse(&tokens).unwrap(); + let tokens = tokenize(source).expect("FIX-006: unexpected None/Err"); + let program = parse(&tokens).expect("FIX-006: unexpected None/Err"); assert!(analyze(&program).is_ok()); } @@ -649,7 +649,7 @@ mod tests { } "#; - let tokens = tokenize(source).unwrap(); + let tokens = tokenize(source).expect("FIX-006: unexpected None/Err"); // GNACS编码在parse阶段就会被验证,所以parse应该失败 assert!(parse(&tokens).is_err()); } diff --git a/charter-service/Cargo.toml b/charter-service/Cargo.toml new file mode 100644 index 0000000..1355bc5 --- /dev/null +++ b/charter-service/Cargo.toml @@ -0,0 +1,28 @@ +[package] +name = "nac-charter-service" +version = "1.0.0" +edition = "2021" +authors = ["NAC Core Team "] +description = "Charter HTTP Service - NAC L2层 Charter编译器HTTP服务" + +[dependencies] +actix-web = "4" +actix-rt = "2" +serde = { version = "1.0", features = ["derive"] } +serde_json = "1.0" +thiserror = "1.0" +anyhow = "1.0" +log = "0.4" +env_logger = "0.11" +chrono = { version = "0.4", features = ["serde"] } +hex = "0.4" +tokio = { version = "1.0", features = ["full"] } + +[[bin]] +name = "nac-charter-service" +path = "src/main.rs" + +[profile.release] +opt-level = 3 +lto = true +codegen-units = 1 diff --git a/charter-service/src/main.rs b/charter-service/src/main.rs new file mode 100644 index 0000000..a79d472 --- /dev/null +++ b/charter-service/src/main.rs @@ -0,0 +1,258 @@ +// Charter HTTP Service - NAC L2层 Charter编译器HTTP服务 +// 将 charter-compiler 包装为 HTTP API 服务 +use actix_web::{web, App, HttpServer, HttpResponse, middleware}; +use serde::{Deserialize, Serialize}; +use std::process::Command; +use std::env; +use std::fs; +use std::path::Path; +use chrono::Utc; + +#[derive(Deserialize)] +struct CompileRequest { + /// Charter 源代码 + source: String, + /// 优化级别 (0-3) + #[serde(default = "default_optimization")] + optimization: u8, + /// 是否生成调试信息 + #[serde(default)] + debug: bool, +} + +fn default_optimization() -> u8 { 2 } + +#[derive(Serialize)] +struct CompileResponse { + success: bool, + bytecode: Option, + bytecode_size: Option, + error: Option, + elapsed_ms: u64, + timestamp: String, +} + +#[derive(Deserialize)] +struct CheckRequest { + source: String, +} + +#[derive(Serialize)] +struct CheckResponse { + success: bool, + valid: bool, + errors: Vec, + warnings: Vec, + timestamp: String, +} + +#[derive(Serialize)] +struct HealthResponse { + status: String, + service: String, + version: String, + layer: String, + protocol: String, + timestamp: String, +} + +/// 健康检查 +async fn health() -> HttpResponse { + HttpResponse::Ok().json(HealthResponse { + status: "running".to_string(), + service: "nac-charter-service".to_string(), + version: "1.0.0".to_string(), + layer: "L2".to_string(), + protocol: "Charter".to_string(), + timestamp: Utc::now().to_rfc3339(), + }) +} + +/// 编译 Charter 源代码 +async fn compile(req: web::Json) -> HttpResponse { + let start = std::time::Instant::now(); + + // 写入临时文件 + let tmp_dir = std::env::temp_dir(); + let input_path = tmp_dir.join(format!("charter_input_{}.ch", std::process::id())); + let output_path = tmp_dir.join(format!("charter_output_{}.nvm", std::process::id())); + + if let Err(e) = fs::write(&input_path, &req.source) { + return HttpResponse::InternalServerError().json(CompileResponse { + success: false, + bytecode: None, + bytecode_size: None, + error: Some(format!("写入临时文件失败: {}", e)), + elapsed_ms: start.elapsed().as_millis() as u64, + timestamp: Utc::now().to_rfc3339(), + }); + } + + // 调用 charter 编译器 + let charter_bin = env::var("CHARTER_BIN").unwrap_or_else(|_| "/opt/nac/bin/charter".to_string()); + let mut cmd = Command::new(&charter_bin); + cmd.arg("compile") + .arg("-i").arg(&input_path) + .arg("-o").arg(&output_path) + .arg("-O").arg(req.optimization.to_string()); + + if req.debug { + cmd.arg("--debug"); + } + + let output = match cmd.output() { + Ok(o) => o, + Err(e) => { + let _ = fs::remove_file(&input_path); + return HttpResponse::InternalServerError().json(CompileResponse { + success: false, + bytecode: None, + bytecode_size: None, + error: Some(format!("执行编译器失败: {}", e)), + elapsed_ms: start.elapsed().as_millis() as u64, + timestamp: Utc::now().to_rfc3339(), + }); + } + }; + + let _ = fs::remove_file(&input_path); + let elapsed = start.elapsed().as_millis() as u64; + + if output.status.success() { + // 读取输出字节码 + match fs::read(&output_path) { + Ok(bytecode) => { + let _ = fs::remove_file(&output_path); + let size = bytecode.len(); + let hex_bytecode = hex::encode(&bytecode); + log::info!("Charter编译成功,字节码大小: {} 字节,耗时: {}ms", size, elapsed); + HttpResponse::Ok().json(CompileResponse { + success: true, + bytecode: Some(hex_bytecode), + bytecode_size: Some(size), + error: None, + elapsed_ms: elapsed, + timestamp: Utc::now().to_rfc3339(), + }) + } + Err(e) => { + HttpResponse::InternalServerError().json(CompileResponse { + success: false, + bytecode: None, + bytecode_size: None, + error: Some(format!("读取字节码失败: {}", e)), + elapsed_ms: elapsed, + timestamp: Utc::now().to_rfc3339(), + }) + } + } + } else { + let stderr = String::from_utf8_lossy(&output.stderr).to_string(); + let stdout = String::from_utf8_lossy(&output.stdout).to_string(); + let error_msg = if !stderr.is_empty() { stderr } else { stdout }; + log::warn!("Charter编译失败: {}", error_msg); + HttpResponse::Ok().json(CompileResponse { + success: false, + bytecode: None, + bytecode_size: None, + error: Some(error_msg), + elapsed_ms: elapsed, + timestamp: Utc::now().to_rfc3339(), + }) + } +} + +/// 语法检查 +async fn check(req: web::Json) -> HttpResponse { + let tmp_dir = std::env::temp_dir(); + let input_path = tmp_dir.join(format!("charter_check_{}.ch", std::process::id())); + + if let Err(e) = fs::write(&input_path, &req.source) { + return HttpResponse::InternalServerError().json(CheckResponse { + success: false, + valid: false, + errors: vec![format!("写入临时文件失败: {}", e)], + warnings: vec![], + timestamp: Utc::now().to_rfc3339(), + }); + } + + let charter_bin = env::var("CHARTER_BIN").unwrap_or_else(|_| "/opt/nac/bin/charter".to_string()); + let output = Command::new(&charter_bin) + .arg("check") + .arg("-i").arg(&input_path) + .output(); + + let _ = fs::remove_file(&input_path); + + match output { + Ok(o) => { + let valid = o.status.success(); + let stderr = String::from_utf8_lossy(&o.stderr).to_string(); + let stdout = String::from_utf8_lossy(&o.stdout).to_string(); + let errors = if !valid { + let msg = if !stderr.is_empty() { stderr } else { stdout }; + msg.lines().map(|l| l.to_string()).filter(|l| !l.is_empty()).collect() + } else { + vec![] + }; + HttpResponse::Ok().json(CheckResponse { + success: true, + valid, + errors, + warnings: vec![], + timestamp: Utc::now().to_rfc3339(), + }) + } + Err(e) => HttpResponse::InternalServerError().json(CheckResponse { + success: false, + valid: false, + errors: vec![format!("执行检查器失败: {}", e)], + warnings: vec![], + timestamp: Utc::now().to_rfc3339(), + }), + } +} + +/// 版本信息 +async fn version() -> HttpResponse { + let charter_bin = env::var("CHARTER_BIN").unwrap_or_else(|_| "/opt/nac/bin/charter".to_string()); + let output = Command::new(&charter_bin).arg("version").output(); + let version_info = match output { + Ok(o) => String::from_utf8_lossy(&o.stdout).trim().to_string(), + Err(_) => "Charter Compiler 1.0.0 (NAC L2)".to_string(), + }; + HttpResponse::Ok().json(serde_json::json!({ + "service": "nac-charter-service", + "layer": "L2", + "protocol": "Charter", + "compiler_version": version_info, + "timestamp": Utc::now().to_rfc3339() + })) +} + +#[actix_web::main] +async fn main() -> std::io::Result<()> { + env_logger::init_from_env(env_logger::Env::default().default_filter_or("info")); + + let host = env::var("CHARTER_HOST").unwrap_or_else(|_| "0.0.0.0".to_string()); + let port: u16 = env::var("CHARTER_PORT") + .unwrap_or_else(|_| "9555".to_string()) + .parse() + .unwrap_or(9555); + + log::info!("NAC Charter HTTP Service 启动中..."); + log::info!("监听地址: {}:{}", host, port); + log::info!("Charter 编译器: {}", env::var("CHARTER_BIN").unwrap_or_else(|_| "/opt/nac/bin/charter".to_string())); + + HttpServer::new(|| { + App::new() + .route("/health", web::get().to(health)) + .route("/compile", web::post().to(compile)) + .route("/check", web::post().to(check)) + .route("/version", web::get().to(version)) + }) + .bind(format!("{}:{}", host, port))? + .run() + .await +} diff --git a/nac-acc-service/src/main.rs b/nac-acc-service/src/main.rs index 848bedb..f5919bf 100644 --- a/nac-acc-service/src/main.rs +++ b/nac-acc-service/src/main.rs @@ -80,7 +80,7 @@ fn validate_address(addr: &str) -> bool { } async fn health(state: web::Data) -> HttpResponse { - let s = state.lock().unwrap(); + let s = state.lock().expect("lock not poisoned"); HttpResponse::Ok().json(serde_json::json!({ "status": "healthy", "service": "nac-acc-service", "version": SERVICE_VERSION, "chain_id": CHAIN_ID, @@ -92,7 +92,7 @@ async fn health(state: web::Data) -> HttpResponse { } async fn get_state(state: web::Data) -> HttpResponse { - let s = state.lock().unwrap(); + let s = state.lock().expect("lock not poisoned"); HttpResponse::Ok().json(serde_json::json!({ "chain_id": CHAIN_ID, "service_version": SERVICE_VERSION, "tokens": s.tokens.len(), "total_minted": s.total_minted, @@ -113,7 +113,7 @@ async fn mint_token(state: web::Data, req: web::Json) -> H "success": false, "error": "amount 必须大于 0(宪法原则2:资产真实性原则)" })); } - let mut s = state.lock().unwrap(); + let mut s = state.lock().expect("lock not poisoned"); let token_id = format!("TOKEN-{}", &Uuid::new_v4().to_string()[..12].to_uppercase()); let hash_input = format!("{}:{}:{}:{}", req.protocol, req.holder, req.amount, Utc::now().timestamp_millis()); let token_hash = sha3_384_hex(hash_input.as_bytes()); @@ -140,7 +140,7 @@ async fn transfer_token(state: web::Data, req: web::Json, req: web::Json, req: web::Json) -> HttpResponse { - let mut s = state.lock().unwrap(); + let mut s = state.lock().expect("lock not poisoned"); match s.tokens.get_mut(&req.token_id) { Some(token) => { token.status = "burned".to_string(); @@ -183,7 +183,7 @@ async fn burn_token(state: web::Data, req: web::Json) -> H } async fn list_tokens(state: web::Data) -> HttpResponse { - let s = state.lock().unwrap(); + let s = state.lock().expect("lock not poisoned"); let tokens: Vec<&TokenRecord> = s.tokens.values().collect(); HttpResponse::Ok().json(serde_json::json!({"tokens": tokens, "total": tokens.len()})) } @@ -207,7 +207,7 @@ async fn get_protocols() -> HttpResponse { } async fn get_stats(state: web::Data) -> HttpResponse { - let s = state.lock().unwrap(); + let s = state.lock().expect("lock not poisoned"); HttpResponse::Ok().json(serde_json::json!({ "service": "nac-acc-service", "layer": "L1-ACC", "chain_id": CHAIN_ID, "supported_protocols": 19, diff --git a/nac-ai-compliance/src/ai_validator.rs b/nac-ai-compliance/src/ai_validator.rs index 022a34b..dbd1f0a 100644 --- a/nac-ai-compliance/src/ai_validator.rs +++ b/nac-ai-compliance/src/ai_validator.rs @@ -405,12 +405,12 @@ mod tests { async fn test_kyc_validator() { let validator = KYCValidator::new(); let mut data = ComplianceData::new("user123".to_string()); - data.add_field("has_passport".to_string(), true).unwrap(); - data.add_field("has_id_card".to_string(), true).unwrap(); - data.add_field("has_utility_bill".to_string(), true).unwrap(); - data.add_field("has_bank_statement".to_string(), true).unwrap(); + data.add_field("has_passport".to_string(), true).expect("mainnet: handle error"); + data.add_field("has_id_card".to_string(), true).expect("mainnet: handle error"); + data.add_field("has_utility_bill".to_string(), true).expect("mainnet: handle error"); + data.add_field("has_bank_statement".to_string(), true).expect("mainnet: handle error"); - let result = validator.validate(&data).await.unwrap(); + let result = validator.validate(&data).await.expect("mainnet: handle error"); assert_eq!(result.status, ComplianceStatus::Passed); } @@ -418,10 +418,10 @@ mod tests { async fn test_aml_validator() { let validator = AMLValidator::new(); let mut data = ComplianceData::new("user123".to_string()); - data.add_field("is_blacklisted".to_string(), false).unwrap(); - data.add_field("transaction_count".to_string(), 10u32).unwrap(); + data.add_field("is_blacklisted".to_string(), false).expect("mainnet: handle error"); + data.add_field("transaction_count".to_string(), 10u32).expect("mainnet: handle error"); - let result = validator.validate(&data).await.unwrap(); + let result = validator.validate(&data).await.expect("mainnet: handle error"); assert_eq!(result.status, ComplianceStatus::Passed); } @@ -429,10 +429,10 @@ mod tests { fn test_risk_assessment() { let engine = RiskAssessmentEngine::new(); let mut data = ComplianceData::new("user123".to_string()); - data.add_field("kyc_risk".to_string(), 0.2).unwrap(); - data.add_field("aml_risk".to_string(), 0.3).unwrap(); + data.add_field("kyc_risk".to_string(), 0.2).expect("mainnet: handle error"); + data.add_field("aml_risk".to_string(), 0.3).expect("mainnet: handle error"); - let risk = engine.calculate_risk(&data).unwrap(); + let risk = engine.calculate_risk(&data).expect("mainnet: handle error"); assert!(risk > 0.0 && risk < 1.0); } diff --git a/nac-ai-compliance/src/lib.rs b/nac-ai-compliance/src/lib.rs index 82bcc23..3343872 100644 --- a/nac-ai-compliance/src/lib.rs +++ b/nac-ai-compliance/src/lib.rs @@ -101,7 +101,7 @@ impl AIComplianceSystem { impl Default for AIComplianceSystem { fn default() -> Self { - Self::new().unwrap() + Self::new().expect("mainnet: handle error") } } diff --git a/nac-ai-compliance/src/model_manager.rs b/nac-ai-compliance/src/model_manager.rs index c552600..b06f8f4 100644 --- a/nac-ai-compliance/src/model_manager.rs +++ b/nac-ai-compliance/src/model_manager.rs @@ -78,7 +78,7 @@ impl ModelManager { return Err(Error::Other("没有可回滚的版本".to_string())); } - let previous_version = model.version_history.pop().unwrap(); + let previous_version = model.version_history.pop().expect("mainnet: handle error"); model.current_version = previous_version; Ok(()) @@ -453,12 +453,12 @@ mod tests { ModelType::KYC, ); - manager.register_model(model).unwrap(); + manager.register_model(model).expect("mainnet: handle error"); let new_version = ModelVersion::new("2.0.0".to_string()); assert!(manager.upgrade_model("model1", new_version).is_ok()); - let model = manager.get_model("model1").unwrap(); + let model = manager.get_model("model1").expect("mainnet: handle error"); assert_eq!(model.current_version.version, "2.0.0"); } diff --git a/nac-ai-compliance/src/report_generator.rs b/nac-ai-compliance/src/report_generator.rs index 0228277..2e754bc 100644 --- a/nac-ai-compliance/src/report_generator.rs +++ b/nac-ai-compliance/src/report_generator.rs @@ -236,7 +236,7 @@ impl ReportGenerator { use std::time::{SystemTime, UNIX_EPOCH}; let timestamp = SystemTime::now() .duration_since(UNIX_EPOCH) - .unwrap() + .expect("mainnet: handle error") .as_millis(); format!("RPT{}", timestamp) } @@ -387,7 +387,7 @@ mod tests { } ]; - let report = generator.generate(&results).unwrap(); + let report = generator.generate(&results).expect("mainnet: handle error"); assert_eq!(report.results.len(), 1); assert_eq!(report.overall_status, ComplianceStatus::Passed); } @@ -408,8 +408,8 @@ mod tests { } ]; - let report = generator.generate(&results).unwrap(); - let exported = generator.export(&report, ExportFormat::Json).unwrap(); + let report = generator.generate(&results).expect("mainnet: handle error"); + let exported = generator.export(&report, ExportFormat::Json).expect("mainnet: handle error"); assert!(!exported.is_empty()); } diff --git a/nac-ai-compliance/src/rule_engine.rs b/nac-ai-compliance/src/rule_engine.rs index a4b4bba..a9ba130 100644 --- a/nac-ai-compliance/src/rule_engine.rs +++ b/nac-ai-compliance/src/rule_engine.rs @@ -442,6 +442,6 @@ mod tests { }; let data = ComplianceData::new("user123".to_string()); - assert!(executor.evaluate_condition(&condition, &result, &data).unwrap()); + assert!(executor.evaluate_condition(&condition, &result, &data).expect("mainnet: handle error")); } } diff --git a/nac-ai-valuation/src/ai_model.rs b/nac-ai-valuation/src/ai_model.rs index 12f52d1..9d032a6 100644 --- a/nac-ai-valuation/src/ai_model.rs +++ b/nac-ai-valuation/src/ai_model.rs @@ -248,7 +248,7 @@ mod tests { "test_key1".to_string(), "test_key2".to_string(), "test_key3".to_string(), - ).unwrap(); + ).expect("mainnet: handle error"); let asset = Asset::new( "test_001".to_string(), diff --git a/nac-ai-valuation/src/ai_models.rs b/nac-ai-valuation/src/ai_models.rs index 5bb2013..f20e0e8 100644 --- a/nac-ai-valuation/src/ai_models.rs +++ b/nac-ai-valuation/src/ai_models.rs @@ -389,7 +389,7 @@ mod tests { let client = AIModelClient::new( AIProvider::ChatGPT, AIModelConfig::chatgpt("test_key".to_string()), - ).unwrap(); + ).expect("mainnet: handle error"); let prompt = client.build_prompt( &asset, diff --git a/nac-ai-valuation/src/arbitration.rs b/nac-ai-valuation/src/arbitration.rs index 51b8904..5c22d63 100644 --- a/nac-ai-valuation/src/arbitration.rs +++ b/nac-ai-valuation/src/arbitration.rs @@ -126,8 +126,8 @@ impl Arbitrator { let bayesian_valuation = self.bayesian_fusion(&results, &weights)?; // 4. 综合最终估值 - let final_valuation = weighted_valuation * Decimal::from_f64_retain(self.config.weighted_voting_weight).unwrap() - + bayesian_valuation * Decimal::from_f64_retain(self.config.bayesian_fusion_weight).unwrap(); + let final_valuation = weighted_valuation * Decimal::from_f64_retain(self.config.weighted_voting_weight).expect("mainnet: handle error") + + bayesian_valuation * Decimal::from_f64_retain(self.config.bayesian_fusion_weight).expect("mainnet: handle error"); // 5. 计算置信度 let confidence = self.calculate_confidence(&results, &weights)?; @@ -220,7 +220,7 @@ impl Arbitrator { let mut valuations: Vec = results.iter() .map(|r| r.valuation_xtzh.to_string().parse::().unwrap_or(0.0)) .collect(); - valuations.sort_by(|a, b| a.partial_cmp(b).unwrap()); + valuations.sort_by(|a, b| a.partial_cmp(b).expect("mainnet: handle error")); let len = valuations.len(); let q1_idx = len / 4; @@ -448,7 +448,7 @@ mod tests { weights.insert(AIProvider::ChatGPT, 0.5); weights.insert(AIProvider::DeepSeek, 0.5); - let result = arbitrator.weighted_voting(&results, &weights).unwrap(); + let result = arbitrator.weighted_voting(&results, &weights).expect("mainnet: handle error"); assert_eq!(result, Decimal::new(1050, 0)); } @@ -480,7 +480,7 @@ mod tests { }, ]; - let (is_anomaly, report) = arbitrator.detect_anomalies(&results).unwrap(); + let (is_anomaly, report) = arbitrator.detect_anomalies(&results).expect("mainnet: handle error"); println!("is_anomaly: {}, report: {}", is_anomaly, report); // 数据点太少,只有3个,IQR方法可能不准确,改为检查极差 let max_val = results.iter().map(|r| r.valuation_xtzh.to_string().parse::().unwrap_or(0.0)).fold(f64::NEG_INFINITY, f64::max); diff --git a/nac-ai-valuation/src/engine.rs b/nac-ai-valuation/src/engine.rs index 60fa124..52f00a7 100644 --- a/nac-ai-valuation/src/engine.rs +++ b/nac-ai-valuation/src/engine.rs @@ -145,7 +145,7 @@ mod tests { "test_deepseek_key".to_string(), "test_doubao_key".to_string(), ValuationEngineConfig::default(), - ).unwrap(); + ).expect("mainnet: handle error"); let asset = Asset::new( "test_asset".to_string(), diff --git a/nac-ai-valuation/src/history.rs b/nac-ai-valuation/src/history.rs index 3e07350..b27cf7e 100644 --- a/nac-ai-valuation/src/history.rs +++ b/nac-ai-valuation/src/history.rs @@ -263,13 +263,13 @@ impl TrendAnalyzer { // 计算统计指标 let average_valuation = Self::calculate_average(&valuations); - let min_valuation = valuations.iter().min().unwrap().clone(); - let max_valuation = valuations.iter().max().unwrap().clone(); + let min_valuation = valuations.iter().min().expect("mainnet: handle error").clone(); + let max_valuation = valuations.iter().max().expect("mainnet: handle error").clone(); let std_deviation = Self::calculate_std_deviation(&valuations, average_valuation); // 计算变化率 - let first_val = valuations.first().unwrap(); - let last_val = valuations.last().unwrap(); + let first_val = valuations.first().expect("mainnet: handle error"); + let last_val = valuations.last().expect("mainnet: handle error"); let change_rate = if *first_val > Decimal::ZERO { ((*last_val - *first_val) / *first_val * Decimal::new(100, 0)) .to_string() @@ -289,8 +289,8 @@ impl TrendAnalyzer { let avg_confidence = confidences.iter().sum::() / confidences.len() as f64; let time_range = ( - sorted_entries.first().unwrap().timestamp, - sorted_entries.last().unwrap().timestamp, + sorted_entries.first().expect("mainnet: handle error").timestamp, + sorted_entries.last().expect("mainnet: handle error").timestamp, ); Ok(TrendAnalysis { @@ -557,7 +557,7 @@ mod tests { let mut history = ValuationHistory::new(10); let entry = create_test_entry(1000000); - history.add(entry.clone()).unwrap(); + history.add(entry.clone()).expect("mainnet: handle error"); let entries = history.get_by_asset("test_asset"); assert_eq!(entries.len(), 1); @@ -573,7 +573,7 @@ mod tests { create_test_entry(1150000), ]; - let trend = TrendAnalyzer::analyze(&entries).unwrap(); + let trend = TrendAnalyzer::analyze(&entries).expect("mainnet: handle error"); assert_eq!(trend.data_points, 4); assert!(trend.change_rate > 0.0); // 上升趋势 } diff --git a/nac-ai-valuation/src/lib.rs b/nac-ai-valuation/src/lib.rs index 65ca493..e099e28 100644 --- a/nac-ai-valuation/src/lib.rs +++ b/nac-ai-valuation/src/lib.rs @@ -23,7 +23,7 @@ //! "deepseek_api_key".to_string(), //! "doubao_api_key".to_string(), //! ValuationEngineConfig::default(), -//! ).unwrap(); +//! ).expect("mainnet: handle error"); //! //! let asset = Asset::new( //! "asset_001".to_string(), @@ -38,7 +38,7 @@ //! &asset, //! Jurisdiction::US, //! InternationalAgreement::WTO, -//! ).await.unwrap(); +//! ).await.expect("mainnet: handle error"); //! //! println!("估值: {} XTZH", result.valuation_xtzh); //! println!("置信度: {:.1}%", result.confidence * 100.0); diff --git a/nac-ai-valuation/src/realtime.rs b/nac-ai-valuation/src/realtime.rs index 18ae262..856f1c0 100644 --- a/nac-ai-valuation/src/realtime.rs +++ b/nac-ai-valuation/src/realtime.rs @@ -155,7 +155,7 @@ impl ValuationCache { ) -> Option { let key = Self::generate_key(asset_id, jurisdiction, agreement); - let mut cache = self.cache.write().unwrap(); + let mut cache = self.cache.write().expect("mainnet: handle error"); if let Some(entry) = cache.get_mut(&key) { if !entry.is_expired() { @@ -181,7 +181,7 @@ impl ValuationCache { ) { let key = Self::generate_key(asset_id, jurisdiction, agreement); - let mut cache = self.cache.write().unwrap(); + let mut cache = self.cache.write().expect("mainnet: handle error"); // 如果缓存已满,删除最旧的条目 if cache.len() >= self.max_entries { @@ -205,14 +205,14 @@ impl ValuationCache { /// 清除所有缓存 pub fn clear(&self) { - let mut cache = self.cache.write().unwrap(); + let mut cache = self.cache.write().expect("mainnet: handle error"); cache.clear(); log::info!("缓存已清空"); } /// 清除过期缓存 pub fn clear_expired(&self) { - let mut cache = self.cache.write().unwrap(); + let mut cache = self.cache.write().expect("mainnet: handle error"); cache.retain(|key, entry| { let keep = !entry.is_expired(); if !keep { @@ -224,7 +224,7 @@ impl ValuationCache { /// 获取缓存统计 pub fn stats(&self) -> CacheStats { - let cache = self.cache.read().unwrap(); + let cache = self.cache.read().expect("mainnet: handle error"); let total_entries = cache.len(); let total_accesses: u64 = cache.values().map(|e| e.access_count).sum(); @@ -281,7 +281,7 @@ impl RealtimeValuationEngine { /// 更新实时数据 pub async fn update_realtime_data(&self) -> Result<()> { - let mut data_source = self.data_source.write().unwrap(); + let mut data_source = self.data_source.write().expect("mainnet: handle error"); data_source.fetch_from_api().await?; // 清除缓存,因为市场数据已更新 @@ -292,7 +292,7 @@ impl RealtimeValuationEngine { /// 获取实时数据 pub fn get_realtime_data(&self) -> RealtimeDataSource { - self.data_source.read().unwrap().clone() + self.data_source.read().expect("mainnet: handle error").clone() } /// 实时估值(带缓存) @@ -310,7 +310,7 @@ impl RealtimeValuationEngine { // 检查数据是否过期 { - let data_source = self.data_source.read().unwrap(); + let data_source = self.data_source.read().expect("mainnet: handle error"); if data_source.is_stale() { log::warn!("实时数据已过期,建议更新"); } @@ -459,7 +459,7 @@ mod tests { // 获取缓存 let cached = cache.get("asset_001", Jurisdiction::US, InternationalAgreement::WTO); assert!(cached.is_some()); - assert_eq!(cached.unwrap().valuation_xtzh, Decimal::new(1000000, 0)); + assert_eq!(cached.expect("mainnet: handle error").valuation_xtzh, Decimal::new(1000000, 0)); // 统计 let stats = cache.stats(); diff --git a/nac-ai-valuation/src/types/mod.rs b/nac-ai-valuation/src/types/mod.rs index a77f123..c94cdaa 100644 --- a/nac-ai-valuation/src/types/mod.rs +++ b/nac-ai-valuation/src/types/mod.rs @@ -31,7 +31,7 @@ impl GNACSCode { /// 获取时间属性(第22位) pub fn time_attribute(&self) -> char { - self.0.chars().nth(21).unwrap() + self.0.chars().nth(21).expect("mainnet: handle error") } } diff --git a/nac-ai-valuation/src/validation.rs b/nac-ai-valuation/src/validation.rs index a3b51d5..71877d0 100644 --- a/nac-ai-valuation/src/validation.rs +++ b/nac-ai-valuation/src/validation.rs @@ -329,8 +329,8 @@ impl DivergenceAnalyzer { .map(|r| r.valuation_xtzh) .collect(); - let min_valuation = valuations.iter().min().unwrap().clone(); - let max_valuation = valuations.iter().max().unwrap().clone(); + let min_valuation = valuations.iter().min().expect("mainnet: handle error").clone(); + let max_valuation = valuations.iter().max().expect("mainnet: handle error").clone(); let avg_valuation = valuations.iter().sum::() / Decimal::new(valuations.len() as i64, 0); let divergence_rate = if min_valuation != Decimal::ZERO { diff --git a/nac-ai-valuation/tests/integration_tests.rs b/nac-ai-valuation/tests/integration_tests.rs index 5dec8b8..4397135 100644 --- a/nac-ai-valuation/tests/integration_tests.rs +++ b/nac-ai-valuation/tests/integration_tests.rs @@ -72,7 +72,7 @@ fn test_valuation_history() { create_test_valuation_result(), ); - history.add(entry.clone()).unwrap(); + history.add(entry.clone()).expect("mainnet: handle error"); let entries = history.get_by_asset("test_asset_001"); assert_eq!(entries.len(), 1); @@ -129,7 +129,7 @@ fn test_trend_analysis() { ), ]; - let trend = TrendAnalyzer::analyze(&entries).unwrap(); + let trend = TrendAnalyzer::analyze(&entries).expect("mainnet: handle error"); assert_eq!(trend.data_points, 3); assert!(trend.change_rate > 0.0); // 上升趋势 // 趋势可能是Upward或Volatile,取决于标准差 @@ -336,7 +336,7 @@ fn test_cache_operations() { ); assert!(cached.is_some()); - assert_eq!(cached.unwrap().valuation_xtzh, result.valuation_xtzh); + assert_eq!(cached.expect("mainnet: handle error").valuation_xtzh, result.valuation_xtzh); // 统计 let stats = cache.stats(); @@ -385,7 +385,7 @@ fn test_final_valuation_result_report() { #[test] fn test_final_valuation_result_json() { let result = create_test_valuation_result(); - let json = result.to_json().unwrap(); + let json = result.to_json().expect("mainnet: handle error"); assert!(json.contains("valuation_xtzh")); assert!(json.contains("confidence")); @@ -447,7 +447,7 @@ fn test_data_export_markdown() { ), ]; - let trend = TrendAnalyzer::analyze(&entries).unwrap(); + let trend = TrendAnalyzer::analyze(&entries).expect("mainnet: handle error"); let path = Path::new("/tmp/test_valuation_export.md"); let result = DataExporter::export_markdown(&entries, &trend, path); assert!(result.is_ok()); @@ -465,7 +465,7 @@ async fn test_full_valuation_flow() { std::env::var("DEEPSEEK_API_KEY").unwrap_or("test_key".to_string()), std::env::var("DOUBAO_API_KEY").unwrap_or("test_key".to_string()), ValuationEngineConfig::default(), - ).unwrap(); + ).expect("mainnet: handle error"); // 创建资产 let asset = create_test_asset(); diff --git a/nac-api-server/src/auth/mod.rs b/nac-api-server/src/auth/mod.rs index 38179fe..9aa6257 100644 --- a/nac-api-server/src/auth/mod.rs +++ b/nac-api-server/src/auth/mod.rs @@ -127,15 +127,15 @@ mod tests { #[test] fn test_jwt_creation() { let auth = JwtAuth::new("test-secret".to_string(), 24); - let token = auth.create_token("user123").unwrap(); + let token = auth.create_token("user123").expect("mainnet: handle error"); assert!(!token.is_empty()); } #[test] fn test_jwt_validation() { let auth = JwtAuth::new("test-secret".to_string(), 24); - let token = auth.create_token("user123").unwrap(); - let claims = auth.validate_token(&token).unwrap(); + let token = auth.create_token("user123").expect("mainnet: handle error"); + let claims = auth.validate_token(&token).expect("mainnet: handle error"); assert_eq!(claims.sub, "user123"); } diff --git a/nac-api-server/src/config/mod.rs b/nac-api-server/src/config/mod.rs index ca92948..7e07dd7 100644 --- a/nac-api-server/src/config/mod.rs +++ b/nac-api-server/src/config/mod.rs @@ -97,7 +97,7 @@ mod tests { #[test] fn test_config_serialization() { let config = Config::default(); - let toml_str = toml::to_string(&config).unwrap(); + let toml_str = toml::to_string(&config).expect("mainnet: handle error"); assert!(toml_str.contains("host")); assert!(toml_str.contains("port")); } diff --git a/nac-api-server/src/main.rs b/nac-api-server/src/main.rs index 4a2d3fe..abd866a 100644 --- a/nac-api-server/src/main.rs +++ b/nac-api-server/src/main.rs @@ -35,8 +35,8 @@ async fn main() { let addr = "0.0.0.0:8080"; println!("🚀 NAC API服务器启动在 http://{}", addr); - let listener = tokio::net::TcpListener::bind(addr).await.unwrap(); - axum::serve(listener, app).await.unwrap(); + let listener = tokio::net::TcpListener::bind(addr).await.expect("mainnet: handle error"); + axum::serve(listener, app).await.expect("mainnet: handle error"); } async fn root() -> &'static str { diff --git a/nac-api-server/src/middleware/mod.rs b/nac-api-server/src/middleware/mod.rs index f3c1f5f..7b3809d 100644 --- a/nac-api-server/src/middleware/mod.rs +++ b/nac-api-server/src/middleware/mod.rs @@ -54,7 +54,7 @@ pub async fn request_id_middleware( response.headers_mut().insert( "X-Request-ID", - request_id.parse().unwrap(), + request_id.parse().expect("mainnet: handle error"), ); response diff --git a/nac-api-server/src/middleware/rate_limit.rs b/nac-api-server/src/middleware/rate_limit.rs index 2bad455..23e849f 100644 --- a/nac-api-server/src/middleware/rate_limit.rs +++ b/nac-api-server/src/middleware/rate_limit.rs @@ -16,7 +16,7 @@ pub struct RateLimitLayer { impl RateLimitLayer { pub fn new(requests_per_second: u32) -> Self { - let quota = Quota::per_second(NonZeroU32::new(requests_per_second).unwrap()); + let quota = Quota::per_second(NonZeroU32::new(requests_per_second).expect("mainnet: handle error")); let limiter = Arc::new(RateLimiter::direct(quota)); Self { limiter } } diff --git a/nac-api-server/tests/integration_test.rs b/nac-api-server/tests/integration_test.rs index 85f4d7f..832630e 100644 --- a/nac-api-server/tests/integration_test.rs +++ b/nac-api-server/tests/integration_test.rs @@ -17,10 +17,10 @@ async fn test_health_endpoint() { return; } - let response = response.unwrap(); + let response = response.expect("mainnet: handle error"); assert_eq!(response.status(), 200); - let body: serde_json::Value = response.json().await.unwrap(); + let body: serde_json::Value = response.json().await.expect("mainnet: handle error"); assert_eq!(body["status"], "ok"); } @@ -37,7 +37,7 @@ async fn test_root_endpoint() { return; } - let response = response.unwrap(); + let response = response.expect("mainnet: handle error"); assert_eq!(response.status(), 200); } @@ -56,7 +56,7 @@ async fn test_wallet_balance_validation() { return; } - let response = response.unwrap(); + let response = response.expect("mainnet: handle error"); // 应该返回400或500错误 assert!(response.status().is_client_error() || response.status().is_server_error()); } @@ -85,7 +85,7 @@ async fn test_transfer_validation() { return; } - let response = response.unwrap(); + let response = response.expect("mainnet: handle error"); // 应该返回验证错误 assert!(response.status().is_client_error()); } @@ -103,9 +103,9 @@ async fn test_exchange_assets_endpoint() { return; } - let response = response.unwrap(); + let response = response.expect("mainnet: handle error"); assert_eq!(response.status(), 200); - let body: serde_json::Value = response.json().await.unwrap(); + let body: serde_json::Value = response.json().await.expect("mainnet: handle error"); assert!(body.is_array()); } diff --git a/nac-asset-onboarding/src/compliance.rs b/nac-asset-onboarding/src/compliance.rs index 0af29d5..2158eec 100644 --- a/nac-asset-onboarding/src/compliance.rs +++ b/nac-asset-onboarding/src/compliance.rs @@ -90,7 +90,7 @@ impl ComplianceAdapter { impl Default for ComplianceAdapter { fn default() -> Self { - Self::new().unwrap() + Self::new().expect("mainnet: handle error") } } diff --git a/nac-asset-onboarding/src/custody.rs b/nac-asset-onboarding/src/custody.rs index b6c3fcf..b2a1d9b 100644 --- a/nac-asset-onboarding/src/custody.rs +++ b/nac-asset-onboarding/src/custody.rs @@ -86,7 +86,7 @@ impl CustodyAdapter { impl Default for CustodyAdapter { fn default() -> Self { - Self::new().unwrap() + Self::new().expect("mainnet: handle error") } } diff --git a/nac-asset-onboarding/src/dna.rs b/nac-asset-onboarding/src/dna.rs index cf4d789..7425d3f 100644 --- a/nac-asset-onboarding/src/dna.rs +++ b/nac-asset-onboarding/src/dna.rs @@ -69,7 +69,7 @@ impl DNAAdapter { impl Default for DNAAdapter { fn default() -> Self { - Self::new().unwrap() + Self::new().expect("mainnet: handle error") } } diff --git a/nac-asset-onboarding/src/lib.rs b/nac-asset-onboarding/src/lib.rs index 351a605..f9d69af 100644 --- a/nac-asset-onboarding/src/lib.rs +++ b/nac-asset-onboarding/src/lib.rs @@ -21,7 +21,7 @@ //! //! #[tokio::main] //! async fn main() { -//! let engine = OnboardingEngine::new().await.unwrap(); +//! let engine = OnboardingEngine::new().await.expect("mainnet: handle error"); //! //! let submission = AssetSubmission { //! asset_name: "Manhattan Office Building".to_string(), @@ -32,7 +32,7 @@ //! documents: vec![], //! }; //! -//! let result = engine.submit_asset(submission).await.unwrap(); +//! let result = engine.submit_asset(submission).await.expect("mainnet: handle error"); //! println!("上链流程ID: {}", result.process_id); //! } //! ``` diff --git a/nac-asset-onboarding/src/orchestrator.rs b/nac-asset-onboarding/src/orchestrator.rs index 7a6a21e..cdf3b4e 100644 --- a/nac-asset-onboarding/src/orchestrator.rs +++ b/nac-asset-onboarding/src/orchestrator.rs @@ -139,7 +139,7 @@ impl Orchestrator { } // 步骤4:托管对接 - let dna_hash = process.dna_result.as_ref().unwrap().dna_hash.clone(); + let dna_hash = process.dna_result.as_ref().expect("mainnet: handle error").dna_hash.clone(); match self.step_custody(&submission, &dna_hash, &mut state_machine).await { Ok(result) => { process.custody_result = Some(result); @@ -155,8 +155,8 @@ impl Orchestrator { } // 步骤5:XTZH铸造 - let valuation = process.valuation_result.as_ref().unwrap(); - let custody_hash = process.custody_result.as_ref().unwrap().custody_agreement_hash.clone(); + let valuation = process.valuation_result.as_ref().expect("mainnet: handle error"); + let custody_hash = process.custody_result.as_ref().expect("mainnet: handle error").custody_agreement_hash.clone(); match self.step_xtzh(valuation, &dna_hash, &custody_hash, &mut state_machine).await { Ok(result) => { process.xtzh_result = Some(result); @@ -172,7 +172,7 @@ impl Orchestrator { } // 步骤6:代币发行 - let xtzh_amount = process.xtzh_result.as_ref().unwrap().xtzh_amount; + let xtzh_amount = process.xtzh_result.as_ref().expect("mainnet: handle error").xtzh_amount; match self.step_token(&submission, &dna_hash, xtzh_amount, &mut state_machine).await { Ok(result) => { process.token_result = Some(result); @@ -188,7 +188,7 @@ impl Orchestrator { } // 步骤7:区块链集成 - let token_address = process.token_result.as_ref().unwrap().token_address.clone(); + let token_address = process.token_result.as_ref().expect("mainnet: handle error").token_address.clone(); match self.step_blockchain(&dna_hash, &token_address, &mut state_machine).await { Ok(result) => { process.blockchain_result = Some(result); diff --git a/nac-asset-onboarding/src/token.rs b/nac-asset-onboarding/src/token.rs index 58aa012..1fc4f9c 100644 --- a/nac-asset-onboarding/src/token.rs +++ b/nac-asset-onboarding/src/token.rs @@ -95,7 +95,7 @@ impl TokenAdapter { impl Default for TokenAdapter { fn default() -> Self { - Self::new().unwrap() + Self::new().expect("mainnet: handle error") } } @@ -105,7 +105,7 @@ mod tests { #[test] fn test_generate_symbol() { - let adapter = TokenAdapter::new().unwrap(); + let adapter = TokenAdapter::new().expect("mainnet: handle error"); let symbol = adapter.generate_symbol("Real Estate Asset"); assert_eq!(symbol, "REARWA"); } diff --git a/nac-asset-onboarding/src/valuation.rs b/nac-asset-onboarding/src/valuation.rs index 2882ce3..e97376f 100644 --- a/nac-asset-onboarding/src/valuation.rs +++ b/nac-asset-onboarding/src/valuation.rs @@ -123,7 +123,7 @@ mod tests { "test".to_string(), "test".to_string(), "test".to_string(), - ).unwrap(); + ).expect("mainnet: handle error"); assert!(matches!( adapter.parse_asset_type("RealEstate"), diff --git a/nac-asset-onboarding/src/xtzh.rs b/nac-asset-onboarding/src/xtzh.rs index 10a8b2d..c8d6e2a 100644 --- a/nac-asset-onboarding/src/xtzh.rs +++ b/nac-asset-onboarding/src/xtzh.rs @@ -82,7 +82,7 @@ impl XTZHAdapter { impl Default for XTZHAdapter { fn default() -> Self { - Self::new().unwrap() + Self::new().expect("mainnet: handle error") } } diff --git a/nac-bridge-ethereum/src/erc20.rs b/nac-bridge-ethereum/src/erc20.rs index 22c2914..dc2c5b6 100644 --- a/nac-bridge-ethereum/src/erc20.rs +++ b/nac-bridge-ethereum/src/erc20.rs @@ -89,6 +89,6 @@ mod tests { let usdt = tokens.iter().find(|t| t.symbol == "USDT"); assert!(usdt.is_some()); - assert_eq!(usdt.unwrap().decimals, 6); + assert_eq!(usdt.expect("mainnet: handle error").decimals, 6); } } diff --git a/nac-bridge-ethereum/src/ethereum_bridge.rs b/nac-bridge-ethereum/src/ethereum_bridge.rs index f3d1777..0d69989 100644 --- a/nac-bridge-ethereum/src/ethereum_bridge.rs +++ b/nac-bridge-ethereum/src/ethereum_bridge.rs @@ -256,7 +256,7 @@ mod tests { ).await; assert!(bridge.is_ok()); - let bridge = bridge.unwrap(); + let bridge = bridge.expect("mainnet: handle error"); assert_eq!(bridge.chain_id(), 1); assert_eq!(bridge.chain_name(), "Ethereum Mainnet"); } @@ -265,7 +265,7 @@ mod tests { fn test_build_lock_eth_tx_data() { let bridge = EthereumBridgePlugin { chain_id: 1, - provider: Arc::new(Provider::::try_from("http://localhost:8545").unwrap()), + provider: Arc::new(Provider::::try_from("http://localhost:8545").expect("mainnet: handle error")), bridge_contract_address: "0x1234...".to_string(), chain_name: "Test".to_string(), _logo_url: "".to_string(), diff --git a/nac-bridge-ethereum/src/event_listener.rs b/nac-bridge-ethereum/src/event_listener.rs index b44a90b..933f60c 100644 --- a/nac-bridge-ethereum/src/event_listener.rs +++ b/nac-bridge-ethereum/src/event_listener.rs @@ -236,8 +236,8 @@ mod tests { timestamp: 1234567891, }; - listener.add_event(event1).unwrap(); - listener.add_event(event2).unwrap(); + listener.add_event(event1).expect("mainnet: handle error"); + listener.add_event(event2).expect("mainnet: handle error"); // 测试事件类型过滤 let filter = EventFilter::new() @@ -261,7 +261,7 @@ mod tests { data: HashMap::new(), timestamp: 1234567890 + i, }; - listener.add_event(event).unwrap(); + listener.add_event(event).expect("mainnet: handle error"); } assert_eq!(listener.event_count(), 10); diff --git a/nac-bridge-ethereum/src/lock_unlock.rs b/nac-bridge-ethereum/src/lock_unlock.rs index e95610e..db59a58 100644 --- a/nac-bridge-ethereum/src/lock_unlock.rs +++ b/nac-bridge-ethereum/src/lock_unlock.rs @@ -268,7 +268,7 @@ mod tests { }; assert!(manager.add_lock_signature("lock1", sig1).is_ok()); - assert_eq!(manager.get_lock("lock1").unwrap().signatures.len(), 1); + assert_eq!(manager.get_lock("lock1").expect("mainnet: handle error").signatures.len(), 1); let sig2 = Signature { signer: "signer2".to_string(), @@ -277,7 +277,7 @@ mod tests { }; assert!(manager.add_lock_signature("lock1", sig2).is_ok()); - assert_eq!(manager.get_lock("lock1").unwrap().status, LockStatus::Confirmed); + assert_eq!(manager.get_lock("lock1").expect("mainnet: handle error").status, LockStatus::Confirmed); } #[test] @@ -296,7 +296,7 @@ mod tests { signatures: vec![], }; - manager.record_lock(lock).unwrap(); + manager.record_lock(lock).expect("mainnet: handle error"); let sig = Signature { signer: "unauthorized".to_string(), diff --git a/nac-bridge-ethereum/src/security.rs b/nac-bridge-ethereum/src/security.rs index 11b56f3..532a75f 100644 --- a/nac-bridge-ethereum/src/security.rs +++ b/nac-bridge-ethereum/src/security.rs @@ -277,7 +277,7 @@ mod tests { fn test_audit_log() { let mut manager = SecurityManager::new(SecurityConfig::default()); - manager.pause("admin").unwrap(); + manager.pause("admin").expect("mainnet: handle error"); let logs = manager.query_audit_logs(Some("pause"), None); assert_eq!(logs.len(), 1); diff --git a/nac-bridge-ethereum/src/spv.rs b/nac-bridge-ethereum/src/spv.rs index 734379f..cd8565a 100644 --- a/nac-bridge-ethereum/src/spv.rs +++ b/nac-bridge-ethereum/src/spv.rs @@ -171,7 +171,7 @@ mod tests { let proof = verifier.generate_merkle_proof(&tx_hashes, 1); assert!(proof.is_some()); - let proof = proof.unwrap(); + let proof = proof.expect("mainnet: handle error"); // 验证证明 let is_valid = verifier.verify_merkle_proof(&tx_hashes[1], &proof); diff --git a/nac-cbpp-l0/src/cr_cache/mod.rs b/nac-cbpp-l0/src/cr_cache/mod.rs index 93100b1..bb1988c 100644 --- a/nac-cbpp-l0/src/cr_cache/mod.rs +++ b/nac-cbpp-l0/src/cr_cache/mod.rs @@ -51,7 +51,7 @@ pub struct CRCache { impl CRCache { /// Create a new CR cache with specified size pub fn new(size: usize) -> Self { - let cache_size = NonZeroUsize::new(size).unwrap_or(NonZeroUsize::new(10000).unwrap()); + let cache_size = NonZeroUsize::new(size).unwrap_or(NonZeroUsize::new(10000).expect("FIX-006: unexpected None/Err")); Self { cache: Arc::new(Mutex::new(LruCache::new(cache_size))), @@ -67,10 +67,10 @@ impl CRCache { /// Insert a CR into the cache pub fn insert(&self, receipt_id: Hash, entry: CRCacheEntry) -> Result<(), CRCacheError> { - let mut cache = self.cache.lock().unwrap(); + let mut cache = self.cache.lock().expect("lock not poisoned"); // Check if expired - let current_height = *self.current_height.lock().unwrap(); + let current_height = *self.current_height.lock().expect("lock not poisoned"); if entry.expiry_height <= current_height { return Err(CRCacheError::ReceiptExpired(entry.expiry_height)); } @@ -81,8 +81,8 @@ impl CRCache { /// Get a CR from the cache pub fn get(&self, receipt_id: &Hash) -> Result { - let mut cache = self.cache.lock().unwrap(); - let current_height = *self.current_height.lock().unwrap(); + let mut cache = self.cache.lock().expect("lock not poisoned"); + let current_height = *self.current_height.lock().expect("lock not poisoned"); match cache.get(receipt_id) { Some(entry) => { @@ -107,7 +107,7 @@ impl CRCache { /// Update current block height (triggers expiry cleanup) pub fn update_height(&self, new_height: BlockHeight) { - let mut current_height = self.current_height.lock().unwrap(); + let mut current_height = self.current_height.lock().expect("lock not poisoned"); *current_height = new_height; // Cleanup expired entries @@ -116,8 +116,8 @@ impl CRCache { /// Remove expired entries from cache fn cleanup_expired(&self) { - let mut cache = self.cache.lock().unwrap(); - let current_height = *self.current_height.lock().unwrap(); + let mut cache = self.cache.lock().expect("lock not poisoned"); + let current_height = *self.current_height.lock().expect("lock not poisoned"); // Collect expired keys let expired_keys: Vec = cache @@ -134,18 +134,18 @@ impl CRCache { /// Get cache statistics pub fn stats(&self) -> CRCacheStats { - let cache = self.cache.lock().unwrap(); + let cache = self.cache.lock().expect("lock not poisoned"); CRCacheStats { size: cache.len(), max_size: self.max_size, - current_height: *self.current_height.lock().unwrap(), + current_height: *self.current_height.lock().expect("lock not poisoned"), } } /// Clear all entries from cache pub fn clear(&self) { - let mut cache = self.cache.lock().unwrap(); + let mut cache = self.cache.lock().expect("lock not poisoned"); cache.clear(); } } @@ -177,9 +177,9 @@ mod tests { let receipt_id = Hash::zero(); let entry = create_test_entry(1000); - cache.insert(receipt_id, entry.clone()).unwrap(); + cache.insert(receipt_id, entry.clone()).expect("FIX-006: unexpected None/Err"); - let retrieved = cache.get(&receipt_id).unwrap(); + let retrieved = cache.get(&receipt_id).expect("key exists in map"); assert_eq!(retrieved.expiry_height, entry.expiry_height); } @@ -189,7 +189,7 @@ mod tests { let receipt_id = Hash::zero(); let entry = create_test_entry(100); - cache.insert(receipt_id, entry).unwrap(); + cache.insert(receipt_id, entry).expect("FIX-006: unexpected None/Err"); // Update height to trigger expiry cache.update_height(101); @@ -206,9 +206,9 @@ mod tests { let id2 = Hash::from_low_u64_be(2); let id3 = Hash::from_low_u64_be(3); - cache.insert(id1, create_test_entry(1000)).unwrap(); - cache.insert(id2, create_test_entry(1000)).unwrap(); - cache.insert(id3, create_test_entry(1000)).unwrap(); + cache.insert(id1, create_test_entry(1000)).expect("FIX-006: unexpected None/Err"); + cache.insert(id2, create_test_entry(1000)).expect("FIX-006: unexpected None/Err"); + cache.insert(id3, create_test_entry(1000)).expect("FIX-006: unexpected None/Err"); // id1 should be evicted (LRU) assert!(cache.get(&id1).is_err()); diff --git a/nac-cbpp-l0/src/params/mod.rs b/nac-cbpp-l0/src/params/mod.rs index 2647504..de898d1 100644 --- a/nac-cbpp-l0/src/params/mod.rs +++ b/nac-cbpp-l0/src/params/mod.rs @@ -155,14 +155,14 @@ impl ParamsManager { /// Get current parameters (read-only) pub fn get(&self) -> CBPPParams { - self.params.read().unwrap().clone() + self.params.read().expect("rwlock not poisoned").clone() } /// Update parameters pub fn update(&self, new_params: CBPPParams) -> Result<(), ParamsError> { new_params.validate()?; - let mut params = self.params.write().unwrap(); + let mut params = self.params.write().expect("rwlock not poisoned"); *params = new_params; Ok(()) @@ -170,32 +170,32 @@ impl ParamsManager { /// Update gas limit based on epoch statistics pub fn update_gas_limit(&self, avg_block_size: u64) { - let mut params = self.params.write().unwrap(); + let mut params = self.params.write().expect("rwlock not poisoned"); params.adjust_gas_limit(avg_block_size); } /// Start new epoch pub fn start_new_epoch(&self, new_epoch: u64, constitutional_hash: Hash) { - let mut params = self.params.write().unwrap(); + let mut params = self.params.write().expect("rwlock not poisoned"); params.epoch_number = new_epoch; params.constitutional_hash = constitutional_hash; } /// Get specific parameter pub fn get_gas_limit(&self) -> u64 { - self.params.read().unwrap().gas_limit + self.params.read().expect("rwlock not poisoned").gas_limit } pub fn get_delta_t_min(&self) -> u64 { - self.params.read().unwrap().delta_t_min + self.params.read().expect("rwlock not poisoned").delta_t_min } pub fn get_delta_t_max(&self) -> u64 { - self.params.read().unwrap().delta_t_max + self.params.read().expect("rwlock not poisoned").delta_t_max } pub fn get_constitutional_hash(&self) -> Hash { - self.params.read().unwrap().constitutional_hash + self.params.read().expect("rwlock not poisoned").constitutional_hash } } @@ -266,7 +266,7 @@ mod tests { // Test update let mut new_params = manager.get(); new_params.delta_t_min = 200; - manager.update(new_params).unwrap(); + manager.update(new_params).expect("FIX-006: unexpected None/Err"); assert_eq!(manager.get_delta_t_min(), 200); } diff --git a/nac-cbpp-l0/src/propagation/mod.rs b/nac-cbpp-l0/src/propagation/mod.rs index 9e2fdd6..4d839da 100644 --- a/nac-cbpp-l0/src/propagation/mod.rs +++ b/nac-cbpp-l0/src/propagation/mod.rs @@ -203,7 +203,7 @@ impl PropagationManager { conn.rtt_ms = rtt_ms; conn.last_seen = std::time::SystemTime::now() .duration_since(std::time::UNIX_EPOCH) - .unwrap() + .expect("FIX-006: unexpected None/Err") .as_secs(); Ok(()) } else { @@ -231,7 +231,7 @@ impl PropagationManager { let mut connections = self.connections.write().await; let now = std::time::SystemTime::now() .duration_since(std::time::UNIX_EPOCH) - .unwrap() + .expect("FIX-006: unexpected None/Err") .as_secs(); connections.retain(|_, conn| { @@ -285,7 +285,7 @@ mod tests { rtt_ms: rtt, last_seen: std::time::SystemTime::now() .duration_since(std::time::UNIX_EPOCH) - .unwrap() + .expect("FIX-006: unexpected None/Err") .as_secs(), is_direct: true, } @@ -296,12 +296,12 @@ mod tests { let manager = PropagationManager::with_default_config(); let conn = create_test_connection(1, 90, 100); - manager.add_connection(conn.clone()).await.unwrap(); + manager.add_connection(conn.clone()).await.expect("FIX-006: unexpected None/Err"); let connections = manager.get_connections().await; assert_eq!(connections.len(), 1); - manager.remove_connection(&conn.peer_address).await.unwrap(); + manager.remove_connection(&conn.peer_address).await.expect("FIX-006: unexpected None/Err"); let connections = manager.get_connections().await; assert_eq!(connections.len(), 0); @@ -312,9 +312,9 @@ mod tests { let manager = PropagationManager::with_default_config(); // Add peers with different quality scores - manager.add_connection(create_test_connection(1, 90, 100)).await.unwrap(); - manager.add_connection(create_test_connection(2, 80, 150)).await.unwrap(); - manager.add_connection(create_test_connection(3, 95, 120)).await.unwrap(); + manager.add_connection(create_test_connection(1, 90, 100)).await.expect("FIX-006: unexpected None/Err"); + manager.add_connection(create_test_connection(2, 80, 150)).await.expect("FIX-006: unexpected None/Err"); + manager.add_connection(create_test_connection(3, 95, 120)).await.expect("FIX-006: unexpected None/Err"); let best = manager.get_best_peers(2).await; @@ -328,8 +328,8 @@ mod tests { let manager = PropagationManager::with_default_config(); // Add some connections - manager.add_connection(create_test_connection(1, 90, 100)).await.unwrap(); - manager.add_connection(create_test_connection(2, 85, 120)).await.unwrap(); + manager.add_connection(create_test_connection(1, 90, 100)).await.expect("FIX-006: unexpected None/Err"); + manager.add_connection(create_test_connection(2, 85, 120)).await.expect("FIX-006: unexpected None/Err"); let announce = BlockAnnounce { block_hash: Hash::zero(), @@ -351,7 +351,7 @@ mod tests { // Add minimum required connections (12) for i in 0..12 { - manager.add_connection(create_test_connection(i, 80, 100)).await.unwrap(); + manager.add_connection(create_test_connection(i, 80, 100)).await.expect("FIX-006: unexpected None/Err"); } assert!(manager.has_sufficient_connections().await); diff --git a/nac-cbpp-l1/src/exit.rs b/nac-cbpp-l1/src/exit.rs index 0000551..d75735d 100644 --- a/nac-cbpp-l1/src/exit.rs +++ b/nac-cbpp-l1/src/exit.rs @@ -341,7 +341,7 @@ mod tests { ); assert!(result.is_ok()); - let request = manager.get_exit_request(&node.address).unwrap(); + let request = manager.get_exit_request(&node.address).expect("FIX-006: unexpected None/Err"); assert_eq!(request.status, ExitStatus::Pending); assert_eq!(request.reason, ExitReason::Voluntary); } @@ -351,7 +351,7 @@ mod tests { let mut manager = ExitManager::new(); let node = create_test_node(); - manager.submit_exit_request(&node, ExitReason::Voluntary, 3000).unwrap(); + manager.submit_exit_request(&node, ExitReason::Voluntary, 3000).expect("FIX-006: unexpected None/Err"); let result = manager.submit_exit_request(&node, ExitReason::Voluntary, 3000); assert!(result.is_err()); } @@ -362,7 +362,7 @@ mod tests { let node = create_test_node(); let reviewer = Address::new([2u8; 32]); - manager.submit_exit_request(&node, ExitReason::Voluntary, 1000).unwrap(); + manager.submit_exit_request(&node, ExitReason::Voluntary, 1000).expect("FIX-006: unexpected None/Err"); // 审核(等待期满足) let result = manager.review_exit_request( @@ -374,7 +374,7 @@ mod tests { ); assert!(result.is_ok()); - let request = manager.get_exit_request(&node.address).unwrap(); + let request = manager.get_exit_request(&node.address).expect("FIX-006: unexpected None/Err"); assert_eq!(request.status, ExitStatus::Approved); } @@ -384,7 +384,7 @@ mod tests { let node = create_test_node(); let reviewer = Address::new([2u8; 32]); - manager.submit_exit_request(&node, ExitReason::Voluntary, 1000).unwrap(); + manager.submit_exit_request(&node, ExitReason::Voluntary, 1000).expect("FIX-006: unexpected None/Err"); // 审核(等待期不满足) let result = manager.review_exit_request( @@ -403,14 +403,14 @@ mod tests { let node = create_test_node(); let reviewer = Address::new([2u8; 32]); - manager.submit_exit_request(&node, ExitReason::Voluntary, 1000).unwrap(); + manager.submit_exit_request(&node, ExitReason::Voluntary, 1000).expect("FIX-006: unexpected None/Err"); manager.review_exit_request( &node.address, true, reviewer, None, 1000 + 7 * 24 * 3600, - ).unwrap(); + ).expect("FIX-006: unexpected None/Err"); // 确认退出 let result = manager.confirm_exit( @@ -432,12 +432,12 @@ mod tests { let mut manager = ExitManager::new(); let node = create_test_node(); - manager.submit_exit_request(&node, ExitReason::Voluntary, 1000).unwrap(); + manager.submit_exit_request(&node, ExitReason::Voluntary, 1000).expect("FIX-006: unexpected None/Err"); let result = manager.cancel_exit_request(&node.address); assert!(result.is_ok()); - let request = manager.get_exit_request(&node.address).unwrap(); + let request = manager.get_exit_request(&node.address).expect("FIX-006: unexpected None/Err"); assert_eq!(request.status, ExitStatus::Cancelled); } @@ -448,8 +448,8 @@ mod tests { let mut node2 = create_test_node(); node2.address = Address::new([2u8; 32]); - manager.submit_exit_request(&node1, ExitReason::Voluntary, 1000).unwrap(); - manager.submit_exit_request(&node2, ExitReason::HardwareFailure, 1000).unwrap(); + manager.submit_exit_request(&node1, ExitReason::Voluntary, 1000).expect("FIX-006: unexpected None/Err"); + manager.submit_exit_request(&node2, ExitReason::HardwareFailure, 1000).expect("FIX-006: unexpected None/Err"); let pending = manager.get_pending_requests(); assert_eq!(pending.len(), 2); @@ -461,9 +461,9 @@ mod tests { let node = create_test_node(); let reviewer = Address::new([2u8; 32]); - manager.submit_exit_request(&node, ExitReason::Voluntary, 1000).unwrap(); - manager.review_exit_request(&node.address, true, reviewer, None, 1000 + 7 * 24 * 3600).unwrap(); - manager.confirm_exit(&node.address, &node, 95_000_000_000, 5_000_000_000, 1000 + 21 * 24 * 3600).unwrap(); + manager.submit_exit_request(&node, ExitReason::Voluntary, 1000).expect("FIX-006: unexpected None/Err"); + manager.review_exit_request(&node.address, true, reviewer, None, 1000 + 7 * 24 * 3600).expect("FIX-006: unexpected None/Err"); + manager.confirm_exit(&node.address, &node, 95_000_000_000, 5_000_000_000, 1000 + 21 * 24 * 3600).expect("FIX-006: unexpected None/Err"); let stats = manager.get_exit_statistics(); assert_eq!(stats.total_exits, 1); diff --git a/nac-cbpp-l1/src/lib.rs b/nac-cbpp-l1/src/lib.rs index f09c879..e08eec6 100644 --- a/nac-cbpp-l1/src/lib.rs +++ b/nac-cbpp-l1/src/lib.rs @@ -335,12 +335,12 @@ mod tests { 8000, 80, 1000, - ).unwrap(); + ).expect("FIX-006: unexpected None/Err"); let result = registry.activate_cbp(&address); assert!(result.is_ok()); - let node = registry.get_cbp(&address).unwrap(); + let node = registry.get_cbp(&address).expect("FIX-006: unexpected None/Err"); assert_eq!(node.status, CbpStatus::Active); } @@ -357,13 +357,13 @@ mod tests { 8000, 80, 1000, - ).unwrap(); + ).expect("FIX-006: unexpected None/Err"); - registry.activate_cbp(&address).unwrap(); + registry.activate_cbp(&address).expect("FIX-006: unexpected None/Err"); let result = registry.suspend_cbp(&address); assert!(result.is_ok()); - let node = registry.get_cbp(&address).unwrap(); + let node = registry.get_cbp(&address).expect("FIX-006: unexpected None/Err"); assert_eq!(node.status, CbpStatus::Suspended); } diff --git a/nac-cbpp-l1/src/penalty.rs b/nac-cbpp-l1/src/penalty.rs index d57d213..5a75111 100644 --- a/nac-cbpp-l1/src/penalty.rs +++ b/nac-cbpp-l1/src/penalty.rs @@ -631,7 +631,7 @@ mod tests { 1000, ); - let penalty_id = manager.execute_penalty(&mut node, detection, 1000).unwrap(); + let penalty_id = manager.execute_penalty(&mut node, detection, 1000).expect("FIX-006: unexpected None/Err"); let result = manager.submit_appeal( penalty_id, @@ -657,7 +657,7 @@ mod tests { 1000, ); - let penalty_id = manager.execute_penalty(&mut node, detection, 1000).unwrap(); + let penalty_id = manager.execute_penalty(&mut node, detection, 1000).expect("FIX-006: unexpected None/Err"); // 超过申诉期限 let result = manager.submit_appeal( @@ -685,14 +685,14 @@ mod tests { 1000, ); - let penalty_id = manager.execute_penalty(&mut node, detection, 1000).unwrap(); + let penalty_id = manager.execute_penalty(&mut node, detection, 1000).expect("FIX-006: unexpected None/Err"); let appeal_id = manager.submit_appeal( penalty_id, node.address, "False positive".to_string(), "Counter evidence".to_string(), 1000 + 3600, - ).unwrap(); + ).expect("FIX-006: unexpected None/Err"); let result = manager.review_appeal( appeal_id, @@ -722,7 +722,7 @@ mod tests { 1000, ); - let penalty_id = manager.execute_penalty(&mut node, detection, 1000).unwrap(); + let penalty_id = manager.execute_penalty(&mut node, detection, 1000).expect("FIX-006: unexpected None/Err"); let stake_after_penalty = node.stake_amount; let result = manager.revoke_penalty(penalty_id, &mut node); @@ -742,7 +742,7 @@ mod tests { 3, 1000, ); - manager.execute_penalty(&mut node, detection1, 1000).unwrap(); + manager.execute_penalty(&mut node, detection1, 1000).expect("FIX-006: unexpected None/Err"); let detection2 = manager.detect_violation( &node, @@ -751,7 +751,7 @@ mod tests { 5, 2000, ); - manager.execute_penalty(&mut node, detection2, 2000).unwrap(); + manager.execute_penalty(&mut node, detection2, 2000).expect("FIX-006: unexpected None/Err"); let stats = manager.get_penalty_statistics(); assert_eq!(stats.total_penalties, 2); diff --git a/nac-cbpp-l1/src/redemption.rs b/nac-cbpp-l1/src/redemption.rs index c5c03c7..987de2e 100644 --- a/nac-cbpp-l1/src/redemption.rs +++ b/nac-cbpp-l1/src/redemption.rs @@ -236,7 +236,7 @@ impl RedemptionManager { ); // 更新请求 - let request = self.requests.get_mut(address).unwrap(); + let request = self.requests.get_mut(address).expect("FIX-006: unexpected None/Err"); request.actual_amount = Some(actual_amount); request.penalty_amount = Some(penalty); request.status = RedemptionStatus::Completed; @@ -418,7 +418,7 @@ mod tests { ); assert!(result.is_ok()); - let request = manager.get_redemption_request(&node.address).unwrap(); + let request = manager.get_redemption_request(&node.address).expect("FIX-006: unexpected None/Err"); assert_eq!(request.status, RedemptionStatus::Pending); } @@ -465,12 +465,12 @@ mod tests { RedemptionType::Full, node.stake_amount, timestamp, - ).unwrap(); + ).expect("FIX-006: unexpected None/Err"); let result = manager.process_redemption(&node.address, &node, timestamp + 100); assert!(result.is_ok()); - let (actual, penalty) = result.unwrap(); + let (actual, penalty) = result.expect("FIX-006: unexpected None/Err"); assert_eq!(actual + penalty, node.stake_amount); } @@ -485,12 +485,12 @@ mod tests { RedemptionType::Emergency, node.stake_amount, timestamp, - ).unwrap(); + ).expect("FIX-006: unexpected None/Err"); let result = manager.process_redemption(&node.address, &node, timestamp + 100); assert!(result.is_ok()); - let (actual, penalty) = result.unwrap(); + let (actual, penalty) = result.expect("FIX-006: unexpected None/Err"); // 紧急赎回有20%处罚 assert_eq!(penalty, node.stake_amount * 20 / 100); assert_eq!(actual, node.stake_amount - penalty); @@ -508,12 +508,12 @@ mod tests { RedemptionType::Full, node.stake_amount, timestamp, - ).unwrap(); + ).expect("FIX-006: unexpected None/Err"); let result = manager.process_redemption(&node.address, &node, timestamp + 100); assert!(result.is_ok()); - let (actual, penalty) = result.unwrap(); + let (actual, penalty) = result.expect("FIX-006: unexpected None/Err"); // 低声誉有10%处罚 assert_eq!(penalty, node.stake_amount * 10 / 100); } @@ -529,12 +529,12 @@ mod tests { RedemptionType::Full, node.stake_amount, timestamp, - ).unwrap(); + ).expect("FIX-006: unexpected None/Err"); let result = manager.cancel_redemption_request(&node.address); assert!(result.is_ok()); - let request = manager.get_redemption_request(&node.address).unwrap(); + let request = manager.get_redemption_request(&node.address).expect("FIX-006: unexpected None/Err"); assert_eq!(request.status, RedemptionStatus::Cancelled); } @@ -549,8 +549,8 @@ mod tests { RedemptionType::Full, node.stake_amount, timestamp, - ).unwrap(); - manager.process_redemption(&node.address, &node, timestamp + 100).unwrap(); + ).expect("FIX-006: unexpected None/Err"); + manager.process_redemption(&node.address, &node, timestamp + 100).expect("FIX-006: unexpected None/Err"); let stats = manager.get_redemption_statistics(); assert_eq!(stats.total_redemptions, 1); diff --git a/nac-cbpp-l1/src/reputation.rs b/nac-cbpp-l1/src/reputation.rs index fbc4098..ab8402e 100644 --- a/nac-cbpp-l1/src/reputation.rs +++ b/nac-cbpp-l1/src/reputation.rs @@ -321,7 +321,7 @@ impl ReputationManager { .collect(); // 按声誉降序排序 - ranking.sort_by(|a, b| b.1.partial_cmp(&a.1).unwrap()); + ranking.sort_by(|a, b| b.1.partial_cmp(&a.1).expect("FIX-006: unexpected None/Err")); ranking } @@ -418,12 +418,12 @@ mod tests { node.reputation = 0.99; // 测试最大值 - manager.record_event(&mut node, ReputationEvent::LongUptime, 3000, None).unwrap(); + manager.record_event(&mut node, ReputationEvent::LongUptime, 3000, None).expect("FIX-006: unexpected None/Err"); assert!(node.reputation <= 1.0); // 测试最小值 node.reputation = 0.01; - manager.record_event(&mut node, ReputationEvent::DoubleSign, 3000, None).unwrap(); + manager.record_event(&mut node, ReputationEvent::DoubleSign, 3000, None).expect("FIX-006: unexpected None/Err"); assert!(node.reputation >= 0.0); } @@ -481,7 +481,7 @@ mod tests { let result = manager.batch_update_for_blocks(&mut nodes, 3000); assert!(result.is_ok()); - assert_eq!(result.unwrap(), 2); + assert_eq!(result.expect("mainnet: handle error"), 2); } #[test] @@ -489,9 +489,9 @@ mod tests { let mut manager = ReputationManager::new(); let mut node = create_test_node(); - manager.record_event(&mut node, ReputationEvent::BlockProduced, 1000, None).unwrap(); - manager.record_event(&mut node, ReputationEvent::BlockProduced, 2000, None).unwrap(); - manager.record_event(&mut node, ReputationEvent::BlockMissed, 3000, None).unwrap(); + manager.record_event(&mut node, ReputationEvent::BlockProduced, 1000, None).expect("FIX-006: unexpected None/Err"); + manager.record_event(&mut node, ReputationEvent::BlockProduced, 2000, None).expect("FIX-006: unexpected None/Err"); + manager.record_event(&mut node, ReputationEvent::BlockMissed, 3000, None).expect("FIX-006: unexpected None/Err"); let history = manager.get_reputation_history(&node.address, None); assert_eq!(history.len(), 3); @@ -506,9 +506,9 @@ mod tests { let mut manager = ReputationManager::new(); let mut node = create_test_node(); - manager.record_event(&mut node, ReputationEvent::BlockProduced, 1000, None).unwrap(); - manager.record_event(&mut node, ReputationEvent::BlockProduced, 2000, None).unwrap(); - manager.record_event(&mut node, ReputationEvent::BlockMissed, 3000, None).unwrap(); + manager.record_event(&mut node, ReputationEvent::BlockProduced, 1000, None).expect("FIX-006: unexpected None/Err"); + manager.record_event(&mut node, ReputationEvent::BlockProduced, 2000, None).expect("FIX-006: unexpected None/Err"); + manager.record_event(&mut node, ReputationEvent::BlockMissed, 3000, None).expect("FIX-006: unexpected None/Err"); let stats = manager.get_reputation_statistics(&node.address); assert_eq!(stats.total_changes, 3); diff --git a/nac-cbpp-l1/tests/integration_test.rs b/nac-cbpp-l1/tests/integration_test.rs index 86c8af5..c4604a3 100644 --- a/nac-cbpp-l1/tests/integration_test.rs +++ b/nac-cbpp-l1/tests/integration_test.rs @@ -17,8 +17,8 @@ fn register_test_cbp(registry: &mut CbpRegistry, id: u8) -> Address { 8000, 80, 1000, - ).unwrap(); - registry.activate_cbp(&address).unwrap(); + ).expect("mainnet: handle error"); + registry.activate_cbp(&address).expect("mainnet: handle error"); address } @@ -28,25 +28,25 @@ fn test_full_lifecycle() { let address = register_test_cbp(&mut registry, 1); // 1. 注册和激活 - assert_eq!(registry.get_cbp(&address).unwrap().status, CbpStatus::Active); + assert_eq!(registry.get_cbp(&address).expect("mainnet: handle error").status, CbpStatus::Active); // 2. 记录声誉事件 - let mut node = registry.get_cbp(&address).unwrap().clone(); + let mut node = registry.get_cbp(&address).expect("mainnet: handle error").clone(); registry.reputation_manager_mut().record_event( &mut node, ReputationEvent::BlockProduced, 2000, None, - ).unwrap(); - *registry.get_cbp_mut(&address).unwrap() = node; + ).expect("mainnet: handle error"); + *registry.get_cbp_mut(&address).expect("mainnet: handle error") = node; // 提交退出请求 - let node = registry.get_cbp(&address).unwrap().clone(); + let node = registry.get_cbp(&address).expect("mainnet: handle error").clone(); registry.exit_manager_mut().submit_exit_request( &node, ExitReason::Voluntary, 3000, - ).unwrap(); + ).expect("mainnet: handle error"); // 4. 审核退出 registry.exit_manager_mut().review_exit_request( @@ -55,23 +55,23 @@ fn test_full_lifecycle() { Address::new([99u8; 32]), Some("Approved".to_string()), 3000 + 8 * 24 * 3600, - ).unwrap(); + ).expect("mainnet: handle error"); // 5. 确认退出 - let mut node = registry.get_cbp(&address).unwrap().clone(); + let mut node = registry.get_cbp(&address).expect("mainnet: handle error").clone(); registry.exit_manager_mut().confirm_exit( &address, &node, 100_000_000_000, 0, 3000 + 22 * 24 * 3600, - ).unwrap(); + ).expect("mainnet: handle error"); // 更新节点状态 node.status = CbpStatus::Exited; - *registry.get_cbp_mut(&address).unwrap() = node; + *registry.get_cbp_mut(&address).expect("mainnet: handle error") = node; - assert_eq!(registry.get_cbp(&address).unwrap().status, CbpStatus::Exited); + assert_eq!(registry.get_cbp(&address).expect("mainnet: handle error").status, CbpStatus::Exited); } #[test] @@ -83,28 +83,28 @@ fn test_redemption_workflow() { let timestamp = 1000 + 31 * 24 * 3600; // 提交赎回请求 - let node = registry.get_cbp(&address).unwrap().clone(); + let node = registry.get_cbp(&address).expect("mainnet: handle error").clone(); registry.redemption_manager_mut().submit_redemption_request( &node, RedemptionType::Partial, 50_000_000_000, timestamp, - ).unwrap(); + ).expect("mainnet: handle error"); // 处理赎回 - let mut node = registry.get_cbp(&address).unwrap().clone(); + let mut node = registry.get_cbp(&address).expect("mainnet: handle error").clone(); let (actual, _penalty) = registry.redemption_manager_mut().process_redemption( &address, &node, timestamp + 100, - ).unwrap(); + ).expect("mainnet: handle error"); // 更新质押金额 node.stake_amount -= actual; - *registry.get_cbp_mut(&address).unwrap() = node; + *registry.get_cbp_mut(&address).expect("mainnet: handle error") = node; // 验证质押减少 - assert!(registry.get_cbp(&address).unwrap().stake_amount < 100_000_000_000); + assert!(registry.get_cbp(&address).expect("mainnet: handle error").stake_amount < 100_000_000_000); } #[test] @@ -113,7 +113,7 @@ fn test_penalty_and_appeal() { let address = register_test_cbp(&mut registry, 3); // 检测违规 - let node = registry.get_cbp(&address).unwrap().clone(); + let node = registry.get_cbp(&address).expect("mainnet: handle error").clone(); let detection = registry.penalty_manager().detect_violation( &node, ViolationType::ConsecutiveMissedBlocks, @@ -123,13 +123,13 @@ fn test_penalty_and_appeal() { ); // 执行处罚 - let mut node = registry.get_cbp(&address).unwrap().clone(); + let mut node = registry.get_cbp(&address).expect("mainnet: handle error").clone(); let penalty_id = registry.penalty_manager_mut().execute_penalty( &mut node, detection, 2000, - ).unwrap(); - *registry.get_cbp_mut(&address).unwrap() = node; + ).expect("mainnet: handle error"); + *registry.get_cbp_mut(&address).expect("mainnet: handle error") = node; // 提交申诉 let appeal_id = registry.penalty_manager_mut().submit_appeal( @@ -138,7 +138,7 @@ fn test_penalty_and_appeal() { "False positive".to_string(), "Counter evidence".to_string(), 2000 + 3600, - ).unwrap(); + ).expect("mainnet: handle error"); // 审核申诉 registry.penalty_manager_mut().review_appeal( @@ -147,15 +147,15 @@ fn test_penalty_and_appeal() { Address::new([99u8; 32]), Some("Approved".to_string()), 2000 + 7200, - ).unwrap(); + ).expect("mainnet: handle error"); // 撤销处罚 - let mut node = registry.get_cbp(&address).unwrap().clone(); + let mut node = registry.get_cbp(&address).expect("mainnet: handle error").clone(); registry.penalty_manager_mut().revoke_penalty( penalty_id, &mut node, - ).unwrap(); - *registry.get_cbp_mut(&address).unwrap() = node; + ).expect("mainnet: handle error"); + *registry.get_cbp_mut(&address).expect("mainnet: handle error") = node; } #[test] @@ -163,17 +163,17 @@ fn test_reputation_decay() { let mut registry = create_test_registry(); let address = register_test_cbp(&mut registry, 4); - let initial_reputation = registry.get_cbp(&address).unwrap().reputation; + let initial_reputation = registry.get_cbp(&address).expect("mainnet: handle error").reputation; // 应用衰减(1天后) - let mut node = registry.get_cbp(&address).unwrap().clone(); + let mut node = registry.get_cbp(&address).expect("mainnet: handle error").clone(); registry.reputation_manager_mut().apply_decay( &mut node, 1000 + 24 * 3600, - ).unwrap(); - *registry.get_cbp_mut(&address).unwrap() = node; + ).expect("mainnet: handle error"); + *registry.get_cbp_mut(&address).expect("mainnet: handle error") = node; - assert!(registry.get_cbp(&address).unwrap().reputation < initial_reputation); + assert!(registry.get_cbp(&address).expect("mainnet: handle error").reputation < initial_reputation); } #[test] @@ -184,24 +184,24 @@ fn test_emergency_redemption_penalty() { let timestamp = 1000 + 31 * 24 * 3600; // 紧急赎回 - let node = registry.get_cbp(&address).unwrap().clone(); + let node = registry.get_cbp(&address).expect("mainnet: handle error").clone(); registry.redemption_manager_mut().submit_redemption_request( &node, RedemptionType::Emergency, 100_000_000_000, timestamp, - ).unwrap(); + ).expect("mainnet: handle error"); - let mut node = registry.get_cbp(&address).unwrap().clone(); + let mut node = registry.get_cbp(&address).expect("mainnet: handle error").clone(); let (actual, penalty) = registry.redemption_manager_mut().process_redemption( &address, &node, timestamp + 100, - ).unwrap(); + ).expect("mainnet: handle error"); // 更新质押金额 node.stake_amount -= actual; - *registry.get_cbp_mut(&address).unwrap() = node; + *registry.get_cbp_mut(&address).expect("mainnet: handle error") = node; // 紧急赎回有20%处罚 assert_eq!(penalty, 100_000_000_000 * 20 / 100); @@ -214,7 +214,7 @@ fn test_multiple_violations() { let address = register_test_cbp(&mut registry, 6); // 第一次违规 - let node = registry.get_cbp(&address).unwrap().clone(); + let node = registry.get_cbp(&address).expect("mainnet: handle error").clone(); let detection1 = registry.penalty_manager().detect_violation( &node, ViolationType::HardwareFailure, @@ -223,16 +223,16 @@ fn test_multiple_violations() { 2000, ); - let mut node = registry.get_cbp(&address).unwrap().clone(); + let mut node = registry.get_cbp(&address).expect("mainnet: handle error").clone(); registry.penalty_manager_mut().execute_penalty( &mut node, detection1, 2000, - ).unwrap(); - *registry.get_cbp_mut(&address).unwrap() = node; + ).expect("mainnet: handle error"); + *registry.get_cbp_mut(&address).expect("mainnet: handle error") = node; // 第二次违规 - let node = registry.get_cbp(&address).unwrap().clone(); + let node = registry.get_cbp(&address).expect("mainnet: handle error").clone(); let detection2 = registry.penalty_manager().detect_violation( &node, ViolationType::ConsecutiveMissedBlocks, @@ -241,13 +241,13 @@ fn test_multiple_violations() { 3000, ); - let mut node = registry.get_cbp(&address).unwrap().clone(); + let mut node = registry.get_cbp(&address).expect("mainnet: handle error").clone(); registry.penalty_manager_mut().execute_penalty( &mut node, detection2, 3000, - ).unwrap(); - *registry.get_cbp_mut(&address).unwrap() = node; + ).expect("mainnet: handle error"); + *registry.get_cbp_mut(&address).expect("mainnet: handle error") = node; let records = registry.penalty_manager().get_penalty_records(Some(&address)); assert_eq!(records.len(), 2); @@ -259,17 +259,17 @@ fn test_exit_cancellation() { let address = register_test_cbp(&mut registry, 7); // 提交退出请求 - let node = registry.get_cbp(&address).unwrap().clone(); + let node = registry.get_cbp(&address).expect("mainnet: handle error").clone(); registry.exit_manager_mut().submit_exit_request( &node, ExitReason::Voluntary, 2000, - ).unwrap(); + ).expect("mainnet: handle error"); // 取消退出 - registry.exit_manager_mut().cancel_exit_request(&address).unwrap(); + registry.exit_manager_mut().cancel_exit_request(&address).expect("mainnet: handle error"); - let request = registry.exit_manager().get_exit_request(&address).unwrap(); + let request = registry.exit_manager().get_exit_request(&address).expect("mainnet: handle error"); assert_eq!(request.status, ExitStatus::Cancelled); } @@ -279,28 +279,28 @@ fn test_reputation_recovery() { let address = register_test_cbp(&mut registry, 8); // 降低声誉 - let mut node = registry.get_cbp(&address).unwrap().clone(); + let mut node = registry.get_cbp(&address).expect("mainnet: handle error").clone(); registry.reputation_manager_mut().record_event( &mut node, ReputationEvent::BlockMissed, 2000, None, - ).unwrap(); - *registry.get_cbp_mut(&address).unwrap() = node; + ).expect("mainnet: handle error"); + *registry.get_cbp_mut(&address).expect("mainnet: handle error") = node; - let low_reputation = registry.get_cbp(&address).unwrap().reputation; + let low_reputation = registry.get_cbp(&address).expect("mainnet: handle error").reputation; // 恢复声誉 - let mut node = registry.get_cbp(&address).unwrap().clone(); + let mut node = registry.get_cbp(&address).expect("mainnet: handle error").clone(); registry.reputation_manager_mut().recover_reputation( &mut node, 0.1, 3000, "Community contribution".to_string(), - ).unwrap(); - *registry.get_cbp_mut(&address).unwrap() = node; + ).expect("mainnet: handle error"); + *registry.get_cbp_mut(&address).expect("mainnet: handle error") = node; - assert!(registry.get_cbp(&address).unwrap().reputation > low_reputation); + assert!(registry.get_cbp(&address).expect("mainnet: handle error").reputation > low_reputation); } #[test] @@ -308,10 +308,10 @@ fn test_slashing_penalty() { let mut registry = create_test_registry(); let address = register_test_cbp(&mut registry, 9); - let original_stake = registry.get_cbp(&address).unwrap().stake_amount; + let original_stake = registry.get_cbp(&address).expect("mainnet: handle error").stake_amount; // 双签违规 - let node = registry.get_cbp(&address).unwrap().clone(); + let node = registry.get_cbp(&address).expect("mainnet: handle error").clone(); let detection = registry.penalty_manager().detect_violation( &node, ViolationType::DoubleSign, @@ -320,15 +320,15 @@ fn test_slashing_penalty() { 2000, ); - let mut node = registry.get_cbp(&address).unwrap().clone(); + let mut node = registry.get_cbp(&address).expect("mainnet: handle error").clone(); registry.penalty_manager_mut().execute_penalty( &mut node, detection, 2000, - ).unwrap(); - *registry.get_cbp_mut(&address).unwrap() = node; + ).expect("mainnet: handle error"); + *registry.get_cbp_mut(&address).expect("mainnet: handle error") = node; - assert!(registry.get_cbp(&address).unwrap().stake_amount < original_stake); + assert!(registry.get_cbp(&address).expect("mainnet: handle error").stake_amount < original_stake); } #[test] @@ -338,15 +338,15 @@ fn test_batch_reputation_update() { let addr2 = register_test_cbp(&mut registry, 11); // 设置出块数 - registry.get_cbp_mut(&addr1).unwrap().blocks_produced = 10; - registry.get_cbp_mut(&addr2).unwrap().blocks_produced = 5; + registry.get_cbp_mut(&addr1).expect("mainnet: handle error").blocks_produced = 10; + registry.get_cbp_mut(&addr2).expect("mainnet: handle error").blocks_produced = 5; // 批量更新 let mut nodes: Vec = registry.get_all_nodes().into_iter().cloned().collect(); let updated = registry.reputation_manager_mut().batch_update_for_blocks( &mut nodes, 3000, - ).unwrap(); + ).expect("mainnet: handle error"); assert!(updated >= 2); } @@ -357,16 +357,16 @@ fn test_statistics() { let address = register_test_cbp(&mut registry, 12); // 生成一些活动 - let mut node = registry.get_cbp(&address).unwrap().clone(); + let mut node = registry.get_cbp(&address).expect("mainnet: handle error").clone(); registry.reputation_manager_mut().record_event( &mut node, ReputationEvent::BlockProduced, 2000, None, - ).unwrap(); - *registry.get_cbp_mut(&address).unwrap() = node; + ).expect("mainnet: handle error"); + *registry.get_cbp_mut(&address).expect("mainnet: handle error") = node; - let node = registry.get_cbp(&address).unwrap().clone(); + let node = registry.get_cbp(&address).expect("mainnet: handle error").clone(); let detection = registry.penalty_manager().detect_violation( &node, ViolationType::HardwareFailure, @@ -375,13 +375,13 @@ fn test_statistics() { 3000, ); - let mut node = registry.get_cbp(&address).unwrap().clone(); + let mut node = registry.get_cbp(&address).expect("mainnet: handle error").clone(); registry.penalty_manager_mut().execute_penalty( &mut node, detection, 3000, - ).unwrap(); - *registry.get_cbp_mut(&address).unwrap() = node; + ).expect("mainnet: handle error"); + *registry.get_cbp_mut(&address).expect("mainnet: handle error") = node; // 获取统计 let rep_stats = registry.reputation_manager().get_reputation_statistics(&address); diff --git a/nac-cbpp/src/fork.rs b/nac-cbpp/src/fork.rs index 145662c..d3d7dc6 100644 --- a/nac-cbpp/src/fork.rs +++ b/nac-cbpp/src/fork.rs @@ -60,7 +60,7 @@ impl ForkInfo { chains: Vec::new(), detected_at: std::time::SystemTime::now() .duration_since(std::time::UNIX_EPOCH) - .unwrap() + .expect("FIX-006: unexpected None/Err") .as_secs(), resolved: false, } @@ -544,10 +544,10 @@ mod tests { let block2 = Block::new(1, "genesis".to_string(), "validator2".to_string()); // 第一个区块不应该触发分叉 - assert!(detector.add_block(block1).unwrap().is_none()); + assert!(detector.add_block(block1).expect("mainnet: handle error").is_none()); // 第二个相同高度的区块应该触发分叉 - let fork = detector.add_block(block2).unwrap(); + let fork = detector.add_block(block2).expect("FIX-006: unexpected None/Err"); assert!(fork.is_some()); } @@ -567,7 +567,7 @@ mod tests { fork_info.add_chain(chain1); fork_info.add_chain(chain2); - let best = selector.select_best_chain(&fork_info).unwrap(); + let best = selector.select_best_chain(&fork_info).expect("FIX-006: unexpected None/Err"); assert_eq!(best.id, "chain2"); } @@ -581,7 +581,7 @@ mod tests { fork_info.add_chain(chain.clone()); - let plan = recovery.recover_from_fork(&fork_info, &chain).unwrap(); + let plan = recovery.recover_from_fork(&fork_info, &chain).expect("FIX-006: unexpected None/Err"); assert_eq!(plan.action, RecoveryAction::Rollback); assert_eq!(plan.target_height, 10); } @@ -603,8 +603,8 @@ mod tests { let block1 = Block::new(1, "genesis".to_string(), "v1".to_string()); let block2 = Block::new(1, "genesis".to_string(), "v2".to_string()); - detector.add_block(block1).unwrap(); - detector.add_block(block2).unwrap(); + detector.add_block(block1).expect("FIX-006: unexpected None/Err"); + detector.add_block(block2).expect("FIX-006: unexpected None/Err"); let stats = detector.stats(); assert_eq!(stats.total_forks, 1); diff --git a/nac-cbpp/src/signature.rs b/nac-cbpp/src/signature.rs index 9dd2012..d54e63b 100644 --- a/nac-cbpp/src/signature.rs +++ b/nac-cbpp/src/signature.rs @@ -560,13 +560,13 @@ mod tests { let mut manager = KeyManager::new(); // 生成密钥对 - let (private_key, public_key) = manager.generate_key_pair("test".to_string()).unwrap(); + let (private_key, public_key) = manager.generate_key_pair("test".to_string()).expect("FIX-006: unexpected None/Err"); assert_eq!(manager.key_count(), 1); // 获取密钥 - let retrieved_private = manager.get_private_key("test").unwrap(); - let retrieved_public = manager.get_public_key("test").unwrap(); + let retrieved_private = manager.get_private_key("test").expect("FIX-006: unexpected None/Err"); + let retrieved_public = manager.get_public_key("test").expect("FIX-006: unexpected None/Err"); assert_eq!(retrieved_private.id(), private_key.id()); assert_eq!(retrieved_public.id(), public_key.id()); @@ -575,10 +575,10 @@ mod tests { #[test] fn test_key_manager_sign_verify() { let mut manager = KeyManager::new(); - manager.generate_key_pair("test".to_string()).unwrap(); + manager.generate_key_pair("test".to_string()).expect("FIX-006: unexpected None/Err"); let message = b"Test message"; - let signature = manager.sign("test", message).unwrap(); + let signature = manager.sign("test", message).expect("FIX-006: unexpected None/Err"); assert!(manager.verify("test", message, &signature).is_ok()); } @@ -607,7 +607,7 @@ mod tests { let signatures = vec![key1.sign(&messages[0]), key2.sign(&messages[1])]; let public_keys = vec![key1.public_key(), key2.public_key()]; - let results = verifier.batch_verify(&messages, &signatures, &public_keys).unwrap(); + let results = verifier.batch_verify(&messages, &signatures, &public_keys).expect("FIX-006: unexpected None/Err"); assert_eq!(results.len(), 2); assert!(results[0]); diff --git a/nac-cbpp/src/timeout.rs b/nac-cbpp/src/timeout.rs index 0e421ed..b8dd6b6 100644 --- a/nac-cbpp/src/timeout.rs +++ b/nac-cbpp/src/timeout.rs @@ -144,7 +144,7 @@ impl TimeoutEvent { ) -> Self { let triggered_at = SystemTime::now() .duration_since(UNIX_EPOCH) - .unwrap() + .expect("FIX-006: unexpected None/Err") .as_secs(); TimeoutEvent { @@ -190,7 +190,7 @@ impl TimeoutManager { /// 使用默认配置创建 pub fn with_default_config() -> Self { - Self::new(TimeoutConfig::default_config()).unwrap() + Self::new(TimeoutConfig::default_config()).expect("FIX-006: unexpected None/Err") } /// 启动超时计时器 @@ -521,7 +521,7 @@ mod tests { let mut config = TimeoutConfig::default_config(); config.proposal_timeout = 1; // 1秒超时 - let mut manager = TimeoutManager::new(config).unwrap(); + let mut manager = TimeoutManager::new(config).expect("FIX-006: unexpected None/Err"); manager.start_timeout( "test".to_string(), @@ -563,19 +563,19 @@ mod tests { ); // 第一次重试 - let action1 = recovery.handle_timeout(&event).unwrap(); + let action1 = recovery.handle_timeout(&event).expect("FIX-006: unexpected None/Err"); assert_eq!(action1, RecoveryAction::Retry(1)); // 第二次重试 - let action2 = recovery.handle_timeout(&event).unwrap(); + let action2 = recovery.handle_timeout(&event).expect("FIX-006: unexpected None/Err"); assert_eq!(action2, RecoveryAction::Retry(2)); // 第三次重试 - let action3 = recovery.handle_timeout(&event).unwrap(); + let action3 = recovery.handle_timeout(&event).expect("FIX-006: unexpected None/Err"); assert_eq!(action3, RecoveryAction::Retry(3)); // 超过最大重试次数 - let action4 = recovery.handle_timeout(&event).unwrap(); + let action4 = recovery.handle_timeout(&event).expect("FIX-006: unexpected None/Err"); assert_eq!(action4, RecoveryAction::GiveUp); } @@ -590,7 +590,7 @@ mod tests { 0, ); - let action = recovery.handle_timeout(&event).unwrap(); + let action = recovery.handle_timeout(&event).expect("FIX-006: unexpected None/Err"); assert_eq!(action, RecoveryAction::Skip); } diff --git a/nac-cbpp/src/validation.rs b/nac-cbpp/src/validation.rs index cc22a8d..4e5fcbd 100644 --- a/nac-cbpp/src/validation.rs +++ b/nac-cbpp/src/validation.rs @@ -392,7 +392,7 @@ impl BlockValidator { for tx in &block.body.transactions { // 验证交易大小 - let tx_size = serde_json::to_string(tx).unwrap().len(); + let tx_size = serde_json::to_string(tx).expect("FIX-006: unexpected None/Err").len(); if tx_size > self.transaction_rules.max_size { return Err(ValidationError::InvalidTransaction( format!("Transaction size {} exceeds limit {}", tx_size, self.transaction_rules.max_size) @@ -475,7 +475,7 @@ impl BlockValidator { // 交易大小 for tx in &block.body.transactions { - size += serde_json::to_string(tx).unwrap().len(); + size += serde_json::to_string(tx).expect("FIX-006: unexpected None/Err").len(); } size diff --git a/nac-cbpp/src/validator.rs b/nac-cbpp/src/validator.rs index 277f311..aa780f7 100644 --- a/nac-cbpp/src/validator.rs +++ b/nac-cbpp/src/validator.rs @@ -155,7 +155,7 @@ mod tests { assert!(set.update_stake("v1", 2000)); assert_eq!(set.total_voting_power(), 2000); - let validator = set.get_validator("v1").unwrap(); + let validator = set.get_validator("v1").expect("FIX-006: unexpected None/Err"); assert_eq!(validator.stake, 2000); } } diff --git a/nac-cbpp/tests/integration_test.rs b/nac-cbpp/tests/integration_test.rs index 59ba976..06a2bfa 100644 --- a/nac-cbpp/tests/integration_test.rs +++ b/nac-cbpp/tests/integration_test.rs @@ -57,7 +57,7 @@ fn test_signature_integration() { let mut key_manager = KeyManager::new(); // 生成密钥对 - let (private_key, public_key) = key_manager.generate_key_pair("validator1".to_string()).unwrap(); + let (private_key, public_key) = key_manager.generate_key_pair("validator1".to_string()).expect("mainnet: handle error"); // 签名消息 let message = b"Test block"; @@ -102,14 +102,14 @@ fn test_fork_detection_integration() { let block2 = Block::new(1, "genesis".to_string(), "validator2".to_string()); // 第一个区块不应触发分叉 - assert!(detector.add_block(block1).unwrap().is_none()); + assert!(detector.add_block(block1).expect("mainnet: handle error").is_none()); // 第二个区块应触发分叉 - let fork = detector.add_block(block2).unwrap(); + let fork = detector.add_block(block2).expect("mainnet: handle error"); assert!(fork.is_some()); // 检查分叉信息 - let fork_info = fork.unwrap(); + let fork_info = fork.expect("mainnet: handle error"); assert_eq!(fork_info.fork_height, 1); assert_eq!(fork_info.chains.len(), 2); } @@ -134,7 +134,7 @@ fn test_fork_choice_integration() { fork_info.add_chain(chain2); // 选择最佳链 - let best_chain = selector.select_best_chain(&fork_info).unwrap(); + let best_chain = selector.select_best_chain(&fork_info).expect("mainnet: handle error"); assert_eq!(best_chain.id, "chain2"); assert_eq!(best_chain.length(), 2); } @@ -155,7 +155,7 @@ fn test_complete_consensus_with_validation() { // 生成验证者密钥 for i in 1..=3 { - key_manager.generate_key_pair(format!("v{}", i)).unwrap(); + key_manager.generate_key_pair(format!("v{}", i)).expect("mainnet: handle error"); } // 开始共识 @@ -183,7 +183,7 @@ fn test_timeout_with_recovery() { // 创建超时管理器(短超时用于测试) let mut config = TimeoutConfig::default_config(); config.proposal_timeout = 1; // 1秒 - let mut timeout_manager = TimeoutManager::new(config).unwrap(); + let mut timeout_manager = TimeoutManager::new(config).expect("mainnet: handle error"); // 启动超时 timeout_manager.start_timeout( @@ -221,9 +221,9 @@ fn test_aggregate_signature_verification() { let mut key_manager = KeyManager::new(); // 生成多个密钥对 - let (pk1, pub1) = key_manager.generate_key_pair("v1".to_string()).unwrap(); - let (pk2, pub2) = key_manager.generate_key_pair("v2".to_string()).unwrap(); - let (pk3, pub3) = key_manager.generate_key_pair("v3".to_string()).unwrap(); + let (pk1, pub1) = key_manager.generate_key_pair("v1".to_string()).expect("mainnet: handle error"); + let (pk2, pub2) = key_manager.generate_key_pair("v2".to_string()).expect("mainnet: handle error"); + let (pk3, pub3) = key_manager.generate_key_pair("v3".to_string()).expect("mainnet: handle error"); // 签名相同消息 let message = b"Block proposal"; diff --git a/nac-cee/src/engine/cache.rs b/nac-cee/src/engine/cache.rs index da086bd..4489e81 100644 --- a/nac-cee/src/engine/cache.rs +++ b/nac-cee/src/engine/cache.rs @@ -201,7 +201,7 @@ mod tests { let retrieved = cache.get(1); assert!(retrieved.is_some()); - assert_eq!(retrieved.unwrap().id, 1); + assert_eq!(retrieved.expect("mainnet: handle error").id, 1); } #[test] diff --git a/nac-cee/src/engine/executor.rs b/nac-cee/src/engine/executor.rs index bf6e8c2..476816e 100644 --- a/nac-cee/src/engine/executor.rs +++ b/nac-cee/src/engine/executor.rs @@ -255,7 +255,7 @@ mod tests { let result = executor.execute(&rule, &context); assert!(result.is_ok()); - let rule_result = result.unwrap(); + let rule_result = result.expect("mainnet: handle error"); assert!(rule_result.passed); assert_eq!(rule_result.warnings.len(), 1); } @@ -284,7 +284,7 @@ mod tests { let result = executor.execute(&rule, &context); assert!(result.is_ok()); - let rule_result = result.unwrap(); + let rule_result = result.expect("mainnet: handle error"); assert!(rule_result.passed); assert_eq!(rule_result.actions.len(), 1); } @@ -313,7 +313,7 @@ mod tests { let result = executor.execute(&rule, &context); assert!(result.is_ok()); - let rule_result = result.unwrap(); + let rule_result = result.expect("mainnet: handle error"); assert!(!rule_result.passed); assert_eq!(rule_result.actions.len(), 0); } @@ -327,14 +327,14 @@ mod tests { &Value::UnsignedInteger(100), ); assert!(result.is_ok()); - assert!(result.unwrap()); + assert!(result.expect("mainnet: handle error")); let result = executor.compare_equal( &Value::String("test".to_string()), &Value::String("test".to_string()), ); assert!(result.is_ok()); - assert!(result.unwrap()); + assert!(result.expect("mainnet: handle error")); } #[test] @@ -346,14 +346,14 @@ mod tests { &Value::UnsignedInteger(100), ); assert!(result.is_ok()); - assert!(result.unwrap()); + assert!(result.expect("mainnet: handle error")); let result = executor.compare_greater_than( &Value::UnsignedInteger(50), &Value::UnsignedInteger(100), ); assert!(result.is_ok()); - assert!(!result.unwrap()); + assert!(!result.expect("mainnet: handle error")); } #[test] @@ -365,7 +365,7 @@ mod tests { &Value::String("world".to_string()), ); assert!(result.is_ok()); - assert!(result.unwrap()); + assert!(result.expect("mainnet: handle error")); } #[test] @@ -377,14 +377,14 @@ mod tests { &Value::Range(100, 200), ); assert!(result.is_ok()); - assert!(result.unwrap()); + assert!(result.expect("mainnet: handle error")); let result = executor.compare_in_range( &Value::UnsignedInteger(250), &Value::Range(100, 200), ); assert!(result.is_ok()); - assert!(!result.unwrap()); + assert!(!result.expect("mainnet: handle error")); } #[test] diff --git a/nac-cee/src/engine/parser.rs b/nac-cee/src/engine/parser.rs index a87d1f5..936b318 100644 --- a/nac-cee/src/engine/parser.rs +++ b/nac-cee/src/engine/parser.rs @@ -176,7 +176,7 @@ mod tests { let result = parser.parse_from_json(json); assert!(result.is_ok()); - let rule = result.unwrap(); + let rule = result.expect("mainnet: handle error"); assert_eq!(rule.id, 1); assert_eq!(rule.clause_id, 100); } @@ -273,7 +273,7 @@ mod tests { let result = parser.parse_from_clause(1, "禁止大额转账"); assert!(result.is_ok()); - let rules = result.unwrap(); + let rules = result.expect("mainnet: handle error"); assert_eq!(rules.len(), 1); } } diff --git a/nac-cee/src/receipt/mod.rs b/nac-cee/src/receipt/mod.rs index 17956f6..dfcd777 100644 --- a/nac-cee/src/receipt/mod.rs +++ b/nac-cee/src/receipt/mod.rs @@ -75,7 +75,7 @@ impl ReceiptGenerator { validation_result, timestamp: std::time::SystemTime::now() .duration_since(std::time::UNIX_EPOCH) - .unwrap() + .expect("mainnet: handle error") .as_secs(), executor, } diff --git a/nac-cee/src/validator/block.rs b/nac-cee/src/validator/block.rs index 361dc35..036e511 100644 --- a/nac-cee/src/validator/block.rs +++ b/nac-cee/src/validator/block.rs @@ -225,7 +225,7 @@ mod tests { let result = validator.validate_header(&block, &[]); assert!(result.is_ok()); - assert!(result.unwrap().passed); + assert!(result.expect("mainnet: handle error").passed); } #[test] @@ -237,7 +237,7 @@ mod tests { let result = validator.validate_header(&block, &[]); assert!(result.is_ok()); - assert!(!result.unwrap().passed); + assert!(!result.expect("mainnet: handle error").passed); } #[test] @@ -248,7 +248,7 @@ mod tests { let result = validator.validate(&block, &rules); assert!(result.is_ok()); - assert!(result.unwrap().passed); + assert!(result.expect("mainnet: handle error").passed); } #[test] @@ -259,7 +259,7 @@ mod tests { let result = validator.validate_transactions(&block, &rules); assert!(result.is_ok()); - assert!(result.unwrap().passed); + assert!(result.expect("mainnet: handle error").passed); } #[test] @@ -270,6 +270,6 @@ mod tests { let result = validator.validate_block_rules(&block, &rules); assert!(result.is_ok()); - assert!(result.unwrap().passed); + assert!(result.expect("mainnet: handle error").passed); } } diff --git a/nac-cee/src/validator/state.rs b/nac-cee/src/validator/state.rs index 8eff971..87061ec 100644 --- a/nac-cee/src/validator/state.rs +++ b/nac-cee/src/validator/state.rs @@ -225,7 +225,7 @@ mod tests { let result = validator.validate(&change, &[]); assert!(result.is_ok()); - assert!(result.unwrap().passed); + assert!(result.expect("mainnet: handle error").passed); } #[test] @@ -251,7 +251,7 @@ mod tests { let result = validator.validate(&proposal, &[]); assert!(result.is_ok()); - assert!(result.unwrap().passed); + assert!(result.expect("mainnet: handle error").passed); } #[test] @@ -271,6 +271,6 @@ mod tests { let result = validator.validate(&proposal, &[]); assert!(result.is_ok()); - assert!(!result.unwrap().passed); + assert!(!result.expect("mainnet: handle error").passed); } } diff --git a/nac-cee/src/validator/transaction.rs b/nac-cee/src/validator/transaction.rs index 42591d3..e8d0574 100644 --- a/nac-cee/src/validator/transaction.rs +++ b/nac-cee/src/validator/transaction.rs @@ -167,7 +167,7 @@ mod tests { let result = validator.quick_validate(&tx); assert!(result.is_ok()); - assert!(result.unwrap()); + assert!(result.expect("mainnet: handle error")); } #[test] @@ -178,7 +178,7 @@ mod tests { let result = validator.quick_validate(&tx); assert!(result.is_ok()); - assert!(!result.unwrap()); + assert!(!result.expect("mainnet: handle error")); } #[test] @@ -191,7 +191,7 @@ mod tests { let result = validator.quick_validate(&tx); assert!(result.is_ok()); - assert!(!result.unwrap()); + assert!(!result.expect("mainnet: handle error")); } #[test] @@ -216,7 +216,7 @@ mod tests { let result = validator.validate(&tx, &rules); assert!(result.is_ok()); - let validation_result = result.unwrap(); + let validation_result = result.expect("mainnet: handle error"); assert!(validation_result.passed); } diff --git a/nac-charter-service/src/main.rs b/nac-charter-service/src/main.rs index b913ef2..8cf3c17 100644 --- a/nac-charter-service/src/main.rs +++ b/nac-charter-service/src/main.rs @@ -81,7 +81,7 @@ fn validate_charter_syntax(source: &str) -> (bool, Vec) { } async fn health(state: web::Data) -> HttpResponse { - let s = state.lock().unwrap(); + let s = state.lock().expect("lock not poisoned"); HttpResponse::Ok().json(serde_json::json!({ "status": "healthy", "service": "nac-charter-service", "version": SERVICE_VERSION, "charter_version": CHARTER_VERSION, @@ -92,7 +92,7 @@ async fn health(state: web::Data) -> HttpResponse { } async fn get_state(state: web::Data) -> HttpResponse { - let s = state.lock().unwrap(); + let s = state.lock().expect("lock not poisoned"); HttpResponse::Ok().json(serde_json::json!({ "chain_id": CHAIN_ID, "charter_version": CHARTER_VERSION, "total_compiled": s.total_compiled, @@ -108,7 +108,7 @@ async fn compile_contract(state: web::Data, req: web::Json HttpResponse { } async fn list_compilations(state: web::Data) -> HttpResponse { - let s = state.lock().unwrap(); + let s = state.lock().expect("lock not poisoned"); let records: Vec<&CompilationRecord> = s.compilations.values().collect(); HttpResponse::Ok().json(serde_json::json!({"compilations": records, "total": records.len()})) } async fn get_stats(state: web::Data) -> HttpResponse { - let s = state.lock().unwrap(); + let s = state.lock().expect("lock not poisoned"); HttpResponse::Ok().json(serde_json::json!({ "service": "nac-charter-service", "layer": "L2-Charter", "chain_id": CHAIN_ID, "total_compiled": s.total_compiled, diff --git a/nac-cli/src/client/nac_lens.rs b/nac-cli/src/client/nac_lens.rs index 37f1395..645a8a7 100644 --- a/nac-cli/src/client/nac_lens.rs +++ b/nac-cli/src/client/nac_lens.rs @@ -21,7 +21,7 @@ impl NrpcClient { client: Client::builder() .timeout(Duration::from_secs(30)) .build() - .unwrap(), + .expect("mainnet: handle error"), timeout: Duration::from_secs(30), } } @@ -32,7 +32,7 @@ impl NrpcClient { self.client = Client::builder() .timeout(timeout) .build() - .unwrap(); + .expect("mainnet: handle error"); self } diff --git a/nac-cli/src/commands/transaction.rs b/nac-cli/src/commands/transaction.rs index e42c63c..76ffc72 100644 --- a/nac-cli/src/commands/transaction.rs +++ b/nac-cli/src/commands/transaction.rs @@ -304,7 +304,7 @@ mod tests { let result = sign_tx(&tx, private_key); assert!(result.is_ok()); - let signed = result.unwrap(); + let signed = result.expect("mainnet: handle error"); assert!(signed.starts_with("0x")); } } diff --git a/nac-cli/src/utils/crypto.rs b/nac-cli/src/utils/crypto.rs index 8728bb2..6b979fe 100644 --- a/nac-cli/src/utils/crypto.rs +++ b/nac-cli/src/utils/crypto.rs @@ -183,7 +183,7 @@ mod tests { let result = generate_keypair(); assert!(result.is_ok()); - let (private_key, address) = result.unwrap(); + let (private_key, address) = result.expect("mainnet: handle error"); assert_eq!(private_key.len(), 64); // 32字节 = 64个十六进制字符 assert!(address.starts_with("0x")); assert_eq!(address.len(), 66); // 0x + 64个十六进制字符 @@ -224,8 +224,8 @@ mod tests { let private_key = "1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef"; let password = "test_password_123"; - let encrypted = encrypt_private_key(private_key, password).unwrap(); - let decrypted = decrypt_private_key(&encrypted, password).unwrap(); + let encrypted = encrypt_private_key(private_key, password).expect("mainnet: handle error"); + let decrypted = decrypt_private_key(&encrypted, password).expect("mainnet: handle error"); assert_eq!(private_key, decrypted); @@ -235,8 +235,8 @@ mod tests { #[test] fn test_private_key_to_address() { - let (private_key, address1) = generate_keypair().unwrap(); - let address2 = private_key_to_address(&private_key).unwrap(); + let (private_key, address1) = generate_keypair().expect("mainnet: handle error"); + let address2 = private_key_to_address(&private_key).expect("mainnet: handle error"); assert_eq!(address1, address2); } } diff --git a/nac-cli/src/utils/keystore.rs b/nac-cli/src/utils/keystore.rs index c022637..03d6bb7 100644 --- a/nac-cli/src/utils/keystore.rs +++ b/nac-cli/src/utils/keystore.rs @@ -242,58 +242,58 @@ mod tests { let private_key = "1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef"; let password = "test_password"; - let keystore = KeystoreFile::new(private_key, password, Some("test account".to_string())).unwrap(); + let keystore = KeystoreFile::new(private_key, password, Some("test account".to_string())).expect("mainnet: handle error"); assert_eq!(keystore.version, 1); assert!(keystore.address.starts_with("0x")); assert!(keystore.note.is_some()); - let decrypted = keystore.decrypt(password).unwrap(); + let decrypted = keystore.decrypt(password).expect("mainnet: handle error"); assert_eq!(decrypted, private_key); } #[test] fn test_keystore_manager() { - let temp_dir = TempDir::new().unwrap(); - let manager = KeystoreManager::new(temp_dir.path().to_path_buf()).unwrap(); + let temp_dir = TempDir::new().expect("mainnet: handle error"); + let manager = KeystoreManager::new(temp_dir.path().to_path_buf()).expect("mainnet: handle error"); let private_key = "1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef"; let password = "test_password"; // 导入 - let address = manager.import(private_key, password, Some("test".to_string())).unwrap(); + let address = manager.import(private_key, password, Some("test".to_string())).expect("mainnet: handle error"); // 列出 - let list = manager.list().unwrap(); + let list = manager.list().expect("mainnet: handle error"); assert_eq!(list.len(), 1); assert_eq!(list[0].address, address); // 导出 - let exported = manager.export(&address, password).unwrap(); + let exported = manager.export(&address, password).expect("mainnet: handle error"); assert_eq!(exported, private_key); // 删除 - manager.delete(&address).unwrap(); - let list = manager.list().unwrap(); + manager.delete(&address).expect("mainnet: handle error"); + let list = manager.list().expect("mainnet: handle error"); assert_eq!(list.len(), 0); } #[test] fn test_change_password() { - let temp_dir = TempDir::new().unwrap(); - let manager = KeystoreManager::new(temp_dir.path().to_path_buf()).unwrap(); + let temp_dir = TempDir::new().expect("mainnet: handle error"); + let manager = KeystoreManager::new(temp_dir.path().to_path_buf()).expect("mainnet: handle error"); let private_key = "1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef"; let old_password = "old_password"; let new_password = "new_password"; - let address = manager.import(private_key, old_password, None).unwrap(); + let address = manager.import(private_key, old_password, None).expect("mainnet: handle error"); // 修改密码 - manager.change_password(&address, old_password, new_password).unwrap(); + manager.change_password(&address, old_password, new_password).expect("mainnet: handle error"); // 用新密码导出 - let exported = manager.export(&address, new_password).unwrap(); + let exported = manager.export(&address, new_password).expect("mainnet: handle error"); assert_eq!(exported, private_key); // 用旧密码应该失败 diff --git a/nac-constitution-clauses/src/lib.rs b/nac-constitution-clauses/src/lib.rs index 1e29aac..b0f480a 100644 --- a/nac-constitution-clauses/src/lib.rs +++ b/nac-constitution-clauses/src/lib.rs @@ -121,7 +121,7 @@ mod tests { registry.add_clause(clause); - let loaded = registry.get_clause(1).unwrap(); + let loaded = registry.get_clause(1).expect("mainnet: handle error"); assert_eq!(loaded.clause_index, 1); assert_eq!(loaded.title, "测试条款"); } diff --git a/nac-constitution-clauses/src/lifecycle/mod.rs b/nac-constitution-clauses/src/lifecycle/mod.rs index 0d64ee7..7001185 100644 --- a/nac-constitution-clauses/src/lifecycle/mod.rs +++ b/nac-constitution-clauses/src/lifecycle/mod.rs @@ -319,9 +319,9 @@ mod tests { let clause = create_test_clause(1); manager.register(&clause); - manager.activate(1, "测试用户".to_string(), 2000).unwrap(); + manager.activate(1, "测试用户".to_string(), 2000).expect("mainnet: handle error"); - let lifecycle = manager.get_lifecycle(1).unwrap(); + let lifecycle = manager.get_lifecycle(1).expect("mainnet: handle error"); assert!(lifecycle.is_active()); assert_eq!(lifecycle.activated_by, Some("测试用户".to_string())); } @@ -332,10 +332,10 @@ mod tests { let clause = create_test_clause(1); manager.register(&clause); - manager.activate(1, "测试用户".to_string(), 2000).unwrap(); - manager.suspend(1, "测试用户".to_string(), "测试停用".to_string(), 3000).unwrap(); + manager.activate(1, "测试用户".to_string(), 2000).expect("mainnet: handle error"); + manager.suspend(1, "测试用户".to_string(), "测试停用".to_string(), 3000).expect("mainnet: handle error"); - let lifecycle = manager.get_lifecycle(1).unwrap(); + let lifecycle = manager.get_lifecycle(1).expect("mainnet: handle error"); assert!(lifecycle.is_suspended()); assert_eq!(lifecycle.suspension_reason, Some("测试停用".to_string())); } @@ -346,10 +346,10 @@ mod tests { let clause = create_test_clause(1); manager.register(&clause); - manager.activate(1, "测试用户".to_string(), 2000).unwrap(); - manager.revoke(1, "测试用户".to_string(), "测试废止".to_string(), 4000).unwrap(); + manager.activate(1, "测试用户".to_string(), 2000).expect("mainnet: handle error"); + manager.revoke(1, "测试用户".to_string(), "测试废止".to_string(), 4000).expect("mainnet: handle error"); - let lifecycle = manager.get_lifecycle(1).unwrap(); + let lifecycle = manager.get_lifecycle(1).expect("mainnet: handle error"); assert!(lifecycle.is_revoked()); assert_eq!(lifecycle.revocation_reason, Some("测试废止".to_string())); } @@ -360,10 +360,10 @@ mod tests { let clause = create_test_clause(1); manager.register(&clause); - manager.activate(1, "测试用户".to_string(), 2000).unwrap(); - manager.set_effective_period(1, 1000, 5000).unwrap(); + manager.activate(1, "测试用户".to_string(), 2000).expect("mainnet: handle error"); + manager.set_effective_period(1, 1000, 5000).expect("mainnet: handle error"); - let lifecycle = manager.get_lifecycle(1).unwrap(); + let lifecycle = manager.get_lifecycle(1).expect("mainnet: handle error"); assert!(!lifecycle.is_effective_at(500)); // 未生效 assert!(lifecycle.is_effective_at(3000)); // 生效中 assert!(!lifecycle.is_effective_at(6000)); // 已失效 @@ -377,11 +377,11 @@ mod tests { manager.register(&clause1); manager.register(&clause2); - manager.activate(1, "测试用户".to_string(), 2000).unwrap(); - manager.activate(2, "测试用户".to_string(), 2000).unwrap(); + manager.activate(1, "测试用户".to_string(), 2000).expect("mainnet: handle error"); + manager.activate(2, "测试用户".to_string(), 2000).expect("mainnet: handle error"); - manager.set_priority(1, 10).unwrap(); - manager.set_priority(2, 5).unwrap(); + manager.set_priority(1, 10).expect("mainnet: handle error"); + manager.set_priority(2, 5).expect("mainnet: handle error"); let clauses = manager.list_clauses_by_priority(); assert_eq!(clauses[0].0, 2); // 优先级5 @@ -396,9 +396,9 @@ mod tests { manager.register(&create_test_clause(2)); manager.register(&create_test_clause(3)); - manager.activate(1, "测试用户".to_string(), 2000).unwrap(); - manager.activate(2, "测试用户".to_string(), 2000).unwrap(); - manager.suspend(2, "测试用户".to_string(), "测试".to_string(), 3000).unwrap(); + manager.activate(1, "测试用户".to_string(), 2000).expect("mainnet: handle error"); + manager.activate(2, "测试用户".to_string(), 2000).expect("mainnet: handle error"); + manager.suspend(2, "测试用户".to_string(), "测试".to_string(), 3000).expect("mainnet: handle error"); let stats = manager.get_status_statistics(); assert_eq!(stats.draft, 1); @@ -414,8 +414,8 @@ mod tests { manager.register(&create_test_clause(2)); manager.register(&create_test_clause(3)); - manager.activate(1, "测试用户".to_string(), 2000).unwrap(); - manager.activate(2, "测试用户".to_string(), 2000).unwrap(); + manager.activate(1, "测试用户".to_string(), 2000).expect("mainnet: handle error"); + manager.activate(2, "测试用户".to_string(), 2000).expect("mainnet: handle error"); let active = manager.list_active_clauses(); assert_eq!(active.len(), 2); diff --git a/nac-constitution-clauses/src/manager/mod.rs b/nac-constitution-clauses/src/manager/mod.rs index ec096a7..07bfe8c 100644 --- a/nac-constitution-clauses/src/manager/mod.rs +++ b/nac-constitution-clauses/src/manager/mod.rs @@ -263,7 +263,7 @@ impl ConstitutionManager { use std::time::{SystemTime, UNIX_EPOCH}; SystemTime::now() .duration_since(UNIX_EPOCH) - .unwrap() + .expect("mainnet: handle error") .as_secs() } @@ -315,9 +315,9 @@ mod tests { #[test] fn test_add_clause() { - let dir = tempdir().unwrap(); + let dir = tempdir().expect("mainnet: handle error"); let path = dir.path().join("clauses.json"); - let mut manager = ConstitutionManager::new(&path).unwrap(); + let mut manager = ConstitutionManager::new(&path).expect("mainnet: handle error"); let clause = create_test_clause(1, ClauseTier::Eternal); let result = manager.add_clause( @@ -331,16 +331,16 @@ mod tests { #[test] fn test_update_clause() { - let dir = tempdir().unwrap(); + let dir = tempdir().expect("mainnet: handle error"); let path = dir.path().join("clauses.json"); - let mut manager = ConstitutionManager::new(&path).unwrap(); + let mut manager = ConstitutionManager::new(&path).expect("mainnet: handle error"); let clause = create_test_clause(1, ClauseTier::Eternal); manager.add_clause( clause, "测试用户".to_string(), "初始版本".to_string(), - ).unwrap(); + ).expect("mainnet: handle error"); let result = manager.update_clause( 1, @@ -351,31 +351,31 @@ mod tests { assert!(result.is_ok()); - let updated = manager.get_clause(1).unwrap(); + let updated = manager.get_clause(1).expect("mainnet: handle error"); assert_eq!(updated.content, "更新后的内容"); } #[test] fn test_version_history() { - let dir = tempdir().unwrap(); + let dir = tempdir().expect("mainnet: handle error"); let path = dir.path().join("clauses.json"); - let mut manager = ConstitutionManager::new(&path).unwrap(); + let mut manager = ConstitutionManager::new(&path).expect("mainnet: handle error"); let clause = create_test_clause(1, ClauseTier::Eternal); manager.add_clause( clause, "测试用户".to_string(), "初始版本".to_string(), - ).unwrap(); + ).expect("mainnet: handle error"); manager.update_clause( 1, "第二版内容".to_string(), "测试用户".to_string(), "第二版".to_string(), - ).unwrap(); + ).expect("mainnet: handle error"); - let history = manager.get_version_history(1).unwrap(); + let history = manager.get_version_history(1).expect("mainnet: handle error"); assert_eq!(history.len(), 2); assert_eq!(history[0].version, 1); assert_eq!(history[1].version, 2); @@ -383,71 +383,71 @@ mod tests { #[test] fn test_rollback() { - let dir = tempdir().unwrap(); + let dir = tempdir().expect("mainnet: handle error"); let path = dir.path().join("clauses.json"); - let mut manager = ConstitutionManager::new(&path).unwrap(); + let mut manager = ConstitutionManager::new(&path).expect("mainnet: handle error"); let clause = create_test_clause(1, ClauseTier::Eternal); manager.add_clause( clause, "测试用户".to_string(), "初始版本".to_string(), - ).unwrap(); + ).expect("mainnet: handle error"); manager.update_clause( 1, "第二版内容".to_string(), "测试用户".to_string(), "第二版".to_string(), - ).unwrap(); + ).expect("mainnet: handle error"); manager.rollback_to_version( 1, 1, "测试用户".to_string(), - ).unwrap(); + ).expect("mainnet: handle error"); - let history = manager.get_version_history(1).unwrap(); + let history = manager.get_version_history(1).expect("mainnet: handle error"); assert_eq!(history.len(), 3); assert_eq!(history[2].change_note, "回滚到版本 1"); } #[test] fn test_delete_clause() { - let dir = tempdir().unwrap(); + let dir = tempdir().expect("mainnet: handle error"); let path = dir.path().join("clauses.json"); - let mut manager = ConstitutionManager::new(&path).unwrap(); + let mut manager = ConstitutionManager::new(&path).expect("mainnet: handle error"); let clause = create_test_clause(1, ClauseTier::Eternal); manager.add_clause( clause, "测试用户".to_string(), "初始版本".to_string(), - ).unwrap(); + ).expect("mainnet: handle error"); assert!(manager.get_clause(1).is_ok()); - manager.delete_clause(1).unwrap(); + manager.delete_clause(1).expect("mainnet: handle error"); assert!(manager.get_clause(1).is_err()); } #[test] fn test_statistics() { - let dir = tempdir().unwrap(); + let dir = tempdir().expect("mainnet: handle error"); let path = dir.path().join("clauses.json"); - let mut manager = ConstitutionManager::new(&path).unwrap(); + let mut manager = ConstitutionManager::new(&path).expect("mainnet: handle error"); manager.add_clause( create_test_clause(1, ClauseTier::Eternal), "测试用户".to_string(), "条款1".to_string(), - ).unwrap(); + ).expect("mainnet: handle error"); manager.add_clause( create_test_clause(101, ClauseTier::Strategic), "测试用户".to_string(), "条款2".to_string(), - ).unwrap(); + ).expect("mainnet: handle error"); let stats = manager.get_statistics(); assert_eq!(stats.total, 2); diff --git a/nac-constitution-clauses/src/storage/mod.rs b/nac-constitution-clauses/src/storage/mod.rs index 6b6dd4b..bf85d7d 100644 --- a/nac-constitution-clauses/src/storage/mod.rs +++ b/nac-constitution-clauses/src/storage/mod.rs @@ -181,42 +181,42 @@ mod tests { #[test] fn test_save_and_load_clause() { - let dir = tempdir().unwrap(); + let dir = tempdir().expect("mainnet: handle error"); let path = dir.path().join("clauses.json"); - let mut storage = ClauseStorage::new(&path).unwrap(); + let mut storage = ClauseStorage::new(&path).expect("mainnet: handle error"); let clause = create_test_clause(1, ClauseTier::Eternal); - storage.save_clause(clause.clone()).unwrap(); + storage.save_clause(clause.clone()).expect("mainnet: handle error"); - let loaded = storage.load_clause(1).unwrap(); + let loaded = storage.load_clause(1).expect("mainnet: handle error"); assert_eq!(loaded.clause_index, 1); assert_eq!(loaded.title, "测试条款 1"); } #[test] fn test_delete_clause() { - let dir = tempdir().unwrap(); + let dir = tempdir().expect("mainnet: handle error"); let path = dir.path().join("clauses.json"); - let mut storage = ClauseStorage::new(&path).unwrap(); + let mut storage = ClauseStorage::new(&path).expect("mainnet: handle error"); let clause = create_test_clause(1, ClauseTier::Eternal); - storage.save_clause(clause).unwrap(); + storage.save_clause(clause).expect("mainnet: handle error"); assert!(storage.load_clause(1).is_ok()); - storage.delete_clause(1).unwrap(); + storage.delete_clause(1).expect("mainnet: handle error"); assert!(storage.load_clause(1).is_err()); } #[test] fn test_list_clauses_by_tier() { - let dir = tempdir().unwrap(); + let dir = tempdir().expect("mainnet: handle error"); let path = dir.path().join("clauses.json"); - let mut storage = ClauseStorage::new(&path).unwrap(); + let mut storage = ClauseStorage::new(&path).expect("mainnet: handle error"); - storage.save_clause(create_test_clause(1, ClauseTier::Eternal)).unwrap(); - storage.save_clause(create_test_clause(101, ClauseTier::Strategic)).unwrap(); - storage.save_clause(create_test_clause(1001, ClauseTier::Tactical)).unwrap(); + storage.save_clause(create_test_clause(1, ClauseTier::Eternal)).expect("mainnet: handle error"); + storage.save_clause(create_test_clause(101, ClauseTier::Strategic)).expect("mainnet: handle error"); + storage.save_clause(create_test_clause(1001, ClauseTier::Tactical)).expect("mainnet: handle error"); let eternal = storage.list_clauses_by_tier(ClauseTier::Eternal); assert_eq!(eternal.len(), 1); @@ -230,32 +230,32 @@ mod tests { #[test] fn test_persist_and_reload() { - let dir = tempdir().unwrap(); + let dir = tempdir().expect("mainnet: handle error"); let path = dir.path().join("clauses.json"); { - let mut storage = ClauseStorage::new(&path).unwrap(); - storage.save_clause(create_test_clause(1, ClauseTier::Eternal)).unwrap(); - storage.save_clause(create_test_clause(2, ClauseTier::Eternal)).unwrap(); + let mut storage = ClauseStorage::new(&path).expect("mainnet: handle error"); + storage.save_clause(create_test_clause(1, ClauseTier::Eternal)).expect("mainnet: handle error"); + storage.save_clause(create_test_clause(2, ClauseTier::Eternal)).expect("mainnet: handle error"); } - let storage = ClauseStorage::load_from_disk(&path).unwrap(); + let storage = ClauseStorage::load_from_disk(&path).expect("mainnet: handle error"); assert_eq!(storage.count(), 2); } #[test] fn test_list_effective_clauses() { - let dir = tempdir().unwrap(); + let dir = tempdir().expect("mainnet: handle error"); let path = dir.path().join("clauses.json"); - let mut storage = ClauseStorage::new(&path).unwrap(); + let mut storage = ClauseStorage::new(&path).expect("mainnet: handle error"); let mut clause1 = create_test_clause(1, ClauseTier::Eternal); clause1.effective_from = 1000; - storage.save_clause(clause1).unwrap(); + storage.save_clause(clause1).expect("mainnet: handle error"); let mut clause2 = create_test_clause(2, ClauseTier::Eternal); clause2.effective_from = 2000; - storage.save_clause(clause2).unwrap(); + storage.save_clause(clause2).expect("mainnet: handle error"); let effective = storage.list_effective_clauses(1500); assert_eq!(effective.len(), 1); @@ -266,13 +266,13 @@ mod tests { #[test] fn test_count_by_tier() { - let dir = tempdir().unwrap(); + let dir = tempdir().expect("mainnet: handle error"); let path = dir.path().join("clauses.json"); - let mut storage = ClauseStorage::new(&path).unwrap(); + let mut storage = ClauseStorage::new(&path).expect("mainnet: handle error"); - storage.save_clause(create_test_clause(1, ClauseTier::Eternal)).unwrap(); - storage.save_clause(create_test_clause(2, ClauseTier::Eternal)).unwrap(); - storage.save_clause(create_test_clause(101, ClauseTier::Strategic)).unwrap(); + storage.save_clause(create_test_clause(1, ClauseTier::Eternal)).expect("mainnet: handle error"); + storage.save_clause(create_test_clause(2, ClauseTier::Eternal)).expect("mainnet: handle error"); + storage.save_clause(create_test_clause(101, ClauseTier::Strategic)).expect("mainnet: handle error"); assert_eq!(storage.count_by_tier(ClauseTier::Eternal), 2); assert_eq!(storage.count_by_tier(ClauseTier::Strategic), 1); diff --git a/nac-constitution-clauses/src/upgrade/mod.rs b/nac-constitution-clauses/src/upgrade/mod.rs index 9e679ad..e440a0f 100644 --- a/nac-constitution-clauses/src/upgrade/mod.rs +++ b/nac-constitution-clauses/src/upgrade/mod.rs @@ -186,7 +186,7 @@ impl UpgradeProposal { use std::time::{SystemTime, UNIX_EPOCH}; SystemTime::now() .duration_since(UNIX_EPOCH) - .unwrap() + .expect("mainnet: handle error") .as_secs() } } @@ -539,10 +539,10 @@ mod tests { "添加新条款".to_string(), "影响分析".to_string(), 2000, - ).unwrap(); + ).expect("mainnet: handle error"); assert_eq!(proposal_id, 1); - let proposal = manager.get_proposal(proposal_id).unwrap(); + let proposal = manager.get_proposal(proposal_id).expect("mainnet: handle error"); assert_eq!(proposal.status, ProposalStatus::Draft); } @@ -558,11 +558,11 @@ mod tests { "描述".to_string(), "分析".to_string(), 2000, - ).unwrap(); + ).expect("mainnet: handle error"); - manager.submit_proposal(proposal_id).unwrap(); + manager.submit_proposal(proposal_id).expect("mainnet: handle error"); - let proposal = manager.get_proposal(proposal_id).unwrap(); + let proposal = manager.get_proposal(proposal_id).expect("mainnet: handle error"); assert_eq!(proposal.status, ProposalStatus::UnderReview); } @@ -582,9 +582,9 @@ mod tests { "描述".to_string(), "分析".to_string(), 2000, - ).unwrap(); + ).expect("mainnet: handle error"); - manager.submit_proposal(proposal_id).unwrap(); + manager.submit_proposal(proposal_id).expect("mainnet: handle error"); // 三个审查员都通过 manager.review_proposal( @@ -593,7 +593,7 @@ mod tests { true, "同意".to_string(), "合宪".to_string(), - ).unwrap(); + ).expect("mainnet: handle error"); manager.review_proposal( proposal_id, @@ -601,7 +601,7 @@ mod tests { true, "同意".to_string(), "合宪".to_string(), - ).unwrap(); + ).expect("mainnet: handle error"); manager.review_proposal( proposal_id, @@ -609,9 +609,9 @@ mod tests { true, "同意".to_string(), "合宪".to_string(), - ).unwrap(); + ).expect("mainnet: handle error"); - let proposal = manager.get_proposal(proposal_id).unwrap(); + let proposal = manager.get_proposal(proposal_id).expect("mainnet: handle error"); assert_eq!(proposal.status, ProposalStatus::Approved); } @@ -627,20 +627,20 @@ mod tests { "描述".to_string(), "分析".to_string(), 0, // 立即可执行 - ).unwrap(); + ).expect("mainnet: handle error"); - manager.submit_proposal(proposal_id).unwrap(); + manager.submit_proposal(proposal_id).expect("mainnet: handle error"); manager.review_proposal( proposal_id, "审查员1".to_string(), true, "同意".to_string(), "合宪".to_string(), - ).unwrap(); + ).expect("mainnet: handle error"); - manager.execute_proposal(proposal_id, "执行者".to_string()).unwrap(); + manager.execute_proposal(proposal_id, "执行者".to_string()).expect("mainnet: handle error"); - let proposal = manager.get_proposal(proposal_id).unwrap(); + let proposal = manager.get_proposal(proposal_id).expect("mainnet: handle error"); assert_eq!(proposal.status, ProposalStatus::Executed); assert_eq!(proposal.executor, Some("执行者".to_string())); } @@ -687,11 +687,11 @@ mod tests { 2000, ); - executor.execute(&proposal, Some(&old_clause), "执行者".to_string()).unwrap(); + executor.execute(&proposal, Some(&old_clause), "执行者".to_string()).expect("mainnet: handle error"); - let rollback_result = executor.rollback(1).unwrap(); + let rollback_result = executor.rollback(1).expect("mainnet: handle error"); assert!(rollback_result.is_some()); - assert_eq!(rollback_result.unwrap().content, "测试内容"); + assert_eq!(rollback_result.expect("mainnet: handle error").content, "测试内容"); } #[test] @@ -706,7 +706,7 @@ mod tests { "描述1".to_string(), "分析1".to_string(), 2000, - ).unwrap(); + ).expect("mainnet: handle error"); manager.create_proposal( ProposalType::ModifyClause, @@ -716,7 +716,7 @@ mod tests { "描述2".to_string(), "分析2".to_string(), 3000, - ).unwrap(); + ).expect("mainnet: handle error"); let stats = manager.get_statistics(); assert_eq!(stats.draft, 2); diff --git a/nac-constitution-macros/src/codegen.rs b/nac-constitution-macros/src/codegen.rs index acef404..922205b 100644 --- a/nac-constitution-macros/src/codegen.rs +++ b/nac-constitution-macros/src/codegen.rs @@ -200,7 +200,7 @@ impl TestGenerator { let clause = nac_constitution_state::get_clause(#clause_id); assert!(clause.is_some(), "Constitutional clause '{}' should exist", #clause_id); - let clause = clause.unwrap(); + let clause = clause.expect("mainnet: handle error"); assert!(clause.is_active(), "Constitutional clause '{}' should be active", #clause_id); } @@ -244,7 +244,7 @@ impl TestGenerator { #[test] fn test_clause_parameters() { // 测试条款参数 - let clause = nac_constitution_state::get_clause(#clause_id).unwrap(); + let clause = nac_constitution_state::get_clause(#clause_id).expect("mainnet: handle error"); // TODO: 验证参数值 } @@ -270,7 +270,7 @@ impl TestGenerator { ); let min_test = if let Some(min) = min_value { - let min_tokens: proc_macro2::TokenStream = min.parse().unwrap(); + let min_tokens: proc_macro2::TokenStream = min.parse().expect("mainnet: handle error"); quote! { // 测试最小边界 let result = #function_name(#min_tokens - 1); @@ -284,7 +284,7 @@ impl TestGenerator { }; let max_test = if let Some(max) = max_value { - let max_tokens: proc_macro2::TokenStream = max.parse().unwrap(); + let max_tokens: proc_macro2::TokenStream = max.parse().expect("mainnet: handle error"); quote! { // 测试最大边界 let result = #function_name(#max_tokens); @@ -429,7 +429,7 @@ mod tests { "amount > 0", "Amount must be positive", false - ).unwrap(); + ).expect("mainnet: handle error"); let code_str = quote::quote!(#code).to_string(); assert!(code_str.contains("amount > 0")); } diff --git a/nac-constitution-macros/src/lib.rs b/nac-constitution-macros/src/lib.rs index 46d81ea..27642e8 100644 --- a/nac-constitution-macros/src/lib.rs +++ b/nac-constitution-macros/src/lib.rs @@ -243,7 +243,7 @@ fn constitutional_impl(args: ConstitutionalArgs, input: ItemFn) -> Result 0".to_string())); assert_eq!(args.metadata, true); diff --git a/nac-constitution-macros/src/validation.rs b/nac-constitution-macros/src/validation.rs index 41f29a2..ea4952c 100644 --- a/nac-constitution-macros/src/validation.rs +++ b/nac-constitution-macros/src/validation.rs @@ -284,7 +284,7 @@ impl ParameterValidator { )); } - if !name.chars().next().unwrap().is_alphabetic() && name.chars().next().unwrap() != '_' { + if !name.chars().next().expect("mainnet: handle error").is_alphabetic() && name.chars().next().expect("mainnet: handle error") != '_' { return Err(MacroError::invalid_parameter( "name", name, @@ -350,7 +350,7 @@ mod tests { #[test] fn test_type_validator_numeric() { - let ty: Type = syn::parse_str("u64").unwrap(); + let ty: Type = syn::parse_str("u64").expect("mainnet: handle error"); assert!(TypeValidator::is_numeric_type(&ty)); assert!(TypeValidator::is_integer_type(&ty)); assert!(!TypeValidator::is_float_type(&ty)); @@ -358,7 +358,7 @@ mod tests { #[test] fn test_type_validator_float() { - let ty: Type = syn::parse_str("f64").unwrap(); + let ty: Type = syn::parse_str("f64").expect("mainnet: handle error"); assert!(TypeValidator::is_numeric_type(&ty)); assert!(!TypeValidator::is_integer_type(&ty)); assert!(TypeValidator::is_float_type(&ty)); @@ -367,23 +367,23 @@ mod tests { #[test] fn test_expression_validator() { let expr_str = "amount > 100"; - let expr = ExpressionValidator::validate_expression(expr_str).unwrap(); + let expr = ExpressionValidator::validate_expression(expr_str).expect("mainnet: handle error"); assert!(ExpressionValidator::is_boolean_expression(&expr)); } #[test] fn test_extract_variables() { - let expr: Expr = syn::parse_str("amount > min_amount && amount < max_amount").unwrap(); + let expr: Expr = syn::parse_str("amount > min_amount && amount < max_amount").expect("mainnet: handle error"); let variables = ExpressionValidator::extract_variables(&expr); assert_eq!(variables, vec!["amount", "max_amount", "min_amount"]); } #[test] fn test_expression_complexity() { - let simple_expr: Expr = syn::parse_str("a > b").unwrap(); + let simple_expr: Expr = syn::parse_str("a > b").expect("mainnet: handle error"); assert_eq!(ExpressionValidator::calculate_complexity(&simple_expr), 3); - let complex_expr: Expr = syn::parse_str("(a > b) && (c < d) || (e == f)").unwrap(); + let complex_expr: Expr = syn::parse_str("(a > b) && (c < d) || (e == f)").expect("mainnet: handle error"); assert!(ExpressionValidator::calculate_complexity(&complex_expr) > 5); } diff --git a/nac-constitution-service/Cargo.lock b/nac-constitution-service/Cargo.lock index 4549642..25bc50c 100644 --- a/nac-constitution-service/Cargo.lock +++ b/nac-constitution-service/Cargo.lock @@ -685,6 +685,17 @@ version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7e3450815272ef58cec6d564423f6e755e25379b217b0bc688e295ba24df6b1d" +[[package]] +name = "futures-macro" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e835b70203e41293343137df5c0664546da5745f82ec9b84d40be8336958447b" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "futures-sink" version = "0.3.32" @@ -704,6 +715,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "389ca41296e6190b48053de0321d02a77f32f8a5d2461dd38762c0593805c6d6" dependencies = [ "futures-core", + "futures-macro", "futures-task", "pin-project-lite", "slab", @@ -1156,6 +1168,7 @@ dependencies = [ "actix-web", "chrono", "env_logger", + "futures-util", "log", "nac-udm", "parking_lot", diff --git a/nac-constitution-service/Cargo.toml b/nac-constitution-service/Cargo.toml index 504b2cf..e8c4408 100644 --- a/nac-constitution-service/Cargo.toml +++ b/nac-constitution-service/Cargo.toml @@ -8,6 +8,7 @@ description = "NAC宪法层服务 - Constitutional Layer HTTP Service" [dependencies] # HTTP 框架 actix-web = "4" +futures-util = "0.3" # 序列化 serde = { version = "1.0", features = ["derive"] } serde_json = "1.0" diff --git a/nac-constitution-service/src/main.rs b/nac-constitution-service/src/main.rs index c991e23..ca4f568 100644 --- a/nac-constitution-service/src/main.rs +++ b/nac-constitution-service/src/main.rs @@ -10,6 +10,9 @@ // Chain ID: 5132611 use actix_web::{web, App, HttpServer, HttpResponse}; +use actix_web::dev::{ServiceRequest, ServiceResponse, Service, Transform}; +use actix_web::Error; +use futures_util::future::{ok, Ready, LocalBoxFuture}; use serde::{Deserialize, Serialize}; use chrono::Utc; use std::env; @@ -378,6 +381,103 @@ fn check_constitutional_principles(req: &ConstitutionValidationRequest) -> Vec

, +} + +impl BearerAuth { + pub fn new(token: String) -> Self { + Self { token: Arc::new(token) } + } +} + +impl Transform for BearerAuth +where + S: Service, Error = Error> + 'static, + B: 'static, +{ + type Response = ServiceResponse; + type Error = Error; + type InitError = (); + type Transform = BearerAuthMiddleware; + type Future = Ready>; + + fn new_transform(&self, service: S) -> Self::Future { + ok(BearerAuthMiddleware { + service: Arc::new(service), + token: self.token.clone(), + }) + } +} + +/// Token 认证中间件实例 +pub struct BearerAuthMiddleware { + service: Arc, + token: Arc, +} + +impl Service for BearerAuthMiddleware +where + S: Service, Error = Error> + 'static, + B: 'static, +{ + type Response = ServiceResponse; + type Error = Error; + type Future = LocalBoxFuture<'static, Result>; + + fn poll_ready( + &self, + cx: &mut std::task::Context<'_>, + ) -> std::task::Poll> { + self.service.poll_ready(cx) + } + + fn call(&self, req: ServiceRequest) -> Self::Future { + // /health 端点无需认证(供监控系统使用) + if req.path() == "/health" { + let svc = self.service.clone(); + return Box::pin(async move { svc.call(req).await }); + } + + let token = self.token.clone(); + let svc = self.service.clone(); + + Box::pin(async move { + // 提取 Authorization 头 + let auth_header = req + .headers() + .get("Authorization") + .and_then(|v| v.to_str().ok()) + .unwrap_or(""); + + // 验证 Bearer Token + let provided = auth_header.strip_prefix("Bearer ").unwrap_or(""); + if provided != token.as_str() { + log::warn!( + "宪法层 API 认证失败: path={} remote={:?}", + req.path(), + req.peer_addr() + ); + return Err(actix_web::error::ErrorUnauthorized( + serde_json::json!({ + "success": false, + "error": "Unauthorized: valid Bearer token required", + "code": 401 + }).to_string() + )); + } + + svc.call(req).await + }) + } +} + // ============================================================ // HTTP 处理器 // ============================================================ @@ -747,9 +847,22 @@ async fn main() -> std::io::Result<()> { let state_data = web::Data::new(state); + // FIX-007: 读取 API Token(从环境变量 CONSTITUTION_API_TOKEN) + let api_token = env::var("CONSTITUTION_API_TOKEN").unwrap_or_else(|_| { + // 若未设置,生成随机 token 并打印到日志(主网运维必须配置此变量) + let random_token = format!("nac-const-{}", Uuid::new_v4().to_string().replace("-", "")); + log::warn!("CONSTITUTION_API_TOKEN 未设置,已生成临时 Token: {}", random_token); + log::warn!("主网运维:请在 systemd 服务中设置 CONSTITUTION_API_TOKEN 环境变量!"); + random_token + }); + log::info!("宪法层 API Token 认证已启用 (FIX-007)"); + let api_token = Arc::new(api_token); + HttpServer::new(move || { + let token = api_token.as_ref().clone(); App::new() .app_data(state_data.clone()) + .wrap(BearerAuth::new(token)) // 健康检查 .route("/health", web::get().to(health)) // 宪法状态 diff --git a/nac-constitution-state/src/history.rs b/nac-constitution-state/src/history.rs index 84c239a..91c8e75 100644 --- a/nac-constitution-state/src/history.rs +++ b/nac-constitution-state/src/history.rs @@ -203,7 +203,7 @@ impl HistoryTracker { operator: *canceller, timestamp: std::time::SystemTime::now() .duration_since(std::time::UNIX_EPOCH) - .unwrap() + .expect("mainnet: handle error") .as_secs(), block_height: 0, description: format!("取消升级到版本{}", version.version), @@ -221,7 +221,7 @@ impl HistoryTracker { operator: *operator, timestamp: std::time::SystemTime::now() .duration_since(std::time::UNIX_EPOCH) - .unwrap() + .expect("mainnet: handle error") .as_secs(), block_height: 0, description: format!("回滚到版本{}", version.version), @@ -360,15 +360,15 @@ mod tests { let mut tracker = HistoryTracker::new(); let version = create_test_version(1); - tracker.record_version(&version).unwrap(); - tracker.record_proposal(&version, &Address::zero()).unwrap(); + tracker.record_version(&version).expect("mainnet: handle error"); + tracker.record_proposal(&version, &Address::zero()).expect("mainnet: handle error"); let filter = HistoryFilter { record_type: Some(HistoryRecordType::VersionCreated), ..Default::default() }; - let results = tracker.query(filter).unwrap(); + let results = tracker.query(filter).expect("mainnet: handle error"); assert_eq!(results.len(), 1); assert_eq!(results[0].record_type, HistoryRecordType::VersionCreated); } @@ -376,15 +376,15 @@ mod tests { #[test] fn test_query_by_version() { let mut tracker = HistoryTracker::new(); - tracker.record_version(&create_test_version(1)).unwrap(); - tracker.record_version(&create_test_version(2)).unwrap(); + tracker.record_version(&create_test_version(1)).expect("mainnet: handle error"); + tracker.record_version(&create_test_version(2)).expect("mainnet: handle error"); let filter = HistoryFilter { version: Some(1), ..Default::default() }; - let results = tracker.query(filter).unwrap(); + let results = tracker.query(filter).expect("mainnet: handle error"); assert_eq!(results.len(), 1); assert_eq!(results[0].version, 1); } @@ -394,9 +394,9 @@ mod tests { let mut tracker = HistoryTracker::new(); let version = create_test_version(1); - tracker.record_version(&version).unwrap(); + tracker.record_version(&version).expect("mainnet: handle error"); - let logs = tracker.get_audit_log(1, 1).unwrap(); + let logs = tracker.get_audit_log(1, 1).expect("mainnet: handle error"); assert_eq!(logs.len(), 1); assert_eq!(logs[0].id, 1); } diff --git a/nac-constitution-state/src/lib.rs b/nac-constitution-state/src/lib.rs index ee94b74..79adfe4 100644 --- a/nac-constitution-state/src/lib.rs +++ b/nac-constitution-state/src/lib.rs @@ -354,7 +354,7 @@ mod tests { fn test_get_current_version() { let temp_dir = std::env::temp_dir().join("nac_test_state"); let version = create_test_version(1); - let state_machine = ConstitutionStateMachine::new(version.clone(), temp_dir).unwrap(); + let state_machine = ConstitutionStateMachine::new(version.clone(), temp_dir).expect("mainnet: handle error"); assert_eq!(state_machine.get_current_version().version, 1); } @@ -362,7 +362,7 @@ mod tests { fn test_version_history() { let temp_dir = std::env::temp_dir().join("nac_test_state"); let version = create_test_version(1); - let state_machine = ConstitutionStateMachine::new(version, temp_dir).unwrap(); + let state_machine = ConstitutionStateMachine::new(version, temp_dir).expect("mainnet: handle error"); assert_eq!(state_machine.get_history().len(), 1); } } diff --git a/nac-constitution-state/src/storage.rs b/nac-constitution-state/src/storage.rs index 9107582..7918b08 100644 --- a/nac-constitution-state/src/storage.rs +++ b/nac-constitution-state/src/storage.rs @@ -137,7 +137,7 @@ mod tests { let loaded = storage.load(); assert!(loaded.is_ok()); - assert_eq!(loaded.unwrap().current_version.version, 2); + assert_eq!(loaded.expect("mainnet: handle error").current_version.version, 2); // 清理 let _ = storage.delete(); @@ -151,12 +151,12 @@ mod tests { let storage = Storage::new(path.clone()); let snapshot = create_test_snapshot(); - storage.save(&snapshot).unwrap(); + storage.save(&snapshot).expect("mainnet: handle error"); assert!(storage.backup(&backup_path).is_ok()); assert!(backup_path.exists()); - storage.delete().unwrap(); + storage.delete().expect("mainnet: handle error"); assert!(!storage.exists()); assert!(storage.restore(&backup_path).is_ok()); diff --git a/nac-constitution-state/src/upgrade.rs b/nac-constitution-state/src/upgrade.rs index 30fa058..bf0a579 100644 --- a/nac-constitution-state/src/upgrade.rs +++ b/nac-constitution-state/src/upgrade.rs @@ -132,7 +132,7 @@ mod tests { hash_bytes[0] = version as u8; ConstitutionVersion::new( version, - Hash::from_slice(&hash_bytes).unwrap(), + Hash::from_slice(&hash_bytes).expect("mainnet: handle error"), effective_from, clause_count, version * 100, diff --git a/nac-constitution-state/src/version.rs b/nac-constitution-state/src/version.rs index 79b62f1..11f7f23 100644 --- a/nac-constitution-state/src/version.rs +++ b/nac-constitution-state/src/version.rs @@ -107,32 +107,32 @@ mod tests { fn test_get_version() { let mut manager = VersionManager::new(); let version = create_test_version(1); - manager.add_version(version.clone()).unwrap(); + manager.add_version(version.clone()).expect("mainnet: handle error"); let retrieved = manager.get_version(1); assert!(retrieved.is_some()); - assert_eq!(retrieved.unwrap().version, 1); + assert_eq!(retrieved.expect("mainnet: handle error").version, 1); } #[test] fn test_get_latest_version() { let mut manager = VersionManager::new(); - manager.add_version(create_test_version(1)).unwrap(); - manager.add_version(create_test_version(3)).unwrap(); - manager.add_version(create_test_version(2)).unwrap(); + manager.add_version(create_test_version(1)).expect("mainnet: handle error"); + manager.add_version(create_test_version(3)).expect("mainnet: handle error"); + manager.add_version(create_test_version(2)).expect("mainnet: handle error"); let latest = manager.get_latest_version(); assert!(latest.is_some()); - assert_eq!(latest.unwrap().version, 3); + assert_eq!(latest.expect("mainnet: handle error").version, 3); } #[test] fn test_version_range() { let mut manager = VersionManager::new(); - manager.add_version(create_test_version(1)).unwrap(); - manager.add_version(create_test_version(2)).unwrap(); - manager.add_version(create_test_version(3)).unwrap(); - manager.add_version(create_test_version(4)).unwrap(); + manager.add_version(create_test_version(1)).expect("mainnet: handle error"); + manager.add_version(create_test_version(2)).expect("mainnet: handle error"); + manager.add_version(create_test_version(3)).expect("mainnet: handle error"); + manager.add_version(create_test_version(4)).expect("mainnet: handle error"); let range = manager.get_version_range(2, 3); assert_eq!(range.len(), 2); diff --git a/nac-cross-chain-bridge/src/eth_listener.rs b/nac-cross-chain-bridge/src/eth_listener.rs index c67c269..07aee54 100644 --- a/nac-cross-chain-bridge/src/eth_listener.rs +++ b/nac-cross-chain-bridge/src/eth_listener.rs @@ -218,10 +218,10 @@ mod tests { [1u8; 32], ); - listener.start().await.unwrap(); + listener.start().await.expect("mainnet: handle error"); assert!(*listener.is_running.read().await); - listener.stop().await.unwrap(); + listener.stop().await.expect("mainnet: handle error"); assert!(!*listener.is_running.read().await); } @@ -242,9 +242,9 @@ mod tests { [3u8; 32], ChainId::NAC, [4u8; 32], - ).await.unwrap(); + ).await.expect("mainnet: handle error"); - let event = event_rx.recv().await.unwrap(); + let event = event_rx.recv().await.expect("mainnet: handle error"); match event { BridgeEvent::AssetLocked { amount, .. } => { assert_eq!(amount, 1000 * 10u128.pow(18)); diff --git a/nac-cross-chain-bridge/src/locker.rs b/nac-cross-chain-bridge/src/locker.rs index d99f1b5..8eba82c 100644 --- a/nac-cross-chain-bridge/src/locker.rs +++ b/nac-cross-chain-bridge/src/locker.rs @@ -119,7 +119,7 @@ impl AssetLocker for AssetLockerImpl { // 生成锁定ID let timestamp = std::time::SystemTime::now() .duration_since(std::time::UNIX_EPOCH) - .unwrap() + .expect("mainnet: handle error") .as_secs(); let locker = [0u8; 32]; // TODO: 从上下文获取实际的锁定者地址 @@ -180,7 +180,7 @@ mod tests { #[tokio::test] async fn test_lock_asset() { - let db = Arc::new(sled::Config::new().temporary(true).open().unwrap()); + let db = Arc::new(sled::Config::new().temporary(true).open().expect("mainnet: handle error")); let config = BridgeConfig::default(); let locker = AssetLockerImpl::new(db, config); @@ -196,7 +196,7 @@ mod tests { let target_chain = ChainId::Ethereum; let receiver = [2u8; 32]; // NAC的32字节地址 - let receipt = locker.lock_asset(asset, amount, target_chain, receiver).await.unwrap(); + let receipt = locker.lock_asset(asset, amount, target_chain, receiver).await.expect("mainnet: handle error"); assert_eq!(receipt.amount, amount); assert_eq!(receipt.target_chain, target_chain); @@ -207,7 +207,7 @@ mod tests { #[tokio::test] async fn test_get_lock_status() { - let db = Arc::new(sled::Config::new().temporary(true).open().unwrap()); + let db = Arc::new(sled::Config::new().temporary(true).open().expect("mainnet: handle error")); let config = BridgeConfig::default(); let locker = AssetLockerImpl::new(db, config); @@ -224,15 +224,15 @@ mod tests { 1000 * 10u128.pow(18), ChainId::Ethereum, [2u8; 32], - ).await.unwrap(); + ).await.expect("mainnet: handle error"); - let status = locker.get_lock_status(receipt.lock_id).await.unwrap(); + let status = locker.get_lock_status(receipt.lock_id).await.expect("mainnet: handle error"); assert_eq!(status, LockStatus::Pending); } #[tokio::test] async fn test_update_lock_status() { - let db = Arc::new(sled::Config::new().temporary(true).open().unwrap()); + let db = Arc::new(sled::Config::new().temporary(true).open().expect("mainnet: handle error")); let config = BridgeConfig::default(); let locker = AssetLockerImpl::new(db, config); @@ -249,17 +249,17 @@ mod tests { 1000 * 10u128.pow(18), ChainId::Ethereum, [2u8; 32], - ).await.unwrap(); + ).await.expect("mainnet: handle error"); - locker.update_lock_status(receipt.lock_id, LockStatus::Locked).await.unwrap(); + locker.update_lock_status(receipt.lock_id, LockStatus::Locked).await.expect("mainnet: handle error"); - let status = locker.get_lock_status(receipt.lock_id).await.unwrap(); + let status = locker.get_lock_status(receipt.lock_id).await.expect("mainnet: handle error"); assert_eq!(status, LockStatus::Locked); } #[tokio::test] async fn test_amount_exceeds_limit() { - let db = Arc::new(sled::Config::new().temporary(true).open().unwrap()); + let db = Arc::new(sled::Config::new().temporary(true).open().expect("mainnet: handle error")); let config = BridgeConfig::default(); let locker = AssetLockerImpl::new(db, config); diff --git a/nac-cross-chain-bridge/src/manager.rs b/nac-cross-chain-bridge/src/manager.rs index c5f8006..2756484 100644 --- a/nac-cross-chain-bridge/src/manager.rs +++ b/nac-cross-chain-bridge/src/manager.rs @@ -74,17 +74,17 @@ impl BridgeManagerImpl { // 创建组件 let locker = Arc::new(AssetLockerImpl::new( db.clone(), - config_clone.try_read().unwrap().clone(), + config_clone.try_read().expect("mainnet: handle error").clone(), )); let unlocker = Arc::new(AssetUnlockerImpl::new( db.clone(), - config_clone.try_read().unwrap().clone(), + config_clone.try_read().expect("mainnet: handle error").clone(), )); let validator_pool = Arc::new(ValidatorPoolImpl::new( db.clone(), - config_clone.try_read().unwrap().clone(), + config_clone.try_read().expect("mainnet: handle error").clone(), )); let relayer = Arc::new(RelayerImpl::new( @@ -92,7 +92,7 @@ impl BridgeManagerImpl { locker.clone(), unlocker.clone(), validator_pool.clone(), - config_clone.try_read().unwrap().clone(), + config_clone.try_read().expect("mainnet: handle error").clone(), )); Ok(Self { @@ -148,7 +148,7 @@ impl BridgeManagerImpl { amount, timestamp: std::time::SystemTime::now() .duration_since(std::time::UNIX_EPOCH) - .unwrap() + .expect("mainnet: handle error") .as_secs(), nonce: 0, signatures: vec![], @@ -184,7 +184,7 @@ impl BridgeManagerImpl { amount, timestamp: std::time::SystemTime::now() .duration_since(std::time::UNIX_EPOCH) - .unwrap() + .expect("mainnet: handle error") .as_secs(), nonce: 0, signatures: vec![], @@ -305,42 +305,42 @@ mod tests { #[tokio::test] async fn test_initialize_bridge() { - let manager = BridgeManagerImpl::new("/tmp/test_bridge_db").unwrap(); - manager.initialize().await.unwrap(); + let manager = BridgeManagerImpl::new("/tmp/test_bridge_db").expect("mainnet: handle error"); + manager.initialize().await.expect("mainnet: handle error"); } #[tokio::test] async fn test_start_stop_bridge() { - let manager = BridgeManagerImpl::new("/tmp/test_bridge_db2").unwrap(); - manager.initialize().await.unwrap(); + let manager = BridgeManagerImpl::new("/tmp/test_bridge_db2").expect("mainnet: handle error"); + manager.initialize().await.expect("mainnet: handle error"); - manager.start().await.unwrap(); + manager.start().await.expect("mainnet: handle error"); assert!(*manager.is_running.read().await); - manager.stop().await.unwrap(); + manager.stop().await.expect("mainnet: handle error"); assert!(!*manager.is_running.read().await); } #[tokio::test] async fn test_pause_resume_bridge() { - let manager = BridgeManagerImpl::new("/tmp/test_bridge_db3").unwrap(); - manager.initialize().await.unwrap(); + let manager = BridgeManagerImpl::new("/tmp/test_bridge_db3").expect("mainnet: handle error"); + manager.initialize().await.expect("mainnet: handle error"); - manager.pause().await.unwrap(); - let config = manager.get_config().await.unwrap(); + manager.pause().await.expect("mainnet: handle error"); + let config = manager.get_config().await.expect("mainnet: handle error"); assert!(config.is_paused); - manager.resume().await.unwrap(); - let config = manager.get_config().await.unwrap(); + manager.resume().await.expect("mainnet: handle error"); + let config = manager.get_config().await.expect("mainnet: handle error"); assert!(!config.is_paused); } #[tokio::test] async fn test_get_status() { - let manager = BridgeManagerImpl::new("/tmp/test_bridge_db4").unwrap(); - manager.initialize().await.unwrap(); + let manager = BridgeManagerImpl::new("/tmp/test_bridge_db4").expect("mainnet: handle error"); + manager.initialize().await.expect("mainnet: handle error"); - let status = manager.get_status().await.unwrap(); + let status = manager.get_status().await.expect("mainnet: handle error"); assert!(!status.is_running); assert!(!status.is_paused); } diff --git a/nac-cross-chain-bridge/src/relayer.rs b/nac-cross-chain-bridge/src/relayer.rs index b043d71..34520bd 100644 --- a/nac-cross-chain-bridge/src/relayer.rs +++ b/nac-cross-chain-bridge/src/relayer.rs @@ -242,7 +242,7 @@ mod tests { use crate::validator::ValidatorPoolImpl; async fn create_test_relayer() -> RelayerImpl { - let db = Arc::new(sled::Config::new().temporary(true).open().unwrap()); + let db = Arc::new(sled::Config::new().temporary(true).open().expect("mainnet: handle error")); let config = BridgeConfig::default(); let locker = Arc::new(AssetLockerImpl::new(db.clone(), config.clone())); @@ -257,7 +257,7 @@ mod tests { is_active: true, }; // 使用register_validator方法添加验证器 - validator_pool.register_validator(validator).await.unwrap(); + validator_pool.register_validator(validator).await.expect("mainnet: handle error"); RelayerImpl::new(db, locker, unlocker, validator_pool, config) } @@ -266,10 +266,10 @@ mod tests { async fn test_start_stop_relayer() { let relayer = create_test_relayer().await; - relayer.start().await.unwrap(); + relayer.start().await.expect("mainnet: handle error"); assert!(*relayer.is_running.read().await); - relayer.stop().await.unwrap(); + relayer.stop().await.expect("mainnet: handle error"); assert!(!*relayer.is_running.read().await); } @@ -297,9 +297,9 @@ mod tests { signatures: vec![Signature::from([5u8; 96]), Signature::from([6u8; 96])], }; - relayer.relay_message(message).await.unwrap(); + relayer.relay_message(message).await.expect("mainnet: handle error"); - let stats = relayer.get_stats().await.unwrap(); + let stats = relayer.get_stats().await.expect("mainnet: handle error"); assert_eq!(stats.total_relayed, 1); assert_eq!(stats.successful, 1); } @@ -329,7 +329,7 @@ mod tests { }; // 第一次中继成功 - relayer.relay_message(message.clone()).await.unwrap(); + relayer.relay_message(message.clone()).await.expect("mainnet: handle error"); // 第二次中继应该失败(重复消息) let result = relayer.relay_message(message).await; diff --git a/nac-cross-chain-bridge/src/unlocker.rs b/nac-cross-chain-bridge/src/unlocker.rs index ef12432..e26d0d2 100644 --- a/nac-cross-chain-bridge/src/unlocker.rs +++ b/nac-cross-chain-bridge/src/unlocker.rs @@ -155,7 +155,7 @@ impl AssetUnlocker for AssetUnlockerImpl { // 生成解锁ID let timestamp = std::time::SystemTime::now() .duration_since(std::time::UNIX_EPOCH) - .unwrap() + .expect("mainnet: handle error") .as_secs(); let unlock_id = self.generate_unlock_id(&lock_id, timestamp); @@ -213,7 +213,7 @@ mod tests { #[tokio::test] async fn test_unlock_asset() { - let db = Arc::new(sled::Config::new().temporary(true).open().unwrap()); + let db = Arc::new(sled::Config::new().temporary(true).open().expect("mainnet: handle error")); let config = BridgeConfig::default(); // 先锁定资产 @@ -231,13 +231,13 @@ mod tests { 1000 * 10u128.pow(18), ChainId::Ethereum, [2u8; 32], // NAC的32字节地址 - ).await.unwrap(); + ).await.expect("mainnet: handle error"); // 更新锁定状态为已铸造 lock_receipt.status = LockStatus::Minted; let key = format!("lock:{}", hex::encode(lock_receipt.lock_id)); - let value = bincode::serialize(&lock_receipt).unwrap(); - db.insert(key.as_bytes(), value).unwrap(); + let value = bincode::serialize(&lock_receipt).expect("mainnet: handle error"); + db.insert(key.as_bytes(), value).expect("mainnet: handle error"); // 解锁资产 let unlocker = AssetUnlockerImpl::new(db, config); @@ -249,7 +249,7 @@ mod tests { signatures: vec![Signature::from([5u8; 96]), Signature::from([6u8; 96])], // NAC的96字节签名 }; - let unlock_receipt = unlocker.unlock_asset(lock_receipt.lock_id, proof).await.unwrap(); + let unlock_receipt = unlocker.unlock_asset(lock_receipt.lock_id, proof).await.expect("mainnet: handle error"); assert_eq!(unlock_receipt.lock_id, lock_receipt.lock_id); assert_eq!(unlock_receipt.amount, lock_receipt.amount); @@ -259,7 +259,7 @@ mod tests { #[tokio::test] async fn test_verify_signature_count() { - let db = Arc::new(sled::Config::new().temporary(true).open().unwrap()); + let db = Arc::new(sled::Config::new().temporary(true).open().expect("mainnet: handle error")); let config = BridgeConfig::default(); let unlocker = AssetUnlockerImpl::new(db, config); @@ -278,7 +278,7 @@ mod tests { #[tokio::test] async fn test_verify_merkle_proof() { - let db = Arc::new(sled::Config::new().temporary(true).open().unwrap()); + let db = Arc::new(sled::Config::new().temporary(true).open().expect("mainnet: handle error")); let config = BridgeConfig::default(); let unlocker = AssetUnlockerImpl::new(db, config); diff --git a/nac-cross-chain-bridge/src/validator.rs b/nac-cross-chain-bridge/src/validator.rs index 4799fbd..af07ccd 100644 --- a/nac-cross-chain-bridge/src/validator.rs +++ b/nac-cross-chain-bridge/src/validator.rs @@ -247,7 +247,7 @@ mod tests { #[tokio::test] async fn test_register_validator() { - let db = Arc::new(sled::Config::new().temporary(true).open().unwrap()); + let db = Arc::new(sled::Config::new().temporary(true).open().expect("mainnet: handle error")); let config = BridgeConfig::default(); let pool = ValidatorPoolImpl::new(db, config); @@ -258,16 +258,16 @@ mod tests { is_active: true, }; - pool.register_validator(validator.clone()).await.unwrap(); + pool.register_validator(validator.clone()).await.expect("mainnet: handle error"); - let loaded = pool.get_validator(validator.address).await.unwrap(); + let loaded = pool.get_validator(validator.address).await.expect("mainnet: handle error"); assert_eq!(loaded.address, validator.address); assert_eq!(loaded.stake_amount, validator.stake_amount); } #[tokio::test] async fn test_get_active_validators() { - let db = Arc::new(sled::Config::new().temporary(true).open().unwrap()); + let db = Arc::new(sled::Config::new().temporary(true).open().expect("mainnet: handle error")); let config = BridgeConfig::default(); let pool = ValidatorPoolImpl::new(db, config); @@ -286,16 +286,16 @@ mod tests { is_active: true, }; - pool.register_validator(validator1).await.unwrap(); - pool.register_validator(validator2).await.unwrap(); + pool.register_validator(validator1).await.expect("mainnet: handle error"); + pool.register_validator(validator2).await.expect("mainnet: handle error"); - let active = pool.get_active_validators().await.unwrap(); + let active = pool.get_active_validators().await.expect("mainnet: handle error"); assert_eq!(active.len(), 2); } #[tokio::test] async fn test_unregister_validator() { - let db = Arc::new(sled::Config::new().temporary(true).open().unwrap()); + let db = Arc::new(sled::Config::new().temporary(true).open().expect("mainnet: handle error")); let config = BridgeConfig::default(); let pool = ValidatorPoolImpl::new(db, config); @@ -306,8 +306,8 @@ mod tests { is_active: true, }; - pool.register_validator(validator.clone()).await.unwrap(); - pool.unregister_validator(validator.address).await.unwrap(); + pool.register_validator(validator.clone()).await.expect("mainnet: handle error"); + pool.unregister_validator(validator.address).await.expect("mainnet: handle error"); let result = pool.get_validator(validator.address).await; assert!(result.is_err()); @@ -315,7 +315,7 @@ mod tests { #[tokio::test] async fn test_update_reputation() { - let db = Arc::new(sled::Config::new().temporary(true).open().unwrap()); + let db = Arc::new(sled::Config::new().temporary(true).open().expect("mainnet: handle error")); let config = BridgeConfig::default(); let pool = ValidatorPoolImpl::new(db, config); @@ -326,10 +326,10 @@ mod tests { is_active: true, }; - pool.register_validator(validator.clone()).await.unwrap(); - pool.update_reputation(validator.address, 50).await.unwrap(); + pool.register_validator(validator.clone()).await.expect("mainnet: handle error"); + pool.update_reputation(validator.address, 50).await.expect("mainnet: handle error"); - let updated = pool.get_validator(validator.address).await.unwrap(); + let updated = pool.get_validator(validator.address).await.expect("mainnet: handle error"); assert_eq!(updated.reputation, 150); } } diff --git a/nac-csnp-l0/src/aa_pe/mod.rs b/nac-csnp-l0/src/aa_pe/mod.rs index 7b222b7..496e79d 100644 --- a/nac-csnp-l0/src/aa_pe/mod.rs +++ b/nac-csnp-l0/src/aa_pe/mod.rs @@ -180,7 +180,7 @@ impl AaPe { strategy: strategy.clone(), registered_at: std::time::SystemTime::now() .duration_since(std::time::UNIX_EPOCH) - .unwrap() + .expect("FIX-006: unexpected None/Err") .as_secs(), }; @@ -286,7 +286,7 @@ mod tests { gnacs[3] = 0; // OO: 正常状态 gnacs[4] = 1; // HH: 同质化代币 - let attrs = GnacsAttributes::from_gnacs(&gnacs).unwrap(); + let attrs = GnacsAttributes::from_gnacs(&gnacs).expect("FIX-006: unexpected None/Err"); assert_eq!(attrs.asset_class, 1); assert_eq!(attrs.credit_rating, 2); } @@ -297,13 +297,13 @@ mod tests { let mut gnacs = [0u8; 48]; gnacs[0] = 1; gnacs[1] = 2; - let attrs = GnacsAttributes::from_gnacs(&gnacs).unwrap(); + let attrs = GnacsAttributes::from_gnacs(&gnacs).expect("FIX-006: unexpected None/Err"); let strategy = attrs.determine_strategy(); assert!(matches!(strategy, PropagationStrategy::ImmediateBroadcast { .. })); // 异常状态 -> 警报通道 gnacs[3] = 3; - let attrs = GnacsAttributes::from_gnacs(&gnacs).unwrap(); + let attrs = GnacsAttributes::from_gnacs(&gnacs).expect("FIX-006: unexpected None/Err"); let strategy = attrs.determine_strategy(); assert!(matches!(strategy, PropagationStrategy::AlertChannel { .. })); } @@ -316,8 +316,8 @@ mod tests { gnacs[0] = 1; gnacs[1] = 2; - aa_pe.register_asset(asset_addr, gnacs).unwrap(); - let strategy = aa_pe.get_strategy(&asset_addr).unwrap(); + aa_pe.register_asset(asset_addr, gnacs).expect("FIX-006: unexpected None/Err"); + let strategy = aa_pe.get_strategy(&asset_addr).expect("FIX-006: unexpected None/Err"); assert!(matches!(strategy, PropagationStrategy::ImmediateBroadcast { .. })); } } diff --git a/nac-csnp-l0/src/gids/mod.rs b/nac-csnp-l0/src/gids/mod.rs index a3bd391..cd80349 100644 --- a/nac-csnp-l0/src/gids/mod.rs +++ b/nac-csnp-l0/src/gids/mod.rs @@ -113,7 +113,7 @@ impl Gids { kyc_level, registered_at: std::time::SystemTime::now() .duration_since(std::time::UNIX_EPOCH) - .unwrap() + .expect("FIX-006: unexpected None/Err") .as_secs(), }; @@ -166,7 +166,7 @@ impl Gids { score_delta, timestamp: std::time::SystemTime::now() .duration_since(std::time::UNIX_EPOCH) - .unwrap() + .expect("FIX-006: unexpected None/Err") .as_secs(), }; @@ -197,7 +197,7 @@ impl Gids { .map(|entry| entry.clone()) .collect(); - nodes.sort_by(|a, b| b.reputation_score.partial_cmp(&a.reputation_score).unwrap()); + nodes.sort_by(|a, b| b.reputation_score.partial_cmp(&a.reputation_score).expect("FIX-006: unexpected None/Err")); nodes.truncate(limit); nodes } @@ -219,7 +219,7 @@ mod tests { let did_str = did.to_string(); assert_eq!(did_str, "did:nac:1:alice"); - let parsed = MultiChainDid::from_string(&did_str).unwrap(); + let parsed = MultiChainDid::from_string(&did_str).expect("FIX-006: unexpected None/Err"); assert_eq!(parsed, did); } @@ -229,9 +229,9 @@ mod tests { gids.register_chain(1, "NAC Root Chain".to_string()); let did = MultiChainDid::new(1, "alice".to_string()); - gids.register_did(did.clone(), 2).unwrap(); + gids.register_did(did.clone(), 2).expect("FIX-006: unexpected None/Err"); - let identity = gids.resolve_did(&did.to_string()).unwrap(); + let identity = gids.resolve_did(&did.to_string()).expect("FIX-006: unexpected None/Err"); assert_eq!(identity.kyc_level, 2); assert_eq!(identity.reputation_score, 0.5); } @@ -242,14 +242,14 @@ mod tests { gids.register_chain(1, "NAC Root Chain".to_string()); let did = MultiChainDid::new(1, "bob".to_string()); - gids.register_did(did.clone(), 2).unwrap(); + gids.register_did(did.clone(), 2).expect("FIX-006: unexpected None/Err"); // 正面行为 - gids.update_reputation(&did.to_string(), 1, "forward".to_string(), 0.1).unwrap(); - assert_eq!(gids.get_reputation(&did.to_string()).unwrap(), 0.6); + gids.update_reputation(&did.to_string(), 1, "forward".to_string(), 0.1).expect("FIX-006: unexpected None/Err"); + assert_eq!(gids.get_reputation(&did.to_string()).expect("mainnet: handle error"), 0.6); // 负面行为 - gids.update_reputation(&did.to_string(), 1, "censorship".to_string(), -0.3).unwrap(); - assert_eq!(gids.get_reputation(&did.to_string()).unwrap(), 0.3); + gids.update_reputation(&did.to_string(), 1, "censorship".to_string(), -0.3).expect("FIX-006: unexpected None/Err"); + assert_eq!(gids.get_reputation(&did.to_string()).expect("mainnet: handle error"), 0.3); } } diff --git a/nac-csnp-service/src/main.rs b/nac-csnp-service/src/main.rs index e4ed0bd..7d92498 100644 --- a/nac-csnp-service/src/main.rs +++ b/nac-csnp-service/src/main.rs @@ -59,7 +59,7 @@ pub struct PropagateReq { } async fn health(state: web::Data) -> HttpResponse { - let s = state.lock().unwrap(); + let s = state.lock().expect("lock not poisoned"); HttpResponse::Ok().json(serde_json::json!({ "status": "healthy", "service": "nac-csnp-service", "version": SERVICE_VERSION, "csnp_version": CSNP_VERSION, @@ -70,7 +70,7 @@ async fn health(state: web::Data) -> HttpResponse { } async fn get_state(state: web::Data) -> HttpResponse { - let s = state.lock().unwrap(); + let s = state.lock().expect("lock not poisoned"); HttpResponse::Ok().json(serde_json::json!({ "chain_id": CHAIN_ID, "csnp_version": CSNP_VERSION, "service_version": SERVICE_VERSION, "peer_count": s.peers.len(), @@ -81,7 +81,7 @@ async fn get_state(state: web::Data) -> HttpResponse { } async fn get_peers(state: web::Data) -> HttpResponse { - let s = state.lock().unwrap(); + let s = state.lock().expect("lock not poisoned"); HttpResponse::Ok().json(serde_json::json!({ "peers": s.peers, "total": s.peers.len(), "timestamp": Utc::now().to_rfc3339() @@ -94,7 +94,7 @@ async fn register_node(state: web::Data, req: web::Json, req: web::Json, req: web::Json) -> HttpResponse { - let mut s = state.lock().unwrap(); + let mut s = state.lock().expect("lock not poisoned"); let strategy = req.strategy.clone().unwrap_or_else(|| { let prefix: String = req.gnacs_code.chars().take(2).collect(); match prefix.as_str() { @@ -145,7 +145,7 @@ async fn aa_pe_rules() -> HttpResponse { } async fn get_stats(state: web::Data) -> HttpResponse { - let s = state.lock().unwrap(); + let s = state.lock().expect("lock not poisoned"); HttpResponse::Ok().json(serde_json::json!({ "service": "nac-csnp-service", "layer": "L0-CSNP", "chain_id": CHAIN_ID, "peers": s.peers.len(), diff --git a/nac-daemon/src/network.rs b/nac-daemon/src/network.rs index 074f9ae..3ddeb2f 100644 --- a/nac-daemon/src/network.rs +++ b/nac-daemon/src/network.rs @@ -42,7 +42,7 @@ pub fn ping_node(address: &str, port: u16) -> bool { use std::net::TcpStream; use std::time::Duration; TcpStream::connect_timeout( - &format!("{}:{}", address, port).parse().unwrap(), + &format!("{}:{}", address, port).parse().expect("mainnet: handle error"), Duration::from_secs(2), ).is_ok() } diff --git a/nac-ftan/src/lib.rs b/nac-ftan/src/lib.rs index 2173e7a..2f3d484 100644 --- a/nac-ftan/src/lib.rs +++ b/nac-ftan/src/lib.rs @@ -187,7 +187,7 @@ impl FtanAggregator { timestamp, ); self.pools.insert(pool_id.clone(), pool); - self.pools.get_mut(&pool_id).unwrap() + self.pools.get_mut(&pool_id).expect("mainnet: handle error") } /// 接收交易碎片 @@ -202,7 +202,7 @@ impl FtanAggregator { self.create_pool(pool_id.to_string(), timestamp); } - let pool = self.pools.get_mut(pool_id).unwrap(); + let pool = self.pools.get_mut(pool_id).expect("mainnet: handle error"); pool.add_fragment(fragment)?; Ok(()) @@ -290,12 +290,12 @@ mod tests { signature: vec![], timestamp: 1000, }; - pool.add_fragment(fragment).unwrap(); + pool.add_fragment(fragment).expect("mainnet: handle error"); } assert!(pool.is_transaction_complete(&tx_hash)); - let aggregated = pool.aggregate_transaction(&tx_hash).unwrap(); + let aggregated = pool.aggregate_transaction(&tx_hash).expect("mainnet: handle error"); assert_eq!(aggregated.len(), 30); // 3 * 10 } @@ -316,13 +316,13 @@ mod tests { signature: vec![], timestamp: 1000, }; - aggregator.receive_fragment("pool1", fragment, 1000).unwrap(); + aggregator.receive_fragment("pool1", fragment, 1000).expect("mainnet: handle error"); } // 尝试聚合 - let result = aggregator.try_aggregate("pool1", &tx_hash).unwrap(); + let result = aggregator.try_aggregate("pool1", &tx_hash).expect("mainnet: handle error"); assert!(result.is_some()); - assert_eq!(result.unwrap().len(), 30); + assert_eq!(result.expect("mainnet: handle error").len(), 30); let stats = aggregator.get_stats(); assert_eq!(stats.aggregated_count, 1); diff --git a/nac-integration-tests/src/common/helpers.rs b/nac-integration-tests/src/common/helpers.rs index 4ec80a1..016676c 100644 --- a/nac-integration-tests/src/common/helpers.rs +++ b/nac-integration-tests/src/common/helpers.rs @@ -218,7 +218,7 @@ mod tests { .await; assert!(result.is_ok()); - assert_eq!(result.unwrap(), 3); + assert_eq!(result.expect("mainnet: handle error"), 3); } #[tokio::test] diff --git a/nac-integration-tests/tests/performance/concurrent_test.rs b/nac-integration-tests/tests/performance/concurrent_test.rs index f4b6436..677145e 100644 --- a/nac-integration-tests/tests/performance/concurrent_test.rs +++ b/nac-integration-tests/tests/performance/concurrent_test.rs @@ -42,7 +42,7 @@ async fn test_concurrent_transactions() { // 等待所有任务完成 for handle in handles { - handle.await.unwrap(); + handle.await.expect("mainnet: handle error"); } let duration = start.elapsed(); @@ -89,7 +89,7 @@ async fn test_concurrent_contract_calls() { } for handle in handles { - handle.await.unwrap(); + handle.await.expect("mainnet: handle error"); } let total_calls = success_count.load(Ordering::Relaxed); @@ -140,7 +140,7 @@ async fn test_read_write_contention() { } for handle in handles { - handle.await.unwrap(); + handle.await.expect("mainnet: handle error"); } let total_reads = read_count.load(Ordering::Relaxed); @@ -189,7 +189,7 @@ async fn test_connection_pool_performance() { } for handle in handles { - handle.await.unwrap(); + handle.await.expect("mainnet: handle error"); } let completed = completed_requests.load(Ordering::Relaxed); @@ -222,7 +222,7 @@ async fn test_lock_contention() { } for handle in handles { - handle.await.unwrap(); + handle.await.expect("mainnet: handle error"); } let final_count = counter.load(Ordering::Relaxed); diff --git a/nac-integration-tests/tests/performance/stability_test.rs b/nac-integration-tests/tests/performance/stability_test.rs index 1698a03..d20f330 100644 --- a/nac-integration-tests/tests/performance/stability_test.rs +++ b/nac-integration-tests/tests/performance/stability_test.rs @@ -265,7 +265,7 @@ async fn test_concurrent_stability() { // 等待所有任务完成 for handle in handles { - handle.await.unwrap(); + handle.await.expect("mainnet: handle error"); } log::info!("Concurrent stability test passed"); diff --git a/nac-lens/src/connection.rs b/nac-lens/src/connection.rs index 0062634..fbb7174 100644 --- a/nac-lens/src/connection.rs +++ b/nac-lens/src/connection.rs @@ -155,7 +155,7 @@ impl ConnectionPool { /// 获取连接 pub fn get_connection(&self, remote_addr: &str) -> Result { - let mut connections = self.connections.lock().unwrap(); + let mut connections = self.connections.lock().expect("lock not poisoned"); // 查找可复用的空闲连接 if self.config.enable_reuse { @@ -198,7 +198,7 @@ impl ConnectionPool { /// 创建连接 fn create_connection(&self, remote_addr: &str) -> Result { - let mut next_id = self.next_id.lock().unwrap(); + let mut next_id = self.next_id.lock().expect("lock not poisoned"); let conn_id = format!("CONN-{:08}", *next_id); *next_id += 1; drop(next_id); @@ -222,11 +222,11 @@ impl ConnectionPool { in_use: false, }; - let mut connections = self.connections.lock().unwrap(); + let mut connections = self.connections.lock().expect("lock not poisoned"); connections.insert(conn_id.clone(), connection); // 更新统计 - let mut stats = self.stats.lock().unwrap(); + let mut stats = self.stats.lock().expect("lock not poisoned"); stats.total_connections += 1; stats.active_connections += 1; @@ -235,7 +235,7 @@ impl ConnectionPool { /// 释放连接 pub fn release_connection(&self, conn_id: &str) -> Result<()> { - let mut connections = self.connections.lock().unwrap(); + let mut connections = self.connections.lock().expect("lock not poisoned"); if let Some(conn) = connections.get_mut(conn_id) { conn.in_use = false; @@ -244,7 +244,7 @@ impl ConnectionPool { conn.last_used = Instant::now(); // 更新统计 - let mut stats = self.stats.lock().unwrap(); + let mut stats = self.stats.lock().expect("lock not poisoned"); stats.active_connections = stats.active_connections.saturating_sub(1); stats.idle_connections += 1; @@ -259,13 +259,13 @@ impl ConnectionPool { /// 关闭连接 pub fn close_connection(&self, conn_id: &str) -> Result<()> { - let mut connections = self.connections.lock().unwrap(); + let mut connections = self.connections.lock().expect("lock not poisoned"); if let Some(mut conn) = connections.remove(conn_id) { conn.info.state = ConnectionState::Closed; // 更新统计 - let mut stats = self.stats.lock().unwrap(); + let mut stats = self.stats.lock().expect("lock not poisoned"); stats.total_connections = stats.total_connections.saturating_sub(1); if conn.in_use { stats.active_connections = stats.active_connections.saturating_sub(1); @@ -284,7 +284,7 @@ impl ConnectionPool { /// 发送心跳 pub fn send_heartbeat(&self, conn_id: &str) -> Result<()> { - let mut connections = self.connections.lock().unwrap(); + let mut connections = self.connections.lock().expect("lock not poisoned"); if let Some(conn) = connections.get_mut(conn_id) { conn.info.last_heartbeat = Self::current_timestamp(); @@ -300,7 +300,7 @@ impl ConnectionPool { /// 检查心跳超时 pub fn check_heartbeat_timeout(&self) -> Vec { - let mut connections = self.connections.lock().unwrap(); + let mut connections = self.connections.lock().expect("lock not poisoned"); let current_time = Self::current_timestamp(); let timeout = self.config.heartbeat_timeout; @@ -319,7 +319,7 @@ impl ConnectionPool { /// 清理空闲连接 pub fn cleanup_idle_connections(&self) -> usize { - let mut connections = self.connections.lock().unwrap(); + let mut connections = self.connections.lock().expect("lock not poisoned"); let idle_timeout = self.config.idle_timeout; let mut to_remove = Vec::new(); @@ -339,7 +339,7 @@ impl ConnectionPool { } // 更新统计 - let mut stats = self.stats.lock().unwrap(); + let mut stats = self.stats.lock().expect("lock not poisoned"); stats.total_connections = stats.total_connections.saturating_sub(count); stats.idle_connections = stats.idle_connections.saturating_sub(count); @@ -348,7 +348,7 @@ impl ConnectionPool { /// 记录请求 pub fn record_request(&self, conn_id: &str, success: bool) -> Result<()> { - let mut connections = self.connections.lock().unwrap(); + let mut connections = self.connections.lock().expect("lock not poisoned"); if let Some(conn) = connections.get_mut(conn_id) { conn.info.request_count += 1; @@ -358,7 +358,7 @@ impl ConnectionPool { conn.info.last_active = Self::current_timestamp(); // 更新统计 - let mut stats = self.stats.lock().unwrap(); + let mut stats = self.stats.lock().expect("lock not poisoned"); stats.total_requests += 1; if !success { stats.total_errors += 1; @@ -375,19 +375,19 @@ impl ConnectionPool { /// 获取连接信息 pub fn get_connection_info(&self, conn_id: &str) -> Option { - let connections = self.connections.lock().unwrap(); + let connections = self.connections.lock().expect("lock not poisoned"); connections.get(conn_id).map(|c| c.info.clone()) } /// 获取所有连接信息 pub fn get_all_connections(&self) -> Vec { - let connections = self.connections.lock().unwrap(); + let connections = self.connections.lock().expect("lock not poisoned"); connections.values().map(|c| c.info.clone()).collect() } /// 获取统计信息 pub fn get_stats(&self) -> PoolStats { - let stats = self.stats.lock().unwrap(); + let stats = self.stats.lock().expect("lock not poisoned"); stats.clone() } @@ -400,7 +400,7 @@ impl ConnectionPool { fn current_timestamp() -> u64 { std::time::SystemTime::now() .duration_since(std::time::UNIX_EPOCH) - .unwrap() + .expect("FIX-006: unexpected None/Err") .as_secs() } } @@ -428,19 +428,19 @@ impl HeartbeatManager { /// 启动心跳 pub fn start(&self) { - let mut running = self.running.lock().unwrap(); + let mut running = self.running.lock().expect("lock not poisoned"); *running = true; } /// 停止心跳 pub fn stop(&self) { - let mut running = self.running.lock().unwrap(); + let mut running = self.running.lock().expect("lock not poisoned"); *running = false; } /// 执行心跳检查 pub fn check(&self) { - let running = self.running.lock().unwrap(); + let running = self.running.lock().expect("lock not poisoned"); if !*running { return; } @@ -459,7 +459,7 @@ impl HeartbeatManager { /// 是否正在运行 pub fn is_running(&self) -> bool { - let running = self.running.lock().unwrap(); + let running = self.running.lock().expect("lock not poisoned"); *running } } @@ -482,10 +482,10 @@ mod tests { let config = ConnectionConfig::default(); let pool = ConnectionPool::new(config); - let conn_id = pool.get_connection("127.0.0.1:8080").unwrap(); + let conn_id = pool.get_connection("127.0.0.1:8080").expect("FIX-006: unexpected None/Err"); assert!(!conn_id.is_empty()); - let info = pool.get_connection_info(&conn_id).unwrap(); + let info = pool.get_connection_info(&conn_id).expect("FIX-006: unexpected None/Err"); assert_eq!(info.remote_addr, "127.0.0.1:8080"); assert_eq!(info.state, ConnectionState::Busy); } @@ -495,10 +495,10 @@ mod tests { let config = ConnectionConfig::default(); let pool = ConnectionPool::new(config); - let conn_id = pool.get_connection("127.0.0.1:8080").unwrap(); - pool.release_connection(&conn_id).unwrap(); + let conn_id = pool.get_connection("127.0.0.1:8080").expect("FIX-006: unexpected None/Err"); + pool.release_connection(&conn_id).expect("FIX-006: unexpected None/Err"); - let info = pool.get_connection_info(&conn_id).unwrap(); + let info = pool.get_connection_info(&conn_id).expect("FIX-006: unexpected None/Err"); assert_eq!(info.state, ConnectionState::Idle); } @@ -508,10 +508,10 @@ mod tests { config.enable_reuse = true; let pool = ConnectionPool::new(config); - let conn_id1 = pool.get_connection("127.0.0.1:8080").unwrap(); - pool.release_connection(&conn_id1).unwrap(); + let conn_id1 = pool.get_connection("127.0.0.1:8080").expect("FIX-006: unexpected None/Err"); + pool.release_connection(&conn_id1).expect("FIX-006: unexpected None/Err"); - let conn_id2 = pool.get_connection("127.0.0.1:8080").unwrap(); + let conn_id2 = pool.get_connection("127.0.0.1:8080").expect("FIX-006: unexpected None/Err"); assert_eq!(conn_id1, conn_id2); } @@ -520,8 +520,8 @@ mod tests { let config = ConnectionConfig::default(); let pool = ConnectionPool::new(config); - let conn_id = pool.get_connection("127.0.0.1:8080").unwrap(); - pool.close_connection(&conn_id).unwrap(); + let conn_id = pool.get_connection("127.0.0.1:8080").expect("FIX-006: unexpected None/Err"); + pool.close_connection(&conn_id).expect("FIX-006: unexpected None/Err"); assert!(pool.get_connection_info(&conn_id).is_none()); } @@ -531,11 +531,11 @@ mod tests { let config = ConnectionConfig::default(); let pool = ConnectionPool::new(config); - let conn_id = pool.get_connection("127.0.0.1:8080").unwrap(); - pool.record_request(&conn_id, true).unwrap(); - pool.record_request(&conn_id, false).unwrap(); + let conn_id = pool.get_connection("127.0.0.1:8080").expect("FIX-006: unexpected None/Err"); + pool.record_request(&conn_id, true).expect("FIX-006: unexpected None/Err"); + pool.record_request(&conn_id, false).expect("FIX-006: unexpected None/Err"); - let info = pool.get_connection_info(&conn_id).unwrap(); + let info = pool.get_connection_info(&conn_id).expect("FIX-006: unexpected None/Err"); assert_eq!(info.request_count, 2); assert_eq!(info.error_count, 1); diff --git a/nac-lens/src/l1_cell.rs b/nac-lens/src/l1_cell.rs index aa92eac..d6fdf69 100644 --- a/nac-lens/src/l1_cell.rs +++ b/nac-lens/src/l1_cell.rs @@ -149,7 +149,7 @@ mod tests { let result = router.route_packet(&civ_id, payload.clone()); assert!(result.is_ok()); - let (next_hop, returned_payload) = result.unwrap(); + let (next_hop, returned_payload) = result.expect("FIX-006: unexpected None/Err"); assert_eq!(next_hop, peer_id); assert_eq!(returned_payload, payload); assert_eq!(router.get_consciousness_temp(), 1); diff --git a/nac-lens/src/l2_civilization.rs b/nac-lens/src/l2_civilization.rs index d4e6772..0cfd5bc 100644 --- a/nac-lens/src/l2_civilization.rs +++ b/nac-lens/src/l2_civilization.rs @@ -213,17 +213,17 @@ mod tests { let signer = SoulSigner::new(civ_id, vec![1, 2, 3, 4], 2, 3); let message = b"test message"; - let partial_sig = signer.sign_partial(message).unwrap(); + let partial_sig = signer.sign_partial(message).expect("FIX-006: unexpected None/Err"); assert!(!partial_sig.is_empty()); // 测试聚合签名 let partial_sigs = vec![partial_sig.clone(), partial_sig.clone()]; - let soul_sig = signer.aggregate_signatures(partial_sigs).unwrap(); + let soul_sig = signer.aggregate_signatures(partial_sigs).expect("FIX-006: unexpected None/Err"); assert_eq!(soul_sig.participant_count, 2); assert_eq!(soul_sig.threshold, 2); // 测试验证签名 - let is_valid = signer.verify_soul_signature(message, &soul_sig).unwrap(); + let is_valid = signer.verify_soul_signature(message, &soul_sig).expect("FIX-006: unexpected None/Err"); assert!(is_valid); } @@ -233,7 +233,7 @@ mod tests { let signer = SoulSigner::new(civ_id, vec![1, 2, 3, 4], 3, 5); let message = b"test message"; - let partial_sig = signer.sign_partial(message).unwrap(); + let partial_sig = signer.sign_partial(message).expect("FIX-006: unexpected None/Err"); // 只有2个签名,但需要3个 let partial_sigs = vec![partial_sig.clone(), partial_sig]; diff --git a/nac-lens/src/l3_aggregation.rs b/nac-lens/src/l3_aggregation.rs index 96c789d..1d7ed67 100644 --- a/nac-lens/src/l3_aggregation.rs +++ b/nac-lens/src/l3_aggregation.rs @@ -105,7 +105,7 @@ mod tests { let vector = CivilizationVector::new(civ_id.clone(), [0u8; 32], [1u8; 32]); router.register_civilization(vector); - let entry_points = router.find_civilization_entry_points(&civ_id).unwrap(); + let entry_points = router.find_civilization_entry_points(&civ_id).expect("FIX-006: unexpected None/Err"); assert!(!entry_points.is_empty()); } diff --git a/nac-lens/src/l5_value.rs b/nac-lens/src/l5_value.rs index 1944a72..5fb49a1 100644 --- a/nac-lens/src/l5_value.rs +++ b/nac-lens/src/l5_value.rs @@ -68,7 +68,7 @@ impl CrossCivilizationValueExchanger { use std::time::{SystemTime, UNIX_EPOCH}; SystemTime::now() .duration_since(UNIX_EPOCH) - .unwrap() + .expect("FIX-006: unexpected None/Err") .as_secs() } } diff --git a/nac-lens/src/l6_application.rs b/nac-lens/src/l6_application.rs index 6d1735d..7a1d07a 100644 --- a/nac-lens/src/l6_application.rs +++ b/nac-lens/src/l6_application.rs @@ -105,7 +105,7 @@ impl UniversalConstitutionAuditor { use std::time::{SystemTime, UNIX_EPOCH}; SystemTime::now() .duration_since(UNIX_EPOCH) - .unwrap() + .expect("FIX-006: unexpected None/Err") .as_secs() } } diff --git a/nac-lens/src/performance.rs b/nac-lens/src/performance.rs index c65385d..cdc5e09 100644 --- a/nac-lens/src/performance.rs +++ b/nac-lens/src/performance.rs @@ -108,7 +108,7 @@ impl MessageCompressor { let elapsed = start.elapsed().as_micros() as u64; // 更新统计 - let mut stats = self.stats.lock().unwrap(); + let mut stats = self.stats.lock().expect("lock not poisoned"); stats.original_size += data.len() as u64; stats.compressed_size += compressed.len() as u64; stats.compression_count += 1; @@ -145,7 +145,7 @@ impl MessageCompressor { let elapsed = start.elapsed().as_micros() as u64; // 更新统计 - let mut stats = self.stats.lock().unwrap(); + let mut stats = self.stats.lock().expect("lock not poisoned"); stats.decompression_count += 1; // 更新平均解压时间 @@ -197,7 +197,7 @@ impl MessageCompressor { /// 获取统计信息 pub fn get_stats(&self) -> CompressionStats { - let stats = self.stats.lock().unwrap(); + let stats = self.stats.lock().expect("lock not poisoned"); stats.clone() } } @@ -267,13 +267,13 @@ impl BatchProcessor { created_at: Instant::now(), }; - let mut queue = self.queue.lock().unwrap(); + let mut queue = self.queue.lock().expect("lock not poisoned"); queue.push_back(request); } /// 获取批次 pub fn get_batch(&self) -> Vec> { - let mut queue = self.queue.lock().unwrap(); + let mut queue = self.queue.lock().expect("lock not poisoned"); let batch_size = std::cmp::min(self.config.max_batch_size, queue.len()); let mut batch = Vec::with_capacity(batch_size); @@ -292,25 +292,25 @@ impl BatchProcessor { /// 获取队列大小 pub fn queue_size(&self) -> usize { - let queue = self.queue.lock().unwrap(); + let queue = self.queue.lock().expect("lock not poisoned"); queue.len() } /// 清空队列 pub fn clear_queue(&self) { - let mut queue = self.queue.lock().unwrap(); + let mut queue = self.queue.lock().expect("lock not poisoned"); queue.clear(); } /// 记录处理 pub fn record_processed(&self, count: usize) { - let mut processed = self.processed_count.lock().unwrap(); + let mut processed = self.processed_count.lock().expect("lock not poisoned"); *processed += count as u64; } /// 获取处理计数 pub fn get_processed_count(&self) -> u64 { - let processed = self.processed_count.lock().unwrap(); + let processed = self.processed_count.lock().expect("lock not poisoned"); *processed } } @@ -392,8 +392,8 @@ impl PerformanceMonitor { /// 记录请求 pub fn record_request(&self, response_time: u64, success: bool) { - let mut metrics = self.metrics.lock().unwrap(); - let mut times = self.response_times.lock().unwrap(); + let mut metrics = self.metrics.lock().expect("lock not poisoned"); + let mut times = self.response_times.lock().expect("lock not poisoned"); metrics.total_requests += 1; if success { @@ -426,14 +426,14 @@ impl PerformanceMonitor { /// 获取指标 pub fn get_metrics(&self) -> PerformanceMetrics { - let metrics = self.metrics.lock().unwrap(); + let metrics = self.metrics.lock().expect("lock not poisoned"); metrics.clone() } /// 重置指标 pub fn reset(&self) { - let mut metrics = self.metrics.lock().unwrap(); - let mut times = self.response_times.lock().unwrap(); + let mut metrics = self.metrics.lock().expect("lock not poisoned"); + let mut times = self.response_times.lock().expect("lock not poisoned"); *metrics = PerformanceMetrics { total_requests: 0, @@ -453,7 +453,7 @@ impl PerformanceMonitor { fn current_timestamp() -> u64 { std::time::SystemTime::now() .duration_since(std::time::UNIX_EPOCH) - .unwrap() + .expect("FIX-006: unexpected None/Err") .as_secs() } } @@ -550,8 +550,8 @@ mod tests { let compressor = MessageCompressor::new(config); let data = b"Hello, NAC Lens!"; - let compressed = compressor.compress(data).unwrap(); - let decompressed = compressor.decompress(&compressed).unwrap(); + let compressed = compressor.compress(data).expect("FIX-006: unexpected None/Err"); + let decompressed = compressor.decompress(&compressed).expect("FIX-006: unexpected None/Err"); assert_eq!(data, decompressed.as_slice()); } @@ -594,7 +594,7 @@ mod tests { let compressor = MessageCompressor::new(config); let data = vec![0u8; 2048]; - let _ = compressor.compress(&data).unwrap(); + let _ = compressor.compress(&data).expect("FIX-006: unexpected None/Err"); let stats = compressor.get_stats(); assert_eq!(stats.compression_count, 1); diff --git a/nac-lens/src/retry.rs b/nac-lens/src/retry.rs index df7a7fd..35f243d 100644 --- a/nac-lens/src/retry.rs +++ b/nac-lens/src/retry.rs @@ -92,7 +92,7 @@ impl RetryManager { start_time: Self::current_timestamp(), }; - let mut states = self.states.lock().unwrap(); + let mut states = self.states.lock().expect("lock not poisoned"); states.insert(operation_id, state); } @@ -102,7 +102,7 @@ impl RetryManager { return false; } - let mut states = self.states.lock().unwrap(); + let mut states = self.states.lock().expect("lock not poisoned"); if let Some(state) = states.get_mut(operation_id) { state.attempt += 1; @@ -123,13 +123,13 @@ impl RetryManager { /// 记录成功 pub fn record_success(&self, operation_id: &str) { - let mut states = self.states.lock().unwrap(); + let mut states = self.states.lock().expect("lock not poisoned"); states.remove(operation_id); } /// 获取重试状态 pub fn get_state(&self, operation_id: &str) -> Option { - let states = self.states.lock().unwrap(); + let states = self.states.lock().expect("lock not poisoned"); states.get(operation_id).cloned() } @@ -154,7 +154,7 @@ impl RetryManager { fn current_timestamp() -> u64 { std::time::SystemTime::now() .duration_since(std::time::UNIX_EPOCH) - .unwrap() + .expect("FIX-006: unexpected None/Err") .as_secs() } } @@ -254,7 +254,7 @@ impl Logger { return String::new(); } - let mut next_id = self.next_log_id.lock().unwrap(); + let mut next_id = self.next_log_id.lock().expect("lock not poisoned"); let log_id = format!("LOG-{:08}", *next_id); *next_id += 1; drop(next_id); @@ -274,7 +274,7 @@ impl Logger { } // 添加到队列 - let mut logs = self.logs.lock().unwrap(); + let mut logs = self.logs.lock().expect("lock not poisoned"); logs.push_back(record); // 限制日志数量 @@ -334,19 +334,19 @@ impl Logger { /// 获取日志 pub fn get_log(&self, log_id: &str) -> Option { - let logs = self.logs.lock().unwrap(); + let logs = self.logs.lock().expect("lock not poisoned"); logs.iter().find(|l| l.id == log_id).cloned() } /// 获取所有日志 pub fn get_all_logs(&self) -> Vec { - let logs = self.logs.lock().unwrap(); + let logs = self.logs.lock().expect("lock not poisoned"); logs.iter().cloned().collect() } /// 按级别获取日志 pub fn get_logs_by_level(&self, level: LogLevel) -> Vec { - let logs = self.logs.lock().unwrap(); + let logs = self.logs.lock().expect("lock not poisoned"); logs.iter() .filter(|l| l.level == level) .cloned() @@ -355,7 +355,7 @@ impl Logger { /// 按模块获取日志 pub fn get_logs_by_module(&self, module: &str) -> Vec { - let logs = self.logs.lock().unwrap(); + let logs = self.logs.lock().expect("lock not poisoned"); logs.iter() .filter(|l| l.module == module) .cloned() @@ -364,13 +364,13 @@ impl Logger { /// 清空日志 pub fn clear_logs(&self) { - let mut logs = self.logs.lock().unwrap(); + let mut logs = self.logs.lock().expect("lock not poisoned"); logs.clear(); } /// 获取日志数量 pub fn get_log_count(&self) -> usize { - let logs = self.logs.lock().unwrap(); + let logs = self.logs.lock().expect("lock not poisoned"); logs.len() } @@ -378,7 +378,7 @@ impl Logger { fn current_timestamp() -> u64 { std::time::SystemTime::now() .duration_since(std::time::UNIX_EPOCH) - .unwrap() + .expect("FIX-006: unexpected None/Err") .as_secs() } } @@ -467,7 +467,7 @@ mod tests { let should_retry = manager.record_failure("op1", "Error 1".to_string()); assert!(should_retry); - let state = manager.get_state("op1").unwrap(); + let state = manager.get_state("op1").expect("FIX-006: unexpected None/Err"); assert_eq!(state.attempt, 1); } @@ -498,11 +498,11 @@ mod tests { manager.start_retry("op1".to_string()); manager.record_failure("op1", "Error 1".to_string()); - let state = manager.get_state("op1").unwrap(); + let state = manager.get_state("op1").expect("FIX-006: unexpected None/Err"); assert_eq!(state.next_delay, 1000); manager.record_failure("op1", "Error 2".to_string()); - let state = manager.get_state("op1").unwrap(); + let state = manager.get_state("op1").expect("FIX-006: unexpected None/Err"); assert_eq!(state.next_delay, 2000); } diff --git a/nac-lens/src/security.rs b/nac-lens/src/security.rs index 637be85..fbf030b 100644 --- a/nac-lens/src/security.rs +++ b/nac-lens/src/security.rs @@ -202,20 +202,20 @@ impl Authenticator { /// 注册用户 pub fn register_user(&self, username: String, role: UserRole) -> Result { - let mut users = self.users.lock().unwrap(); + let mut users = self.users.lock().expect("lock not poisoned"); // 检查用户名是否已存在 if users.values().any(|u| u.username == username) { return Err(NacLensError::Other("Username already exists".to_string())); } - let mut next_id = self.next_user_id.lock().unwrap(); + let mut next_id = self.next_user_id.lock().expect("lock not poisoned"); let user_id = format!("USER-{:08}", *next_id); *next_id += 1; drop(next_id); // 获取角色权限 - let role_perms = self.role_permissions.lock().unwrap(); + let role_perms = self.role_permissions.lock().expect("lock not poisoned"); let permissions = role_perms.get(&role).cloned().unwrap_or_default(); let user = UserInfo { @@ -274,7 +274,7 @@ impl Authenticator { NacLensError::Other("Password required".to_string()) })?; - let mut users = self.users.lock().unwrap(); + let mut users = self.users.lock().expect("lock not poisoned"); // 查找用户 let user = users @@ -328,7 +328,7 @@ impl Authenticator { /// 创建会话 fn create_session(&self, user_id: &str) -> Result { - let mut next_id = self.next_session_id.lock().unwrap(); + let mut next_id = self.next_session_id.lock().expect("lock not poisoned"); let session_id = format!("SESSION-{:08}", *next_id); *next_id += 1; drop(next_id); @@ -343,7 +343,7 @@ impl Authenticator { valid: true, }; - let mut sessions = self.sessions.lock().unwrap(); + let mut sessions = self.sessions.lock().expect("lock not poisoned"); sessions.insert(session_id.clone(), session); Ok(session_id) @@ -351,7 +351,7 @@ impl Authenticator { /// 验证会话 pub fn validate_session(&self, session_id: &str) -> Result { - let mut sessions = self.sessions.lock().unwrap(); + let mut sessions = self.sessions.lock().expect("lock not poisoned"); if let Some(session) = sessions.get_mut(session_id) { let current_time = Self::current_timestamp(); @@ -372,7 +372,7 @@ impl Authenticator { /// 销毁会话 pub fn destroy_session(&self, session_id: &str) -> Result<()> { - let mut sessions = self.sessions.lock().unwrap(); + let mut sessions = self.sessions.lock().expect("lock not poisoned"); sessions.remove(session_id); Ok(()) } @@ -383,7 +383,7 @@ impl Authenticator { user_id: &str, permission: Permission, ) -> Result { - let users = self.users.lock().unwrap(); + let users = self.users.lock().expect("lock not poisoned"); if let Some(user) = users.get(user_id) { Ok(user.permissions.contains(&permission)) @@ -394,13 +394,13 @@ impl Authenticator { /// 获取用户信息 pub fn get_user(&self, user_id: &str) -> Option { - let users = self.users.lock().unwrap(); + let users = self.users.lock().expect("lock not poisoned"); users.get(user_id).cloned() } /// 获取会话信息 pub fn get_session(&self, session_id: &str) -> Option { - let sessions = self.sessions.lock().unwrap(); + let sessions = self.sessions.lock().expect("lock not poisoned"); sessions.get(session_id).cloned() } @@ -408,7 +408,7 @@ impl Authenticator { fn current_timestamp() -> u64 { std::time::SystemTime::now() .duration_since(std::time::UNIX_EPOCH) - .unwrap() + .expect("FIX-006: unexpected None/Err") .as_secs() } } @@ -493,7 +493,7 @@ impl SecurityAuditor { details: String, ip_address: Option, ) -> String { - let mut next_id = self.next_event_id.lock().unwrap(); + let mut next_id = self.next_event_id.lock().expect("lock not poisoned"); let event_id = format!("AUDIT-{:08}", *next_id); *next_id += 1; drop(next_id); @@ -510,7 +510,7 @@ impl SecurityAuditor { ip_address, }; - let mut events = self.events.lock().unwrap(); + let mut events = self.events.lock().expect("lock not poisoned"); events.push(event); // 限制事件数量 @@ -523,19 +523,19 @@ impl SecurityAuditor { /// 获取事件 pub fn get_event(&self, event_id: &str) -> Option { - let events = self.events.lock().unwrap(); + let events = self.events.lock().expect("lock not poisoned"); events.iter().find(|e| e.id == event_id).cloned() } /// 获取所有事件 pub fn get_all_events(&self) -> Vec { - let events = self.events.lock().unwrap(); + let events = self.events.lock().expect("lock not poisoned"); events.clone() } /// 按类型获取事件 pub fn get_events_by_type(&self, event_type: AuditEventType) -> Vec { - let events = self.events.lock().unwrap(); + let events = self.events.lock().expect("lock not poisoned"); events .iter() .filter(|e| e.event_type == event_type) @@ -545,7 +545,7 @@ impl SecurityAuditor { /// 按用户获取事件 pub fn get_events_by_user(&self, user_id: &str) -> Vec { - let events = self.events.lock().unwrap(); + let events = self.events.lock().expect("lock not poisoned"); events .iter() .filter(|e| e.user_id.as_deref() == Some(user_id)) @@ -555,13 +555,13 @@ impl SecurityAuditor { /// 清空事件 pub fn clear_events(&self) { - let mut events = self.events.lock().unwrap(); + let mut events = self.events.lock().expect("lock not poisoned"); events.clear(); } /// 获取事件数量 pub fn get_event_count(&self) -> usize { - let events = self.events.lock().unwrap(); + let events = self.events.lock().expect("lock not poisoned"); events.len() } @@ -569,7 +569,7 @@ impl SecurityAuditor { fn current_timestamp() -> u64 { std::time::SystemTime::now() .duration_since(std::time::UNIX_EPOCH) - .unwrap() + .expect("FIX-006: unexpected None/Err") .as_secs() } } @@ -582,10 +582,10 @@ mod tests { fn test_authenticator_register() { let auth = Authenticator::new(); - let user_id = auth.register_user("admin".to_string(), UserRole::Admin).unwrap(); + let user_id = auth.register_user("admin".to_string(), UserRole::Admin).expect("FIX-006: unexpected None/Err"); assert!(!user_id.is_empty()); - let user = auth.get_user(&user_id).unwrap(); + let user = auth.get_user(&user_id).expect("FIX-006: unexpected None/Err"); assert_eq!(user.username, "admin"); assert_eq!(user.role, UserRole::Admin); } @@ -594,7 +594,7 @@ mod tests { fn test_authenticator_basic_auth() { let auth = Authenticator::new(); - auth.register_user("user1".to_string(), UserRole::User).unwrap(); + auth.register_user("user1".to_string(), UserRole::User).expect("FIX-006: unexpected None/Err"); let credentials = Credentials { method: AuthMethod::Basic, @@ -604,7 +604,7 @@ mod tests { certificate: None, }; - let result = auth.authenticate(credentials).unwrap(); + let result = auth.authenticate(credentials).expect("FIX-006: unexpected None/Err"); assert!(result.success); assert!(result.session_id.is_some()); } @@ -613,23 +613,23 @@ mod tests { fn test_session_validation() { let auth = Authenticator::new(); - let user_id = auth.register_user("user1".to_string(), UserRole::User).unwrap(); - let session_id = auth.create_session(&user_id).unwrap(); + let user_id = auth.register_user("user1".to_string(), UserRole::User).expect("FIX-006: unexpected None/Err"); + let session_id = auth.create_session(&user_id).expect("FIX-006: unexpected None/Err"); - assert!(auth.validate_session(&session_id).unwrap()); + assert!(auth.validate_session(&session_id).expect("mainnet: handle error")); - auth.destroy_session(&session_id).unwrap(); - assert!(!auth.validate_session(&session_id).unwrap()); + auth.destroy_session(&session_id).expect("FIX-006: unexpected None/Err"); + assert!(!auth.validate_session(&session_id).expect("mainnet: handle error")); } #[test] fn test_permission_check() { let auth = Authenticator::new(); - let user_id = auth.register_user("admin".to_string(), UserRole::Admin).unwrap(); + let user_id = auth.register_user("admin".to_string(), UserRole::Admin).expect("FIX-006: unexpected None/Err"); - assert!(auth.check_permission(&user_id, Permission::Read).unwrap()); - assert!(auth.check_permission(&user_id, Permission::Admin).unwrap()); + assert!(auth.check_permission(&user_id, Permission::Read).expect("mainnet: handle error")); + assert!(auth.check_permission(&user_id, Permission::Admin).expect("mainnet: handle error")); } #[test] @@ -648,7 +648,7 @@ mod tests { assert!(!event_id.is_empty()); - let event = auditor.get_event(&event_id).unwrap(); + let event = auditor.get_event(&event_id).expect("FIX-006: unexpected None/Err"); assert_eq!(event.event_type, AuditEventType::Authentication); assert_eq!(event.result, true); } diff --git a/nac-monitor/src/alerts/rules.rs b/nac-monitor/src/alerts/rules.rs index c7bb549..928be26 100644 --- a/nac-monitor/src/alerts/rules.rs +++ b/nac-monitor/src/alerts/rules.rs @@ -442,9 +442,9 @@ mod tests { let rule_id = engine.get_rules()[0].id.clone(); assert!(engine.disable_rule(&rule_id).is_ok()); - assert!(!engine.get_rule(&rule_id).unwrap().enabled); + assert!(!engine.get_rule(&rule_id).expect("mainnet: handle error").enabled); assert!(engine.enable_rule(&rule_id).is_ok()); - assert!(engine.get_rule(&rule_id).unwrap().enabled); + assert!(engine.get_rule(&rule_id).expect("mainnet: handle error").enabled); } } diff --git a/nac-monitor/src/logging/collector.rs b/nac-monitor/src/logging/collector.rs index bae5cde..99659a5 100644 --- a/nac-monitor/src/logging/collector.rs +++ b/nac-monitor/src/logging/collector.rs @@ -199,7 +199,7 @@ mod tests { let entry = collector.parse_log_line("ERROR: test error message"); assert!(entry.is_some()); - let entry = entry.unwrap(); + let entry = entry.expect("mainnet: handle error"); assert_eq!(entry.level, LogLevel::Error); } } diff --git a/nac-monitor/src/logging/query.rs b/nac-monitor/src/logging/query.rs index a09f16b..2046dab 100644 --- a/nac-monitor/src/logging/query.rs +++ b/nac-monitor/src/logging/query.rs @@ -103,7 +103,7 @@ mod tests { .build(); assert!(query.start_time.is_some()); - assert_eq!(query.levels.as_ref().unwrap().len(), 2); + assert_eq!(query.levels.as_ref().expect("mainnet: handle error").len(), 2); assert_eq!(query.limit, Some(50)); } @@ -113,6 +113,6 @@ mod tests { .keywords(vec!["error".to_string(), "failed".to_string()]) .build(); - assert_eq!(query.keywords.as_ref().unwrap().len(), 2); + assert_eq!(query.keywords.as_ref().expect("mainnet: handle error").len(), 2); } } diff --git a/nac-monitor/src/logging/storage.rs b/nac-monitor/src/logging/storage.rs index d90c6f0..949249d 100644 --- a/nac-monitor/src/logging/storage.rs +++ b/nac-monitor/src/logging/storage.rs @@ -116,7 +116,7 @@ impl LogStorage { let mut by_node = HashMap::new(); let mut min_time = Utc::now(); - let mut max_time = DateTime::from_timestamp(0, 0).unwrap(); + let mut max_time = DateTime::from_timestamp(0, 0).expect("mainnet: handle error"); for entry in entries.iter() { *by_level.entry(entry.level.clone()).or_insert(0) += 1; @@ -182,7 +182,7 @@ mod tests { "test error".to_string(), ); - storage.store(entry).await.unwrap(); + storage.store(entry).await.expect("mainnet: handle error"); let mut query = LogQuery::default(); query.levels = Some(vec![LogLevel::Error]); diff --git a/nac-monitor/src/metrics/custom_metrics.rs b/nac-monitor/src/metrics/custom_metrics.rs index 6ad7382..e5ba80b 100644 --- a/nac-monitor/src/metrics/custom_metrics.rs +++ b/nac-monitor/src/metrics/custom_metrics.rs @@ -102,7 +102,7 @@ impl CustomMetricsManager { )); } - let history = self.values.get_mut(&value.name).unwrap(); + let history = self.values.get_mut(&value.name).expect("mainnet: handle error"); history.push(value); // 限制历史记录数量 @@ -196,7 +196,7 @@ mod tests { unit: None, }; - manager.register_metric(definition).unwrap(); + manager.register_metric(definition).expect("mainnet: handle error"); let value = CustomMetricValue { name: "test_metric".to_string(), @@ -220,7 +220,7 @@ mod tests { unit: None, }; - manager.register_metric(definition).unwrap(); + manager.register_metric(definition).expect("mainnet: handle error"); let value = CustomMetricValue { name: "test_metric".to_string(), @@ -229,11 +229,11 @@ mod tests { label_values: HashMap::new(), }; - manager.record_value(value).unwrap(); + manager.record_value(value).expect("mainnet: handle error"); let latest = manager.get_latest_value("test_metric"); assert!(latest.is_some()); - assert_eq!(latest.unwrap().value, 123.45); + assert_eq!(latest.expect("mainnet: handle error").value, 123.45); } #[test] @@ -248,7 +248,7 @@ mod tests { unit: None, }; - manager.register_metric(definition).unwrap(); + manager.register_metric(definition).expect("mainnet: handle error"); // 记录3个值 for i in 1..=3 { @@ -258,11 +258,11 @@ mod tests { value: i as f64, label_values: HashMap::new(), }; - manager.record_value(value).unwrap(); + manager.record_value(value).expect("mainnet: handle error"); } // 应该只保留最后2个值 - let history = manager.get_values("test_metric").unwrap(); + let history = manager.get_values("test_metric").expect("mainnet: handle error"); assert_eq!(history.len(), 2); assert_eq!(history[0].value, 2.0); assert_eq!(history[1].value, 3.0); diff --git a/nac-monitor/src/metrics/prometheus_exporter.rs b/nac-monitor/src/metrics/prometheus_exporter.rs index 56f9677..e0c92ec 100644 --- a/nac-monitor/src/metrics/prometheus_exporter.rs +++ b/nac-monitor/src/metrics/prometheus_exporter.rs @@ -255,8 +255,8 @@ impl PrometheusExporter { let encoder = prometheus::TextEncoder::new(); let metric_families = self.registry.gather(); let mut buffer = Vec::new(); - encoder.encode(&metric_families, &mut buffer).unwrap(); - String::from_utf8(buffer).unwrap() + encoder.encode(&metric_families, &mut buffer).expect("mainnet: handle error"); + String::from_utf8(buffer).expect("mainnet: handle error") } } @@ -272,7 +272,7 @@ mod tests { #[test] fn test_update_node_metrics() { - let exporter = PrometheusExporter::new().unwrap(); + let exporter = PrometheusExporter::new().expect("mainnet: handle error"); let metrics = NodeMetrics::collect(); exporter.update_node_metrics(&metrics); @@ -282,7 +282,7 @@ mod tests { #[test] fn test_gather_metrics() { - let exporter = PrometheusExporter::new().unwrap(); + let exporter = PrometheusExporter::new().expect("mainnet: handle error"); let output = exporter.gather(); assert!(!output.is_empty()); } diff --git a/nac-nvm-service/src/main.rs b/nac-nvm-service/src/main.rs index 2bae906..ac15895 100644 --- a/nac-nvm-service/src/main.rs +++ b/nac-nvm-service/src/main.rs @@ -72,7 +72,7 @@ fn validate_address(addr: &str) -> bool { } async fn health(state: web::Data) -> HttpResponse { - let s = state.lock().unwrap(); + let s = state.lock().expect("lock not poisoned"); HttpResponse::Ok().json(serde_json::json!({ "status": "healthy", "service": "nac-nvm-service", "version": SERVICE_VERSION, "nvm_version": NVM_VERSION, @@ -84,7 +84,7 @@ async fn health(state: web::Data) -> HttpResponse { } async fn get_state(state: web::Data) -> HttpResponse { - let s = state.lock().unwrap(); + let s = state.lock().expect("lock not poisoned"); HttpResponse::Ok().json(serde_json::json!({ "chain_id": CHAIN_ID, "nvm_version": NVM_VERSION, "contracts_deployed": s.contracts.len(), @@ -111,7 +111,7 @@ async fn deploy_contract(state: web::Data, req: web::Json, req: web::Json, req: web::Json) -> HttpResponse { - let s = state.lock().unwrap(); + let s = state.lock().expect("lock not poisoned"); let contracts: Vec<&ContractRecord> = s.contracts.values().collect(); HttpResponse::Ok().json(serde_json::json!({"contracts": contracts, "total": contracts.len()})) } async fn get_stats(state: web::Data) -> HttpResponse { - let s = state.lock().unwrap(); + let s = state.lock().expect("lock not poisoned"); HttpResponse::Ok().json(serde_json::json!({ "service": "nac-nvm-service", "layer": "L1-NVM", "chain_id": CHAIN_ID, "nvm_version": NVM_VERSION, diff --git a/nac-nvm/src/executor.rs b/nac-nvm/src/executor.rs index 48ea9e4..8883e5d 100644 --- a/nac-nvm/src/executor.rs +++ b/nac-nvm/src/executor.rs @@ -257,7 +257,7 @@ impl Executor { Opcode::Sha3 => { let value = self.stack.pop()?; let hash = Sha3_256::digest(value.to_le_bytes()); - let hash_u64 = u64::from_le_bytes(hash[0..8].try_into().unwrap()); + let hash_u64 = u64::from_le_bytes(hash[0..8].try_into().expect("FIX-006: unexpected None/Err")); self.stack.push(hash_u64)?; } Opcode::VerifySignature => { diff --git a/nac-nvm/src/gas.rs b/nac-nvm/src/gas.rs index 18929f9..a32a448 100644 --- a/nac-nvm/src/gas.rs +++ b/nac-nvm/src/gas.rs @@ -160,7 +160,7 @@ mod tests { fn test_gas_reset() { let mut gas = GasMetering::new(1000); - gas.consume(500).unwrap(); + gas.consume(500).expect("FIX-006: unexpected None/Err"); assert_eq!(gas.used(), 500); gas.reset(); diff --git a/nac-nvm/src/jit.rs b/nac-nvm/src/jit.rs index acbba79..2619302 100644 --- a/nac-nvm/src/jit.rs +++ b/nac-nvm/src/jit.rs @@ -204,9 +204,9 @@ impl JitCompiler { // 检查缓存 if self.config.cache_enabled { - let cache = self.compiled_cache.lock().unwrap(); + let cache = self.compiled_cache.lock().expect("lock not poisoned"); if let Some(cached) = cache.get(&hash) { - let mut stats = self.stats.lock().unwrap(); + let mut stats = self.stats.lock().expect("lock not poisoned"); stats.cache_hits += 1; stats.total_cache_lookups += 1; return Ok(cached.clone()); @@ -214,7 +214,7 @@ impl JitCompiler { } { - let mut stats = self.stats.lock().unwrap(); + let mut stats = self.stats.lock().expect("lock not poisoned"); stats.cache_misses += 1; stats.total_cache_lookups += 1; } @@ -224,7 +224,7 @@ impl JitCompiler { // 缓存结果 if self.config.cache_enabled { - let mut cache = self.compiled_cache.lock().unwrap(); + let mut cache = self.compiled_cache.lock().expect("lock not poisoned"); if cache.len() >= self.config.max_cache_size { // LRU策略:移除最旧的条目 if let Some(&first_key) = cache.keys().next() { @@ -236,7 +236,7 @@ impl JitCompiler { // 更新统计 { - let mut stats = self.stats.lock().unwrap(); + let mut stats = self.stats.lock().expect("lock not poisoned"); stats.compilations += 1; stats.total_compile_time += start_time.elapsed(); stats.total_code_size += compiled.code_size; @@ -927,7 +927,7 @@ impl JitCompiler { /// 清空缓存 pub fn clear_cache(&mut self) { - let mut cache = self.compiled_cache.lock().unwrap(); + let mut cache = self.compiled_cache.lock().expect("lock not poisoned"); cache.clear(); } @@ -938,7 +938,7 @@ impl JitCompiler { /// 获取统计信息 pub fn stats(&self) -> JitStats { - self.stats.lock().unwrap().clone() + self.stats.lock().expect("lock not poisoned").clone() } /// 获取性能分析报告 @@ -1146,7 +1146,7 @@ mod tests { bytecode.add_instruction(Instruction::with_operand(Opcode::Push, 20)); bytecode.add_instruction(Instruction::new(Opcode::Add)); - let compiled = jit.compile(&bytecode).unwrap(); + let compiled = jit.compile(&bytecode).expect("FIX-006: unexpected None/Err"); assert!(!compiled.native_code.is_empty()); // entry_points可能为1(单个入口点)或多个 assert!(compiled.entry_points.len() >= 1); @@ -1160,12 +1160,12 @@ mod tests { bytecode.add_instruction(Instruction::with_operand(Opcode::Push, 10)); // 第一次编译 - jit.compile(&bytecode).unwrap(); + jit.compile(&bytecode).expect("FIX-006: unexpected None/Err"); assert_eq!(jit.stats().compilations, 1); assert_eq!(jit.stats().cache_misses, 1); // 第二次应该命中缓存 - jit.compile(&bytecode).unwrap(); + jit.compile(&bytecode).expect("FIX-006: unexpected None/Err"); assert_eq!(jit.stats().compilations, 1); assert_eq!(jit.stats().cache_hits, 1); } @@ -1177,7 +1177,7 @@ mod tests { bytecode.add_instruction(Instruction::with_operand(Opcode::Push, 10)); - let compiled = jit.compile(&bytecode).unwrap(); + let compiled = jit.compile(&bytecode).expect("FIX-006: unexpected None/Err"); assert_eq!(compiled.optimization_level, OptimizationLevel::Aggressive); } @@ -1194,7 +1194,7 @@ mod tests { let mut bytecode = Bytecode::new(); bytecode.add_instruction(Instruction::with_operand(Opcode::Push, 10)); - let compiled = jit.compile(&bytecode).unwrap(); + let compiled = jit.compile(&bytecode).expect("FIX-006: unexpected None/Err"); assert!(compiled.debug_info.is_some()); } @@ -1205,8 +1205,8 @@ mod tests { bytecode.add_instruction(Instruction::with_operand(Opcode::Push, 10)); - jit.compile(&bytecode).unwrap(); - jit.compile(&bytecode).unwrap(); + jit.compile(&bytecode).expect("FIX-006: unexpected None/Err"); + jit.compile(&bytecode).expect("FIX-006: unexpected None/Err"); let stats = jit.stats(); assert_eq!(stats.compilations, 1); diff --git a/nac-nvm/src/memory.rs b/nac-nvm/src/memory.rs index aee931e..45c257b 100644 --- a/nac-nvm/src/memory.rs +++ b/nac-nvm/src/memory.rs @@ -79,11 +79,11 @@ mod tests { fn test_memory_store_load() { let mut memory = Memory::new(); - memory.store(0x100, 42).unwrap(); - memory.store(0x200, 100).unwrap(); + memory.store(0x100, 42).expect("FIX-006: unexpected None/Err"); + memory.store(0x200, 100).expect("FIX-006: unexpected None/Err"); - assert_eq!(memory.load(0x100).unwrap(), 42); - assert_eq!(memory.load(0x200).unwrap(), 100); + assert_eq!(memory.load(0x100).expect("mainnet: handle error"), 42); + assert_eq!(memory.load(0x200).expect("mainnet: handle error"), 100); } #[test] @@ -96,16 +96,16 @@ mod tests { fn test_memory_overwrite() { let mut memory = Memory::new(); - memory.store(0x100, 42).unwrap(); - memory.store(0x100, 100).unwrap(); + memory.store(0x100, 42).expect("FIX-006: unexpected None/Err"); + memory.store(0x100, 100).expect("FIX-006: unexpected None/Err"); - assert_eq!(memory.load(0x100).unwrap(), 100); + assert_eq!(memory.load(0x100).expect("mainnet: handle error"), 100); } #[test] fn test_memory_contains() { let mut memory = Memory::new(); - memory.store(0x100, 42).unwrap(); + memory.store(0x100, 42).expect("FIX-006: unexpected None/Err"); assert!(memory.contains(0x100)); assert!(!memory.contains(0x200)); diff --git a/nac-nvm/src/sandbox.rs b/nac-nvm/src/sandbox.rs index c3bb75a..7418c97 100644 --- a/nac-nvm/src/sandbox.rs +++ b/nac-nvm/src/sandbox.rs @@ -596,7 +596,7 @@ impl Sandbox { /// 检查资源限制 pub fn check_resource_limits(&self) -> Result<(), SecurityError> { - let usage = self.resource_usage.lock().unwrap(); + let usage = self.resource_usage.lock().expect("lock not poisoned"); if usage.gas_used > self.resource_limits.max_gas { return Err(SecurityError::GasLimitExceeded); @@ -623,7 +623,7 @@ impl Sandbox { /// 更新资源使用 pub fn update_resource_usage(&self, gas: u64, memory: usize) { - let mut usage = self.resource_usage.lock().unwrap(); + let mut usage = self.resource_usage.lock().expect("lock not poisoned"); usage.gas_used += gas; usage.memory_used = memory; } @@ -652,7 +652,7 @@ impl Sandbox { self.check_resource_limits()?; // 安全监控 - let usage = self.resource_usage.lock().unwrap(); + let usage = self.resource_usage.lock().expect("lock not poisoned"); let context = ExecutionContext { gas_used: usage.gas_used, memory_used: usage.memory_used, @@ -671,7 +671,7 @@ impl Sandbox { let entry = AuditEntry { timestamp: std::time::SystemTime::now() .duration_since(std::time::UNIX_EPOCH) - .unwrap() + .expect("FIX-006: unexpected None/Err") .as_secs(), event_type, severity, @@ -679,28 +679,28 @@ impl Sandbox { context: HashMap::new(), }; - let mut log = self.audit_log.lock().unwrap(); + let mut log = self.audit_log.lock().expect("lock not poisoned"); log.push(entry); } /// 获取审计日志 pub fn get_audit_log(&self) -> Vec { - self.audit_log.lock().unwrap().clone() + self.audit_log.lock().expect("lock not poisoned").clone() } /// 清空审计日志 pub fn clear_audit_log(&self) { - self.audit_log.lock().unwrap().clear(); + self.audit_log.lock().expect("lock not poisoned").clear(); } /// 获取资源使用情况 pub fn get_resource_usage(&self) -> ResourceUsage { - self.resource_usage.lock().unwrap().clone() + self.resource_usage.lock().expect("lock not poisoned").clone() } /// 重置资源使用 pub fn reset_resource_usage(&self) { - let mut usage = self.resource_usage.lock().unwrap(); + let mut usage = self.resource_usage.lock().expect("lock not poisoned"); *usage = ResourceUsage::default(); } @@ -747,8 +747,8 @@ impl Sandbox { /// 生成安全报告 pub fn generate_security_report(&self) -> SecurityReport { - let usage = self.resource_usage.lock().unwrap().clone(); - let audit_log = self.audit_log.lock().unwrap().clone(); + let usage = self.resource_usage.lock().expect("lock not poisoned").clone(); + let audit_log = self.audit_log.lock().expect("lock not poisoned").clone(); SecurityReport { resource_usage: usage, @@ -760,14 +760,14 @@ impl Sandbox { } fn count_violations(&self) -> usize { - self.audit_log.lock().unwrap() + self.audit_log.lock().expect("lock not poisoned") .iter() .filter(|e| e.event_type == AuditEventType::SecurityViolation) .count() } fn count_warnings(&self) -> usize { - self.audit_log.lock().unwrap() + self.audit_log.lock().expect("lock not poisoned") .iter() .filter(|e| e.severity == Severity::Warning) .count() @@ -847,7 +847,7 @@ mod tests { #[test] fn test_sandbox_initialization() { let mut sandbox = Sandbox::new(); - sandbox.initialize().unwrap(); + sandbox.initialize().expect("FIX-006: unexpected None/Err"); assert_eq!(sandbox.state(), SandboxState::Ready); } @@ -905,13 +905,13 @@ mod tests { #[test] fn test_sandbox_pause_resume() { let mut sandbox = Sandbox::new(); - sandbox.initialize().unwrap(); + sandbox.initialize().expect("FIX-006: unexpected None/Err"); sandbox.state = SandboxState::Running; - sandbox.pause().unwrap(); + sandbox.pause().expect("FIX-006: unexpected None/Err"); assert_eq!(sandbox.state(), SandboxState::Paused); - sandbox.resume().unwrap(); + sandbox.resume().expect("FIX-006: unexpected None/Err"); assert_eq!(sandbox.state(), SandboxState::Running); } } diff --git a/nac-nvm/src/stack.rs b/nac-nvm/src/stack.rs index d51159a..925a825 100644 --- a/nac-nvm/src/stack.rs +++ b/nac-nvm/src/stack.rs @@ -101,40 +101,40 @@ mod tests { assert!(stack.push(42).is_ok()); assert!(stack.push(100).is_ok()); - assert_eq!(stack.pop().unwrap(), 100); - assert_eq!(stack.pop().unwrap(), 42); + assert_eq!(stack.pop().expect("mainnet: handle error"), 100); + assert_eq!(stack.pop().expect("mainnet: handle error"), 42); assert!(stack.pop().is_err()); } #[test] fn test_stack_peek() { let mut stack = Stack::new(); - stack.push(42).unwrap(); + stack.push(42).expect("FIX-006: unexpected None/Err"); - assert_eq!(stack.peek().unwrap(), 42); + assert_eq!(stack.peek().expect("mainnet: handle error"), 42); assert_eq!(stack.size(), 1); } #[test] fn test_stack_dup() { let mut stack = Stack::new(); - stack.push(42).unwrap(); - stack.dup().unwrap(); + stack.push(42).expect("FIX-006: unexpected None/Err"); + stack.dup().expect("FIX-006: unexpected None/Err"); assert_eq!(stack.size(), 2); - assert_eq!(stack.pop().unwrap(), 42); - assert_eq!(stack.pop().unwrap(), 42); + assert_eq!(stack.pop().expect("mainnet: handle error"), 42); + assert_eq!(stack.pop().expect("mainnet: handle error"), 42); } #[test] fn test_stack_swap() { let mut stack = Stack::new(); - stack.push(1).unwrap(); - stack.push(2).unwrap(); - stack.swap().unwrap(); + stack.push(1).expect("FIX-006: unexpected None/Err"); + stack.push(2).expect("FIX-006: unexpected None/Err"); + stack.swap().expect("FIX-006: unexpected None/Err"); - assert_eq!(stack.pop().unwrap(), 1); - assert_eq!(stack.pop().unwrap(), 2); + assert_eq!(stack.pop().expect("mainnet: handle error"), 1); + assert_eq!(stack.pop().expect("mainnet: handle error"), 2); } #[test] diff --git a/nac-onboarding-system/src/services/compliance.rs b/nac-onboarding-system/src/services/compliance.rs index b529032..9fc880c 100644 --- a/nac-onboarding-system/src/services/compliance.rs +++ b/nac-onboarding-system/src/services/compliance.rs @@ -152,7 +152,7 @@ mod tests { async fn test_compliance_check() { // 创建测试配置 let config = NACConfig::default(); - let adapter = NACAdapter::new(&config).await.unwrap(); + let adapter = NACAdapter::new(&config).await.expect("mainnet: handle error"); let service = ComplianceService::new(adapter); // 创建测试资产 @@ -182,7 +182,7 @@ mod tests { // 验证结果 assert!(result.is_ok()); - let compliance_result = result.unwrap(); + let compliance_result = result.expect("mainnet: handle error"); assert!(compliance_result.score >= 0.7); assert!(!compliance_result.result_hash.is_empty()); } diff --git a/nac-onboarding-system/src/services/constitution.rs b/nac-onboarding-system/src/services/constitution.rs index f2b78c3..f7f7282 100644 --- a/nac-onboarding-system/src/services/constitution.rs +++ b/nac-onboarding-system/src/services/constitution.rs @@ -320,7 +320,7 @@ mod tests { #[tokio::test] async fn test_review_compliance() { let config = NACConfig::default(); - let adapter = NACAdapter::new(&config).await.unwrap(); + let adapter = NACAdapter::new(&config).await.expect("mainnet: handle error"); let service = ConstitutionService::new(adapter); let compliance_result = ComplianceResult { @@ -333,7 +333,7 @@ mod tests { let result = service.review_compliance(&compliance_result).await; assert!(result.is_ok()); - let receipt = result.unwrap(); + let receipt = result.expect("mainnet: handle error"); assert_eq!(receipt.receipt_type, "COMPLIANCE"); assert!(!receipt.receipt_id.is_empty()); } diff --git a/nac-onboarding-system/src/services/custody.rs b/nac-onboarding-system/src/services/custody.rs index 5cc2c0e..a7ab766 100644 --- a/nac-onboarding-system/src/services/custody.rs +++ b/nac-onboarding-system/src/services/custody.rs @@ -322,7 +322,7 @@ mod tests { #[tokio::test] async fn test_custody_to_smart_contract() { let config = NACConfig::default(); - let adapter = NACAdapter::new(&config).await.unwrap(); + let adapter = NACAdapter::new(&config).await.expect("mainnet: handle error"); let service = CustodyService::new(adapter); let asset = Asset { @@ -348,7 +348,7 @@ mod tests { let result = service.custody_asset(&asset, &dna_result, CustodyProvider::SmartContract).await; assert!(result.is_ok()); - let custody_result = result.unwrap(); + let custody_result = result.expect("mainnet: handle error"); assert_eq!(custody_result.custody_provider, "SMART_CONTRACT"); assert!(custody_result.custody_receipt.starts_with("CONTRACT:")); } diff --git a/nac-onboarding-system/src/services/dna.rs b/nac-onboarding-system/src/services/dna.rs index da2c177..f75f6ca 100644 --- a/nac-onboarding-system/src/services/dna.rs +++ b/nac-onboarding-system/src/services/dna.rs @@ -297,7 +297,7 @@ mod tests { async fn test_generate_dna() { // 创建测试配置 let config = NACConfig::default(); - let adapter = NACAdapter::new(&config).await.unwrap(); + let adapter = NACAdapter::new(&config).await.expect("mainnet: handle error"); let service = DNAService::new(adapter); // 创建测试数据 @@ -333,7 +333,7 @@ mod tests { // 验证结果 assert!(result.is_ok()); - let dna_result = result.unwrap(); + let dna_result = result.expect("mainnet: handle error"); assert_eq!(dna_result.gnacs_code.len(), 48); assert!(!dna_result.dna_hash.is_empty()); assert!(!dna_result.dna_code.is_empty()); diff --git a/nac-onboarding-system/src/services/listing.rs b/nac-onboarding-system/src/services/listing.rs index 0307a36..e7477ac 100644 --- a/nac-onboarding-system/src/services/listing.rs +++ b/nac-onboarding-system/src/services/listing.rs @@ -442,7 +442,7 @@ mod tests { #[tokio::test] async fn test_list_asset() { let config = NACConfig::default(); - let adapter = NACAdapter::new(&config).await.unwrap(); + let adapter = NACAdapter::new(&config).await.expect("mainnet: handle error"); let service = ListingService::new(adapter); let asset = Asset { @@ -476,7 +476,7 @@ mod tests { let result = service.list_asset(&asset, &dna_result, &token_result).await; assert!(result.is_ok()); - let listing_result = result.unwrap(); + let listing_result = result.expect("mainnet: handle error"); assert!(!listing_result.browser_url.is_empty()); assert!(listing_result.wallet_listed); assert!(listing_result.exchange_listed); diff --git a/nac-onboarding-system/src/services/orchestrator.rs b/nac-onboarding-system/src/services/orchestrator.rs index 225b2f5..9d47503 100644 --- a/nac-onboarding-system/src/services/orchestrator.rs +++ b/nac-onboarding-system/src/services/orchestrator.rs @@ -415,11 +415,11 @@ mod tests { #[tokio::test] async fn test_execute_onboarding() { // 创建测试数据库连接 - let pool = DbPool::connect("sqlite::memory:").await.unwrap(); + let pool = DbPool::connect("sqlite::memory:").await.expect("mainnet: handle error"); // 创建测试配置 let config = NACConfig::default(); - let adapter = NACAdapter::new(&config).await.unwrap(); + let adapter = NACAdapter::new(&config).await.expect("mainnet: handle error"); // 创建编排引擎 let orchestrator = Orchestrator::new(pool.clone(), adapter); @@ -435,7 +435,7 @@ mod tests { kyc_level: 2, jurisdiction: "CN".to_string(), } - ).await.unwrap(); + ).await.expect("mainnet: handle error"); // 执行上链流程 let result = orchestrator.execute_onboarding( @@ -446,7 +446,7 @@ mod tests { assert!(result.is_ok()); - let record = result.unwrap(); + let record = result.expect("mainnet: handle error"); assert_eq!(record.state, OnboardingState::Listed); } } diff --git a/nac-onboarding-system/src/services/token.rs b/nac-onboarding-system/src/services/token.rs index a832eb7..f6e6894 100644 --- a/nac-onboarding-system/src/services/token.rs +++ b/nac-onboarding-system/src/services/token.rs @@ -296,7 +296,7 @@ mod tests { #[test] fn test_generate_token_symbol() { let config = NACConfig::default(); - let adapter = NACAdapter::new(&config).await.unwrap(); + let adapter = NACAdapter::new(&config).await.expect("mainnet: handle error"); let service = TokenService::new(adapter); let gnacs_code = "0123456789abcdef0123456789abcdef0123456789abcdef"; @@ -307,7 +307,7 @@ mod tests { #[tokio::test] async fn test_issue_token() { let config = NACConfig::default(); - let adapter = NACAdapter::new(&config).await.unwrap(); + let adapter = NACAdapter::new(&config).await.expect("mainnet: handle error"); let service = TokenService::new(adapter); let asset = Asset { @@ -340,7 +340,7 @@ mod tests { let result = service.issue_token(&asset, &dna_result, &xtzh_result).await; assert!(result.is_ok()); - let token_result = result.unwrap(); + let token_result = result.expect("mainnet: handle error"); assert!(!token_result.contract_address.is_empty()); assert!(token_result.token_symbol.starts_with("NAC")); } diff --git a/nac-onboarding-system/src/services/valuation.rs b/nac-onboarding-system/src/services/valuation.rs index 82aadd7..754e1c2 100644 --- a/nac-onboarding-system/src/services/valuation.rs +++ b/nac-onboarding-system/src/services/valuation.rs @@ -176,7 +176,7 @@ mod tests { async fn test_valuate_asset() { // 创建测试配置 let config = NACConfig::default(); - let adapter = NACAdapter::new(&config).await.unwrap(); + let adapter = NACAdapter::new(&config).await.expect("mainnet: handle error"); let service = ValuationService::new(adapter); // 创建测试资产 @@ -203,7 +203,7 @@ mod tests { // 验证结果 assert!(result.is_ok()); - let valuation_result = result.unwrap(); + let valuation_result = result.expect("mainnet: handle error"); assert!(valuation_result.value_sdr > 0.0); assert!(!valuation_result.result_hash.is_empty()); } @@ -211,7 +211,7 @@ mod tests { #[test] fn test_calculate_xtzh_amount() { let config = NACConfig::default(); - let adapter = NACAdapter::new(&config).await.unwrap(); + let adapter = NACAdapter::new(&config).await.expect("mainnet: handle error"); let service = ValuationService::new(adapter); let valuation_result = ValuationResult { @@ -228,7 +228,7 @@ mod tests { #[test] fn test_calculate_token_amount() { let config = NACConfig::default(); - let adapter = NACAdapter::new(&config).await.unwrap(); + let adapter = NACAdapter::new(&config).await.expect("mainnet: handle error"); let service = ValuationService::new(adapter); let token_amount = service.calculate_token_amount(1250000.0); diff --git a/nac-onboarding-system/src/services/xtzh.rs b/nac-onboarding-system/src/services/xtzh.rs index f3ed2c8..c082e41 100644 --- a/nac-onboarding-system/src/services/xtzh.rs +++ b/nac-onboarding-system/src/services/xtzh.rs @@ -304,7 +304,7 @@ mod tests { #[tokio::test] async fn test_calculate_mint_amount() { let config = NACConfig::default(); - let adapter = NACAdapter::new(&config).await.unwrap(); + let adapter = NACAdapter::new(&config).await.expect("mainnet: handle error"); let service = XTZHService::new(adapter); let amount = service.calculate_mint_amount(1000000.0); @@ -314,13 +314,13 @@ mod tests { #[tokio::test] async fn test_get_xtzh_price() { let config = NACConfig::default(); - let adapter = NACAdapter::new(&config).await.unwrap(); + let adapter = NACAdapter::new(&config).await.expect("mainnet: handle error"); let service = XTZHService::new(adapter); let result = service.get_xtzh_price().await; assert!(result.is_ok()); - let price = result.unwrap(); + let price = result.expect("mainnet: handle error"); assert!(price > 0.0); } } diff --git a/nac-sdk/src/adapters/config.rs b/nac-sdk/src/adapters/config.rs index f8db722..5e12ef2 100644 --- a/nac-sdk/src/adapters/config.rs +++ b/nac-sdk/src/adapters/config.rs @@ -212,8 +212,8 @@ mod tests { #[test] fn test_config_serialization() { let config = NACConfig::default(); - let json = serde_json::to_string(&config).unwrap(); - let deserialized: NACConfig = serde_json::from_str(&json).unwrap(); + let json = serde_json::to_string(&config).expect("FIX-006: unexpected None/Err"); + let deserialized: NACConfig = serde_json::from_str(&json).expect("FIX-006: unexpected None/Err"); assert_eq!(config.l1.chain_id, deserialized.l1.chain_id); } } diff --git a/nac-sdk/src/adapters/l0_native.rs b/nac-sdk/src/adapters/l0_native.rs index 9d052de..1e908d2 100644 --- a/nac-sdk/src/adapters/l0_native.rs +++ b/nac-sdk/src/adapters/l0_native.rs @@ -495,7 +495,7 @@ mod tests { #[test] fn test_generate_keypair() { - let l0 = L0NativeAdapter::new().unwrap(); + let l0 = L0NativeAdapter::new().expect("FIX-006: unexpected None/Err"); let (private_key, public_key) = l0.generate_keypair(); assert_eq!(private_key.len(), 32); @@ -504,7 +504,7 @@ mod tests { #[test] fn test_address_from_public_key() { - let l0 = L0NativeAdapter::new().unwrap(); + let l0 = L0NativeAdapter::new().expect("FIX-006: unexpected None/Err"); let (_, public_key) = l0.generate_keypair(); let address = l0.address_from_public_key(&public_key); @@ -513,10 +513,10 @@ mod tests { #[test] fn test_address_from_private_key() { - let l0 = L0NativeAdapter::new().unwrap(); + let l0 = L0NativeAdapter::new().expect("FIX-006: unexpected None/Err"); let (private_key, public_key) = l0.generate_keypair(); - let addr1 = l0.address_from_private_key(&private_key).unwrap(); + let addr1 = l0.address_from_private_key(&private_key).expect("FIX-006: unexpected None/Err"); let addr2 = l0.address_from_public_key(&public_key); assert_eq!(addr1, addr2); @@ -524,7 +524,7 @@ mod tests { #[test] fn test_validate_address() { - let l0 = L0NativeAdapter::new().unwrap(); + let l0 = L0NativeAdapter::new().expect("FIX-006: unexpected None/Err"); let address = Address::zero(); assert!(l0.validate_address(&address)); @@ -532,7 +532,7 @@ mod tests { #[test] fn test_hash_sha3_384() { - let l0 = L0NativeAdapter::new().unwrap(); + let l0 = L0NativeAdapter::new().expect("FIX-006: unexpected None/Err"); let data = b"hello world"; let hash1 = l0.hash_sha3_384(data); @@ -548,7 +548,7 @@ mod tests { #[test] fn test_merkle_root() { - let l0 = L0NativeAdapter::new().unwrap(); + let l0 = L0NativeAdapter::new().expect("FIX-006: unexpected None/Err"); // 空列表 let root = l0.compute_merkle_root(&[]); @@ -571,12 +571,12 @@ mod tests { #[test] fn test_sign_and_verify() { - let l0 = L0NativeAdapter::new().unwrap(); + let l0 = L0NativeAdapter::new().expect("FIX-006: unexpected None/Err"); let (private_key, public_key) = l0.generate_keypair(); let data = b"hello world"; // 签名 - let signature = l0.sign_data(data, &private_key).unwrap(); + let signature = l0.sign_data(data, &private_key).expect("FIX-006: unexpected None/Err"); // 验证签名 assert!(l0.verify_signature(data, &signature, &public_key)); @@ -591,7 +591,7 @@ mod tests { #[test] fn test_encode_decode_address() { - let l0 = L0NativeAdapter::new().unwrap(); + let l0 = L0NativeAdapter::new().expect("FIX-006: unexpected None/Err"); let (_, public_key) = l0.generate_keypair(); let address = l0.address_from_public_key(&public_key); @@ -600,13 +600,13 @@ mod tests { assert_eq!(encoded.len(), 32); // 解码 - let decoded = l0.decode_address(&encoded).unwrap(); + let decoded = l0.decode_address(&encoded).expect("FIX-006: unexpected None/Err"); assert_eq!(address, decoded); } #[test] fn test_encode_decode_hash() { - let l0 = L0NativeAdapter::new().unwrap(); + let l0 = L0NativeAdapter::new().expect("FIX-006: unexpected None/Err"); let hash = Hash::sha3_384(b"test data"); // 编码 @@ -614,7 +614,7 @@ mod tests { assert_eq!(encoded.len(), 48); // 解码 - let decoded = l0.decode_hash(&encoded).unwrap(); + let decoded = l0.decode_hash(&encoded).expect("FIX-006: unexpected None/Err"); assert_eq!(hash, decoded); } } diff --git a/nac-sdk/src/advanced/events.rs b/nac-sdk/src/advanced/events.rs index b581c1c..4d70506 100644 --- a/nac-sdk/src/advanced/events.rs +++ b/nac-sdk/src/advanced/events.rs @@ -32,13 +32,13 @@ impl EventListener { where F: Fn(&EventLog) + Send + Sync + 'static, { - let mut handlers = self.handlers.lock().unwrap(); + let mut handlers = self.handlers.lock().expect("lock not poisoned"); handlers.insert(event_name, Box::new(handler)); } /// 处理事件 pub fn handle_event(&self, event: &EventLog) { - let handlers = self.handlers.lock().unwrap(); + let handlers = self.handlers.lock().expect("lock not poisoned"); // 从topics中提取事件名称 if let Some(topic) = event.topics.first() { diff --git a/nac-sdk/src/advanced/utils.rs b/nac-sdk/src/advanced/utils.rs index f98b1db..502774f 100644 --- a/nac-sdk/src/advanced/utils.rs +++ b/nac-sdk/src/advanced/utils.rs @@ -89,7 +89,7 @@ mod tests { #[test] fn test_decode_event_log() { let data = "0x0000000000000000000000000000000000000000000000000000000000000064"; - let decoded = decode_event_log(data).unwrap(); + let decoded = decode_event_log(data).expect("FIX-006: unexpected None/Err"); assert_eq!(decoded, vec![100]); } } diff --git a/nac-sdk/src/crypto/asset_dna.rs b/nac-sdk/src/crypto/asset_dna.rs index 67aa78c..9315198 100644 --- a/nac-sdk/src/crypto/asset_dna.rs +++ b/nac-sdk/src/crypto/asset_dna.rs @@ -82,7 +82,7 @@ pub struct AssetDNAData { /// let dna = AssetDNA::generate( /// gnacs, /// "ASSET-001".to_string(), -/// Address::from_hex("0x123...").unwrap(), +/// Address::from_hex("0x123...").expect("FIX-006: unexpected None/Err"), /// "property metadata".to_string(), /// ); /// @@ -119,7 +119,7 @@ impl AssetDNA { /// RiskLevel::Medium, /// ); /// - /// let owner = Address::from_hex("0xabc123").unwrap(); + /// let owner = Address::from_hex("0xabc123").expect("FIX-006: unexpected None/Err"); /// let dna = AssetDNA::generate( /// gnacs, /// "STOCK-AAPL-001".to_string(), @@ -188,7 +188,7 @@ impl AssetDNA { /// RiskLevel::Medium, /// ); /// - /// let owner = Address::from_hex("0xabc123").unwrap(); + /// let owner = Address::from_hex("0xabc123").expect("FIX-006: unexpected None/Err"); /// /// // 生成父资产DNA /// let parent = AssetDNA::generate( @@ -268,8 +268,8 @@ impl AssetDNA { /// RiskLevel::Low, /// ); /// - /// let owner1 = Address::from_hex("0xabc123").unwrap(); - /// let owner2 = Address::from_hex("0xdef456").unwrap(); + /// let owner1 = Address::from_hex("0xabc123").expect("FIX-006: unexpected None/Err"); + /// let owner2 = Address::from_hex("0xdef456").expect("FIX-006: unexpected None/Err"); /// /// // 生成初始DNA /// let dna_v1 = AssetDNA::generate( @@ -344,7 +344,7 @@ impl AssetDNA { /// RiskLevel::High, /// ); /// - /// let owner = Address::from_hex("0xabc123").unwrap(); + /// let owner = Address::from_hex("0xabc123").expect("FIX-006: unexpected None/Err"); /// let dna = AssetDNA::generate( /// gnacs, /// "GOLD-BAR-001".to_string(), @@ -429,7 +429,7 @@ mod tests { RiskLevel::Low, ); - let owner = Address::from_hex("0xabc123").unwrap(); + let owner = Address::from_hex("0xabc123").expect("FIX-006: unexpected None/Err"); let dna = AssetDNA::generate( gnacs, "HOUSE-001".to_string(), @@ -452,7 +452,7 @@ mod tests { RiskLevel::Medium, ); - let owner = Address::from_hex("0xabc123").unwrap(); + let owner = Address::from_hex("0xabc123").expect("FIX-006: unexpected None/Err"); let parent = AssetDNA::generate( gnacs, @@ -484,8 +484,8 @@ mod tests { RiskLevel::Low, ); - let owner1 = Address::from_hex("0xabc123").unwrap(); - let owner2 = Address::from_hex("0xdef456").unwrap(); + let owner1 = Address::from_hex("0xabc123").expect("FIX-006: unexpected None/Err"); + let owner2 = Address::from_hex("0xdef456").expect("FIX-006: unexpected None/Err"); let dna_v1 = AssetDNA::generate( gnacs, @@ -515,7 +515,7 @@ mod tests { RiskLevel::High, ); - let owner = Address::from_hex("0xabc123").unwrap(); + let owner = Address::from_hex("0xabc123").expect("FIX-006: unexpected None/Err"); let dna1 = AssetDNA::generate( gnacs, diff --git a/nac-sdk/src/crypto/blake3_hasher.rs b/nac-sdk/src/crypto/blake3_hasher.rs index 51c6cd6..8da8332 100644 --- a/nac-sdk/src/crypto/blake3_hasher.rs +++ b/nac-sdk/src/crypto/blake3_hasher.rs @@ -79,7 +79,7 @@ impl Blake3Hasher { /// ``` pub fn hash_bytes(data: &[u8]) -> Hash { let hash_bytes = blake3::hash(data); - Hash::from_slice(hash_bytes.as_bytes()).unwrap() + Hash::from_slice(hash_bytes.as_bytes()).expect("FIX-006: unexpected None/Err") } /// 计算多个数据的哈希 @@ -107,7 +107,7 @@ impl Blake3Hasher { hasher.update(data); } let hash_bytes = hasher.finalize(); - Hash::from_slice(hash_bytes.as_bytes()).unwrap() + Hash::from_slice(hash_bytes.as_bytes()).expect("FIX-006: unexpected None/Err") } /// 验证数据的哈希 @@ -215,7 +215,7 @@ impl Blake3Hasher { /// Blake3Hasher::hash_string("leaf3"), /// Blake3Hasher::hash_string("leaf4"), /// ]; - /// let proof = Blake3Hasher::merkle_proof(&leaves, 1).unwrap(); + /// let proof = Blake3Hasher::merkle_proof(&leaves, 1).expect("FIX-006: unexpected None/Err"); /// assert!(!proof.is_empty()); /// ``` pub fn merkle_proof(leaves: &[Hash], index: usize) -> Result> { @@ -286,7 +286,7 @@ impl Blake3Hasher { /// Blake3Hasher::hash_string("leaf4"), /// ]; /// let root = Blake3Hasher::merkle_root(&leaves); - /// let proof = Blake3Hasher::merkle_proof(&leaves, 1).unwrap(); + /// let proof = Blake3Hasher::merkle_proof(&leaves, 1).expect("FIX-006: unexpected None/Err"); /// assert!(Blake3Hasher::verify_merkle_proof(&leaves[1], &proof, &root, 1)); /// ``` pub fn verify_merkle_proof( @@ -385,7 +385,7 @@ mod tests { let root = Blake3Hasher::merkle_root(&leaves); for (index, leaf) in leaves.iter().enumerate() { - let proof = Blake3Hasher::merkle_proof(&leaves, index).unwrap(); + let proof = Blake3Hasher::merkle_proof(&leaves, index).expect("FIX-006: unexpected None/Err"); assert!(Blake3Hasher::verify_merkle_proof(leaf, &proof, &root, index)); } } diff --git a/nac-sdk/src/crypto/gnacs.rs b/nac-sdk/src/crypto/gnacs.rs index a7aa97e..5a85e8d 100644 --- a/nac-sdk/src/crypto/gnacs.rs +++ b/nac-sdk/src/crypto/gnacs.rs @@ -113,7 +113,7 @@ impl GNACSEncoder { /// ``` /// use nac_sdk::crypto::GNACSEncoder; /// - /// let code = GNACSEncoder::decode_hex("0x010203040506").unwrap(); + /// let code = GNACSEncoder::decode_hex("0x010203040506").expect("FIX-006: unexpected None/Err"); /// assert_eq!(code.to_hex(), "010203040506"); /// ``` pub fn decode_hex(hex: &str) -> Result { @@ -311,7 +311,7 @@ mod tests { ); let hex = code.to_hex(); - let decoded = GNACSEncoder::decode_hex(&format!("0x{}", hex)).unwrap(); + let decoded = GNACSEncoder::decode_hex(&format!("0x{}", hex)).expect("FIX-006: unexpected None/Err"); assert_eq!(code, decoded); } diff --git a/nac-sdk/src/error/mod.rs b/nac-sdk/src/error/mod.rs index 0bd1aba..427dafc 100644 --- a/nac-sdk/src/error/mod.rs +++ b/nac-sdk/src/error/mod.rs @@ -199,7 +199,7 @@ mod tests { fn test_result_type() { let result: Result = Ok(42); assert!(result.is_ok()); - assert_eq!(result.unwrap(), 42); + assert_eq!(result.expect("mainnet: handle error"), 42); } #[test] diff --git a/nac-sdk/src/protocols/acc20.rs b/nac-sdk/src/protocols/acc20.rs index e658610..c16b873 100644 --- a/nac-sdk/src/protocols/acc20.rs +++ b/nac-sdk/src/protocols/acc20.rs @@ -105,11 +105,11 @@ pub struct ACC20ApprovalEvent { /// let client = NacLensClient::new("https://rpc.newassetchain.io"); /// let acc20 = ACC20::new(client); /// -/// let certificate_addr = Address::from_hex("0x123...").unwrap(); -/// let owner_addr = Address::from_hex("0xabc...").unwrap(); +/// let certificate_addr = Address::from_hex("0x123...").expect("FIX-006: unexpected None/Err"); +/// let owner_addr = Address::from_hex("0xabc...").expect("FIX-006: unexpected None/Err"); /// /// // 查询资产持有量 -/// let holdings = acc20.get_asset_holdings(&certificate_addr, &owner_addr).await.unwrap(); +/// let holdings = acc20.get_asset_holdings(&certificate_addr, &owner_addr).await.expect("FIX-006: unexpected None/Err"); /// println!("Asset Holdings: {}", holdings); /// } /// ``` @@ -529,8 +529,8 @@ mod tests { created_at: Timestamp::now(), }; - let json = serde_json::to_string(&info).unwrap(); - let deserialized: ACC20TokenInfo = serde_json::from_str(&json).unwrap(); + let json = serde_json::to_string(&info).expect("FIX-006: unexpected None/Err"); + let deserialized: ACC20TokenInfo = serde_json::from_str(&json).expect("FIX-006: unexpected None/Err"); assert_eq!(info.name, deserialized.name); assert_eq!(info.symbol, deserialized.symbol); @@ -546,8 +546,8 @@ mod tests { timestamp: Timestamp::now(), }; - let json = serde_json::to_string(&event).unwrap(); - let deserialized: ACC20TransferEvent = serde_json::from_str(&json).unwrap(); + let json = serde_json::to_string(&event).expect("FIX-006: unexpected None/Err"); + let deserialized: ACC20TransferEvent = serde_json::from_str(&json).expect("FIX-006: unexpected None/Err"); assert_eq!(event.amount, deserialized.amount); } diff --git a/nac-sdk/src/types/mod.rs b/nac-sdk/src/types/mod.rs index eae3f01..f904790 100644 --- a/nac-sdk/src/types/mod.rs +++ b/nac-sdk/src/types/mod.rs @@ -264,15 +264,15 @@ mod tests { constitutional_hash: None, }; - let json = serde_json::to_string(&request).unwrap(); + let json = serde_json::to_string(&request).expect("FIX-006: unexpected None/Err"); assert!(json.contains("\"nac_lens\":\"3.0\"")); assert!(json.contains("\"method\":\"acc20_getAssetHoldings\"")); } #[test] fn test_asset_holdings() { - let certificate_addr = Address::from_hex("0xabc").unwrap(); - let holder_addr = Address::from_hex("0x123").unwrap(); + let certificate_addr = Address::from_hex("0xabc").expect("FIX-006: unexpected None/Err"); + let holder_addr = Address::from_hex("0x123").expect("FIX-006: unexpected None/Err"); let holdings = AssetHoldings { certificate_address: certificate_addr, diff --git a/nac-sdk/src/utils/mod.rs b/nac-sdk/src/utils/mod.rs index 0724b23..efe263f 100644 --- a/nac-sdk/src/utils/mod.rs +++ b/nac-sdk/src/utils/mod.rs @@ -115,7 +115,7 @@ pub fn format_asset_amount(amount: u128, decimals: u8) -> String { /// ``` /// use nac_sdk::utils::parse_asset_amount; /// -/// let amount = parse_asset_amount("1.5", 18).unwrap(); +/// let amount = parse_asset_amount("1.5", 18).expect("FIX-006: unexpected None/Err"); /// assert_eq!(amount, 1_500_000_000_000_000_000); /// ``` pub fn parse_asset_amount(amount_str: &str, decimals: u8) -> Result { @@ -167,9 +167,9 @@ mod tests { #[test] fn test_parse_asset_amount() { - assert_eq!(parse_asset_amount("1.0", 18).unwrap(), 1_000_000_000_000_000_000); - assert_eq!(parse_asset_amount("1.5", 18).unwrap(), 1_500_000_000_000_000_000); - assert_eq!(parse_asset_amount("123", 0).unwrap(), 123); + assert_eq!(parse_asset_amount("1.0", 18).expect("mainnet: handle error"), 1_000_000_000_000_000_000); + assert_eq!(parse_asset_amount("1.5", 18).expect("mainnet: handle error"), 1_500_000_000_000_000_000); + assert_eq!(parse_asset_amount("123", 0).expect("mainnet: handle error"), 123); } #[test] diff --git a/nac-sdk/tests/acc721_integration_test.rs b/nac-sdk/tests/acc721_integration_test.rs index f0171f4..82527bd 100644 --- a/nac-sdk/tests/acc721_integration_test.rs +++ b/nac-sdk/tests/acc721_integration_test.rs @@ -229,7 +229,7 @@ fn test_acc721_interface_creation() { #[test] fn test_address_parsing() { let addr_str = "0x12345678901234567890123456789012345678901234567890123456789012345678901234567890"; - let addr = Address::from_hex(addr_str).unwrap(); + let addr = Address::from_hex(addr_str).expect("mainnet: handle error"); assert_eq!(addr.to_hex(), addr_str); } diff --git a/nac-sdk/tests/integration.rs b/nac-sdk/tests/integration.rs index 8e8c9dd..8462abb 100644 --- a/nac-sdk/tests/integration.rs +++ b/nac-sdk/tests/integration.rs @@ -37,11 +37,11 @@ fn test_l0_address_generation() { let (private_key, public_key) = adapter.generate_keypair(); // 从公钥生成地址 - let address1 = adapter.address_from_public_key(&public_key).unwrap(); + let address1 = adapter.address_from_public_key(&public_key).expect("mainnet: handle error"); assert_eq!(address1.len(), 32); // 从私钥生成地址 - let address2 = adapter.address_from_private_key(&private_key).unwrap(); + let address2 = adapter.address_from_private_key(&private_key).expect("mainnet: handle error"); assert_eq!(address2.len(), 32); // 两个地址应该相同 @@ -55,14 +55,14 @@ fn test_l0_address_validation() { let adapter = L0NativeAdapter::new(); let (_, public_key) = adapter.generate_keypair(); - let address = adapter.address_from_public_key(&public_key).unwrap(); + let address = adapter.address_from_public_key(&public_key).expect("mainnet: handle error"); // 有效地址 - assert!(adapter.validate_address(&address).unwrap()); + assert!(adapter.validate_address(&address).expect("mainnet: handle error")); // 无效地址 - 长度不对 let invalid_address = vec![0u8; 16]; - assert!(!adapter.validate_address(&invalid_address).unwrap()); + assert!(!adapter.validate_address(&invalid_address).expect("mainnet: handle error")); } /// 测试L0原生层 - SHA3-384哈希 @@ -99,7 +99,7 @@ fn test_l0_merkle_root() { let hash4 = adapter.hash_sha3_384(b"data4"); let hashes = vec![hash1, hash2, hash3, hash4]; - let root = adapter.merkle_root(&hashes).unwrap(); + let root = adapter.merkle_root(&hashes).expect("mainnet: handle error"); assert_eq!(root.len(), 48); } @@ -115,19 +115,19 @@ fn test_l0_sign_and_verify() { let message = b"This is a test message"; // 签名 - let signature = adapter.sign(&private_key, message).unwrap(); + let signature = adapter.sign(&private_key, message).expect("mainnet: handle error"); assert_eq!(signature.len(), 64); // 验证 - 应该成功 - assert!(adapter.verify(&public_key, message, &signature).unwrap()); + assert!(adapter.verify(&public_key, message, &signature).expect("mainnet: handle error")); // 验证错误的消息 - 应该失败 let wrong_message = b"This is a different message"; - assert!(!adapter.verify(&public_key, wrong_message, &signature).unwrap()); + assert!(!adapter.verify(&public_key, wrong_message, &signature).expect("mainnet: handle error")); // 验证错误的公钥 - 应该失败 let (_, wrong_public_key) = adapter.generate_keypair(); - assert!(!adapter.verify(&wrong_public_key, message, &signature).unwrap()); + assert!(!adapter.verify(&wrong_public_key, message, &signature).expect("mainnet: handle error")); } /// 测试L0原生层 - 编码和解码地址 @@ -137,13 +137,13 @@ fn test_l0_encode_decode_address() { let adapter = L0NativeAdapter::new(); let (_, public_key) = adapter.generate_keypair(); - let address = adapter.address_from_public_key(&public_key).unwrap(); + let address = adapter.address_from_public_key(&public_key).expect("mainnet: handle error"); // 编码 - let encoded = adapter.encode_address(&address).unwrap(); + let encoded = adapter.encode_address(&address).expect("mainnet: handle error"); // 解码 - let decoded = adapter.decode_address(&encoded).unwrap(); + let decoded = adapter.decode_address(&encoded).expect("mainnet: handle error"); // 应该相同 assert_eq!(address, decoded); @@ -159,10 +159,10 @@ fn test_l0_encode_decode_hash() { let hash = adapter.hash_sha3_384(data); // 编码 - let encoded = adapter.encode_hash(&hash).unwrap(); + let encoded = adapter.encode_hash(&hash).expect("mainnet: handle error"); // 解码 - let decoded = adapter.decode_hash(&encoded).unwrap(); + let decoded = adapter.decode_hash(&encoded).expect("mainnet: handle error"); // 应该相同 assert_eq!(hash, decoded); @@ -182,12 +182,12 @@ fn test_l1_gnacs_encode_decode() { AssetCategory::RealEstate, Jurisdiction::US, ComplianceLevel::High - ).unwrap(); + ).expect("mainnet: handle error"); assert!(!gnacs_code.is_empty()); // 解码 - let (category, jurisdiction, compliance) = adapter.decode_gnacs(&gnacs_code).unwrap(); + let (category, jurisdiction, compliance) = adapter.decode_gnacs(&gnacs_code).expect("mainnet: handle error"); // 验证 assert_eq!(category, AssetCategory::RealEstate); @@ -201,11 +201,11 @@ fn test_config_serialization() { let config = NACConfig::default(); // 序列化 - let json = serde_json::to_string(&config).unwrap(); + let json = serde_json::to_string(&config).expect("mainnet: handle error"); assert!(!json.is_empty()); // 反序列化 - let deserialized: NACConfig = serde_json::from_str(&json).unwrap(); + let deserialized: NACConfig = serde_json::from_str(&json).expect("mainnet: handle error"); // 验证 assert_eq!(config.l1.nvm_url, deserialized.l1.nvm_url); @@ -227,7 +227,7 @@ fn test_complete_workflow() { // 2. 生成密钥对 let (private_key, public_key) = l0.generate_keypair(); - let address = l0.address_from_public_key(&public_key).unwrap(); + let address = l0.address_from_public_key(&public_key).expect("mainnet: handle error"); // 3. 准备资产数据 let asset_data = b"Property at 123 Main St"; @@ -236,10 +236,10 @@ fn test_complete_workflow() { let asset_hash = l0.hash_sha3_384(asset_data); // 5. 签名 - let signature = l0.sign(&private_key, asset_data).unwrap(); + let signature = l0.sign(&private_key, asset_data).expect("mainnet: handle error"); // 6. 验证签名 - assert!(l0.verify(&public_key, asset_data, &signature).unwrap()); + assert!(l0.verify(&public_key, asset_data, &signature).expect("mainnet: handle error")); // 7. GNACS编码 let l1_config = L1Config::default(); @@ -248,7 +248,7 @@ fn test_complete_workflow() { AssetCategory::RealEstate, Jurisdiction::US, ComplianceLevel::High - ).unwrap(); + ).expect("mainnet: handle error"); // 8. 验证所有数据 assert_eq!(address.len(), 32); @@ -274,7 +274,7 @@ fn test_error_handling() { let invalid_address = vec![0u8; 16]; // 长度不对 let result = adapter.validate_address(&invalid_address); assert!(result.is_ok()); - assert!(!result.unwrap()); + assert!(!result.expect("mainnet: handle error")); } /// 测试并发安全性 @@ -291,7 +291,7 @@ async fn test_concurrent_operations() { let adapter_clone = Arc::clone(&adapter); let handle = tokio::spawn(async move { let (private_key, public_key) = adapter_clone.generate_keypair(); - let address = adapter_clone.address_from_public_key(&public_key).unwrap(); + let address = adapter_clone.address_from_public_key(&public_key).expect("mainnet: handle error"); (private_key, public_key, address) }); handles.push(handle); @@ -300,7 +300,7 @@ async fn test_concurrent_operations() { // 等待所有任务完成 let mut addresses = vec![]; for handle in handles { - let (_, _, address) = handle.await.unwrap(); + let (_, _, address) = handle.await.expect("mainnet: handle error"); addresses.push(address); } diff --git a/nac-serde/src/gnacs/mod.rs b/nac-serde/src/gnacs/mod.rs index 2839ebd..0e44caa 100644 --- a/nac-serde/src/gnacs/mod.rs +++ b/nac-serde/src/gnacs/mod.rs @@ -352,13 +352,13 @@ mod tests { #[test] fn test_gnacs_code_creation() { - let code = GnacsCode::new(0x123456789ABC).unwrap(); + let code = GnacsCode::new(0x123456789ABC).expect("mainnet: handle error"); assert_eq!(code.code(), 0x123456789ABC); } #[test] fn test_gnacs_code_from_parts() { - let code = GnacsCode::from_parts(0x001, 0x086, 0x001, 0x001).unwrap(); + let code = GnacsCode::from_parts(0x001, 0x086, 0x001, 0x001).expect("mainnet: handle error"); assert_eq!(code.category(), 0x001); assert_eq!(code.region(), 0x086); assert_eq!(code.industry(), 0x001); @@ -367,23 +367,23 @@ mod tests { #[test] fn test_gnacs_code_bytes() { - let code = GnacsCode::from_parts(0x001, 0x086, 0x001, 0x001).unwrap(); + let code = GnacsCode::from_parts(0x001, 0x086, 0x001, 0x001).expect("mainnet: handle error"); let bytes = code.to_bytes(); - let decoded = GnacsCode::from_bytes(&bytes).unwrap(); + let decoded = GnacsCode::from_bytes(&bytes).expect("mainnet: handle error"); assert_eq!(code, decoded); } #[test] fn test_gnacs_code_hex() { - let code = GnacsCode::from_parts(0x001, 0x086, 0x001, 0x001).unwrap(); + let code = GnacsCode::from_parts(0x001, 0x086, 0x001, 0x001).expect("mainnet: handle error"); let hex = code.to_hex(); - let decoded = GnacsCode::from_hex(&hex).unwrap(); + let decoded = GnacsCode::from_hex(&hex).expect("mainnet: handle error"); assert_eq!(code, decoded); } #[test] fn test_gnacs_encoder() { - let code = GnacsEncoder::encode("real_estate", "cn", "finance", "residential").unwrap(); + let code = GnacsEncoder::encode("real_estate", "cn", "finance", "residential").expect("mainnet: handle error"); assert_eq!(code.category(), 0x001); assert_eq!(code.region(), 0x086); assert_eq!(code.industry(), 0x001); @@ -391,8 +391,8 @@ mod tests { #[test] fn test_gnacs_decoder() { - let code = GnacsCode::from_parts(0x001, 0x086, 0x001, 0x001).unwrap(); - let info = GnacsDecoder::decode(&code).unwrap(); + let code = GnacsCode::from_parts(0x001, 0x086, 0x001, 0x001).expect("mainnet: handle error"); + let info = GnacsDecoder::decode(&code).expect("mainnet: handle error"); assert!(info.category.contains("Real Estate")); assert!(info.region.contains("China")); assert!(info.industry.contains("Finance")); @@ -400,16 +400,16 @@ mod tests { #[test] fn test_gnacs_validation() { - let code = GnacsCode::from_parts(0x001, 0x086, 0x001, 0x001).unwrap(); + let code = GnacsCode::from_parts(0x001, 0x086, 0x001, 0x001).expect("mainnet: handle error"); assert!(code.validate().is_ok()); - let invalid = GnacsCode::from_parts(0, 0x086, 0x001, 0x001).unwrap(); + let invalid = GnacsCode::from_parts(0, 0x086, 0x001, 0x001).expect("mainnet: handle error"); assert!(invalid.validate().is_err()); } #[test] fn test_gnacs_display() { - let code = GnacsCode::from_parts(0x001, 0x086, 0x001, 0x001).unwrap(); + let code = GnacsCode::from_parts(0x001, 0x086, 0x001, 0x001).expect("mainnet: handle error"); let display = format!("{}", code); assert!(display.contains("GNACS:")); assert!(display.contains("001")); diff --git a/nac-uca/src/lib.rs b/nac-uca/src/lib.rs index de75322..def99ea 100644 --- a/nac-uca/src/lib.rs +++ b/nac-uca/src/lib.rs @@ -332,10 +332,10 @@ mod tests { ); // 验证 - let is_valid = auditor.verify_action(&record_id).unwrap(); + let is_valid = auditor.verify_action(&record_id).expect("mainnet: handle error"); assert!(is_valid); - let record = auditor.get_record(&record_id).unwrap(); + let record = auditor.get_record(&record_id).expect("mainnet: handle error"); assert_eq!(record.status, AuditStatus::Confirmed); } @@ -359,7 +359,7 @@ mod tests { ); // 验证 - let is_valid = auditor.verify_action(&record_id).unwrap(); + let is_valid = auditor.verify_action(&record_id).expect("mainnet: handle error"); assert!(!is_valid); let stats = auditor.get_stats(); diff --git a/nac-udm/src/asset_dna/mod.rs b/nac-udm/src/asset_dna/mod.rs index e5cb947..f63472b 100644 --- a/nac-udm/src/asset_dna/mod.rs +++ b/nac-udm/src/asset_dna/mod.rs @@ -270,7 +270,7 @@ mod tests { fn test_dna_hash_hex_conversion() { let original = DNAHash::from_bytes([1u8; 48]); let hex = original.to_hex(); - let restored = DNAHash::from_hex(&hex).unwrap(); + let restored = DNAHash::from_hex(&hex).expect("FIX-006: unexpected None/Err"); assert_eq!(original, restored); } @@ -287,7 +287,7 @@ mod tests { }; let code_str = code.to_string(); - let restored = DNACode::from_string(&code_str).unwrap(); + let restored = DNACode::from_string(&code_str).expect("FIX-006: unexpected None/Err"); assert_eq!(code.prefix, restored.prefix); assert_eq!(code.version, restored.version); diff --git a/nac-udm/src/dividend_ai/ai_engine.rs b/nac-udm/src/dividend_ai/ai_engine.rs index 3ef4603..25b2258 100644 --- a/nac-udm/src/dividend_ai/ai_engine.rs +++ b/nac-udm/src/dividend_ai/ai_engine.rs @@ -117,7 +117,7 @@ mod tests { ); assert!(result.is_ok()); - let distribution = result.unwrap(); + let distribution = result.expect("FIX-006: unexpected None/Err"); assert_eq!(distribution.total_amount, 600000); assert_eq!(distribution.holders.len(), 3); } diff --git a/nac-udm/src/dividend_ai/distribution.rs b/nac-udm/src/dividend_ai/distribution.rs index eb56f2e..ec0a7f0 100644 --- a/nac-udm/src/dividend_ai/distribution.rs +++ b/nac-udm/src/dividend_ai/distribution.rs @@ -144,7 +144,7 @@ mod tests { // 领取分红 let claimed = contract.claim_dividend(holder1.clone()); assert!(claimed.is_ok()); - assert_eq!(claimed.unwrap(), 1000); + assert_eq!(claimed.expect("mainnet: handle error"), 1000); // 检查已领取 assert_eq!(contract.get_claimed_dividend(&holder1), 1000); diff --git a/nac-udm/src/dividend_ai/oracle.rs b/nac-udm/src/dividend_ai/oracle.rs index 8e33788..7b47289 100644 --- a/nac-udm/src/dividend_ai/oracle.rs +++ b/nac-udm/src/dividend_ai/oracle.rs @@ -116,7 +116,7 @@ mod tests { let result = oracle.fetch_dividend_data(Address::zero(), DataSourceType::Rent); assert!(result.is_ok()); - let data = result.unwrap(); + let data = result.expect("FIX-006: unexpected None/Err"); assert!(data.amount > 0); } @@ -151,6 +151,6 @@ mod tests { let result = oracle.aggregate_data(data_list); assert!(result.is_ok()); - assert_eq!(result.unwrap(), 1100); // 中位数 + assert_eq!(result.expect("mainnet: handle error"), 1100); // 中位数 } } diff --git a/nac-udm/src/l1_protocol/acc/acc1155.rs b/nac-udm/src/l1_protocol/acc/acc1155.rs index 200588d..4302d1b 100644 --- a/nac-udm/src/l1_protocol/acc/acc1155.rs +++ b/nac-udm/src/l1_protocol/acc/acc1155.rs @@ -428,7 +428,7 @@ impl ACC1155 { }); } - *self.holdings.get_mut(&token_id).unwrap().get_mut(from).unwrap() -= amount; + *self.holdings.get_mut(&token_id).expect("FIX-006: unexpected None/Err").get_mut(from).expect("FIX-006: unexpected None/Err") -= amount; *self.holdings.entry(token_id).or_default().entry(to.clone()).or_insert(0) += amount; self.pending_events.push(ACC1155Event::TransferSingle { @@ -496,7 +496,7 @@ impl ACC1155 { // 执行转账 for (token_id, &amount) in token_ids.iter().zip(amounts.iter()) { if amount > 0 { - *self.holdings.get_mut(token_id).unwrap().get_mut(from).unwrap() -= amount; + *self.holdings.get_mut(token_id).expect("FIX-006: unexpected None/Err").get_mut(from).expect("FIX-006: unexpected None/Err") -= amount; *self.holdings.entry(*token_id).or_default().entry(to.clone()).or_insert(0) += amount; } } @@ -605,7 +605,7 @@ impl ACC1155 { // 执行铸造 for (token_id, &amount) in token_ids.iter().zip(amounts.iter()) { if amount > 0 { - self.token_types.get_mut(token_id).unwrap().total_supply = + self.token_types.get_mut(token_id).expect("FIX-006: unexpected None/Err").total_supply = self.token_types[token_id].total_supply.saturating_add(amount); *self.holdings.entry(*token_id).or_default().entry(to.clone()).or_insert(0) += amount; } @@ -648,7 +648,7 @@ impl ACC1155 { }); } - *self.holdings.get_mut(&token_id).unwrap().get_mut(from).unwrap() -= amount; + *self.holdings.get_mut(&token_id).expect("FIX-006: unexpected None/Err").get_mut(from).expect("FIX-006: unexpected None/Err") -= amount; if let Some(info) = self.token_types.get_mut(&token_id) { info.total_supply = info.total_supply.saturating_sub(amount); } @@ -771,9 +771,9 @@ mod tests { "RWA Token".to_string(), "RWA".to_string(), "ipfs://...".to_string(), Some(1_000_000), "1.1.1.1.1.1".to_string(), receipt.clone(), ts.clone(), - ).unwrap(); + ).expect("FIX-006: unexpected None/Err"); - acc.mint(&owner, &owner, token_id, 500, receipt, ts).unwrap(); + acc.mint(&owner, &owner, token_id, 500, receipt, ts).expect("FIX-006: unexpected None/Err"); assert_eq!(acc.balance_of(&owner, &token_id), 500); } @@ -792,15 +792,15 @@ mod tests { &owner, tid, TokenType::Fungible, "T".to_string(), "T".to_string(), "".to_string(), None, "1.1.1.1.1.1".to_string(), receipt.clone(), ts.clone(), - ).unwrap(); - acc.mint(&owner, &owner, tid, 1000, receipt.clone(), ts.clone()).unwrap(); + ).expect("FIX-006: unexpected None/Err"); + acc.mint(&owner, &owner, tid, 1000, receipt.clone(), ts.clone()).expect("FIX-006: unexpected None/Err"); } acc.safe_batch_transfer_from( &owner, &owner, &receiver, vec![t1, t2], vec![300, 400], receipt, ts, - ).unwrap(); + ).expect("FIX-006: unexpected None/Err"); assert_eq!(acc.balance_of(&owner, &t1), 700); assert_eq!(acc.balance_of(&receiver, &t2), 400); diff --git a/nac-udm/src/l1_protocol/acc/acc1400/compliance.rs b/nac-udm/src/l1_protocol/acc/acc1400/compliance.rs index 0628acc..58be8f0 100644 --- a/nac-udm/src/l1_protocol/acc/acc1400/compliance.rs +++ b/nac-udm/src/l1_protocol/acc/acc1400/compliance.rs @@ -672,7 +672,7 @@ impl ComplianceSystem { fn current_timestamp() -> u64 { std::time::SystemTime::now() .duration_since(std::time::UNIX_EPOCH) - .unwrap() + .expect("FIX-006: unexpected None/Err") .as_secs() } } @@ -769,7 +769,7 @@ mod tests { false, "certifier1".to_string(), None, - ).unwrap(); + ).expect("FIX-006: unexpected None/Err"); system.set_investor_location( "investor1".to_string(), @@ -824,8 +824,8 @@ mod tests { system.update_holders(security_id, holders); // 生成持有人报告 - let report_id = system.generate_holder_report(&security_id, "admin".to_string()).unwrap(); - let report = system.get_report(&report_id).unwrap(); + let report_id = system.generate_holder_report(&security_id, "admin".to_string()).expect("FIX-006: unexpected None/Err"); + let report = system.get_report(&report_id).expect("FIX-006: unexpected None/Err"); assert_eq!(report.report_type, ReportType::HolderReport); // 生成投资者分类报告 @@ -837,10 +837,10 @@ mod tests { false, "certifier1".to_string(), None, - ).unwrap(); + ).expect("FIX-006: unexpected None/Err"); let report_id = system.generate_investor_classification_report("admin".to_string()); - let report = system.get_report(&report_id).unwrap(); + let report = system.get_report(&report_id).expect("FIX-006: unexpected None/Err"); assert_eq!(report.report_type, ReportType::InvestorClassificationReport); } } diff --git a/nac-udm/src/l1_protocol/acc/acc1400/dividend.rs b/nac-udm/src/l1_protocol/acc/acc1400/dividend.rs index 96f6305..63737a0 100644 --- a/nac-udm/src/l1_protocol/acc/acc1400/dividend.rs +++ b/nac-udm/src/l1_protocol/acc/acc1400/dividend.rs @@ -271,7 +271,7 @@ impl DividendEngine { fn current_timestamp() -> u64 { std::time::SystemTime::now() .duration_since(std::time::UNIX_EPOCH) - .unwrap() + .expect("FIX-006: unexpected None/Err") .as_secs() } } @@ -298,8 +298,8 @@ mod tests { let result = engine.declare_dividend(security_id, 10, 15, &holders); assert!(result.is_ok()); - let dividend_id = result.unwrap(); - let record = engine.get_dividend_record(÷nd_id).unwrap(); + let dividend_id = result.expect("FIX-006: unexpected None/Err"); + let record = engine.get_dividend_record(÷nd_id).expect("FIX-006: unexpected None/Err"); assert_eq!(record.amount_per_share, 10); assert_eq!(record.total_amount, 15000); // (1000 + 500) * 10 @@ -315,13 +315,13 @@ mod tests { let mut holders = HashMap::new(); holders.insert("investor1".to_string(), 1000); - let dividend_id = engine.declare_dividend(security_id, 10, 15, &holders).unwrap(); + let dividend_id = engine.declare_dividend(security_id, 10, 15, &holders).expect("FIX-006: unexpected None/Err"); // 分配股息 - engine.distribute_dividend(÷nd_id).unwrap(); + engine.distribute_dividend(÷nd_id).expect("FIX-006: unexpected None/Err"); // 领取股息 - let amount = engine.claim_dividend("investor1", ÷nd_id).unwrap(); + let amount = engine.claim_dividend("investor1", ÷nd_id).expect("FIX-006: unexpected None/Err"); // 税前: 1000 * 10 = 10000 // 税额: 10000 * 15% = 1500 @@ -341,8 +341,8 @@ mod tests { let mut holders = HashMap::new(); holders.insert("investor1".to_string(), 1000); - let dividend_id = engine.declare_dividend(security_id, 10, 15, &holders).unwrap(); - engine.distribute_dividend(÷nd_id).unwrap(); + let dividend_id = engine.declare_dividend(security_id, 10, 15, &holders).expect("FIX-006: unexpected None/Err"); + engine.distribute_dividend(÷nd_id).expect("FIX-006: unexpected None/Err"); let unclaimed = engine.get_unclaimed_dividends("investor1"); assert_eq!(unclaimed.len(), 1); @@ -352,7 +352,7 @@ mod tests { assert_eq!(total, 8500); // 领取后应该没有未领取股息 - engine.claim_dividend("investor1", ÷nd_id).unwrap(); + engine.claim_dividend("investor1", ÷nd_id).expect("FIX-006: unexpected None/Err"); let unclaimed = engine.get_unclaimed_dividends("investor1"); assert_eq!(unclaimed.len(), 0); } @@ -365,12 +365,12 @@ mod tests { let mut holders = HashMap::new(); holders.insert("investor1".to_string(), 1000); - let dividend_id = engine.declare_dividend(security_id, 10, 15, &holders).unwrap(); + let dividend_id = engine.declare_dividend(security_id, 10, 15, &holders).expect("FIX-006: unexpected None/Err"); // 取消分配 - engine.cancel_dividend(÷nd_id).unwrap(); + engine.cancel_dividend(÷nd_id).expect("FIX-006: unexpected None/Err"); - let record = engine.get_dividend_record(÷nd_id).unwrap(); + let record = engine.get_dividend_record(÷nd_id).expect("FIX-006: unexpected None/Err"); assert_eq!(record.status, DividendStatus::Cancelled); // 已取消的分配不能执行 @@ -387,14 +387,14 @@ mod tests { holders.insert("investor1".to_string(), 1000); // 第一次分配 - let div1 = engine.declare_dividend(security_id, 10, 15, &holders).unwrap(); - engine.distribute_dividend(&div1).unwrap(); - engine.claim_dividend("investor1", &div1).unwrap(); + let div1 = engine.declare_dividend(security_id, 10, 15, &holders).expect("FIX-006: unexpected None/Err"); + engine.distribute_dividend(&div1).expect("FIX-006: unexpected None/Err"); + engine.claim_dividend("investor1", &div1).expect("FIX-006: unexpected None/Err"); // 第二次分配 - let div2 = engine.declare_dividend(security_id, 20, 15, &holders).unwrap(); - engine.distribute_dividend(&div2).unwrap(); - engine.claim_dividend("investor1", &div2).unwrap(); + let div2 = engine.declare_dividend(security_id, 20, 15, &holders).expect("FIX-006: unexpected None/Err"); + engine.distribute_dividend(&div2).expect("FIX-006: unexpected None/Err"); + engine.claim_dividend("investor1", &div2).expect("FIX-006: unexpected None/Err"); let (gross, tax, net) = engine.calculate_total_dividend_income("investor1"); diff --git a/nac-udm/src/l1_protocol/acc/acc1400/mod.rs b/nac-udm/src/l1_protocol/acc/acc1400/mod.rs index 400c4fb..baa56bc 100644 --- a/nac-udm/src/l1_protocol/acc/acc1400/mod.rs +++ b/nac-udm/src/l1_protocol/acc/acc1400/mod.rs @@ -535,18 +535,18 @@ mod tests { common_stock_gnacs, PartitionType::CommonStock, ) - .unwrap(); + .expect("FIX-006: unexpected None/Err"); // 发行证券 acc1400 .issue_security(&security_id, "investor1", 10000) - .unwrap(); + .expect("FIX-006: unexpected None/Err"); // 检查余额 assert_eq!( acc1400 .balance_of_security(&security_id, "investor1") - .unwrap(), + .expect("FIX-006: unexpected None/Err"), 10000 ); } @@ -571,7 +571,7 @@ mod tests { gnacs, PartitionType::CommonStock, ) - .unwrap(); + .expect("FIX-006: unexpected None/Err"); // 设置白名单限制 acc1400.add_transfer_restriction( @@ -582,7 +582,7 @@ mod tests { // 发行证券 acc1400 .issue_security(&security_id, "investor1", 5000) - .unwrap(); + .expect("FIX-006: unexpected None/Err"); // 添加到白名单 acc1400 @@ -592,7 +592,7 @@ mod tests { None, None, ) - .unwrap(); + .expect("FIX-006: unexpected None/Err"); acc1400 .add_to_whitelist( @@ -601,7 +601,7 @@ mod tests { None, None, ) - .unwrap(); + .expect("FIX-006: unexpected None/Err"); // 现在转让应该成功 let result = acc1400.transfer_security("investor1", "investor2", 2000, &security_id); @@ -628,7 +628,7 @@ mod tests { gnacs, PartitionType::CommonStock, ) - .unwrap(); + .expect("FIX-006: unexpected None/Err"); // 设置投票权 acc1400.set_voting_rights("investor1".to_string(), 1000, 1); @@ -637,7 +637,7 @@ mod tests { // 创建提案 let current_time = std::time::SystemTime::now() .duration_since(std::time::UNIX_EPOCH) - .unwrap() + .expect("FIX-006: unexpected None/Err") .as_secs(); let proposal_id = acc1400 @@ -652,16 +652,16 @@ mod tests { 50, 66, ) - .unwrap(); + .expect("FIX-006: unexpected None/Err"); // 激活并投票 - acc1400.activate_proposal(&proposal_id).unwrap(); + acc1400.activate_proposal(&proposal_id).expect("FIX-006: unexpected None/Err"); acc1400 .cast_vote(&proposal_id, "investor1", voting::VoteOption::For) - .unwrap(); + .expect("FIX-006: unexpected None/Err"); // 检查结果 - let result = acc1400.calculate_voting_result(&proposal_id).unwrap(); + let result = acc1400.calculate_voting_result(&proposal_id).expect("FIX-006: unexpected None/Err"); assert_eq!(result.votes_for, 1000); } } diff --git a/nac-udm/src/l1_protocol/acc/acc1400/transfer_restrictions.rs b/nac-udm/src/l1_protocol/acc/acc1400/transfer_restrictions.rs index 6c83d99..f754575 100644 --- a/nac-udm/src/l1_protocol/acc/acc1400/transfer_restrictions.rs +++ b/nac-udm/src/l1_protocol/acc/acc1400/transfer_restrictions.rs @@ -599,7 +599,7 @@ impl TransferRestrictionSystem { fn current_timestamp() -> u64 { std::time::SystemTime::now() .duration_since(std::time::UNIX_EPOCH) - .unwrap() + .expect("FIX-006: unexpected None/Err") .as_secs() } @@ -645,12 +645,12 @@ mod tests { "admin".to_string(), None, Some("Approved investor".to_string()), - ).unwrap(); + ).expect("FIX-006: unexpected None/Err"); assert!(system.is_whitelisted("investor1")); assert!(!system.is_whitelisted("investor2")); - system.remove_from_whitelist("investor1").unwrap(); + system.remove_from_whitelist("investor1").expect("FIX-006: unexpected None/Err"); assert!(!system.is_whitelisted("investor1")); } @@ -667,7 +667,7 @@ mod tests { future_time, "Vesting period".to_string(), false, - ).unwrap(); + ).expect("FIX-006: unexpected None/Err"); let locked = system.get_locked_amount("investor1", &security_id); assert_eq!(locked, 1000); @@ -695,13 +695,13 @@ mod tests { "admin".to_string(), None, None, - ).unwrap(); + ).expect("FIX-006: unexpected None/Err"); system.add_to_whitelist( "investor2".to_string(), "admin".to_string(), None, None, - ).unwrap(); + ).expect("FIX-006: unexpected None/Err"); // 现在应该允许 let result = system.check_transfer("investor1", "investor2", 100, &security_id, 1000); diff --git a/nac-udm/src/l1_protocol/acc/acc1400/voting.rs b/nac-udm/src/l1_protocol/acc/acc1400/voting.rs index 6e5e105..887d783 100644 --- a/nac-udm/src/l1_protocol/acc/acc1400/voting.rs +++ b/nac-udm/src/l1_protocol/acc/acc1400/voting.rs @@ -420,7 +420,7 @@ impl VotingSystem { }; // 检查是否已投票 - let votes = self.votes.get(proposal_id).unwrap(); + let votes = self.votes.get(proposal_id).expect("key exists in map"); if votes.iter().any(|v| v.voter == actual_voter) { return Err("Already voted on this proposal".to_string()); } @@ -453,7 +453,7 @@ impl VotingSystem { }; // 添加投票记录 - self.votes.get_mut(proposal_id).unwrap().push(vote_record); + self.votes.get_mut(proposal_id).expect("FIX-006: unexpected None/Err").push(vote_record); Ok(()) } @@ -541,7 +541,7 @@ impl VotingSystem { let result = self.calculate_result(proposal_id)?; // 更新提案状态 - let proposal = self.proposals.get_mut(proposal_id).unwrap(); + let proposal = self.proposals.get_mut(proposal_id).expect("FIX-006: unexpected None/Err"); proposal.status = if result.passed { ProposalStatus::Passed } else { @@ -610,7 +610,7 @@ impl VotingSystem { fn current_timestamp() -> u64 { std::time::SystemTime::now() .duration_since(std::time::UNIX_EPOCH) - .unwrap() + .expect("FIX-006: unexpected None/Err") .as_secs() } } @@ -644,8 +644,8 @@ mod tests { ); assert!(result.is_ok()); - let proposal_id = result.unwrap(); - let proposal = system.get_proposal(&proposal_id).unwrap(); + let proposal_id = result.expect("FIX-006: unexpected None/Err"); + let proposal = system.get_proposal(&proposal_id).expect("FIX-006: unexpected None/Err"); assert_eq!(proposal.title, "Test Proposal"); assert_eq!(proposal.status, ProposalStatus::Draft); } @@ -671,17 +671,17 @@ mod tests { current_time + 1000, 50, 66, - ).unwrap(); + ).expect("FIX-006: unexpected None/Err"); // 激活提案 - system.activate_proposal(&proposal_id).unwrap(); + system.activate_proposal(&proposal_id).expect("FIX-006: unexpected None/Err"); // 投票 - system.cast_vote(&proposal_id, "voter1", VoteOption::For, None).unwrap(); - system.cast_vote(&proposal_id, "voter2", VoteOption::Against, None).unwrap(); + system.cast_vote(&proposal_id, "voter1", VoteOption::For, None).expect("FIX-006: unexpected None/Err"); + system.cast_vote(&proposal_id, "voter2", VoteOption::Against, None).expect("FIX-006: unexpected None/Err"); // 检查投票记录 - let votes = system.get_votes(&proposal_id).unwrap(); + let votes = system.get_votes(&proposal_id).expect("FIX-006: unexpected None/Err"); assert_eq!(votes.len(), 2); assert_eq!(votes[0].voting_power, 1000); // 1000 * 1 assert_eq!(votes[1].voting_power, 1000); // 500 * 2 @@ -707,16 +707,16 @@ mod tests { current_time + 1000, 50, 66, - ).unwrap(); + ).expect("FIX-006: unexpected None/Err"); - system.activate_proposal(&proposal_id).unwrap(); + system.activate_proposal(&proposal_id).expect("FIX-006: unexpected None/Err"); // 投票:1000赞成,500反对,300弃权 - system.cast_vote(&proposal_id, "voter1", VoteOption::For, None).unwrap(); - system.cast_vote(&proposal_id, "voter2", VoteOption::Against, None).unwrap(); - system.cast_vote(&proposal_id, "voter3", VoteOption::Abstain, None).unwrap(); + system.cast_vote(&proposal_id, "voter1", VoteOption::For, None).expect("FIX-006: unexpected None/Err"); + system.cast_vote(&proposal_id, "voter2", VoteOption::Against, None).expect("FIX-006: unexpected None/Err"); + system.cast_vote(&proposal_id, "voter3", VoteOption::Abstain, None).expect("FIX-006: unexpected None/Err"); - let result = system.calculate_result(&proposal_id).unwrap(); + let result = system.calculate_result(&proposal_id).expect("FIX-006: unexpected None/Err"); assert_eq!(result.votes_for, 1000); assert_eq!(result.votes_against, 500); @@ -746,7 +746,7 @@ mod tests { current_time + 1000, 50, 50, - ).unwrap(); + ).expect("FIX-006: unexpected None/Err"); // 授权代理 system.authorize_proxy( @@ -755,14 +755,14 @@ mod tests { Some(proposal_id.clone()), current_time, current_time + 2000, - ).unwrap(); + ).expect("FIX-006: unexpected None/Err"); - system.activate_proposal(&proposal_id).unwrap(); + system.activate_proposal(&proposal_id).expect("FIX-006: unexpected None/Err"); // 代理投票 - system.cast_vote(&proposal_id, "proxy1", VoteOption::For, Some("principal1")).unwrap(); + system.cast_vote(&proposal_id, "proxy1", VoteOption::For, Some("principal1")).expect("FIX-006: unexpected None/Err"); - let votes = system.get_votes(&proposal_id).unwrap(); + let votes = system.get_votes(&proposal_id).expect("FIX-006: unexpected None/Err"); assert_eq!(votes.len(), 1); assert_eq!(votes[0].voter, "principal1"); assert!(votes[0].is_proxy); @@ -787,19 +787,19 @@ mod tests { current_time + 1000, 50, 50, - ).unwrap(); + ).expect("FIX-006: unexpected None/Err"); - system.activate_proposal(&proposal_id).unwrap(); + system.activate_proposal(&proposal_id).expect("FIX-006: unexpected None/Err"); // 限制投票权 - system.restrict_voting("voter1", "Compliance issue".to_string()).unwrap(); + system.restrict_voting("voter1", "Compliance issue".to_string()).expect("FIX-006: unexpected None/Err"); // 尝试投票应该失败 let result = system.cast_vote(&proposal_id, "voter1", VoteOption::For, None); assert!(result.is_err()); // 恢复投票权 - system.unrestrict_voting("voter1").unwrap(); + system.unrestrict_voting("voter1").expect("FIX-006: unexpected None/Err"); // 现在投票应该成功 let result = system.cast_vote(&proposal_id, "voter1", VoteOption::For, None); diff --git a/nac-udm/src/l1_protocol/acc/acc1410/batch_operations.rs b/nac-udm/src/l1_protocol/acc/acc1410/batch_operations.rs index d9bafe7..80703fa 100644 --- a/nac-udm/src/l1_protocol/acc/acc1410/batch_operations.rs +++ b/nac-udm/src/l1_protocol/acc/acc1410/batch_operations.rs @@ -451,7 +451,7 @@ impl BatchOperationsManager { use std::time::{SystemTime, UNIX_EPOCH}; SystemTime::now() .duration_since(UNIX_EPOCH) - .unwrap() + .expect("FIX-006: unexpected None/Err") .as_secs() } } @@ -536,7 +536,7 @@ mod tests { operator: None, }; - let result = manager.execute_batch_transfer(&request).unwrap(); + let result = manager.execute_batch_transfer(&request).expect("FIX-006: unexpected None/Err"); assert_eq!(result.total_operations, 3); assert_eq!(result.successful_operations, 3); assert_eq!(result.total_amount, 600); @@ -554,7 +554,7 @@ mod tests { partition_id: [1u8; 32], }; - let result = manager.execute_batch_mint(&request).unwrap(); + let result = manager.execute_batch_mint(&request).expect("FIX-006: unexpected None/Err"); assert_eq!(result.total_operations, 2); assert_eq!(result.successful_operations, 2); assert_eq!(result.total_amount, 3000); @@ -572,7 +572,7 @@ mod tests { partition_id: [1u8; 32], }; - let result = manager.execute_batch_burn(&request).unwrap(); + let result = manager.execute_batch_burn(&request).expect("FIX-006: unexpected None/Err"); assert_eq!(result.total_operations, 2); assert_eq!(result.successful_operations, 2); assert_eq!(result.total_amount, 800); @@ -609,13 +609,13 @@ mod tests { partition_id: [1u8; 32], operator: None, }; - manager.execute_batch_transfer(&transfer_request).unwrap(); + manager.execute_batch_transfer(&transfer_request).expect("FIX-006: unexpected None/Err"); let mint_request = BatchMintRequest { recipients: vec![("user3".to_string(), 200)], partition_id: [1u8; 32], }; - manager.execute_batch_mint(&mint_request).unwrap(); + manager.execute_batch_mint(&mint_request).expect("FIX-006: unexpected None/Err"); let history = manager.get_operation_history(); assert_eq!(history.len(), 2); @@ -633,7 +633,7 @@ mod tests { partition_id: [1u8; 32], operator: None, }; - manager.execute_batch_transfer(&request).unwrap(); + manager.execute_batch_transfer(&request).expect("FIX-006: unexpected None/Err"); } let stats = manager.get_operation_statistics(); diff --git a/nac-udm/src/l1_protocol/acc/acc1410/cross_partition_transfer.rs b/nac-udm/src/l1_protocol/acc/acc1410/cross_partition_transfer.rs index 1ec4a8f..23df454 100644 --- a/nac-udm/src/l1_protocol/acc/acc1410/cross_partition_transfer.rs +++ b/nac-udm/src/l1_protocol/acc/acc1410/cross_partition_transfer.rs @@ -325,7 +325,7 @@ impl CrossPartitionTransferManager { use std::time::{SystemTime, UNIX_EPOCH}; SystemTime::now() .duration_since(UNIX_EPOCH) - .unwrap() + .expect("FIX-006: unexpected None/Err") .as_secs() } @@ -396,15 +396,15 @@ mod tests { impl TransferListener for TestListener { fn on_transfer_started(&self, _record: &CrossPartitionTransferRecord) { - *self.started_count.lock().unwrap() += 1; + *self.started_count.lock().expect("lock not poisoned") += 1; } fn on_transfer_completed(&self, _record: &CrossPartitionTransferRecord) { - *self.completed_count.lock().unwrap() += 1; + *self.completed_count.lock().expect("lock not poisoned") += 1; } fn on_transfer_failed(&self, _record: &CrossPartitionTransferRecord, _reason: &str) { - *self.failed_count.lock().unwrap() += 1; + *self.failed_count.lock().expect("lock not poisoned") += 1; } } @@ -423,7 +423,7 @@ mod tests { }; let transfer_id = manager.create_transfer_record(&request); - let record = manager.get_transfer_record(&transfer_id).unwrap(); + let record = manager.get_transfer_record(&transfer_id).expect("FIX-006: unexpected None/Err"); assert_eq!(record.from, "user1"); assert_eq!(record.to, "user2"); @@ -447,9 +447,9 @@ mod tests { let transfer_id = manager.create_transfer_record(&request); - manager.update_transfer_status(&transfer_id, CrossPartitionTransferStatus::Completed, None).unwrap(); + manager.update_transfer_status(&transfer_id, CrossPartitionTransferStatus::Completed, None).expect("FIX-006: unexpected None/Err"); - let record = manager.get_transfer_record(&transfer_id).unwrap(); + let record = manager.get_transfer_record(&transfer_id).expect("FIX-006: unexpected None/Err"); assert_eq!(record.status, CrossPartitionTransferStatus::Completed); } @@ -531,10 +531,10 @@ mod tests { }; let transfer_id = manager.create_transfer_record(&request); - assert_eq!(*started_count.lock().unwrap(), 1); + assert_eq!(*started_count.lock().expect("mainnet: handle error"), 1); - manager.update_transfer_status(&transfer_id, CrossPartitionTransferStatus::Completed, None).unwrap(); - assert_eq!(*completed_count.lock().unwrap(), 1); + manager.update_transfer_status(&transfer_id, CrossPartitionTransferStatus::Completed, None).expect("FIX-006: unexpected None/Err"); + assert_eq!(*completed_count.lock().expect("mainnet: handle error"), 1); } #[test] @@ -576,9 +576,9 @@ mod tests { let transfer_id = manager.create_transfer_record(&request); // 取消转账 - manager.cancel_transfer(&transfer_id).unwrap(); + manager.cancel_transfer(&transfer_id).expect("FIX-006: unexpected None/Err"); - let record = manager.get_transfer_record(&transfer_id).unwrap(); + let record = manager.get_transfer_record(&transfer_id).expect("FIX-006: unexpected None/Err"); assert_eq!(record.status, CrossPartitionTransferStatus::Cancelled); // 尝试再次取消(应该失败) @@ -604,7 +604,7 @@ mod tests { // 完成一半的转账 if i < 5 { - manager.update_transfer_status(&transfer_id, CrossPartitionTransferStatus::Completed, None).unwrap(); + manager.update_transfer_status(&transfer_id, CrossPartitionTransferStatus::Completed, None).expect("FIX-006: unexpected None/Err"); } } diff --git a/nac-udm/src/l1_protocol/acc/acc1410/events.rs b/nac-udm/src/l1_protocol/acc/acc1410/events.rs index aa9460f..94d7a7d 100644 --- a/nac-udm/src/l1_protocol/acc/acc1410/events.rs +++ b/nac-udm/src/l1_protocol/acc/acc1410/events.rs @@ -361,7 +361,7 @@ impl EventManager { use std::time::{SystemTime, UNIX_EPOCH}; SystemTime::now() .duration_since(UNIX_EPOCH) - .unwrap() + .expect("FIX-006: unexpected None/Err") .as_secs() } } diff --git a/nac-udm/src/l1_protocol/acc/acc1410/mod.rs b/nac-udm/src/l1_protocol/acc/acc1410/mod.rs index 433fdcd..d5d9726 100644 --- a/nac-udm/src/l1_protocol/acc/acc1410/mod.rs +++ b/nac-udm/src/l1_protocol/acc/acc1410/mod.rs @@ -35,13 +35,13 @@ //! "Common Stock".to_string(), //! extended_gnacs, //! PartitionType::CommonStock, -//! ).unwrap(); +//! ).expect("FIX-006: unexpected None/Err"); //! //! // 发行代币到分区 -//! acc1410.issue_to_partition(&partition_id, "user1", 1000).unwrap(); +//! acc1410.issue_to_partition(&partition_id, "user1", 1000).expect("FIX-006: unexpected None/Err"); //! //! // 分区间转账 -//! acc1410.transfer_by_partition("user1", "user2", 300, &partition_id).unwrap(); +//! acc1410.transfer_by_partition("user1", "user2", 300, &partition_id).expect("FIX-006: unexpected None/Err"); //! ``` pub mod error; @@ -296,7 +296,7 @@ mod tests { common_stock_gnacs, PartitionType::CommonStock, ) - .unwrap(); + .expect("FIX-006: unexpected None/Err"); // 创建优先股分区 let preferred_stock_gnacs = ExtendedGNACS { @@ -315,45 +315,45 @@ mod tests { preferred_stock_gnacs, PartitionType::PreferredStock, ) - .unwrap(); + .expect("FIX-006: unexpected None/Err"); // 发行代币 acc1410 .issue_to_partition(&common_partition, "user1", 1000) - .unwrap(); + .expect("FIX-006: unexpected None/Err"); acc1410 .issue_to_partition(&preferred_partition, "user1", 500) - .unwrap(); + .expect("FIX-006: unexpected None/Err"); // 检查余额 assert_eq!( acc1410 .balance_of_by_partition(&common_partition, "user1") - .unwrap(), + .expect("FIX-006: unexpected None/Err"), 1000 ); assert_eq!( acc1410 .balance_of_by_partition(&preferred_partition, "user1") - .unwrap(), + .expect("FIX-006: unexpected None/Err"), 500 ); // 转账 acc1410 .transfer_by_partition("user1", "user2", 300, &common_partition) - .unwrap(); + .expect("FIX-006: unexpected None/Err"); assert_eq!( acc1410 .balance_of_by_partition(&common_partition, "user1") - .unwrap(), + .expect("FIX-006: unexpected None/Err"), 700 ); assert_eq!( acc1410 .balance_of_by_partition(&common_partition, "user2") - .unwrap(), + .expect("FIX-006: unexpected None/Err"), 300 ); @@ -363,18 +363,18 @@ mod tests { // 操作员代理转账 acc1410 .operator_transfer_by_partition("operator1", "user1", "user3", 200, &common_partition) - .unwrap(); + .expect("FIX-006: unexpected None/Err"); assert_eq!( acc1410 .balance_of_by_partition(&common_partition, "user1") - .unwrap(), + .expect("FIX-006: unexpected None/Err"), 500 ); assert_eq!( acc1410 .balance_of_by_partition(&common_partition, "user3") - .unwrap(), + .expect("FIX-006: unexpected None/Err"), 200 ); @@ -410,9 +410,9 @@ mod tests { let partition_id = acc1410 .create_partition(name.to_string(), gnacs, partition_type) - .unwrap(); + .expect("FIX-006: unexpected None/Err"); - let info = acc1410.get_partition_info(&partition_id).unwrap(); + let info = acc1410.get_partition_info(&partition_id).expect("FIX-006: unexpected None/Err"); assert_eq!(info.partition_type, partition_type); assert_eq!(info.name, name); } @@ -445,7 +445,7 @@ mod tests { let full_encoded = extended_gnacs.encode(); assert_eq!(full_encoded.len(), 8); - let full_decoded = ExtendedGNACS::decode(&full_encoded).unwrap(); + let full_decoded = ExtendedGNACS::decode(&full_encoded).expect("FIX-006: unexpected None/Err"); assert_eq!(full_decoded.base_gnacs, vec![0x94, 0x01, 0x00, 0x04, 0x02, 0x01]); assert_eq!(full_decoded.extension.partition_type, 0x01); } diff --git a/nac-udm/src/l1_protocol/acc/acc1410/optimization.rs b/nac-udm/src/l1_protocol/acc/acc1410/optimization.rs index 7952a8d..e4fb50f 100644 --- a/nac-udm/src/l1_protocol/acc/acc1410/optimization.rs +++ b/nac-udm/src/l1_protocol/acc/acc1410/optimization.rs @@ -43,13 +43,13 @@ impl StorageOptimizer { /// 从缓存获取值 pub fn get(&self, key: &str) -> Option> { - let mut cache = self.cache.write().unwrap(); + let mut cache = self.cache.write().expect("rwlock not poisoned"); if let Some(cached) = cache.get_mut(key) { // 检查是否过期 if cached.expiry > Self::current_timestamp() { cached.access_count += 1; - *self.cache_hits.lock().unwrap() += 1; + *self.cache_hits.lock().expect("lock not poisoned") += 1; return Some(cached.value.clone()); } else { // 过期,移除 @@ -57,13 +57,13 @@ impl StorageOptimizer { } } - *self.cache_misses.lock().unwrap() += 1; + *self.cache_misses.lock().expect("lock not poisoned") += 1; None } /// 设置缓存值 pub fn set(&self, key: String, value: Vec, ttl: u64) { - let mut cache = self.cache.write().unwrap(); + let mut cache = self.cache.write().expect("rwlock not poisoned"); // 如果缓存已满,移除最少使用的项 if cache.len() >= self.max_cache_size { @@ -92,13 +92,13 @@ impl StorageOptimizer { /// 清空缓存 pub fn clear(&self) { - self.cache.write().unwrap().clear(); + self.cache.write().expect("rwlock not poisoned").clear(); } /// 获取缓存统计 pub fn get_cache_stats(&self) -> CacheStatistics { - let hits = *self.cache_hits.lock().unwrap(); - let misses = *self.cache_misses.lock().unwrap(); + let hits = *self.cache_hits.lock().expect("lock not poisoned"); + let misses = *self.cache_misses.lock().expect("lock not poisoned"); let total = hits + misses; let hit_rate = if total > 0 { (hits as f64 / total as f64) * 100.0 @@ -107,7 +107,7 @@ impl StorageOptimizer { }; CacheStatistics { - cache_size: self.cache.read().unwrap().len(), + cache_size: self.cache.read().expect("rwlock not poisoned").len(), max_cache_size: self.max_cache_size, cache_hits: hits, cache_misses: misses, @@ -120,7 +120,7 @@ impl StorageOptimizer { use std::time::{SystemTime, UNIX_EPOCH}; SystemTime::now() .duration_since(UNIX_EPOCH) - .unwrap() + .expect("FIX-006: unexpected None/Err") .as_secs() } } @@ -173,7 +173,7 @@ impl ComputationOptimizer { { // 检查缓存 { - let cache = self.result_cache.read().unwrap(); + let cache = self.result_cache.read().expect("rwlock not poisoned"); if let Some(cached) = cache.get(key) { return cached.result.clone(); } @@ -186,7 +186,7 @@ impl ComputationOptimizer { // 缓存结果 { - let mut cache = self.result_cache.write().unwrap(); + let mut cache = self.result_cache.write().expect("rwlock not poisoned"); cache.insert( key.to_string(), ComputationResult { @@ -201,12 +201,12 @@ impl ComputationOptimizer { /// 清空计算缓存 pub fn clear(&self) { - self.result_cache.write().unwrap().clear(); + self.result_cache.write().expect("rwlock not poisoned").clear(); } /// 获取缓存中指定键的计算耗时(毫秒) pub fn get_computation_time(&self, key: &str) -> Option { - let cache = self.result_cache.read().unwrap(); + let cache = self.result_cache.read().expect("rwlock not poisoned"); cache.get(key).map(|r| r.computation_time_ms) } } @@ -262,13 +262,13 @@ impl GasOptimizer { /// 记录Gas使用 pub fn record_gas_usage(&self, operation: String, gas_used: u64) { - let mut usage = self.gas_usage.lock().unwrap(); + let mut usage = self.gas_usage.lock().expect("lock not poisoned"); *usage.entry(operation).or_insert(0) += gas_used; } /// 获取Gas使用统计 pub fn get_gas_statistics(&self) -> GasStatistics { - let usage = self.gas_usage.lock().unwrap(); + let usage = self.gas_usage.lock().expect("lock not poisoned"); let total_gas = usage.values().sum(); let total_cost = total_gas * self.gas_price; @@ -283,7 +283,7 @@ impl GasOptimizer { /// 优化建议 pub fn get_optimization_suggestions(&self) -> Vec { let mut suggestions = Vec::new(); - let usage = self.gas_usage.lock().unwrap(); + let usage = self.gas_usage.lock().expect("lock not poisoned"); // 检查批量操作使用情况 let batch_operations = ["batch_transfer", "batch_mint", "batch_burn"]; @@ -362,7 +362,7 @@ impl ConcurrentProcessor { let handle = thread::spawn(move || { for item in chunk { let result = processor(item); - tx.send(result).unwrap(); + tx.send(result).expect("FIX-006: unexpected None/Err"); } }); @@ -373,7 +373,7 @@ impl ConcurrentProcessor { // 等待所有线程完成 for handle in handles { - handle.join().unwrap(); + handle.join().expect("FIX-006: unexpected None/Err"); } // 收集结果 diff --git a/nac-udm/src/l1_protocol/acc/acc1410/partition.rs b/nac-udm/src/l1_protocol/acc/acc1410/partition.rs index 5fc39e1..1f9b717 100644 --- a/nac-udm/src/l1_protocol/acc/acc1410/partition.rs +++ b/nac-udm/src/l1_protocol/acc/acc1410/partition.rs @@ -185,7 +185,7 @@ impl PartitionManager { fn current_timestamp() -> u64 { std::time::SystemTime::now() .duration_since(std::time::UNIX_EPOCH) - .unwrap() + .expect("FIX-006: unexpected None/Err") .as_secs() } } diff --git a/nac-udm/src/l1_protocol/acc/acc1410/transfer.rs b/nac-udm/src/l1_protocol/acc/acc1410/transfer.rs index 98b9889..c7bd584 100644 --- a/nac-udm/src/l1_protocol/acc/acc1410/transfer.rs +++ b/nac-udm/src/l1_protocol/acc/acc1410/transfer.rs @@ -276,7 +276,7 @@ impl TransferManager { fn current_timestamp() -> u64 { std::time::SystemTime::now() .duration_since(std::time::UNIX_EPOCH) - .unwrap() + .expect("FIX-006: unexpected None/Err") .as_secs() } } @@ -303,7 +303,7 @@ mod tests { extended_gnacs, PartitionType::CommonStock, ) - .unwrap() + .expect("FIX-006: unexpected None/Err") } #[test] @@ -339,28 +339,28 @@ mod tests { let partition_id = create_test_partition(&mut partition_manager); // 初始化余额 - partition_manager.add_balance(&partition_id, "user1", 1000).unwrap(); + partition_manager.add_balance(&partition_id, "user1", 1000).expect("FIX-006: unexpected None/Err"); let mut transfer_manager = TransferManager::new(partition_manager); // 执行转账 let result = transfer_manager .transfer_by_partition("user1", "user2", 300, &partition_id) - .unwrap(); + .expect("FIX-006: unexpected None/Err"); assert_eq!(result.status, TransferStatus::Success); assert_eq!( transfer_manager .partition_manager() .balance_of_by_partition(&partition_id, "user1") - .unwrap(), + .expect("FIX-006: unexpected None/Err"), 700 ); assert_eq!( transfer_manager .partition_manager() .balance_of_by_partition(&partition_id, "user2") - .unwrap(), + .expect("FIX-006: unexpected None/Err"), 300 ); } @@ -370,7 +370,7 @@ mod tests { let mut partition_manager = PartitionManager::new(); let partition_id = create_test_partition(&mut partition_manager); - partition_manager.add_balance(&partition_id, "user1", 1000).unwrap(); + partition_manager.add_balance(&partition_id, "user1", 1000).expect("FIX-006: unexpected None/Err"); let mut transfer_manager = TransferManager::new(partition_manager); @@ -382,14 +382,14 @@ mod tests { // 操作员代理转账 let result = transfer_manager .operator_transfer_by_partition("operator1", "user1", "user2", 200, &partition_id) - .unwrap(); + .expect("FIX-006: unexpected None/Err"); assert_eq!(result.status, TransferStatus::Success); assert_eq!( transfer_manager .partition_manager() .balance_of_by_partition(&partition_id, "user1") - .unwrap(), + .expect("FIX-006: unexpected None/Err"), 800 ); } @@ -399,7 +399,7 @@ mod tests { let mut partition_manager = PartitionManager::new(); let partition_id = create_test_partition(&mut partition_manager); - partition_manager.add_balance(&partition_id, "user1", 1000).unwrap(); + partition_manager.add_balance(&partition_id, "user1", 1000).expect("FIX-006: unexpected None/Err"); let mut transfer_manager = TransferManager::new(partition_manager); @@ -416,7 +416,7 @@ mod tests { let mut partition_manager = PartitionManager::new(); let partition_id = create_test_partition(&mut partition_manager); - partition_manager.add_balance(&partition_id, "user1", 1000).unwrap(); + partition_manager.add_balance(&partition_id, "user1", 1000).expect("FIX-006: unexpected None/Err"); let mut transfer_manager = TransferManager::new(partition_manager); diff --git a/nac-udm/src/l1_protocol/acc/acc1410/types.rs b/nac-udm/src/l1_protocol/acc/acc1410/types.rs index 9f6c5d9..7c5a050 100644 --- a/nac-udm/src/l1_protocol/acc/acc1410/types.rs +++ b/nac-udm/src/l1_protocol/acc/acc1410/types.rs @@ -263,7 +263,7 @@ mod tests { let encoded = extended.encode(); assert_eq!(encoded.len(), 8); - let decoded = ExtendedGNACS::decode(&encoded).unwrap(); + let decoded = ExtendedGNACS::decode(&encoded).expect("FIX-006: unexpected None/Err"); assert_eq!(decoded.base_gnacs, base_gnacs); } diff --git a/nac-udm/src/l1_protocol/acc/acc1594/mod.rs b/nac-udm/src/l1_protocol/acc/acc1594/mod.rs index 8709287..c57f4f0 100644 --- a/nac-udm/src/l1_protocol/acc/acc1594/mod.rs +++ b/nac-udm/src/l1_protocol/acc/acc1594/mod.rs @@ -441,7 +441,7 @@ impl Acc1594 { fn current_timestamp() -> u64 { std::time::SystemTime::now() .duration_since(std::time::UNIX_EPOCH) - .unwrap() + .expect("FIX-006: unexpected None/Err") .as_secs() } } @@ -487,7 +487,7 @@ mod tests { extended_gnacs, PartitionType::CommonStock, ) - .unwrap(); + .expect("FIX-006: unexpected None/Err"); (acc1594, partition_id) } @@ -506,7 +506,7 @@ mod tests { ); assert!(result.is_ok()); - assert_eq!(acc1594.balance_of("investor1", &partition_id).unwrap(), 1000); + assert_eq!(acc1594.balance_of("investor1", &partition_id).expect("mainnet: handle error"), 1000); } #[test] @@ -515,12 +515,12 @@ mod tests { acc1594 .issue("issuer1", "investor1", 1000, vec![], &partition_id, [0u8; 32]) - .unwrap(); + .expect("FIX-006: unexpected None/Err"); let result = acc1594.redeem("investor1", 300, vec![], &partition_id, [0u8; 32]); assert!(result.is_ok()); - assert_eq!(acc1594.balance_of("investor1", &partition_id).unwrap(), 700); + assert_eq!(acc1594.balance_of("investor1", &partition_id).expect("mainnet: handle error"), 700); } #[test] @@ -530,10 +530,10 @@ mod tests { // 发行给两个投资者 acc1594 .issue("issuer1", "investor1", 600, vec![], &partition_id, [0u8; 32]) - .unwrap(); + .expect("FIX-006: unexpected None/Err"); acc1594 .issue("issuer1", "investor2", 400, vec![], &partition_id, [0u8; 32]) - .unwrap(); + .expect("FIX-006: unexpected None/Err"); // 分配分红 let result = acc1594.distribute_dividend( @@ -557,15 +557,15 @@ mod tests { acc1594 .issue("issuer1", "investor1", 1000, vec![], &partition_id, [0u8; 32]) - .unwrap(); + .expect("FIX-006: unexpected None/Err"); acc1594 .distribute_dividend("distributor1", &partition_id, 500, 202601, [0u8; 32]) - .unwrap(); + .expect("FIX-006: unexpected None/Err"); let claimed = acc1594 .claim_dividend("investor1", &partition_id, [0u8; 32]) - .unwrap(); + .expect("FIX-006: unexpected None/Err"); assert_eq!(claimed, 500); assert_eq!(acc1594.claimable_dividend("investor1", &partition_id), 0); diff --git a/nac-udm/src/l1_protocol/acc/acc1594/types.rs b/nac-udm/src/l1_protocol/acc/acc1594/types.rs index 6d364cb..989317f 100644 --- a/nac-udm/src/l1_protocol/acc/acc1594/types.rs +++ b/nac-udm/src/l1_protocol/acc/acc1594/types.rs @@ -274,7 +274,7 @@ mod tests { let encoded = full_gnacs.encode(); assert_eq!(encoded.len(), 10); - let decoded = FullDividendGNACS::decode(&encoded).unwrap(); + let decoded = FullDividendGNACS::decode(&encoded).expect("FIX-006: unexpected None/Err"); assert_eq!(decoded.base_gnacs, vec![0x94, 0x01, 0x00, 0x04, 0x02, 0x01]); assert_eq!(decoded.dividend_extension.dividend_policy, 1); assert_eq!(decoded.dividend_extension.dividend_period, 2); diff --git a/nac-udm/src/l1_protocol/acc/acc1643/mod.rs b/nac-udm/src/l1_protocol/acc/acc1643/mod.rs index a4a621a..7bba70f 100644 --- a/nac-udm/src/l1_protocol/acc/acc1643/mod.rs +++ b/nac-udm/src/l1_protocol/acc/acc1643/mod.rs @@ -322,7 +322,7 @@ impl Acc1643 { fn current_timestamp() -> u64 { std::time::SystemTime::now() .duration_since(std::time::UNIX_EPOCH) - .unwrap() + .expect("FIX-006: unexpected None/Err") .as_secs() } } @@ -357,9 +357,9 @@ mod tests { [0u8; 48], [1u8; 32], ) - .unwrap(); + .expect("FIX-006: unexpected None/Err"); - let document = acc1643.get_document(&doc_id).unwrap(); + let document = acc1643.get_document(&doc_id).expect("FIX-006: unexpected None/Err"); assert_eq!(document.doc_type, "Prospectus"); assert_eq!(document.version, 1); assert!(document.is_active); @@ -380,7 +380,7 @@ mod tests { [0u8; 48], [1u8; 32], ) - .unwrap(); + .expect("FIX-006: unexpected None/Err"); // 创建第二个版本 let content_hash_v2 = [2u8; 48]; @@ -393,9 +393,9 @@ mod tests { doc_id_v1, [1u8; 32], ) - .unwrap(); + .expect("FIX-006: unexpected None/Err"); - let doc_v2 = acc1643.get_document(&doc_id_v2).unwrap(); + let doc_v2 = acc1643.get_document(&doc_id_v2).expect("FIX-006: unexpected None/Err"); assert_eq!(doc_v2.version, 2); assert_eq!(doc_v2.supersedes, doc_id_v1); } @@ -414,11 +414,11 @@ mod tests { [0u8; 48], [1u8; 32], ) - .unwrap(); + .expect("FIX-006: unexpected None/Err"); - acc1643.remove_document("issuer1", &doc_id, [1u8; 32]).unwrap(); + acc1643.remove_document("issuer1", &doc_id, [1u8; 32]).expect("FIX-006: unexpected None/Err"); - let document = acc1643.get_document(&doc_id).unwrap(); + let document = acc1643.get_document(&doc_id).expect("FIX-006: unexpected None/Err"); assert!(!document.is_active); } @@ -436,7 +436,7 @@ mod tests { [0u8; 48], [1u8; 32], ) - .unwrap(); + .expect("FIX-006: unexpected None/Err"); let _doc_id_v2 = acc1643 .set_document( @@ -447,9 +447,9 @@ mod tests { doc_id_v1, [1u8; 32], ) - .unwrap(); + .expect("FIX-006: unexpected None/Err"); - let latest = acc1643.get_latest_document("Prospectus").unwrap(); + let latest = acc1643.get_latest_document("Prospectus").expect("FIX-006: unexpected None/Err"); assert_eq!(latest.version, 2); } @@ -469,14 +469,14 @@ mod tests { [0u8; 48], [1u8; 32], ) - .unwrap(); + .expect("FIX-006: unexpected None/Err"); - let is_valid = acc1643.verify_document(&doc_id, &uri, &content_hash).unwrap(); + let is_valid = acc1643.verify_document(&doc_id, &uri, &content_hash).expect("FIX-006: unexpected None/Err"); assert!(is_valid); // 验证错误的内容哈希 let wrong_hash = [2u8; 48]; - let is_valid = acc1643.verify_document(&doc_id, &uri, &wrong_hash).unwrap(); + let is_valid = acc1643.verify_document(&doc_id, &uri, &wrong_hash).expect("FIX-006: unexpected None/Err"); assert!(!is_valid); } @@ -495,7 +495,7 @@ mod tests { [0u8; 48], [1u8; 32], ) - .unwrap(); + .expect("FIX-006: unexpected None/Err"); let root_after = acc1643.documents_root(); assert_ne!(root_before, root_after); diff --git a/nac-udm/src/l1_protocol/acc/acc1644/mod.rs b/nac-udm/src/l1_protocol/acc/acc1644/mod.rs index cfc13af..d08f020 100644 --- a/nac-udm/src/l1_protocol/acc/acc1644/mod.rs +++ b/nac-udm/src/l1_protocol/acc/acc1644/mod.rs @@ -387,7 +387,7 @@ impl Acc1644 { } } - let old_controller = self.controller.take().unwrap(); + let old_controller = self.controller.take().expect("FIX-006: unexpected None/Err"); self.controller_role = None; self.takeover_expiry = None; @@ -484,7 +484,7 @@ impl Acc1644 { fn current_timestamp() -> u64 { std::time::SystemTime::now() .duration_since(std::time::UNIX_EPOCH) - .unwrap() + .expect("FIX-006: unexpected None/Err") .as_secs() } } @@ -519,7 +519,7 @@ mod tests { // 冻结分区 acc1644 .freeze("regulator1", &partition_id, reason, evidence, receipt) - .unwrap(); + .expect("FIX-006: unexpected None/Err"); assert!(acc1644.is_partition_frozen(&partition_id)); assert_eq!( @@ -530,7 +530,7 @@ mod tests { // 解冻分区 acc1644 .unfreeze("regulator1", &partition_id, reason, evidence, receipt) - .unwrap(); + .expect("FIX-006: unexpected None/Err"); assert!(!acc1644.is_partition_frozen(&partition_id)); assert_eq!( @@ -548,7 +548,7 @@ mod tests { acc1644 .freeze("regulator1", &global_partition, b"Emergency", b"", receipt) - .unwrap(); + .expect("FIX-006: unexpected None/Err"); assert!(acc1644.is_partition_frozen(&global_partition)); assert!(acc1644.is_partition_frozen(&[1u8; 32])); // 任何分区都被冻结 @@ -579,7 +579,7 @@ mod tests { b"", receipt, ) - .unwrap(); + .expect("FIX-006: unexpected None/Err"); assert_eq!( acc1644.get_balance(&hex::encode(partition_id), "alice"), @@ -611,7 +611,7 @@ mod tests { b"", receipt, ) - .unwrap(); + .expect("FIX-006: unexpected None/Err"); assert_eq!( acc1644.get_balance(&hex::encode(partition_id), "alice"), @@ -627,7 +627,7 @@ mod tests { acc1644 .take_control("emergency1", "emergency_controller", 3600, b"Emergency", receipt) - .unwrap(); + .expect("FIX-006: unexpected None/Err"); assert_eq!(acc1644.controller(), Some("emergency_controller".to_string())); assert_eq!( @@ -645,11 +645,11 @@ mod tests { acc1644 .freeze("regulator1", &partition_id, b"Test", b"", receipt) - .unwrap(); + .expect("FIX-006: unexpected None/Err"); acc1644 .unfreeze("regulator1", &partition_id, b"Test", b"", receipt) - .unwrap(); + .expect("FIX-006: unexpected None/Err"); let actions = acc1644.get_control_actions(0, 10); assert_eq!(actions.len(), 2); diff --git a/nac-udm/src/l1_protocol/acc/acc20.rs b/nac-udm/src/l1_protocol/acc/acc20.rs index 264e90c..0b9f997 100644 --- a/nac-udm/src/l1_protocol/acc/acc20.rs +++ b/nac-udm/src/l1_protocol/acc/acc20.rs @@ -349,7 +349,7 @@ impl ACC20Token { }); } - *self.holdings.get_mut(from).unwrap() -= amount; + *self.holdings.get_mut(from).expect("FIX-006: unexpected None/Err") -= amount; *self.holdings.entry(to.clone()).or_insert(0) += amount; self.pending_events.push(ACC20Event::Transfer { @@ -411,12 +411,12 @@ impl ACC20Token { // 扣减授权额度 *self.sovereignty_authorizations .get_mut(from) - .unwrap() + .expect("FIX-006: unexpected None/Err") .get_mut(spender) - .unwrap() -= amount; + .expect("FIX-006: unexpected None/Err") -= amount; // 执行转账 - *self.holdings.get_mut(from).unwrap() -= amount; + *self.holdings.get_mut(from).expect("FIX-006: unexpected None/Err") -= amount; *self.holdings.entry(to.clone()).or_insert(0) += amount; self.pending_events.push(ACC20Event::Transfer { @@ -533,7 +533,7 @@ impl ACC20Token { }); } - *self.holdings.get_mut(from).unwrap() -= amount; + *self.holdings.get_mut(from).expect("FIX-006: unexpected None/Err") -= amount; self.total_supply = self.total_supply.saturating_sub(amount); self.pending_events.push(ACC20Event::Burn { @@ -690,7 +690,7 @@ mod tests { Some(10_000_000 * 10u128.pow(18)), receipt, ts, - ).unwrap(); + ).expect("FIX-006: unexpected None/Err"); assert_eq!(token.balance_of(&owner), 1_000_000 * 10u128.pow(18)); assert_eq!(token.total_supply, 1_000_000 * 10u128.pow(18)); } @@ -704,9 +704,9 @@ mod tests { let mut token = ACC20Token::new( "Test".to_string(), "TST".to_string(), 18, owner.clone(), 1000, None, receipt.clone(), ts.clone(), - ).unwrap(); + ).expect("FIX-006: unexpected None/Err"); - token.transfer(&owner, &receiver, 300, receipt, ts).unwrap(); + token.transfer(&owner, &receiver, 300, receipt, ts).expect("FIX-006: unexpected None/Err"); assert_eq!(token.balance_of(&owner), 700); assert_eq!(token.balance_of(&receiver), 300); } @@ -720,9 +720,9 @@ mod tests { let mut token = ACC20Token::new( "Test".to_string(), "TST".to_string(), 18, owner.clone(), 1000, None, receipt.clone(), ts.clone(), - ).unwrap(); - token.transfer(&owner, &victim, 500, receipt.clone(), ts.clone()).unwrap(); - token.freeze_account(&owner, &victim, "AML".to_string(), receipt.clone(), ts.clone()).unwrap(); + ).expect("FIX-006: unexpected None/Err"); + token.transfer(&owner, &victim, 500, receipt.clone(), ts.clone()).expect("FIX-006: unexpected None/Err"); + token.freeze_account(&owner, &victim, "AML".to_string(), receipt.clone(), ts.clone()).expect("FIX-006: unexpected None/Err"); let result = token.transfer(&victim, &owner, 100, receipt, ts); assert!(matches!(result, Err(ACC20Error::AccountFrozen(_)))); } @@ -735,9 +735,9 @@ mod tests { let mut token = ACC20Token::new( "Test".to_string(), "TST".to_string(), 18, owner.clone(), 900, Some(1000), receipt.clone(), ts.clone(), - ).unwrap(); + ).expect("FIX-006: unexpected None/Err"); // 铸造到上限 - token.mint(&owner, &owner, 100, receipt.clone(), ts.clone()).unwrap(); + token.mint(&owner, &owner, 100, receipt.clone(), ts.clone()).expect("FIX-006: unexpected None/Err"); // 超出上限 let result = token.mint(&owner, &owner, 1, receipt, ts); assert!(matches!(result, Err(ACC20Error::SupplyCapExceeded { .. }))); diff --git a/nac-udm/src/l1_protocol/acc/acc20_enhanced.rs b/nac-udm/src/l1_protocol/acc/acc20_enhanced.rs index 9d11597..d284830 100644 --- a/nac-udm/src/l1_protocol/acc/acc20_enhanced.rs +++ b/nac-udm/src/l1_protocol/acc/acc20_enhanced.rs @@ -682,7 +682,7 @@ impl ACC20Enhanced { operation: OperationType::ValuationUpdate, operator: context.sender, target: None, - amount: Some(self.valuation_info.as_ref().unwrap().current_valuation), + amount: Some(self.valuation_info.as_ref().expect("FIX-006: unexpected None/Err").current_valuation), timestamp: context.timestamp, tx_hash: context.tx_hash, note: Some("Valuation updated".to_string()), @@ -866,7 +866,7 @@ mod tests { 18, gnacs, SovereigntyRight::A0, - ).unwrap(); + ).expect("FIX-006: unexpected None/Err"); assert_eq!(token.name, "Test Asset"); assert_eq!(token.symbol, "TEST"); @@ -890,7 +890,7 @@ mod tests { 18, gnacs, SovereigntyRight::A0, - ).unwrap(); + ).expect("FIX-006: unexpected None/Err"); // 设置为已批准状态 token.compliance_status = ComplianceStatus::Approved; @@ -905,11 +905,11 @@ mod tests { context.aml_status.insert(addr2, AMLStatus::Clear); // 铸造 - token.mint(&addr1, 1000, &context).unwrap(); + token.mint(&addr1, 1000, &context).expect("FIX-006: unexpected None/Err"); assert_eq!(token.holdings_of(&addr1), 1000); // 转账 - token.transfer(&addr1, &addr2, 500, &context).unwrap(); + token.transfer(&addr1, &addr2, 500, &context).expect("FIX-006: unexpected None/Err"); assert_eq!(token.holdings_of(&addr1), 500); assert_eq!(token.holdings_of(&addr2), 500); } @@ -930,7 +930,7 @@ mod tests { 18, gnacs, SovereigntyRight::A0, - ).unwrap(); + ).expect("FIX-006: unexpected None/Err"); token.compliance_status = ComplianceStatus::Approved; @@ -944,7 +944,7 @@ mod tests { context.aml_status.insert(addr1, AMLStatus::Clear); context.aml_status.insert(addr2, AMLStatus::Clear); - token.mint(&addr1, 1000, &context).unwrap(); + token.mint(&addr1, 1000, &context).expect("FIX-006: unexpected None/Err"); // 转账应该失败,因为addr2的KYC级别不够 let result = token.transfer(&addr1, &addr2, 500, &context); @@ -968,7 +968,7 @@ mod tests { 18, gnacs, SovereigntyRight::A0, - ).unwrap(); + ).expect("FIX-006: unexpected None/Err"); token.compliance_status = ComplianceStatus::Approved; @@ -981,10 +981,10 @@ mod tests { context.aml_status.insert(addr1, AMLStatus::Clear); context.aml_status.insert(addr2, AMLStatus::Clear); - token.mint(&addr1, 1000, &context).unwrap(); + token.mint(&addr1, 1000, &context).expect("FIX-006: unexpected None/Err"); // 冻结addr1 - token.freeze_account(&addr1, &context).unwrap(); + token.freeze_account(&addr1, &context).expect("FIX-006: unexpected None/Err"); // 转账应该失败 let result = token.transfer(&addr1, &addr2, 500, &context); diff --git a/nac-udm/src/l1_protocol/acc/acc721.rs b/nac-udm/src/l1_protocol/acc/acc721.rs index 39f8a66..c06fc13 100644 --- a/nac-udm/src/l1_protocol/acc/acc721.rs +++ b/nac-udm/src/l1_protocol/acc/acc721.rs @@ -448,7 +448,7 @@ mod tests { insurer, 1000000, Timestamp::now(), - ).unwrap(); + ).expect("FIX-006: unexpected None/Err"); let result = cert.transfer_asset(&owner, &new_owner, 1); assert!(result.is_ok()); @@ -479,7 +479,7 @@ mod tests { insurer, 1000000, Timestamp::now(), - ).unwrap(); + ).expect("FIX-006: unexpected None/Err"); let result = cert.fragmentize_asset(&owner, 1, 1000, 100); assert!(result.is_ok()); diff --git a/nac-udm/src/l1_protocol/acc/acc_rwa.rs b/nac-udm/src/l1_protocol/acc/acc_rwa.rs index 1b78f97..f005a85 100644 --- a/nac-udm/src/l1_protocol/acc/acc_rwa.rs +++ b/nac-udm/src/l1_protocol/acc/acc_rwa.rs @@ -248,7 +248,7 @@ impl ACCRWAProtocol { if from_balance < amount { return Err(ACCRWAError::Unauthorized(from.clone())); } - *holdings.get_mut(&from).unwrap() -= amount; + *holdings.get_mut(&from).expect("FIX-006: unexpected None/Err") -= amount; *holdings.entry(to.clone()).or_insert(0) += amount; self.pending_events.push(RWAProtocolEvent::AssetTransferred { asset_id, from, to, amount, timestamp }); Ok(()) diff --git a/nac-udm/src/l1_protocol/acc/acc_valuation.rs b/nac-udm/src/l1_protocol/acc/acc_valuation.rs index 04e6279..2cde025 100644 --- a/nac-udm/src/l1_protocol/acc/acc_valuation.rs +++ b/nac-udm/src/l1_protocol/acc/acc_valuation.rs @@ -322,7 +322,7 @@ mod tests { Address::new([9u8; 32]), receipt.clone(), ts.clone(), - ).unwrap(); + ).expect("FIX-006: unexpected None/Err"); let vid = proto.submit_valuation( asset_id, @@ -333,7 +333,7 @@ mod tests { Hash::sha3_384(b"report"), receipt, ts, - ).unwrap(); + ).expect("FIX-006: unexpected None/Err"); assert!(!vid.is_zero()); assert!(proto.get_current_valuation(&asset_id).is_some()); diff --git a/nac-udm/src/l1_protocol/acc/acc_xtzh.rs b/nac-udm/src/l1_protocol/acc/acc_xtzh.rs index c6a524c..26eaee9 100644 --- a/nac-udm/src/l1_protocol/acc/acc_xtzh.rs +++ b/nac-udm/src/l1_protocol/acc/acc_xtzh.rs @@ -222,7 +222,7 @@ impl XTZHStablecoinProtocol { if balance < amount { return Err(ACCXTZHError::InsufficientBalance { holder: holder.clone(), available: balance, requested: amount }); } - *self.holdings.get_mut(&holder).unwrap() -= amount; + *self.holdings.get_mut(&holder).expect("FIX-006: unexpected None/Err") -= amount; self.total_supply = self.total_supply.saturating_sub(amount); self.pending_events.push(XTZHProtocolEvent::Burned { holder, amount, constitutional_receipt, timestamp }); self.updated_at = Timestamp::now(); @@ -236,7 +236,7 @@ impl XTZHStablecoinProtocol { if balance < amount { return Err(ACCXTZHError::InsufficientBalance { holder: from.clone(), available: balance, requested: amount }); } - *self.holdings.get_mut(&from).unwrap() -= amount; + *self.holdings.get_mut(&from).expect("FIX-006: unexpected None/Err") -= amount; *self.holdings.entry(to.clone()).or_insert(0) += amount; self.pending_events.push(XTZHProtocolEvent::Transferred { from, to, amount, timestamp }); Ok(()) diff --git a/nac-udm/src/l1_protocol/acc/xtzh_ai_engine.rs b/nac-udm/src/l1_protocol/acc/xtzh_ai_engine.rs index fec347a..9683b03 100644 --- a/nac-udm/src/l1_protocol/acc/xtzh_ai_engine.rs +++ b/nac-udm/src/l1_protocol/acc/xtzh_ai_engine.rs @@ -567,7 +567,7 @@ impl XTZHAIEngine { // 简化的VaR/CVaR计算 let mut sorted_data = historical_data.to_vec(); - sorted_data.sort_by(|a, b| a.partial_cmp(b).unwrap()); + sorted_data.sort_by(|a, b| a.partial_cmp(b).expect("FIX-006: unexpected None/Err")); let var_index = (sorted_data.len() as f64 * 0.05) as usize; let var_95 = sorted_data.get(var_index).copied().unwrap_or(0.0); diff --git a/nac-udm/src/l1_protocol/acc20c/metadata_generator.rs b/nac-udm/src/l1_protocol/acc20c/metadata_generator.rs index c1ba848..068ed6a 100644 --- a/nac-udm/src/l1_protocol/acc20c/metadata_generator.rs +++ b/nac-udm/src/l1_protocol/acc20c/metadata_generator.rs @@ -277,7 +277,7 @@ impl MetadataGenerator { wrapped_amount: u128, ) -> String { let metadata = self.generate_metadata(token_id, acc20_asset, wrapped_amount); - serde_json::to_string_pretty(&metadata).unwrap() + serde_json::to_string_pretty(&metadata).expect("FIX-006: unexpected None/Err") } } @@ -304,7 +304,7 @@ mod tests { 18, gnacs, SovereigntyRight::A0, - ).unwrap(); + ).expect("FIX-006: unexpected None/Err"); asset.contract_address = Address::zero(); diff --git a/nac-udm/src/l1_protocol/acc20c/sync_engine.rs b/nac-udm/src/l1_protocol/acc20c/sync_engine.rs index df1877b..a78396c 100644 --- a/nac-udm/src/l1_protocol/acc20c/sync_engine.rs +++ b/nac-udm/src/l1_protocol/acc20c/sync_engine.rs @@ -471,7 +471,7 @@ impl SyncEngine { .position(|t| t.task_id == task_id) .ok_or(SyncEngineError::TaskNotFound)?; - let mut task = self.pending_syncs.remove(task_index).unwrap(); + let mut task = self.pending_syncs.remove(task_index).expect("FIX-006: unexpected None/Err"); // 更新状态 task.status = SyncTaskStatus::Processing; @@ -507,7 +507,7 @@ impl SyncEngine { .position(|t| t.task_id == task_id) .ok_or(SyncEngineError::TaskNotFound)?; - let mut task = self.pending_syncs.remove(task_index).unwrap(); + let mut task = self.pending_syncs.remove(task_index).expect("FIX-006: unexpected None/Err"); // 更新状态 task.status = SyncTaskStatus::Completed; diff --git a/nac-udm/src/l1_protocol/cbpp/execution_engine.rs b/nac-udm/src/l1_protocol/cbpp/execution_engine.rs index 8640472..a29efe4 100644 --- a/nac-udm/src/l1_protocol/cbpp/execution_engine.rs +++ b/nac-udm/src/l1_protocol/cbpp/execution_engine.rs @@ -281,7 +281,7 @@ mod tests { vec![], ); - let receipt = engine.validate_transaction(&context).unwrap(); + let receipt = engine.validate_transaction(&context).expect("FIX-006: unexpected None/Err"); assert_eq!(engine.info.processed_transactions, 1); assert_eq!(engine.receipt_cache.len(), 1); diff --git a/nac-udm/src/l1_protocol/cross_shard_transaction.rs b/nac-udm/src/l1_protocol/cross_shard_transaction.rs index 0bc1ca0..dbc3505 100644 --- a/nac-udm/src/l1_protocol/cross_shard_transaction.rs +++ b/nac-udm/src/l1_protocol/cross_shard_transaction.rs @@ -216,7 +216,7 @@ impl CrossShardTxProcessor { .position(|tx| tx.tx_id == *tx_id) .ok_or("Transaction not found in pending queue")?; - let mut tx = self.pending_queue.remove(tx_index).unwrap(); + let mut tx = self.pending_queue.remove(tx_index).expect("FIX-006: unexpected None/Err"); // 验证是否为源分片 if tx.source_shard != self.shard_id { @@ -321,7 +321,7 @@ impl CrossShardTxProcessor { pub fn mark_failed(&mut self, tx_id: &Hash, reason: String) -> Result<(), String> { // 从待处理队列中查找 if let Some(index) = self.pending_queue.iter().position(|tx| tx.tx_id == *tx_id) { - let mut tx = self.pending_queue.remove(index).unwrap(); + let mut tx = self.pending_queue.remove(index).expect("FIX-006: unexpected None/Err"); tx.status = CrossShardTxStatus::Failed; self.failed_txs.insert(tx_id.clone(), (tx, reason)); self.stats.pending_count -= 1; @@ -519,9 +519,9 @@ mod tests { #[test] fn test_cross_shard_tx_creation() { - let tx_id = Hash::from_slice(&[1u8; 32]).unwrap(); - let sender = Address::from_slice(&[1u8; 20]).unwrap(); - let receiver = Address::from_slice(&[2u8; 20]).unwrap(); + let tx_id = Hash::from_slice(&[1u8; 32]).expect("valid fixed-length slice"); + let sender = Address::from_slice(&[1u8; 20]).expect("valid fixed-length slice"); + let receiver = Address::from_slice(&[2u8; 20]).expect("valid fixed-length slice"); let tx = CrossShardTransaction::new( tx_id, @@ -544,9 +544,9 @@ mod tests { fn test_processor_submit_transaction() { let mut processor = CrossShardTxProcessor::new(1); - let tx_id = Hash::from_slice(&[1u8; 32]).unwrap(); - let sender = Address::from_slice(&[1u8; 20]).unwrap(); - let receiver = Address::from_slice(&[2u8; 20]).unwrap(); + let tx_id = Hash::from_slice(&[1u8; 32]).expect("valid fixed-length slice"); + let sender = Address::from_slice(&[1u8; 20]).expect("valid fixed-length slice"); + let receiver = Address::from_slice(&[2u8; 20]).expect("valid fixed-length slice"); let tx = CrossShardTransaction::new( tx_id, @@ -568,9 +568,9 @@ mod tests { fn test_processor_process_lock() { let mut processor = CrossShardTxProcessor::new(1); - let tx_id = Hash::from_slice(&[1u8; 32]).unwrap(); - let sender = Address::from_slice(&[1u8; 20]).unwrap(); - let receiver = Address::from_slice(&[2u8; 20]).unwrap(); + let tx_id = Hash::from_slice(&[1u8; 32]).expect("valid fixed-length slice"); + let sender = Address::from_slice(&[1u8; 20]).expect("valid fixed-length slice"); + let receiver = Address::from_slice(&[2u8; 20]).expect("valid fixed-length slice"); let tx = CrossShardTransaction::new( tx_id.clone(), @@ -583,11 +583,11 @@ mod tests { 1000, ); - processor.submit_transaction(tx).unwrap(); + processor.submit_transaction(tx).expect("FIX-006: unexpected None/Err"); let lock_proof = LockProof { shard_id: 1, - block_hash: Hash::from_slice(&[2u8; 32]).unwrap(), + block_hash: Hash::from_slice(&[2u8; 32]).expect("valid fixed-length slice"), tx_hash: tx_id.clone(), locked_at: 1001, validator_signatures: vec![vec![1, 2, 3]; 3], @@ -602,9 +602,9 @@ mod tests { fn test_processor_mark_failed() { let mut processor = CrossShardTxProcessor::new(1); - let tx_id = Hash::from_slice(&[1u8; 32]).unwrap(); - let sender = Address::from_slice(&[1u8; 20]).unwrap(); - let receiver = Address::from_slice(&[2u8; 20]).unwrap(); + let tx_id = Hash::from_slice(&[1u8; 32]).expect("valid fixed-length slice"); + let sender = Address::from_slice(&[1u8; 20]).expect("valid fixed-length slice"); + let receiver = Address::from_slice(&[2u8; 20]).expect("valid fixed-length slice"); let tx = CrossShardTransaction::new( tx_id.clone(), @@ -617,7 +617,7 @@ mod tests { 1000, ); - processor.submit_transaction(tx).unwrap(); + processor.submit_transaction(tx).expect("FIX-006: unexpected None/Err"); assert!(processor.mark_failed(&tx_id, "Test failure".to_string()).is_ok()); assert_eq!(processor.stats.failed_count, 1); @@ -628,9 +628,9 @@ mod tests { fn test_processor_get_status() { let mut processor = CrossShardTxProcessor::new(1); - let tx_id = Hash::from_slice(&[1u8; 32]).unwrap(); - let sender = Address::from_slice(&[1u8; 20]).unwrap(); - let receiver = Address::from_slice(&[2u8; 20]).unwrap(); + let tx_id = Hash::from_slice(&[1u8; 32]).expect("valid fixed-length slice"); + let sender = Address::from_slice(&[1u8; 20]).expect("valid fixed-length slice"); + let receiver = Address::from_slice(&[2u8; 20]).expect("valid fixed-length slice"); let tx = CrossShardTransaction::new( tx_id.clone(), @@ -643,7 +643,7 @@ mod tests { 1000, ); - processor.submit_transaction(tx).unwrap(); + processor.submit_transaction(tx).expect("FIX-006: unexpected None/Err"); let status = processor.get_transaction_status(&tx_id); assert_eq!(status, Some(CrossShardTxStatus::Pending)); @@ -691,9 +691,9 @@ mod tests { // 添加5个已完成交易 for i in 0..5 { - let tx_id = Hash::from_slice(&[i; 32]).unwrap(); - let sender = Address::from_slice(&[1u8; 20]).unwrap(); - let receiver = Address::from_slice(&[2u8; 20]).unwrap(); + let tx_id = Hash::from_slice(&[i; 32]).expect("valid fixed-length slice"); + let sender = Address::from_slice(&[1u8; 20]).expect("valid fixed-length slice"); + let receiver = Address::from_slice(&[2u8; 20]).expect("valid fixed-length slice"); let mut tx = CrossShardTransaction::new( tx_id.clone(), diff --git a/nac-udm/src/l1_protocol/fragmentation/amm.rs b/nac-udm/src/l1_protocol/fragmentation/amm.rs index c59bffe..d36cc8b 100644 --- a/nac-udm/src/l1_protocol/fragmentation/amm.rs +++ b/nac-udm/src/l1_protocol/fragmentation/amm.rs @@ -136,7 +136,7 @@ impl AMMManager { }; // 更新储备量 - let pool = self.get_pool_mut(fragment_asset).unwrap(); + let pool = self.get_pool_mut(fragment_asset).expect("FIX-006: unexpected None/Err"); pool.update_reserves(fragment_amount as i64, base_amount as i64); // 更新份额 @@ -182,17 +182,17 @@ impl AMMManager { let base_amount = (shares as u128 * pool.base_reserve as u128 / total_shares as u128) as u64; // 更新储备量 - let pool = self.get_pool_mut(fragment_asset).unwrap(); + let pool = self.get_pool_mut(fragment_asset).expect("FIX-006: unexpected None/Err"); pool.update_reserves(-(fragment_amount as i64), -(base_amount as i64)); // 更新份额 *self.liquidity_shares .get_mut(fragment_asset) - .unwrap() + .expect("FIX-006: unexpected None/Err") .get_mut(provider) - .unwrap() -= shares; + .expect("FIX-006: unexpected None/Err") -= shares; - *self.total_shares.get_mut(fragment_asset).unwrap() -= shares; + *self.total_shares.get_mut(fragment_asset).expect("FIX-006: unexpected None/Err") -= shares; Ok((fragment_amount, base_amount)) } @@ -232,9 +232,9 @@ mod tests { #[test] fn test_create_pool() { let mut manager = AMMManager::new(); - let fragment = Address::from_slice(&[1u8; 20]).unwrap(); - let base = Address::from_slice(&[2u8; 20]).unwrap(); - let creator = Address::from_slice(&[3u8; 20]).unwrap(); + let fragment = Address::from_slice(&[1u8; 20]).expect("valid fixed-length slice"); + let base = Address::from_slice(&[2u8; 20]).expect("valid fixed-length slice"); + let creator = Address::from_slice(&[3u8; 20]).expect("valid fixed-length slice"); let result = manager.create_pool( fragment.clone(), @@ -252,7 +252,7 @@ mod tests { // 验证池已创建 let pool = manager.get_pool(&fragment); assert!(pool.is_some()); - assert_eq!(pool.unwrap().fragment_reserve, 10000); + assert_eq!(pool.expect("mainnet: handle error").fragment_reserve, 10000); // 验证初始流动性份额 let shares = manager.get_user_shares(&fragment, &creator); @@ -262,17 +262,17 @@ mod tests { #[test] fn test_invalid_pool_creation() { let mut manager = AMMManager::new(); - let fragment = Address::from_slice(&[1u8; 20]).unwrap(); + let fragment = Address::from_slice(&[1u8; 20]).expect("valid fixed-length slice"); // 初始流动性太低 let result = manager.create_pool( fragment.clone(), - Address::from_slice(&[2u8; 20]).unwrap(), + Address::from_slice(&[2u8; 20]).expect("valid fixed-length slice"), 500, // 太低 10000, 30, GNACSCode::new(AssetCategory::RealEstate, 0x01, Jurisdiction::US, ComplianceLevel::High, RiskLevel::Medium), - Address::from_slice(&[3u8; 20]).unwrap(), + Address::from_slice(&[3u8; 20]).expect("valid fixed-length slice"), 1000000, ); assert!(result.is_err()); @@ -280,12 +280,12 @@ mod tests { // 手续费太高 let result = manager.create_pool( fragment, - Address::from_slice(&[2u8; 20]).unwrap(), + Address::from_slice(&[2u8; 20]).expect("valid fixed-length slice"), 10000, 10000, 150, // 1.5% 太高 GNACSCode::new(AssetCategory::RealEstate, 0x01, Jurisdiction::US, ComplianceLevel::High, RiskLevel::Medium), - Address::from_slice(&[3u8; 20]).unwrap(), + Address::from_slice(&[3u8; 20]).expect("valid fixed-length slice"), 1000000, ); assert!(result.is_err()); @@ -294,25 +294,25 @@ mod tests { #[test] fn test_swap() { let mut manager = AMMManager::new(); - let fragment = Address::from_slice(&[1u8; 20]).unwrap(); + let fragment = Address::from_slice(&[1u8; 20]).expect("valid fixed-length slice"); manager.create_pool( fragment.clone(), - Address::from_slice(&[2u8; 20]).unwrap(), + Address::from_slice(&[2u8; 20]).expect("valid fixed-length slice"), 10000, 10000, 30, GNACSCode::new(AssetCategory::RealEstate, 0x01, Jurisdiction::US, ComplianceLevel::High, RiskLevel::Medium), - Address::from_slice(&[3u8; 20]).unwrap(), + Address::from_slice(&[3u8; 20]).expect("valid fixed-length slice"), 1000000, - ).unwrap(); + ).expect("FIX-006: unexpected None/Err"); // 执行交换 - let output = manager.swap(&fragment, 100, 90).unwrap(); + let output = manager.swap(&fragment, 100, 90).expect("FIX-006: unexpected None/Err"); assert!(output >= 90 && output <= 100); // 验证储备量已更新 - let pool = manager.get_pool(&fragment).unwrap(); + let pool = manager.get_pool(&fragment).expect("FIX-006: unexpected None/Err"); assert_eq!(pool.fragment_reserve, 10100); assert_eq!(pool.base_reserve, 10000 - output); } @@ -320,26 +320,26 @@ mod tests { #[test] fn test_add_liquidity() { let mut manager = AMMManager::new(); - let fragment = Address::from_slice(&[1u8; 20]).unwrap(); - let provider = Address::from_slice(&[4u8; 20]).unwrap(); + let fragment = Address::from_slice(&[1u8; 20]).expect("valid fixed-length slice"); + let provider = Address::from_slice(&[4u8; 20]).expect("valid fixed-length slice"); manager.create_pool( fragment.clone(), - Address::from_slice(&[2u8; 20]).unwrap(), + Address::from_slice(&[2u8; 20]).expect("valid fixed-length slice"), 10000, 10000, 30, GNACSCode::new(AssetCategory::RealEstate, 0x01, Jurisdiction::US, ComplianceLevel::High, RiskLevel::Medium), - Address::from_slice(&[3u8; 20]).unwrap(), + Address::from_slice(&[3u8; 20]).expect("valid fixed-length slice"), 1000000, - ).unwrap(); + ).expect("FIX-006: unexpected None/Err"); // 添加流动性 - let shares = manager.add_liquidity(&fragment, 1000, provider.clone()).unwrap(); + let shares = manager.add_liquidity(&fragment, 1000, provider.clone()).expect("FIX-006: unexpected None/Err"); assert!(shares > 0); // 验证储备量已更新 - let pool = manager.get_pool(&fragment).unwrap(); + let pool = manager.get_pool(&fragment).expect("FIX-006: unexpected None/Err"); assert_eq!(pool.fragment_reserve, 11000); assert_eq!(pool.base_reserve, 11000); @@ -350,19 +350,19 @@ mod tests { #[test] fn test_remove_liquidity() { let mut manager = AMMManager::new(); - let fragment = Address::from_slice(&[1u8; 20]).unwrap(); - let creator = Address::from_slice(&[3u8; 20]).unwrap(); + let fragment = Address::from_slice(&[1u8; 20]).expect("valid fixed-length slice"); + let creator = Address::from_slice(&[3u8; 20]).expect("valid fixed-length slice"); manager.create_pool( fragment.clone(), - Address::from_slice(&[2u8; 20]).unwrap(), + Address::from_slice(&[2u8; 20]).expect("valid fixed-length slice"), 10000, 10000, 30, GNACSCode::new(AssetCategory::RealEstate, 0x01, Jurisdiction::US, ComplianceLevel::High, RiskLevel::Medium), creator.clone(), 1000000, - ).unwrap(); + ).expect("FIX-006: unexpected None/Err"); let initial_shares = manager.get_user_shares(&fragment, &creator); @@ -371,7 +371,7 @@ mod tests { &fragment, initial_shares / 2, &creator, - ).unwrap(); + ).expect("FIX-006: unexpected None/Err"); assert!(fragment_amount > 0); assert!(base_amount > 0); @@ -380,7 +380,7 @@ mod tests { assert_eq!(manager.get_user_shares(&fragment, &creator), initial_shares / 2); // 验证储备量已减少 - let pool = manager.get_pool(&fragment).unwrap(); + let pool = manager.get_pool(&fragment).expect("FIX-006: unexpected None/Err"); assert!(pool.fragment_reserve < 10000); assert!(pool.base_reserve < 10000); } @@ -388,19 +388,19 @@ mod tests { #[test] fn test_insufficient_shares() { let mut manager = AMMManager::new(); - let fragment = Address::from_slice(&[1u8; 20]).unwrap(); - let creator = Address::from_slice(&[3u8; 20]).unwrap(); + let fragment = Address::from_slice(&[1u8; 20]).expect("valid fixed-length slice"); + let creator = Address::from_slice(&[3u8; 20]).expect("valid fixed-length slice"); manager.create_pool( fragment.clone(), - Address::from_slice(&[2u8; 20]).unwrap(), + Address::from_slice(&[2u8; 20]).expect("valid fixed-length slice"), 10000, 10000, 30, GNACSCode::new(AssetCategory::RealEstate, 0x01, Jurisdiction::US, ComplianceLevel::High, RiskLevel::Medium), creator.clone(), 1000000, - ).unwrap(); + ).expect("FIX-006: unexpected None/Err"); let shares = manager.get_user_shares(&fragment, &creator); diff --git a/nac-udm/src/l1_protocol/fragmentation/cross_chain.rs b/nac-udm/src/l1_protocol/fragmentation/cross_chain.rs index b265a2b..0a8890f 100644 --- a/nac-udm/src/l1_protocol/fragmentation/cross_chain.rs +++ b/nac-udm/src/l1_protocol/fragmentation/cross_chain.rs @@ -197,8 +197,8 @@ mod tests { #[test] fn test_register_mapping() { let mut manager = CrossChainFragmentationManager::new(); - let local_fragment = Address::from_slice(&[1u8; 20]).unwrap(); - let remote_fragment = Address::from_slice(&[2u8; 20]).unwrap(); + let local_fragment = Address::from_slice(&[1u8; 20]).expect("valid fixed-length slice"); + let remote_fragment = Address::from_slice(&[2u8; 20]).expect("valid fixed-length slice"); let result = manager.register_cross_chain_mapping( local_fragment.clone(), @@ -213,19 +213,19 @@ mod tests { // 验证映射已注册 let mapping = manager.get_cross_chain_mapping(&local_fragment, 2); assert!(mapping.is_some()); - assert_eq!(mapping.unwrap().remote_chain_id, 2); + assert_eq!(mapping.expect("mainnet: handle error").remote_chain_id, 2); } #[test] fn test_invalid_exchange_rate() { let mut manager = CrossChainFragmentationManager::new(); - let local_fragment = Address::from_slice(&[1u8; 20]).unwrap(); + let local_fragment = Address::from_slice(&[1u8; 20]).expect("valid fixed-length slice"); // 兑换率太低 let result = manager.register_cross_chain_mapping( local_fragment.clone(), 2, - Address::from_slice(&[2u8; 20]).unwrap(), + Address::from_slice(&[2u8; 20]).expect("valid fixed-length slice"), 50_000_000_000_000_000, // 0.05:1 太低 GNACSCode::new(AssetCategory::RealEstate, 0x01, Jurisdiction::US, ComplianceLevel::High, RiskLevel::Medium), ); @@ -235,7 +235,7 @@ mod tests { let result = manager.register_cross_chain_mapping( local_fragment, 2, - Address::from_slice(&[2u8; 20]).unwrap(), + Address::from_slice(&[2u8; 20]).expect("valid fixed-length slice"), 11_000_000_000_000_000_000, // 11:1 太高 GNACSCode::new(AssetCategory::RealEstate, 0x01, Jurisdiction::US, ComplianceLevel::High, RiskLevel::Medium), ); @@ -245,19 +245,19 @@ mod tests { #[test] fn test_lock_and_unlock() { let mut manager = CrossChainFragmentationManager::new(); - let fragment = Address::from_slice(&[1u8; 20]).unwrap(); - let user = Address::from_slice(&[2u8; 20]).unwrap(); + let fragment = Address::from_slice(&[1u8; 20]).expect("valid fixed-length slice"); + let user = Address::from_slice(&[2u8; 20]).expect("valid fixed-length slice"); // 锁定碎片 - manager.lock_fragments(fragment.clone(), user.clone(), 1000).unwrap(); + manager.lock_fragments(fragment.clone(), user.clone(), 1000).expect("FIX-006: unexpected None/Err"); assert_eq!(manager.get_locked_amount(&fragment, &user), 1000); // 再次锁定 - manager.lock_fragments(fragment.clone(), user.clone(), 500).unwrap(); + manager.lock_fragments(fragment.clone(), user.clone(), 500).expect("FIX-006: unexpected None/Err"); assert_eq!(manager.get_locked_amount(&fragment, &user), 1500); // 解锁部分 - manager.unlock_fragments(&fragment, &user, 500).unwrap(); + manager.unlock_fragments(&fragment, &user, 500).expect("FIX-006: unexpected None/Err"); assert_eq!(manager.get_locked_amount(&fragment, &user), 1000); // 尝试解锁过多应该失败 @@ -268,41 +268,41 @@ mod tests { #[test] fn test_calculate_received_amount() { let mut manager = CrossChainFragmentationManager::new(); - let local_fragment = Address::from_slice(&[1u8; 20]).unwrap(); + let local_fragment = Address::from_slice(&[1u8; 20]).expect("valid fixed-length slice"); manager.register_cross_chain_mapping( local_fragment.clone(), 2, - Address::from_slice(&[2u8; 20]).unwrap(), + Address::from_slice(&[2u8; 20]).expect("valid fixed-length slice"), 900_000_000_000_000_000, // 0.9:1 GNACSCode::new(AssetCategory::RealEstate, 0x01, Jurisdiction::US, ComplianceLevel::High, RiskLevel::Medium), - ).unwrap(); + ).expect("FIX-006: unexpected None/Err"); - let received = manager.calculate_received_amount(&local_fragment, 2, 1000).unwrap(); + let received = manager.calculate_received_amount(&local_fragment, 2, 1000).expect("FIX-006: unexpected None/Err"); assert_eq!(received, 900); } #[test] fn test_get_supported_chains() { let mut manager = CrossChainFragmentationManager::new(); - let local_fragment = Address::from_slice(&[1u8; 20]).unwrap(); + let local_fragment = Address::from_slice(&[1u8; 20]).expect("valid fixed-length slice"); // 注册多个链 manager.register_cross_chain_mapping( local_fragment.clone(), 2, - Address::from_slice(&[2u8; 20]).unwrap(), + Address::from_slice(&[2u8; 20]).expect("valid fixed-length slice"), 1_000_000_000_000_000_000, GNACSCode::new(AssetCategory::RealEstate, 0x01, Jurisdiction::US, ComplianceLevel::High, RiskLevel::Medium), - ).unwrap(); + ).expect("FIX-006: unexpected None/Err"); manager.register_cross_chain_mapping( local_fragment.clone(), 3, - Address::from_slice(&[3u8; 20]).unwrap(), + Address::from_slice(&[3u8; 20]).expect("valid fixed-length slice"), 1_000_000_000_000_000_000, GNACSCode::new(AssetCategory::RealEstate, 0x01, Jurisdiction::US, ComplianceLevel::High, RiskLevel::Medium), - ).unwrap(); + ).expect("FIX-006: unexpected None/Err"); let chains = manager.get_supported_chains(&local_fragment); assert_eq!(chains.len(), 2); @@ -313,25 +313,25 @@ mod tests { #[test] fn test_activate_deactivate() { let mut manager = CrossChainFragmentationManager::new(); - let local_fragment = Address::from_slice(&[1u8; 20]).unwrap(); + let local_fragment = Address::from_slice(&[1u8; 20]).expect("valid fixed-length slice"); manager.register_cross_chain_mapping( local_fragment.clone(), 2, - Address::from_slice(&[2u8; 20]).unwrap(), + Address::from_slice(&[2u8; 20]).expect("valid fixed-length slice"), 1_000_000_000_000_000_000, GNACSCode::new(AssetCategory::RealEstate, 0x01, Jurisdiction::US, ComplianceLevel::High, RiskLevel::Medium), - ).unwrap(); + ).expect("FIX-006: unexpected None/Err"); // 初始应该是激活的 assert!(manager.can_cross_chain_transfer(&local_fragment, 2)); // 停用 - manager.deactivate_mapping(&local_fragment, 2).unwrap(); + manager.deactivate_mapping(&local_fragment, 2).expect("FIX-006: unexpected None/Err"); assert!(!manager.can_cross_chain_transfer(&local_fragment, 2)); // 重新激活 - manager.activate_mapping(&local_fragment, 2).unwrap(); + manager.activate_mapping(&local_fragment, 2).expect("FIX-006: unexpected None/Err"); assert!(manager.can_cross_chain_transfer(&local_fragment, 2)); } } diff --git a/nac-udm/src/l1_protocol/fragmentation/factory.rs b/nac-udm/src/l1_protocol/fragmentation/factory.rs index e76b503..d914bcf 100644 --- a/nac-udm/src/l1_protocol/fragmentation/factory.rs +++ b/nac-udm/src/l1_protocol/fragmentation/factory.rs @@ -151,7 +151,7 @@ mod tests { #[test] fn test_asset_approval() { let mut factory = FragmentationFactory::new(); - let asset = Address::from_slice(&[1u8; 20]).unwrap(); + let asset = Address::from_slice(&[1u8; 20]).expect("valid fixed-length slice"); assert!(!factory.is_asset_approved(&asset)); factory.approve_asset(asset.clone()); @@ -161,17 +161,17 @@ mod tests { #[test] fn test_create_pool() { let mut factory = FragmentationFactory::new(); - let asset = Address::from_slice(&[1u8; 20]).unwrap(); + let asset = Address::from_slice(&[1u8; 20]).expect("valid fixed-length slice"); // 未批准的资产应该失败 let result = factory.create_pool( asset.clone(), GNACSCode::new(AssetCategory::RealEstate, 0x01, Jurisdiction::US, ComplianceLevel::High, RiskLevel::Medium), 1, - Address::from_slice(&[2u8; 20]).unwrap(), + Address::from_slice(&[2u8; 20]).expect("valid fixed-length slice"), 1000, 100, - Address::from_slice(&[3u8; 20]).unwrap(), + Address::from_slice(&[3u8; 20]).expect("valid fixed-length slice"), 1000000, Hash::sha3_384(b"test"), ); @@ -183,10 +183,10 @@ mod tests { asset.clone(), GNACSCode::new(AssetCategory::RealEstate, 0x01, Jurisdiction::US, ComplianceLevel::High, RiskLevel::Medium), 1, - Address::from_slice(&[2u8; 20]).unwrap(), + Address::from_slice(&[2u8; 20]).expect("valid fixed-length slice"), 1000, 100, - Address::from_slice(&[3u8; 20]).unwrap(), + Address::from_slice(&[3u8; 20]).expect("valid fixed-length slice"), 1000000, Hash::sha3_384(b"test"), ); @@ -195,26 +195,26 @@ mod tests { // 验证池已创建 let pool = factory.get_pool(&asset, 1); assert!(pool.is_some()); - assert_eq!(pool.unwrap().total_fragments, 1000); + assert_eq!(pool.expect("mainnet: handle error").total_fragments, 1000); } #[test] fn test_recompose_asset() { let mut factory = FragmentationFactory::new(); - let asset = Address::from_slice(&[1u8; 20]).unwrap(); + let asset = Address::from_slice(&[1u8; 20]).expect("valid fixed-length slice"); factory.approve_asset(asset.clone()); factory.create_pool( asset.clone(), GNACSCode::new(AssetCategory::RealEstate, 0x01, Jurisdiction::US, ComplianceLevel::High, RiskLevel::Medium), 1, - Address::from_slice(&[2u8; 20]).unwrap(), + Address::from_slice(&[2u8; 20]).expect("valid fixed-length slice"), 1000, 100, - Address::from_slice(&[3u8; 20]).unwrap(), + Address::from_slice(&[3u8; 20]).expect("valid fixed-length slice"), 1000000, Hash::sha3_384(b"test"), - ).unwrap(); + ).expect("FIX-006: unexpected None/Err"); // 碎片不足应该失败 let result = factory.recompose_asset(&asset, 1, 999); @@ -225,15 +225,15 @@ mod tests { assert!(result.is_ok()); // 池应该被停用 - let pool = factory.get_pool(&asset, 1).unwrap(); + let pool = factory.get_pool(&asset, 1).expect("FIX-006: unexpected None/Err"); assert!(!pool.is_active); } #[test] fn test_get_active_pools() { let mut factory = FragmentationFactory::new(); - let asset1 = Address::from_slice(&[1u8; 20]).unwrap(); - let asset2 = Address::from_slice(&[2u8; 20]).unwrap(); + let asset1 = Address::from_slice(&[1u8; 20]).expect("valid fixed-length slice"); + let asset2 = Address::from_slice(&[2u8; 20]).expect("valid fixed-length slice"); factory.approve_asset(asset1.clone()); factory.approve_asset(asset2.clone()); @@ -243,31 +243,31 @@ mod tests { asset1.clone(), GNACSCode::new(AssetCategory::RealEstate, 0x01, Jurisdiction::US, ComplianceLevel::High, RiskLevel::Medium), 1, - Address::from_slice(&[3u8; 20]).unwrap(), + Address::from_slice(&[3u8; 20]).expect("valid fixed-length slice"), 1000, 100, - Address::from_slice(&[4u8; 20]).unwrap(), + Address::from_slice(&[4u8; 20]).expect("valid fixed-length slice"), 1000000, Hash::sha3_384(b"test1"), - ).unwrap(); + ).expect("FIX-006: unexpected None/Err"); factory.create_pool( asset2.clone(), GNACSCode::new(AssetCategory::RealEstate, 0x01, Jurisdiction::US, ComplianceLevel::High, RiskLevel::Medium), 1, - Address::from_slice(&[5u8; 20]).unwrap(), + Address::from_slice(&[5u8; 20]).expect("valid fixed-length slice"), 2000, 200, - Address::from_slice(&[6u8; 20]).unwrap(), + Address::from_slice(&[6u8; 20]).expect("valid fixed-length slice"), 1000000, Hash::sha3_384(b"test2"), - ).unwrap(); + ).expect("FIX-006: unexpected None/Err"); // 应该有两个活跃池 assert_eq!(factory.get_active_pools().len(), 2); // 停用一个池 - factory.recompose_asset(&asset1, 1, 1000).unwrap(); + factory.recompose_asset(&asset1, 1, 1000).expect("FIX-006: unexpected None/Err"); // 应该只有一个活跃池 assert_eq!(factory.get_active_pools().len(), 1); diff --git a/nac-udm/src/l1_protocol/fragmentation/fork.rs b/nac-udm/src/l1_protocol/fragmentation/fork.rs index 765ccaf..faa41c9 100644 --- a/nac-udm/src/l1_protocol/fragmentation/fork.rs +++ b/nac-udm/src/l1_protocol/fragmentation/fork.rs @@ -342,9 +342,9 @@ mod tests { #[test] fn test_create_fork() { let mut manager = AssetForkManager::new(); - let parent = Address::from_slice(&[1u8; 20]).unwrap(); - let fork = Address::from_slice(&[2u8; 20]).unwrap(); - let creator = Address::from_slice(&[3u8; 20]).unwrap(); + let parent = Address::from_slice(&[1u8; 20]).expect("valid fixed-length slice"); + let fork = Address::from_slice(&[2u8; 20]).expect("valid fixed-length slice"); + let creator = Address::from_slice(&[3u8; 20]).expect("valid fixed-length slice"); let result = manager.create_fork( parent.clone(), @@ -368,17 +368,17 @@ mod tests { #[test] fn test_invalid_fork_ratio() { let mut manager = AssetForkManager::new(); - let parent = Address::from_slice(&[1u8; 20]).unwrap(); + let parent = Address::from_slice(&[1u8; 20]).expect("valid fixed-length slice"); // 比例太小(1:1000) let result = manager.create_fork( parent.clone(), - Address::from_slice(&[2u8; 20]).unwrap(), + Address::from_slice(&[2u8; 20]).expect("valid fixed-length slice"), 1000, 1, 1000, GNACSCode::new(AssetCategory::RealEstate, 0x01, Jurisdiction::US, ComplianceLevel::High, RiskLevel::Medium), - Address::from_slice(&[3u8; 20]).unwrap(), + Address::from_slice(&[3u8; 20]).expect("valid fixed-length slice"), 1000000, ); assert!(result.is_err()); @@ -386,12 +386,12 @@ mod tests { // 比例太大(1000:1) let result = manager.create_fork( parent, - Address::from_slice(&[4u8; 20]).unwrap(), + Address::from_slice(&[4u8; 20]).expect("valid fixed-length slice"), 1000, 1000, 1, GNACSCode::new(AssetCategory::RealEstate, 0x01, Jurisdiction::US, ComplianceLevel::High, RiskLevel::Medium), - Address::from_slice(&[3u8; 20]).unwrap(), + Address::from_slice(&[3u8; 20]).expect("valid fixed-length slice"), 1000000, ); assert!(result.is_err()); @@ -400,8 +400,8 @@ mod tests { #[test] fn test_create_snapshot() { let mut manager = AssetForkManager::new(); - let parent = Address::from_slice(&[1u8; 20]).unwrap(); - let fork = Address::from_slice(&[2u8; 20]).unwrap(); + let parent = Address::from_slice(&[1u8; 20]).expect("valid fixed-length slice"); + let fork = Address::from_slice(&[2u8; 20]).expect("valid fixed-length slice"); let fork_id = manager.create_fork( parent, @@ -410,34 +410,34 @@ mod tests { 1, 1, GNACSCode::new(AssetCategory::RealEstate, 0x01, Jurisdiction::US, ComplianceLevel::High, RiskLevel::Medium), - Address::from_slice(&[3u8; 20]).unwrap(), + Address::from_slice(&[3u8; 20]).expect("valid fixed-length slice"), 1000000, - ).unwrap(); + ).expect("FIX-006: unexpected None/Err"); // 创建快照 let holdings = vec![ - (Address::from_slice(&[10u8; 20]).unwrap(), 1000), - (Address::from_slice(&[11u8; 20]).unwrap(), 2000), + (Address::from_slice(&[10u8; 20]).expect("valid fixed-length slice"), 1000), + (Address::from_slice(&[11u8; 20]).expect("valid fixed-length slice"), 2000), ]; let result = manager.create_snapshot(fork_id.clone(), 1000, 1000000, holdings); assert!(result.is_ok()); // 验证快照 - let snapshot = manager.get_snapshot(&fork_id).unwrap(); + let snapshot = manager.get_snapshot(&fork_id).expect("FIX-006: unexpected None/Err"); assert_eq!(snapshot.total_supply, 3000); } #[test] fn test_calculate_fork_amount() { let fork_info = ForkInfo::new( - Address::from_slice(&[1u8; 20]).unwrap(), - Address::from_slice(&[2u8; 20]).unwrap(), + Address::from_slice(&[1u8; 20]).expect("valid fixed-length slice"), + Address::from_slice(&[2u8; 20]).expect("valid fixed-length slice"), 1000, 1, 2, // 1:2 比例 GNACSCode::new(AssetCategory::RealEstate, 0x01, Jurisdiction::US, ComplianceLevel::High, RiskLevel::Medium), - Address::from_slice(&[3u8; 20]).unwrap(), + Address::from_slice(&[3u8; 20]).expect("valid fixed-length slice"), 1000000, ); @@ -448,9 +448,9 @@ mod tests { #[test] fn test_calculate_user_fork_amount() { let mut manager = AssetForkManager::new(); - let parent = Address::from_slice(&[1u8; 20]).unwrap(); - let fork = Address::from_slice(&[2u8; 20]).unwrap(); - let user = Address::from_slice(&[10u8; 20]).unwrap(); + let parent = Address::from_slice(&[1u8; 20]).expect("valid fixed-length slice"); + let fork = Address::from_slice(&[2u8; 20]).expect("valid fixed-length slice"); + let user = Address::from_slice(&[10u8; 20]).expect("valid fixed-length slice"); let fork_id = manager.create_fork( parent, @@ -459,9 +459,9 @@ mod tests { 2, 1, // 2:1 比例 GNACSCode::new(AssetCategory::RealEstate, 0x01, Jurisdiction::US, ComplianceLevel::High, RiskLevel::Medium), - Address::from_slice(&[3u8; 20]).unwrap(), + Address::from_slice(&[3u8; 20]).expect("valid fixed-length slice"), 1000000, - ).unwrap(); + ).expect("FIX-006: unexpected None/Err"); // 创建快照 manager.create_snapshot( @@ -469,19 +469,19 @@ mod tests { 1000, 1000000, vec![(user.clone(), 1000)], - ).unwrap(); + ).expect("FIX-006: unexpected None/Err"); // 计算用户应获得的分叉数量 - let amount = manager.calculate_user_fork_amount(&fork_id, &user).unwrap(); + let amount = manager.calculate_user_fork_amount(&fork_id, &user).expect("FIX-006: unexpected None/Err"); assert_eq!(amount, 2000); // 1000 * 2/1 = 2000 } #[test] fn test_get_fork_depth() { let mut manager = AssetForkManager::new(); - let root = Address::from_slice(&[1u8; 20]).unwrap(); - let fork1 = Address::from_slice(&[2u8; 20]).unwrap(); - let fork2 = Address::from_slice(&[3u8; 20]).unwrap(); + let root = Address::from_slice(&[1u8; 20]).expect("valid fixed-length slice"); + let fork1 = Address::from_slice(&[2u8; 20]).expect("valid fixed-length slice"); + let fork2 = Address::from_slice(&[3u8; 20]).expect("valid fixed-length slice"); // 创建第一层分叉 manager.create_fork( @@ -491,9 +491,9 @@ mod tests { 1, 1, GNACSCode::new(AssetCategory::RealEstate, 0x01, Jurisdiction::US, ComplianceLevel::High, RiskLevel::Medium), - Address::from_slice(&[10u8; 20]).unwrap(), + Address::from_slice(&[10u8; 20]).expect("valid fixed-length slice"), 1000000, - ).unwrap(); + ).expect("FIX-006: unexpected None/Err"); // 创建第二层分叉 manager.create_fork( @@ -503,9 +503,9 @@ mod tests { 1, 1, GNACSCode::new(AssetCategory::RealEstate, 0x01, Jurisdiction::US, ComplianceLevel::High, RiskLevel::Medium), - Address::from_slice(&[10u8; 20]).unwrap(), + Address::from_slice(&[10u8; 20]).expect("valid fixed-length slice"), 2000000, - ).unwrap(); + ).expect("FIX-006: unexpected None/Err"); assert_eq!(manager.get_fork_depth(&root), 0); assert_eq!(manager.get_fork_depth(&fork1), 1); @@ -515,9 +515,9 @@ mod tests { #[test] fn test_get_root_asset() { let mut manager = AssetForkManager::new(); - let root = Address::from_slice(&[1u8; 20]).unwrap(); - let fork1 = Address::from_slice(&[2u8; 20]).unwrap(); - let fork2 = Address::from_slice(&[3u8; 20]).unwrap(); + let root = Address::from_slice(&[1u8; 20]).expect("valid fixed-length slice"); + let fork1 = Address::from_slice(&[2u8; 20]).expect("valid fixed-length slice"); + let fork2 = Address::from_slice(&[3u8; 20]).expect("valid fixed-length slice"); manager.create_fork( root.clone(), @@ -526,9 +526,9 @@ mod tests { 1, 1, GNACSCode::new(AssetCategory::RealEstate, 0x01, Jurisdiction::US, ComplianceLevel::High, RiskLevel::Medium), - Address::from_slice(&[10u8; 20]).unwrap(), + Address::from_slice(&[10u8; 20]).expect("valid fixed-length slice"), 1000000, - ).unwrap(); + ).expect("FIX-006: unexpected None/Err"); manager.create_fork( fork1.clone(), @@ -537,9 +537,9 @@ mod tests { 1, 1, GNACSCode::new(AssetCategory::RealEstate, 0x01, Jurisdiction::US, ComplianceLevel::High, RiskLevel::Medium), - Address::from_slice(&[10u8; 20]).unwrap(), + Address::from_slice(&[10u8; 20]).expect("valid fixed-length slice"), 2000000, - ).unwrap(); + ).expect("FIX-006: unexpected None/Err"); assert_eq!(manager.get_root_asset(&fork2), root); assert_eq!(manager.get_root_asset(&fork1), root); @@ -549,8 +549,8 @@ mod tests { #[test] fn test_activate_deactivate_fork() { let mut manager = AssetForkManager::new(); - let parent = Address::from_slice(&[1u8; 20]).unwrap(); - let fork = Address::from_slice(&[2u8; 20]).unwrap(); + let parent = Address::from_slice(&[1u8; 20]).expect("valid fixed-length slice"); + let fork = Address::from_slice(&[2u8; 20]).expect("valid fixed-length slice"); let fork_id = manager.create_fork( parent.clone(), @@ -559,21 +559,21 @@ mod tests { 1, 1, GNACSCode::new(AssetCategory::RealEstate, 0x01, Jurisdiction::US, ComplianceLevel::High, RiskLevel::Medium), - Address::from_slice(&[3u8; 20]).unwrap(), + Address::from_slice(&[3u8; 20]).expect("valid fixed-length slice"), 1000000, - ).unwrap(); + ).expect("FIX-006: unexpected None/Err"); // 初始应该是激活的 let fork_info = manager.get_forks(&parent)[0]; assert!(fork_info.is_active); // 停用 - manager.deactivate_fork(&fork_id).unwrap(); + manager.deactivate_fork(&fork_id).expect("FIX-006: unexpected None/Err"); let fork_info = manager.get_forks(&parent)[0]; assert!(!fork_info.is_active); // 重新激活 - manager.activate_fork(&fork_id).unwrap(); + manager.activate_fork(&fork_id).expect("FIX-006: unexpected None/Err"); let fork_info = manager.get_forks(&parent)[0]; assert!(fork_info.is_active); } diff --git a/nac-udm/src/l1_protocol/fragmentation/layered.rs b/nac-udm/src/l1_protocol/fragmentation/layered.rs index 123741c..4d7503d 100644 --- a/nac-udm/src/l1_protocol/fragmentation/layered.rs +++ b/nac-udm/src/l1_protocol/fragmentation/layered.rs @@ -156,12 +156,12 @@ mod tests { #[test] fn test_create_layered_fragmentation() { let mut manager = LayeredFragmentationManager::new(); - let asset = Address::from_slice(&[1u8; 20]).unwrap(); + let asset = Address::from_slice(&[1u8; 20]).expect("valid fixed-length slice"); let configs = vec![ LayerConfig::new( FragmentLayer::L1Core, - Address::from_slice(&[2u8; 20]).unwrap(), + Address::from_slice(&[2u8; 20]).expect("valid fixed-length slice"), 1000, true, true, @@ -169,7 +169,7 @@ mod tests { ), LayerConfig::new( FragmentLayer::L2Trading, - Address::from_slice(&[3u8; 20]).unwrap(), + Address::from_slice(&[3u8; 20]).expect("valid fixed-length slice"), 2000, true, true, @@ -183,18 +183,18 @@ mod tests { // 验证层级已创建 let layers = manager.get_layer_configs(&asset, 1); assert!(layers.is_some()); - assert_eq!(layers.unwrap().len(), 2); + assert_eq!(layers.expect("mainnet: handle error").len(), 2); } #[test] fn test_duplicate_layer_rejection() { let mut manager = LayeredFragmentationManager::new(); - let asset = Address::from_slice(&[1u8; 20]).unwrap(); + let asset = Address::from_slice(&[1u8; 20]).expect("valid fixed-length slice"); let configs = vec![ LayerConfig::new( FragmentLayer::L1Core, - Address::from_slice(&[2u8; 20]).unwrap(), + Address::from_slice(&[2u8; 20]).expect("valid fixed-length slice"), 1000, true, true, @@ -202,7 +202,7 @@ mod tests { ), LayerConfig::new( FragmentLayer::L1Core, // 重复 - Address::from_slice(&[3u8; 20]).unwrap(), + Address::from_slice(&[3u8; 20]).expect("valid fixed-length slice"), 2000, true, true, @@ -249,12 +249,12 @@ mod tests { #[test] fn test_can_convert() { let mut manager = LayeredFragmentationManager::new(); - let asset = Address::from_slice(&[1u8; 20]).unwrap(); + let asset = Address::from_slice(&[1u8; 20]).expect("valid fixed-length slice"); let configs = vec![ LayerConfig::new( FragmentLayer::L1Core, - Address::from_slice(&[2u8; 20]).unwrap(), + Address::from_slice(&[2u8; 20]).expect("valid fixed-length slice"), 1000, true, true, // 可组合 @@ -262,7 +262,7 @@ mod tests { ), LayerConfig::new( FragmentLayer::L2Trading, - Address::from_slice(&[3u8; 20]).unwrap(), + Address::from_slice(&[3u8; 20]).expect("valid fixed-length slice"), 2000, true, false, // 不可组合 @@ -270,7 +270,7 @@ mod tests { ), ]; - manager.create_layered_fragmentation(asset.clone(), 1, configs).unwrap(); + manager.create_layered_fragmentation(asset.clone(), 1, configs).expect("FIX-006: unexpected None/Err"); // L1 -> L2 应该可以(L1可组合) assert!(manager.can_convert(&asset, 1, FragmentLayer::L1Core, FragmentLayer::L2Trading)); @@ -282,12 +282,12 @@ mod tests { #[test] fn test_get_supported_layers() { let mut manager = LayeredFragmentationManager::new(); - let asset = Address::from_slice(&[1u8; 20]).unwrap(); + let asset = Address::from_slice(&[1u8; 20]).expect("valid fixed-length slice"); let configs = vec![ LayerConfig::new( FragmentLayer::L1Core, - Address::from_slice(&[2u8; 20]).unwrap(), + Address::from_slice(&[2u8; 20]).expect("valid fixed-length slice"), 1000, true, true, @@ -295,7 +295,7 @@ mod tests { ), LayerConfig::new( FragmentLayer::L3Derivative, - Address::from_slice(&[3u8; 20]).unwrap(), + Address::from_slice(&[3u8; 20]).expect("valid fixed-length slice"), 2000, true, true, @@ -303,7 +303,7 @@ mod tests { ), ]; - manager.create_layered_fragmentation(asset.clone(), 1, configs).unwrap(); + manager.create_layered_fragmentation(asset.clone(), 1, configs).expect("FIX-006: unexpected None/Err"); let layers = manager.get_supported_layers(&asset, 1); assert_eq!(layers.len(), 2); diff --git a/nac-udm/src/l1_protocol/fragmentation/mod.rs b/nac-udm/src/l1_protocol/fragmentation/mod.rs index 1b59180..991be23 100644 --- a/nac-udm/src/l1_protocol/fragmentation/mod.rs +++ b/nac-udm/src/l1_protocol/fragmentation/mod.rs @@ -380,13 +380,13 @@ mod tests { #[test] fn test_fragmentation_pool_creation() { let pool = FragmentationPool::new( - Address::from_slice(&[1u8; 20]).unwrap(), + Address::from_slice(&[1u8; 20]).expect("valid fixed-length slice"), GNACSCode::new(AssetCategory::Physical, 0x01, Jurisdiction::US, ComplianceLevel::High, RiskLevel::Medium), 1, - Address::from_slice(&[2u8; 20]).unwrap(), + Address::from_slice(&[2u8; 20]).expect("valid fixed-length slice"), 1000, 100, - Address::from_slice(&[3u8; 20]).unwrap(), + Address::from_slice(&[3u8; 20]).expect("valid fixed-length slice"), 1000000, Hash::sha3_384(b"test_receipt"), ); @@ -408,9 +408,9 @@ mod tests { #[test] fn test_cross_chain_fragment() { let cross_chain = CrossChainFragment::new( - Address::from_slice(&[1u8; 20]).unwrap(), + Address::from_slice(&[1u8; 20]).expect("valid fixed-length slice"), 2, - Address::from_slice(&[2u8; 20]).unwrap(), + Address::from_slice(&[2u8; 20]).expect("valid fixed-length slice"), 1_000_000_000_000_000_000, // 1:1 GNACSCode::new(AssetCategory::Physical, 0x01, Jurisdiction::US, ComplianceLevel::High, RiskLevel::Medium), ); @@ -419,9 +419,9 @@ mod tests { // 测试0.9:1的兑换率 let cross_chain_with_fee = CrossChainFragment::new( - Address::from_slice(&[1u8; 20]).unwrap(), + Address::from_slice(&[1u8; 20]).expect("valid fixed-length slice"), 2, - Address::from_slice(&[2u8; 20]).unwrap(), + Address::from_slice(&[2u8; 20]).expect("valid fixed-length slice"), 900_000_000_000_000_000, // 0.9:1 GNACSCode::new(AssetCategory::Physical, 0x01, Jurisdiction::US, ComplianceLevel::High, RiskLevel::Medium), ); @@ -432,13 +432,13 @@ mod tests { #[test] fn test_amm_pool_swap_calculation() { let pool = AMMPool::new( - Address::from_slice(&[1u8; 20]).unwrap(), - Address::from_slice(&[2u8; 20]).unwrap(), + Address::from_slice(&[1u8; 20]).expect("valid fixed-length slice"), + Address::from_slice(&[2u8; 20]).expect("valid fixed-length slice"), 10000, // 10000 fragments 10000, // 10000 base tokens 30, // 0.3% fee GNACSCode::new(AssetCategory::Physical, 0x01, Jurisdiction::US, ComplianceLevel::High, RiskLevel::Medium), - Address::from_slice(&[3u8; 20]).unwrap(), + Address::from_slice(&[3u8; 20]).expect("valid fixed-length slice"), 1000000, ); @@ -450,13 +450,13 @@ mod tests { #[test] fn test_amm_pool_liquidity_calculation() { let pool = AMMPool::new( - Address::from_slice(&[1u8; 20]).unwrap(), - Address::from_slice(&[2u8; 20]).unwrap(), + Address::from_slice(&[1u8; 20]).expect("valid fixed-length slice"), + Address::from_slice(&[2u8; 20]).expect("valid fixed-length slice"), 10000, 20000, // 1:2比例 30, GNACSCode::new(AssetCategory::Physical, 0x01, Jurisdiction::US, ComplianceLevel::High, RiskLevel::Medium), - Address::from_slice(&[3u8; 20]).unwrap(), + Address::from_slice(&[3u8; 20]).expect("valid fixed-length slice"), 1000000, ); diff --git a/nac-udm/src/l1_protocol/gnacs/code.rs b/nac-udm/src/l1_protocol/gnacs/code.rs index 5c1f6a1..c044c1f 100644 --- a/nac-udm/src/l1_protocol/gnacs/code.rs +++ b/nac-udm/src/l1_protocol/gnacs/code.rs @@ -168,7 +168,7 @@ mod tests { let hex = code.to_hex(); assert_eq!(hex.len(), 12); - let decoded = GNACSCode::from_hex(&hex).unwrap(); + let decoded = GNACSCode::from_hex(&hex).expect("FIX-006: unexpected None/Err"); assert_eq!(code, decoded); } @@ -177,7 +177,7 @@ mod tests { let mut bytes = [1u8, 2, 3, 4, 5, 0]; bytes[5] = GNACSCode::calculate_checksum(&bytes[0..5]); - let code = GNACSCode::from_bytes(bytes).unwrap(); + let code = GNACSCode::from_bytes(bytes).expect("FIX-006: unexpected None/Err"); assert!(code.verify_checksum()); } diff --git a/nac-udm/src/l1_protocol/layer_router.rs b/nac-udm/src/l1_protocol/layer_router.rs index 911678b..f5e5955 100644 --- a/nac-udm/src/l1_protocol/layer_router.rs +++ b/nac-udm/src/l1_protocol/layer_router.rs @@ -309,7 +309,7 @@ impl LayerRouter { // 验证消息是否应该到达当前层 let next_hop = self.routing_table .get_next_hop( - *message.route_path.last().unwrap(), + *message.route_path.last().expect("non-empty collection"), message.target_layer, ) .ok_or("No route found")?; @@ -437,8 +437,8 @@ mod tests { #[test] fn test_layer_message_creation() { - let sender = Address::from_slice(&[1u8; 32]).unwrap(); - let receiver = Address::from_slice(&[2u8; 32]).unwrap(); + let sender = Address::from_slice(&[1u8; 32]).expect("valid fixed-length slice"); + let receiver = Address::from_slice(&[2u8; 32]).expect("valid fixed-length slice"); let message = LayerMessage::new( LayerMessageType::Request, @@ -476,7 +476,7 @@ mod tests { #[test] fn test_message_queue() { let mut queue = LayerMessageQueue::new(); - let sender = Address::from_slice(&[1u8; 32]).unwrap(); + let sender = Address::from_slice(&[1u8; 32]).expect("valid fixed-length slice"); // 添加低优先级消息 let message1 = LayerMessage::new( @@ -505,15 +505,15 @@ mod tests { queue.enqueue(message2.clone()); // 高优先级消息应该先出队 - let dequeued = queue.dequeue().unwrap(); + let dequeued = queue.dequeue().expect("FIX-006: unexpected None/Err"); assert_eq!(dequeued.message_id, message2.message_id); } #[test] fn test_layer_router_send() { let mut router = LayerRouter::new(Layer::L1); - let sender = Address::from_slice(&[1u8; 32]).unwrap(); - let receiver = Address::from_slice(&[2u8; 32]).unwrap(); + let sender = Address::from_slice(&[1u8; 32]).expect("valid fixed-length slice"); + let receiver = Address::from_slice(&[2u8; 32]).expect("valid fixed-length slice"); let result = router.send_message( LayerMessageType::Request, @@ -533,8 +533,8 @@ mod tests { #[test] fn test_layer_router_receive() { let mut router = LayerRouter::new(Layer::L2); - let sender = Address::from_slice(&[1u8; 32]).unwrap(); - let receiver = Address::from_slice(&[2u8; 32]).unwrap(); + let sender = Address::from_slice(&[1u8; 32]).expect("valid fixed-length slice"); + let receiver = Address::from_slice(&[2u8; 32]).expect("valid fixed-length slice"); // 创建从L1发往L2的消息 let message = LayerMessage::new( @@ -557,8 +557,8 @@ mod tests { #[test] fn test_layer_router_forward() { let mut router = LayerRouter::new(Layer::L1); - let sender = Address::from_slice(&[1u8; 32]).unwrap(); - let receiver = Address::from_slice(&[2u8; 32]).unwrap(); + let sender = Address::from_slice(&[1u8; 32]).expect("valid fixed-length slice"); + let receiver = Address::from_slice(&[2u8; 32]).expect("valid fixed-length slice"); // 创建从L0发往L2的消息(需要经过L1转发) let message = LayerMessage::new( @@ -585,7 +585,7 @@ mod tests { router.register_handler(LayerMessageType::Request, "handler1".to_string()); router.register_handler(LayerMessageType::Request, "handler2".to_string()); - let handlers = router.get_handlers(&LayerMessageType::Request).unwrap(); + let handlers = router.get_handlers(&LayerMessageType::Request).expect("FIX-006: unexpected None/Err"); assert_eq!(handlers.len(), 2); assert!(handlers.contains(&"handler1".to_string())); assert!(handlers.contains(&"handler2".to_string())); @@ -594,8 +594,8 @@ mod tests { #[test] fn test_process_messages() { let mut router = LayerRouter::new(Layer::L1); - let sender = Address::from_slice(&[1u8; 32]).unwrap(); - let receiver = Address::from_slice(&[2u8; 32]).unwrap(); + let sender = Address::from_slice(&[1u8; 32]).expect("valid fixed-length slice"); + let receiver = Address::from_slice(&[2u8; 32]).expect("valid fixed-length slice"); // 发送2条消息 router.send_message( @@ -606,7 +606,7 @@ mod tests { vec![1], 1000, 10, - ).unwrap(); + ).expect("FIX-006: unexpected None/Err"); router.send_message( LayerMessageType::Request, @@ -616,7 +616,7 @@ mod tests { vec![2], 1001, 5, - ).unwrap(); + ).expect("FIX-006: unexpected None/Err"); // 处理待发送消息 let processed = router.process_outbound_messages(); diff --git a/nac-udm/src/l1_protocol/nvm/gas_meter.rs b/nac-udm/src/l1_protocol/nvm/gas_meter.rs index 7832330..e861c00 100644 --- a/nac-udm/src/l1_protocol/nvm/gas_meter.rs +++ b/nac-udm/src/l1_protocol/nvm/gas_meter.rs @@ -192,7 +192,7 @@ mod tests { #[test] fn test_has_gas() { let mut meter = GasMeter::new(100000); - meter.consume_gas(50000).unwrap(); + meter.consume_gas(50000).expect("FIX-006: unexpected None/Err"); assert!(meter.has_gas(50000)); assert!(!meter.has_gas(50001)); } @@ -200,7 +200,7 @@ mod tests { #[test] fn test_reset() { let mut meter = GasMeter::new(100000); - meter.consume_gas(50000).unwrap(); + meter.consume_gas(50000).expect("FIX-006: unexpected None/Err"); meter.reset(); assert_eq!(meter.gas_used(), 0); assert_eq!(meter.gas_remaining(), 100000); diff --git a/nac-udm/src/l1_protocol/parallel_chain_manager.rs b/nac-udm/src/l1_protocol/parallel_chain_manager.rs index 33feafb..0a301be 100644 --- a/nac-udm/src/l1_protocol/parallel_chain_manager.rs +++ b/nac-udm/src/l1_protocol/parallel_chain_manager.rs @@ -425,7 +425,7 @@ mod tests { #[test] fn test_parallel_chain_info_creation() { let genesis_hash = Hash::sha3_384(b"genesis"); - let validator = Address::from_slice(&[1u8; 20]).unwrap(); + let validator = Address::from_slice(&[1u8; 20]).expect("valid fixed-length slice"); let chain_info = ParallelChainInfo::new( 1, @@ -445,7 +445,7 @@ mod tests { #[test] fn test_chain_height_update() { let genesis_hash = Hash::sha3_384(b"genesis"); - let validator = Address::from_slice(&[1u8; 20]).unwrap(); + let validator = Address::from_slice(&[1u8; 20]).expect("valid fixed-length slice"); let mut chain_info = ParallelChainInfo::new( 1, @@ -467,8 +467,8 @@ mod tests { #[test] fn test_validator_management() { let genesis_hash = Hash::sha3_384(b"genesis"); - let validator1 = Address::from_slice(&[1u8; 20]).unwrap(); - let validator2 = Address::from_slice(&[2u8; 20]).unwrap(); + let validator1 = Address::from_slice(&[1u8; 20]).expect("valid fixed-length slice"); + let validator2 = Address::from_slice(&[2u8; 20]).expect("valid fixed-length slice"); let mut chain_info = ParallelChainInfo::new( 1, @@ -514,7 +514,7 @@ mod tests { RiskLevel::Medium, ); - let address = Address::from_slice(&[1u8; 20]).unwrap(); + let address = Address::from_slice(&[1u8; 20]).expect("valid fixed-length slice"); // 基本规则(只匹配源链) let rule1 = RoutingRule::new(Some(1), 2, 10); @@ -540,7 +540,7 @@ mod tests { // 注册主链 let genesis_hash = Hash::sha3_384(b"genesis"); - let validator = Address::from_slice(&[1u8; 20]).unwrap(); + let validator = Address::from_slice(&[1u8; 20]).expect("valid fixed-length slice"); let main_chain = ParallelChainInfo::new( 1, @@ -587,7 +587,7 @@ mod tests { let mut manager = ParallelChainManager::new(1); let genesis_hash = Hash::sha3_384(b"genesis"); - let validator = Address::from_slice(&[1u8; 20]).unwrap(); + let validator = Address::from_slice(&[1u8; 20]).expect("valid fixed-length slice"); let chain = ParallelChainInfo::new( 1, @@ -598,11 +598,11 @@ mod tests { vec![validator], ); - manager.register_chain(chain).unwrap(); + manager.register_chain(chain).expect("FIX-006: unexpected None/Err"); // 更新状态 assert!(manager.update_chain_status(1, ChainStatus::Running).is_ok()); - assert_eq!(manager.get_chain(1).unwrap().status, ChainStatus::Running); + assert_eq!(manager.get_chain(1).expect("mainnet: handle error").status, ChainStatus::Running); // 更新不存在的链失败 assert!(manager.update_chain_status(999, ChainStatus::Running).is_err()); @@ -614,7 +614,7 @@ mod tests { // 注册链 let genesis_hash = Hash::sha3_384(b"genesis"); - let validator = Address::from_slice(&[1u8; 20]).unwrap(); + let validator = Address::from_slice(&[1u8; 20]).expect("valid fixed-length slice"); let main_chain = ParallelChainInfo::new( 1, @@ -624,7 +624,7 @@ mod tests { 1000, vec![validator.clone()], ); - manager.register_chain(main_chain).unwrap(); + manager.register_chain(main_chain).expect("FIX-006: unexpected None/Err"); let asset_chain = ParallelChainInfo::new( 2, @@ -634,7 +634,7 @@ mod tests { 1000, vec![validator], ); - manager.register_chain(asset_chain).unwrap(); + manager.register_chain(asset_chain).expect("FIX-006: unexpected None/Err"); // 添加路由规则 let gnacs = GNACSCode::new( @@ -651,11 +651,11 @@ mod tests { assert!(manager.add_routing_rule(rule).is_ok()); // 测试路由 - let target = manager.route_transaction(1, Some(&gnacs), None).unwrap(); + let target = manager.route_transaction(1, Some(&gnacs), None).expect("FIX-006: unexpected None/Err"); assert_eq!(target, 2); // 没有匹配规则,路由到主链 - let target = manager.route_transaction(1, None, None).unwrap(); + let target = manager.route_transaction(1, None, None).expect("FIX-006: unexpected None/Err"); assert_eq!(target, 1); } @@ -664,7 +664,7 @@ mod tests { let mut manager = ParallelChainManager::new(1); let genesis_hash = Hash::sha3_384(b"genesis"); - let validator = Address::from_slice(&[1u8; 20]).unwrap(); + let validator = Address::from_slice(&[1u8; 20]).expect("valid fixed-length slice"); let main_chain = ParallelChainInfo::new( 1, @@ -674,7 +674,7 @@ mod tests { 1000, vec![validator.clone()], ); - manager.register_chain(main_chain).unwrap(); + manager.register_chain(main_chain).expect("FIX-006: unexpected None/Err"); let asset_chain = ParallelChainInfo::new( 2, @@ -684,7 +684,7 @@ mod tests { 1000, vec![validator], ); - manager.register_chain(asset_chain).unwrap(); + manager.register_chain(asset_chain).expect("FIX-006: unexpected None/Err"); // 不能注销主链 assert!(manager.unregister_chain(1).is_err()); @@ -702,7 +702,7 @@ mod tests { let mut manager = ParallelChainManager::new(1); let genesis_hash = Hash::sha3_384(b"genesis"); - let validator = Address::from_slice(&[1u8; 20]).unwrap(); + let validator = Address::from_slice(&[1u8; 20]).expect("valid fixed-length slice"); // 注册2条链 let main_chain = ParallelChainInfo::new( @@ -713,7 +713,7 @@ mod tests { 1000, vec![validator.clone()], ); - manager.register_chain(main_chain).unwrap(); + manager.register_chain(main_chain).expect("FIX-006: unexpected None/Err"); let asset_chain = ParallelChainInfo::new( 2, @@ -723,11 +723,11 @@ mod tests { 1000, vec![validator], ); - manager.register_chain(asset_chain).unwrap(); + manager.register_chain(asset_chain).expect("FIX-006: unexpected None/Err"); // 添加路由规则 let rule = RoutingRule::new(Some(1), 2, 10); - manager.add_routing_rule(rule).unwrap(); + manager.add_routing_rule(rule).expect("FIX-006: unexpected None/Err"); // 检查统计信息 let stats = manager.get_stats(); diff --git a/nac-udm/src/l1_protocol/shard_governance.rs b/nac-udm/src/l1_protocol/shard_governance.rs index 0d91518..21b91df 100644 --- a/nac-udm/src/l1_protocol/shard_governance.rs +++ b/nac-udm/src/l1_protocol/shard_governance.rs @@ -625,7 +625,7 @@ mod tests { 1000, ); - let validator = Address::from_slice(&[1u8; 20]).unwrap(); + let validator = Address::from_slice(&[1u8; 20]).expect("valid fixed-length slice"); let shard_info = ShardInfo::new(config, vec![validator]); assert_eq!(shard_info.status, ShardStatus::Initializing); @@ -635,7 +635,7 @@ mod tests { #[test] fn test_governance_proposal_creation() { - let proposer = Address::from_slice(&[1u8; 20]).unwrap(); + let proposer = Address::from_slice(&[1u8; 20]).expect("valid fixed-length slice"); let config = ShardConfig::new( 1, @@ -663,9 +663,9 @@ mod tests { #[test] fn test_proposal_voting() { - let proposer = Address::from_slice(&[1u8; 20]).unwrap(); - let voter1 = Address::from_slice(&[2u8; 20]).unwrap(); - let voter2 = Address::from_slice(&[3u8; 20]).unwrap(); + let proposer = Address::from_slice(&[1u8; 20]).expect("valid fixed-length slice"); + let voter1 = Address::from_slice(&[2u8; 20]).expect("valid fixed-length slice"); + let voter2 = Address::from_slice(&[3u8; 20]).expect("valid fixed-length slice"); let config = ShardConfig::new( 1, @@ -698,9 +698,9 @@ mod tests { #[test] fn test_proposal_finalization() { - let proposer = Address::from_slice(&[1u8; 20]).unwrap(); - let voter1 = Address::from_slice(&[2u8; 20]).unwrap(); - let voter2 = Address::from_slice(&[3u8; 20]).unwrap(); + let proposer = Address::from_slice(&[1u8; 20]).expect("valid fixed-length slice"); + let voter1 = Address::from_slice(&[2u8; 20]).expect("valid fixed-length slice"); + let voter2 = Address::from_slice(&[3u8; 20]).expect("valid fixed-length slice"); let config = ShardConfig::new( 1, @@ -720,8 +720,8 @@ mod tests { ); // 投票(70%赞成) - proposal.vote(voter1, true, 70).unwrap(); - proposal.vote(voter2, false, 30).unwrap(); + proposal.vote(voter1, true, 70).expect("FIX-006: unexpected None/Err"); + proposal.vote(voter2, false, 30).expect("FIX-006: unexpected None/Err"); // 完成投票(阈值60%) proposal.finalize(60); @@ -740,7 +740,7 @@ mod tests { #[test] fn test_propose_create_shard() { let mut governance = ShardGovernance::new(60, 86400, 3); - let proposer = Address::from_slice(&[1u8; 20]).unwrap(); + let proposer = Address::from_slice(&[1u8; 20]).expect("valid fixed-length slice"); let config = ShardConfig::new( 1, @@ -753,16 +753,16 @@ mod tests { let result = governance.propose_create_shard(config, proposer, 1000); assert!(result.is_ok()); - let proposal_id = result.unwrap(); + let proposal_id = result.expect("FIX-006: unexpected None/Err"); assert!(governance.get_proposal(&proposal_id).is_some()); } #[test] fn test_execute_create_shard_proposal() { let mut governance = ShardGovernance::new(60, 86400, 3); - let proposer = Address::from_slice(&[1u8; 20]).unwrap(); - let voter = Address::from_slice(&[2u8; 20]).unwrap(); - let validator = Address::from_slice(&[3u8; 20]).unwrap(); + let proposer = Address::from_slice(&[1u8; 20]).expect("valid fixed-length slice"); + let voter = Address::from_slice(&[2u8; 20]).expect("valid fixed-length slice"); + let validator = Address::from_slice(&[3u8; 20]).expect("valid fixed-length slice"); let config = ShardConfig::new( 1, @@ -773,13 +773,13 @@ mod tests { ); // 创建提案 - let proposal_id = governance.propose_create_shard(config, proposer, 1000).unwrap(); + let proposal_id = governance.propose_create_shard(config, proposer, 1000).expect("FIX-006: unexpected None/Err"); // 投票 - governance.vote(&proposal_id, voter, true, 100).unwrap(); + governance.vote(&proposal_id, voter, true, 100).expect("FIX-006: unexpected None/Err"); // 完成投票 - governance.finalize_proposal(&proposal_id).unwrap(); + governance.finalize_proposal(&proposal_id).expect("FIX-006: unexpected None/Err"); // 执行提案 let validators = vec![validator; 5]; @@ -799,8 +799,8 @@ mod tests { 1000, ); - let validator1 = Address::from_slice(&[1u8; 20]).unwrap(); - let validator2 = Address::from_slice(&[2u8; 20]).unwrap(); + let validator1 = Address::from_slice(&[1u8; 20]).expect("valid fixed-length slice"); + let validator2 = Address::from_slice(&[2u8; 20]).expect("valid fixed-length slice"); let mut shard_info = ShardInfo::new(config, vec![validator1.clone()]); @@ -819,8 +819,8 @@ mod tests { #[test] fn test_governance_stats() { let mut governance = ShardGovernance::new(60, 86400, 3); - let proposer = Address::from_slice(&[1u8; 20]).unwrap(); - let _validator = Address::from_slice(&[3u8; 20]).unwrap(); + let proposer = Address::from_slice(&[1u8; 20]).expect("valid fixed-length slice"); + let _validator = Address::from_slice(&[3u8; 20]).expect("valid fixed-length slice"); let config = ShardConfig::new( 1, @@ -831,7 +831,7 @@ mod tests { ); // 创建提案 - governance.propose_create_shard(config, proposer, 1000).unwrap(); + governance.propose_create_shard(config, proposer, 1000).expect("FIX-006: unexpected None/Err"); let stats = governance.get_stats(); assert_eq!(stats.total_proposals, 1); diff --git a/nac-udm/src/l1_protocol/shard_load_balancer.rs b/nac-udm/src/l1_protocol/shard_load_balancer.rs index 5ded98e..99f3a44 100644 --- a/nac-udm/src/l1_protocol/shard_load_balancer.rs +++ b/nac-udm/src/l1_protocol/shard_load_balancer.rs @@ -277,7 +277,7 @@ impl ShardLoadBalancer { self.shard_loads .iter() .min_by(|(_, a), (_, b)| { - a.load_score().partial_cmp(&b.load_score()).unwrap() + a.load_score().partial_cmp(&b.load_score()).expect("FIX-006: unexpected None/Err") }) .map(|(id, _)| *id) } @@ -354,13 +354,13 @@ impl ShardLoadBalancer { let max_load_shard = self.shard_loads .iter() .max_by(|(_, a), (_, b)| { - a.load_score().partial_cmp(&b.load_score()).unwrap() + a.load_score().partial_cmp(&b.load_score()).expect("FIX-006: unexpected None/Err") }); let min_load_shard = self.shard_loads .iter() .min_by(|(_, a), (_, b)| { - a.load_score().partial_cmp(&b.load_score()).unwrap() + a.load_score().partial_cmp(&b.load_score()).expect("FIX-006: unexpected None/Err") }); if let (Some((max_id, max_load)), Some((min_id, min_load))) = (max_load_shard, min_load_shard) { @@ -430,7 +430,7 @@ impl ShardLoadBalancer { // 按负载排序 let mut sorted_loads: Vec<_> = self.shard_loads.values().cloned().collect(); - sorted_loads.sort_by(|a, b| b.load_score().partial_cmp(&a.load_score()).unwrap()); + sorted_loads.sort_by(|a, b| b.load_score().partial_cmp(&a.load_score()).expect("FIX-006: unexpected None/Err")); LoadBalanceReport { total_shards: self.shard_loads.len(), @@ -536,9 +536,9 @@ mod tests { balancer.register_shard(load, 10); } - let shard1 = balancer.select_shard(None).unwrap(); - let shard2 = balancer.select_shard(None).unwrap(); - let shard3 = balancer.select_shard(None).unwrap(); + let shard1 = balancer.select_shard(None).expect("FIX-006: unexpected None/Err"); + let shard2 = balancer.select_shard(None).expect("FIX-006: unexpected None/Err"); + let shard3 = balancer.select_shard(None).expect("FIX-006: unexpected None/Err"); // 应该轮询选择不同的分片 assert_ne!(shard1, shard2); @@ -562,7 +562,7 @@ mod tests { } // 应该选择负载最低的分片(分片1) - let selected = balancer.select_shard(None).unwrap(); + let selected = balancer.select_shard(None).expect("FIX-006: unexpected None/Err"); assert_eq!(selected, 1); } @@ -610,7 +610,7 @@ mod tests { let suggestion = balancer.suggest_migration(); assert!(suggestion.is_some()); - let (from, to) = suggestion.unwrap(); + let (from, to) = suggestion.expect("FIX-006: unexpected None/Err"); assert_eq!(from, 1); assert_eq!(to, 2); } diff --git a/nac-udm/src/l1_protocol/state.rs b/nac-udm/src/l1_protocol/state.rs index bcc4ce3..95e97e9 100644 --- a/nac-udm/src/l1_protocol/state.rs +++ b/nac-udm/src/l1_protocol/state.rs @@ -297,7 +297,7 @@ mod tests { account.add_balance(1000); assert_eq!(account.balance, 1000); - account.sub_balance(300).unwrap(); + account.sub_balance(300).expect("FIX-006: unexpected None/Err"); assert_eq!(account.balance, 700); account.increment_nonce(); @@ -326,14 +326,14 @@ mod tests { #[test] fn test_state_manager_transfer() { let mut manager = StateManager::new(); - let addr1 = Address::from_hex("0x1111111111111111111111111111111111111111").unwrap(); - let addr2 = Address::from_hex("0x2222222222222222222222222222222222222222").unwrap(); + let addr1 = Address::from_hex("0x1111111111111111111111111111111111111111").expect("FIX-006: unexpected None/Err"); + let addr2 = Address::from_hex("0x2222222222222222222222222222222222222222").expect("FIX-006: unexpected None/Err"); // 初始化账户1余额 manager.current_state.create_account(addr1).balance = 1000; // 转账 - manager.transfer(addr1, addr2, 300).unwrap(); + manager.transfer(addr1, addr2, 300).expect("FIX-006: unexpected None/Err"); assert_eq!(manager.get_balance(&addr1), 700); assert_eq!(manager.get_balance(&addr2), 300); diff --git a/nac-udm/src/l1_protocol/state_shard_optimization.rs b/nac-udm/src/l1_protocol/state_shard_optimization.rs index 8674816..662aa5f 100644 --- a/nac-udm/src/l1_protocol/state_shard_optimization.rs +++ b/nac-udm/src/l1_protocol/state_shard_optimization.rs @@ -398,7 +398,7 @@ mod tests { #[test] fn test_state_entry_creation() { - let key = Hash::from_slice(&[1u8; 32]).unwrap(); + let key = Hash::from_slice(&[1u8; 32]).expect("valid fixed-length slice"); let value = vec![1, 2, 3, 4]; let entry = StateEntry::new(key, value.clone(), 1000); @@ -411,7 +411,7 @@ mod tests { #[test] fn test_state_entry_hot_promotion() { - let key = Hash::from_slice(&[1u8; 32]).unwrap(); + let key = Hash::from_slice(&[1u8; 32]).expect("valid fixed-length slice"); let value = vec![1, 2, 3]; let mut entry = StateEntry::new(key, value, 1000); @@ -426,7 +426,7 @@ mod tests { #[test] fn test_state_entry_cold_detection() { - let key = Hash::from_slice(&[1u8; 32]).unwrap(); + let key = Hash::from_slice(&[1u8; 32]).expect("valid fixed-length slice"); let value = vec![1, 2, 3]; let entry = StateEntry::new(key, value, 1000); @@ -440,7 +440,7 @@ mod tests { #[test] fn test_optimizer_read_write() { let mut optimizer = StateShardOptimizer::new(1, 3600, 1024 * 1024); - let key = Hash::from_slice(&[1u8; 32]).unwrap(); + let key = Hash::from_slice(&[1u8; 32]).expect("valid fixed-length slice"); let value = vec![1, 2, 3, 4]; // 写入状态 @@ -458,7 +458,7 @@ mod tests { #[test] fn test_optimizer_cache_miss() { let mut optimizer = StateShardOptimizer::new(1, 3600, 1024 * 1024); - let key = Hash::from_slice(&[1u8; 32]).unwrap(); + let key = Hash::from_slice(&[1u8; 32]).expect("valid fixed-length slice"); // 读取不存在的状态 let result = optimizer.read_state(&key, 1000); @@ -475,9 +475,9 @@ mod tests { // 写入一些数据 for i in 0..5 { - let key = Hash::from_slice(&[i; 32]).unwrap(); + let key = Hash::from_slice(&[i; 32]).expect("valid fixed-length slice"); let value = vec![i; 100]; - optimizer.write_state(key, value, 1000 + i as u64).unwrap(); + optimizer.write_state(key, value, 1000 + i as u64).expect("FIX-006: unexpected None/Err"); } // 等待一段时间后驱逐冷数据 @@ -490,7 +490,7 @@ mod tests { #[test] fn test_optimizer_hot_account_tracking() { let mut optimizer = StateShardOptimizer::new(1, 3600, 1024 * 1024); - let address = Address::from_slice(&[1u8; 32]).unwrap(); + let address = Address::from_slice(&[1u8; 32]).expect("valid fixed-length slice"); // 记录大量活动 for i in 0..1001 { @@ -508,9 +508,9 @@ mod tests { let mut optimizer = StateShardOptimizer::new(1, 3600, 1000); // 写入500字节数据 - let key = Hash::from_slice(&[1u8; 32]).unwrap(); + let key = Hash::from_slice(&[1u8; 32]).expect("valid fixed-length slice"); let value = vec![1u8; 500]; - optimizer.write_state(key, value, 1000).unwrap(); + optimizer.write_state(key, value, 1000).expect("FIX-006: unexpected None/Err"); // 验证缓存使用率 assert_eq!(optimizer.get_cache_usage(), 0.5); @@ -522,9 +522,9 @@ mod tests { // 写入一些数据 for i in 0..5 { - let key = Hash::from_slice(&[i; 32]).unwrap(); + let key = Hash::from_slice(&[i; 32]).expect("valid fixed-length slice"); let value = vec![i; 10]; - optimizer.write_state(key, value, 1000).unwrap(); + optimizer.write_state(key, value, 1000).expect("FIX-006: unexpected None/Err"); } // 清理过期数据(超过2000秒) @@ -538,21 +538,21 @@ mod tests { // 写入一些数据 for i in 0..10 { - let key = Hash::from_slice(&[i; 32]).unwrap(); + let key = Hash::from_slice(&[i; 32]).expect("valid fixed-length slice"); let value = vec![i; 100]; - optimizer.write_state(key, value, 1000 + i as u64).unwrap(); + optimizer.write_state(key, value, 1000 + i as u64).expect("FIX-006: unexpected None/Err"); } // 访问部分数据使其成为热点(但不超过100次,避免自动标记为hot) for i in 0..3 { - let key = Hash::from_slice(&[i; 32]).unwrap(); + let key = Hash::from_slice(&[i; 32]).expect("valid fixed-length slice"); for _ in 0..50 { optimizer.read_state(&key, 2000); } } // 执行优化 - let report = optimizer.optimize(4000).unwrap(); + let report = optimizer.optimize(4000).expect("FIX-006: unexpected None/Err"); assert_eq!(report.shard_id, 1); assert!(report.promoted_count > 0); diff --git a/nac-udm/src/l1_protocol/upgrade.rs b/nac-udm/src/l1_protocol/upgrade.rs index d760cbb..6ed4d78 100644 --- a/nac-udm/src/l1_protocol/upgrade.rs +++ b/nac-udm/src/l1_protocol/upgrade.rs @@ -405,11 +405,11 @@ mod tests { let proposal_id = Hash::zero(); let mut votes = UpgradeVotes::new(proposal_id); - let voter1 = Address::from_hex("0x1111111111111111111111111111111111111111").unwrap(); - let voter2 = Address::from_hex("0x2222222222222222222222222222222222222222").unwrap(); + let voter1 = Address::from_hex("0x1111111111111111111111111111111111111111").expect("FIX-006: unexpected None/Err"); + let voter2 = Address::from_hex("0x2222222222222222222222222222222222222222").expect("FIX-006: unexpected None/Err"); - votes.vote_for(voter1, 100).unwrap(); - votes.vote_against(voter2, 30).unwrap(); + votes.vote_for(voter1, 100).expect("FIX-006: unexpected None/Err"); + votes.vote_against(voter2, 30).expect("FIX-006: unexpected None/Err"); assert_eq!(votes.total_votes(), 130); assert!(votes.approval_rate() > 0.7); @@ -440,11 +440,11 @@ mod tests { } // 投票 - let voter = Address::from_hex("0x1111111111111111111111111111111111111111").unwrap(); - manager.vote(&proposal_id, voter, true, 1000).unwrap(); + let voter = Address::from_hex("0x1111111111111111111111111111111111111111").expect("FIX-006: unexpected None/Err"); + manager.vote(&proposal_id, voter, true, 1000).expect("FIX-006: unexpected None/Err"); // 执行升级 - manager.execute_upgrade(&proposal_id, proposer).unwrap(); + manager.execute_upgrade(&proposal_id, proposer).expect("FIX-006: unexpected None/Err"); assert_eq!(manager.current_version, "2.0.0"); assert_eq!(manager.history.len(), 1); diff --git a/nac-udm/src/l2_governance/codex/amendments/mod.rs b/nac-udm/src/l2_governance/codex/amendments/mod.rs index 552cb64..e614a8d 100644 --- a/nac-udm/src/l2_governance/codex/amendments/mod.rs +++ b/nac-udm/src/l2_governance/codex/amendments/mod.rs @@ -36,7 +36,7 @@ impl Amendment { description, proposed_date: std::time::SystemTime::now() .duration_since(std::time::UNIX_EPOCH) - .unwrap() + .expect("FIX-006: unexpected None/Err") .as_secs(), effective_date: None, status: AmendmentStatus::Proposed, diff --git a/nac-udm/src/l2_governance/sovereignty_rules.rs b/nac-udm/src/l2_governance/sovereignty_rules.rs index ddd427a..7f9393e 100644 --- a/nac-udm/src/l2_governance/sovereignty_rules.rs +++ b/nac-udm/src/l2_governance/sovereignty_rules.rs @@ -1038,6 +1038,6 @@ mod enhanced_tests { Timestamp::now(), ); assert!(result.is_ok()); - assert!(result.unwrap()); // 应该触发清算 + assert!(result.expect("mainnet: handle error")); // 应该触发清算 } } diff --git a/nac-udm/src/l2_network/csnp/cross_chain_sync.rs b/nac-udm/src/l2_network/csnp/cross_chain_sync.rs index 9683aad..5e12904 100644 --- a/nac-udm/src/l2_network/csnp/cross_chain_sync.rs +++ b/nac-udm/src/l2_network/csnp/cross_chain_sync.rs @@ -491,8 +491,8 @@ mod tests { #[test] fn test_cross_chain_message_creation() { - let sender = Address::from_slice(&[1u8; 20]).unwrap(); - let receiver = Address::from_slice(&[2u8; 20]).unwrap(); + let sender = Address::from_slice(&[1u8; 20]).expect("valid fixed-length slice"); + let receiver = Address::from_slice(&[2u8; 20]).expect("valid fixed-length slice"); let message = CrossChainMessage::new( CrossChainMessageType::AssetLock, @@ -516,8 +516,8 @@ mod tests { #[test] fn test_message_queue() { let mut queue = CrossChainMessageQueue::new(); - let sender = Address::from_slice(&[1u8; 20]).unwrap(); - let receiver = Address::from_slice(&[2u8; 20]).unwrap(); + let sender = Address::from_slice(&[1u8; 20]).expect("valid fixed-length slice"); + let receiver = Address::from_slice(&[2u8; 20]).expect("valid fixed-length slice"); // 添加消息 let message = CrossChainMessage::new( @@ -536,7 +536,7 @@ mod tests { assert_eq!(queue.pending_count(), 1); // 取出消息 - let dequeued = queue.dequeue().unwrap(); + let dequeued = queue.dequeue().expect("FIX-006: unexpected None/Err"); assert_eq!(dequeued.message_id, message.message_id); assert_eq!(queue.pending_count(), 0); } @@ -544,8 +544,8 @@ mod tests { #[test] fn test_message_sequence() { let mut queue = CrossChainMessageQueue::new(); - let sender = Address::from_slice(&[1u8; 20]).unwrap(); - let receiver = Address::from_slice(&[2u8; 20]).unwrap(); + let sender = Address::from_slice(&[1u8; 20]).expect("valid fixed-length slice"); + let receiver = Address::from_slice(&[2u8; 20]).expect("valid fixed-length slice"); // 接收消息(序列号0) let message1 = CrossChainMessage::new( @@ -608,8 +608,8 @@ mod tests { assert_eq!(validator.trusted_chain_count(), 1); // 创建消息 - let sender = Address::from_slice(&[1u8; 20]).unwrap(); - let receiver = Address::from_slice(&[2u8; 20]).unwrap(); + let sender = Address::from_slice(&[1u8; 20]).expect("valid fixed-length slice"); + let receiver = Address::from_slice(&[2u8; 20]).expect("valid fixed-length slice"); let payload = vec![1, 2, 3]; let mut message = CrossChainMessage::new( @@ -635,14 +635,14 @@ mod tests { message.set_state_proof(state_proof); // 验证消息 - assert!(validator.validate_message(&message).unwrap()); + assert!(validator.validate_message(&message).expect("mainnet: handle error")); } #[test] fn test_cross_chain_sync_protocol() { let mut protocol = CrossChainSyncProtocol::new(1, 100); - let sender = Address::from_slice(&[1u8; 20]).unwrap(); - let receiver = Address::from_slice(&[2u8; 20]).unwrap(); + let sender = Address::from_slice(&[1u8; 20]).expect("valid fixed-length slice"); + let receiver = Address::from_slice(&[2u8; 20]).expect("valid fixed-length slice"); // 添加可信链 protocol.add_trusted_chain(ChainInfo { @@ -682,8 +682,8 @@ mod tests { #[test] fn test_timeout_cleanup() { let mut queue = CrossChainMessageQueue::new(); - let sender = Address::from_slice(&[1u8; 20]).unwrap(); - let receiver = Address::from_slice(&[2u8; 20]).unwrap(); + let sender = Address::from_slice(&[1u8; 20]).expect("valid fixed-length slice"); + let receiver = Address::from_slice(&[2u8; 20]).expect("valid fixed-length slice"); // 添加即将超时的消息 let message = CrossChainMessage::new( diff --git a/nac-udm/src/l3_storage/state_database.rs b/nac-udm/src/l3_storage/state_database.rs index 5109fae..61a3f94 100644 --- a/nac-udm/src/l3_storage/state_database.rs +++ b/nac-udm/src/l3_storage/state_database.rs @@ -108,7 +108,7 @@ mod tests { #[test] fn test_state_database_basic() { - let mut db = StateDatabase::new("/tmp/test_state_db").unwrap(); + let mut db = StateDatabase::new("/tmp/test_state_db").expect("FIX-006: unexpected None/Err"); let key = StateKey::Account("alice".to_string()); let value = StateValue { @@ -118,7 +118,7 @@ mod tests { updated_at: 0, }; - db.set(key.clone(), value.clone()).unwrap(); - assert_eq!(db.get(&key).unwrap().data, vec![1, 2, 3]); + db.set(key.clone(), value.clone()).expect("FIX-006: unexpected None/Err"); + assert_eq!(db.get(&key).expect("mainnet: handle error").data, vec![1, 2, 3]); } } diff --git a/nac-udm/src/primitives/address.rs b/nac-udm/src/primitives/address.rs index 6d03b11..ffde3ec 100644 --- a/nac-udm/src/primitives/address.rs +++ b/nac-udm/src/primitives/address.rs @@ -118,14 +118,14 @@ mod tests { #[test] fn test_address_from_slice() { let bytes = [2u8; 32]; - let addr = Address::from_slice(&bytes).unwrap(); + let addr = Address::from_slice(&bytes).expect("FIX-006: unexpected None/Err"); assert_eq!(addr.as_bytes(), &bytes); } #[test] fn test_address_from_hex() { let hex_str = "0x0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef"; - let addr = Address::from_hex(hex_str).unwrap(); + let addr = Address::from_hex(hex_str).expect("FIX-006: unexpected None/Err"); assert_eq!(addr.to_hex(), hex_str); } diff --git a/nac-udm/src/primitives/hash.rs b/nac-udm/src/primitives/hash.rs index b457110..cd39879 100644 --- a/nac-udm/src/primitives/hash.rs +++ b/nac-udm/src/primitives/hash.rs @@ -159,7 +159,7 @@ mod tests { let data = b"test"; let hash = Hash::sha3_384(data); let hex = hash.to_hex(); - let hash2 = Hash::from_hex(&hex).unwrap(); + let hash2 = Hash::from_hex(&hex).expect("FIX-006: unexpected None/Err"); assert_eq!(hash, hash2); } @@ -168,7 +168,7 @@ mod tests { let data = b"test"; let hash = Hash::sha3_384(data); let binary = hash.to_binary_string(); - let hash2 = Hash::from_binary_string(&binary).unwrap(); + let hash2 = Hash::from_binary_string(&binary).expect("FIX-006: unexpected None/Err"); assert_eq!(hash, hash2); } @@ -199,10 +199,10 @@ mod tests { let hash = Hash::sha3_384(data); // 序列化 - let json = serde_json::to_string(&hash).unwrap(); + let json = serde_json::to_string(&hash).expect("FIX-006: unexpected None/Err"); // 反序列化 - let hash2: Hash = serde_json::from_str(&json).unwrap(); + let hash2: Hash = serde_json::from_str(&json).expect("FIX-006: unexpected None/Err"); assert_eq!(hash, hash2); } } diff --git a/nac-udm/src/primitives/signature.rs b/nac-udm/src/primitives/signature.rs index 1cf4b10..aa45ba5 100644 --- a/nac-udm/src/primitives/signature.rs +++ b/nac-udm/src/primitives/signature.rs @@ -98,7 +98,7 @@ mod tests { #[test] fn test_signature_from_hex() { let hex = "0x01020304"; - let sig = Signature::from_hex(hex).unwrap(); + let sig = Signature::from_hex(hex).expect("FIX-006: unexpected None/Err"); assert_eq!(sig.as_bytes(), &[1, 2, 3, 4]); assert_eq!(sig.to_hex(), hex); } diff --git a/nac-udm/src/registry/auto_register.rs b/nac-udm/src/registry/auto_register.rs index be22e37..a17f7ab 100644 --- a/nac-udm/src/registry/auto_register.rs +++ b/nac-udm/src/registry/auto_register.rs @@ -259,35 +259,35 @@ mod tests { #[test] fn test_auto_register_primitives() { let mut registry = DefinitionRegistry::new(); - let count = register_primitives(&mut registry).unwrap(); + let count = register_primitives(&mut registry).expect("FIX-006: unexpected None/Err"); assert_eq!(count, 4); } #[test] fn test_auto_register_all() { let mut registry = DefinitionRegistry::new(); - let count = auto_register_all(&mut registry).unwrap(); + let count = auto_register_all(&mut registry).expect("FIX-006: unexpected None/Err"); assert!(count > 0); println!("Registered {} definitions", count); } #[test] fn test_create_full_registry() { - let registry = create_full_registry().unwrap(); + let registry = create_full_registry().expect("FIX-006: unexpected None/Err"); assert!(registry.count() > 0); } #[test] fn test_query_registered_definitions() { - let registry = create_full_registry().unwrap(); + let registry = create_full_registry().expect("FIX-006: unexpected None/Err"); // 查询Address定义 - let address_uid = UID::new("nac.primitives.Address").unwrap(); + let address_uid = UID::new("nac.primitives.Address").expect("FIX-006: unexpected None/Err"); let address_def = registry.get(&address_uid); assert!(address_def.is_some()); // 查询FluidBlock定义 - let block_uid = UID::new("nac.cbpp.FluidBlock").unwrap(); + let block_uid = UID::new("nac.cbpp.FluidBlock").expect("FIX-006: unexpected None/Err"); let block_def = registry.get(&block_uid); assert!(block_def.is_some()); } diff --git a/nac-udm/src/registry/definition.rs b/nac-udm/src/registry/definition.rs index 6bfb28a..51784f9 100644 --- a/nac-udm/src/registry/definition.rs +++ b/nac-udm/src/registry/definition.rs @@ -109,7 +109,7 @@ impl Definition { /// ``` /// use nac_udm::registry::{Definition, DefinitionType, UID, Version}; /// - /// let uid = UID::new("nac.l1.cbpp.receipt").unwrap(); + /// let uid = UID::new("nac.l1.cbpp.receipt").expect("FIX-006: unexpected None/Err"); /// let version = Version::new(1, 0, 0); /// let def = Definition::new( /// uid, @@ -433,7 +433,7 @@ mod tests { #[test] fn test_definition_creation() { - let uid = UID::new("nac.l1.cbpp.receipt").unwrap(); + let uid = UID::new("nac.l1.cbpp.receipt").expect("FIX-006: unexpected None/Err"); let version = Version::new(1, 0, 0); let def = Definition::new( uid.clone(), @@ -450,7 +450,7 @@ mod tests { #[test] fn test_definition_builder() { - let uid = UID::new("nac.l1.cbpp.receipt").unwrap(); + let uid = UID::new("nac.l1.cbpp.receipt").expect("FIX-006: unexpected None/Err"); let version = Version::new(1, 0, 0); let def = DefinitionBuilder::new() @@ -462,7 +462,7 @@ mod tests { .tag("cbpp".to_string()) .tag("core".to_string()) .build() - .unwrap(); + .expect("FIX-006: unexpected None/Err"); assert_eq!(def.uid(), &uid); assert_eq!(def.name(), "Constitutional Receipt"); @@ -473,7 +473,7 @@ mod tests { #[test] fn test_definition_tags() { - let uid = UID::new("nac.l1.cbpp.receipt").unwrap(); + let uid = UID::new("nac.l1.cbpp.receipt").expect("FIX-006: unexpected None/Err"); let version = Version::new(1, 0, 0); let mut def = Definition::new( uid, @@ -495,8 +495,8 @@ mod tests { #[test] fn test_definition_dependencies() { - let uid1 = UID::new("nac.l1.cbpp.receipt").unwrap(); - let uid2 = UID::new("nac.l1.cbpp.opn").unwrap(); + let uid1 = UID::new("nac.l1.cbpp.receipt").expect("FIX-006: unexpected None/Err"); + let uid2 = UID::new("nac.l1.cbpp.opn").expect("FIX-006: unexpected None/Err"); let version = Version::new(1, 0, 0); let mut def = Definition::new( @@ -515,7 +515,7 @@ mod tests { #[test] fn test_definition_deprecation() { - let uid = UID::new("nac.l1.cbpp.receipt").unwrap(); + let uid = UID::new("nac.l1.cbpp.receipt").expect("FIX-006: unexpected None/Err"); let version = Version::new(1, 0, 0); let mut def = Definition::new( uid, diff --git a/nac-udm/src/registry/mod.rs b/nac-udm/src/registry/mod.rs index f8926ba..c641965 100644 --- a/nac-udm/src/registry/mod.rs +++ b/nac-udm/src/registry/mod.rs @@ -16,7 +16,7 @@ ///! let registry = DefinitionRegistry::new(); ///! ///! // 创建定义 -///! let uid = UID::new("nac.l1.cbpp.receipt").unwrap(); +///! let uid = UID::new("nac.l1.cbpp.receipt").expect("FIX-006: unexpected None/Err"); ///! let version = Version::new(1, 0, 0); ///! let def = DefinitionBuilder::new() ///! .uid(uid) @@ -27,14 +27,14 @@ ///! .tag("cbpp".to_string()) ///! .tag("core".to_string()) ///! .build() -///! .unwrap(); +///! .expect("FIX-006: unexpected None/Err"); ///! ///! // 注册定义 -///! registry.register(def).unwrap(); +///! registry.register(def).expect("FIX-006: unexpected None/Err"); ///! ///! // 查询定义 -///! let uid = UID::new("nac.l1.cbpp.receipt").unwrap(); -///! let retrieved = registry.get(&uid).unwrap(); +///! let uid = UID::new("nac.l1.cbpp.receipt").expect("FIX-006: unexpected None/Err"); +///! let retrieved = registry.get(&uid).expect("key exists in map"); ///! println!("{}", retrieved); ///! ///! // 按标签查找 diff --git a/nac-udm/src/registry/registry.rs b/nac-udm/src/registry/registry.rs index d357bb3..cebf1ec 100644 --- a/nac-udm/src/registry/registry.rs +++ b/nac-udm/src/registry/registry.rs @@ -62,7 +62,7 @@ impl DefinitionRegistry { /// use nac_udm::registry::{DefinitionRegistry, Definition, DefinitionType, UID, Version}; /// /// let registry = DefinitionRegistry::new(); - /// let uid = UID::new("nac.l1.cbpp.receipt").unwrap(); + /// let uid = UID::new("nac.l1.cbpp.receipt").expect("FIX-006: unexpected None/Err"); /// let version = Version::new(1, 0, 0); /// let def = Definition::new( /// uid, @@ -71,7 +71,7 @@ impl DefinitionRegistry { /// version, /// ); /// - /// registry.register(def).unwrap(); + /// registry.register(def).expect("FIX-006: unexpected None/Err"); /// ``` pub fn register(&self, definition: Definition) -> Result<(), RegistryError> { let uid = definition.uid().clone(); @@ -82,7 +82,7 @@ impl DefinitionRegistry { // 注册定义 { - let mut defs = self.definitions.write().unwrap(); + let mut defs = self.definitions.write().expect("rwlock not poisoned"); let versions = defs.entry(uid.clone()).or_insert_with(HashMap::new); if versions.contains_key(&version) { @@ -94,7 +94,7 @@ impl DefinitionRegistry { // 更新标签索引 { - let mut tag_idx = self.tag_index.write().unwrap(); + let mut tag_idx = self.tag_index.write().expect("rwlock not poisoned"); for tag in tags { tag_idx .entry(tag) @@ -105,7 +105,7 @@ impl DefinitionRegistry { // 更新类型索引 { - let mut type_idx = self.type_index.write().unwrap(); + let mut type_idx = self.type_index.write().expect("rwlock not poisoned"); type_idx .entry(def_type) .or_insert_with(HashSet::new) @@ -114,7 +114,7 @@ impl DefinitionRegistry { // 更新反向依赖索引 { - let mut rev_deps = self.reverse_deps.write().unwrap(); + let mut rev_deps = self.reverse_deps.write().expect("rwlock not poisoned"); for dep_uid in deps { rev_deps .entry(dep_uid) @@ -137,7 +137,7 @@ impl DefinitionRegistry { /// * `Some(Definition)` - 找到定义 /// * `None` - 未找到定义 pub fn get(&self, uid: &UID) -> Option { - let defs = self.definitions.read().unwrap(); + let defs = self.definitions.read().expect("rwlock not poisoned"); defs.get(uid).and_then(|versions| { versions .keys() @@ -153,7 +153,7 @@ impl DefinitionRegistry { /// * `uid` - 定义的UID /// * `version` - 版本号 pub fn get_version(&self, uid: &UID, version: &Version) -> Option { - let defs = self.definitions.read().unwrap(); + let defs = self.definitions.read().expect("rwlock not poisoned"); defs.get(uid) .and_then(|versions| versions.get(version).cloned()) } @@ -168,7 +168,7 @@ impl DefinitionRegistry { /// /// 该定义的所有版本号(按版本号排序) pub fn get_versions(&self, uid: &UID) -> Vec { - let defs = self.definitions.read().unwrap(); + let defs = self.definitions.read().expect("rwlock not poisoned"); defs.get(uid) .map(|versions| { let mut vers: Vec = versions.keys().cloned().collect(); @@ -180,13 +180,13 @@ impl DefinitionRegistry { /// 检查定义是否存在 pub fn exists(&self, uid: &UID) -> bool { - let defs = self.definitions.read().unwrap(); + let defs = self.definitions.read().expect("rwlock not poisoned"); defs.contains_key(uid) } /// 检查指定版本的定义是否存在 pub fn exists_version(&self, uid: &UID, version: &Version) -> bool { - let defs = self.definitions.read().unwrap(); + let defs = self.definitions.read().expect("rwlock not poisoned"); defs.get(uid) .map(|versions| versions.contains_key(version)) .unwrap_or(false) @@ -202,7 +202,7 @@ impl DefinitionRegistry { /// /// 具有该标签的所有定义的UID pub fn find_by_tag(&self, tag: &str) -> Vec { - let tag_idx = self.tag_index.read().unwrap(); + let tag_idx = self.tag_index.read().expect("rwlock not poisoned"); tag_idx .get(tag) .map(|uids| uids.iter().cloned().collect()) @@ -219,7 +219,7 @@ impl DefinitionRegistry { /// /// 该类型的所有定义的UID pub fn find_by_type(&self, def_type: DefinitionType) -> Vec { - let type_idx = self.type_index.read().unwrap(); + let type_idx = self.type_index.read().expect("rwlock not poisoned"); type_idx .get(&def_type) .map(|uids| uids.iter().cloned().collect()) @@ -236,7 +236,7 @@ impl DefinitionRegistry { /// /// 依赖该定义的所有定义的UID pub fn get_dependents(&self, uid: &UID) -> Vec { - let rev_deps = self.reverse_deps.read().unwrap(); + let rev_deps = self.reverse_deps.read().expect("rwlock not poisoned"); rev_deps .get(uid) .map(|uids| uids.iter().cloned().collect()) @@ -245,28 +245,28 @@ impl DefinitionRegistry { /// 获取所有定义的UID pub fn all_uids(&self) -> Vec { - let defs = self.definitions.read().unwrap(); + let defs = self.definitions.read().expect("rwlock not poisoned"); defs.keys().cloned().collect() } /// 获取注册表中定义的总数 pub fn count(&self) -> usize { - let defs = self.definitions.read().unwrap(); + let defs = self.definitions.read().expect("rwlock not poisoned"); defs.len() } /// 获取注册表中所有版本的总数 pub fn count_all_versions(&self) -> usize { - let defs = self.definitions.read().unwrap(); + let defs = self.definitions.read().expect("rwlock not poisoned"); defs.values().map(|versions| versions.len()).sum() } /// 清空注册表 pub fn clear(&self) { - self.definitions.write().unwrap().clear(); - self.tag_index.write().unwrap().clear(); - self.type_index.write().unwrap().clear(); - self.reverse_deps.write().unwrap().clear(); + self.definitions.write().expect("rwlock not poisoned").clear(); + self.tag_index.write().expect("rwlock not poisoned").clear(); + self.type_index.write().expect("rwlock not poisoned").clear(); + self.reverse_deps.write().expect("rwlock not poisoned").clear(); } } @@ -325,7 +325,7 @@ mod tests { #[test] fn test_registry_register_and_get() { let registry = DefinitionRegistry::new(); - let uid = UID::new("nac.l1.cbpp.receipt").unwrap(); + let uid = UID::new("nac.l1.cbpp.receipt").expect("FIX-006: unexpected None/Err"); let version = Version::new(1, 0, 0); let def = Definition::new( uid.clone(), @@ -334,9 +334,9 @@ mod tests { version.clone(), ); - registry.register(def.clone()).unwrap(); + registry.register(def.clone()).expect("FIX-006: unexpected None/Err"); - let retrieved = registry.get(&uid).unwrap(); + let retrieved = registry.get(&uid).expect("key exists in map"); assert_eq!(retrieved.uid(), &uid); assert_eq!(retrieved.version(), &version); } @@ -344,7 +344,7 @@ mod tests { #[test] fn test_registry_multiple_versions() { let registry = DefinitionRegistry::new(); - let uid = UID::new("nac.l1.cbpp.receipt").unwrap(); + let uid = UID::new("nac.l1.cbpp.receipt").expect("FIX-006: unexpected None/Err"); let v1 = Version::new(1, 0, 0); let def1 = Definition::new( @@ -362,8 +362,8 @@ mod tests { v2.clone(), ); - registry.register(def1).unwrap(); - registry.register(def2).unwrap(); + registry.register(def1).expect("FIX-006: unexpected None/Err"); + registry.register(def2).expect("FIX-006: unexpected None/Err"); let versions = registry.get_versions(&uid); assert_eq!(versions.len(), 2); @@ -371,7 +371,7 @@ mod tests { assert!(versions.contains(&v2)); // 获取最新版本 - let latest = registry.get(&uid).unwrap(); + let latest = registry.get(&uid).expect("key exists in map"); assert_eq!(latest.version(), &v2); } @@ -379,7 +379,7 @@ mod tests { fn test_registry_find_by_tag() { let registry = DefinitionRegistry::new(); - let uid1 = UID::new("nac.l1.cbpp.receipt").unwrap(); + let uid1 = UID::new("nac.l1.cbpp.receipt").expect("FIX-006: unexpected None/Err"); let def1 = Definition::new( uid1.clone(), "Receipt".to_string(), @@ -388,7 +388,7 @@ mod tests { ) .with_tag("cbpp".to_string()); - let uid2 = UID::new("nac.l1.cbpp.opn").unwrap(); + let uid2 = UID::new("nac.l1.cbpp.opn").expect("FIX-006: unexpected None/Err"); let def2 = Definition::new( uid2.clone(), "OPN".to_string(), @@ -397,8 +397,8 @@ mod tests { ) .with_tag("cbpp".to_string()); - registry.register(def1).unwrap(); - registry.register(def2).unwrap(); + registry.register(def1).expect("FIX-006: unexpected None/Err"); + registry.register(def2).expect("FIX-006: unexpected None/Err"); let cbpp_defs = registry.find_by_tag("cbpp"); assert_eq!(cbpp_defs.len(), 2); @@ -410,7 +410,7 @@ mod tests { fn test_registry_find_by_type() { let registry = DefinitionRegistry::new(); - let uid1 = UID::new("nac.l1.cbpp.receipt").unwrap(); + let uid1 = UID::new("nac.l1.cbpp.receipt").expect("FIX-006: unexpected None/Err"); let def1 = Definition::new( uid1.clone(), "Receipt".to_string(), @@ -418,7 +418,7 @@ mod tests { Version::new(1, 0, 0), ); - let uid2 = UID::new("nac.l1.cbpp.validate").unwrap(); + let uid2 = UID::new("nac.l1.cbpp.validate").expect("FIX-006: unexpected None/Err"); let def2 = Definition::new( uid2.clone(), "Validate".to_string(), @@ -426,8 +426,8 @@ mod tests { Version::new(1, 0, 0), ); - registry.register(def1).unwrap(); - registry.register(def2).unwrap(); + registry.register(def1).expect("FIX-006: unexpected None/Err"); + registry.register(def2).expect("FIX-006: unexpected None/Err"); let types = registry.find_by_type(DefinitionType::Type); assert_eq!(types.len(), 1); @@ -441,7 +441,7 @@ mod tests { #[test] fn test_registry_version_already_exists() { let registry = DefinitionRegistry::new(); - let uid = UID::new("nac.l1.cbpp.receipt").unwrap(); + let uid = UID::new("nac.l1.cbpp.receipt").expect("FIX-006: unexpected None/Err"); let version = Version::new(1, 0, 0); let def1 = Definition::new( @@ -458,7 +458,7 @@ mod tests { version.clone(), ); - registry.register(def1).unwrap(); + registry.register(def1).expect("FIX-006: unexpected None/Err"); let result = registry.register(def2); assert!(matches!( diff --git a/nac-udm/src/registry/uid.rs b/nac-udm/src/registry/uid.rs index c2bdf18..00e998a 100644 --- a/nac-udm/src/registry/uid.rs +++ b/nac-udm/src/registry/uid.rs @@ -49,7 +49,7 @@ impl UID { /// ``` /// use nac_udm::registry::UID; /// - /// let uid = UID::new("nac.l1.cbpp.receipt").unwrap(); + /// let uid = UID::new("nac.l1.cbpp.receipt").expect("FIX-006: unexpected None/Err"); /// assert_eq!(uid.to_string(), "nac.l1.cbpp.receipt"); /// ``` pub fn new(uid_str: &str) -> Result { @@ -84,7 +84,7 @@ impl UID { } // 第一个字符必须是字母或下划线 - let first_char = s.chars().next().unwrap(); + let first_char = s.chars().next().expect("FIX-006: unexpected None/Err"); if !first_char.is_alphabetic() && first_char != '_' { return false; } @@ -100,7 +100,7 @@ impl UID { /// ``` /// use nac_udm::registry::UID; /// - /// let uid = UID::new("nac.l1.cbpp.receipt").unwrap(); + /// let uid = UID::new("nac.l1.cbpp.receipt").expect("FIX-006: unexpected None/Err"); /// assert_eq!(uid.layer(), Some("l1")); /// ``` pub fn layer(&self) -> Option<&str> { @@ -118,7 +118,7 @@ impl UID { /// ``` /// use nac_udm::registry::UID; /// - /// let uid = UID::new("nac.l1.cbpp.receipt").unwrap(); + /// let uid = UID::new("nac.l1.cbpp.receipt").expect("FIX-006: unexpected None/Err"); /// assert_eq!(uid.module(), Some("cbpp")); /// ``` pub fn module(&self) -> Option<&str> { @@ -136,7 +136,7 @@ impl UID { /// ``` /// use nac_udm::registry::UID; /// - /// let uid = UID::new("nac.l1.cbpp.receipt").unwrap(); + /// let uid = UID::new("nac.l1.cbpp.receipt").expect("FIX-006: unexpected None/Err"); /// assert_eq!(uid.definition(), Some("receipt")); /// ``` pub fn definition(&self) -> Option<&str> { @@ -169,8 +169,8 @@ impl UID { /// ``` /// use nac_udm::registry::UID; /// - /// let parent = UID::new("nac.l1.cbpp").unwrap(); - /// let child = parent.child("receipt").unwrap(); + /// let parent = UID::new("nac.l1.cbpp").expect("FIX-006: unexpected None/Err"); + /// let child = parent.child("receipt").expect("FIX-006: unexpected None/Err"); /// assert_eq!(child.to_string(), "nac.l1.cbpp.receipt"); /// ``` pub fn child(&self, name: &str) -> Result { @@ -189,8 +189,8 @@ impl UID { /// ``` /// use nac_udm::registry::UID; /// - /// let uid = UID::new("nac.l1.cbpp.receipt").unwrap(); - /// let parent = uid.parent().unwrap(); + /// let uid = UID::new("nac.l1.cbpp.receipt").expect("FIX-006: unexpected None/Err"); + /// let parent = uid.parent().expect("FIX-006: unexpected None/Err"); /// assert_eq!(parent.to_string(), "nac.l1.cbpp"); /// ``` pub fn parent(&self) -> Option { @@ -250,7 +250,7 @@ mod tests { #[test] fn test_uid_creation() { - let uid = UID::new("nac.l1.cbpp.receipt").unwrap(); + let uid = UID::new("nac.l1.cbpp.receipt").expect("FIX-006: unexpected None/Err"); assert_eq!(uid.to_string(), "nac.l1.cbpp.receipt"); assert_eq!(uid.layer(), Some("l1")); assert_eq!(uid.module(), Some("cbpp")); @@ -277,28 +277,28 @@ mod tests { #[test] fn test_uid_child() { - let parent = UID::new("nac.l1.cbpp").unwrap(); - let child = parent.child("receipt").unwrap(); + let parent = UID::new("nac.l1.cbpp").expect("FIX-006: unexpected None/Err"); + let child = parent.child("receipt").expect("FIX-006: unexpected None/Err"); assert_eq!(child.to_string(), "nac.l1.cbpp.receipt"); } #[test] fn test_uid_parent() { - let uid = UID::new("nac.l1.cbpp.receipt").unwrap(); - let parent = uid.parent().unwrap(); + let uid = UID::new("nac.l1.cbpp.receipt").expect("FIX-006: unexpected None/Err"); + let parent = uid.parent().expect("FIX-006: unexpected None/Err"); assert_eq!(parent.to_string(), "nac.l1.cbpp"); } #[test] fn test_uid_is_layer() { - let uid = UID::new("nac.l1.cbpp.receipt").unwrap(); + let uid = UID::new("nac.l1.cbpp.receipt").expect("FIX-006: unexpected None/Err"); assert!(uid.is_layer("l1")); assert!(!uid.is_layer("l2")); } #[test] fn test_uid_is_module() { - let uid = UID::new("nac.l1.cbpp.receipt").unwrap(); + let uid = UID::new("nac.l1.cbpp.receipt").expect("FIX-006: unexpected None/Err"); assert!(uid.is_module("cbpp")); assert!(!uid.is_module("gnacs")); } diff --git a/nac-udm/src/registry/version.rs b/nac-udm/src/registry/version.rs index 4f3c554..ef5685e 100644 --- a/nac-udm/src/registry/version.rs +++ b/nac-udm/src/registry/version.rs @@ -307,18 +307,18 @@ mod tests { #[test] fn test_version_parse() { - let v: Version = "1.2.3".parse().unwrap(); + let v: Version = "1.2.3".parse().expect("FIX-006: unexpected None/Err"); assert_eq!(v.major, 1); assert_eq!(v.minor, 2); assert_eq!(v.patch, 3); - let v: Version = "1.0.0-alpha".parse().unwrap(); + let v: Version = "1.0.0-alpha".parse().expect("FIX-006: unexpected None/Err"); assert_eq!(v.prerelease, Some("alpha".to_string())); - let v: Version = "1.0.0+build.123".parse().unwrap(); + let v: Version = "1.0.0+build.123".parse().expect("FIX-006: unexpected None/Err"); assert_eq!(v.build, Some("build.123".to_string())); - let v: Version = "1.0.0-rc.1+build.123".parse().unwrap(); + let v: Version = "1.0.0-rc.1+build.123".parse().expect("FIX-006: unexpected None/Err"); assert_eq!(v.prerelease, Some("rc.1".to_string())); assert_eq!(v.build, Some("build.123".to_string())); } diff --git a/nac-upgrade-framework/src/helpers.rs b/nac-upgrade-framework/src/helpers.rs index 42a0e3c..799fae6 100644 --- a/nac-upgrade-framework/src/helpers.rs +++ b/nac-upgrade-framework/src/helpers.rs @@ -157,12 +157,12 @@ mod tests { let mut module = TestModule::new(); module.data = "original".to_string(); - let snapshot = module.create_snapshot().unwrap(); + let snapshot = module.create_snapshot().expect("mainnet: handle error"); module.data = "modified".to_string(); assert_eq!(module.data, "modified"); - module.rollback(snapshot).unwrap(); + module.rollback(snapshot).expect("mainnet: handle error"); assert_eq!(module.data, "original"); } } diff --git a/nac-upgrade-framework/src/snapshot.rs b/nac-upgrade-framework/src/snapshot.rs index fc5d2cf..3200d9c 100644 --- a/nac-upgrade-framework/src/snapshot.rs +++ b/nac-upgrade-framework/src/snapshot.rs @@ -223,8 +223,8 @@ mod tests { let id2 = manager.save(snapshot2.clone()); assert_eq!(manager.list().len(), 2); - assert_eq!(manager.get(&id1).unwrap().module_name, "nac-nvm"); - assert_eq!(manager.get(&id2).unwrap().module_name, "nac-cbpp"); + assert_eq!(manager.get(&id1).expect("mainnet: handle error").module_name, "nac-nvm"); + assert_eq!(manager.get(&id2).expect("mainnet: handle error").module_name, "nac-cbpp"); } #[test] @@ -276,7 +276,7 @@ mod tests { ); manager.save(snapshot2.clone()); - let latest = manager.get_latest("nac-nvm").unwrap(); + let latest = manager.get_latest("nac-nvm").expect("mainnet: handle error"); assert_eq!(latest.version, Version::new(1, 1, 0)); } diff --git a/nac-upgrade-framework/src/traits.rs b/nac-upgrade-framework/src/traits.rs index 7b884df..3ab9b57 100644 --- a/nac-upgrade-framework/src/traits.rs +++ b/nac-upgrade-framework/src/traits.rs @@ -161,7 +161,7 @@ mod tests { assert_eq!(module.current_version(), Version::new(1, 0, 0)); let target = Version::new(1, 1, 0); - assert!(module.can_upgrade_to(&target).unwrap()); + assert!(module.can_upgrade_to(&target).expect("mainnet: handle error")); let data = UpgradeData { migration_script: None, @@ -182,7 +182,7 @@ mod tests { history: vec![], }; - let snapshot = module.create_snapshot().unwrap(); + let snapshot = module.create_snapshot().expect("mainnet: handle error"); assert_eq!(snapshot.version, Version::new(1, 0, 0)); // 升级 diff --git a/nac-upgrade-framework/src/version.rs b/nac-upgrade-framework/src/version.rs index 50da1fc..b2e6067 100644 --- a/nac-upgrade-framework/src/version.rs +++ b/nac-upgrade-framework/src/version.rs @@ -120,7 +120,7 @@ mod tests { #[test] fn test_version_parse() { - let v = Version::parse("1.2.3").unwrap(); + let v = Version::parse("1.2.3").expect("mainnet: handle error"); assert_eq!(v, Version::new(1, 2, 3)); } diff --git a/nac-vision-wallet/src/account.rs b/nac-vision-wallet/src/account.rs index 9aaeeae..553ae3b 100644 --- a/nac-vision-wallet/src/account.rs +++ b/nac-vision-wallet/src/account.rs @@ -119,34 +119,34 @@ mod tests { #[test] fn test_create_account() { - let mut manager = AccountManager::new().unwrap(); - let address = manager.create_account(Some("Test Account".to_string())).unwrap(); + let mut manager = AccountManager::new().expect("mainnet: handle error"); + let address = manager.create_account(Some("Test Account".to_string())).expect("mainnet: handle error"); assert!(!address.is_empty()); assert!(address.starts_with("NAC")); } #[test] fn test_get_account() { - let mut manager = AccountManager::new().unwrap(); - let address = manager.create_account(None).unwrap(); - let account = manager.get_account(&address).unwrap(); + let mut manager = AccountManager::new().expect("mainnet: handle error"); + let address = manager.create_account(None).expect("mainnet: handle error"); + let account = manager.get_account(&address).expect("mainnet: handle error"); assert_eq!(account.address, address); } #[test] fn test_active_account() { - let mut manager = AccountManager::new().unwrap(); - let address = manager.create_account(None).unwrap(); - let active = manager.get_active_account().unwrap(); + let mut manager = AccountManager::new().expect("mainnet: handle error"); + let address = manager.create_account(None).expect("mainnet: handle error"); + let active = manager.get_active_account().expect("mainnet: handle error"); assert_eq!(active.address, address); } #[test] fn test_update_balance() { - let mut manager = AccountManager::new().unwrap(); - let address = manager.create_account(None).unwrap(); - manager.update_balance(&address, 1000000).unwrap(); - let account = manager.get_account(&address).unwrap(); + let mut manager = AccountManager::new().expect("mainnet: handle error"); + let address = manager.create_account(None).expect("mainnet: handle error"); + manager.update_balance(&address, 1000000).expect("mainnet: handle error"); + let account = manager.get_account(&address).expect("mainnet: handle error"); assert_eq!(account.balance, 1000000); } } diff --git a/nac-vision-wallet/src/ai_assistant.rs b/nac-vision-wallet/src/ai_assistant.rs index 56cb030..6ec16e5 100644 --- a/nac-vision-wallet/src/ai_assistant.rs +++ b/nac-vision-wallet/src/ai_assistant.rs @@ -62,7 +62,7 @@ impl AiAssistant { use std::time::{SystemTime, UNIX_EPOCH}; SystemTime::now() .duration_since(UNIX_EPOCH) - .unwrap() + .expect("mainnet: handle error") .as_secs() } } diff --git a/nac-wallet-core/src/cee_client.rs b/nac-wallet-core/src/cee_client.rs index a1ac84b..13c7bc5 100644 --- a/nac-wallet-core/src/cee_client.rs +++ b/nac-wallet-core/src/cee_client.rs @@ -219,7 +219,7 @@ impl NacCeeClient { // 1. 检查有效期 let now = std::time::SystemTime::now() .duration_since(std::time::UNIX_EPOCH) - .unwrap() + .expect("mainnet: handle error") .as_secs(); if now < cr.timestamp { @@ -358,7 +358,7 @@ mod tests { let now = std::time::SystemTime::now() .duration_since(std::time::UNIX_EPOCH) - .unwrap() + .expect("mainnet: handle error") .as_secs(); let cr = ConstitutionalReceipt { diff --git a/nac-wallet-core/src/hardware.rs b/nac-wallet-core/src/hardware.rs index 258a373..fe3c93a 100644 --- a/nac-wallet-core/src/hardware.rs +++ b/nac-wallet-core/src/hardware.rs @@ -598,39 +598,39 @@ mod tests { #[test] fn test_get_public_key() { let mut wallet = LedgerWallet::new("test_001".to_string()); - wallet.connect().unwrap(); - let pubkey = wallet.get_public_key("m/44'/60'/0'/0/0").unwrap(); + wallet.connect().expect("mainnet: handle error"); + let pubkey = wallet.get_public_key("m/44'/60'/0'/0/0").expect("mainnet: handle error"); assert_eq!(pubkey.len(), 65); } #[test] fn test_sign_transaction() { let mut wallet = LedgerWallet::new("test_001".to_string()); - wallet.connect().unwrap(); - let signature = wallet.sign_transaction("m/44'/60'/0'/0/0", &[1, 2, 3]).unwrap(); + wallet.connect().expect("mainnet: handle error"); + let signature = wallet.sign_transaction("m/44'/60'/0'/0/0", &[1, 2, 3]).expect("mainnet: handle error"); assert_eq!(signature.len(), 71); } #[test] fn test_sign_message() { let mut wallet = TrezorWallet::new("test_001".to_string()); - wallet.connect().unwrap(); - let signature = wallet.sign_message("m/44'/60'/0'/0/0", b"Hello").unwrap(); + wallet.connect().expect("mainnet: handle error"); + let signature = wallet.sign_message("m/44'/60'/0'/0/0", b"Hello").expect("mainnet: handle error"); assert_eq!(signature.len(), 71); } #[test] fn test_verify_address() { let mut wallet = LedgerWallet::new("test_001".to_string()); - wallet.connect().unwrap(); - let valid = wallet.verify_address("m/44'/60'/0'/0/0", "0x1234567890").unwrap(); + wallet.connect().expect("mainnet: handle error"); + let valid = wallet.verify_address("m/44'/60'/0'/0/0", "0x1234567890").expect("mainnet: handle error"); assert!(valid); } #[test] fn test_device_manager() { let mut manager = DeviceManager::new(); - let devices = manager.scan_devices().unwrap(); + let devices = manager.scan_devices().expect("mainnet: handle error"); assert_eq!(devices.len(), 2); } @@ -651,7 +651,7 @@ mod tests { #[test] fn test_disconnect_device() { let mut manager = DeviceManager::new(); - manager.connect_ledger("ledger_001".to_string()).unwrap(); + manager.connect_ledger("ledger_001".to_string()).expect("mainnet: handle error"); assert!(manager.disconnect("ledger_001").is_ok()); assert!(!manager.is_connected("ledger_001")); } @@ -659,7 +659,7 @@ mod tests { #[test] fn test_list_devices() { let mut manager = DeviceManager::new(); - manager.scan_devices().unwrap(); + manager.scan_devices().expect("mainnet: handle error"); let devices = manager.list_devices(); assert_eq!(devices.len(), 2); } diff --git a/nac-wallet-core/src/key_manager.rs b/nac-wallet-core/src/key_manager.rs index 93fdcaa..ab0bde2 100644 --- a/nac-wallet-core/src/key_manager.rs +++ b/nac-wallet-core/src/key_manager.rs @@ -305,28 +305,28 @@ mod tests { #[test] fn test_generate_ed25519() { - let keypair = KeyPair::generate(SignatureAlgorithm::Ed25519).unwrap(); + let keypair = KeyPair::generate(SignatureAlgorithm::Ed25519).expect("mainnet: handle error"); assert_eq!(keypair.public_key.len(), 32); assert_eq!(keypair.secret_key().len(), 32); } #[test] fn test_generate_bls() { - let keypair = KeyPair::generate(SignatureAlgorithm::BLS).unwrap(); + let keypair = KeyPair::generate(SignatureAlgorithm::BLS).expect("mainnet: handle error"); assert_eq!(keypair.public_key.len(), 48); assert_eq!(keypair.secret_key().len(), 32); } #[test] fn test_public_key_hash() { - let keypair = KeyPair::generate(SignatureAlgorithm::Ed25519).unwrap(); + let keypair = KeyPair::generate(SignatureAlgorithm::Ed25519).expect("mainnet: handle error"); let hash = keypair.public_key_hash(); assert_eq!(hash.len(), 26); } #[test] fn test_mnemonic_generate() { - let mnemonic = Mnemonic::generate(12).unwrap(); + let mnemonic = Mnemonic::generate(12).expect("mainnet: handle error"); assert_eq!(mnemonic.words().len(), 12); assert_eq!(mnemonic.seed().len(), 64); } diff --git a/nac-wallet-core/src/mnemonic.rs b/nac-wallet-core/src/mnemonic.rs index ac94524..32fcba0 100644 --- a/nac-wallet-core/src/mnemonic.rs +++ b/nac-wallet-core/src/mnemonic.rs @@ -95,7 +95,7 @@ impl Mnemonic { // 将单词转换为索引 let indices: Vec = words.iter() - .map(|w| *wordlist.get(w.as_str()).unwrap()) + .map(|w| *wordlist.get(w.as_str()).expect("mainnet: handle error")) .collect(); // 从索引恢复熵和校验和 @@ -242,14 +242,14 @@ fn pbkdf2_hmac_sha512(password: &[u8], salt: &[u8], iterations: usize, output_le let blocks = (output_len + hlen - 1) / hlen; for i in 1..=blocks { - let mut mac = HmacSha512::new_from_slice(password).unwrap(); + let mut mac = HmacSha512::new_from_slice(password).expect("mainnet: handle error"); mac.update(salt); mac.update(&(i as u32).to_be_bytes()); let mut u = mac.finalize().into_bytes().to_vec(); let mut f = u.clone(); for _ in 1..iterations { - let mut mac = HmacSha512::new_from_slice(password).unwrap(); + let mut mac = HmacSha512::new_from_slice(password).expect("mainnet: handle error"); mac.update(&u); u = mac.finalize().into_bytes().to_vec(); @@ -538,7 +538,7 @@ mod tests { fn test_mnemonic_from_entropy() { let entropy = vec![0x12, 0x34, 0x56, 0x78, 0x9a, 0xbc, 0xde, 0xf0, 0x12, 0x34, 0x56, 0x78, 0x9a, 0xbc, 0xde, 0xf0]; - let mnemonic = Mnemonic::from_entropy(&entropy, Language::English).unwrap(); + let mnemonic = Mnemonic::from_entropy(&entropy, Language::English).expect("mainnet: handle error"); assert_eq!(mnemonic.words().len(), 12); assert_eq!(mnemonic.entropy(), &entropy); } @@ -547,14 +547,14 @@ mod tests { fn test_mnemonic_to_seed() { let entropy = vec![0x12, 0x34, 0x56, 0x78, 0x9a, 0xbc, 0xde, 0xf0, 0x12, 0x34, 0x56, 0x78, 0x9a, 0xbc, 0xde, 0xf0]; - let mnemonic = Mnemonic::from_entropy(&entropy, Language::English).unwrap(); + let mnemonic = Mnemonic::from_entropy(&entropy, Language::English).expect("mainnet: handle error"); let seed = mnemonic.to_seed(""); assert_eq!(seed.len(), 64); } #[test] fn test_derivation_path_parse() { - let path = DerivationPath::from_str("m/44'/60'/0'/0/0").unwrap(); + let path = DerivationPath::from_str("m/44'/60'/0'/0/0").expect("mainnet: handle error"); assert_eq!(path.components().len(), 5); assert_eq!(path.components()[0], 44 | 0x80000000); assert_eq!(path.components()[1], 60 | 0x80000000); @@ -571,7 +571,7 @@ mod tests { #[test] fn test_extended_key_from_seed() { let seed = vec![0u8; 64]; - let key = ExtendedKey::from_seed(&seed).unwrap(); + let key = ExtendedKey::from_seed(&seed).expect("mainnet: handle error"); assert_eq!(key.private_key().len(), 32); assert_eq!(key.chain_code().len(), 32); assert_eq!(key.depth, 0); @@ -580,8 +580,8 @@ mod tests { #[test] fn test_extended_key_derive() { let seed = vec![0u8; 64]; - let master = ExtendedKey::from_seed(&seed).unwrap(); - let child = master.derive(0).unwrap(); + let master = ExtendedKey::from_seed(&seed).expect("mainnet: handle error"); + let child = master.derive(0).expect("mainnet: handle error"); assert_eq!(child.depth, 1); assert_eq!(child.child_index, 0); } @@ -589,16 +589,16 @@ mod tests { #[test] fn test_extended_key_derive_path() { let seed = vec![0u8; 64]; - let master = ExtendedKey::from_seed(&seed).unwrap(); + let master = ExtendedKey::from_seed(&seed).expect("mainnet: handle error"); let path = DerivationPath::bip44(60, 0, 0, 0); - let derived = master.derive_path(&path).unwrap(); + let derived = master.derive_path(&path).expect("mainnet: handle error"); assert_eq!(derived.depth, 5); } #[test] fn test_address_from_extended_key() { let seed = vec![0u8; 64]; - let key = ExtendedKey::from_seed(&seed).unwrap(); + let key = ExtendedKey::from_seed(&seed).expect("mainnet: handle error"); let address = AddressGenerator::from_extended_key(&key); assert!(address.starts_with("0x")); assert_eq!(address.len(), 42); // 0x + 40 hex chars @@ -608,9 +608,9 @@ mod tests { fn test_address_from_mnemonic() { let entropy = vec![0x12, 0x34, 0x56, 0x78, 0x9a, 0xbc, 0xde, 0xf0, 0x12, 0x34, 0x56, 0x78, 0x9a, 0xbc, 0xde, 0xf0]; - let mnemonic = Mnemonic::from_entropy(&entropy, Language::English).unwrap(); + let mnemonic = Mnemonic::from_entropy(&entropy, Language::English).expect("mainnet: handle error"); let path = DerivationPath::bip44(60, 0, 0, 0); - let address = AddressGenerator::from_mnemonic(&mnemonic, &path, "").unwrap(); + let address = AddressGenerator::from_mnemonic(&mnemonic, &path, "").expect("mainnet: handle error"); assert!(address.starts_with("0x")); } @@ -618,8 +618,8 @@ mod tests { fn test_generate_addresses() { let entropy = vec![0x12, 0x34, 0x56, 0x78, 0x9a, 0xbc, 0xde, 0xf0, 0x12, 0x34, 0x56, 0x78, 0x9a, 0xbc, 0xde, 0xf0]; - let mnemonic = Mnemonic::from_entropy(&entropy, Language::English).unwrap(); - let addresses = AddressGenerator::generate_addresses(&mnemonic, 60, 0, 5, "").unwrap(); + let mnemonic = Mnemonic::from_entropy(&entropy, Language::English).expect("mainnet: handle error"); + let addresses = AddressGenerator::generate_addresses(&mnemonic, 60, 0, 5, "").expect("mainnet: handle error"); assert_eq!(addresses.len(), 5); for (address, _path) in addresses { assert!(address.starts_with("0x")); diff --git a/nac-wallet-core/src/multisig.rs b/nac-wallet-core/src/multisig.rs index f773935..b49492a 100644 --- a/nac-wallet-core/src/multisig.rs +++ b/nac-wallet-core/src/multisig.rs @@ -505,7 +505,7 @@ mod tests { create_test_signer(2), create_test_signer(3), ]; - let config = MultisigConfig::m_of_n(signers, 2).unwrap(); + let config = MultisigConfig::m_of_n(signers, 2).expect("mainnet: handle error"); assert_eq!(config.scheme, MultisigScheme::MOfN); assert_eq!(config.required_signatures, 2); } @@ -517,7 +517,7 @@ mod tests { create_test_signer(2).with_weight(3), create_test_signer(3).with_weight(5), ]; - let config = MultisigConfig::weighted(signers, 7).unwrap(); + let config = MultisigConfig::weighted(signers, 7).expect("mainnet: handle error"); assert_eq!(config.scheme, MultisigScheme::Weighted); assert_eq!(config.weight_threshold, 7); } @@ -528,7 +528,7 @@ mod tests { create_test_signer(1), create_test_signer(2), ]; - let config = MultisigConfig::m_of_n(signers, 2).unwrap(); + let config = MultisigConfig::m_of_n(signers, 2).expect("mainnet: handle error"); let address = MultisigAddress::from_config(config, 1000); assert!(address.address.starts_with("0x")); assert_eq!(address.address.len(), 42); @@ -556,7 +556,7 @@ mod tests { 3600 ); let sig = Signature::new("0x5678".to_string(), vec![4, 5, 6], 1100); - tx.add_signature(sig).unwrap(); + tx.add_signature(sig).expect("mainnet: handle error"); assert_eq!(tx.signatures.len(), 1); } @@ -570,7 +570,7 @@ mod tests { ); let sig1 = Signature::new("0x5678".to_string(), vec![4, 5, 6], 1100); let sig2 = Signature::new("0x5678".to_string(), vec![7, 8, 9], 1200); - tx.add_signature(sig1).unwrap(); + tx.add_signature(sig1).expect("mainnet: handle error"); let result = tx.add_signature(sig2); assert!(result.is_err()); } @@ -583,7 +583,7 @@ mod tests { create_test_signer(1), create_test_signer(2), ]; - let config = MultisigConfig::m_of_n(signers, 2).unwrap(); + let config = MultisigConfig::m_of_n(signers, 2).expect("mainnet: handle error"); let address = MultisigAddress::from_config(config, 1000); collector.register_address(address.clone()); @@ -591,7 +591,7 @@ mod tests { address.address.clone(), vec![1, 2, 3], 1000 - ).unwrap(); + ).expect("mainnet: handle error"); assert!(collector.get_transaction(&tx_id).is_some()); } @@ -605,7 +605,7 @@ mod tests { create_test_signer(2), create_test_signer(3), ]; - let config = MultisigConfig::m_of_n(signers.clone(), 2).unwrap(); + let config = MultisigConfig::m_of_n(signers.clone(), 2).expect("mainnet: handle error"); let address = MultisigAddress::from_config(config, 1000); collector.register_address(address.clone()); @@ -613,17 +613,17 @@ mod tests { address.address.clone(), vec![1, 2, 3], 1000 - ).unwrap(); + ).expect("mainnet: handle error"); // 添加第一个签名 let sig1 = Signature::new(signers[0].address.clone(), vec![1], 1100); - collector.add_signature(&tx_id, sig1, 1100).unwrap(); - assert!(!collector.can_broadcast(&tx_id).unwrap()); + collector.add_signature(&tx_id, sig1, 1100).expect("mainnet: handle error"); + assert!(!collector.can_broadcast(&tx_id).expect("mainnet: handle error")); // 添加第二个签名 let sig2 = Signature::new(signers[1].address.clone(), vec![2], 1200); - collector.add_signature(&tx_id, sig2, 1200).unwrap(); - assert!(collector.can_broadcast(&tx_id).unwrap()); + collector.add_signature(&tx_id, sig2, 1200).expect("mainnet: handle error"); + assert!(collector.can_broadcast(&tx_id).expect("mainnet: handle error")); } #[test] @@ -634,7 +634,7 @@ mod tests { create_test_signer(1), create_test_signer(2), ]; - let config = MultisigConfig::m_of_n(signers.clone(), 2).unwrap(); + let config = MultisigConfig::m_of_n(signers.clone(), 2).expect("mainnet: handle error"); let address = MultisigAddress::from_config(config, 1000); collector.register_address(address.clone()); @@ -642,15 +642,15 @@ mod tests { address.address.clone(), vec![1, 2, 3], 1000 - ).unwrap(); + ).expect("mainnet: handle error"); let sig1 = Signature::new(signers[0].address.clone(), vec![1], 1100); let sig2 = Signature::new(signers[1].address.clone(), vec![2], 1200); - collector.add_signature(&tx_id, sig1, 1100).unwrap(); - collector.add_signature(&tx_id, sig2, 1200).unwrap(); + collector.add_signature(&tx_id, sig1, 1100).expect("mainnet: handle error"); + collector.add_signature(&tx_id, sig2, 1200).expect("mainnet: handle error"); - collector.broadcast_transaction(&tx_id).unwrap(); - let tx = collector.get_transaction(&tx_id).unwrap(); + collector.broadcast_transaction(&tx_id).expect("mainnet: handle error"); + let tx = collector.get_transaction(&tx_id).expect("mainnet: handle error"); assert_eq!(tx.status, TransactionStatus::Broadcasted); } @@ -671,7 +671,7 @@ mod tests { let mut collector = SignatureCollector::new(); let signers = vec![create_test_signer(1)]; - let config = MultisigConfig::m_of_n(signers, 1).unwrap(); + let config = MultisigConfig::m_of_n(signers, 1).expect("mainnet: handle error"); let address = MultisigAddress::from_config(config, 1000); collector.register_address(address.clone()); @@ -679,10 +679,10 @@ mod tests { address.address.clone(), vec![1, 2, 3], 1000 - ).unwrap(); + ).expect("mainnet: handle error"); collector.cleanup_expired(5000); - let tx = collector.get_transaction(&tx_id).unwrap(); + let tx = collector.get_transaction(&tx_id).expect("mainnet: handle error"); assert_eq!(tx.status, TransactionStatus::Expired); } } diff --git a/nac-wallet-core/src/security.rs b/nac-wallet-core/src/security.rs index 22d934b..7bd6337 100644 --- a/nac-wallet-core/src/security.rs +++ b/nac-wallet-core/src/security.rs @@ -555,8 +555,8 @@ mod tests { let key = b"my_secret_key"; let password = "strong_password"; - let encrypted = encryptor.encrypt(key, password).unwrap(); - let decrypted = encryptor.decrypt(&encrypted, password).unwrap(); + let encrypted = encryptor.encrypt(key, password).expect("mainnet: handle error"); + let decrypted = encryptor.decrypt(&encrypted, password).expect("mainnet: handle error"); assert_eq!(key, decrypted.as_slice()); } @@ -567,7 +567,7 @@ mod tests { let key = b"my_secret_key"; let password = "strong_password"; - let encrypted = encryptor.encrypt(key, password).unwrap(); + let encrypted = encryptor.encrypt(key, password).expect("mainnet: handle error"); let result = encryptor.decrypt(&encrypted, "wrong_password"); assert!(result.is_err()); @@ -579,10 +579,10 @@ mod tests { let key = b"my_secret_key"; let password = "strong_password"; - storage.store_key("test_key".to_string(), key, password).unwrap(); + storage.store_key("test_key".to_string(), key, password).expect("mainnet: handle error"); assert!(storage.has_key("test_key")); - let retrieved = storage.get_key("test_key", password).unwrap(); + let retrieved = storage.get_key("test_key", password).expect("mainnet: handle error"); assert_eq!(key, retrieved.as_slice()); } @@ -592,8 +592,8 @@ mod tests { let key = b"my_secret_key"; let password = "strong_password"; - storage.store_key("test_key".to_string(), key, password).unwrap(); - storage.delete_key("test_key").unwrap(); + storage.store_key("test_key".to_string(), key, password).expect("mainnet: handle error"); + storage.delete_key("test_key").expect("mainnet: handle error"); assert!(!storage.has_key("test_key")); } @@ -602,8 +602,8 @@ mod tests { let mut storage = SecureStorage::default(); let password = "strong_password"; - storage.store_key("key1".to_string(), b"data1", password).unwrap(); - storage.store_key("key2".to_string(), b"data2", password).unwrap(); + storage.store_key("key1".to_string(), b"data1", password).expect("mainnet: handle error"); + storage.store_key("key2".to_string(), b"data2", password).expect("mainnet: handle error"); let keys = storage.list_keys(); assert_eq!(keys.len(), 2); @@ -630,7 +630,7 @@ mod tests { fn test_update_permission() { let mut controller = PermissionController::new(); controller.add_user("user1".to_string(), PermissionLevel::ReadOnly); - controller.update_level("user1", PermissionLevel::Admin).unwrap(); + controller.update_level("user1", PermissionLevel::Admin).expect("mainnet: handle error"); assert!(controller.check_permission("user1", Operation::Delete).is_ok()); } diff --git a/nac-wallet-core/src/storage.rs b/nac-wallet-core/src/storage.rs index 56208ee..fc3d700 100644 --- a/nac-wallet-core/src/storage.rs +++ b/nac-wallet-core/src/storage.rs @@ -245,10 +245,10 @@ mod tests { let password = "test_password_123"; // 加密 - let keystore = KeyStore::encrypt(&keypair, password).unwrap(); + let keystore = KeyStore::encrypt(&keypair, password).expect("mainnet: handle error"); // 解密 - let decrypted = keystore.decrypt(password).unwrap(); + let decrypted = keystore.decrypt(password).expect("mainnet: handle error"); // 验证 assert_eq!(keypair.public_key_hash(), decrypted.public_key_hash()); @@ -259,7 +259,7 @@ mod tests { let keypair = KeyPair::generate(SignatureAlgorithm::Ed25519); let password = "correct_password"; - let keystore = KeyStore::encrypt(&keypair, password).unwrap(); + let keystore = KeyStore::encrypt(&keypair, password).expect("mainnet: handle error"); // 使用错误密码解密应该失败 assert!(keystore.decrypt("wrong_password").is_err()); @@ -273,21 +273,21 @@ mod tests { let keypair = KeyPair::generate(SignatureAlgorithm::Ed25519); let password = "test_password"; - let keystore = KeyStore::encrypt(&keypair, password).unwrap(); + let keystore = KeyStore::encrypt(&keypair, password).expect("mainnet: handle error"); // 保存到临时文件 - let dir = tempdir().unwrap(); + let dir = tempdir().expect("mainnet: handle error"); let file_path = dir.path().join("test_keystore.json"); - keystore.save_to_file(&file_path).unwrap(); + keystore.save_to_file(&file_path).expect("mainnet: handle error"); // 从文件加载 - let loaded = KeyStore::load_from_file(&file_path).unwrap(); + let loaded = KeyStore::load_from_file(&file_path).expect("mainnet: handle error"); // 验证 assert_eq!(keystore.address, loaded.address); // 解密验证 - let decrypted = loaded.decrypt(password).unwrap(); + let decrypted = loaded.decrypt(password).expect("mainnet: handle error"); assert_eq!(keypair.public_key_hash(), decrypted.public_key_hash()); // 清理 diff --git a/nac-wallet-core/src/transaction.rs b/nac-wallet-core/src/transaction.rs index a110779..c877776 100644 --- a/nac-wallet-core/src/transaction.rs +++ b/nac-wallet-core/src/transaction.rs @@ -399,7 +399,7 @@ mod tests { .amount(1000000) .nonce(1) .build() - .unwrap(); + .expect("mainnet: handle error"); assert_eq!(tx.payload.amount, 1000000); } diff --git a/nac-wallet-core/tests/integration_test.rs b/nac-wallet-core/tests/integration_test.rs index d1e2c49..ca80d6d 100644 --- a/nac-wallet-core/tests/integration_test.rs +++ b/nac-wallet-core/tests/integration_test.rs @@ -4,7 +4,7 @@ use nac_wallet_core::*; #[test] fn test_create_wallet() { - let keypair = KeyPair::generate(SignatureAlgorithm::Ed25519).unwrap(); + let keypair = KeyPair::generate(SignatureAlgorithm::Ed25519).expect("mainnet: handle error"); assert_eq!(keypair.public_key.len(), 32); let pubkey_hash = keypair.public_key_hash(); @@ -34,6 +34,6 @@ fn test_address_serialization() { let bytes = address.to_bytes(); assert_eq!(bytes.len(), 32); - let recovered = StructuredAddress::from_bytes(&bytes).unwrap(); + let recovered = StructuredAddress::from_bytes(&bytes).expect("mainnet: handle error"); assert_eq!(recovered.account_type, AccountType::Enterprise); } diff --git a/nac-wallet-core/tests/wallet_integration_test.rs b/nac-wallet-core/tests/wallet_integration_test.rs index c1b5170..0c343f8 100644 --- a/nac-wallet-core/tests/wallet_integration_test.rs +++ b/nac-wallet-core/tests/wallet_integration_test.rs @@ -10,13 +10,13 @@ fn test_mnemonic_to_address() { // 创建助记词 let entropy = vec![0x12, 0x34, 0x56, 0x78, 0x9a, 0xbc, 0xde, 0xf0, 0x12, 0x34, 0x56, 0x78, 0x9a, 0xbc, 0xde, 0xf0]; - let mnemonic = Mnemonic::from_entropy(&entropy, Language::English).unwrap(); + let mnemonic = Mnemonic::from_entropy(&entropy, Language::English).expect("mainnet: handle error"); // 创建派生路径 let path = DerivationPath::bip44(60, 0, 0, 0); // 生成地址 - let address = AddressGenerator::from_mnemonic(&mnemonic, &path, "").unwrap(); + let address = AddressGenerator::from_mnemonic(&mnemonic, &path, "").expect("mainnet: handle error"); assert!(address.starts_with("0x")); assert_eq!(address.len(), 42); @@ -27,10 +27,10 @@ fn test_batch_address_generation() { // 创建助记词 let entropy = vec![0x12, 0x34, 0x56, 0x78, 0x9a, 0xbc, 0xde, 0xf0, 0x12, 0x34, 0x56, 0x78, 0x9a, 0xbc, 0xde, 0xf0]; - let mnemonic = Mnemonic::from_entropy(&entropy, Language::English).unwrap(); + let mnemonic = Mnemonic::from_entropy(&entropy, Language::English).expect("mainnet: handle error"); // 批量生成地址 - let addresses = AddressGenerator::generate_addresses(&mnemonic, 60, 0, 10, "").unwrap(); + let addresses = AddressGenerator::generate_addresses(&mnemonic, 60, 0, 10, "").expect("mainnet: handle error"); assert_eq!(addresses.len(), 10); for (address, path) in addresses { @@ -49,7 +49,7 @@ fn test_multisig_workflow() { ]; // 创建2-of-3多签配置 - let config = MultisigConfig::m_of_n(signers.clone(), 2).unwrap(); + let config = MultisigConfig::m_of_n(signers.clone(), 2).expect("mainnet: handle error"); let address = MultisigAddress::from_config(config, 1000); // 创建签名收集器 @@ -61,26 +61,26 @@ fn test_multisig_workflow() { address.address().to_string(), vec![1, 2, 3, 4, 5], 1000 - ).unwrap(); + ).expect("mainnet: handle error"); // 添加第一个签名 let sig1 = multisig::Signature::new(signers[0].address.clone(), vec![10, 20, 30], 1100); - collector.add_signature(&tx_id, sig1, 1100).unwrap(); + collector.add_signature(&tx_id, sig1, 1100).expect("mainnet: handle error"); // 此时不能广播(只有1个签名) - assert!(!collector.can_broadcast(&tx_id).unwrap()); + assert!(!collector.can_broadcast(&tx_id).expect("mainnet: handle error")); // 添加第二个签名 let sig2 = multisig::Signature::new(signers[1].address.clone(), vec![40, 50, 60], 1200); - collector.add_signature(&tx_id, sig2, 1200).unwrap(); + collector.add_signature(&tx_id, sig2, 1200).expect("mainnet: handle error"); // 现在可以广播(有2个签名) - assert!(collector.can_broadcast(&tx_id).unwrap()); + assert!(collector.can_broadcast(&tx_id).expect("mainnet: handle error")); // 广播交易 - collector.broadcast_transaction(&tx_id).unwrap(); + collector.broadcast_transaction(&tx_id).expect("mainnet: handle error"); - let tx = collector.get_transaction(&tx_id).unwrap(); + let tx = collector.get_transaction(&tx_id).expect("mainnet: handle error"); assert_eq!(tx.status, multisig::TransactionStatus::Broadcasted); } @@ -94,7 +94,7 @@ fn test_weighted_multisig() { ]; // 创建加权多签配置(阈值为4) - let config = MultisigConfig::weighted(signers.clone(), 4).unwrap(); + let config = MultisigConfig::weighted(signers.clone(), 4).expect("mainnet: handle error"); let address = MultisigAddress::from_config(config, 1000); let mut collector = SignatureCollector::new(); @@ -104,17 +104,17 @@ fn test_weighted_multisig() { address.address().to_string(), vec![1, 2, 3], 1000 - ).unwrap(); + ).expect("mainnet: handle error"); // 添加权重为3的签名(不够) let sig1 = multisig::Signature::new(signers[0].address.clone(), vec![1], 1100); - collector.add_signature(&tx_id, sig1, 1100).unwrap(); - assert!(!collector.can_broadcast(&tx_id).unwrap()); + collector.add_signature(&tx_id, sig1, 1100).expect("mainnet: handle error"); + assert!(!collector.can_broadcast(&tx_id).expect("mainnet: handle error")); // 添加权重为2的签名(总权重5,超过阈值4) let sig2 = multisig::Signature::new(signers[1].address.clone(), vec![2], 1200); - collector.add_signature(&tx_id, sig2, 1200).unwrap(); - assert!(collector.can_broadcast(&tx_id).unwrap()); + collector.add_signature(&tx_id, sig2, 1200).expect("mainnet: handle error"); + assert!(collector.can_broadcast(&tx_id).expect("mainnet: handle error")); } #[test] @@ -123,19 +123,19 @@ fn test_hardware_wallet_integration() { let mut manager = DeviceManager::new(); // 扫描设备 - let devices = manager.scan_devices().unwrap(); + let devices = manager.scan_devices().expect("mainnet: handle error"); assert!(devices.len() >= 2); // 连接Ledger设备 - manager.connect_ledger("ledger_001".to_string()).unwrap(); + manager.connect_ledger("ledger_001".to_string()).expect("mainnet: handle error"); assert!(manager.is_connected("ledger_001")); // 连接Trezor设备 - manager.connect_trezor("trezor_001".to_string()).unwrap(); + manager.connect_trezor("trezor_001".to_string()).expect("mainnet: handle error"); assert!(manager.is_connected("trezor_001")); // 断开设备 - manager.disconnect("ledger_001").unwrap(); + manager.disconnect("ledger_001").expect("mainnet: handle error"); assert!(!manager.is_connected("ledger_001")); } @@ -146,20 +146,20 @@ fn test_secure_storage_workflow() { // 存储多个密钥 let password = "strong_password"; - storage.store_key("key1".to_string(), b"secret_data_1", password).unwrap(); - storage.store_key("key2".to_string(), b"secret_data_2", password).unwrap(); - storage.store_key("key3".to_string(), b"secret_data_3", password).unwrap(); + storage.store_key("key1".to_string(), b"secret_data_1", password).expect("mainnet: handle error"); + storage.store_key("key2".to_string(), b"secret_data_2", password).expect("mainnet: handle error"); + storage.store_key("key3".to_string(), b"secret_data_3", password).expect("mainnet: handle error"); // 列出所有密钥 let keys = storage.list_keys(); assert_eq!(keys.len(), 3); // 获取密钥 - let data1 = storage.get_key("key1", password).unwrap(); + let data1 = storage.get_key("key1", password).expect("mainnet: handle error"); assert_eq!(data1, b"secret_data_1"); // 删除密钥 - storage.delete_key("key2").unwrap(); + storage.delete_key("key2").expect("mainnet: handle error"); assert_eq!(storage.list_keys().len(), 2); } @@ -242,18 +242,18 @@ fn test_complete_wallet_workflow() { // 1. 创建助记词 let entropy = vec![0x12, 0x34, 0x56, 0x78, 0x9a, 0xbc, 0xde, 0xf0, 0x12, 0x34, 0x56, 0x78, 0x9a, 0xbc, 0xde, 0xf0]; - let mnemonic = Mnemonic::from_entropy(&entropy, Language::English).unwrap(); + let mnemonic = Mnemonic::from_entropy(&entropy, Language::English).expect("mainnet: handle error"); // 2. 派生密钥 let seed = mnemonic.to_seed(""); - let master_key = ExtendedKey::from_seed(&seed).unwrap(); + let master_key = ExtendedKey::from_seed(&seed).expect("mainnet: handle error"); let path = DerivationPath::bip44(60, 0, 0, 0); - let derived_key = master_key.derive_path(&path).unwrap(); + let derived_key = master_key.derive_path(&path).expect("mainnet: handle error"); // 3. 加密存储密钥 let mut storage = SecureStorage::default(); let password = "my_secure_password"; - storage.store_key("master_key".to_string(), derived_key.private_key(), password).unwrap(); + storage.store_key("master_key".to_string(), derived_key.private_key(), password).expect("mainnet: handle error"); // 4. 设置权限 let mut controller = PermissionController::new(); @@ -284,7 +284,7 @@ fn test_multisig_with_security() { Signer::new("0x1111".to_string(), vec![1; 32]), Signer::new("0x2222".to_string(), vec![2; 32]), ]; - let config = MultisigConfig::m_of_n(signers.clone(), 2).unwrap(); + let config = MultisigConfig::m_of_n(signers.clone(), 2).expect("mainnet: handle error"); let address = MultisigAddress::from_config(config, 1000); // 设置权限 @@ -302,12 +302,12 @@ fn test_multisig_with_security() { address.address().to_string(), vec![1, 2, 3], 1000 - ).unwrap(); + ).expect("mainnet: handle error"); // 第一个签名者签名 if controller.check_permission("0x1111", Operation::Sign).is_ok() { let sig1 = multisig::Signature::new(signers[0].address.clone(), vec![1], 1100); - collector.add_signature(&tx_id, sig1, 1100).unwrap(); + collector.add_signature(&tx_id, sig1, 1100).expect("mainnet: handle error"); auditor.log_event(AuditEvent::new( AuditEventType::SignOperation, @@ -323,7 +323,7 @@ fn test_multisig_with_security() { // 第二个签名者签名 if controller.check_permission("0x2222", Operation::Sign).is_ok() { let sig2 = multisig::Signature::new(signers[1].address.clone(), vec![2], 1200); - collector.add_signature(&tx_id, sig2, 1200).unwrap(); + collector.add_signature(&tx_id, sig2, 1200).expect("mainnet: handle error"); auditor.log_event(AuditEvent::new( AuditEventType::SignOperation, @@ -337,7 +337,7 @@ fn test_multisig_with_security() { } // 验证 - assert!(collector.can_broadcast(&tx_id).unwrap()); + assert!(collector.can_broadcast(&tx_id).expect("mainnet: handle error")); assert_eq!(auditor.get_all_events().len(), 2); } @@ -355,7 +355,7 @@ fn test_hardware_wallet_with_security() { // 连接硬件钱包(需要管理员权限) if controller.check_permission("user1", Operation::Write).is_ok() { - manager.connect_ledger("ledger_001".to_string()).unwrap(); + manager.connect_ledger("ledger_001".to_string()).expect("mainnet: handle error"); auditor.log_event(AuditEvent::new( AuditEventType::KeyAccessed, diff --git a/nac-webdev-init/src/validator.rs b/nac-webdev-init/src/validator.rs index 1d2363d..b8ffa50 100644 --- a/nac-webdev-init/src/validator.rs +++ b/nac-webdev-init/src/validator.rs @@ -50,7 +50,7 @@ fn check_hardcoded_params(path: &Path, issues: &mut Vec) -> Result<()> { let content = std::fs::read_to_string(entry.path())?; for (pattern, param_name) in &hardcoded_patterns { - let re = Regex::new(pattern).unwrap(); + let re = Regex::new(pattern).expect("mainnet: handle error"); if re.is_match(&content) { issues.push(format!( "{}: 发现硬编码的宪法参数 {},应从 config/constitutional-params.js 导入", @@ -65,7 +65,7 @@ fn check_hardcoded_params(path: &Path, issues: &mut Vec) -> Result<()> { } fn check_address_encoding(path: &Path, issues: &mut Vec) -> Result<()> { - let address_pattern = Regex::new(r#"["']0x[a-fA-F0-9]{40}["']"#).unwrap(); + let address_pattern = Regex::new(r#"["']0x[a-fA-F0-9]{40}["']"#).expect("mainnet: handle error"); for entry in WalkDir::new(path) .into_iter() diff --git a/nvm_v2/acc-protocol/src/acc1155.rs b/nvm_v2/acc-protocol/src/acc1155.rs index fa6b669..98d8c94 100644 --- a/nvm_v2/acc-protocol/src/acc1155.rs +++ b/nvm_v2/acc-protocol/src/acc1155.rs @@ -280,7 +280,7 @@ mod tests { fn test_transfer() { let mut token = ACC1155Token::new(); - token.mint("alice", "1", 1000).unwrap(); + token.mint("alice", "1", 1000).expect("mainnet: handle error"); assert!(token.safe_transfer_from("alice", "bob", "1", 500).is_ok()); assert_eq!(token.balance_of("alice", "1"), 500); @@ -291,8 +291,8 @@ mod tests { fn test_batch_transfer() { let mut token = ACC1155Token::new(); - token.mint("alice", "1", 1000).unwrap(); - token.mint("alice", "2", 2000).unwrap(); + token.mint("alice", "1", 1000).expect("mainnet: handle error"); + token.mint("alice", "2", 2000).expect("mainnet: handle error"); let token_ids = vec!["1".to_string(), "2".to_string()]; let amounts = vec![500, 1000]; @@ -311,7 +311,7 @@ mod tests { fn test_burn() { let mut token = ACC1155Token::new(); - token.mint("alice", "1", 1000).unwrap(); + token.mint("alice", "1", 1000).expect("mainnet: handle error"); assert!(token.burn("alice", "1", 500).is_ok()); assert_eq!(token.balance_of("alice", "1"), 500); diff --git a/nvm_v2/acc-protocol/src/acc20.rs b/nvm_v2/acc-protocol/src/acc20.rs index 2b3fdca..d5552c7 100644 --- a/nvm_v2/acc-protocol/src/acc20.rs +++ b/nvm_v2/acc-protocol/src/acc20.rs @@ -236,7 +236,7 @@ impl ACC20 for ACC20Token { self.state .allowances .get_mut(from) - .unwrap() + .expect("mainnet: handle error") .insert(spender.to_string(), current_allowance - amount); Ok(()) diff --git a/nvm_v2/acc-protocol/src/acc20_enhanced.rs b/nvm_v2/acc-protocol/src/acc20_enhanced.rs index c160e46..de71f77 100644 --- a/nvm_v2/acc-protocol/src/acc20_enhanced.rs +++ b/nvm_v2/acc-protocol/src/acc20_enhanced.rs @@ -617,12 +617,12 @@ mod tests { // 添加到白名单 assert!(token.add_to_whitelist(account).is_ok()); - let status = token.state.compliance_status.get(&account).unwrap(); + let status = token.state.compliance_status.get(&account).expect("mainnet: handle error"); assert!(status.whitelisted); // 添加到黑名单 assert!(token.add_to_blacklist(account).is_ok()); - let status = token.state.compliance_status.get(&account).unwrap(); + let status = token.state.compliance_status.get(&account).expect("mainnet: handle error"); assert!(status.blacklisted); // 黑名单账户无法通过合规检查 diff --git a/nvm_v2/acc-protocol/src/acc721.rs b/nvm_v2/acc-protocol/src/acc721.rs index 0f45be0..57b2bcc 100644 --- a/nvm_v2/acc-protocol/src/acc721.rs +++ b/nvm_v2/acc-protocol/src/acc721.rs @@ -209,7 +209,7 @@ impl ACC721 for ACC721Token { self.state .tokens .get_mut(token_id) - .unwrap() + .expect("mainnet: handle error") .owner = to.to_string(); // 更新所有者资产列表 @@ -387,7 +387,7 @@ mod tests { // 铸造资产 assert!(collection.mint("alice", "1", "https://example.com/1").is_ok()); - assert_eq!(collection.owner_of("1").unwrap(), "alice"); + assert_eq!(collection.owner_of("1").expect("mainnet: handle error"), "alice"); assert_eq!(collection.balance_of("alice"), 1); // 重复铸造 @@ -402,11 +402,11 @@ mod tests { let mut collection = create_test_collection(); // 铸造资产 - collection.mint("alice", "1", "https://example.com/1").unwrap(); + collection.mint("alice", "1", "https://example.com/1").expect("mainnet: handle error"); // 转移资产 assert!(collection.transfer_from("alice", "bob", "1").is_ok()); - assert_eq!(collection.owner_of("1").unwrap(), "bob"); + assert_eq!(collection.owner_of("1").expect("mainnet: handle error"), "bob"); assert_eq!(collection.balance_of("alice"), 0); assert_eq!(collection.balance_of("bob"), 1); } @@ -416,11 +416,11 @@ mod tests { let mut collection = create_test_collection(); // 铸造资产 - collection.mint("alice", "1", "https://example.com/1").unwrap(); + collection.mint("alice", "1", "https://example.com/1").expect("mainnet: handle error"); // 授权 assert!(collection.approve("bob", "1").is_ok()); - assert_eq!(collection.get_approved("1").unwrap(), Some("bob".to_string())); + assert_eq!(collection.get_approved("1").expect("mainnet: handle error"), Some("bob".to_string())); } #[test] @@ -428,7 +428,7 @@ mod tests { let mut collection = create_test_collection(); // 铸造资产 - collection.mint("alice", "1", "https://example.com/1").unwrap(); + collection.mint("alice", "1", "https://example.com/1").expect("mainnet: handle error"); // 销毁资产 assert!(collection.burn("1").is_ok()); @@ -441,7 +441,7 @@ mod tests { let mut collection = create_test_collection(); // 铸造资产 - collection.mint("alice", "1", "https://example.com/1").unwrap(); + collection.mint("alice", "1", "https://example.com/1").expect("mainnet: handle error"); // 冻结资产 assert!(collection.freeze_token("1").is_ok()); diff --git a/nvm_v2/acc-protocol/src/acc_collateral.rs b/nvm_v2/acc-protocol/src/acc_collateral.rs index 5eb561e..c3ea0bf 100644 --- a/nvm_v2/acc-protocol/src/acc_collateral.rs +++ b/nvm_v2/acc-protocol/src/acc_collateral.rs @@ -221,7 +221,7 @@ impl ACCCollateral for CollateralToken { let now = std::time::SystemTime::now() .duration_since(std::time::UNIX_EPOCH) - .unwrap() + .expect("mainnet: handle error") .as_secs(); record.created_at = now; @@ -294,7 +294,7 @@ impl ACCCollateral for CollateralToken { let now = std::time::SystemTime::now() .duration_since(std::time::UNIX_EPOCH) - .unwrap() + .expect("mainnet: handle error") .as_secs(); record.updated_at = now; @@ -332,7 +332,7 @@ impl ACCCollateral for CollateralToken { let now = std::time::SystemTime::now() .duration_since(std::time::UNIX_EPOCH) - .unwrap() + .expect("mainnet: handle error") .as_secs(); record.status = CollateralStatus::Liquidated; @@ -355,7 +355,7 @@ impl ACCCollateral for CollateralToken { let now = std::time::SystemTime::now() .duration_since(std::time::UNIX_EPOCH) - .unwrap() + .expect("mainnet: handle error") .as_secs(); record.status = CollateralStatus::Released; @@ -392,7 +392,7 @@ impl ACCCollateral for CollateralToken { let now = std::time::SystemTime::now() .duration_since(std::time::UNIX_EPOCH) - .unwrap() + .expect("mainnet: handle error") .as_secs(); record.updated_at = now; @@ -478,9 +478,9 @@ mod tests { fn test_calculate_ltv() { let mut collateral = CollateralToken::new(); let record = create_test_record(); - collateral.create_collateral(record).unwrap(); + collateral.create_collateral(record).expect("mainnet: handle error"); - let ltv = collateral.calculate_ltv("COLL-001").unwrap(); + let ltv = collateral.calculate_ltv("COLL-001").expect("mainnet: handle error"); assert_eq!(ltv, 6000); // 60% } @@ -488,12 +488,12 @@ mod tests { fn test_update_collateral_value() { let mut collateral = CollateralToken::new(); let record = create_test_record(); - collateral.create_collateral(record).unwrap(); + collateral.create_collateral(record).expect("mainnet: handle error"); assert!(collateral .update_collateral_value("COLL-001", 500000_00) .is_ok()); - let ltv = collateral.calculate_ltv("COLL-001").unwrap(); + let ltv = collateral.calculate_ltv("COLL-001").expect("mainnet: handle error"); assert_eq!(ltv, 12000); // 120% } @@ -502,7 +502,7 @@ mod tests { let mut collateral = CollateralToken::new(); let record = create_test_record(); // 创建正常的抵押记录(LTV = 60%) - collateral.create_collateral(record).unwrap(); + collateral.create_collateral(record).expect("mainnet: handle error"); // 通过降低抵押品价值使LTV上升到清算阈值以上 // 原始: loan_amount=600000_00, collateral_value=1000000_00, LTV=60% @@ -514,7 +514,7 @@ mod tests { // 现在LTV应该是90%,超过liquidation_ltv (85%) assert!(collateral.liquidate("COLL-001").is_ok()); assert_eq!( - collateral.get_collateral("COLL-001").unwrap().status, + collateral.get_collateral("COLL-001").expect("mainnet: handle error").status, CollateralStatus::Liquidated ); } @@ -523,11 +523,11 @@ mod tests { fn test_partial_repay() { let mut collateral = CollateralToken::new(); let record = create_test_record(); - collateral.create_collateral(record).unwrap(); + collateral.create_collateral(record).expect("mainnet: handle error"); assert!(collateral.partial_repay("COLL-001", 100000_00).is_ok()); assert_eq!( - collateral.get_collateral("COLL-001").unwrap().loan_amount, + collateral.get_collateral("COLL-001").expect("mainnet: handle error").loan_amount, 500000_00 ); } diff --git a/nvm_v2/acc-protocol/src/acc_compliance.rs b/nvm_v2/acc-protocol/src/acc_compliance.rs index a93615a..b5aa408 100644 --- a/nvm_v2/acc-protocol/src/acc_compliance.rs +++ b/nvm_v2/acc-protocol/src/acc_compliance.rs @@ -177,7 +177,7 @@ impl ACCCompliance for ComplianceToken { // 检查是否过期(使用当前时间) let now = std::time::SystemTime::now() .duration_since(std::time::UNIX_EPOCH) - .unwrap() + .expect("mainnet: handle error") .as_secs(); if now > record.expires_at { @@ -232,7 +232,7 @@ mod tests { fn create_test_record() -> ComplianceRecord { let now = std::time::SystemTime::now() .duration_since(std::time::UNIX_EPOCH) - .unwrap() + .expect("mainnet: handle error") .as_secs(); ComplianceRecord { @@ -257,13 +257,13 @@ mod tests { fn test_update_kyc_level() { let mut compliance = ComplianceToken::new(); let record = create_test_record(); - compliance.add_record(record).unwrap(); + compliance.add_record(record).expect("mainnet: handle error"); assert!(compliance .update_kyc_level("alice", KYCLevel::Advanced) .is_ok()); assert_eq!( - compliance.get_record("alice").unwrap().kyc_level, + compliance.get_record("alice").expect("mainnet: handle error").kyc_level, KYCLevel::Advanced ); } @@ -272,7 +272,7 @@ mod tests { fn test_check_compliance() { let mut compliance = ComplianceToken::new(); let record = create_test_record(); - compliance.add_record(record).unwrap(); + compliance.add_record(record).expect("mainnet: handle error"); assert!(compliance.check_compliance("alice").is_ok()); } @@ -281,7 +281,7 @@ mod tests { fn test_blacklist() { let mut compliance = ComplianceToken::new(); let record = create_test_record(); - compliance.add_record(record).unwrap(); + compliance.add_record(record).expect("mainnet: handle error"); assert!(compliance.add_to_blacklist("alice").is_ok()); assert!(compliance.is_blacklisted("alice")); @@ -299,13 +299,13 @@ mod tests { fn test_update_status() { let mut compliance = ComplianceToken::new(); let record = create_test_record(); - compliance.add_record(record).unwrap(); + compliance.add_record(record).expect("mainnet: handle error"); assert!(compliance .update_status("alice", ComplianceStatus::Rejected) .is_ok()); assert_eq!( - compliance.get_record("alice").unwrap().status, + compliance.get_record("alice").expect("mainnet: handle error").status, ComplianceStatus::Rejected ); } diff --git a/nvm_v2/acc-protocol/src/acc_custody.rs b/nvm_v2/acc-protocol/src/acc_custody.rs index 6fa1f41..55131ff 100644 --- a/nvm_v2/acc-protocol/src/acc_custody.rs +++ b/nvm_v2/acc-protocol/src/acc_custody.rs @@ -249,7 +249,7 @@ impl CustodyToken { let now = std::time::SystemTime::now() .duration_since(std::time::UNIX_EPOCH) - .unwrap() + .expect("mainnet: handle error") .as_secs(); let op_record = CustodyOperationRecord { @@ -291,7 +291,7 @@ impl ACCCustody for CustodyToken { let now = std::time::SystemTime::now() .duration_since(std::time::UNIX_EPOCH) - .unwrap() + .expect("mainnet: handle error") .as_secs(); record.created_at = now; @@ -537,7 +537,7 @@ impl ACCCustody for CustodyToken { CustodyType::TimeLock { unlock_at } => { let now = std::time::SystemTime::now() .duration_since(std::time::UNIX_EPOCH) - .unwrap() + .expect("mainnet: handle error") .as_secs(); now >= *unlock_at } @@ -609,7 +609,7 @@ mod tests { fn test_deposit() { let mut custody = CustodyToken::new(); let record = create_test_record(); - custody.create_custody(record).unwrap(); + custody.create_custody(record).expect("mainnet: handle error"); assert!(custody .deposit("CUSTODY-001", "alice", Some(500000)) @@ -620,7 +620,7 @@ mod tests { fn test_withdraw() { let mut custody = CustodyToken::new(); let record = create_test_record(); - custody.create_custody(record).unwrap(); + custody.create_custody(record).expect("mainnet: handle error"); let signatures = vec!["sig1".to_string(), "sig2".to_string()]; assert!(custody @@ -632,17 +632,17 @@ mod tests { fn test_suspend_and_resume() { let mut custody = CustodyToken::new(); let record = create_test_record(); - custody.create_custody(record).unwrap(); + custody.create_custody(record).expect("mainnet: handle error"); assert!(custody.suspend_custody("CUSTODY-001", "alice").is_ok()); assert_eq!( - custody.get_custody("CUSTODY-001").unwrap().status, + custody.get_custody("CUSTODY-001").expect("mainnet: handle error").status, CustodyStatus::Suspended ); assert!(custody.resume_custody("CUSTODY-001", "alice").is_ok()); assert_eq!( - custody.get_custody("CUSTODY-001").unwrap().status, + custody.get_custody("CUSTODY-001").expect("mainnet: handle error").status, CustodyStatus::Active ); } @@ -651,13 +651,13 @@ mod tests { fn test_add_remove_custodian() { let mut custody = CustodyToken::new(); let record = create_test_record(); - custody.create_custody(record).unwrap(); + custody.create_custody(record).expect("mainnet: handle error"); assert!(custody .add_custodian("CUSTODY-001", "custodian3".to_string()) .is_ok()); assert_eq!( - custody.get_custody("CUSTODY-001").unwrap().custodians.len(), + custody.get_custody("CUSTODY-001").expect("mainnet: handle error").custodians.len(), 3 ); @@ -665,7 +665,7 @@ mod tests { .remove_custodian("CUSTODY-001", "custodian3") .is_ok()); assert_eq!( - custody.get_custody("CUSTODY-001").unwrap().custodians.len(), + custody.get_custody("CUSTODY-001").expect("mainnet: handle error").custodians.len(), 2 ); } diff --git a/nvm_v2/acc-protocol/src/acc_governance.rs b/nvm_v2/acc-protocol/src/acc_governance.rs index 5cbd41d..ad29540 100644 --- a/nvm_v2/acc-protocol/src/acc_governance.rs +++ b/nvm_v2/acc-protocol/src/acc_governance.rs @@ -221,7 +221,7 @@ impl GovernanceToken { fn is_voting_active(&self, proposal: &GovernanceProposal) -> bool { let now = std::time::SystemTime::now() .duration_since(std::time::UNIX_EPOCH) - .unwrap() + .expect("mainnet: handle error") .as_secs(); now >= proposal.voting_start && now <= proposal.voting_end } @@ -242,7 +242,7 @@ impl ACCGovernance for GovernanceToken { let now = std::time::SystemTime::now() .duration_since(std::time::UNIX_EPOCH) - .unwrap() + .expect("mainnet: handle error") .as_secs(); proposal.created_at = now; @@ -298,7 +298,7 @@ impl ACCGovernance for GovernanceToken { if !self.is_voting_active(&proposal) { let now = std::time::SystemTime::now() .duration_since(std::time::UNIX_EPOCH) - .unwrap() + .expect("mainnet: handle error") .as_secs(); if now < proposal.voting_start { return Err(GovernanceError::VotingNotStarted); @@ -319,7 +319,7 @@ impl ACCGovernance for GovernanceToken { let now = std::time::SystemTime::now() .duration_since(std::time::UNIX_EPOCH) - .unwrap() + .expect("mainnet: handle error") .as_secs(); // 更新投票统计 @@ -368,7 +368,7 @@ impl ACCGovernance for GovernanceToken { let now = std::time::SystemTime::now() .duration_since(std::time::UNIX_EPOCH) - .unwrap() + .expect("mainnet: handle error") .as_secs(); proposal.status = ProposalStatus::Executed; @@ -484,7 +484,7 @@ mod tests { fn create_test_proposal() -> GovernanceProposal { let now = std::time::SystemTime::now() .duration_since(std::time::UNIX_EPOCH) - .unwrap() + .expect("mainnet: handle error") .as_secs(); GovernanceProposal { @@ -518,13 +518,13 @@ mod tests { fn test_vote() { let mut governance = GovernanceToken::new(); let proposal = create_test_proposal(); - governance.create_proposal(proposal).unwrap(); + governance.create_proposal(proposal).expect("mainnet: handle error"); assert!(governance .vote("PROP-001", "bob", VoteOption::For, 1000) .is_ok()); - let (votes_for, _, _) = governance.get_proposal_result("PROP-001").unwrap(); + let (votes_for, _, _) = governance.get_proposal_result("PROP-001").expect("mainnet: handle error"); assert_eq!(votes_for, 1000); } @@ -532,14 +532,14 @@ mod tests { fn test_is_proposal_passed() { let mut governance = GovernanceToken::new(); let proposal = create_test_proposal(); - governance.create_proposal(proposal).unwrap(); + governance.create_proposal(proposal).expect("mainnet: handle error"); governance .vote("PROP-001", "bob", VoteOption::For, 6000) - .unwrap(); + .expect("mainnet: handle error"); governance .vote("PROP-001", "charlie", VoteOption::Against, 4000) - .unwrap(); + .expect("mainnet: handle error"); assert!(governance.is_proposal_passed("PROP-001")); } @@ -548,18 +548,18 @@ mod tests { fn test_execute_proposal() { let mut governance = GovernanceToken::new(); let proposal = create_test_proposal(); - governance.create_proposal(proposal).unwrap(); + governance.create_proposal(proposal).expect("mainnet: handle error"); governance .vote("PROP-001", "bob", VoteOption::For, 6000) - .unwrap(); + .expect("mainnet: handle error"); governance .vote("PROP-001", "charlie", VoteOption::Against, 4000) - .unwrap(); + .expect("mainnet: handle error"); assert!(governance.execute_proposal("PROP-001").is_ok()); assert_eq!( - governance.get_proposal("PROP-001").unwrap().status, + governance.get_proposal("PROP-001").expect("mainnet: handle error").status, ProposalStatus::Executed ); } @@ -568,11 +568,11 @@ mod tests { fn test_cancel_proposal() { let mut governance = GovernanceToken::new(); let proposal = create_test_proposal(); - governance.create_proposal(proposal).unwrap(); + governance.create_proposal(proposal).expect("mainnet: handle error"); assert!(governance.cancel_proposal("PROP-001").is_ok()); assert_eq!( - governance.get_proposal("PROP-001").unwrap().status, + governance.get_proposal("PROP-001").expect("mainnet: handle error").status, ProposalStatus::Cancelled ); } diff --git a/nvm_v2/acc-protocol/src/acc_insurance.rs b/nvm_v2/acc-protocol/src/acc_insurance.rs index 378b990..1b84a8f 100644 --- a/nvm_v2/acc-protocol/src/acc_insurance.rs +++ b/nvm_v2/acc-protocol/src/acc_insurance.rs @@ -253,7 +253,7 @@ impl ACCInsurance for InsuranceToken { let now = std::time::SystemTime::now() .duration_since(std::time::UNIX_EPOCH) - .unwrap() + .expect("mainnet: handle error") .as_secs(); policy.created_at = now; @@ -316,7 +316,7 @@ impl ACCInsurance for InsuranceToken { let now = std::time::SystemTime::now() .duration_since(std::time::UNIX_EPOCH) - .unwrap() + .expect("mainnet: handle error") .as_secs(); claim.filed_at = now; @@ -355,7 +355,7 @@ impl ACCInsurance for InsuranceToken { let now = std::time::SystemTime::now() .duration_since(std::time::UNIX_EPOCH) - .unwrap() + .expect("mainnet: handle error") .as_secs(); claim.status = ClaimStatus::Approved; @@ -391,7 +391,7 @@ impl ACCInsurance for InsuranceToken { let now = std::time::SystemTime::now() .duration_since(std::time::UNIX_EPOCH) - .unwrap() + .expect("mainnet: handle error") .as_secs(); claim.status = ClaimStatus::Paid; @@ -407,7 +407,7 @@ impl ACCInsurance for InsuranceToken { let now = std::time::SystemTime::now() .duration_since(std::time::UNIX_EPOCH) - .unwrap() + .expect("mainnet: handle error") .as_secs(); policy.expiration_date = new_expiration; @@ -424,7 +424,7 @@ impl ACCInsurance for InsuranceToken { let now = std::time::SystemTime::now() .duration_since(std::time::UNIX_EPOCH) - .unwrap() + .expect("mainnet: handle error") .as_secs(); policy.status = InsuranceStatus::Suspended; @@ -440,7 +440,7 @@ impl ACCInsurance for InsuranceToken { let now = std::time::SystemTime::now() .duration_since(std::time::UNIX_EPOCH) - .unwrap() + .expect("mainnet: handle error") .as_secs(); policy.status = InsuranceStatus::Active; @@ -456,7 +456,7 @@ impl ACCInsurance for InsuranceToken { let now = std::time::SystemTime::now() .duration_since(std::time::UNIX_EPOCH) - .unwrap() + .expect("mainnet: handle error") .as_secs(); policy.status = InsuranceStatus::Terminated; @@ -497,7 +497,7 @@ impl ACCInsurance for InsuranceToken { if let Ok(policy) = self.get_policy(policy_id) { let now = std::time::SystemTime::now() .duration_since(std::time::UNIX_EPOCH) - .unwrap() + .expect("mainnet: handle error") .as_secs(); policy.status == InsuranceStatus::Active && now < policy.expiration_date } else { @@ -557,7 +557,7 @@ mod tests { fn test_file_claim() { let mut insurance = InsuranceToken::new(); let policy = create_test_policy(); - insurance.create_policy(policy).unwrap(); + insurance.create_policy(policy).expect("mainnet: handle error"); let claim = create_test_claim(); assert!(insurance.file_claim(claim).is_ok()); @@ -567,20 +567,20 @@ mod tests { fn test_approve_and_pay_claim() { let mut insurance = InsuranceToken::new(); let policy = create_test_policy(); - insurance.create_policy(policy).unwrap(); + insurance.create_policy(policy).expect("mainnet: handle error"); let claim = create_test_claim(); - insurance.file_claim(claim).unwrap(); + insurance.file_claim(claim).expect("mainnet: handle error"); assert!(insurance.approve_claim("CLAIM-001", 45000_00).is_ok()); assert_eq!( - insurance.get_claim("CLAIM-001").unwrap().status, + insurance.get_claim("CLAIM-001").expect("mainnet: handle error").status, ClaimStatus::Approved ); assert!(insurance.pay_claim("CLAIM-001").is_ok()); assert_eq!( - insurance.get_claim("CLAIM-001").unwrap().status, + insurance.get_claim("CLAIM-001").expect("mainnet: handle error").status, ClaimStatus::Paid ); } @@ -589,12 +589,12 @@ mod tests { fn test_renew_policy() { let mut insurance = InsuranceToken::new(); let policy = create_test_policy(); - insurance.create_policy(policy).unwrap(); + insurance.create_policy(policy).expect("mainnet: handle error"); let new_expiration = 1234567890 + 63072000; // 2 years assert!(insurance.renew_policy("POL-001", new_expiration).is_ok()); assert_eq!( - insurance.get_policy("POL-001").unwrap().expiration_date, + insurance.get_policy("POL-001").expect("mainnet: handle error").expiration_date, new_expiration ); } @@ -603,17 +603,17 @@ mod tests { fn test_suspend_and_resume_policy() { let mut insurance = InsuranceToken::new(); let policy = create_test_policy(); - insurance.create_policy(policy).unwrap(); + insurance.create_policy(policy).expect("mainnet: handle error"); assert!(insurance.suspend_policy("POL-001").is_ok()); assert_eq!( - insurance.get_policy("POL-001").unwrap().status, + insurance.get_policy("POL-001").expect("mainnet: handle error").status, InsuranceStatus::Suspended ); assert!(insurance.resume_policy("POL-001").is_ok()); assert_eq!( - insurance.get_policy("POL-001").unwrap().status, + insurance.get_policy("POL-001").expect("mainnet: handle error").status, InsuranceStatus::Active ); } diff --git a/nvm_v2/acc-protocol/src/acc_redemption.rs b/nvm_v2/acc-protocol/src/acc_redemption.rs index a304262..6c7a3c7 100644 --- a/nvm_v2/acc-protocol/src/acc_redemption.rs +++ b/nvm_v2/acc-protocol/src/acc_redemption.rs @@ -215,7 +215,7 @@ impl ACCRedemption for RedemptionToken { let now = std::time::SystemTime::now() .duration_since(std::time::UNIX_EPOCH) - .unwrap() + .expect("mainnet: handle error") .as_secs(); request.requested_at = now; @@ -285,7 +285,7 @@ impl ACCRedemption for RedemptionToken { let now = std::time::SystemTime::now() .duration_since(std::time::UNIX_EPOCH) - .unwrap() + .expect("mainnet: handle error") .as_secs(); request.status = RedemptionStatus::Approved; @@ -344,7 +344,7 @@ impl ACCRedemption for RedemptionToken { let now = std::time::SystemTime::now() .duration_since(std::time::UNIX_EPOCH) - .unwrap() + .expect("mainnet: handle error") .as_secs(); request.status = RedemptionStatus::Completed; @@ -466,11 +466,11 @@ mod tests { fn test_approve_redemption() { let mut redemption = RedemptionToken::new(); let request = create_test_request(); - redemption.submit_redemption(request).unwrap(); + redemption.submit_redemption(request).expect("mainnet: handle error"); assert!(redemption.approve_redemption("RED-001").is_ok()); assert_eq!( - redemption.get_redemption("RED-001").unwrap().status, + redemption.get_redemption("RED-001").expect("mainnet: handle error").status, RedemptionStatus::Approved ); } @@ -479,14 +479,14 @@ mod tests { fn test_complete_redemption() { let mut redemption = RedemptionToken::new(); let request = create_test_request(); - redemption.submit_redemption(request).unwrap(); + redemption.submit_redemption(request).expect("mainnet: handle error"); - redemption.approve_redemption("RED-001").unwrap(); - redemption.process_redemption("RED-001").unwrap(); + redemption.approve_redemption("RED-001").expect("mainnet: handle error"); + redemption.process_redemption("RED-001").expect("mainnet: handle error"); assert!(redemption.complete_redemption("RED-001").is_ok()); assert_eq!( - redemption.get_redemption("RED-001").unwrap().status, + redemption.get_redemption("RED-001").expect("mainnet: handle error").status, RedemptionStatus::Completed ); } @@ -498,9 +498,9 @@ mod tests { request.redemption_type = RedemptionType::Early; request.early_redemption_fee = Some(100); // 1% - redemption.submit_redemption(request).unwrap(); + redemption.submit_redemption(request).expect("mainnet: handle error"); - let fee = redemption.calculate_redemption_fee("RED-001").unwrap(); + let fee = redemption.calculate_redemption_fee("RED-001").expect("mainnet: handle error"); assert_eq!(fee, 10000); // 1% of 1000000 } @@ -508,11 +508,11 @@ mod tests { fn test_cancel_redemption() { let mut redemption = RedemptionToken::new(); let request = create_test_request(); - redemption.submit_redemption(request).unwrap(); + redemption.submit_redemption(request).expect("mainnet: handle error"); assert!(redemption.cancel_redemption("RED-001").is_ok()); assert_eq!( - redemption.get_redemption("RED-001").unwrap().status, + redemption.get_redemption("RED-001").expect("mainnet: handle error").status, RedemptionStatus::Cancelled ); } diff --git a/nvm_v2/acc-protocol/src/acc_reserve.rs b/nvm_v2/acc-protocol/src/acc_reserve.rs index 51364d4..666e713 100644 --- a/nvm_v2/acc-protocol/src/acc_reserve.rs +++ b/nvm_v2/acc-protocol/src/acc_reserve.rs @@ -357,7 +357,7 @@ mod tests { let mut protocol = GoldReserveProtocol::new("reserve_001".to_string()); // 注入100万USDT - protocol.deposit(1000000_00, 1700000000, "operator_001").unwrap(); + protocol.deposit(1000000_00, 1700000000, "operator_001").expect("mainnet: handle error"); // 验证资金分配 assert_eq!(protocol.account.custody_balance, 800000_00); // 80% @@ -369,10 +369,10 @@ mod tests { let mut protocol = GoldReserveProtocol::new("reserve_001".to_string()); // 注入资金 - protocol.deposit(1000000_00, 1700000000, "operator_001").unwrap(); + protocol.deposit(1000000_00, 1700000000, "operator_001").expect("mainnet: handle error"); // 开仓黄金永续合约,黄金价格$2000/盎司 - protocol.open_position(2000_00, 1700000001, "operator_001").unwrap(); + protocol.open_position(2000_00, 1700000001, "operator_001").expect("mainnet: handle error"); // 验证持仓 // 托管账户80万USDT,1.25倍杠杆 = 100万USDT持仓价值 @@ -389,10 +389,10 @@ mod tests { let mut protocol = GoldReserveProtocol::new("reserve_001".to_string()); // 注入100万USDT - protocol.deposit(1000000_00, 1700000000, "operator_001").unwrap(); + protocol.deposit(1000000_00, 1700000000, "operator_001").expect("mainnet: handle error"); // 开仓黄金永续合约 - protocol.open_position(2000_00, 1700000001, "operator_001").unwrap(); + protocol.open_position(2000_00, 1700000001, "operator_001").expect("mainnet: handle error"); // 计算GCR // 黄金持仓价值:500盎司 × $2000 = 100万USDT @@ -409,11 +409,11 @@ mod tests { let mut protocol = GoldReserveProtocol::new("reserve_001".to_string()); // 注入资金并开仓 - protocol.deposit(1000000_00, 1700000000, "operator_001").unwrap(); - protocol.open_position(2000_00, 1700000001, "operator_001").unwrap(); + protocol.deposit(1000000_00, 1700000000, "operator_001").expect("mainnet: handle error"); + protocol.open_position(2000_00, 1700000001, "operator_001").expect("mainnet: handle error"); // 黄金价格上涨到$2200/盎司 - protocol.update_gold_price(2200_00).unwrap(); + protocol.update_gold_price(2200_00).expect("mainnet: handle error"); // 验证未实现盈亏 // 持仓500盎司,价格从$2000涨到$2200 @@ -435,8 +435,8 @@ mod tests { let mut protocol = GoldReserveProtocol::new("reserve_001".to_string()); // 注入资金并开仓 - protocol.deposit(1000000_00, 1700000000, "operator_001").unwrap(); - protocol.open_position(2000_00, 1700000001, "operator_001").unwrap(); + protocol.deposit(1000000_00, 1700000000, "operator_001").expect("mainnet: handle error"); + protocol.open_position(2000_00, 1700000001, "operator_001").expect("mainnet: handle error"); // 黄金价格暴跌到$1400/盎司(触发强制平仓) let result = protocol.update_gold_price(1400_00); @@ -449,18 +449,18 @@ mod tests { let mut protocol = GoldReserveProtocol::new("reserve_001".to_string()); // 注入资金并开仓 - protocol.deposit(1000000_00, 1700000000, "operator_001").unwrap(); - protocol.open_position(2000_00, 1700000001, "operator_001").unwrap(); + protocol.deposit(1000000_00, 1700000000, "operator_001").expect("mainnet: handle error"); + protocol.open_position(2000_00, 1700000001, "operator_001").expect("mainnet: handle error"); // 初始状态:Warning (GCR=120%) assert_eq!(protocol.status, ReserveStatus::Warning); // 黄金价格下跌到$1800,GCR降至108% - protocol.update_gold_price(1800_00).unwrap(); + protocol.update_gold_price(1800_00).expect("mainnet: handle error"); assert_eq!(protocol.status, ReserveStatus::Warning); // 黄金价格下跌到$1600,GCR降至96% - protocol.update_gold_price(1600_00).unwrap(); + protocol.update_gold_price(1600_00).expect("mainnet: handle error"); assert_eq!(protocol.status, ReserveStatus::Danger);; } @@ -469,15 +469,15 @@ mod tests { let mut protocol = GoldReserveProtocol::new("reserve_001".to_string()); // 注入资金并开仓 - protocol.deposit(1000000_00, 1700000000, "operator_001").unwrap(); - protocol.open_position(2000_00, 1700000001, "operator_001").unwrap(); + protocol.deposit(1000000_00, 1700000000, "operator_001").expect("mainnet: handle error"); + protocol.open_position(2000_00, 1700000001, "operator_001").expect("mainnet: handle error"); // 黄金价格下跌到$1500,进入Critical状态 - protocol.update_gold_price(1500_00).unwrap(); + protocol.update_gold_price(1500_00).expect("mainnet: handle error"); assert_eq!(protocol.status, ReserveStatus::Critical); // 使用风险准备金 - protocol.use_risk_reserve(50000_00, 1700000002, "operator_001").unwrap(); + protocol.use_risk_reserve(50000_00, 1700000002, "operator_001").expect("mainnet: handle error"); assert_eq!(protocol.account.risk_reserve_balance, 150000_00); } } diff --git a/nvm_v2/acc-protocol/src/acc_rwa.rs b/nvm_v2/acc-protocol/src/acc_rwa.rs index 5c3fb03..159805f 100644 --- a/nvm_v2/acc-protocol/src/acc_rwa.rs +++ b/nvm_v2/acc-protocol/src/acc_rwa.rs @@ -226,7 +226,7 @@ impl ACCRwa for RwaToken { let now = std::time::SystemTime::now() .duration_since(std::time::UNIX_EPOCH) - .unwrap() + .expect("mainnet: handle error") .as_secs(); asset_info.created_at = now; @@ -278,7 +278,7 @@ impl ACCRwa for RwaToken { let now = std::time::SystemTime::now() .duration_since(std::time::UNIX_EPOCH) - .unwrap() + .expect("mainnet: handle error") .as_secs(); asset.valuation_usd = new_valuation; @@ -301,7 +301,7 @@ impl ACCRwa for RwaToken { let now = std::time::SystemTime::now() .duration_since(std::time::UNIX_EPOCH) - .unwrap() + .expect("mainnet: handle error") .as_secs(); asset.updated_at = now; @@ -325,7 +325,7 @@ impl ACCRwa for RwaToken { let now = std::time::SystemTime::now() .duration_since(std::time::UNIX_EPOCH) - .unwrap() + .expect("mainnet: handle error") .as_secs(); asset.status = RWAAssetStatus::Frozen; @@ -341,7 +341,7 @@ impl ACCRwa for RwaToken { let now = std::time::SystemTime::now() .duration_since(std::time::UNIX_EPOCH) - .unwrap() + .expect("mainnet: handle error") .as_secs(); asset.status = RWAAssetStatus::Active; @@ -357,7 +357,7 @@ impl ACCRwa for RwaToken { let now = std::time::SystemTime::now() .duration_since(std::time::UNIX_EPOCH) - .unwrap() + .expect("mainnet: handle error") .as_secs(); asset.status = RWAAssetStatus::Deactivated; @@ -373,7 +373,7 @@ impl ACCRwa for RwaToken { let now = std::time::SystemTime::now() .duration_since(std::time::UNIX_EPOCH) - .unwrap() + .expect("mainnet: handle error") .as_secs(); asset.legal_documents.push(document_hash); @@ -424,7 +424,7 @@ impl ACCRwa for RwaToken { let now = std::time::SystemTime::now() .duration_since(std::time::UNIX_EPOCH) - .unwrap() + .expect("mainnet: handle error") .as_secs(); asset.last_audited_at = Some(now); @@ -470,50 +470,50 @@ mod tests { fn test_update_valuation() { let mut rwa = RwaToken::new(); let asset = create_test_asset(); - rwa.register_asset(asset).unwrap(); + rwa.register_asset(asset).expect("mainnet: handle error"); assert!(rwa.update_valuation("RWA-001", 1200000_00).is_ok()); - assert_eq!(rwa.get_asset("RWA-001").unwrap().valuation_usd, 1200000_00); + assert_eq!(rwa.get_asset("RWA-001").expect("mainnet: handle error").valuation_usd, 1200000_00); } #[test] fn test_transfer_ownership() { let mut rwa = RwaToken::new(); let asset = create_test_asset(); - rwa.register_asset(asset).unwrap(); + rwa.register_asset(asset).expect("mainnet: handle error"); assert!(rwa.transfer_ownership("RWA-001", "bob".to_string()).is_ok()); - assert_eq!(rwa.get_asset("RWA-001").unwrap().owner, "bob"); + assert_eq!(rwa.get_asset("RWA-001").expect("mainnet: handle error").owner, "bob"); } #[test] fn test_freeze_unfreeze_asset() { let mut rwa = RwaToken::new(); let asset = create_test_asset(); - rwa.register_asset(asset).unwrap(); + rwa.register_asset(asset).expect("mainnet: handle error"); assert!(rwa.freeze_asset("RWA-001").is_ok()); - assert_eq!(rwa.get_asset("RWA-001").unwrap().status, RWAAssetStatus::Frozen); + assert_eq!(rwa.get_asset("RWA-001").expect("mainnet: handle error").status, RWAAssetStatus::Frozen); assert!(rwa.unfreeze_asset("RWA-001").is_ok()); - assert_eq!(rwa.get_asset("RWA-001").unwrap().status, RWAAssetStatus::Active); + assert_eq!(rwa.get_asset("RWA-001").expect("mainnet: handle error").status, RWAAssetStatus::Active); } #[test] fn test_add_legal_document() { let mut rwa = RwaToken::new(); let asset = create_test_asset(); - rwa.register_asset(asset).unwrap(); + rwa.register_asset(asset).expect("mainnet: handle error"); assert!(rwa.add_legal_document("RWA-001", "doc2".to_string()).is_ok()); - assert_eq!(rwa.get_asset("RWA-001").unwrap().legal_documents.len(), 2); + assert_eq!(rwa.get_asset("RWA-001").expect("mainnet: handle error").legal_documents.len(), 2); } #[test] fn test_get_owner_assets() { let mut rwa = RwaToken::new(); let asset = create_test_asset(); - rwa.register_asset(asset).unwrap(); + rwa.register_asset(asset).expect("mainnet: handle error"); let assets = rwa.get_owner_assets("alice"); assert_eq!(assets.len(), 1); @@ -523,7 +523,7 @@ mod tests { fn test_get_assets_by_gnacs() { let mut rwa = RwaToken::new(); let asset = create_test_asset(); - rwa.register_asset(asset).unwrap(); + rwa.register_asset(asset).expect("mainnet: handle error"); let assets = rwa.get_assets_by_gnacs("NAC-RE-001"); assert_eq!(assets.len(), 1); diff --git a/nvm_v2/acc-protocol/src/acc_valuation.rs b/nvm_v2/acc-protocol/src/acc_valuation.rs index a7084e5..b6e8262 100644 --- a/nvm_v2/acc-protocol/src/acc_valuation.rs +++ b/nvm_v2/acc-protocol/src/acc_valuation.rs @@ -136,7 +136,7 @@ impl ACCValuation for ValuationToken { if record.timestamp == 0 { record.timestamp = std::time::SystemTime::now() .duration_since(std::time::UNIX_EPOCH) - .unwrap() + .expect("mainnet: handle error") .as_secs(); } @@ -208,7 +208,7 @@ impl ACCValuation for ValuationToken { if let Ok(record) = self.get_valuation(valuation_id) { let now = std::time::SystemTime::now() .duration_since(std::time::UNIX_EPOCH) - .unwrap() + .expect("mainnet: handle error") .as_secs(); now <= record.timestamp + record.validity_period } else { @@ -219,7 +219,7 @@ impl ACCValuation for ValuationToken { fn calculate_average_valuation(&self, asset_id: &str, period: u64) -> Option { let now = std::time::SystemTime::now() .duration_since(std::time::UNIX_EPOCH) - .unwrap() + .expect("mainnet: handle error") .as_secs(); let valuations = self.get_valuation_history(asset_id); @@ -253,7 +253,7 @@ mod tests { fn create_test_valuation() -> ValuationRecord { let now = std::time::SystemTime::now() .duration_since(std::time::UNIX_EPOCH) - .unwrap() + .expect("mainnet: handle error") .as_secs(); ValuationRecord { @@ -279,7 +279,7 @@ mod tests { fn test_get_latest_valuation() { let mut valuation = ValuationToken::new(); let record = create_test_valuation(); - valuation.add_valuation(record).unwrap(); + valuation.add_valuation(record).expect("mainnet: handle error"); assert!(valuation.get_latest_valuation("RWA-001").is_ok()); } @@ -288,7 +288,7 @@ mod tests { fn test_is_valuation_valid() { let mut valuation = ValuationToken::new(); let record = create_test_valuation(); - valuation.add_valuation(record).unwrap(); + valuation.add_valuation(record).expect("mainnet: handle error"); assert!(valuation.is_valuation_valid("VAL-001")); } @@ -300,29 +300,29 @@ mod tests { let mut record1 = create_test_valuation(); record1.valuation_id = "VAL-001".to_string(); record1.value = 1000000_00; - valuation.add_valuation(record1).unwrap(); + valuation.add_valuation(record1).expect("mainnet: handle error"); let mut record2 = create_test_valuation(); record2.valuation_id = "VAL-002".to_string(); record2.value = 1200000_00; - valuation.add_valuation(record2).unwrap(); + valuation.add_valuation(record2).expect("mainnet: handle error"); let avg = valuation.calculate_average_valuation("RWA-001", 31536000); assert!(avg.is_some()); - assert_eq!(avg.unwrap(), 1100000_00); + assert_eq!(avg.expect("mainnet: handle error"), 1100000_00); } #[test] fn test_add_note() { let mut valuation = ValuationToken::new(); let record = create_test_valuation(); - valuation.add_valuation(record).unwrap(); + valuation.add_valuation(record).expect("mainnet: handle error"); assert!(valuation .add_note("VAL-001", "Test note".to_string()) .is_ok()); assert_eq!( - valuation.get_valuation("VAL-001").unwrap().notes.len(), + valuation.get_valuation("VAL-001").expect("mainnet: handle error").notes.len(), 1 ); } diff --git a/nvm_v2/acc-protocol/src/acc_xtzh.rs b/nvm_v2/acc-protocol/src/acc_xtzh.rs index cff060c..104c5c0 100644 --- a/nvm_v2/acc-protocol/src/acc_xtzh.rs +++ b/nvm_v2/acc-protocol/src/acc_xtzh.rs @@ -418,7 +418,7 @@ mod tests { "gold_reserve_anchor_001", 1700000000, ) - .unwrap(); + .expect("mainnet: handle error"); // 转账 let result = protocol.transfer("alice", "bob", 300_0000_0000, 1700000001); @@ -442,7 +442,7 @@ mod tests { "gold_reserve_anchor_001", 1700000000, ) - .unwrap(); + .expect("mainnet: handle error"); // 销毁 let result = protocol.burn("alice", 300_0000_0000); @@ -466,16 +466,16 @@ mod tests { "gold_reserve_anchor_001", 1700000000, ) - .unwrap(); + .expect("mainnet: handle error"); // 锁定 - protocol.lock("alice", 300_0000_0000).unwrap(); + protocol.lock("alice", 300_0000_0000).expect("mainnet: handle error"); let balance = protocol.balance_of("alice"); assert_eq!(balance.available, 700_0000_0000); assert_eq!(balance.locked, 300_0000_0000); // 解锁 - protocol.unlock("alice", 100_0000_0000).unwrap(); + protocol.unlock("alice", 100_0000_0000).expect("mainnet: handle error"); let balance = protocol.balance_of("alice"); assert_eq!(balance.available, 800_0000_0000); assert_eq!(balance.locked, 200_0000_0000); @@ -496,17 +496,17 @@ mod tests { "gold_reserve_anchor_001", 1700000000, ) - .unwrap(); + .expect("mainnet: handle error"); // 更新健康因子到预警状态 - protocol.update_health_factor("mint_001", 105).unwrap(); - let record = protocol.mint_records.get("mint_001").unwrap(); + protocol.update_health_factor("mint_001", 105).expect("mainnet: handle error"); + let record = protocol.mint_records.get("mint_001").expect("mainnet: handle error"); assert_eq!(record.health_factor, 105); assert_eq!(record.status, MintStatus::Warning); // 更新健康因子到清算状态 - protocol.update_health_factor("mint_001", 95).unwrap(); - let record = protocol.mint_records.get("mint_001").unwrap(); + protocol.update_health_factor("mint_001", 95).expect("mainnet: handle error"); + let record = protocol.mint_records.get("mint_001").expect("mainnet: handle error"); assert_eq!(record.health_factor, 95); assert_eq!(record.status, MintStatus::Liquidating); } @@ -516,7 +516,7 @@ mod tests { let mut protocol = XTZHProtocol::new(); // 更新GCR - protocol.update_gold_coverage_ratio(110).unwrap(); + protocol.update_gold_coverage_ratio(110).expect("mainnet: handle error"); assert_eq!(protocol.token.gold_coverage_ratio, 110); // 尝试设置低于最低值的GCR diff --git a/nvm_v2/nvm-l0/src/block_coordinate.rs b/nvm_v2/nvm-l0/src/block_coordinate.rs index 3ac8dc8..ee854e2 100644 --- a/nvm_v2/nvm-l0/src/block_coordinate.rs +++ b/nvm_v2/nvm-l0/src/block_coordinate.rs @@ -377,7 +377,7 @@ mod tests { fn test_coordinate_serialization() { let coord = BlockCoordinate::new(1, 100, [1u8; 32]); let bytes = coord.to_bytes(); - let deserialized = BlockCoordinate::from_bytes(&bytes).unwrap(); + let deserialized = BlockCoordinate::from_bytes(&bytes).expect("mainnet: handle error"); assert_eq!(coord, deserialized); } @@ -385,7 +385,7 @@ mod tests { #[test] fn test_coordinate_from_string() { let coord_str = format!("1:100:{}", hex::encode([1u8; 32])); - let coord = BlockCoordinate::from_string(&coord_str).unwrap(); + let coord = BlockCoordinate::from_string(&coord_str).expect("mainnet: handle error"); assert_eq!(coord.epoch, 1); assert_eq!(coord.round, 100); diff --git a/nvm_v2/nvm-l0/src/cbpp_integration.rs b/nvm_v2/nvm-l0/src/cbpp_integration.rs index 112d393..85490f9 100644 --- a/nvm_v2/nvm-l0/src/cbpp_integration.rs +++ b/nvm_v2/nvm-l0/src/cbpp_integration.rs @@ -254,7 +254,7 @@ mod tests { let result = test.scenario_transaction_to_block(); assert!(result.is_ok()); - let coord = result.unwrap(); + let coord = result.expect("mainnet: handle error"); assert_eq!(coord.epoch, 0); assert_eq!(coord.round, 1); } @@ -272,7 +272,7 @@ mod tests { let result = test.scenario_constitutional_upgrade(); assert!(result.is_ok()); - let coord = result.unwrap(); + let coord = result.expect("mainnet: handle error"); assert_eq!(coord.epoch, 1); assert_eq!(coord.round, 0); } @@ -290,7 +290,7 @@ mod tests { let result = test.scenario_parallel_block_production(); assert!(result.is_ok()); - let coords = result.unwrap(); + let coords = result.expect("mainnet: handle error"); assert_eq!(coords.len(), 3); // 验证所有坐标在同一轮次 @@ -305,8 +305,8 @@ mod tests { let mut test = CBPPIntegrationTest::new(); // 执行一些操作 - test.scenario_producer_lifecycle().unwrap(); - test.scenario_transaction_to_block().unwrap(); + test.scenario_producer_lifecycle().expect("mainnet: handle error"); + test.scenario_transaction_to_block().expect("mainnet: handle error"); let stats = test.get_stats(); @@ -321,7 +321,7 @@ mod tests { // 创建一个CR let tx_hash = [99u8; 48]; - let cr = test.issue_constitutional_receipt(tx_hash).unwrap(); + let cr = test.issue_constitutional_receipt(tx_hash).expect("mainnet: handle error"); test.cr_manager.add_receipt(cr.clone(), 0); // 在有效期内应该验证通过 @@ -337,16 +337,16 @@ mod tests { let did = DID::new("test_producer"); // 注册但未完成KYC - test.opn.register_producer(did.clone(), 100, vec![1, 2, 3]).unwrap(); - assert!(!test.opn.verify_producer(&did).unwrap()); + test.opn.register_producer(did.clone(), 100, vec![1, 2, 3]).expect("mainnet: handle error"); + assert!(!test.opn.verify_producer(&did).expect("mainnet: handle error")); // 完成KYC但未通过测试 - test.opn.update_kyc_status(&did, KYCStatus::Verified).unwrap(); - assert!(!test.opn.verify_producer(&did).unwrap()); + test.opn.update_kyc_status(&did, KYCStatus::Verified).expect("mainnet: handle error"); + assert!(!test.opn.verify_producer(&did).expect("mainnet: handle error")); // 通过测试后应该合格 - test.opn.submit_test_score(&did, 80).unwrap(); - assert!(test.opn.verify_producer(&did).unwrap()); + test.opn.submit_test_score(&did, 80).expect("mainnet: handle error"); + assert!(test.opn.verify_producer(&did).expect("mainnet: handle error")); } #[test] diff --git a/nvm_v2/nvm-l0/src/constitutional_layer.rs b/nvm_v2/nvm-l0/src/constitutional_layer.rs index b440a04..698a8f5 100644 --- a/nvm_v2/nvm-l0/src/constitutional_layer.rs +++ b/nvm_v2/nvm-l0/src/constitutional_layer.rs @@ -844,7 +844,7 @@ mod tests { priority: 200, }); - manager.upgrade_to(us_version).unwrap(); + manager.upgrade_to(us_version).expect("mainnet: handle error"); // 获取美国证券规则 let us_rules = manager.get_applicable_rules( diff --git a/nvm_v2/nvm-l0/src/constitutional_receipt.rs b/nvm_v2/nvm-l0/src/constitutional_receipt.rs index 569a398..d510024 100644 --- a/nvm_v2/nvm-l0/src/constitutional_receipt.rs +++ b/nvm_v2/nvm-l0/src/constitutional_receipt.rs @@ -50,7 +50,7 @@ impl ConstitutionalReceipt { ) -> Self { let timestamp = SystemTime::now() .duration_since(UNIX_EPOCH) - .unwrap() + .expect("mainnet: handle error") .as_millis() as u64; let mut receipt = Self { @@ -275,7 +275,7 @@ mod tests { fn test_receipt_serialization() { let receipt = create_test_receipt(); let bytes = receipt.to_bytes(); - let deserialized = ConstitutionalReceipt::from_bytes(&bytes).unwrap(); + let deserialized = ConstitutionalReceipt::from_bytes(&bytes).expect("mainnet: handle error"); assert_eq!(receipt, deserialized); } @@ -288,7 +288,7 @@ mod tests { let retrieved = manager.get_receipt(&receipt.receipt_id); assert!(retrieved.is_some()); - assert_eq!(retrieved.unwrap(), &receipt); + assert_eq!(retrieved.expect("mainnet: handle error"), &receipt); } #[test] diff --git a/nvm_v2/nvm-l0/src/csnp/aa_pe.rs b/nvm_v2/nvm-l0/src/csnp/aa_pe.rs index a2881e2..0f3b727 100644 --- a/nvm_v2/nvm-l0/src/csnp/aa_pe.rs +++ b/nvm_v2/nvm-l0/src/csnp/aa_pe.rs @@ -414,7 +414,7 @@ mod tests { #[test] fn test_propagation_request() { let mut aa_pe = AssetAwarePropagationEngine::new(); - aa_pe.start().unwrap(); + aa_pe.start().expect("mainnet: handle error"); let request = PropagationRequest { tx_hash: Hash::sha3_384(b"test_tx"), @@ -426,7 +426,7 @@ mod tests { let result = aa_pe.propagate(request); assert!(result.is_ok()); - let record = result.unwrap(); + let record = result.expect("mainnet: handle error"); assert_eq!(record.action, PropagationAction::ImmediateBroadcast); } @@ -435,17 +435,17 @@ mod tests { let mut aa_pe = AssetAwarePropagationEngine::new(); let node_did = "did:nac:main:fullnode:0x1234".to_string(); - aa_pe.subscribe(node_did.clone(), "940100".to_string()).unwrap(); - aa_pe.subscribe(node_did.clone(), "940200".to_string()).unwrap(); + aa_pe.subscribe(node_did.clone(), "940100".to_string()).expect("mainnet: handle error"); + aa_pe.subscribe(node_did.clone(), "940200".to_string()).expect("mainnet: handle error"); - let subs = aa_pe.get_subscriptions(&node_did).unwrap(); + let subs = aa_pe.get_subscriptions(&node_did).expect("mainnet: handle error"); assert_eq!(subs.len(), 2); } #[test] fn test_propagation_stats() { let mut aa_pe = AssetAwarePropagationEngine::new(); - aa_pe.start().unwrap(); + aa_pe.start().expect("mainnet: handle error"); // 发送几个传播请求 for i in 0..5 { @@ -455,7 +455,7 @@ mod tests { gnacs_code: Some("GG01_CC02".to_string()), priority: 100, }; - aa_pe.propagate(request).unwrap(); + aa_pe.propagate(request).expect("mainnet: handle error"); } let stats = aa_pe.get_propagation_stats(); @@ -904,7 +904,7 @@ mod enhanced_tests { // 查找路径 let path = topology.find_optimal_path("node1", "node2"); assert!(path.is_ok()); - assert_eq!(path.unwrap(), vec!["node1", "node2"]); + assert_eq!(path.expect("mainnet: handle error"), vec!["node1", "node2"]); } #[test] @@ -940,7 +940,7 @@ mod enhanced_tests { bandwidth_mbps: 100, last_heartbeat: Timestamp::now(), }; - topology.add_node(node).unwrap(); + topology.add_node(node).expect("mainnet: handle error"); } let stats = topology.get_network_stats(); diff --git a/nvm_v2/nvm-l0/src/csnp/ftan.rs b/nvm_v2/nvm-l0/src/csnp/ftan.rs index a1944a6..9d844b5 100644 --- a/nvm_v2/nvm-l0/src/csnp/ftan.rs +++ b/nvm_v2/nvm-l0/src/csnp/ftan.rs @@ -394,7 +394,7 @@ mod tests { "0x1234".to_string(), ); - let pool = Address::from_hex("0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef").unwrap(); + let pool = Address::from_hex("0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef").expect("mainnet: handle error"); let result = ftan.register_aggregator( did, @@ -410,9 +410,9 @@ mod tests { #[test] fn test_submit_transaction() { let mut ftan = FragmentedTransactionAggregationNetwork::new(); - ftan.start().unwrap(); + ftan.start().expect("mainnet: handle error"); - let pool = Address::from_hex("0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef").unwrap(); + let pool = Address::from_hex("0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef").expect("mainnet: handle error"); let tx_hash = Hash::sha3_384(b"test_tx"); let result = ftan.submit_transaction( diff --git a/nvm_v2/nvm-l0/src/csnp/gids.rs b/nvm_v2/nvm-l0/src/csnp/gids.rs index 08a0122..b688ee3 100644 --- a/nvm_v2/nvm-l0/src/csnp/gids.rs +++ b/nvm_v2/nvm-l0/src/csnp/gids.rs @@ -253,13 +253,13 @@ mod tests { let node_info = gids.get_node_info("did:nac:main:cbp:0x1234"); assert!(node_info.is_some()); - assert_eq!(node_info.unwrap().role, NodeRole::CBP); + assert_eq!(node_info.expect("mainnet: handle error").role, NodeRole::CBP); } #[test] fn test_gids_add_communication_address() { let mut gids = GlobalIdentityDirectoryService::new(); - gids.register_node("did:nac:main:cbp:0x1234", NodeRole::CBP).unwrap(); + gids.register_node("did:nac:main:cbp:0x1234", NodeRole::CBP).expect("mainnet: handle error"); let result = gids.add_communication_address( "did:nac:main:cbp:0x1234", @@ -270,7 +270,7 @@ mod tests { assert!(result.is_ok()); - let node_info = gids.get_node_info("did:nac:main:cbp:0x1234").unwrap(); + let node_info = gids.get_node_info("did:nac:main:cbp:0x1234").expect("mainnet: handle error"); assert_eq!(node_info.addresses.len(), 1); assert_eq!(node_info.addresses[0].address, "192.168.1.1:8080"); } @@ -278,15 +278,15 @@ mod tests { #[test] fn test_gids_reputation_update() { let mut gids = GlobalIdentityDirectoryService::new(); - gids.register_node("did:nac:main:cbp:0x1234", NodeRole::CBP).unwrap(); + gids.register_node("did:nac:main:cbp:0x1234", NodeRole::CBP).expect("mainnet: handle error"); // 更新链1的信誉 - gids.update_reputation("did:nac:main:cbp:0x1234", 1, 80, 95, 0).unwrap(); + gids.update_reputation("did:nac:main:cbp:0x1234", 1, 80, 95, 0).expect("mainnet: handle error"); // 更新链2的信誉 - gids.update_reputation("did:nac:main:cbp:0x1234", 2, 90, 98, 0).unwrap(); + gids.update_reputation("did:nac:main:cbp:0x1234", 2, 90, 98, 0).expect("mainnet: handle error"); - let reputation = gids.get_reputation("did:nac:main:cbp:0x1234").unwrap(); + let reputation = gids.get_reputation("did:nac:main:cbp:0x1234").expect("mainnet: handle error"); // 全域信誉应该是两个链的平均值 assert_eq!(reputation.global_score, 85); @@ -297,9 +297,9 @@ mod tests { fn test_gids_get_nodes_by_role() { let mut gids = GlobalIdentityDirectoryService::new(); - gids.register_node("did:nac:main:cbp:0x1", NodeRole::CBP).unwrap(); - gids.register_node("did:nac:main:cbp:0x2", NodeRole::CBP).unwrap(); - gids.register_node("did:nac:main:fullnode:0x3", NodeRole::FullNode).unwrap(); + gids.register_node("did:nac:main:cbp:0x1", NodeRole::CBP).expect("mainnet: handle error"); + gids.register_node("did:nac:main:cbp:0x2", NodeRole::CBP).expect("mainnet: handle error"); + gids.register_node("did:nac:main:fullnode:0x3", NodeRole::FullNode).expect("mainnet: handle error"); let cbp_nodes = gids.get_nodes_by_role(&NodeRole::CBP); assert_eq!(cbp_nodes.len(), 2); diff --git a/nvm_v2/nvm-l0/src/csnp/ma_rcm.rs b/nvm_v2/nvm-l0/src/csnp/ma_rcm.rs index ca0a80b..a6ad556 100644 --- a/nvm_v2/nvm-l0/src/csnp/ma_rcm.rs +++ b/nvm_v2/nvm-l0/src/csnp/ma_rcm.rs @@ -450,15 +450,15 @@ mod tests { "0x1234".to_string(), ); - let conn_id = ma_rcm.establish_connection(did, ConnectionType::CBPBackbone).unwrap(); + let conn_id = ma_rcm.establish_connection(did, ConnectionType::CBPBackbone).expect("mainnet: handle error"); // 更新为已建立状态 - ma_rcm.update_connection_status(&conn_id, ConnectionStatus::Established).unwrap(); + ma_rcm.update_connection_status(&conn_id, ConnectionStatus::Established).expect("mainnet: handle error"); // 更新指标 - ma_rcm.update_connection_metrics(&conn_id, 50, 1000000).unwrap(); + ma_rcm.update_connection_metrics(&conn_id, 50, 1000000).expect("mainnet: handle error"); - let connection = ma_rcm.get_connection(&conn_id).unwrap(); + let connection = ma_rcm.get_connection(&conn_id).expect("mainnet: handle error"); assert_eq!(connection.latency_ms, 50); assert_eq!(connection.bandwidth_bps, 1000000); } @@ -471,10 +471,10 @@ mod tests { ma_rcm.add_cross_chain_connection(2, "conn_2".to_string()); ma_rcm.add_cross_chain_connection(3, "conn_3".to_string()); - let chain2_conns = ma_rcm.get_cross_chain_connections(2).unwrap(); + let chain2_conns = ma_rcm.get_cross_chain_connections(2).expect("mainnet: handle error"); assert_eq!(chain2_conns.len(), 2); - let chain3_conns = ma_rcm.get_cross_chain_connections(3).unwrap(); + let chain3_conns = ma_rcm.get_cross_chain_connections(3).expect("mainnet: handle error"); assert_eq!(chain3_conns.len(), 1); } } diff --git a/nvm_v2/nvm-l0/src/csnp/types.rs b/nvm_v2/nvm-l0/src/csnp/types.rs index 44cd78a..0f04b3d 100644 --- a/nvm_v2/nvm-l0/src/csnp/types.rs +++ b/nvm_v2/nvm-l0/src/csnp/types.rs @@ -260,7 +260,7 @@ mod tests { #[test] fn test_extended_did_parsing() { let did_str = "did:nac:main:cbp:0x1234"; - let did = ExtendedDID::from_string(did_str).unwrap(); + let did = ExtendedDID::from_string(did_str).expect("mainnet: handle error"); assert_eq!(did.root_chain_id, "main"); assert_eq!(did.entity_type, "cbp"); diff --git a/nvm_v2/nvm-l0/src/csnp/uca.rs b/nvm_v2/nvm-l0/src/csnp/uca.rs index a20019c..68b05ca 100644 --- a/nvm_v2/nvm-l0/src/csnp/uca.rs +++ b/nvm_v2/nvm-l0/src/csnp/uca.rs @@ -448,7 +448,7 @@ mod tests { #[test] fn test_record_behavior() { let mut uca = UnifiedCrossChainAuditor::new(); - uca.start().unwrap(); + uca.start().expect("mainnet: handle error"); let did = ExtendedDID::new( "main".to_string(), @@ -466,14 +466,14 @@ mod tests { assert!(result.is_ok()); - let audits = uca.get_node_audits(&did.to_string()).unwrap(); + let audits = uca.get_node_audits(&did.to_string()).expect("mainnet: handle error"); assert_eq!(audits.len(), 1); } #[test] fn test_record_violation() { let mut uca = UnifiedCrossChainAuditor::new(); - uca.start().unwrap(); + uca.start().expect("mainnet: handle error"); let did = ExtendedDID::new( "main".to_string(), @@ -499,7 +499,7 @@ mod tests { #[test] fn test_reputation_calculation() { let mut uca = UnifiedCrossChainAuditor::new(); - uca.start().unwrap(); + uca.start().expect("mainnet: handle error"); let did = ExtendedDID::new( "main".to_string(), @@ -515,7 +515,7 @@ mod tests { BehaviorType::MessageForward, "Success".to_string(), false, - ).unwrap(); + ).expect("mainnet: handle error"); } // 记录违规行为 @@ -525,7 +525,7 @@ mod tests { BehaviorType::TransactionCensorship, "Violation".to_string(), true, - ).unwrap(); + ).expect("mainnet: handle error"); let reputation = uca.calculate_reputation(&did.to_string()); @@ -554,7 +554,7 @@ mod tests { BehaviorType::MessageForward, vec![1, 2, 3], witnesses, - ).unwrap(); + ).expect("mainnet: handle error"); assert!(uca.verify_behavior_proof(&proof)); } diff --git a/nvm_v2/nvm-l0/src/dag.rs b/nvm_v2/nvm-l0/src/dag.rs index e70f333..afc9ce3 100644 --- a/nvm_v2/nvm-l0/src/dag.rs +++ b/nvm_v2/nvm-l0/src/dag.rs @@ -230,7 +230,7 @@ impl DagGraph { // 验证时间戳 let current_time = SystemTime::now() .duration_since(UNIX_EPOCH) - .unwrap() + .expect("mainnet: handle error") .as_secs(); if node.timestamp > current_time + 60 { @@ -336,7 +336,7 @@ mod tests { data: data.to_vec(), timestamp: SystemTime::now() .duration_since(UNIX_EPOCH) - .unwrap() + .expect("mainnet: handle error") .as_secs(), weight, cumulative_weight: 0, @@ -368,7 +368,7 @@ mod tests { let mut dag = DagGraph::new(genesis_hash); let node1 = create_test_node(b"test1", vec![genesis_hash], 1); - dag.add_node(node1.clone()).unwrap(); + dag.add_node(node1.clone()).expect("mainnet: handle error"); let parents = dag.select_parents(); assert!(!parents.is_empty()); @@ -382,10 +382,10 @@ mod tests { let node1 = create_test_node(b"test1", vec![genesis_hash], 1); let node1_hash = node1.hash; - dag.add_node(node1).unwrap(); + dag.add_node(node1).expect("mainnet: handle error"); let node2 = create_test_node(b"test2", vec![node1_hash], 1); - dag.add_node(node2).unwrap(); + dag.add_node(node2).expect("mainnet: handle error"); let sorted = dag.topological_sort(); assert_eq!(sorted.len(), 2); @@ -397,7 +397,7 @@ mod tests { let mut dag = DagGraph::new(genesis_hash); let node1 = create_test_node(b"test1", vec![genesis_hash], 1); - dag.add_node(node1).unwrap(); + dag.add_node(node1).expect("mainnet: handle error"); assert!(dag.validate().is_ok()); } @@ -409,7 +409,7 @@ mod tests { let node1 = create_test_node(b"test1", vec![genesis_hash], 100); let node1_hash = node1.hash; - dag.add_node(node1).unwrap(); + dag.add_node(node1).expect("mainnet: handle error"); assert!(dag.check_finality(&node1_hash, 50)); assert!(!dag.check_finality(&node1_hash, 200)); @@ -437,11 +437,11 @@ mod tests { let node1 = create_test_node(b"test1", vec![genesis_hash], 1); let node1_hash = node1.hash; - dag.add_node(node1).unwrap(); + dag.add_node(node1).expect("mainnet: handle error"); let node2 = create_test_node(b"test2", vec![node1_hash], 1); let node2_hash = node2.hash; - dag.add_node(node2).unwrap(); + dag.add_node(node2).expect("mainnet: handle error"); let ancestors = dag.get_ancestors(&node2_hash); assert!(ancestors.contains(&node2_hash)); @@ -455,11 +455,11 @@ mod tests { let node1 = create_test_node(b"test1", vec![genesis_hash], 1); let node1_hash = node1.hash; - dag.add_node(node1).unwrap(); + dag.add_node(node1).expect("mainnet: handle error"); let node2 = create_test_node(b"test2", vec![genesis_hash], 1); let node2_hash = node2.hash; - dag.add_node(node2).unwrap(); + dag.add_node(node2).expect("mainnet: handle error"); // 两个节点都引用genesis,应该没有冲突 assert!(!dag.has_conflict(&node1_hash, &node2_hash)); @@ -472,13 +472,13 @@ mod tests { let node1 = create_test_node(b"test1", vec![genesis_hash], 10); let node1_hash = node1.hash; - dag.add_node(node1).unwrap(); + dag.add_node(node1).expect("mainnet: handle error"); let node2 = create_test_node(b"test2", vec![node1_hash], 5); let node2_hash = node2.hash; - dag.add_node(node2).unwrap(); + dag.add_node(node2).expect("mainnet: handle error"); - let node2_data = dag.get_node(&node2_hash).unwrap(); + let node2_data = dag.get_node(&node2_hash).expect("mainnet: handle error"); assert_eq!(node2_data.cumulative_weight, 15); // 10 + 5 } } diff --git a/nvm_v2/nvm-l0/src/fluid_block_model.rs b/nvm_v2/nvm-l0/src/fluid_block_model.rs index bf09a43..057adc9 100644 --- a/nvm_v2/nvm-l0/src/fluid_block_model.rs +++ b/nvm_v2/nvm-l0/src/fluid_block_model.rs @@ -91,7 +91,7 @@ impl FluidBlockModel { pub fn can_produce_block(&self) -> bool { let now = SystemTime::now() .duration_since(UNIX_EPOCH) - .unwrap() + .expect("mainnet: handle error") .as_millis() as u64; // 检查是否满足最小间隔 @@ -121,7 +121,7 @@ impl FluidBlockModel { pub fn record_block(&mut self, block_size: usize) { let now = SystemTime::now() .duration_since(UNIX_EPOCH) - .unwrap() + .expect("mainnet: handle error") .as_millis() as u64; // 记录区块统计 @@ -187,8 +187,8 @@ impl FluidBlockModel { }; let avg_interval = if self.recent_blocks.len() > 1 { - let first = self.recent_blocks.first().unwrap().timestamp; - let last = self.recent_blocks.last().unwrap().timestamp; + let first = self.recent_blocks.first().expect("mainnet: handle error").timestamp; + let last = self.recent_blocks.last().expect("mainnet: handle error").timestamp; let total_time = last - first; total_time / (self.recent_blocks.len() - 1) as u64 } else { diff --git a/nvm_v2/nvm-l0/src/merkle.rs b/nvm_v2/nvm-l0/src/merkle.rs index 0bd3016..0bca0d4 100644 --- a/nvm_v2/nvm-l0/src/merkle.rs +++ b/nvm_v2/nvm-l0/src/merkle.rs @@ -43,9 +43,9 @@ impl MerkleTree { fn build_tree(mut nodes: Vec) -> MerkleNode { if nodes.is_empty() { return MerkleNode::Empty; } - if nodes.len() == 1 { return nodes.pop().unwrap(); } + if nodes.len() == 1 { return nodes.pop().expect("mainnet: handle error"); } if nodes.len() % 2 == 1 { - let last = nodes.last().unwrap().clone(); + let last = nodes.last().expect("mainnet: handle error").clone(); nodes.push(last); } let mut parent_nodes = Vec::new(); @@ -125,7 +125,7 @@ mod tests { let data = vec![b"data1".to_vec(), b"data2".to_vec()]; let tree = MerkleTree::new(data.clone()); assert_eq!(tree.leaf_count(), 2); - let proof = tree.generate_proof(0).unwrap(); + let proof = tree.generate_proof(0).expect("mainnet: handle error"); let leaf_hash = Hash::sha3_384(&data[0]); assert!(proof.verify(leaf_hash, tree.root_hash())); } diff --git a/nvm_v2/nvm-l0/src/open_production_network.rs b/nvm_v2/nvm-l0/src/open_production_network.rs index 6cf4a89..d909023 100644 --- a/nvm_v2/nvm-l0/src/open_production_network.rs +++ b/nvm_v2/nvm-l0/src/open_production_network.rs @@ -78,7 +78,7 @@ impl BlockProducer { pub fn new(did: DID, deposit: u64, public_key: Vec) -> Self { let now = SystemTime::now() .duration_since(UNIX_EPOCH) - .unwrap() + .expect("mainnet: handle error") .as_secs(); Self { @@ -106,7 +106,7 @@ impl BlockProducer { self.blocks_produced += 1; self.last_block_time = SystemTime::now() .duration_since(UNIX_EPOCH) - .unwrap() + .expect("mainnet: handle error") .as_secs(); } } @@ -338,12 +338,12 @@ mod tests { let mut opn = OpenProductionNetwork::new(100, 60); let did = create_test_did("producer1"); - opn.register_producer(did.clone(), 100, vec![1, 2, 3]).unwrap(); + opn.register_producer(did.clone(), 100, vec![1, 2, 3]).expect("mainnet: handle error"); // 更新KYC状态 assert!(opn.update_kyc_status(&did, KYCStatus::Verified).is_ok()); - let producer = opn.get_producer(&did).unwrap(); + let producer = opn.get_producer(&did).expect("mainnet: handle error"); assert_eq!(producer.kyc_status, KYCStatus::Verified); } @@ -352,13 +352,13 @@ mod tests { let mut opn = OpenProductionNetwork::new(100, 60); let did = create_test_did("producer1"); - opn.register_producer(did.clone(), 100, vec![1, 2, 3]).unwrap(); - opn.update_kyc_status(&did, KYCStatus::Verified).unwrap(); + opn.register_producer(did.clone(), 100, vec![1, 2, 3]).expect("mainnet: handle error"); + opn.update_kyc_status(&did, KYCStatus::Verified).expect("mainnet: handle error"); // 提交测试分数 assert!(opn.submit_test_score(&did, 80).is_ok()); - let producer = opn.get_producer(&did).unwrap(); + let producer = opn.get_producer(&did).expect("mainnet: handle error"); assert_eq!(producer.constitution_test_score, 80); assert!(producer.is_active); } @@ -370,9 +370,9 @@ mod tests { // 注册多个生产者 for i in 1..=3 { let did = create_test_did(&format!("producer{}", i)); - opn.register_producer(did.clone(), 100, vec![1, 2, 3]).unwrap(); - opn.update_kyc_status(&did, KYCStatus::Verified).unwrap(); - opn.submit_test_score(&did, 80).unwrap(); + opn.register_producer(did.clone(), 100, vec![1, 2, 3]).expect("mainnet: handle error"); + opn.update_kyc_status(&did, KYCStatus::Verified).expect("mainnet: handle error"); + opn.submit_test_score(&did, 80).expect("mainnet: handle error"); } // 应该有3个活跃生产者 @@ -384,14 +384,14 @@ mod tests { let mut opn = OpenProductionNetwork::new(100, 60); let did = create_test_did("producer1"); - opn.register_producer(did.clone(), 100, vec![1, 2, 3]).unwrap(); - opn.update_kyc_status(&did, KYCStatus::Verified).unwrap(); - opn.submit_test_score(&did, 80).unwrap(); + opn.register_producer(did.clone(), 100, vec![1, 2, 3]).expect("mainnet: handle error"); + opn.update_kyc_status(&did, KYCStatus::Verified).expect("mainnet: handle error"); + opn.submit_test_score(&did, 80).expect("mainnet: handle error"); // 记录区块生产 assert!(opn.record_block(&did).is_ok()); - let producer = opn.get_producer(&did).unwrap(); + let producer = opn.get_producer(&did).expect("mainnet: handle error"); assert_eq!(producer.blocks_produced, 1); } @@ -400,10 +400,10 @@ mod tests { let mut opn = OpenProductionNetwork::new(100, 60); let did = create_test_did("producer1"); - opn.register_producer(did.clone(), 100, vec![1, 2, 3]).unwrap(); + opn.register_producer(did.clone(), 100, vec![1, 2, 3]).expect("mainnet: handle error"); // 注销生产者 - let deposit = opn.unregister_producer(&did).unwrap(); + let deposit = opn.unregister_producer(&did).expect("mainnet: handle error"); assert_eq!(deposit, 100); // 生产者应该不存在了 @@ -416,12 +416,12 @@ mod tests { for i in 1..=5 { let did = create_test_did(&format!("producer{}", i)); - opn.register_producer(did.clone(), 100, vec![1, 2, 3]).unwrap(); + opn.register_producer(did.clone(), 100, vec![1, 2, 3]).expect("mainnet: handle error"); if i <= 3 { - opn.update_kyc_status(&did, KYCStatus::Verified).unwrap(); - opn.submit_test_score(&did, 80).unwrap(); - opn.record_block(&did).unwrap(); + opn.update_kyc_status(&did, KYCStatus::Verified).expect("mainnet: handle error"); + opn.submit_test_score(&did, 80).expect("mainnet: handle error"); + opn.record_block(&did).expect("mainnet: handle error"); } } diff --git a/nvm_v2/nvm-l0/src/state_tree.rs b/nvm_v2/nvm-l0/src/state_tree.rs index 973606d..9891219 100644 --- a/nvm_v2/nvm-l0/src/state_tree.rs +++ b/nvm_v2/nvm-l0/src/state_tree.rs @@ -339,7 +339,7 @@ impl AssetState { ) -> Self { let now = std::time::SystemTime::now() .duration_since(std::time::UNIX_EPOCH) - .unwrap() + .expect("mainnet: handle error") .as_secs(); Self { @@ -409,7 +409,7 @@ mod asset_tests { let retrieved = tree.get_asset(&asset_addr); assert!(retrieved.is_some()); - assert_eq!(retrieved.unwrap().gnacs_code, asset.gnacs_code); + assert_eq!(retrieved.expect("mainnet: handle error").gnacs_code, asset.gnacs_code); } #[test] diff --git a/nvm_v2/nvm-l0/src/transaction.rs b/nvm_v2/nvm-l0/src/transaction.rs index 1eaf81b..50b4c9a 100644 --- a/nvm_v2/nvm-l0/src/transaction.rs +++ b/nvm_v2/nvm-l0/src/transaction.rs @@ -235,7 +235,7 @@ mod tests { tx.sign(Signature::new(vec![1, 2, 3])); let hash = tx.hash; - pool.add_transaction(tx).unwrap(); + pool.add_transaction(tx).expect("mainnet: handle error"); assert!(pool.confirm_transaction(&hash).is_ok()); assert_eq!(pool.pending_count(), 0); assert_eq!(pool.confirmed_count(), 1); diff --git a/nvm_v2/nvm-l0/src/upgrade/mod.rs b/nvm_v2/nvm-l0/src/upgrade/mod.rs index ee858ef..47944ed 100644 --- a/nvm_v2/nvm-l0/src/upgrade/mod.rs +++ b/nvm_v2/nvm-l0/src/upgrade/mod.rs @@ -409,13 +409,13 @@ mod tests { let mut proposal = create_test_proposal(1, 2); proposal.status = UpgradeStatus::Voting; - manager.submit_proposal(proposal).unwrap(); + manager.submit_proposal(proposal).expect("mainnet: handle error"); assert!(manager .vote_on_proposal(UpgradeProposalId(1), Address::default(), true, 100) .is_ok()); - let proposal = manager.get_proposal(UpgradeProposalId(1)).unwrap(); + let proposal = manager.get_proposal(UpgradeProposalId(1)).expect("mainnet: handle error"); assert_eq!(proposal.votes_for, 100); } @@ -425,19 +425,19 @@ mod tests { let mut proposal = create_test_proposal(1, 2); proposal.status = UpgradeStatus::Voting; - manager.submit_proposal(proposal).unwrap(); + manager.submit_proposal(proposal).expect("mainnet: handle error"); // 投票67%赞成 manager .vote_on_proposal(UpgradeProposalId(1), Address::default(), true, 67) - .unwrap(); + .expect("mainnet: handle error"); manager .vote_on_proposal(UpgradeProposalId(1), Address::default(), false, 33) - .unwrap(); + .expect("mainnet: handle error"); assert!(manager.approve_proposal(UpgradeProposalId(1)).is_ok()); - let proposal = manager.get_proposal(UpgradeProposalId(1)).unwrap(); + let proposal = manager.get_proposal(UpgradeProposalId(1)).expect("mainnet: handle error"); assert_eq!(proposal.status, UpgradeStatus::Approved); } @@ -447,19 +447,19 @@ mod tests { let mut proposal = create_test_proposal(1, 2); proposal.status = UpgradeStatus::Voting; - manager.submit_proposal(proposal).unwrap(); + manager.submit_proposal(proposal).expect("mainnet: handle error"); // 投票50%赞成 (低于67%) manager .vote_on_proposal(UpgradeProposalId(1), Address::default(), true, 50) - .unwrap(); + .expect("mainnet: handle error"); manager .vote_on_proposal(UpgradeProposalId(1), Address::default(), false, 50) - .unwrap(); + .expect("mainnet: handle error"); assert!(manager.approve_proposal(UpgradeProposalId(1)).is_err()); - let proposal = manager.get_proposal(UpgradeProposalId(1)).unwrap(); + let proposal = manager.get_proposal(UpgradeProposalId(1)).expect("mainnet: handle error"); assert_eq!(proposal.status, UpgradeStatus::Rejected); } @@ -469,12 +469,12 @@ mod tests { let mut proposal = create_test_proposal(1, 2); proposal.status = UpgradeStatus::Approved; - manager.submit_proposal(proposal).unwrap(); + manager.submit_proposal(proposal).expect("mainnet: handle error"); assert!(manager.execute_upgrade(UpgradeProposalId(1)).is_ok()); assert_eq!(manager.current_version(), 2); - let proposal = manager.get_proposal(UpgradeProposalId(1)).unwrap(); + let proposal = manager.get_proposal(UpgradeProposalId(1)).expect("mainnet: handle error"); assert_eq!(proposal.status, UpgradeStatus::Completed); } diff --git a/nvm_v2/nvm-l0/src/vm_integration.rs b/nvm_v2/nvm-l0/src/vm_integration.rs index 57ee812..0924c32 100644 --- a/nvm_v2/nvm-l0/src/vm_integration.rs +++ b/nvm_v2/nvm-l0/src/vm_integration.rs @@ -179,7 +179,7 @@ impl NVM { use std::time::{SystemTime, UNIX_EPOCH}; SystemTime::now() .duration_since(UNIX_EPOCH) - .unwrap() + .expect("mainnet: handle error") .as_secs() } @@ -283,10 +283,10 @@ mod tests { // 提交交易 let tx = create_test_transaction(from, to, 1000, 0); - vm.submit_transaction(tx).unwrap(); + vm.submit_transaction(tx).expect("mainnet: handle error"); // 生成区块 - let block = vm.produce_block(miner).unwrap(); + let block = vm.produce_block(miner).expect("mainnet: handle error"); assert_eq!(block.header.number, 1); assert_eq!(block.transactions.len(), 1); @@ -320,20 +320,20 @@ mod tests { // 提交第一个交易 let tx1 = create_test_transaction(from, to1, 1000, 0); - vm.submit_transaction(tx1).unwrap(); + vm.submit_transaction(tx1).expect("mainnet: handle error"); // 生成第一个区块 - let block1 = vm.produce_block(miner).unwrap(); + let block1 = vm.produce_block(miner).expect("mainnet: handle error"); assert_eq!(block1.transactions.len(), 1); assert_eq!(vm.get_balance(&to1), 1000); assert_eq!(vm.get_nonce(&from), 1); // 现在nonce是1,可以提交第二个交易 let tx2 = create_test_transaction(from, to2, 2000, 1); - vm.submit_transaction(tx2).unwrap(); + vm.submit_transaction(tx2).expect("mainnet: handle error"); // 生成第二个区块 - let block2 = vm.produce_block(miner).unwrap(); + let block2 = vm.produce_block(miner).expect("mainnet: handle error"); assert_eq!(block2.transactions.len(), 1); assert_eq!(vm.get_balance(&to2), 2000); assert_eq!(vm.get_nonce(&from), 2); diff --git a/nvm_v2/nvm-l1/src/asset_management/asset_certificate.rs b/nvm_v2/nvm-l1/src/asset_management/asset_certificate.rs index 54a1c81..ecb94fc 100644 --- a/nvm_v2/nvm-l1/src/asset_management/asset_certificate.rs +++ b/nvm_v2/nvm-l1/src/asset_management/asset_certificate.rs @@ -350,7 +350,7 @@ mod tests { #[test] fn test_token_transfer() { let mut asset = AssetCertificate::new(vec![1u8; 32], vec![2u8; 20], 1000000, 1234567890); - asset.stake_xtzh(500000, 1234567900).unwrap(); + asset.stake_xtzh(500000, 1234567900).expect("mainnet: handle error"); let new_owner = vec![3u8; 20]; let result = asset.transfer(new_owner.clone(), 500000, 1234567910); @@ -363,7 +363,7 @@ mod tests { #[test] fn test_token_transfer_insufficient_xtzh() { let mut asset = AssetCertificate::new(vec![1u8; 32], vec![2u8; 20], 1000000, 1234567890); - asset.stake_xtzh(500000, 1234567900).unwrap(); + asset.stake_xtzh(500000, 1234567900).expect("mainnet: handle error"); let new_owner = vec![3u8; 20]; let result = asset.transfer(new_owner, 300000, 1234567910); @@ -378,10 +378,10 @@ mod tests { let token1 = AssetCertificate::new(vec![1u8; 32], vec![2u8; 20], 1000000, 1234567890); let token2 = AssetCertificate::new(vec![3u8; 32], vec![2u8; 20], 2000000, 1234567891); - registry.register(token1.clone()).unwrap(); - registry.register(token2.clone()).unwrap(); + registry.register(token1.clone()).expect("mainnet: handle error"); + registry.register(token2.clone()).expect("mainnet: handle error"); - assert_eq!(registry.get(&token1.token_id).unwrap().asset_value, 1000000); + assert_eq!(registry.get(&token1.token_id).expect("mainnet: handle error").asset_value, 1000000); assert_eq!(registry.get_by_owner(&vec![2u8; 20]).len(), 2); let stats = registry.stats(); diff --git a/nvm_v2/nvm-l1/src/asset_management/xtzh_staking.rs b/nvm_v2/nvm-l1/src/asset_management/xtzh_staking.rs index 57324aa..3e0af1d 100644 --- a/nvm_v2/nvm-l1/src/asset_management/xtzh_staking.rs +++ b/nvm_v2/nvm-l1/src/asset_management/xtzh_staking.rs @@ -358,7 +358,7 @@ mod tests { 800000, 1000000, 1234567890, - ).unwrap(); + ).expect("mainnet: handle error"); // 质押2 let stake_id2 = manager.stake( @@ -367,14 +367,14 @@ mod tests { 1600000, 2000000, 1234567891, - ).unwrap(); + ).expect("mainnet: handle error"); - assert!(manager.can_issue_tokens(&stake_id1).unwrap()); - assert!(manager.can_issue_tokens(&stake_id2).unwrap()); + assert!(manager.can_issue_tokens(&stake_id1).expect("mainnet: handle error")); + assert!(manager.can_issue_tokens(&stake_id2).expect("mainnet: handle error")); // 标记为已发行 - manager.mark_issued(&stake_id1).unwrap(); - assert!(!manager.can_issue_tokens(&stake_id1).unwrap()); + manager.mark_issued(&stake_id1).expect("mainnet: handle error"); + assert!(!manager.can_issue_tokens(&stake_id1).expect("mainnet: handle error")); // 统计 let stats = manager.stats(); @@ -395,7 +395,7 @@ mod tests { 900000, // 90% 1000000, 1234567890, - ).unwrap(); + ).expect("mainnet: handle error"); // 尝试赎回150000,剩余750000(75%),应该失败 let result = manager.unstake(&stake_id, 150000); diff --git a/nvm_v2/nvm-l1/src/assetization/equity_asset.rs b/nvm_v2/nvm-l1/src/assetization/equity_asset.rs index 0faddaa..f2edfb2 100644 --- a/nvm_v2/nvm-l1/src/assetization/equity_asset.rs +++ b/nvm_v2/nvm-l1/src/assetization/equity_asset.rs @@ -367,7 +367,7 @@ mod tests { let from = vec![3u8; 20]; let to = vec![4u8; 20]; - asset.transfer(&from, to.clone(), 100000).unwrap(); + asset.transfer(&from, to.clone(), 100000).expect("mainnet: handle error"); assert_eq!(asset.balance_of(&from), 900000); assert_eq!(asset.balance_of(&to), 100000); @@ -391,11 +391,11 @@ mod tests { let recipient = vec![5u8; 20]; // 授权 - asset.approve(owner.clone(), spender.clone(), 200000).unwrap(); + asset.approve(owner.clone(), spender.clone(), 200000).expect("mainnet: handle error"); assert_eq!(asset.allowance(&owner, &spender), 200000); // 从授权额度转账 - asset.transfer_from(&spender, &owner, recipient.clone(), 100000).unwrap(); + asset.transfer_from(&spender, &owner, recipient.clone(), 100000).expect("mainnet: handle error"); assert_eq!(asset.balance_of(&owner), 900000); assert_eq!(asset.balance_of(&recipient), 100000); @@ -428,11 +428,11 @@ mod tests { 1234567891, ); - registry.register(token1.clone()).unwrap(); - registry.register(token2.clone()).unwrap(); + registry.register(token1.clone()).expect("mainnet: handle error"); + registry.register(token2.clone()).expect("mainnet: handle error"); - assert_eq!(registry.get(&token1.contract_address).unwrap().symbol, "TK1"); - assert_eq!(registry.get_by_asset(&vec![1u8; 32]).unwrap().symbol, "TK1"); + assert_eq!(registry.get(&token1.contract_address).expect("mainnet: handle error").symbol, "TK1"); + assert_eq!(registry.get_by_asset(&vec![1u8; 32]).expect("mainnet: handle error").symbol, "TK1"); let stats = registry.stats(); assert_eq!(stats.total_tokens, 2); diff --git a/nvm_v2/nvm-l1/src/bin/nac-node.rs b/nvm_v2/nvm-l1/src/bin/nac-node.rs index b718fbe..c501e1b 100644 --- a/nvm_v2/nvm-l1/src/bin/nac-node.rs +++ b/nvm_v2/nvm-l1/src/bin/nac-node.rs @@ -29,7 +29,7 @@ fn main() { loop { thread::sleep(Duration::from_millis(500)); - let mut node = node_clone.lock().unwrap(); + let mut node = node_clone.lock().expect("mainnet: handle error"); node.tick(); } }); @@ -47,7 +47,7 @@ fn main() { loop { thread::sleep(Duration::from_secs(10)); - let node = node.lock().unwrap(); + let node = node.lock().expect("mainnet: handle error"); node.print_status(); } } @@ -145,7 +145,7 @@ impl NACNode { let current_time = SystemTime::now() .duration_since(UNIX_EPOCH) - .unwrap() + .expect("mainnet: handle error") .as_millis() as u64; Self { @@ -180,7 +180,7 @@ impl NACNode { /// 生产新区块 fn produce_block(&mut self) { - let last_block = self.blockchain.last().unwrap(); + let last_block = self.blockchain.last().expect("mainnet: handle error"); // 计算新坐标 let new_coordinates = last_block.coordinates.next_round(self.config.blocks_per_epoch); @@ -207,7 +207,7 @@ impl NACNode { // 更新出块时间 self.last_block_time = SystemTime::now() .duration_since(UNIX_EPOCH) - .unwrap() + .expect("mainnet: handle error") .as_millis() as u64; // 记录区块生产 @@ -245,7 +245,7 @@ impl NACNode { /// 打印节点状态 fn print_status(&self) { - let last_block = self.blockchain.last().unwrap(); + let last_block = self.blockchain.last().expect("mainnet: handle error"); println!("📊 节点状态:"); println!(" 区块链高度: {} 区块", self.blockchain.len()); @@ -260,7 +260,7 @@ impl NACNode { /// 获取区块链信息 #[allow(dead_code)] fn get_blockchain_info(&self) -> BlockchainInfo { - let last_block = self.blockchain.last().unwrap(); + let last_block = self.blockchain.last().expect("mainnet: handle error"); BlockchainInfo { chain_id: self.chain_id, diff --git a/nvm_v2/nvm-l1/src/cbpp/constitutional_receipt.rs b/nvm_v2/nvm-l1/src/cbpp/constitutional_receipt.rs index 2131605..cbfab49 100644 --- a/nvm_v2/nvm-l1/src/cbpp/constitutional_receipt.rs +++ b/nvm_v2/nvm-l1/src/cbpp/constitutional_receipt.rs @@ -88,7 +88,7 @@ impl ConstitutionalReceipt { ) -> Self { let timestamp = std::time::SystemTime::now() .duration_since(std::time::UNIX_EPOCH) - .unwrap() + .expect("mainnet: handle error") .as_secs(); let receipt_id = Self::generate_receipt_id( diff --git a/nvm_v2/nvm-l1/src/cbpp/execution_engine.rs b/nvm_v2/nvm-l1/src/cbpp/execution_engine.rs index 3094f4a..41bb073 100644 --- a/nvm_v2/nvm-l1/src/cbpp/execution_engine.rs +++ b/nvm_v2/nvm-l1/src/cbpp/execution_engine.rs @@ -338,7 +338,7 @@ mod tests { metadata: HashMap::new(), }; - let receipt = cee.execute_and_issue_receipt(context).unwrap(); + let receipt = cee.execute_and_issue_receipt(context).expect("mainnet: handle error"); assert!(!receipt.signature.is_empty()); assert!(receipt.validation_results.len() > 0); @@ -371,12 +371,12 @@ mod tests { metadata: HashMap::new(), }; - let receipt = cee.execute_and_issue_receipt(context).unwrap(); + let receipt = cee.execute_and_issue_receipt(context).expect("mainnet: handle error"); // 应该有KYC验证结果,但未通过 let kyc_result = receipt.validation_results.iter() .find(|r| r.validation_type == ValidationType::KYC) - .unwrap(); + .expect("mainnet: handle error"); assert!(!kyc_result.passed); } diff --git a/nvm_v2/nvm-l1/src/cbpp/fluid_block.rs b/nvm_v2/nvm-l1/src/cbpp/fluid_block.rs index 013685e..5ad24d7 100644 --- a/nvm_v2/nvm-l1/src/cbpp/fluid_block.rs +++ b/nvm_v2/nvm-l1/src/cbpp/fluid_block.rs @@ -131,7 +131,7 @@ impl FluidBlock { ) -> Self { let timestamp = std::time::SystemTime::now() .duration_since(std::time::UNIX_EPOCH) - .unwrap() + .expect("mainnet: handle error") .as_secs(); // 计算区块权重 @@ -239,7 +239,7 @@ impl FluidBlock { ) -> bool { let current_time = std::time::SystemTime::now() .duration_since(std::time::UNIX_EPOCH) - .unwrap() + .expect("mainnet: handle error") .as_millis() as u64; let elapsed = current_time - last_block_time; @@ -387,7 +387,7 @@ mod tests { // 无交易但超过最大间隔 let old_time = std::time::SystemTime::now() .duration_since(std::time::UNIX_EPOCH) - .unwrap() + .expect("mainnet: handle error") .as_millis() as u64 - 3000; assert!(FluidBlock::should_produce_block(old_time, 0, &config)); } diff --git a/nvm_v2/nvm-l1/src/cbpp/gossip_protocol.rs b/nvm_v2/nvm-l1/src/cbpp/gossip_protocol.rs index 12445b4..0c951c4 100644 --- a/nvm_v2/nvm-l1/src/cbpp/gossip_protocol.rs +++ b/nvm_v2/nvm-l1/src/cbpp/gossip_protocol.rs @@ -235,14 +235,14 @@ mod tests { let current_time = std::time::SystemTime::now() .duration_since(std::time::UNIX_EPOCH) - .unwrap() + .expect("mainnet: handle error") .as_secs(); let should_forward = node.handle_transaction( tx_with_receipt.clone(), current_time, &vec![3u8; 32], - ).unwrap(); + ).expect("mainnet: handle error"); assert!(should_forward); assert_eq!(node.pending_tx_count(), 1); @@ -252,7 +252,7 @@ mod tests { tx_with_receipt, current_time, &vec![3u8; 32], - ).unwrap(); + ).expect("mainnet: handle error"); assert!(!should_forward_again); } diff --git a/nvm_v2/nvm-l1/src/cbpp/open_production_network.rs b/nvm_v2/nvm-l1/src/cbpp/open_production_network.rs index 0acf1b3..90f4da5 100644 --- a/nvm_v2/nvm-l1/src/cbpp/open_production_network.rs +++ b/nvm_v2/nvm-l1/src/cbpp/open_production_network.rs @@ -154,7 +154,7 @@ impl OpenProductionNetwork { fn current_time() -> u64 { std::time::SystemTime::now() .duration_since(std::time::UNIX_EPOCH) - .unwrap() + .expect("mainnet: handle error") .as_secs() } @@ -198,7 +198,7 @@ mod tests { assert!(opn.is_valid_producer(&pubkey)); // 获取生产者信息 - let producer = opn.get_producer(&pubkey).unwrap(); + let producer = opn.get_producer(&pubkey).expect("mainnet: handle error"); assert_eq!(producer.blocks_produced, 0); assert_eq!(producer.reputation, 100); } @@ -233,13 +233,13 @@ mod tests { "did:nac:12345".to_string(), 100_000_000_000_000_000_000, true, - ).unwrap(); + ).expect("mainnet: handle error"); // 记录区块生产 - opn.record_block_production(&pubkey).unwrap(); - opn.record_block_production(&pubkey).unwrap(); + opn.record_block_production(&pubkey).expect("mainnet: handle error"); + opn.record_block_production(&pubkey).expect("mainnet: handle error"); - let producer = opn.get_producer(&pubkey).unwrap(); + let producer = opn.get_producer(&pubkey).expect("mainnet: handle error"); assert_eq!(producer.blocks_produced, 2); assert_eq!(producer.reputation, 102); // 100 + 2 } @@ -257,12 +257,12 @@ mod tests { "did:nac:12345".to_string(), 100_000_000_000_000_000_000, true, - ).unwrap(); + ).expect("mainnet: handle error"); // 严重惩罚 - opn.punish_producer(&pubkey, 60).unwrap(); + opn.punish_producer(&pubkey, 60).expect("mainnet: handle error"); - let producer = opn.get_producer(&pubkey).unwrap(); + let producer = opn.get_producer(&pubkey).expect("mainnet: handle error"); assert_eq!(producer.reputation, 40); assert!(!producer.is_active); // 应该被停用 } @@ -282,10 +282,10 @@ mod tests { "did:nac:12345".to_string(), stake, true, - ).unwrap(); + ).expect("mainnet: handle error"); // 注销并返还保证金 - let returned_stake = opn.unregister_producer(&pubkey).unwrap(); + let returned_stake = opn.unregister_producer(&pubkey).expect("mainnet: handle error"); assert_eq!(returned_stake, stake); // 应该不再是有效生产者 diff --git a/nvm_v2/nvm-l1/src/constitution/jurisdiction.rs b/nvm_v2/nvm-l1/src/constitution/jurisdiction.rs index 53b3cb1..ce2e26d 100644 --- a/nvm_v2/nvm-l1/src/constitution/jurisdiction.rs +++ b/nvm_v2/nvm-l1/src/constitution/jurisdiction.rs @@ -585,7 +585,7 @@ mod tests { // 验证自动激活 let active = manager.get_active_template(Hash::default()); assert!(active.is_some()); - assert_eq!(active.unwrap().version, 1); + assert_eq!(active.expect("mainnet: handle error").version, 1); } #[test] @@ -624,14 +624,14 @@ mod tests { let mut template_v2 = template_v1.clone(); template_v2.version = 2; - manager.register_template(template_v1).unwrap(); - manager.register_template(template_v2).unwrap(); + manager.register_template(template_v1).expect("mainnet: handle error"); + manager.register_template(template_v2).expect("mainnet: handle error"); // 切换到版本2 assert!(manager.activate_version(Hash::default(), 2).is_ok()); let active = manager.get_active_template(Hash::default()); - assert_eq!(active.unwrap().version, 2); + assert_eq!(active.expect("mainnet: handle error").version, 2); } #[test] diff --git a/nvm_v2/nvm-l1/src/constitution/upgrade.rs b/nvm_v2/nvm-l1/src/constitution/upgrade.rs index 23f302f..b8e39b0 100644 --- a/nvm_v2/nvm-l1/src/constitution/upgrade.rs +++ b/nvm_v2/nvm-l1/src/constitution/upgrade.rs @@ -310,11 +310,11 @@ impl ConstitutionalVotingSystem { // 记录投票 self.votes .get_mut(&proposal_id) - .unwrap() + .expect("mainnet: handle error") .insert(voter, vote.clone()); // 更新提案投票统计 - let proposal = self.proposals.get_mut(&proposal_id).unwrap(); + let proposal = self.proposals.get_mut(&proposal_id).expect("mainnet: handle error"); match choice { VoteChoice::For => proposal.votes_for += weight, VoteChoice::Against => proposal.votes_against += weight, @@ -613,16 +613,16 @@ mod tests { let mut voting_system = ConstitutionalVotingSystem::new(Box::new(EqualWeightCalculator)); let proposal = create_test_proposal(1); - voting_system.submit_proposal(proposal).unwrap(); + voting_system.submit_proposal(proposal).expect("mainnet: handle error"); // 开始公示 assert!(voting_system.start_public_review(ConstitutionalUpgradeProposalId(1)).is_ok()); - let proposal = voting_system.get_proposal(ConstitutionalUpgradeProposalId(1)).unwrap(); + let proposal = voting_system.get_proposal(ConstitutionalUpgradeProposalId(1)).expect("mainnet: handle error"); assert_eq!(proposal.status, ConstitutionalUpgradeStatus::PublicReview); // 开始投票 assert!(voting_system.start_voting(ConstitutionalUpgradeProposalId(1)).is_ok()); - let proposal = voting_system.get_proposal(ConstitutionalUpgradeProposalId(1)).unwrap(); + let proposal = voting_system.get_proposal(ConstitutionalUpgradeProposalId(1)).expect("mainnet: handle error"); assert_eq!(proposal.status, ConstitutionalUpgradeStatus::Voting); } @@ -632,7 +632,7 @@ mod tests { let mut proposal = create_test_proposal(1); proposal.status = ConstitutionalUpgradeStatus::Voting; - voting_system.submit_proposal(proposal).unwrap(); + voting_system.submit_proposal(proposal).expect("mainnet: handle error"); assert!(voting_system .cast_vote( @@ -643,7 +643,7 @@ mod tests { ) .is_ok()); - let proposal = voting_system.get_proposal(ConstitutionalUpgradeProposalId(1)).unwrap(); + let proposal = voting_system.get_proposal(ConstitutionalUpgradeProposalId(1)).expect("mainnet: handle error"); assert_eq!(proposal.votes_for, 1); } @@ -653,7 +653,7 @@ mod tests { let mut proposal = create_test_proposal(1); proposal.status = ConstitutionalUpgradeStatus::Voting; - voting_system.submit_proposal(proposal).unwrap(); + voting_system.submit_proposal(proposal).expect("mainnet: handle error"); // 投票75%赞成 for i in 0..75 { @@ -664,7 +664,7 @@ mod tests { VoteChoice::For, None, ) - .unwrap(); + .expect("mainnet: handle error"); } for i in 75..100 { voting_system @@ -674,13 +674,13 @@ mod tests { VoteChoice::Against, None, ) - .unwrap(); + .expect("mainnet: handle error"); } - let approved = voting_system.finalize_voting(ConstitutionalUpgradeProposalId(1)).unwrap(); + let approved = voting_system.finalize_voting(ConstitutionalUpgradeProposalId(1)).expect("mainnet: handle error"); assert!(approved); - let proposal = voting_system.get_proposal(ConstitutionalUpgradeProposalId(1)).unwrap(); + let proposal = voting_system.get_proposal(ConstitutionalUpgradeProposalId(1)).expect("mainnet: handle error"); assert_eq!(proposal.status, ConstitutionalUpgradeStatus::Approved); } @@ -690,7 +690,7 @@ mod tests { let mut proposal = create_test_proposal(1); proposal.status = ConstitutionalUpgradeStatus::Voting; - voting_system.submit_proposal(proposal).unwrap(); + voting_system.submit_proposal(proposal).expect("mainnet: handle error"); // 投票50%赞成 (低于75%) for i in 0..50 { @@ -701,7 +701,7 @@ mod tests { VoteChoice::For, None, ) - .unwrap(); + .expect("mainnet: handle error"); } for i in 50..100 { voting_system @@ -711,13 +711,13 @@ mod tests { VoteChoice::Against, None, ) - .unwrap(); + .expect("mainnet: handle error"); } - let approved = voting_system.finalize_voting(ConstitutionalUpgradeProposalId(1)).unwrap(); + let approved = voting_system.finalize_voting(ConstitutionalUpgradeProposalId(1)).expect("mainnet: handle error"); assert!(!approved); - let proposal = voting_system.get_proposal(ConstitutionalUpgradeProposalId(1)).unwrap(); + let proposal = voting_system.get_proposal(ConstitutionalUpgradeProposalId(1)).expect("mainnet: handle error"); assert_eq!(proposal.status, ConstitutionalUpgradeStatus::Rejected); } @@ -732,7 +732,7 @@ mod tests { let mut manager = L2ConstitutionalUpgradeManager::new(); let rule_bytecode = vec![1, 2, 3, 4, 5]; - let rule_id = manager.load_compliance_rule(rule_bytecode).unwrap(); + let rule_id = manager.load_compliance_rule(rule_bytecode).expect("mainnet: handle error"); assert_eq!(rule_id, 1); assert!(manager.get_loaded_rules().contains(&rule_id)); } @@ -742,7 +742,7 @@ mod tests { let mut manager = L2ConstitutionalUpgradeManager::new(); let rule_bytecode = vec![1, 2, 3, 4, 5]; - let rule_id = manager.load_compliance_rule(rule_bytecode).unwrap(); + let rule_id = manager.load_compliance_rule(rule_bytecode).expect("mainnet: handle error"); assert!(manager.unload_compliance_rule(rule_id).is_ok()); assert!(!manager.get_loaded_rules().contains(&rule_id)); } diff --git a/nvm_v2/nvm-l1/src/defi/collateral_lending.rs b/nvm_v2/nvm-l1/src/defi/collateral_lending.rs index 77c6189..5780c4b 100644 --- a/nvm_v2/nvm-l1/src/defi/collateral_lending.rs +++ b/nvm_v2/nvm-l1/src/defi/collateral_lending.rs @@ -209,7 +209,7 @@ impl CollateralLendingSystem { let now = std::time::SystemTime::now() .duration_since(std::time::UNIX_EPOCH) - .unwrap() + .expect("mainnet: handle error") .as_secs(); let loan_id = format!("loan_{}_{}", borrower, now); @@ -268,7 +268,7 @@ impl CollateralLendingSystem { let now = std::time::SystemTime::now() .duration_since(std::time::UNIX_EPOCH) - .unwrap() + .expect("mainnet: handle error") .as_secs(); let total_due = loan.calculate_total_due(now); @@ -292,9 +292,9 @@ impl CollateralLendingSystem { // 更新贷款记录 let now = std::time::SystemTime::now() .duration_since(std::time::UNIX_EPOCH) - .unwrap() + .expect("mainnet: handle error") .as_secs(); - let loan = self.loans.get_mut(loan_id).unwrap(); + let loan = self.loans.get_mut(loan_id).expect("mainnet: handle error"); let interest_due = loan.calculate_interest(now) - loan.repaid_interest; if amount >= interest_due { @@ -348,7 +348,7 @@ impl CollateralLendingSystem { let now = std::time::SystemTime::now() .duration_since(std::time::UNIX_EPOCH) - .unwrap() + .expect("mainnet: handle error") .as_secs(); let total_due = loan.calculate_total_due(now); @@ -377,7 +377,7 @@ impl CollateralLendingSystem { ); // 更新贷款状态 - let loan = self.loans.get_mut(loan_id).unwrap(); + let loan = self.loans.get_mut(loan_id).expect("mainnet: handle error"); loan.status = LoanStatus::Liquidated; self.stats.active_loans -= 1; @@ -425,7 +425,7 @@ mod tests { 10, 7_000_000_000_000_000_000_000, 365, - ).unwrap(); + ).expect("mainnet: handle error"); assert!(system.get_loan(&loan_id).is_some()); assert_eq!(system.stats.total_loans, 1); @@ -445,12 +445,12 @@ mod tests { 10, 7_000_000_000_000_000_000_000, 365, - ).unwrap(); + ).expect("mainnet: handle error"); - let loan_amount = system.get_loan(&loan_id).unwrap().loan_amount; - system.repay_loan(&loan_id, loan_amount).unwrap(); + let loan_amount = system.get_loan(&loan_id).expect("mainnet: handle error").loan_amount; + system.repay_loan(&loan_id, loan_amount).expect("mainnet: handle error"); - let loan = system.get_loan(&loan_id).unwrap(); + let loan = system.get_loan(&loan_id).expect("mainnet: handle error"); assert_eq!(loan.status, LoanStatus::Repaid); } @@ -467,7 +467,7 @@ mod tests { 10, 7_000_000_000_000_000_000_000, 365, - ).unwrap(); + ).expect("mainnet: handle error"); // 抵押品价值下跌 system.set_asset_valuation("asset1".to_string(), 500_000_000_000_000_000_000); @@ -492,9 +492,9 @@ mod tests { 10, 7_000_000_000_000_000_000_000, 365, - ).unwrap(); + ).expect("mainnet: handle error"); - let loan = system.get_loan(&loan_id).unwrap(); + let loan = system.get_loan(&loan_id).expect("mainnet: handle error"); let health_factor = loan.calculate_health_factor(10_000_000_000_000_000_000_000); // 健康度应该是 10000/7000 * 10000 = 14285 diff --git a/nvm_v2/nvm-l1/src/defi/gnacs_encoding.rs b/nvm_v2/nvm-l1/src/defi/gnacs_encoding.rs index 6da9aad..f8f27d0 100644 --- a/nvm_v2/nvm-l1/src/defi/gnacs_encoding.rs +++ b/nvm_v2/nvm-l1/src/defi/gnacs_encoding.rs @@ -252,7 +252,7 @@ impl AssetClassificationSystem { let now = std::time::SystemTime::now() .duration_since(std::time::UNIX_EPOCH) - .unwrap() + .expect("mainnet: handle error") .as_secs(); let asset = AssetInstance { @@ -358,7 +358,7 @@ mod tests { "01".to_string(), "NNNN".to_string(), "03".to_string(), - ).unwrap(); + ).expect("mainnet: handle error"); assert_eq!(code.code, "980101120101040103030301NNNN03"); assert_eq!(code.get_asset_category(), "不动产收益权(股权型)"); @@ -367,7 +367,7 @@ mod tests { #[test] fn test_asset_classification_code_parsing() { - let code = AssetClassificationCode::from_string("980101120101040103030301NNNN03".to_string()).unwrap(); + let code = AssetClassificationCode::from_string("980101120101040103030301NNNN03".to_string()).expect("mainnet: handle error"); assert_eq!(code.physical_attr, "980101"); assert_eq!(code.financial_risk, "12"); @@ -391,14 +391,14 @@ mod tests { "01".to_string(), "NNNN".to_string(), "03".to_string(), - ).unwrap(); + ).expect("mainnet: handle error"); system.register_asset( "asset_001".to_string(), gnacs, "上海写字楼收益权".to_string(), "3年租金收益权".to_string(), - ).unwrap(); + ).expect("mainnet: handle error"); assert_eq!(system.stats.total_assets, 1); assert!(system.get_asset("asset_001").is_some()); @@ -408,21 +408,21 @@ mod tests { fn test_query_by_gnacs() { let mut system = AssetClassificationSystem::new(); - let gnacs = AssetClassificationCode::from_string("980101120101040103030301NNNN03".to_string()).unwrap(); + let gnacs = AssetClassificationCode::from_string("980101120101040103030301NNNN03".to_string()).expect("mainnet: handle error"); system.register_asset( "asset_001".to_string(), gnacs.clone(), "资产1".to_string(), "描述1".to_string(), - ).unwrap(); + ).expect("mainnet: handle error"); system.register_asset( "asset_002".to_string(), gnacs.clone(), "资产2".to_string(), "描述2".to_string(), - ).unwrap(); + ).expect("mainnet: handle error"); let results = system.query_by_gnacs("980101120101040103030301NNNN03"); assert_eq!(results.len(), 2); @@ -432,11 +432,11 @@ mod tests { fn test_query_by_category() { let mut system = AssetClassificationSystem::new(); - let gnacs1 = AssetClassificationCode::from_string("980101120101040103030301NNNN03".to_string()).unwrap(); - let gnacs2 = AssetClassificationCode::from_string("980200120101040103030301NNNN03".to_string()).unwrap(); + let gnacs1 = AssetClassificationCode::from_string("980101120101040103030301NNNN03".to_string()).expect("mainnet: handle error"); + let gnacs2 = AssetClassificationCode::from_string("980200120101040103030301NNNN03".to_string()).expect("mainnet: handle error"); - system.register_asset("asset_001".to_string(), gnacs1, "资产1".to_string(), "描述1".to_string()).unwrap(); - system.register_asset("asset_002".to_string(), gnacs2, "资产2".to_string(), "描述2".to_string()).unwrap(); + system.register_asset("asset_001".to_string(), gnacs1, "资产1".to_string(), "描述1".to_string()).expect("mainnet: handle error"); + system.register_asset("asset_002".to_string(), gnacs2, "资产2".to_string(), "描述2".to_string()).expect("mainnet: handle error"); let results = system.query_by_category("不动产收益权(股权型)"); assert_eq!(results.len(), 1); diff --git a/nvm_v2/nvm-l1/src/defi/liquidity_pool.rs b/nvm_v2/nvm-l1/src/defi/liquidity_pool.rs index ff58dfe..485d4b7 100644 --- a/nvm_v2/nvm-l1/src/defi/liquidity_pool.rs +++ b/nvm_v2/nvm-l1/src/defi/liquidity_pool.rs @@ -29,7 +29,7 @@ impl LiquidityPool { pub fn new(pool_id: String, asset_token_id: String, asset_category: String) -> Self { let now = std::time::SystemTime::now() .duration_since(std::time::UNIX_EPOCH) - .unwrap() + .expect("mainnet: handle error") .as_secs(); Self { @@ -70,7 +70,7 @@ impl LiquidityPool { self.updated_at = std::time::SystemTime::now() .duration_since(std::time::UNIX_EPOCH) - .unwrap() + .expect("mainnet: handle error") .as_secs(); liquidity_tokens @@ -87,7 +87,7 @@ impl LiquidityPool { self.updated_at = std::time::SystemTime::now() .duration_since(std::time::UNIX_EPOCH) - .unwrap() + .expect("mainnet: handle error") .as_secs(); (xtzh_amount, asset_amount) @@ -103,7 +103,7 @@ impl LiquidityPool { self.updated_at = std::time::SystemTime::now() .duration_since(std::time::UNIX_EPOCH) - .unwrap() + .expect("mainnet: handle error") .as_secs(); asset_out @@ -119,7 +119,7 @@ impl LiquidityPool { self.updated_at = std::time::SystemTime::now() .duration_since(std::time::UNIX_EPOCH) - .unwrap() + .expect("mainnet: handle error") .as_secs(); xtzh_out @@ -211,7 +211,7 @@ impl LiquidityPoolManager { ) -> Result { let now = std::time::SystemTime::now() .duration_since(std::time::UNIX_EPOCH) - .unwrap() + .expect("mainnet: handle error") .as_secs(); let pool_id = format!("pool_{}_{}", asset_token_id, now); @@ -255,7 +255,7 @@ impl LiquidityPoolManager { self.set_asset_shares(user.clone(), asset_token_id, asset_balance - asset_amount); // 添加流动性 - let pool = self.pools.get_mut(pool_id).unwrap(); + let pool = self.pools.get_mut(pool_id).expect("mainnet: handle error"); let liquidity_tokens = pool.add_liquidity(xtzh_amount, asset_amount); // 更新LP持仓 @@ -264,7 +264,7 @@ impl LiquidityPoolManager { .or_insert_with(|| { let now = std::time::SystemTime::now() .duration_since(std::time::UNIX_EPOCH) - .unwrap() + .expect("mainnet: handle error") .as_secs(); LPPosition { user: user.clone(), @@ -303,11 +303,11 @@ impl LiquidityPoolManager { .asset_token_id.clone(); // 移除流动性 - let pool = self.pools.get_mut(pool_id).unwrap(); + let pool = self.pools.get_mut(pool_id).expect("mainnet: handle error"); let (xtzh_amount, asset_amount) = pool.remove_liquidity(liquidity_tokens); // 更新LP持仓 - let position = self.lp_positions.get_mut(&(user.to_string(), pool_id.to_string())).unwrap(); + let position = self.lp_positions.get_mut(&(user.to_string(), pool_id.to_string())).expect("mainnet: handle error"); position.liquidity_tokens -= liquidity_tokens; // 返还余额 @@ -341,7 +341,7 @@ impl LiquidityPoolManager { .asset_token_id.clone(); // 执行交换 - let pool = self.pools.get_mut(pool_id).unwrap(); + let pool = self.pools.get_mut(pool_id).expect("mainnet: handle error"); let asset_out = pool.swap_xtzh_for_asset(xtzh_in, self.swap_fee_rate); // 更新余额 @@ -378,7 +378,7 @@ impl LiquidityPoolManager { }; // 执行交换 - let pool = self.pools.get_mut(pool_id).unwrap(); + let pool = self.pools.get_mut(pool_id).expect("mainnet: handle error"); let xtzh_out = pool.swap_asset_for_xtzh(asset_in, self.swap_fee_rate); // 更新余额 @@ -446,33 +446,33 @@ mod tests { #[test] fn test_pool_creation() { let mut manager = LiquidityPoolManager::default(); - let pool_id = manager.create_pool("asset1".to_string(), "RealEstate".to_string()).unwrap(); + let pool_id = manager.create_pool("asset1".to_string(), "RealEstate".to_string()).expect("mainnet: handle error"); assert!(manager.get_pool(&pool_id).is_some()); } #[test] fn test_add_liquidity() { let mut manager = LiquidityPoolManager::default(); - let pool_id = manager.create_pool("asset1".to_string(), "RealEstate".to_string()).unwrap(); + let pool_id = manager.create_pool("asset1".to_string(), "RealEstate".to_string()).expect("mainnet: handle error"); manager.set_xtzh_balance("user1".to_string(), 1000_000_000_000_000_000_000); manager.set_asset_shares("user1".to_string(), "asset1".to_string(), 100); - let lp_tokens = manager.add_liquidity(&pool_id, "user1".to_string(), 1000_000_000_000_000_000_000, 100).unwrap(); + let lp_tokens = manager.add_liquidity(&pool_id, "user1".to_string(), 1000_000_000_000_000_000_000, 100).expect("mainnet: handle error"); assert!(lp_tokens > 0); } #[test] fn test_swap() { let mut manager = LiquidityPoolManager::default(); - let pool_id = manager.create_pool("asset1".to_string(), "RealEstate".to_string()).unwrap(); + let pool_id = manager.create_pool("asset1".to_string(), "RealEstate".to_string()).expect("mainnet: handle error"); manager.set_xtzh_balance("lp".to_string(), 10000_000_000_000_000_000_000); manager.set_asset_shares("lp".to_string(), "asset1".to_string(), 1000); - manager.add_liquidity(&pool_id, "lp".to_string(), 10000_000_000_000_000_000_000, 1000).unwrap(); + manager.add_liquidity(&pool_id, "lp".to_string(), 10000_000_000_000_000_000_000, 1000).expect("mainnet: handle error"); manager.set_xtzh_balance("trader".to_string(), 1000_000_000_000_000_000_000); - let asset_out = manager.swap_xtzh_for_asset(&pool_id, "trader".to_string(), 100_000_000_000_000_000_000).unwrap(); + let asset_out = manager.swap_xtzh_for_asset(&pool_id, "trader".to_string(), 100_000_000_000_000_000_000).expect("mainnet: handle error"); assert!(asset_out > 0); assert_eq!(manager.stats.total_swaps, 1); @@ -481,14 +481,14 @@ mod tests { #[test] fn test_remove_liquidity() { let mut manager = LiquidityPoolManager::default(); - let pool_id = manager.create_pool("asset1".to_string(), "RealEstate".to_string()).unwrap(); + let pool_id = manager.create_pool("asset1".to_string(), "RealEstate".to_string()).expect("mainnet: handle error"); manager.set_xtzh_balance("user1".to_string(), 1000_000_000_000_000_000_000); manager.set_asset_shares("user1".to_string(), "asset1".to_string(), 100); - let lp_tokens = manager.add_liquidity(&pool_id, "user1".to_string(), 1000_000_000_000_000_000_000, 100).unwrap(); + let lp_tokens = manager.add_liquidity(&pool_id, "user1".to_string(), 1000_000_000_000_000_000_000, 100).expect("mainnet: handle error"); - let (xtzh, asset) = manager.remove_liquidity(&pool_id, "user1", lp_tokens).unwrap(); + let (xtzh, asset) = manager.remove_liquidity(&pool_id, "user1", lp_tokens).expect("mainnet: handle error"); assert!(xtzh > 0); assert!(asset > 0); } diff --git a/nvm_v2/nvm-l1/src/defi/revenue_distribution.rs b/nvm_v2/nvm-l1/src/defi/revenue_distribution.rs index e1b3164..5ed5905 100644 --- a/nvm_v2/nvm-l1/src/defi/revenue_distribution.rs +++ b/nvm_v2/nvm-l1/src/defi/revenue_distribution.rs @@ -169,7 +169,7 @@ impl RevenueDistributionSystem { let now = std::time::SystemTime::now() .duration_since(std::time::UNIX_EPOCH) - .unwrap() + .expect("mainnet: handle error") .as_secs(); // 创建分配记录 @@ -235,7 +235,7 @@ impl RevenueDistributionSystem { let now = std::time::SystemTime::now() .duration_since(std::time::UNIX_EPOCH) - .unwrap() + .expect("mainnet: handle error") .as_secs(); // 执行分配 @@ -251,14 +251,14 @@ impl RevenueDistributionSystem { } // 更新分配记录 - let allocations = self.allocations.get_mut(distribution_id).unwrap(); + let allocations = self.allocations.get_mut(distribution_id).expect("mainnet: handle error"); for allocation in allocations.iter_mut() { allocation.claimed = true; allocation.claimed_at = Some(now); } // 更新分配状态 - let distribution = self.distributions.get_mut(distribution_id).unwrap(); + let distribution = self.distributions.get_mut(distribution_id).expect("mainnet: handle error"); distribution.status = DistributionStatus::Completed; distribution.distributed_at = Some(now); @@ -338,9 +338,9 @@ mod tests { 1000 * 10u128.pow(18), 1000000, 1100000, - ).unwrap(); + ).expect("mainnet: handle error"); - let dist = system.get_distribution("dist_001").unwrap(); + let dist = system.get_distribution("dist_001").expect("mainnet: handle error"); assert_eq!(dist.status, DistributionStatus::Pending); assert_eq!(dist.beneficiary_count, 2); } @@ -361,13 +361,13 @@ mod tests { 1000 * 10u128.pow(18), 1000000, 1100000, - ).unwrap(); + ).expect("mainnet: handle error"); // 执行分配 - system.execute_distribution("dist_001").unwrap(); + system.execute_distribution("dist_001").expect("mainnet: handle error"); // 验证分配结果 - let dist = system.get_distribution("dist_001").unwrap(); + let dist = system.get_distribution("dist_001").expect("mainnet: handle error"); assert_eq!(dist.status, DistributionStatus::Completed); // holder_1应该收到60% @@ -393,9 +393,9 @@ mod tests { 1000 * 10u128.pow(18), 1000000, 1100000, - ).unwrap(); + ).expect("mainnet: handle error"); - let allocation = system.get_beneficiary_allocation("dist_001", "holder_1").unwrap(); + let allocation = system.get_beneficiary_allocation("dist_001", "holder_1").expect("mainnet: handle error"); assert_eq!(allocation.shares, 60); assert_eq!(allocation.amount, 600 * 10u128.pow(18)); assert!(!allocation.claimed); @@ -416,9 +416,9 @@ mod tests { 1000 * 10u128.pow(18), 1000000, 1100000, - ).unwrap(); + ).expect("mainnet: handle error"); - system.execute_distribution("dist_001").unwrap(); + system.execute_distribution("dist_001").expect("mainnet: handle error"); // 第二次分配:分红 system.create_distribution( @@ -428,9 +428,9 @@ mod tests { 500 * 10u128.pow(18), 1100000, 1200000, - ).unwrap(); + ).expect("mainnet: handle error"); - system.execute_distribution("dist_002").unwrap(); + system.execute_distribution("dist_002").expect("mainnet: handle error"); // 验证累计收益 let balance1 = system.get_xtzh_balance("holder_1"); diff --git a/nvm_v2/nvm-l1/src/defi/rwa_marketplace.rs b/nvm_v2/nvm-l1/src/defi/rwa_marketplace.rs index 8155643..538891f 100644 --- a/nvm_v2/nvm-l1/src/defi/rwa_marketplace.rs +++ b/nvm_v2/nvm-l1/src/defi/rwa_marketplace.rs @@ -97,7 +97,7 @@ impl AssetListing { ) -> Self { let now = std::time::SystemTime::now() .duration_since(std::time::UNIX_EPOCH) - .unwrap() + .expect("mainnet: handle error") .as_secs(); let xtzh_deposit = (total_shares * price_per_share * 10) / 100; // 10%质押 @@ -127,7 +127,7 @@ impl AssetListing { self.status = ListingStatus::Active; self.updated_at = std::time::SystemTime::now() .duration_since(std::time::UNIX_EPOCH) - .unwrap() + .expect("mainnet: handle error") .as_secs(); } @@ -156,7 +156,7 @@ impl AssetListing { self.updated_at = std::time::SystemTime::now() .duration_since(std::time::UNIX_EPOCH) - .unwrap() + .expect("mainnet: handle error") .as_secs(); Ok(()) @@ -167,7 +167,7 @@ impl AssetListing { self.status = ListingStatus::Delisted; self.updated_at = std::time::SystemTime::now() .duration_since(std::time::UNIX_EPOCH) - .unwrap() + .expect("mainnet: handle error") .as_secs(); } @@ -296,7 +296,7 @@ impl RWAMarketplace { let now = std::time::SystemTime::now() .duration_since(std::time::UNIX_EPOCH) - .unwrap() + .expect("mainnet: handle error") .as_secs(); let listing_id = format!("listing_{}_{}", asset_token_id, now); @@ -379,7 +379,7 @@ impl RWAMarketplace { } // 执行购买 - let listing_mut = self.listings.get_mut(listing_id).unwrap(); + let listing_mut = self.listings.get_mut(listing_id).expect("mainnet: handle error"); listing_mut.purchase(shares)?; let is_sold = listing_mut.status == ListingStatus::Sold; @@ -404,7 +404,7 @@ impl RWAMarketplace { // 创建交易记录 let now = std::time::SystemTime::now() .duration_since(std::time::UNIX_EPOCH) - .unwrap() + .expect("mainnet: handle error") .as_secs(); let tx_id = format!("tx_{}_{}", listing_id, now); @@ -463,7 +463,7 @@ impl RWAMarketplace { self.set_xtzh_balance(seller, seller_balance + refund); // 更新挂单状态 - let listing = self.listings.get_mut(listing_id).unwrap(); + let listing = self.listings.get_mut(listing_id).expect("mainnet: handle error"); listing.delist(); if was_active { @@ -545,7 +545,7 @@ mod tests { "Prime real estate".to_string(), "US-CA".to_string(), 30, - ).unwrap(); + ).expect("mainnet: handle error"); assert!(market.get_listing(&listing_id).is_some()); assert_eq!(market.stats.total_listings, 1); @@ -570,11 +570,11 @@ mod tests { "Prime real estate".to_string(), "US-CA".to_string(), 30, - ).unwrap(); + ).expect("mainnet: handle error"); - market.approve_listing(&listing_id).unwrap(); + market.approve_listing(&listing_id).expect("mainnet: handle error"); - let tx_id = market.purchase_asset(&listing_id, 50, "buyer".to_string()).unwrap(); + let tx_id = market.purchase_asset(&listing_id, 50, "buyer".to_string()).expect("mainnet: handle error"); assert!(market.transactions.iter().any(|t| t.tx_id == tx_id)); assert_eq!(market.get_asset_shares("buyer", "asset1"), 50); @@ -599,12 +599,12 @@ mod tests { "Prime real estate".to_string(), "US-CA".to_string(), 30, - ).unwrap(); + ).expect("mainnet: handle error"); - market.approve_listing(&listing_id).unwrap(); - market.delist(&listing_id, "seller").unwrap(); + market.approve_listing(&listing_id).expect("mainnet: handle error"); + market.delist(&listing_id, "seller").expect("mainnet: handle error"); - let listing = market.get_listing(&listing_id).unwrap(); + let listing = market.get_listing(&listing_id).expect("mainnet: handle error"); assert_eq!(listing.status, ListingStatus::Delisted); } } diff --git a/nvm_v2/nvm-l1/src/executor.rs b/nvm_v2/nvm-l1/src/executor.rs index 1ba0f10..65099eb 100644 --- a/nvm_v2/nvm-l1/src/executor.rs +++ b/nvm_v2/nvm-l1/src/executor.rs @@ -351,8 +351,8 @@ impl ContractExecutor { if stack.len() < 2 { return Err(ExecutionError::StackUnderflow); } - let b = stack.pop().unwrap(); - let a = stack.pop().unwrap(); + let b = stack.pop().expect("mainnet: handle error"); + let a = stack.pop().expect("mainnet: handle error"); stack.push(a.wrapping_add(b)); } @@ -360,8 +360,8 @@ impl ContractExecutor { if stack.len() < 2 { return Err(ExecutionError::StackUnderflow); } - let b = stack.pop().unwrap(); - let a = stack.pop().unwrap(); + let b = stack.pop().expect("mainnet: handle error"); + let a = stack.pop().expect("mainnet: handle error"); stack.push(a.wrapping_sub(b)); } @@ -369,8 +369,8 @@ impl ContractExecutor { if stack.len() < 2 { return Err(ExecutionError::StackUnderflow); } - let b = stack.pop().unwrap(); - let a = stack.pop().unwrap(); + let b = stack.pop().expect("mainnet: handle error"); + let a = stack.pop().expect("mainnet: handle error"); stack.push(a.wrapping_mul(b)); } @@ -378,8 +378,8 @@ impl ContractExecutor { if stack.len() < 2 { return Err(ExecutionError::StackUnderflow); } - let b = stack.pop().unwrap(); - let a = stack.pop().unwrap(); + let b = stack.pop().expect("mainnet: handle error"); + let a = stack.pop().expect("mainnet: handle error"); if b == 0 { return Err(ExecutionError::DivisionByZero); } @@ -406,7 +406,7 @@ impl ContractExecutor { if stack.is_empty() { return Err(ExecutionError::StackUnderflow); } - let key_bytes = stack.pop().unwrap().to_le_bytes(); + let key_bytes = stack.pop().expect("mainnet: handle error").to_le_bytes(); let mut key_array = [0u8; 48]; key_array[..8].copy_from_slice(&key_bytes); let key = Hash::new(key_array); @@ -433,8 +433,8 @@ impl ContractExecutor { if stack.len() < 2 { return Err(ExecutionError::StackUnderflow); } - let value = stack.pop().unwrap(); - let key_bytes = stack.pop().unwrap().to_le_bytes(); + let value = stack.pop().expect("mainnet: handle error"); + let key_bytes = stack.pop().expect("mainnet: handle error").to_le_bytes(); let mut key_array = [0u8; 48]; key_array[..8].copy_from_slice(&key_bytes); let key = Hash::new(key_array); @@ -451,8 +451,8 @@ impl ContractExecutor { if stack.len() < 2 { return Err(ExecutionError::StackUnderflow); } - let size = stack.pop().unwrap() as usize; - let offset = stack.pop().unwrap() as usize; + let size = stack.pop().expect("mainnet: handle error") as usize; + let offset = stack.pop().expect("mainnet: handle error") as usize; if offset + size > memory.len() { memory.resize(offset + size, 0); diff --git a/nvm_v2/nvm-l1/src/gas.rs b/nvm_v2/nvm-l1/src/gas.rs index ce13e2f..5e0cf36 100644 --- a/nvm_v2/nvm-l1/src/gas.rs +++ b/nvm_v2/nvm-l1/src/gas.rs @@ -189,7 +189,7 @@ mod tests { #[test] fn test_has_gas() { let mut meter = GasMeter::new(100000); - meter.consume_gas(50000).unwrap(); + meter.consume_gas(50000).expect("mainnet: handle error"); assert!(meter.has_gas(50000)); assert!(!meter.has_gas(50001)); } @@ -197,7 +197,7 @@ mod tests { #[test] fn test_reset() { let mut meter = GasMeter::new(100000); - meter.consume_gas(50000).unwrap(); + meter.consume_gas(50000).expect("mainnet: handle error"); meter.reset(); assert_eq!(meter.gas_used(), 0); assert_eq!(meter.gas_remaining(), 100000); diff --git a/nvm_v2/nvm-l1/src/gnacs/classifier.rs b/nvm_v2/nvm-l1/src/gnacs/classifier.rs index 9d0649c..9db2f76 100644 --- a/nvm_v2/nvm-l1/src/gnacs/classifier.rs +++ b/nvm_v2/nvm-l1/src/gnacs/classifier.rs @@ -455,7 +455,7 @@ mod tests { .risk(RiskLevel::Medium) .compliance(ComplianceStatus::Verified) .build() - .unwrap(); + .expect("mainnet: handle error"); AssetMetadata { asset_id: Hash::from([id; 32]), @@ -491,7 +491,7 @@ mod tests { let mut classifier = GNACSClassifier::new(); let metadata = create_test_metadata(1, AssetCategory::RealEstate, 1); - classifier.register_asset(metadata.clone()).unwrap(); + classifier.register_asset(metadata.clone()).expect("mainnet: handle error"); assert!(classifier.register_asset(metadata).is_err()); } @@ -501,11 +501,11 @@ mod tests { let metadata = create_test_metadata(1, AssetCategory::RealEstate, 1); let asset_id = metadata.asset_id; - classifier.register_asset(metadata).unwrap(); + classifier.register_asset(metadata).expect("mainnet: handle error"); let retrieved = classifier.get_asset(asset_id); assert!(retrieved.is_some()); - assert_eq!(retrieved.unwrap().name, "Test Asset 1"); + assert_eq!(retrieved.expect("mainnet: handle error").name, "Test Asset 1"); } #[test] @@ -518,9 +518,9 @@ mod tests { let gnacs_code = metadata1.gnacs_code; - classifier.register_asset(metadata1).unwrap(); - classifier.register_asset(metadata2).unwrap(); - classifier.register_asset(metadata3).unwrap(); + classifier.register_asset(metadata1).expect("mainnet: handle error"); + classifier.register_asset(metadata2).expect("mainnet: handle error"); + classifier.register_asset(metadata3).expect("mainnet: handle error"); let assets = classifier.get_assets_by_gnacs(gnacs_code); assert_eq!(assets.len(), 2); @@ -536,9 +536,9 @@ mod tests { let owner = Address::from([1; 20]); - classifier.register_asset(metadata1).unwrap(); - classifier.register_asset(metadata2).unwrap(); - classifier.register_asset(metadata3).unwrap(); + classifier.register_asset(metadata1).expect("mainnet: handle error"); + classifier.register_asset(metadata2).expect("mainnet: handle error"); + classifier.register_asset(metadata3).expect("mainnet: handle error"); let assets = classifier.get_assets_by_owner(owner); assert_eq!(assets.len(), 2); @@ -552,9 +552,9 @@ mod tests { let metadata2 = create_test_metadata(2, AssetCategory::Equity, 2); let metadata3 = create_test_metadata(3, AssetCategory::RealEstate, 3); - classifier.register_asset(metadata1).unwrap(); - classifier.register_asset(metadata2).unwrap(); - classifier.register_asset(metadata3).unwrap(); + classifier.register_asset(metadata1).expect("mainnet: handle error"); + classifier.register_asset(metadata2).expect("mainnet: handle error"); + classifier.register_asset(metadata3).expect("mainnet: handle error"); let filter = AssetFilter::new().category(AssetCategory::RealEstate); let assets = classifier.query_assets(&filter); @@ -567,14 +567,14 @@ mod tests { let metadata = create_test_metadata(1, AssetCategory::RealEstate, 1); let asset_id = metadata.asset_id; - classifier.register_asset(metadata).unwrap(); + classifier.register_asset(metadata).expect("mainnet: handle error"); let mut updated_metadata = create_test_metadata(1, AssetCategory::Equity, 1); updated_metadata.name = "Updated Asset".to_string(); assert!(classifier.update_asset(asset_id, updated_metadata).is_ok()); - let retrieved = classifier.get_asset(asset_id).unwrap(); + let retrieved = classifier.get_asset(asset_id).expect("mainnet: handle error"); assert_eq!(retrieved.name, "Updated Asset"); assert_eq!(retrieved.gnacs_code.category(), AssetCategory::Equity); } @@ -585,7 +585,7 @@ mod tests { let metadata = create_test_metadata(1, AssetCategory::RealEstate, 1); let asset_id = metadata.asset_id; - classifier.register_asset(metadata).unwrap(); + classifier.register_asset(metadata).expect("mainnet: handle error"); assert_eq!(classifier.total_assets(), 1); assert!(classifier.unregister_asset(asset_id).is_ok()); @@ -597,14 +597,14 @@ mod tests { fn test_statistics() { let mut classifier = GNACSClassifier::new(); - classifier.register_asset(create_test_metadata(1, AssetCategory::RealEstate, 1)).unwrap(); - classifier.register_asset(create_test_metadata(2, AssetCategory::RealEstate, 2)).unwrap(); - classifier.register_asset(create_test_metadata(3, AssetCategory::Equity, 3)).unwrap(); + classifier.register_asset(create_test_metadata(1, AssetCategory::RealEstate, 1)).expect("mainnet: handle error"); + classifier.register_asset(create_test_metadata(2, AssetCategory::RealEstate, 2)).expect("mainnet: handle error"); + classifier.register_asset(create_test_metadata(3, AssetCategory::Equity, 3)).expect("mainnet: handle error"); let stats = classifier.get_statistics(); assert_eq!(stats.total_assets, 3); - assert_eq!(*stats.by_category.get(&AssetCategory::RealEstate).unwrap(), 2); - assert_eq!(*stats.by_category.get(&AssetCategory::Equity).unwrap(), 1); + assert_eq!(*stats.by_category.get(&AssetCategory::RealEstate).expect("mainnet: handle error"), 2); + assert_eq!(*stats.by_category.get(&AssetCategory::Equity).expect("mainnet: handle error"), 1); assert_eq!(stats.total_valuation, 3000000); } @@ -621,9 +621,9 @@ mod tests { let mut metadata3 = create_test_metadata(3, AssetCategory::Debt, 3); metadata3.valuation = 2500000; - classifier.register_asset(metadata1).unwrap(); - classifier.register_asset(metadata2).unwrap(); - classifier.register_asset(metadata3).unwrap(); + classifier.register_asset(metadata1).expect("mainnet: handle error"); + classifier.register_asset(metadata2).expect("mainnet: handle error"); + classifier.register_asset(metadata3).expect("mainnet: handle error"); let filter = AssetFilter::new().valuation_range(1000000, 2000000); let assets = classifier.query_assets(&filter); diff --git a/nvm_v2/nvm-l1/src/gnacs/encoding.rs b/nvm_v2/nvm-l1/src/gnacs/encoding.rs index 11966a5..dcf5c08 100644 --- a/nvm_v2/nvm-l1/src/gnacs/encoding.rs +++ b/nvm_v2/nvm-l1/src/gnacs/encoding.rs @@ -593,7 +593,7 @@ mod tests { .build(); assert!(code.is_ok()); - let code = code.unwrap(); + let code = code.expect("mainnet: handle error"); assert_eq!(code.category(), AssetCategory::IntellectualProperty); assert_eq!(code.subcategory(), 5); } diff --git a/nvm_v2/nvm-l1/src/governance/governance_enhanced.rs b/nvm_v2/nvm-l1/src/governance/governance_enhanced.rs index 5bbac12..c28e449 100644 --- a/nvm_v2/nvm-l1/src/governance/governance_enhanced.rs +++ b/nvm_v2/nvm-l1/src/governance/governance_enhanced.rs @@ -242,7 +242,7 @@ impl GovernanceEnhancedSystem { let now = std::time::SystemTime::now() .duration_since(std::time::UNIX_EPOCH) - .unwrap() + .expect("mainnet: handle error") .as_secs(); let proposal = Proposal { @@ -287,7 +287,7 @@ impl GovernanceEnhancedSystem { let now = std::time::SystemTime::now() .duration_since(std::time::UNIX_EPOCH) - .unwrap() + .expect("mainnet: handle error") .as_secs(); if now < proposal.voting_start || now > proposal.voting_end { @@ -309,7 +309,7 @@ impl GovernanceEnhancedSystem { let now = std::time::SystemTime::now() .duration_since(std::time::UNIX_EPOCH) - .unwrap() + .expect("mainnet: handle error") .as_secs(); // 记录投票 @@ -323,7 +323,7 @@ impl GovernanceEnhancedSystem { votes.push(vote); // 更新提案票数 - let proposal = self.proposals.get_mut(proposal_id).unwrap(); + let proposal = self.proposals.get_mut(proposal_id).expect("mainnet: handle error"); match option { VoteOption::For => proposal.votes_for += voting_power, VoteOption::Against => proposal.votes_against += voting_power, @@ -352,7 +352,7 @@ impl GovernanceEnhancedSystem { let now = std::time::SystemTime::now() .duration_since(std::time::UNIX_EPOCH) - .unwrap() + .expect("mainnet: handle error") .as_secs(); let delegation = Delegation { @@ -388,7 +388,7 @@ impl GovernanceEnhancedSystem { let now = std::time::SystemTime::now() .duration_since(std::time::UNIX_EPOCH) - .unwrap() + .expect("mainnet: handle error") .as_secs(); if now <= proposal.voting_end { @@ -449,7 +449,7 @@ impl GovernanceEnhancedSystem { let now = std::time::SystemTime::now() .duration_since(std::time::UNIX_EPOCH) - .unwrap() + .expect("mainnet: handle error") .as_secs(); proposal.status = ProposalStatus::Executed; @@ -496,9 +496,9 @@ mod tests { "将法定人数从20%提高到30%".to_string(), "proposer".to_string(), Some("quorum=3000".to_string()), - ).unwrap(); + ).expect("mainnet: handle error"); - let proposal = system.get_proposal("prop_001").unwrap(); + let proposal = system.get_proposal("prop_001").expect("mainnet: handle error"); assert_eq!(proposal.status, ProposalStatus::Draft); } @@ -516,18 +516,18 @@ mod tests { "描述".to_string(), "proposer".to_string(), None, - ).unwrap(); + ).expect("mainnet: handle error"); // 手动设置为投票状态 - let proposal = system.proposals.get_mut("prop_001").unwrap(); + let proposal = system.proposals.get_mut("prop_001").expect("mainnet: handle error"); proposal.status = ProposalStatus::Voting; proposal.voting_start = 0; proposal.voting_end = u64::MAX; - system.vote("prop_001", "voter1".to_string(), VoteOption::For).unwrap(); - system.vote("prop_001", "voter2".to_string(), VoteOption::Against).unwrap(); + system.vote("prop_001", "voter1".to_string(), VoteOption::For).expect("mainnet: handle error"); + system.vote("prop_001", "voter2".to_string(), VoteOption::Against).expect("mainnet: handle error"); - let proposal = system.get_proposal("prop_001").unwrap(); + let proposal = system.get_proposal("prop_001").expect("mainnet: handle error"); assert_eq!(proposal.votes_for, 1000 * 10u128.pow(18)); assert_eq!(proposal.votes_against, 500 * 10u128.pow(18)); } @@ -537,7 +537,7 @@ mod tests { let mut system = GovernanceEnhancedSystem::default(); system.set_xic_balance("delegator".to_string(), 1000 * 10u128.pow(18)); - system.delegate("delegator".to_string(), "delegatee".to_string()).unwrap(); + system.delegate("delegator".to_string(), "delegatee".to_string()).expect("mainnet: handle error"); let voting_power = system.get_voting_power("delegatee"); assert_eq!(voting_power, 1000 * 10u128.pow(18)); @@ -556,22 +556,22 @@ mod tests { "描述".to_string(), "proposer".to_string(), None, - ).unwrap(); + ).expect("mainnet: handle error"); - let proposal = system.proposals.get_mut("prop_001").unwrap(); + let proposal = system.proposals.get_mut("prop_001").expect("mainnet: handle error"); proposal.status = ProposalStatus::Voting; proposal.voting_start = 0; proposal.voting_end = u64::MAX; // 先设置为未结束 - system.vote("prop_001", "voter1".to_string(), VoteOption::For).unwrap(); + system.vote("prop_001", "voter1".to_string(), VoteOption::For).expect("mainnet: handle error"); // 投票后再设置为已结束 - let proposal = system.proposals.get_mut("prop_001").unwrap(); + let proposal = system.proposals.get_mut("prop_001").expect("mainnet: handle error"); proposal.voting_end = 0; - system.finalize_proposal("prop_001").unwrap(); + system.finalize_proposal("prop_001").expect("mainnet: handle error"); - let proposal = system.get_proposal("prop_001").unwrap(); + let proposal = system.get_proposal("prop_001").expect("mainnet: handle error"); assert_eq!(proposal.status, ProposalStatus::Passed); } } diff --git a/nvm_v2/nvm-l1/src/governance/proposal_execution.rs b/nvm_v2/nvm-l1/src/governance/proposal_execution.rs index d5972c2..71f6d46 100644 --- a/nvm_v2/nvm-l1/src/governance/proposal_execution.rs +++ b/nvm_v2/nvm-l1/src/governance/proposal_execution.rs @@ -152,15 +152,15 @@ mod tests { system.submit_execution("proposal_001".to_string()); // 检查待执行状态 - let record = system.get_execution_record("proposal_001").unwrap(); + let record = system.get_execution_record("proposal_001").expect("mainnet: handle error"); assert_eq!(record.status, ExecutionStatus::Pending); // 执行提案 - let result = system.execute_proposal("proposal_001").unwrap(); + let result = system.execute_proposal("proposal_001").expect("mainnet: handle error"); assert!(result.success); // 检查完成状态 - let record = system.get_execution_record("proposal_001").unwrap(); + let record = system.get_execution_record("proposal_001").expect("mainnet: handle error"); assert_eq!(record.status, ExecutionStatus::Completed); // 检查统计 diff --git a/nvm_v2/nvm-l1/src/oracle/bridge_enhanced.rs b/nvm_v2/nvm-l1/src/oracle/bridge_enhanced.rs index cbe08bc..f793b12 100644 --- a/nvm_v2/nvm-l1/src/oracle/bridge_enhanced.rs +++ b/nvm_v2/nvm-l1/src/oracle/bridge_enhanced.rs @@ -100,7 +100,7 @@ impl BridgeTransaction { ) -> Self { let now = std::time::SystemTime::now() .duration_since(std::time::UNIX_EPOCH) - .unwrap() + .expect("mainnet: handle error") .as_secs(); Self { @@ -136,7 +136,7 @@ impl BridgeTransaction { self.completed_at = Some( std::time::SystemTime::now() .duration_since(std::time::UNIX_EPOCH) - .unwrap() + .expect("mainnet: handle error") .as_secs(), ); } @@ -154,7 +154,7 @@ impl BridgeTransaction { self.completed_at = Some( std::time::SystemTime::now() .duration_since(std::time::UNIX_EPOCH) - .unwrap() + .expect("mainnet: handle error") .as_secs(), ); } @@ -165,7 +165,7 @@ impl BridgeTransaction { self.completed_at = Some( std::time::SystemTime::now() .duration_since(std::time::UNIX_EPOCH) - .unwrap() + .expect("mainnet: handle error") .as_secs(), ); } @@ -347,7 +347,7 @@ impl EnhancedCrossChainBridge { let now = std::time::SystemTime::now() .duration_since(std::time::UNIX_EPOCH) - .unwrap() + .expect("mainnet: handle error") .as_secs(); let tx_id = format!("bridge_{}_{}", source_chain.0, now); @@ -524,7 +524,7 @@ mod tests { ChainId::nac(), "XTZH".to_string(), 1000_000_000_000_000_000_000, - ).unwrap(); + ).expect("mainnet: handle error"); assert!(pool_id.starts_with("pool_")); assert!(bridge.get_liquidity_pool(&ChainId::nac(), "XTZH").is_some()); @@ -545,7 +545,7 @@ mod tests { 100_000_000_000_000_000_000, "sender".to_string(), "receiver".to_string(), - ).unwrap(); + ).expect("mainnet: handle error"); assert!(bridge.get_transaction(&tx_id).is_some()); assert_eq!(bridge.stats.total_transactions, 1); @@ -557,7 +557,7 @@ mod tests { let eth_chain = ChainId::new("ETH".to_string()); bridge.add_supported_asset(ChainId::nac(), "XTZH".to_string()); - bridge.create_liquidity_pool(ChainId::nac(), "XTZH".to_string(), 1000_000_000_000_000_000_000).unwrap(); + bridge.create_liquidity_pool(ChainId::nac(), "XTZH".to_string(), 1000_000_000_000_000_000_000).expect("mainnet: handle error"); let tx_id = bridge.initiate_bridge( ChainId::nac(), @@ -567,15 +567,15 @@ mod tests { 100_000_000_000_000_000_000, "sender".to_string(), "receiver".to_string(), - ).unwrap(); + ).expect("mainnet: handle error"); // 锁定 - bridge.execute_lock(&tx_id, "lock_hash".to_string()).unwrap(); - assert_eq!(bridge.get_transaction(&tx_id).unwrap().status, BridgeStatus::Locked); + bridge.execute_lock(&tx_id, "lock_hash".to_string()).expect("mainnet: handle error"); + assert_eq!(bridge.get_transaction(&tx_id).expect("mainnet: handle error").status, BridgeStatus::Locked); // 铸造 - bridge.execute_mint(&tx_id, "mint_hash".to_string()).unwrap(); - assert_eq!(bridge.get_transaction(&tx_id).unwrap().status, BridgeStatus::Minted); + bridge.execute_mint(&tx_id, "mint_hash".to_string()).expect("mainnet: handle error"); + assert_eq!(bridge.get_transaction(&tx_id).expect("mainnet: handle error").status, BridgeStatus::Minted); assert_eq!(bridge.stats.successful_transactions, 1); } @@ -589,12 +589,12 @@ mod tests { ); // 锁定 - pool.lock(300).unwrap(); + pool.lock(300).expect("mainnet: handle error"); assert_eq!(pool.locked_amount, 300); assert_eq!(pool.available_amount, 700); // 解锁 - pool.unlock(100).unwrap(); + pool.unlock(100).expect("mainnet: handle error"); assert_eq!(pool.locked_amount, 200); assert_eq!(pool.available_amount, 800); diff --git a/nvm_v2/nvm-l1/src/oracle/crosschain_message.rs b/nvm_v2/nvm-l1/src/oracle/crosschain_message.rs index a91555f..30b5844 100644 --- a/nvm_v2/nvm-l1/src/oracle/crosschain_message.rs +++ b/nvm_v2/nvm-l1/src/oracle/crosschain_message.rs @@ -99,7 +99,7 @@ impl CrossChainMessage { ) -> Self { let now = std::time::SystemTime::now() .duration_since(std::time::UNIX_EPOCH) - .unwrap() + .expect("mainnet: handle error") .as_secs(); Self { @@ -127,7 +127,7 @@ impl CrossChainMessage { self.sent_at = Some( std::time::SystemTime::now() .duration_since(std::time::UNIX_EPOCH) - .unwrap() + .expect("mainnet: handle error") .as_secs(), ); } @@ -138,7 +138,7 @@ impl CrossChainMessage { self.received_at = Some( std::time::SystemTime::now() .duration_since(std::time::UNIX_EPOCH) - .unwrap() + .expect("mainnet: handle error") .as_secs(), ); } @@ -149,7 +149,7 @@ impl CrossChainMessage { self.confirmed_at = Some( std::time::SystemTime::now() .duration_since(std::time::UNIX_EPOCH) - .unwrap() + .expect("mainnet: handle error") .as_secs(), ); } @@ -282,7 +282,7 @@ impl CrossChainMessageProtocol { let now = std::time::SystemTime::now() .duration_since(std::time::UNIX_EPOCH) - .unwrap() + .expect("mainnet: handle error") .as_secs(); let message_id = format!("msg_{}_{}_{}", source_chain.0, now, self.stats.total_messages); @@ -436,11 +436,11 @@ mod tests { vec![], 1000, 60, - ).unwrap(); + ).expect("mainnet: handle error"); let route = protocol.get_route(&ChainId::nac(), ð_chain); assert!(route.is_some()); - assert_eq!(route.unwrap().estimated_fee, 1000); + assert_eq!(route.expect("mainnet: handle error").estimated_fee, 1000); } #[test] @@ -449,7 +449,7 @@ mod tests { let eth_chain = ChainId::new("ETH".to_string()); protocol.add_supported_chain(eth_chain.clone()); - protocol.add_route(ChainId::nac(), eth_chain.clone(), vec![], 1000, 60).unwrap(); + protocol.add_route(ChainId::nac(), eth_chain.clone(), vec![], 1000, 60).expect("mainnet: handle error"); let message_id = protocol.create_message( ChainId::nac(), @@ -458,7 +458,7 @@ mod tests { "sender".to_string(), "receiver".to_string(), vec![1, 2, 3], - ).unwrap(); + ).expect("mainnet: handle error"); assert!(protocol.get_message(&message_id).is_some()); assert_eq!(protocol.stats.total_messages, 1); @@ -470,7 +470,7 @@ mod tests { let eth_chain = ChainId::new("ETH".to_string()); protocol.add_supported_chain(eth_chain.clone()); - protocol.add_route(ChainId::nac(), eth_chain.clone(), vec![], 1000, 60).unwrap(); + protocol.add_route(ChainId::nac(), eth_chain.clone(), vec![], 1000, 60).expect("mainnet: handle error"); let message_id = protocol.create_message( ChainId::nac(), @@ -479,19 +479,19 @@ mod tests { "sender".to_string(), "receiver".to_string(), vec![1, 2, 3], - ).unwrap(); + ).expect("mainnet: handle error"); // 发送 - protocol.send_message(&message_id).unwrap(); - assert_eq!(protocol.get_message(&message_id).unwrap().status, MessageStatus::Sent); + protocol.send_message(&message_id).expect("mainnet: handle error"); + assert_eq!(protocol.get_message(&message_id).expect("mainnet: handle error").status, MessageStatus::Sent); // 接收 - protocol.receive_message(&message_id).unwrap(); - assert_eq!(protocol.get_message(&message_id).unwrap().status, MessageStatus::Received); + protocol.receive_message(&message_id).expect("mainnet: handle error"); + assert_eq!(protocol.get_message(&message_id).expect("mainnet: handle error").status, MessageStatus::Received); // 确认 - protocol.confirm_message(&message_id).unwrap(); - assert_eq!(protocol.get_message(&message_id).unwrap().status, MessageStatus::Confirmed); + protocol.confirm_message(&message_id).expect("mainnet: handle error"); + assert_eq!(protocol.get_message(&message_id).expect("mainnet: handle error").status, MessageStatus::Confirmed); assert_eq!(protocol.stats.confirmed_messages, 1); } @@ -501,7 +501,7 @@ mod tests { let eth_chain = ChainId::new("ETH".to_string()); protocol.add_supported_chain(eth_chain.clone()); - protocol.add_route(ChainId::nac(), eth_chain.clone(), vec![], 1000, 60).unwrap(); + protocol.add_route(ChainId::nac(), eth_chain.clone(), vec![], 1000, 60).expect("mainnet: handle error"); let message_id = protocol.create_message( ChainId::nac(), @@ -510,7 +510,7 @@ mod tests { "sender".to_string(), "receiver".to_string(), vec![1, 2, 3], - ).unwrap(); + ).expect("mainnet: handle error"); // 重试3次应该成功 for _ in 0..3 { @@ -519,7 +519,7 @@ mod tests { // 第4次应该失败 assert!(protocol.retry_message(&message_id).is_err()); - assert_eq!(protocol.get_message(&message_id).unwrap().status, MessageStatus::Failed); + assert_eq!(protocol.get_message(&message_id).expect("mainnet: handle error").status, MessageStatus::Failed); } #[test] @@ -528,7 +528,7 @@ mod tests { let eth_chain = ChainId::new("ETH".to_string()); protocol.add_supported_chain(eth_chain.clone()); - protocol.add_route(ChainId::nac(), eth_chain.clone(), vec![], 1000, 60).unwrap(); + protocol.add_route(ChainId::nac(), eth_chain.clone(), vec![], 1000, 60).expect("mainnet: handle error"); // 创建3条消息 for i in 0..3 { @@ -539,7 +539,7 @@ mod tests { format!("sender{}", i), format!("receiver{}", i), vec![i as u8], - ).unwrap(); + ).expect("mainnet: handle error"); } let pending = protocol.get_pending_messages(); diff --git a/nvm_v2/nvm-l1/src/oracle/data_validation.rs b/nvm_v2/nvm-l1/src/oracle/data_validation.rs index 3e0878d..2e30dba 100644 --- a/nvm_v2/nvm-l1/src/oracle/data_validation.rs +++ b/nvm_v2/nvm-l1/src/oracle/data_validation.rs @@ -147,7 +147,7 @@ impl OracleDataValidator { let now = std::time::SystemTime::now() .duration_since(std::time::UNIX_EPOCH) - .unwrap() + .expect("mainnet: handle error") .as_secs(); // 过滤时间窗口内的数据 @@ -200,8 +200,8 @@ impl OracleDataValidator { // 检查时间戳 let timestamps: Vec = recent_points.iter().map(|p| p.timestamp).collect(); - let max_ts = *timestamps.iter().max().unwrap(); - let min_ts = *timestamps.iter().min().unwrap(); + let max_ts = *timestamps.iter().max().expect("mainnet: handle error"); + let min_ts = *timestamps.iter().min().expect("mainnet: handle error"); if max_ts - min_ts > self.time_window { anomalies.push(AnomalyType::TimestampAnomaly); @@ -320,7 +320,7 @@ mod tests { let now = std::time::SystemTime::now() .duration_since(std::time::UNIX_EPOCH) - .unwrap() + .expect("mainnet: handle error") .as_secs(); let data_point = DataPoint { @@ -346,7 +346,7 @@ mod tests { let now = std::time::SystemTime::now() .duration_since(std::time::UNIX_EPOCH) - .unwrap() + .expect("mainnet: handle error") .as_secs(); // 提交3个一致的数据点 @@ -362,7 +362,7 @@ mod tests { validator.submit_data_point(data_point); } - let report = validator.validate_data("price_xtzh").unwrap(); + let report = validator.validate_data("price_xtzh").expect("mainnet: handle error"); assert_eq!(report.result, ValidationResult::Valid); assert_eq!(report.sources_count, 3); assert!(report.score >= 80); @@ -378,7 +378,7 @@ mod tests { let now = std::time::SystemTime::now() .duration_since(std::time::UNIX_EPOCH) - .unwrap() + .expect("mainnet: handle error") .as_secs(); // 提交2个正常数据点和1个异常数据点 @@ -400,7 +400,7 @@ mod tests { validator.submit_data_point(data_point); } - let report = validator.validate_data("price_xtzh").unwrap(); + let report = validator.validate_data("price_xtzh").expect("mainnet: handle error"); assert!(report.anomalies.contains(&AnomalyType::PriceAnomaly)); assert!(report.score < 100); } @@ -411,7 +411,7 @@ mod tests { let now = std::time::SystemTime::now() .duration_since(std::time::UNIX_EPOCH) - .unwrap() + .expect("mainnet: handle error") .as_secs(); // 只提交1个数据点(少于最小要求3个) diff --git a/nvm_v2/nvm-l1/src/oracle/price_oracle_network.rs b/nvm_v2/nvm-l1/src/oracle/price_oracle_network.rs index aa67667..f63f627 100644 --- a/nvm_v2/nvm-l1/src/oracle/price_oracle_network.rs +++ b/nvm_v2/nvm-l1/src/oracle/price_oracle_network.rs @@ -33,7 +33,7 @@ impl OracleNode { pub fn new(node_id: String, address: String, stake_amount: u128) -> Self { let now = std::time::SystemTime::now() .duration_since(std::time::UNIX_EPOCH) - .unwrap() + .expect("mainnet: handle error") .as_secs(); Self { @@ -81,7 +81,7 @@ impl OracleNode { pub fn record_activity(&mut self) { self.last_active = std::time::SystemTime::now() .duration_since(std::time::UNIX_EPOCH) - .unwrap() + .expect("mainnet: handle error") .as_secs(); self.is_online = true; } @@ -273,7 +273,7 @@ impl PriceOracleNetwork { let now = std::time::SystemTime::now() .duration_since(std::time::UNIX_EPOCH) - .unwrap() + .expect("mainnet: handle error") .as_secs(); // 过滤最近5分钟的提交 @@ -361,7 +361,7 @@ impl PriceOracleNetwork { } } - Ok(weighted_prices.last().unwrap().0) + Ok(weighted_prices.last().expect("mainnet: handle error").0) } /// 计算加权平均 @@ -520,7 +520,7 @@ mod tests { "node1".to_string(), "0x123".to_string(), 2000, - ).unwrap(); + ).expect("mainnet: handle error"); assert_eq!(network.stats.total_nodes, 1); assert_eq!(network.stats.online_nodes, 1); @@ -543,11 +543,11 @@ mod tests { fn test_submit_price() { let mut network = PriceOracleNetwork::default(); - network.register_node("node1".to_string(), "0x123".to_string(), 2000).unwrap(); + network.register_node("node1".to_string(), "0x123".to_string(), 2000).expect("mainnet: handle error"); let now = std::time::SystemTime::now() .duration_since(std::time::UNIX_EPOCH) - .unwrap() + .expect("mainnet: handle error") .as_secs(); let submission = PriceSubmission { @@ -561,7 +561,7 @@ mod tests { signature: vec![1, 2, 3], }; - network.submit_price(submission).unwrap(); + network.submit_price(submission).expect("mainnet: handle error"); assert_eq!(network.stats.total_submissions, 1); } @@ -570,13 +570,13 @@ mod tests { let mut network = PriceOracleNetwork::default(); // 注册3个节点 - network.register_node("node1".to_string(), "0x123".to_string(), 2000).unwrap(); - network.register_node("node2".to_string(), "0x456".to_string(), 2000).unwrap(); - network.register_node("node3".to_string(), "0x789".to_string(), 2000).unwrap(); + network.register_node("node1".to_string(), "0x123".to_string(), 2000).expect("mainnet: handle error"); + network.register_node("node2".to_string(), "0x456".to_string(), 2000).expect("mainnet: handle error"); + network.register_node("node3".to_string(), "0x789".to_string(), 2000).expect("mainnet: handle error"); let now = std::time::SystemTime::now() .duration_since(std::time::UNIX_EPOCH) - .unwrap() + .expect("mainnet: handle error") .as_secs(); // 提交价格 @@ -591,11 +591,11 @@ mod tests { submitted_at: now, signature: vec![1, 2, 3], }; - network.submit_price(submission).unwrap(); + network.submit_price(submission).expect("mainnet: handle error"); } // 计算共识 - let consensus = network.calculate_consensus("XTZH", 3600).unwrap(); + let consensus = network.calculate_consensus("XTZH", 3600).expect("mainnet: handle error"); assert_eq!(consensus.participating_nodes, 3); assert!(consensus.price > 0); } diff --git a/nvm_v2/nvm-l1/src/oracle/tx_confirmation.rs b/nvm_v2/nvm-l1/src/oracle/tx_confirmation.rs index f5bab98..48a909e 100644 --- a/nvm_v2/nvm-l1/src/oracle/tx_confirmation.rs +++ b/nvm_v2/nvm-l1/src/oracle/tx_confirmation.rs @@ -86,7 +86,7 @@ impl CrossChainTransaction { ) -> Self { let now = std::time::SystemTime::now() .duration_since(std::time::UNIX_EPOCH) - .unwrap() + .expect("mainnet: handle error") .as_secs(); Self { @@ -128,7 +128,7 @@ impl CrossChainTransaction { self.finalized_at = Some( std::time::SystemTime::now() .duration_since(std::time::UNIX_EPOCH) - .unwrap() + .expect("mainnet: handle error") .as_secs(), ); } @@ -251,7 +251,7 @@ impl CrossChainConfirmationSystem { let now = std::time::SystemTime::now() .duration_since(std::time::UNIX_EPOCH) - .unwrap() + .expect("mainnet: handle error") .as_secs(); let record = ConfirmationRecord { @@ -310,7 +310,7 @@ impl CrossChainConfirmationSystem { pub fn check_timeouts(&mut self) -> Vec { let now = std::time::SystemTime::now() .duration_since(std::time::UNIX_EPOCH) - .unwrap() + .expect("mainnet: handle error") .as_secs(); let mut timeout_txs = Vec::new(); @@ -389,7 +389,7 @@ mod tests { ChainId::nac(), eth_chain, "0x123".to_string(), - ).unwrap(); + ).expect("mainnet: handle error"); assert!(system.get_transaction("tx1").is_some()); assert_eq!(system.stats.total_transactions, 1); @@ -411,7 +411,7 @@ mod tests { ChainId::nac(), eth_chain, "0x123".to_string(), - ).unwrap(); + ).expect("mainnet: handle error"); // 添加3个确认 for i in 1..=3 { @@ -421,10 +421,10 @@ mod tests { ConfirmationType::ValidatorSignature, vec![i as u8], "confirmed".to_string(), - ).unwrap(); + ).expect("mainnet: handle error"); } - let tx = system.get_transaction("tx1").unwrap(); + let tx = system.get_transaction("tx1").expect("mainnet: handle error"); assert_eq!(tx.status, ConfirmationStatus::Confirmed); assert_eq!(tx.confirmations.len(), 3); } @@ -445,7 +445,7 @@ mod tests { ChainId::nac(), eth_chain, "0x123".to_string(), - ).unwrap(); + ).expect("mainnet: handle error"); // 添加确认 for i in 1..=3 { @@ -455,13 +455,13 @@ mod tests { ConfirmationType::ValidatorSignature, vec![i as u8], "confirmed".to_string(), - ).unwrap(); + ).expect("mainnet: handle error"); } // 最终确认 - system.finalize_transaction("tx1", "0x456".to_string()).unwrap(); + system.finalize_transaction("tx1", "0x456".to_string()).expect("mainnet: handle error"); - let tx = system.get_transaction("tx1").unwrap(); + let tx = system.get_transaction("tx1").expect("mainnet: handle error"); assert_eq!(tx.status, ConfirmationStatus::Finalized); assert_eq!(tx.target_tx_hash, Some("0x456".to_string())); assert_eq!(system.stats.finalized_transactions, 1); @@ -480,7 +480,7 @@ mod tests { ChainId::nac(), eth_chain, "0x123".to_string(), - ).unwrap(); + ).expect("mainnet: handle error"); // 第一次确认 system.add_confirmation( @@ -489,7 +489,7 @@ mod tests { ConfirmationType::ValidatorSignature, vec![1], "confirmed".to_string(), - ).unwrap(); + ).expect("mainnet: handle error"); // 第二次确认应该失败 let result = system.add_confirmation( @@ -511,8 +511,8 @@ mod tests { system.set_default_confirmations(ChainId::nac(), 3); // 创建2个交易 - system.create_transaction("tx1".to_string(), ChainId::nac(), eth_chain.clone(), "0x123".to_string()).unwrap(); - system.create_transaction("tx2".to_string(), ChainId::nac(), eth_chain, "0x456".to_string()).unwrap(); + system.create_transaction("tx1".to_string(), ChainId::nac(), eth_chain.clone(), "0x123".to_string()).expect("mainnet: handle error"); + system.create_transaction("tx2".to_string(), ChainId::nac(), eth_chain, "0x456".to_string()).expect("mainnet: handle error"); let pending = system.get_pending_transactions(); assert_eq!(pending.len(), 2); diff --git a/nvm_v2/nvm-l1/src/performance/benchmarks.rs b/nvm_v2/nvm-l1/src/performance/benchmarks.rs index 68a45fc..4927ffa 100644 --- a/nvm_v2/nvm-l1/src/performance/benchmarks.rs +++ b/nvm_v2/nvm-l1/src/performance/benchmarks.rs @@ -78,7 +78,7 @@ impl PerformanceBenchmark { } let duration = start.elapsed(); - latencies.sort_by(|a, b| a.partial_cmp(b).unwrap()); + latencies.sort_by(|a, b| a.partial_cmp(b).expect("mainnet: handle error")); let avg_latency = latencies.iter().sum::() / latencies.len() as f64; let p95_index = (latencies.len() as f64 * 0.95) as usize; diff --git a/nvm_v2/nvm-l1/src/performance/optimization.rs b/nvm_v2/nvm-l1/src/performance/optimization.rs index 1a2f79f..751f316 100644 --- a/nvm_v2/nvm-l1/src/performance/optimization.rs +++ b/nvm_v2/nvm-l1/src/performance/optimization.rs @@ -69,7 +69,7 @@ impl CodeOptimizer { // 热点分析 report.push_str("热点函数分析:\n"); let mut sorted_hotspots = self.hotspots.clone(); - sorted_hotspots.sort_by(|a, b| b.total_time_ms.partial_cmp(&a.total_time_ms).unwrap()); + sorted_hotspots.sort_by(|a, b| b.total_time_ms.partial_cmp(&a.total_time_ms).expect("mainnet: handle error")); for (i, hotspot) in sorted_hotspots.iter().take(5).enumerate() { report.push_str(&format!("{}. {} - 执行{}次, 总耗时{:.2}ms, 平均{:.2}ms\n", diff --git a/nvm_v2/nvm-l1/src/phase20_deployment/deployment.rs b/nvm_v2/nvm-l1/src/phase20_deployment/deployment.rs index fd14a19..444f50d 100644 --- a/nvm_v2/nvm-l1/src/phase20_deployment/deployment.rs +++ b/nvm_v2/nvm-l1/src/phase20_deployment/deployment.rs @@ -199,7 +199,7 @@ mod tests { let monitoring = generator.generate_monitoring_config(); assert!(monitoring.is_some()); - let config_str = monitoring.unwrap(); + let config_str = monitoring.expect("mainnet: handle error"); assert!(config_str.contains("Prometheus")); assert!(config_str.contains("nac-nodes")); } diff --git a/nvm_v2/nvm-l1/src/phase20_deployment/ecosystem.rs b/nvm_v2/nvm-l1/src/phase20_deployment/ecosystem.rs index 17cc4c3..3320baa 100644 --- a/nvm_v2/nvm-l1/src/phase20_deployment/ecosystem.rs +++ b/nvm_v2/nvm-l1/src/phase20_deployment/ecosystem.rs @@ -251,7 +251,7 @@ mod tests { // 第一次请求应该成功 let result = faucet.request_tokens("0x123".to_string(), 1000); assert!(result.is_ok()); - assert_eq!(result.unwrap(), 100); + assert_eq!(result.expect("mainnet: handle error"), 100); // 第二次请求应该失败(冷却时间未过) let result2 = faucet.request_tokens("0x123".to_string(), 2000); diff --git a/nvm_v2/nvm-l1/src/state.rs b/nvm_v2/nvm-l1/src/state.rs index f692fb3..0fea26c 100644 --- a/nvm_v2/nvm-l1/src/state.rs +++ b/nvm_v2/nvm-l1/src/state.rs @@ -167,7 +167,7 @@ impl WorldState { } // 设置代码哈希 - let account = self.accounts.get_mut(&address).unwrap(); + let account = self.accounts.get_mut(&address).expect("mainnet: handle error"); account.code_hash = Some(*contract.code.code_hash()); // 保存合约 @@ -303,7 +303,7 @@ mod tests { fn test_balance_operations() { let mut state = WorldState::new(); let addr = Address::new([1u8; 20]); - state.create_account(addr).unwrap(); + state.create_account(addr).expect("mainnet: handle error"); assert!(state.set_balance(&addr, 1000).is_ok()); assert_eq!(state.get_balance(&addr), 1000); @@ -315,8 +315,8 @@ mod tests { let from = Address::new([1u8; 20]); let to = Address::new([2u8; 20]); - state.create_account(from).unwrap(); - state.set_balance(&from, 1000).unwrap(); + state.create_account(from).expect("mainnet: handle error"); + state.set_balance(&from, 1000).expect("mainnet: handle error"); assert!(state.transfer(&from, &to, 500).is_ok()); assert_eq!(state.get_balance(&from), 500); @@ -327,10 +327,10 @@ mod tests { fn test_nonce() { let mut state = WorldState::new(); let addr = Address::new([1u8; 20]); - state.create_account(addr).unwrap(); + state.create_account(addr).expect("mainnet: handle error"); assert_eq!(state.get_nonce(&addr), 0); - state.increment_nonce(&addr).unwrap(); + state.increment_nonce(&addr).expect("mainnet: handle error"); assert_eq!(state.get_nonce(&addr), 1); } @@ -350,15 +350,15 @@ mod tests { let mut manager = StateManager::new(); let addr = Address::new([1u8; 20]); - manager.current_state_mut().create_account(addr).unwrap(); - manager.current_state_mut().set_balance(&addr, 1000).unwrap(); + manager.current_state_mut().create_account(addr).expect("mainnet: handle error"); + manager.current_state_mut().set_balance(&addr, 1000).expect("mainnet: handle error"); manager.snapshot(); - manager.current_state_mut().set_balance(&addr, 500).unwrap(); + manager.current_state_mut().set_balance(&addr, 500).expect("mainnet: handle error"); assert_eq!(manager.current_state().get_balance(&addr), 500); - manager.revert().unwrap(); + manager.revert().expect("mainnet: handle error"); assert_eq!(manager.current_state().get_balance(&addr), 1000); } } diff --git a/nvm_v2/nvm-l1/src/types.rs b/nvm_v2/nvm-l1/src/types.rs index 8f90edf..1c2ffaa 100644 --- a/nvm_v2/nvm-l1/src/types.rs +++ b/nvm_v2/nvm-l1/src/types.rs @@ -23,7 +23,7 @@ mod tests { #[test] fn test_address_from_hex() { let hex = "0x1234567890123456789012345678901234567890"; - let addr = Address::from_hex(hex).unwrap(); + let addr = Address::from_hex(hex).expect("mainnet: handle error"); assert_eq!(addr.to_hex(), hex); } @@ -38,7 +38,7 @@ mod tests { #[test] fn test_hash_from_hex() { let hex = "0x1234567890123456789012345678901234567890123456789012345678901234"; - let hash = Hash::from_hex(hex).unwrap(); + let hash = Hash::from_hex(hex).expect("mainnet: handle error"); assert_eq!(hash.to_hex(), hex); } } diff --git a/nvm_v2/nvm-l1/src/upgrade/mod.rs b/nvm_v2/nvm-l1/src/upgrade/mod.rs index 0438173..3685325 100644 --- a/nvm_v2/nvm-l1/src/upgrade/mod.rs +++ b/nvm_v2/nvm-l1/src/upgrade/mod.rs @@ -457,7 +457,7 @@ impl L1UpgradeManager { /// 获取当前Gas规则 pub fn current_gas_rule(&self) -> &GasRule { - self.gas_rules.get(&self.gas_rule_version).unwrap() + self.gas_rules.get(&self.gas_rule_version).expect("mainnet: handle error") } } @@ -595,10 +595,10 @@ mod tests { enabled: true, }; - manager.register_precompiled(contract).unwrap(); + manager.register_precompiled(contract).expect("mainnet: handle error"); assert!(manager.disable_precompiled(Address::default()).is_ok()); - let contract = manager.get_precompiled(Address::default()).unwrap(); + let contract = manager.get_precompiled(Address::default()).expect("mainnet: handle error"); assert!(!contract.enabled); } diff --git a/nvm_v2/nvm-l1/src/value_scale/asset_valuation.rs b/nvm_v2/nvm-l1/src/value_scale/asset_valuation.rs index e4618ea..83c116a 100644 --- a/nvm_v2/nvm-l1/src/value_scale/asset_valuation.rs +++ b/nvm_v2/nvm-l1/src/value_scale/asset_valuation.rs @@ -196,7 +196,7 @@ impl AssetValuationSystem { let now = std::time::SystemTime::now() .duration_since(std::time::UNIX_EPOCH) - .unwrap() + .expect("mainnet: handle error") .as_secs(); // 应用调整因子 @@ -280,7 +280,7 @@ impl AssetValuationSystem { // 计算趋势 if history.valuations.len() >= 2 { - let latest = history.valuations.last().unwrap().value_xtzh; + let latest = history.valuations.last().expect("mainnet: handle error").value_xtzh; let previous = history.valuations[history.valuations.len() - 2].value_xtzh; if previous > 0 { @@ -312,7 +312,7 @@ impl AssetValuationSystem { if let Some(valuation) = self.valuations.get(valuation_id) { let now = std::time::SystemTime::now() .duration_since(std::time::UNIX_EPOCH) - .unwrap() + .expect("mainnet: handle error") .as_secs(); now - valuation.valued_at < valuation.validity_period @@ -407,7 +407,7 @@ mod tests { 365 * 24 * 3600, "Based on comparable sales".to_string(), None, - ).unwrap(); + ).expect("mainnet: handle error"); assert_eq!(result.valuation_id, "val001"); assert_eq!(result.confidence, 90); @@ -449,7 +449,7 @@ mod tests { 365 * 24 * 3600, "With location adjustment".to_string(), None, - ).unwrap(); + ).expect("mainnet: handle error"); // 应该是 $1,100,000 (1,000,000 + 10%) assert_eq!(result.value_usd, 1_100_000); // 验证XTZH值:1,100,000 / 50 = 22,000 @@ -479,7 +479,7 @@ mod tests { 365 * 24 * 3600, "First valuation".to_string(), None, - ).unwrap(); + ).expect("mainnet: handle error"); // 第二次估值 system.perform_valuation( @@ -492,9 +492,9 @@ mod tests { 365 * 24 * 3600, "Second valuation".to_string(), None, - ).unwrap(); + ).expect("mainnet: handle error"); - let history = system.get_valuation_history("Test Asset").unwrap(); + let history = system.get_valuation_history("Test Asset").expect("mainnet: handle error"); assert_eq!(history.valuations.len(), 2); assert!(history.trend_percent > 0); // 价格上涨 } @@ -521,7 +521,7 @@ mod tests { 3600, // 1小时有效期 "Test valuation".to_string(), None, - ).unwrap(); + ).expect("mainnet: handle error"); assert!(system.is_valuation_valid("val001")); } diff --git a/nvm_v2/nvm-l1/src/value_scale/exchange_stability.rs b/nvm_v2/nvm-l1/src/value_scale/exchange_stability.rs index 9afdd2c..5719e5e 100644 --- a/nvm_v2/nvm-l1/src/value_scale/exchange_stability.rs +++ b/nvm_v2/nvm-l1/src/value_scale/exchange_stability.rs @@ -155,7 +155,7 @@ impl ExchangeStabilitySystem { ) { let now = std::time::SystemTime::now() .duration_since(std::time::UNIX_EPOCH) - .unwrap() + .expect("mainnet: handle error") .as_secs(); let exchange_rate = ExchangeRate { @@ -208,7 +208,7 @@ impl ExchangeStabilitySystem { pub fn record_price(&mut self, price: u128) { let now = std::time::SystemTime::now() .duration_since(std::time::UNIX_EPOCH) - .unwrap() + .expect("mainnet: handle error") .as_secs(); self.price_history.push((now, price)); @@ -226,10 +226,10 @@ impl ExchangeStabilitySystem { let now = std::time::SystemTime::now() .duration_since(std::time::UNIX_EPOCH) - .unwrap() + .expect("mainnet: handle error") .as_secs(); - let current_price = self.price_history.last().unwrap().1; + let current_price = self.price_history.last().expect("mainnet: handle error").1; // 计算24小时变化 let day_ago = now - 86400; @@ -336,7 +336,7 @@ impl ExchangeStabilitySystem { let now = std::time::SystemTime::now() .duration_since(std::time::UNIX_EPOCH) - .unwrap() + .expect("mainnet: handle error") .as_secs(); // 计算价格偏差 @@ -461,7 +461,7 @@ mod tests { ); // 转换100 XTZH到USD - let result = system.convert(100, Currency::XTZH, Currency::USD).unwrap(); + let result = system.convert(100, Currency::XTZH, Currency::USD).expect("mainnet: handle error"); assert_eq!(result, 5000); // 100 * 50 = 5000 assert_eq!(system.stats.conversion_requests, 1); } @@ -469,7 +469,7 @@ mod tests { #[test] fn test_same_currency_conversion() { let mut system = ExchangeStabilitySystem::default(); - let result = system.convert(100, Currency::USD, Currency::USD).unwrap(); + let result = system.convert(100, Currency::USD, Currency::USD).expect("mainnet: handle error"); assert_eq!(result, 100); } @@ -493,7 +493,7 @@ mod tests { system.record_price(51_000_000_000_000_000_000); system.record_price(49_000_000_000_000_000_000); - let metrics = system.calculate_stability_metrics().unwrap(); + let metrics = system.calculate_stability_metrics().expect("mainnet: handle error"); assert_eq!(metrics.current_price, 49_000_000_000_000_000_000); assert!(metrics.stability_score > 0); } @@ -511,7 +511,7 @@ mod tests { StabilityMechanism::ReserveAdjustment, "Increase reserve to stabilize price".to_string(), params, - ).unwrap(); + ).expect("mainnet: handle error"); assert!(action.success); assert_eq!(system.stats.stability_actions, 1); diff --git a/nvm_v2/nvm-l1/src/value_scale/value_anchor.rs b/nvm_v2/nvm-l1/src/value_scale/value_anchor.rs index 5b611c2..865754d 100644 --- a/nvm_v2/nvm-l1/src/value_scale/value_anchor.rs +++ b/nvm_v2/nvm-l1/src/value_scale/value_anchor.rs @@ -40,7 +40,7 @@ impl Default for SDRBasket { let now = std::time::SystemTime::now() .duration_since(std::time::UNIX_EPOCH) - .unwrap() + .expect("mainnet: handle error") .as_secs(); Self { @@ -70,7 +70,7 @@ impl GoldReserve { let total_value_usd = total_ounces * price_per_ounce; let now = std::time::SystemTime::now() .duration_since(std::time::UNIX_EPOCH) - .unwrap() + .expect("mainnet: handle error") .as_secs(); Self { @@ -88,7 +88,7 @@ impl GoldReserve { self.total_value_usd = self.total_ounces * new_price; self.last_updated = std::time::SystemTime::now() .duration_since(std::time::UNIX_EPOCH) - .unwrap() + .expect("mainnet: handle error") .as_secs(); } @@ -98,7 +98,7 @@ impl GoldReserve { self.total_value_usd = self.total_ounces * self.price_per_ounce; self.last_updated = std::time::SystemTime::now() .duration_since(std::time::UNIX_EPOCH) - .unwrap() + .expect("mainnet: handle error") .as_secs(); } @@ -112,7 +112,7 @@ impl GoldReserve { self.total_value_usd = self.total_ounces * self.price_per_ounce; self.last_updated = std::time::SystemTime::now() .duration_since(std::time::UNIX_EPOCH) - .unwrap() + .expect("mainnet: handle error") .as_secs(); Ok(()) @@ -276,7 +276,7 @@ impl ValueAnchorSystem { let now = std::time::SystemTime::now() .duration_since(std::time::UNIX_EPOCH) - .unwrap() + .expect("mainnet: handle error") .as_secs(); // 计算总储备价值 @@ -421,7 +421,7 @@ mod tests { #[test] fn test_gold_reserve_remove() { let mut reserve = GoldReserve::new(1000, 2000, 62); - reserve.remove_reserve(300).unwrap(); + reserve.remove_reserve(300).expect("mainnet: handle error"); assert_eq!(reserve.total_ounces, 700); assert_eq!(reserve.total_value_usd, 1_400_000); @@ -481,7 +481,7 @@ mod tests { let mut system = ValueAnchorSystem::new(10000, 2000, 1000000); system.update_exchange_rate(SDRCurrency::EUR, 1_200_000_000_000_000_000); - let rate = system.exchange_rates.get(&SDRCurrency::EUR).unwrap(); + let rate = system.exchange_rates.get(&SDRCurrency::EUR).expect("mainnet: handle error"); assert_eq!(*rate, 1_200_000_000_000_000_000); } } diff --git a/nvm_v2/nvm-l1/src/value_scale/xtzh_oracle.rs b/nvm_v2/nvm-l1/src/value_scale/xtzh_oracle.rs index 9cfcd54..85caaeb 100644 --- a/nvm_v2/nvm-l1/src/value_scale/xtzh_oracle.rs +++ b/nvm_v2/nvm-l1/src/value_scale/xtzh_oracle.rs @@ -191,7 +191,7 @@ impl XTZHOracle { let now = std::time::SystemTime::now() .duration_since(std::time::UNIX_EPOCH) - .unwrap() + .expect("mainnet: handle error") .as_secs(); // 检查数据是否过期 @@ -210,7 +210,7 @@ impl XTZHOracle { pub fn update_price(&mut self) -> Result<(), String> { let now = std::time::SystemTime::now() .duration_since(std::time::UNIX_EPOCH) - .unwrap() + .expect("mainnet: handle error") .as_secs(); // 检查是否需要更新 @@ -299,10 +299,10 @@ impl XTZHOracle { Ok(sum / data_points.len() as u128) } AggregationStrategy::Highest => { - Ok(data_points.iter().map(|p| p.price_usd).max().unwrap()) + Ok(data_points.iter().map(|p| p.price_usd).max().expect("mainnet: handle error")) } AggregationStrategy::Lowest => { - Ok(data_points.iter().map(|p| p.price_usd).min().unwrap()) + Ok(data_points.iter().map(|p| p.price_usd).min().expect("mainnet: handle error")) } } } @@ -311,7 +311,7 @@ impl XTZHOracle { fn calculate_24h_stats(&self) -> (u128, u128, u128) { let now = std::time::SystemTime::now() .duration_since(std::time::UNIX_EPOCH) - .unwrap() + .expect("mainnet: handle error") .as_secs(); let day_ago = now - 86400; @@ -325,8 +325,8 @@ impl XTZHOracle { return (0, 0, 0); } - let high = *recent_prices.iter().max().unwrap(); - let low = *recent_prices.iter().min().unwrap(); + let high = *recent_prices.iter().max().expect("mainnet: handle error"); + let low = *recent_prices.iter().min().expect("mainnet: handle error"); let volume = recent_prices.len() as u128 * 1000; // 简化的交易量计算 (high, low, volume) @@ -336,7 +336,7 @@ impl XTZHOracle { fn check_alerts(&mut self, price: &XTZHPrice) { let now = std::time::SystemTime::now() .duration_since(std::time::UNIX_EPOCH) - .unwrap() + .expect("mainnet: handle error") .as_secs(); // 检查价格过高 @@ -360,7 +360,7 @@ impl XTZHOracle { fn create_alert(&mut self, alert_type: AlertType, current_price: u128) { let now = std::time::SystemTime::now() .duration_since(std::time::UNIX_EPOCH) - .unwrap() + .expect("mainnet: handle error") .as_secs(); let trigger_price = match &alert_type { @@ -436,7 +436,7 @@ mod tests { fn create_test_data_point(source: PriceSource, price: u128, confidence: u8) -> PriceDataPoint { let now = std::time::SystemTime::now() .duration_since(std::time::UNIX_EPOCH) - .unwrap() + .expect("mainnet: handle error") .as_secs(); PriceDataPoint { @@ -464,7 +464,7 @@ mod tests { 90, ); - oracle.add_price_data(data_point).unwrap(); + oracle.add_price_data(data_point).expect("mainnet: handle error"); assert_eq!(oracle.stats.total_data_points, 1); } @@ -478,26 +478,26 @@ mod tests { PriceSource::OnChainDEX, 50_000_000_000_000_000_000, 90, - )).unwrap(); + )).expect("mainnet: handle error"); oracle.add_price_data(create_test_data_point( PriceSource::GoldMarket, 52_000_000_000_000_000_000, 85, - )).unwrap(); + )).expect("mainnet: handle error"); oracle.add_price_data(create_test_data_point( PriceSource::SDRBasket, 51_000_000_000_000_000_000, 88, - )).unwrap(); + )).expect("mainnet: handle error"); // 等待1秒以满足更新间隔 std::thread::sleep(std::time::Duration::from_secs(1)); - oracle.update_price().unwrap(); + oracle.update_price().expect("mainnet: handle error"); - let price = oracle.get_current_price().unwrap(); + let price = oracle.get_current_price().expect("mainnet: handle error"); assert_eq!(price.current_price_usd, 51_000_000_000_000_000_000); } @@ -510,10 +510,10 @@ mod tests { PriceSource::OnChainDEX, 60_000_000_000_000_000_000, // 超过阈值 90, - )).unwrap(); + )).expect("mainnet: handle error"); std::thread::sleep(std::time::Duration::from_secs(1)); - oracle.update_price().unwrap(); + oracle.update_price().expect("mainnet: handle error"); let unhandled_alerts = oracle.get_unhandled_alerts(); assert!(!unhandled_alerts.is_empty()); @@ -526,7 +526,7 @@ mod tests { oracle.set_source_weight(PriceSource::OnChainDEX, 50); let weight = oracle.source_weights.get(&PriceSource::OnChainDEX); - assert_eq!(*weight.unwrap(), 50); + assert_eq!(*weight.expect("mainnet: handle error"), 50); } #[test] @@ -538,7 +538,7 @@ mod tests { PriceSource::OnChainDEX, (50 + i) * 1_000_000_000_000_000_000, 90, - )).unwrap(); + )).expect("mainnet: handle error"); } let history = oracle.get_price_history(5); diff --git a/nvm_v2/nvm-l1/tests/integration_test.rs b/nvm_v2/nvm-l1/tests/integration_test.rs index d0f55b1..a2ab267 100644 --- a/nvm_v2/nvm-l1/tests/integration_test.rs +++ b/nvm_v2/nvm-l1/tests/integration_test.rs @@ -34,7 +34,7 @@ mod integration_tests { println!(" TOKEN ID: 0x{}", hex::encode(&token_id[..8])); println!(" DNA哈希: 0x{}", hex::encode(&asset_token.asset_dna[..8])); - token_registry.register(asset_token).unwrap(); + token_registry.register(asset_token).expect("mainnet: handle error"); // 4. XTZH质押(80%规则) println!("\n步骤4: XTZH质押(80%规则)"); @@ -49,12 +49,12 @@ mod integration_tests { xtzh_amount, asset_value, 1234567891, - ).unwrap(); + ).expect("mainnet: handle error"); println!(" 质押ID: 0x{}", hex::encode(&stake_id[..8])); // 验证80%规则 - let stake = staking_manager.get_stake(&stake_id).unwrap(); + let stake = staking_manager.get_stake(&stake_id).expect("mainnet: handle error"); assert!(stake.meets_80_percent_rule()); println!(" ✓ 满足80%规则"); @@ -78,10 +78,10 @@ mod integration_tests { println!(" 总供应量: {}", equity_token.total_supply); println!(" 合约地址: 0x{}", hex::encode(&equity_token.contract_address[..8])); - equity_registry.register(equity_token.clone()).unwrap(); + equity_registry.register(equity_token.clone()).expect("mainnet: handle error"); // 标记质押已用于发行 - staking_manager.mark_issued(&stake_id).unwrap(); + staking_manager.mark_issued(&stake_id).expect("mainnet: handle error"); // 6. 测试代币转账 println!("\n步骤6: 代币交易测试"); @@ -89,8 +89,8 @@ mod integration_tests { let transfer_amount = 100_000; { - let asset = equity_registry.get_mut(&equity_token.contract_address).unwrap(); - asset.transfer(&asset_owner, buyer.clone(), transfer_amount).unwrap(); + let asset = equity_registry.get_mut(&equity_token.contract_address).expect("mainnet: handle error"); + asset.transfer(&asset_owner, buyer.clone(), transfer_amount).expect("mainnet: handle error"); println!(" ✓ 转账成功: {} CBDRE", transfer_amount); println!(" 所有者余额: {}", asset.balance_of(&asset_owner)); println!(" 买家余额: {}", asset.balance_of(&buyer)); @@ -100,22 +100,22 @@ mod integration_tests { println!("\n========== 闭环验证 =========="); // 闭环1: 资产TOKEN生成 - let retrieved_token = token_registry.get(&token_id).unwrap(); + let retrieved_token = token_registry.get(&token_id).expect("mainnet: handle error"); assert_eq!(retrieved_token.asset_value, asset_value); println!("✓ 闭环1: 资产TOKEN生成 - 通过"); // 闭环2: XTZH质押机制 - let retrieved_stake = staking_manager.get_stake(&stake_id).unwrap(); + let retrieved_stake = staking_manager.get_stake(&stake_id).expect("mainnet: handle error"); assert!(retrieved_stake.is_used_for_issuance); println!("✓ 闭环2: XTZH质押机制(80%规则)- 通过"); // 闭环3: 权益化代币发行 - let retrieved_equity = equity_registry.get(&equity_token.contract_address).unwrap(); + let retrieved_equity = equity_registry.get(&equity_token.contract_address).expect("mainnet: handle error"); assert_eq!(retrieved_equity.total_supply, asset_value); println!("✓ 闭环3: 权益化代币发行 - 通过"); // 闭环4: 代币流通 - let asset = equity_registry.get(&equity_token.contract_address).unwrap(); + let asset = equity_registry.get(&equity_token.contract_address).expect("mainnet: handle error"); assert_eq!(asset.balance_of(&buyer), transfer_amount); println!("✓ 闭环4: 代币流通交易 - 通过"); @@ -155,7 +155,7 @@ mod integration_tests { 1234567890 + index as u64, ); let token_id = asset_token.token_id.clone(); - token_registry.register(asset_token).unwrap(); + token_registry.register(asset_token).expect("mainnet: handle error"); // 质押XTZH let xtzh_amount = (value * 80) / 100; @@ -165,7 +165,7 @@ mod integration_tests { xtzh_amount, *value, 1234567891 + index as u64, - ).unwrap(); + ).expect("mainnet: handle error"); // 发行代币 let symbol = format!("ASSET{}", index + 1); @@ -179,9 +179,9 @@ mod integration_tests { owner, 1234567892 + index as u64, ); - equity_registry.register(equity_token).unwrap(); + equity_registry.register(equity_token).expect("mainnet: handle error"); - staking_manager.mark_issued(&stake_id).unwrap(); + staking_manager.mark_issued(&stake_id).expect("mainnet: handle error"); println!(" ✓ 完成"); } diff --git a/xtzh-ai/src/data/features.rs b/xtzh-ai/src/data/features.rs index f092764..9179494 100644 --- a/xtzh-ai/src/data/features.rs +++ b/xtzh-ai/src/data/features.rs @@ -493,7 +493,7 @@ mod tests { fn test_macro_features_get_set() { let values = vec![0.0; INPUT_DIM]; let timestamp = chrono::Utc::now(); - let mut features = MacroFeatures::new(values, timestamp).unwrap(); + let mut features = MacroFeatures::new(values, timestamp).expect("mainnet: handle error"); features.set(Feature::GlobalManufacturingPMI, 52.5); assert_eq!(features.get(Feature::GlobalManufacturingPMI), 52.5); @@ -503,12 +503,12 @@ mod tests { fn test_quantization_roundtrip() { let values = vec![0.5; INPUT_DIM]; let timestamp = chrono::Utc::now(); - let features = MacroFeatures::new(values, timestamp).unwrap(); + let features = MacroFeatures::new(values, timestamp).expect("mainnet: handle error"); let quantized = features.quantize(); assert_eq!(quantized.len(), INPUT_DIM); - let dequantized = MacroFeatures::from_quantized(&quantized, timestamp).unwrap(); + let dequantized = MacroFeatures::from_quantized(&quantized, timestamp).expect("mainnet: handle error"); for i in 0..INPUT_DIM { assert!((dequantized.values[i] - 0.5).abs() < QUANTIZATION_SCALE as f64); } diff --git a/xtzh-ai/src/data/preprocessing.rs b/xtzh-ai/src/data/preprocessing.rs index 07c9108..3bd09dc 100644 --- a/xtzh-ai/src/data/preprocessing.rs +++ b/xtzh-ai/src/data/preprocessing.rs @@ -294,7 +294,7 @@ pub fn handle_outliers(values: &[f64], outlier_indices: &[usize]) -> Vec { }) .collect(); - valid_values.sort_by(|a, b| a.partial_cmp(b).unwrap()); + valid_values.sort_by(|a, b| a.partial_cmp(b).expect("mainnet: handle error")); let median = if valid_values.is_empty() { 0.0 } else { @@ -325,9 +325,9 @@ mod tests { (100, INPUT_DIM), (0..100 * INPUT_DIM).map(|i| i as f64).collect(), ) - .unwrap(); + .expect("mainnet: handle error"); - let params = ZScoreParams::from_training_data(&data).unwrap(); + let params = ZScoreParams::from_training_data(&data).expect("mainnet: handle error"); assert_eq!(params.mean.len(), INPUT_DIM); assert_eq!(params.std.len(), INPUT_DIM); } @@ -339,8 +339,8 @@ mod tests { let params = ZScoreParams { mean, std }; let values = vec![1.0; INPUT_DIM]; - let normalized = params.normalize(&values).unwrap(); - let denormalized = params.denormalize(&normalized).unwrap(); + let normalized = params.normalize(&values).expect("mainnet: handle error"); + let denormalized = params.denormalize(&normalized).expect("mainnet: handle error"); for i in 0..INPUT_DIM { assert_relative_eq!(denormalized[i], values[i], epsilon = 1e-10); diff --git a/xtzh-ai/src/data/sources.rs b/xtzh-ai/src/data/sources.rs index 7036e84..01e0eff 100644 --- a/xtzh-ai/src/data/sources.rs +++ b/xtzh-ai/src/data/sources.rs @@ -379,7 +379,7 @@ mod tests { assert_eq!(source.name(), "TestSource"); assert_eq!(source.supported_features().len(), 50); - let data_point = source.fetch(Feature::GlobalManufacturingPMI).await.unwrap(); + let data_point = source.fetch(Feature::GlobalManufacturingPMI).await.expect("mainnet: handle error"); assert_eq!(data_point.feature, Feature::GlobalManufacturingPMI); assert!(data_point.value > 0.0); } @@ -394,7 +394,7 @@ mod tests { let data_points = source .fetch_historical(Feature::GlobalManufacturingPMI, start, end) .await - .unwrap(); + .expect("mainnet: handle error"); assert!(data_points.len() >= 10); } @@ -406,7 +406,7 @@ mod tests { let source = manager.get_source_for_feature(Feature::GlobalManufacturingPMI); assert!(source.is_some()); - assert_eq!(source.unwrap().name(), "Mock1"); + assert_eq!(source.expect("mainnet: handle error").name(), "Mock1"); } #[tokio::test] @@ -414,14 +414,14 @@ mod tests { let mut manager = DataSourceManager::new(); manager.add_source(Box::new(MockDataSource::new("Mock1".to_string()))); - let data_points = manager.fetch_all().await.unwrap(); + let data_points = manager.fetch_all().await.expect("mainnet: handle error"); assert_eq!(data_points.len(), 50); } #[tokio::test] async fn test_health_check() { let source = MockDataSource::new("TestSource".to_string()); - let healthy = source.health_check().await.unwrap(); + let healthy = source.health_check().await.expect("mainnet: handle error"); assert!(healthy); } } diff --git a/xtzh-ai/src/error.rs b/xtzh-ai/src/error.rs index 203d87f..c05fd07 100644 --- a/xtzh-ai/src/error.rs +++ b/xtzh-ai/src/error.rs @@ -203,7 +203,7 @@ mod tests { #[test] fn test_result_type() { let result: Result = Ok(42); - assert_eq!(result.unwrap(), 42); + assert_eq!(result.expect("mainnet: handle error"), 42); let result: Result = Err(Error::InternalError("测试".to_string())); assert!(result.is_err()); diff --git a/xtzh-ai/src/model/architecture.rs b/xtzh-ai/src/model/architecture.rs index 7d993a0..9dfb62c 100644 --- a/xtzh-ai/src/model/architecture.rs +++ b/xtzh-ai/src/model/architecture.rs @@ -334,7 +334,7 @@ mod tests { fn test_input_embedding() { let embedding = InputEmbedding::new(); let x = Array1::zeros(INPUT_DIM); - let output = embedding.forward(&x).unwrap(); + let output = embedding.forward(&x).expect("mainnet: handle error"); assert_eq!(output.len(), EMBED_DIM); } @@ -342,7 +342,7 @@ mod tests { fn test_output_layer() { let output_layer = OutputLayer::new(); let context = Array1::zeros(CONTEXT_DIM); - let output = output_layer.forward(&context).unwrap(); + let output = output_layer.forward(&context).expect("mainnet: handle error"); assert!(output.weights.validate().is_ok()); assert_eq!(output.commodity_deltas.len(), COMMODITY_DELTA_DIM); @@ -360,9 +360,9 @@ mod tests { #[test] fn test_xtzh_model() { - let model = XTZHModel::new().unwrap(); - let features = MacroFeatures::new(vec![0.0; INPUT_DIM], Utc::now()).unwrap(); - let output = model.forward(&features).unwrap(); + let model = XTZHModel::new().expect("mainnet: handle error"); + let features = MacroFeatures::new(vec![0.0; INPUT_DIM], Utc::now()).expect("mainnet: handle error"); + let output = model.forward(&features).expect("mainnet: handle error"); assert!(output.weights.validate().is_ok()); assert_eq!(output.commodity_deltas.len(), COMMODITY_DELTA_DIM); @@ -370,7 +370,7 @@ mod tests { #[test] fn test_model_parameter_count() { - let model = XTZHModel::new().unwrap(); + let model = XTZHModel::new().expect("mainnet: handle error"); assert_eq!(model.parameter_count(), MODEL_PARAMETERS); } } diff --git a/xtzh-ai/src/model/attention.rs b/xtzh-ai/src/model/attention.rs index b8a7b82..2a4f948 100644 --- a/xtzh-ai/src/model/attention.rs +++ b/xtzh-ai/src/model/attention.rs @@ -206,7 +206,7 @@ mod tests { fn test_nested_attention() { let attention = NestedAttention::new(EMBED_DIM, CONTEXT_DIM); let x = Array2::zeros((10, EMBED_DIM)); // seq_len=10 - let context = attention.forward(&x).unwrap(); + let context = attention.forward(&x).expect("mainnet: handle error"); assert_eq!(context.len(), CONTEXT_DIM); } @@ -214,7 +214,7 @@ mod tests { fn test_nested_attention_with_weights() { let attention = NestedAttention::new(EMBED_DIM, CONTEXT_DIM); let x = Array2::zeros((10, EMBED_DIM)); - let (context, weights) = attention.forward_with_weights(&x).unwrap(); + let (context, weights) = attention.forward_with_weights(&x).expect("mainnet: handle error"); assert_eq!(context.len(), CONTEXT_DIM); assert_eq!(weights.feature_attention.len(), 10); @@ -225,7 +225,7 @@ mod tests { fn test_attention_weights_sum_to_one() { let attention = NestedAttention::new(EMBED_DIM, CONTEXT_DIM); let x = Array2::ones((10, EMBED_DIM)); - let (_, weights) = attention.forward_with_weights(&x).unwrap(); + let (_, weights) = attention.forward_with_weights(&x).expect("mainnet: handle error"); let feature_sum: f32 = weights.feature_attention.iter().sum(); let temporal_sum: f32 = weights.temporal_attention.iter().sum(); diff --git a/xtzh-ai/src/model/transformer.rs b/xtzh-ai/src/model/transformer.rs index e246b82..8d5ea38 100644 --- a/xtzh-ai/src/model/transformer.rs +++ b/xtzh-ai/src/model/transformer.rs @@ -425,9 +425,9 @@ mod tests { #[test] fn test_multi_head_attention() { - let mha = MultiHeadAttention::new(ATTENTION_HEADS, EMBED_DIM).unwrap(); + let mha = MultiHeadAttention::new(ATTENTION_HEADS, EMBED_DIM).expect("mainnet: handle error"); let x = Array2::zeros((10, EMBED_DIM)); // seq_len=10 - let output = mha.forward(&x).unwrap(); + let output = mha.forward(&x).expect("mainnet: handle error"); assert_eq!(output.dim(), (10, EMBED_DIM)); } @@ -435,7 +435,7 @@ mod tests { fn test_feed_forward() { let ffn = FeedForward::new(EMBED_DIM, EMBED_DIM * 4); let x = Array2::zeros((10, EMBED_DIM)); - let output = ffn.forward(&x).unwrap(); + let output = ffn.forward(&x).expect("mainnet: handle error"); assert_eq!(output.dim(), (10, EMBED_DIM)); } @@ -443,15 +443,15 @@ mod tests { fn test_layer_norm() { let ln = LayerNorm::new(EMBED_DIM); let x = Array2::ones((10, EMBED_DIM)); - let output = ln.forward(&x).unwrap(); + let output = ln.forward(&x).expect("mainnet: handle error"); assert_eq!(output.dim(), (10, EMBED_DIM)); } #[test] fn test_transformer_encoder_layer() { - let layer = TransformerEncoderLayer::new(ATTENTION_HEADS, EMBED_DIM, EMBED_DIM * 4).unwrap(); + let layer = TransformerEncoderLayer::new(ATTENTION_HEADS, EMBED_DIM, EMBED_DIM * 4).expect("mainnet: handle error"); let x = Array2::zeros((10, EMBED_DIM)); - let output = layer.forward(&x).unwrap(); + let output = layer.forward(&x).expect("mainnet: handle error"); assert_eq!(output.dim(), (10, EMBED_DIM)); } @@ -463,15 +463,15 @@ mod tests { EMBED_DIM, EMBED_DIM * 4, ) - .unwrap(); + .expect("mainnet: handle error"); let x = Array2::zeros((10, EMBED_DIM)); - let output = encoder.forward(&x).unwrap(); + let output = encoder.forward(&x).expect("mainnet: handle error"); assert_eq!(output.dim(), (10, EMBED_DIM)); } #[test] fn test_dimension_mismatch() { - let mha = MultiHeadAttention::new(ATTENTION_HEADS, EMBED_DIM).unwrap(); + let mha = MultiHeadAttention::new(ATTENTION_HEADS, EMBED_DIM).expect("mainnet: handle error"); let x = Array2::zeros((10, 128)); // 错误的维度 assert!(mha.forward(&x).is_err()); } diff --git a/xtzh-ai/src/training/loss.rs b/xtzh-ai/src/training/loss.rs index ab9c764..6eabe09 100644 --- a/xtzh-ai/src/training/loss.rs +++ b/xtzh-ai/src/training/loss.rs @@ -226,7 +226,7 @@ mod tests { fn test_deltas_loss() { let pred = vec![5, -3, 2, 0, -1, 4, -2, 1, -4, 3, 0, -5, 2, 1, -3, 0, 4, -1]; let target = vec![5, -3, 2, 0, -1, 4, -2, 1, -4, 3, 0, -5, 2, 1, -3, 0, 4, -1]; - let loss = deltas_loss(&pred, &target).unwrap(); + let loss = deltas_loss(&pred, &target).expect("mainnet: handle error"); assert!((loss - 0.0).abs() < 1e-6); } diff --git a/xtzh-ai/src/training/optimizer.rs b/xtzh-ai/src/training/optimizer.rs index 7e6cca9..5420605 100644 --- a/xtzh-ai/src/training/optimizer.rs +++ b/xtzh-ai/src/training/optimizer.rs @@ -125,8 +125,8 @@ impl AdamOptimizer { let t = self.state.t as f32; // 获取状态 - let m = self.state.m.get_mut(name).unwrap(); - let v = self.state.v.get_mut(name).unwrap(); + let m = self.state.m.get_mut(name).expect("mainnet: handle error"); + let v = self.state.v.get_mut(name).expect("mainnet: handle error"); // 更新参数 let mut updated_params = Vec::with_capacity(params.len()); @@ -251,7 +251,7 @@ mod tests { let params = vec![1.0, 2.0, 3.0]; let grads = vec![0.1, 0.2, 0.3]; - let updated = optimizer.step("test", ¶ms, &grads).unwrap(); + let updated = optimizer.step("test", ¶ms, &grads).expect("mainnet: handle error"); assert_eq!(updated.len(), 3); // 参数应该减小(因为梯度为正) @@ -270,7 +270,7 @@ mod tests { // 多步更新 for _ in 0..10 { - params = optimizer.step("test", ¶ms, &grads).unwrap(); + params = optimizer.step("test", ¶ms, &grads).expect("mainnet: handle error"); } // 参数应该持续减小 diff --git a/xtzh-ai/src/training/validator.rs b/xtzh-ai/src/training/validator.rs index ae25d16..e80c30c 100644 --- a/xtzh-ai/src/training/validator.rs +++ b/xtzh-ai/src/training/validator.rs @@ -406,7 +406,7 @@ mod tests { }, ]; - let (metrics, _) = validator.validate(&predictions, &targets).unwrap(); + let (metrics, _) = validator.validate(&predictions, &targets).expect("mainnet: handle error"); assert!(metrics.avg_loss > 0.0); } }