新手教程|搭建zkLogin的证明服务端

zkLogin是Sui的一种原生功能,它允许人们只使用来自如Google、Meta和Twitch等的现有网络凭证来创建Sui地址并签署交易。为确保隐私,集成zkLogin的apps必须创建ZKP (Zero Knowledge proofs,零知识证明),以使凭证对app保持隐藏,同时使交易历史对网络服务保持隐藏。由于生成ZKP可能需要大量资源,在客户端端口上可能会较慢,建议使用专用于ZKP生成的后端服务端口。运行该服务以及salt服务将允许用户通过zkLogin访问您的应用。关于salt服务的更多信息,请阅读Sui文档中有关salt策略的内容。

在后端运行证明服务的一个选项是使用Sui文档中提供的Docker镜像以及在今年九月举行的仪式中建立的公共参考字符串 (Common Reference String, CRS)。

证明服务的设置步骤

1. 下载Docker镜像,标记为prover和prover-fe。

2. 下载Groth16证明密钥zkey文件,稍后将其用作运行prover的参数。

wget -O - https://raw.githubusercontent.com/sui-foundation/zklogin-ceremony-contributions/main/download-zkey.sh | bash

3. 通过运行b2sum zkLogin.zkey来检查您是否已下载正确的zkey文件。

060beb961802568ac9ac7f14de0fbcd55e373e8f5ec7cc32189e26fb65700aa4e36f5604f868022c765e634d14ea1cd58bd4d79cef8f3cf9693510696bcbcbce

4. 在基于Linux的机器 (amd64) 上使用下载的zkey运行prover,并将其运行在PORT1上。

docker run \-e ZKEY=/app/binaries/zkLogin.zkey \-e WITNESS_BINARIES=/app/binaries \-v <path_to_zkLogin.zkey>:/app/binaries/zkLogin.zkey \-p PORT1:8080 \<prover-image>

5. 运行prover-fe,端口为PORT2。

docker run \-e PROVER_URI='http://localhost:PORT1/input' \-e NODE_ENV=production \-e DEBUG=zkLogin:info,jwks \-p PORT2:8080 \<prover-fe-image>

6. 适当暴露prover-fe服务,并保持prover服务为内部。

7. 使用以下其中一个端口调用证明服务:

  • /ping以测试服务是否正常运行

运行curl http://localhost:PORT2/ping应返回pong。

  • /v1以创建零知识证明

输入JWT_TOKEN、短暂的公钥、maxEpoch、jwtRandomness、salt和密钥声明名称以获取证明。

curl -X POST 'http://localhost:PORT2/v1' -H 'Content-Type: application/json' \
-d '{"jwt":"$JWT_TOKEN", \
"extendedEphemeralPublicKey":"ucbuFjDvPnERRKZI2wa7sihPcnTPvuU//O5QPMGkkgA=", \
"maxEpoch":"10", \
"jwtRandomness":"S76Qi8c/SZlmmotnFMr13Q==", \
"salt":"urgFnwIxJ++Ooswtf0Nn1w==", \
"keyClaimName":"sub" \
}'Response:`{"proofPoints":{"a":["17267520948013237176538401967633949796808964318007586959472021003187557716854","14650660244262428784196747165683760208919070184766586754097510948934669736103","1"],"b":[["21139310988334827550539224708307701217878230950292201561482099688321320348443","10547097602625638823059992458926868829066244356588080322181801706465994418281"],["12744153306027049365027606189549081708414309055722206371798414155740784907883","17883388059920040098415197241200663975335711492591606641576557652282627716838"],  ["1","0"]],"c":["14769767061575837119226231519343805418804298487906870764117230269550212315249","19108054814174425469923382354535700312637807408963428646825944966509611405530","1"]},  "issBase64Details":{"value":"wiaXNzIjoiaHR0cHM6Ly9pZC50d2l0Y2gudHYvb2F1dGgyIiw", "indexMod4": 2 },"headerBase64":"eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6IjEifQ"}`

如果出于性能原因,您更愿意从头开始编译prover,请查看Sui的rapidsnark分支资料,您需要编译并以服务器模式启动prover。


关于 Sui Network

Sui是基于第一原理重新设计和构建而成的L1公有链,旨在为创作者和开发者提供能够承载Web3中下一个十亿用户的开发平台。Sui上的应用基于Move智能合约语言,并具有水平可扩展性,让开发者能够快速且低成本支持广泛的应用开发。获取更多信息:https://linktr.ee/sui_apac

官网|英文Twitter|中文Twitter|Discord|英文电报群|中文电报群

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/157451.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

性能测试实例

上一篇博文主要通过两个例子让测试新手了解一下测试思想&#xff0c;和在做测试之前应该了解人几点&#xff0c;那么我们在如何完成一次完整的性能测试呢&#xff1f; 测试报告是一次完整性能测试的体现&#xff0c;所以&#xff0c;这里我给出一个完整的性能测试报告&#xff…

关于pyinstaller执行报错的解决方案

已经安装好了pyinstaller&#xff0c;但是在终端执行时报错&#xff1a; pyinstaller : 无法将“pyinstaller”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写&#xff0c;如果包括路径&#xff0c;请确保路径正确&#xff0c;然后再试一次。 所在位置…

Android Icon 添加水印 Python脚本

源代码 # -*- coding: utf-8 -*- from PIL import Image 图片合成def mergePictureLXJ():commonIcon Image.open("icon.png")markIcon Image.open("领现金.png")markLayer Image.new(RGBA, commonIcon.size, (0, 0, 0, 0))markLayer.paste(markIcon, (0…

领英新手指南:领英账号总被限制?这样做才对

领英对于跨境外贸玩家来说&#xff0c;是不可替代的一个客户开发、客户维护的工具。然而许多人注册了领英&#xff0c;却不知道什么原因领英账号被封了。对领英平台安全算法规则不熟悉的人&#xff0c;确实会很容易造成领英账号被封/被限制登录的情况&#xff0c;下面从注册、养…

家庭私人影院 - Windows搭建Emby媒体库服务器并远程访问 「无公网IP」

文章目录 1.前言2. Emby网站搭建2.1. Emby下载和安装2.2 Emby网页测试 3. 本地网页发布3.1 注册并安装cpolar内网穿透3.2 Cpolar云端设置3.3 Cpolar内网穿透本地设置 4.公网访问测试5.结语 1.前言 在现代五花八门的网络应用场景中&#xff0c;观看视频绝对是主力应用场景之一&…

【React】02.create-react-app基础操作

文章目录 当前以及未来的开发&#xff0c;一定是&#xff1a;组件化开发如何划分组件React的工程化/组件化开发create-react-app基础运用运用react常用版本一个React项目中&#xff0c;默认会安装 2023年最新珠峰React全家桶【react基础-进阶-项目-源码-淘系-面试题】 当前以及…

第6天:信息打点-Web架构篇amp;域名amp;语言amp;中间件amp;数据库amp;系统amp;源码

第6天&#xff1a;信息打点-Web架构篇&域名&语言&中间件&数据库&系统&源码 #知识点&#xff1a; 1、打点-Web架构-语言&中间件&数据库&系统等2、打点-Web源码-CMS开源&闭源售卖&自主研发等 开源&#xff1a;可以上网搜索&#x…

符号执行初识

一、符号执行概念 符号执行&#xff08;Symbolic Execution&#xff09;是一种程序分析技术&#xff0c;它 可以通过分析程序来得到让特定代码区域执行的输入。 符号执行的 目的 是在给定的时间内&#xff0c; 生成一组输入&#xff0c;并通过这些输入尽可能多的探索执行路径。…

苹果电脑如何录制电脑桌面内容?

我买了台苹果电脑&#xff0c;由于之前没用过&#xff0c;完全不知道如何使用这台苹果电脑进行录制桌面内容。如果你有这方面的困扰&#xff0c;那无需担心&#xff0c;小编今天就详细的为您讲解如何使用苹果电脑录制桌面内容。你可以使用电脑自带录屏工具录制&#xff0c;屏幕…

安防监控系统EasyCVR视频汇聚平台,如何实现视频汇聚?

关注我们的朋友都知道&#xff0c;EasyCVR平台最初就是以汇聚为核心而进行打造的&#xff0c;那到底什么是汇聚平台呢&#xff1f;又如何进行视频资源汇聚&#xff1f;简单来说&#xff0c;视频汇聚平台是指能够从不同的视频源&#xff08;例如直播、点播等&#xff09;收集、整…

Linux C语言进阶-D10指针数组

指针变量构成的数组 理解下面printf中的a和p的表示&#xff0c;其中p[0]、p[1]、p[2]表示存储的a,a1和a2这几个地址&#xff0c;而再加个*&#xff0c;相当于对地址解引用&#xff0c;从而得到数组中的值。 如下图&#xff0c;要想得到a[0][1]的值可以直接打印a[0][1]&#xf…

JavaScript实现跨标签页通信

highlight: arduino-light theme: channing-cyan &#x1f4a1; 在 Web 开发中&#xff0c;有时我们需要实现不同页面之间的数据传递和事件触发&#xff0c;比如一个页面打开了另一个页面&#xff0c;然后在新的页面中操作后需要更新原来的页面的内容。这种场景在电商、支付、…