BlockSec 审计香港首个持牌稳定币 HKDAP:KYC 控制失效、单签可铸币销毁,与金管局指引抵触

BlockSec 审计香港首个持牌稳定币 HKDAP:KYC 控制失效、单签可铸币销毁,与金管局指引抵触

Aiying 艾盈是一家专注于传统金融及Web3的合规咨询服务机构,本文为团队原创,转载需授权。

香港首个持牌港元稳定币 HKDAP 上线刚满一天,就迎来了一场公开的”链上体检”。8 月 12 日,由渣打银行(香港)牵头、联合 HKT 与 Animoca Brands 合资的 Anchorpoint 启动 HKDAP 首阶段机构发行;8 月 13 日,区块链安全公司 BlockSec 发布了对它部署在以太坊主网上合约的完整审计,结论直白得有些刺眼:已上线、已获牌照,却尚未准备就绪。审计认定其 KYC 与撤销控制”写了但没生效”、治理高度集中到单把私钥即可铸币与冻结,且多处链上属性与香港金管局(HKMA)自己的《持牌稳定币发行人监管指引》正面抵触。

发生了什么

HKDAP 的分量:首批牌照、首个落地

HKDAP(HKD At Par)是香港《稳定币条例》(2025 年 8 月 1 日生效)发牌制度下最早落地发行的稳定币之一。Anchorpoint 于 2026 年 4 月 10 日与汇丰银行同批获 HKMA 发出仅有的两张稳定币发行人牌照(36 家申请仅 2 家获批),8 月 12 日正式进入商业运营,1:1 锚定港元、储备由渣打银行独立托管,首阶段通过 OSL 与 HashKey 两大持牌交易所作为授权分销商触达机构与专业投资者。

为什么这份合约能被审计:源码公开

与大多数银行产品不同,HKDAP 运行在以太坊主网上,合约源码已在 Etherscan 验证、任何人都能读到。BlockSec 沿着代理合约(0x8762…d6cA)把整套系统在链上梳理了一遍——代币代理、实现合约 ControllableAHKD、治理合约、顶层角色注册表,以及黑名单、冻结、KYC 激活、存款白名单、赎回白名单五个合规模块——并沿两个维度检查:作为软件是否达到生产级,作为受监管稳定币其链上行为是否符合 HKMA 指引。两个维度的结论一致:不达标。

三大核心发现

发现一:KYC 与撤销控制失效,”失效即放行”

这是最严重的一类问题。按监管要求,面向 B 端用户的稳定币至少要在转账时强制 KYC、并在身份提供方或持有人被移除时能撤销其权限。HKDAP 的这套路径在三个互不相关的地方分别断掉:其一,isActive 函数中用于”提供方级撤销”的循环条件写反(entryCount > entryCount 恒为假,循环体永不执行),且用比较运算符 == 替代了赋值 =,导致注销被攻破的 KYC 提供方后、它担保过的钱包仍可正常转账——这是典型的 fail-open(默认放行);其二,unregisterVerifier 只移动了链表节点、从未把提供方状态改为 INACTIVE,被”注销”的验证方仍能继续登记持有人,二次注销还会因下溢直接 revert;其三,KYC 证据参数传入 _checkKYCProof 后从未被读取,函数只确认提供方处于激活状态就返回 true,任何证据(哪怕空字符串)都能通过。叠加之下,一款稳定币最该守住的能力——既能把关、也能撤销——形同虚设。此外,免检额度 freeTransferLimit 只按单笔金额判、不累计,拆单即可绕过。

发现二:治理高度集中,单把私钥可铸币销毁

BlockSec 把链上六个签名角色记为 A 到 F(部署配置里它们只是 32 字节哈希,无一对应源码中具名角色)。逐条读取授权矩阵后发现:增发(mintToDeposit)、销毁(burnFrom)、冻结(freeze)、KYC 停用全部是单签,归角色 C 一把钥匙;暂停、销毁黑名单资金、验证方登记是角色 D 单签;拉黑、解冻是角色 F 单签。真正需要第二签的,只有升级合约和修改配置。更不对称的是:冻结和拉黑只需一个签名,解除拉黑却要两个签名——限制账户比释放账户更容易。且系统没有时间锁,最后一签落地的瞬间操作在同一笔交易内原子完成,没有审查或取消窗口。更触目的是,角色 C 的持有人同时握着另外五个角色——包括 KYC 验证方管理权限和全部四个审计角色,一把钥匙被攻破即发行、冻结、KYC 管理同时沦陷。

发现三:与 HKMA 指引条文正面抵触

BlockSec 将合约链上行为与 HKMA《持牌稳定币发行人监管指引》逐条对照,指出多处抵触:指引 6.5.3 要求”高风险操作不得单方执行”(多签 + 速度限制/时间锁等缓解),而铸币、销毁、暂停、冻结均单签且无时间锁;指引 6.5.4 要求职责隔离且授权可”立即撤销”,而一个账户持有六个角色、已计入的签名在吊销后仍有效;指引 6.5.5 要求每次代码变更经第三方审计且”正确、一致、无漏洞”,而部署中的实现正是 Part 1 全部缺陷所在;此外销毁黑名单资金时合约向 address(this)(而非 address(0))发转账事件、但合约本身从不持有代币,会误导索引器并使从事件重建的总供给与链上不符,与指引 2.2.3″冻结/销毁币保持完全支持且可对账”相抵。

为什么重要

“牌照是宣称,代码才是实现”

这件事最值得从业者记住的一点,是公链彻底改变了合规的”裁决地点”。传统金融里,一家持牌机构的合规与否写在内部制度、审计报告和监管检查里,外部人无从验证;而一旦稳定币把发行、转账、冻结的规则写进公开可读、且会严格按内容执行的智能合约,牌照就只是宣称,部署的合约才是那套宣称的实现——而且它对所有人公开,任何人都可以像 BlockSec 一样逐条核对它到底有没有做到。HKDAP 的案例第一次把”受监管稳定币的合规可验证性”这个命题,摆到了香港乃至全球监管和市场的桌面上。

根本原因:从零重造了成熟组件

BlockSec 点出所有缺陷背后的一条共同主线:这套合约几乎从零重造了生态里早已成熟、且经大规模审计的基础元件——自研的多签/审批引擎、手写的访问控制层、自研链表集合、改动过的代理、手写的 ERC-20。绝大多数缺陷都出在这些定制机制里,而非复用标准组件的部分。每一层定制抽象,同时就是额外的 gas 开销、攻击面和升级风险。

怎么看

  • 对持牌发行人的警示:牌照不等于落地即合规。在公链上,”高风险操作不得单方执行””职责隔离””授权可立即撤销”这些监管要求是否满足,是由部署代码里的角色检查决定的,必须经得起链上公开验证,而不是停留在书面制度里。
  • “Beta Access”标签不改变风险画像:合约已在以太坊主网上线、由真实私钥管理、代表对港元的真实债权,无论挂什么标签,都应按生产标准来要求——这是 BlockSec 的明确判断,也应是行业的共识。
  • 开源验证是正确默认:BlockSec 特别肯定 Anchorpoint 在主网部署并验证源码的做法,正是这一步让这次公开审查成为可能。对持牌稳定币而言,源码公开不应该是可选项,而应成为信任的基础设施。
  • 问题可解,且解法现成:恢复高风险操作的多签、执行与审计分离、修复 KYC 撤销逻辑、统一转账检查、移除调试代码、每次升级前引入第三方审计——BlockSec 列的这些修复项,大多对应生态里现成的、已被验证的组件。HKDAP 的差距不是能力问题,而是工程选择问题。

一句话总结

香港首个持牌港元稳定币 HKDAP 上线次日,BlockSec 的公开链上审计认定它”已上线、已获牌照、尚未准备就绪”:KYC 与撤销控制写了却没生效、单把私钥即可铸币冻结、且多处与金管局指引正面抵触;它第一次把”受监管稳定币的合规可验证性”摆上台面——在公链上,牌照只是宣称,部署的代码才是实现,而 HKDAP 的差距在于从零重造了成熟组件,好在修复路径清晰且现成。


本文基于 BlockSec 官方审计报告(英文,2026-08-13)及其中文繁体版撰写,Anchorpoint 发行背景经 公开报道交叉核对。队列源(吴说)为聚合来源,已按规则追至一手信源 BlockSec 官方博客。