//! NAC SDK 基本使用示例 //! //! 本示例演示如何使用NAC SDK的基本功能,包括: //! - 创建适配器 //! - 使用L0原生层生成密钥对和地址 //! - 使用L1协议层查询余额 //! - 使用L4 AI层进行合规检查 //! //! 运行示例: //! ```bash //! cargo run --example basic_usage //! ``` use nac_sdk::adapters::{NACAdapter, config::NACConfig}; #[tokio::main] async fn main() -> Result<(), Box> { println!("=== NAC SDK 基本使用示例 ===\n"); // 1. 创建配置 println!("1. 创建配置..."); let config = NACConfig::default(); println!(" ✓ 配置创建成功\n"); // 2. 创建适配器 println!("2. 创建NAC适配器..."); let adapter = NACAdapter::new(&config).await?; println!(" ✓ 适配器创建成功\n"); // 3. 使用L0原生层 println!("3. 使用L0原生层 - 生成密钥对和地址"); // 生成密钥对 let (private_key, public_key) = adapter.l0().generate_keypair(); println!(" ✓ 密钥对生成成功"); println!(" 私钥: {}", hex::encode(&private_key)); println!(" 公钥: {}", hex::encode(&public_key)); // 从公钥生成地址 let address = adapter.l0().address_from_public_key(&public_key)?; println!(" ✓ 地址生成成功"); println!(" 地址: {}\n", hex::encode(&address)); // 验证地址 let is_valid = adapter.l0().validate_address(&address)?; println!(" ✓ 地址验证: {}\n", if is_valid { "有效" } else { "无效" }); // 4. 使用L0原生层 - 哈希操作 println!("4. 使用L0原生层 - 哈希操作"); let data = b"Hello, NAC!"; let hash = adapter.l0().hash_sha3_384(data); println!(" ✓ SHA3-384哈希计算成功"); println!(" 数据: {}", String::from_utf8_lossy(data)); println!(" 哈希: {}\n", hex::encode(&hash)); // 5. 使用L0原生层 - 签名和验证 println!("5. 使用L0原生层 - 签名和验证"); let message = b"This is a test message"; let signature = adapter.l0().sign(&private_key, message)?; println!(" ✓ 签名成功"); println!(" 消息: {}", String::from_utf8_lossy(message)); println!(" 签名: {}", hex::encode(&signature)); let is_valid = adapter.l0().verify(&public_key, message, &signature)?; println!(" ✓ 签名验证: {}\n", if is_valid { "有效" } else { "无效" }); // 6. 使用L1协议层 - GNACS编码 println!("6. 使用L1协议层 - GNACS资产分类"); use nac_sdk::primitives::{AssetCategory, Jurisdiction, ComplianceLevel}; let gnacs_code = adapter.l1().encode_gnacs( AssetCategory::RealEstate, Jurisdiction::US, ComplianceLevel::High )?; println!(" ✓ GNACS编码成功"); println!(" 资产类别: 房地产"); println!(" 管辖区: 美国"); println!(" 合规级别: 高"); println!(" GNACS代码: {}\n", gnacs_code); // 解码GNACS let (category, jurisdiction, compliance) = adapter.l1().decode_gnacs(&gnacs_code)?; println!(" ✓ GNACS解码成功"); println!(" 资产类别: {:?}", category); println!(" 管辖区: {:?}", jurisdiction); println!(" 合规级别: {:?}\n", compliance); // 7. 演示完整的工作流程 println!("7. 演示完整的工作流程"); println!(" 场景: 用户Alice想要在NAC链上注册一个房地产资产\n"); // 7.1 生成Alice的密钥对 println!(" 7.1 生成Alice的密钥对"); let (alice_private_key, alice_public_key) = adapter.l0().generate_keypair(); let alice_address = adapter.l0().address_from_public_key(&alice_public_key)?; println!(" ✓ Alice的地址: {}\n", hex::encode(&alice_address)); // 7.2 对资产数据进行哈希 println!(" 7.2 对资产数据进行哈希"); let asset_data = b"Property at 123 Main St, New York, NY 10001"; let asset_hash = adapter.l0().hash_sha3_384(asset_data); println!(" ✓ 资产数据哈希: {}\n", hex::encode(&asset_hash)); // 7.3 Alice签名资产数据 println!(" 7.3 Alice签名资产数据"); let asset_signature = adapter.l0().sign(&alice_private_key, asset_data)?; println!(" ✓ 签名成功: {}\n", hex::encode(&asset_signature)); // 7.4 验证签名 println!(" 7.4 验证签名"); let is_valid = adapter.l0().verify(&alice_public_key, asset_data, &asset_signature)?; println!(" ✓ 签名验证: {}\n", if is_valid { "通过" } else { "失败" }); // 7.5 生成GNACS代码 println!(" 7.5 为资产生成GNACS代码"); let asset_gnacs = adapter.l1().encode_gnacs( AssetCategory::RealEstate, Jurisdiction::US, ComplianceLevel::High )?; println!(" ✓ GNACS代码: {}\n", asset_gnacs); println!("=== 示例完成 ==="); println!("\n提示: 这只是基本功能演示。"); println!(" 查看其他示例了解更多高级功能:"); println!(" - asset_onboarding.rs: 完整的资产上链流程"); println!(" - trading.rs: 交易所交易示例"); println!(" - governance.rs: 链上治理示例"); Ok(()) }