Skip to main content

zkLogin示例

Sui社区创建了一个示例,以便为开发人员提供Sui zkLogin涉及的每个步骤的全面理解。

ZKLogin概览 这个示例将Sui zkLogin的完整过程分解为七个步骤,如下:

  1. 生成临时密钥对
  2. 获取JWT
  3. 解码JWT
  4. 生成盐
  5. 生成用户Sui地址
  6. 获取ZK证明
  7. 组装zkLogin签名

每个步骤都包括相应的代码片段,提供了如何获取每个步骤所需数据的说明。

操作环境

该示例在Sui Devnet中运行。用户生成的所有数据都存储在客户端(浏览器)的本地。获取零知识证明(ZK证明)是通过调用Mysten Labs维护的证明服务完成的。因此,运行示例不需要额外部署的后端服务器(或Docker容器)。

密钥数据的存储位置

以下表列出了示例使用的关键数据的存储位置:

DataStorage location
Ephemeral key pairwindow.sessionStorage
Randomnesswindow.sessionStorage
User saltwindow.localStorage
Max epochwindow.localStorage

因为用户盐值(Salt)长期存储在浏览器的 localStorage 中,只要不手动清除 localStorage,你可以随时使用相同的JWT(在此示例中,使用相同的Google帐户登录)访问从当前盐值生成的相应zkLogin地址。

:::注意

更改浏览器或设备会导致无法访问以前生成的Sui zkLogin地址,即使使用相同的JWT。

:::

故障排除

  • ZK证明请求失败:

    • 这可能是由于创建多个随机性或用户盐时存在不一致,导致请求失败。点击UI右上角的 Reset按钮 重新启动整个过程。
  • 请求测试令牌失败:

    • 这是因为你超过了faucet服务器请求频率限制。
    • 你可以访问Sui的 #devnet-faucet#testnet-faucet Discord频道来获取测试币。
  • 对于项目的GitHub仓库,欢迎提出任何建议或问题,当然,我们非常感谢拉取请求。

  • 有关zkLogin的更多常见问题解答,请查看 zkLogin FAQ