恒美微站 Logo 恒美微站
  • 首页
  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心
  • 联系我们

Solana DID 方案对比:Solana Name Service 与 Civic Pass 的技术实现与场景适配

  • 首页
  • 资讯中心
  • /
  • Solana DID 方案对比:Solana Name Service 与 Civic Pass 的技术实现与场景适配

相关资讯

终极ncmdump指南:快速解密网易云音乐NCM格式的完整解决方案 2026/8/2 18:45:59
TDA3x时钟系统设计:从晶体电路到DPLL配置的嵌入式实战指南 2026/8/2 18:46:00
75 个 Agent 怎么协作?我的五层演化之路 2026/8/2 18:46:00

最新资讯

LS555 无锡曜硅|DIP8 国产 555 时基电路,定时器、振荡器、PWM 发生硬件设计
OpenCV ncnn 人脸识别(一)
Python基础_体系
Oracle的nlssort函数
UE5、Unity、ThreeJS怎么选?数字孪生引擎选型干货
E2E_端到端的ViT_Pytorch实现

今日推荐

Python random 模块常用函数详解:从入门到实战
Hermes接入团队协作后,我推翻了三个效率假设
免费AI大模型调教指南:打造专属网文写作助手

本周热门

Nextcloud 桌面客户端:把同步交给它,你只管改文件
如何将 HTML 转成 Word 文档且格式不丢失?html-to-docx 使用教程
Anki 批量操作卡片完整指南:一次搞定上千张,不再逐张修改

本月精选

如何用DamaiHelper实现演唱会门票的智能自动化抢购:完整技术解决方案指南
第4篇:59 倍性能差距的索引瓶颈定位——一次教科书级的全表扫描调优
终极歌词批量下载神器:5分钟解决离线音乐库歌词同步难题

Solana DID 方案对比:Solana Name Service 与 Civic Pass 的技术实现与场景适配

发布时间:2026/8/26 16:22:51
Solana DID 方案对比:Solana Name Service 与 Civic Pass 的技术实现与场景适配 Solana DID 方案对比Solana Name Service 与 Civic Pass 的技术实现与场景适配一、Solana 生态的 DID两条不同路径Solana 的去中心化身份方案可以归为两条技术路线以 Solana Name ServiceSNS为代表的人类可读标识路线和以 Civic Pass 为代表的可验证凭证路线。二者解决的问题不同技术实现不同适用的场景也不同。SNS 解决的是地址不可读的问题——把8xH4F...pQ9m映射为alice.sol降低用户交互的认知门槛。它的设计类似 ENS但针对 Solana 的高性能做了适配域名的解析、反向解析和子域名管理都通过 Solana Program智能合约实现利用了 Solana 的 Account 模型和 CPICross-Program Invocation。Civic Pass 解决的是身份可验证的问题——证明一个地址通过了 KYC、反洗钱AML或年龄验证。它使用了一个链下身份验证网络Identity Network验证节点对用户的身份文档进行审核审核通过后在 Solana 链上发放一个不可转让的 NFTSoulbound Token作为已验证的凭证。两个方案不是竞争关系而是上下游关系——用户可能先通过 Civic Pass 验证身份再用 SNS 绑定一个易记的名字。二、技术架构对比SNS 的域名管理合约本质是一个注册表Registry。核心数据结构是一个 PDAProgram Derived Address以域名 hash 为种子// SNS 域名记录的 PDA 派生 let (name_record_pda, _bump) Pubkey::find_program_address( [ bname_record, hashed_name, // 域名的 SHA256 parent_name_class, // 父域名类别如 .sol 根 ], sns_program_id, );域名记录中存储了域名所有者、解析目标地址、TTL 和自定义键值对数据。SNS 的一个优势是支持子域名sub.alice.sol这在企业级 DID 场景中很有用——公司可以拥有company.sol然后给每个员工分配employee.company.sol。Civic Pass 的核心是GatewayProgram。Pass 本身是一个具有多种状态的生命周期对象ACTIVE验证通过pass 有效REVOKED被撤销用户自行撤销或验证节点发现伪造FROZEN被冻结监管要求或安全事件触发EXPIRED过期部分类型的 Pass 有时效性Pass 的类型包括 ID 验证 PassKYC、年龄验证 Pass、唯一性 Pass抗 Sybil和活跃度 PassCAPTCHA 替代。三、代码实现关键逻辑// SNS 客户端域名解析与反向解析 import { Connection, PublicKey } from solana/web3.js; import { NameRegistryState, getHashedName, getNameAccountKey } from bonfida/spl-name-service; /** * SNS 域名服务封装 * * 设计决策在客户端维护一个解析结果的内存缓存 Map。 * Solana 的 RPC 节点对 getAccountInfo 调用有速率限制免费层 ~25 req/s * 一个页面上渲染 50 个地址的 SNS 名称可能触发 50 次 RPC 调用 * 不缓存的情况下很容易被限流。 * 缓存使用 LRU 策略容量上限 1000避免内存膨胀。 */ class SNSResolver { private connection: Connection; // LRU 缓存域名 → 地址映射 private cache: Mapstring, { address: string; ttl: number }; constructor(rpcUrl: string) { this.connection new Connection(rpcUrl); this.cache new Map(); } async resolve(domain: string): Promisestring | null { // 检查缓存并验证 TTL const cached this.cache.get(domain); if (cached Date.now() cached.ttl) { return cached.address; } try { const hashedName await getHashedName(domain.replace(.sol, )); const nameAccountKey await getNameAccountKey( hashedName, undefined, // 根域名类别 new PublicKey(namesLPneVpdA9RozvRuUvQnHPhHhDKQAuBnFuLfM2TF) // SNS Program ID ); const { registry } await NameRegistryState.retrieve( this.connection, nameAccountKey ); this.cache.set(domain, { address: registry.owner.toBase58(), ttl: Date.now() 300_000 // 5分钟 TTL }); return registry.owner.toBase58(); } catch { return null; } } async reverse(publicKey: string): Promisestring | null { // 反向解析需要遍历链上记录Solana 没有内置的反向解析表 // 实际使用 Bonfida 的 API 端点进行反向解析 const response await fetch( https://sns-api.bonfida.com/v2/reverse/${publicKey} ); if (!response.ok) return null; const data await response.json(); return data.result || null; } /** * 批量解析优化一次查询 50 个地址的 SNS 名称 * * 设计决策批量解析使用 RPC 的 getMultipleAccountsInfo 一次性获取 * 所有域名记录而非逐个请求。RPC 级别的批量调用比客户端并行调用的 * 吞吐量高约 3 倍因为省去了多个 HTTP 连接的握手开销。 */ async resolveBatch(addresses: string[]): PromiseMapstring, string | null { const results new Mapstring, string | null(); // 一次获取所有地址的账户信息 const accounts await this.connection.getMultipleAccountsInfo( addresses.map(a new PublicKey(a)) ); // 反向解析匹配 SNS 域名记录格式 for (let i 0; i addresses.length; i) { if (accounts[i]) { const name this.tryParseSNSRecord(accounts[i]!.data); results.set(addresses[i], name); } } return results; } } // Civic Pass 验证客户端 import { Program, AnchorProvider } from coral-xyz/anchor; interface CivicPassState { address: PublicKey; state: ACTIVE | REVOKED | FROZEN | EXPIRED; expiry: number; gatekeeperNetwork: PublicKey; } /** * Civic Pass 验证工具 * * 设计决策每个 Gatekeeper Network 代表不同的验证标准 * 如 Civic Default KYC vs 某DAO的自定义KYC。 * DApp 应该指定自己信任的 Gatekeeper Network * 而不是信任所有类型的 Pass。 * 这类似于 TLS 中的证书颁发机构信任链——你信任哪些 CA * 取决于你的安全策略。 */ class CivicPassVerifier { static async verify( connection: Connection, userAddress: PublicKey, gatekeeperNetwork: PublicKey ): Promise{ valid: boolean; reason?: string } { // 1. 查找用户持有的 Pass Token 账户 const tokenAccounts await connection.getParsedTokenAccountsByOwner( userAddress, { programId: TOKEN_PROGRAM_ID } ); // 2. 筛选出 Civic Pass Mint 对应的 Token 账户 const civicPassMint GATEKEEPER_NETWORK_MINTS[gatekeeperNetwork.toBase58()]; const passAccount tokenAccounts.value.find( acc acc.account.data.parsed.info.mint civicPassMint ); if (!passAccount) { return { valid: false, reason: No Civic Pass found for this network }; } // 3. 查询 Pass 状态 const passState await getPassState(connection, new PublicKey( passAccount.pubkey )); if (passState.state ! ACTIVE) { return { valid: false, reason: Pass state is ${passState.state} }; } if (passState.expiry passState.expiry Date.now() / 1000) { return { valid: false, reason: Pass has expired }; } return { valid: true }; } }四、两种方案的局限与协同SNS 的局限域名注册需要 SOL目前.sol域名的年费约为 $5-$20根据域名长度。较高的注册成本反而成了稀缺性保证——不太可能被批量抢注。域名记录是公开的任何人都能查询alice.sol绑定的地址这在某些隐私敏感的场景下是不可接受的。SNS 不验证身份它只记录这个域名指向这个地址域名持有者可能是机器人、是 DAO 金库、或是一个 AI Agent。Civic Pass 的局限Pass 的发放依赖链下验证节点的人工审核引入了信任假设。Civic 的验证网络是联盟制的不是无许可的。隐私问题Civic 声称不存储用户数据但验证过程中用户需要提交真实的身份文档。如果验证节点被攻击这些文档可能泄露。Pass 的单一性不足一个真实的人可能持有多个 Pass不同身份、不同国家一人一 Pass的唯一性保证不如 Worldcoin 的虹膜方案可靠。协同使用SNS Civic Pass 可以组合成一个两级 DID 系统。第一级Civic Pass 验证你是真实的人身份断言。第二级SNS 给这个验证过的身份绑定人类可读的名字身份标签。DApp 可以要求用户在拥有 Civic Pass 的前提下注册 SNS 域名实现命名空间内的唯一性保障。五、总结Solana 的 DID 生态走的是实用主义路线。SNS 解决可读性Civic Pass 解决可验证性——两者各司其职比试图用一个协议解决所有问题更务实。SNS 的技术实现精简高效利用 Solana 的 Account 模型和 PDA 派生做域名注册表复杂度低、Gas 费可控。Civic Pass 的技术重心在链下验证网络的设计——如何在不信任单个验证节点的情况下形成已验证的共识。两者的结合为 Solana 生态提供了一套完整的 DID 基础设施从你是谁到别人如何称呼你形成了去中心化身份的完整闭环。

关于恒美微站

恒美微站专注于为个体商户、工作室提供极简自助建站服务,让每个人都能轻松拥有专业网站。

快速链接

  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心

服务项目

  • 可视化建站
  • 拖拽编辑
  • 主题定制
  • SEO 优化
  • 网站托管

联系方式

  • 📍 地址:北京市朝阳区建国路 88 号
  • 📞 电话:400-888-8888
  • ✉️ 邮箱:info@hmyw.cn
  • 🕐 时间:周一至周日 9:00-18:00

© 2024 恒美微站 hmyw.cn 版权所有 | 京 ICP 备 12345678 号