133 lines
5.2 KiB
Rust
133 lines
5.2 KiB
Rust
//! 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<dyn std::error::Error>> {
|
||
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(())
|
||
}
|