smallyu.net2025-04-30 16:10

基于 zk + 智能合约的链上身份认证系统设计

文章摘要

这篇文章介绍了一种名为 zkgate.fun 的链上身份认证系统设计方案。该系统利用零知识证明 (zk) 技术和智能合约,允许用户证明其属于某个特定群体,而无需泄露自己的真实身份信息。 管理员首先创建一个包含成员地址的列表并计算 Merkle Root Hash,将其提交到智能合约中。成员可以使用 Circom 电路生成 zk proof,提交至智能合约进行验证。智能合约通过 verifier.sol 验证 zk proof 的有效性,判断用户地址是否在 Merkle Root Hash 中,最终返回验证结果。 该系统实现了身份认证的隐私保护,既保障了群组成员的匿名性,也避免了管理员公开成员信息。

基于 zk + 智能合约的链上身份认证系统设计

2025-04-30

我给这个系统取名 zkgate.fun,主要想发挥零知识证明的特性,结合区块链做个小工具。

主要功能是实现,用户证明我属于某一个群组,但是不需要暴露我自己的真实(链上)身份。

目前的设想是这样,管理员首先有一个名单列表,可以是以太坊地址的数组,然后根据这个地址列表,计算出一个 Merkle Root Hash。

接着把这个 root hash 提交到智能合约上。

处于这个名单中的人,可以使用 Circom 电路的 proving key,来给自己生成一个 zk proof,随后将 zk proof 提交到智能合约上。

在智能合约上,会使用 Circom 电路生成的 verifier.sol,对收到的 zk proof 进行验证,判断用于生成 zk proof 的地址,是否在 Merkle Root Hash 中,最后将判断结果返回。

这样的话,管理员不需要公开自己的群组中有哪些地址,属于群组中的地址也不需要声明自己的身份,只需要提交零知识证明生成的 zk proof,就可以证明自己真的归属于这个群组。

我接下来会具体在技术上实现这个设计。