//! NAC SDK 链上治理示例 //! //! 本示例演示如何使用NAC SDK进行链上治理: //! 1. 提交宪法修正案提案 //! 2. 提交协议升级提案 //! 3. 投票 //! 4. 查询提案状态 //! 5. 查询投票结果 //! //! 运行示例: //! ```bash //! cargo run --example governance //! ``` use nac_sdk::adapters::{NACAdapter, config::NACConfig}; #[tokio::main] async fn main() -> Result<(), Box> { println!("=== NAC 链上治理示例 ===\n"); println!("场景: NAC社区想要提交一个宪法修正案提案\n"); // 1. 初始化 println!("【步骤1】初始化NAC SDK"); let config = NACConfig::default(); let adapter = NACAdapter::new(&config).await?; println!("✓ SDK初始化成功\n"); // 2. 生成提案者的密钥对 println!("【步骤2】生成提案者Carol的密钥对"); let (carol_private_key, carol_public_key) = adapter.l0().generate_keypair(); let carol_address = adapter.l0().address_from_public_key(&carol_public_key)?; println!("✓ Carol的地址: {}\n", hex::encode(&carol_address)); // 3. 准备宪法修正案提案 println!("【步骤3】准备宪法修正案提案"); let proposal_title = "NAC宪法修正案 #001: 增加RWA资产准入标准"; let proposal_description = r#" 提案内容: --------- 本提案建议在NAC宪法中增加以下RWA资产准入标准: 1. 资产估值要求: - 最低估值: $100,000 USD - 估值报告必须由认证评估机构出具 - 估值有效期: 6个月 2. 合规要求: - 必须通过NAC AI合规系统审查 - 必须符合所在管辖区的法律法规 - 必须提供完整的产权证明文件 3. 风险评估: - 总体风险评级不得高于"中" - 必须披露所有已知风险 - 必须提供风险缓解措施 4. 信息披露: - 必须提供详细的资产描述 - 必须披露资产的历史交易记录 - 必须定期更新资产状态 提案理由: --------- 随着NAC链上RWA资产数量的增加,我们需要建立更严格的准入标准, 以保护投资者利益,维护NAC生态系统的健康发展。 投票规则: --------- - 投票期: 7天 - 通过条件: 超过50%的投票权支持 - 最低参与率: 30% "#; println!("✓ 提案准备完成"); println!(" 标题: {}", proposal_title); println!(" 类型: 宪法修正案\n"); // 4. 提交提案 println!("【步骤4】提交提案到链上治理系统"); println!("正在提交提案..."); // let proposal_id = adapter.l2().submit_proposal( // proposal_title, // proposal_description, // ProposalType::Constitutional // ).await?; let proposal_id = "PROP-2024-001"; println!("✓ 提案提交成功"); println!(" 提案ID: {}", proposal_id); println!(" 提案者: {}", hex::encode(&carol_address)); println!(" 提交时间: 2026-02-19 10:00:00"); println!(" 投票开始: 2026-02-19 10:00:00"); println!(" 投票结束: 2026-02-26 10:00:00\n"); // 5. 查询提案详情 println!("【步骤5】查询提案详情"); println!("正在查询提案..."); // let proposal = adapter.l2().get_proposal_details(proposal_id).await?; println!("✓ 提案详情 (模拟):"); println!(" 提案ID: {}", proposal_id); println!(" 标题: {}", proposal_title); println!(" 状态: 投票中 (Voting)"); println!(" 当前支持率: 0%"); println!(" 当前反对率: 0%"); println!(" 参与率: 0%\n"); // 6. 投票者1: Alice投赞成票 println!("【步骤6】投票者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的地址: {}", hex::encode(&alice_address)); println!(" Alice的投票权: 100,000 NAC"); println!(" 正在投票..."); // adapter.l2().vote(proposal_id, VoteOption::Yes).await?; println!(" ✓ Alice投票成功: 赞成\n"); // 7. 投票者2: Bob投赞成票 println!("【步骤7】投票者Bob投赞成票"); let (bob_private_key, bob_public_key) = adapter.l0().generate_keypair(); let bob_address = adapter.l0().address_from_public_key(&bob_public_key)?; println!(" Bob的地址: {}", hex::encode(&bob_address)); println!(" Bob的投票权: 150,000 NAC"); println!(" 正在投票..."); // adapter.l2().vote(proposal_id, VoteOption::Yes).await?; println!(" ✓ Bob投票成功: 赞成\n"); // 8. 投票者3: Dave投反对票 println!("【步骤8】投票者Dave投反对票"); let (dave_private_key, dave_public_key) = adapter.l0().generate_keypair(); let dave_address = adapter.l0().address_from_public_key(&dave_public_key)?; println!(" Dave的地址: {}", hex::encode(&dave_address)); println!(" Dave的投票权: 80,000 NAC"); println!(" 正在投票..."); // adapter.l2().vote(proposal_id, VoteOption::No).await?; println!(" ✓ Dave投票成功: 反对\n"); // 9. 投票者4: Eve弃权 println!("【步骤9】投票者Eve弃权"); let (eve_private_key, eve_public_key) = adapter.l0().generate_keypair(); let eve_address = adapter.l0().address_from_public_key(&eve_public_key)?; println!(" Eve的地址: {}", hex::encode(&eve_address)); println!(" Eve的投票权: 70,000 NAC"); println!(" 正在投票..."); // adapter.l2().vote(proposal_id, VoteOption::Abstain).await?; println!(" ✓ Eve投票成功: 弃权\n"); // 10. 查询实时投票结果 println!("【步骤10】查询实时投票结果"); println!("正在查询投票结果..."); // let vote_result = adapter.l2().get_vote_result(proposal_id).await?; println!("✓ 投票结果 (模拟):"); println!(" 提案ID: {}", proposal_id); println!(" 总投票权: 1,000,000 NAC"); println!(" 已投票权: 400,000 NAC"); println!(" 参与率: 40%"); println!("\n 投票分布:"); println!(" ┌─────────────────────────────────────┐"); println!(" │ 赞成: 250,000 NAC (62.5%) │"); println!(" │ ████████████████████████████ │"); println!(" ├─────────────────────────────────────┤"); println!(" │ 反对: 80,000 NAC (20%) │"); println!(" │ █████████ │"); println!(" ├─────────────────────────────────────┤"); println!(" │ 弃权: 70,000 NAC (17.5%) │"); println!(" │ ████████ │"); println!(" └─────────────────────────────────────┘\n"); // 11. 查询提案状态 println!("【步骤11】查询提案当前状态"); println!("正在查询提案状态..."); // let status = adapter.l2().get_proposal_status(proposal_id).await?; println!("✓ 提案状态 (模拟):"); println!(" 提案ID: {}", proposal_id); println!(" 状态: 投票中 (Voting)"); println!(" 剩余时间: 6天14小时"); println!(" 当前趋势: 很可能通过 ✓"); println!(" 预计通过时间: 2026-02-26 10:00:00\n"); // 12. 模拟投票期结束 println!("【步骤12】模拟投票期结束"); println!("假设投票期已结束,最终结果如下:"); println!("\n✓ 最终投票结果:"); println!(" 提案ID: {}", proposal_id); println!(" 总投票权: 1,000,000 NAC"); println!(" 已投票权: 650,000 NAC"); println!(" 参与率: 65% (超过最低参与率30%)"); println!("\n 最终投票分布:"); println!(" ┌─────────────────────────────────────┐"); println!(" │ 赞成: 420,000 NAC (64.6%) │"); println!(" │ ████████████████████████████████ │"); println!(" ├─────────────────────────────────────┤"); println!(" │ 反对: 150,000 NAC (23.1%) │"); println!(" │ ███████████ │"); println!(" ├─────────────────────────────────────┤"); println!(" │ 弃权: 80,000 NAC (12.3%) │"); println!(" │ ██████ │"); println!(" └─────────────────────────────────────┘"); println!("\n 结果: 提案通过 ✓"); println!(" 原因: 支持率64.6% > 50%,参与率65% > 30%\n"); // 13. 提案执行 println!("【步骤13】提案执行"); println!("提案已通过,正在执行..."); println!("✓ 提案执行成功"); println!(" 执行时间: 2026-02-26 10:00:00"); println!(" 执行内容: NAC宪法已更新,新的RWA资产准入标准已生效"); println!(" 生效时间: 立即生效\n"); // 14. 提交协议升级提案 println!("【步骤14】提交协议升级提案"); let upgrade_proposal_title = "NAC协议升级 #002: CBPP共识优化"; let upgrade_proposal_description = r#" 提案内容: --------- 本提案建议对CBPP共识协议进行以下优化: 1. 区块时间优化: - 将区块时间从5秒降低到3秒 - 提高交易确认速度 2. Gas费用优化: - 降低基础Gas费用20% - 降低用户使用成本 3. 宪法验证优化: - 优化宪法验证算法 - 提高验证效率50% 预期效果: --------- - 交易确认速度提升40% - Gas费用降低20% - 网络吞吐量提升30% "#; println!("正在提交协议升级提案..."); // let upgrade_proposal_id = adapter.l2().submit_proposal( // upgrade_proposal_title, // upgrade_proposal_description, // ProposalType::ProtocolUpgrade // ).await?; let upgrade_proposal_id = "PROP-2024-002"; println!("✓ 协议升级提案提交成功"); println!(" 提案ID: {}", upgrade_proposal_id); println!(" 标题: {}", upgrade_proposal_title); println!(" 类型: 协议升级\n"); // 15. 完成 println!("=== 链上治理示例完成 ===\n"); println!("总结:"); println!("✓ 成功提交宪法修正案提案 (PROP-2024-001)"); println!("✓ 提案获得64.6%的支持率,已通过并执行"); println!("✓ 成功提交协议升级提案 (PROP-2024-002)"); println!("\nNAC链上治理的特点:"); println!("- 完全去中心化的决策机制"); println!("- 透明的投票过程"); println!("- 自动执行通过的提案"); println!("- 保护少数派权益(需要最低参与率)"); println!("\n下一步:"); println!("- 社区可以继续提交新的提案"); println!("- 代币持有者可以参与投票"); println!("- 通过的提案将自动执行"); Ok(()) }