Sui zkLogin让真正链接10亿用户成为可能

news2024/12/27 13:31:45

近日,Sui宣布推出zkLogin,这是将用户引入链上的最简单方式。zkLogin是Sui的一种原生功能,允许用户使用来自Google和Twitch等现有的Web2身份验证登录Web3应用程序,消除了用户需要记住或记录私钥的流程。

创建钱包通常被认为是区块链行业中阻碍新用户的一个重要因素,一些协议提供了第三方服务来简化用户入门过程。这些解决方案需要信任协议外的硬件或服务,zkLogin利用Sui原生的零知识密码学实现这一功能。

详情见:https://www.youtube.com/watch?v=CZSH9B7j-AY,Mysten Labs联合创始人兼首席密码学家Kostas Chalkias解释zkLogin是什么及其工作原理。

艰难的吸引用户之路

构建者往往因为复杂的登录流程,错失了吸引潜在用户的重要机会。当潜在用户听说区块链上出现一个令人兴奋的新游戏或app时,通常涉及比他们常使用的复杂得多的过程才能去尝试它。区块链app要求他们连接一个钱包,迫使新用户选择一个钱包,安装它,然后经历使用助记词创建账户的陌生步骤。许多用户会放弃,导致大量用户在入门时就流失。

试图简化用户入门的app开发者受到限制:

(1)开发和管理托管钱包,增加工程和监管开销

(2)集成第三方身份验证解决方案,引入额外的依赖和对协议外硬件或服务的信任。

目前,没有区块链可以提供一种原生方式来集成Web2身份验证程序,用于协议级别的应用程序。

zkLogin登场

zkLogin是一种新的Sui原生功能,允许用户安全地使用其Web2身份验证创建账户并提交交易。使用零知识密码学,zkLogin被纳入协议级别,这意味着除了Web2身份验证提供程序之外,没有外部依赖。

zkLogin为终端用户提供了极大的便利,而不会牺牲安全性。它使用临时密钥对和零知识密码学将Web2身份验证提供程序的响应连接到特定的Sui账户。当使用zkLogin时,唯一提交到链上的数据是零知识证明和短暂签名,它不需要提交任何用户信息到链上。此外,Web2身份验证提供程序不知道用户正在使用区块链,确保了隐私。

为了保持用户的简便性,zkLogin会不透明地生成一个与提供zkLogin选项的应用程序相关的唯一的Sui地址。用户看不到该地址,也不需要保存它,因为它成为通过Web2身份验证提供程序的登录流程的一部分。Web3用户仍然可以使用其现有的钱包来访问支持zkLogin的应用程序。在推出时,zkLogin支持Google、Facebook和Twitch作为Web2身份验证提供程序,后续版本将支持更多选项,从而扩大潜在用户群体的规模。

zkLogin允许用户使用第三方凭证登录Sui应用程序,而无需牺牲安全性

为什么要使用zkLogin?

  • 面向大规模采用:任何兼容Web2身份验证提供商的用户都可以使用熟悉的帐户详细信息登录,并在几秒钟内开始与应用程序互动。
  • 嵌入区块链功能到Web2体验中:Web2身份验证交易签名的简单性为将区块链功能作为日常应用的一部分创造了新机会。
  • 启用多设备体验:zkLogin充分利用Sui的加密灵活性,是构建同时利用生物特征认证的多设备解决方案的理想之地。
  • 强大的用户隐私:不会在链上存储任何个人信息,唯一提交到链上的是零知识证明和短暂签名。

开始使用zkLogin

Sui是L1区块链,它使数字资产所有权变得快速、安全且可供每个人访问。zkLogin是Sui原语中的一种,旨在帮助引入下一个十亿Web3用户。如今,zkLogin支持Google、Facebook和Twitch作为Web2身份验证提供程序,后续版本将支持更多选项,从而扩大潜在用户群体的规模。

开发者现在可以在Sui开发网上开始实施zkLogin,预计在未来几周内将其引入主网。zkLogin文档解释了如何安装SDK、设置Web2身份验证流程以及管理用户登录,立即开始吧!

启动仪式

为了在零知识证明的计算中实现更高效,Sui基金会将主持一个仪式,生成一个任何Sui应用程序都可以利用的公共参考字符串(Common Reference String,CRS)。要对此字符串进行采样,需要电路描述和一些保密生成的随机数。对该过程的信任建立在两个关键原则上:

1. 采样过程被认真地执行

2. 保密的随机数被可靠地丢弃

这涉及多方并利用分布式协议,以确保最终设置符合预期的安全性和隐私保证,即使只有其中一方遵守协议,这一原则仍然成立。

zkLogin功能

零知识证明:用于保护敏感的用户数据,零知识证明使区块链相信用户信息已经经过验证。这是通过将JWT令牌(由OAuth提供商签发,包含用户凭证)作为电路中的私有见证来实现的。该电路内部验证提供商的RSA签名和用户信息。与此同时,这提供了更好的应用体验,因为用户在入门过程中不再需要维护复杂的助记词或密码。

设置仪式:zkLogin利用Groth16 zkSNARK系统,以利用其明显简洁的证明大小和验证程序的效率。这需要一次性的计算昂贵的设置操作。

以下组织/人员被邀请参与

  • 专家(最多50名参与者):区块链、密码学和技术专家
  • 验证节点(最多100名参与者):已参与保护Sui网络的实体

贡献步骤

1. 参与者使用邀请码加入队列

2. 轮到您时,选择以下方式之一进行贡献:

- 浏览器 — 用户友好型

- Docker — 技术型

3. 在贡献时,必须按时执行以下步骤,以避免不符合要求

- 从合作服务器下载最新的贡献文件并进行验证

- 输入熵 — 最好选择可丢弃的熵(例如,随机光标移动)

- 运行贡献代码

- 签署贡献代码

- 上传贡献

4. 最后,下一位参与者准备好进行贡献。

完成

在最后的贡献之后,CRS和验证脚本将在Sui基金会网站上公开供大家审查。

Sui基金会将进行验证,以确保仪式的完整性,欢迎其他人参与。

最终,最终的CRS将用于生成证明密钥和验证密钥。Sui文档将提供有关使用、最佳实践和示例的指导。

常见问题解答

1. 我如何确认我的贡献已正确纳入CRS?

贡献者将收到他们正在参与的上一个贡献的哈希值,以及他们贡献完成后的结果哈希值,这些信息将在屏幕上显示并通过电子邮件发送。在仪式完成后,他们可以将这些哈希值与网站上公开可用的记录进行比较。

2. 我如何确认所有贡献者的最终贡献已纳入CRS?

所有贡献将在仪式结束后公开可用,贡献者可以确认公开的贡献哈希与他们在贡献阶段拥有的哈希一致。仪式结束后,任何人都可以检查这些哈希是否被正确计算,并且每个贡献是否被正确纳入最终参数。

3. “使用浏览器贡献”和“使用Docker贡献”之间有什么区别?

浏览器选项对于参与者来说更加友好,因为所有操作都在浏览器中进行。Docker选项需要进行Docker设置,但更加透明 — — Docker文件和贡献者源代码都是开源的,整个过程是可验证的。此外,浏览器选项使用snarkjs,而Docker选项使用Kobi的实现。这提供了软件多样性,贡献者可以选择他们信任的任何方法来贡献。

4. 激活码的功能是什么?

激活码用于验证贡献者的电子邮件与链接服务器,并用于签署他们的贡献。

5. 为什么不向更广泛的社区开放权限参与仪式?

吸引更广泛的社区参与者是更理想的,尤其是在去中心化方面它会增强仪式的信任度。然而,与其他公开仪式(例如以太坊的仪式)相比,它们通常需要数月时间,而我们的时间更为紧张,希望zkLogin能够尽快面向开发者提供。同时,通过吸引Sui验证节点参与,我们旨在实现与网络本身类似的安全级别。同时,纳入密码学和技术专家提供了进一步的保证,以便及时发现任何问题。由于这些仪式是可扩展的,我们始终可以选择在未来合并更多的贡献。

6. 为什么不能使用现有的ZK参数,有没有办法与其他人分摊成本?

我们正在使用社区的Perpetual Powers of Tau作为第一阶段参考,这是与电路无关的。我们的仪式仅针对zkLogin电路特定的第二阶段部分。

7. 这是一个只能由大型组织用于其产品的可信设置吗?

zkLogin是Sui的原语,这就是为什么Sui基金会负责它。我们的目标是实现全球范围内的广泛采用,不仅限于大型组织和企业。

8. 您将发布贡献者的姓名/隶属关系吗?

参与者可以选择是否希望他们的姓名和隶属关系被公开。虽然我们希望参与者公开支持参与,但他们可以匿名参与。如果选择匿名,Sui基金会将了解参与者的详细信息,但不会进行公开披露。


关于 Sui Network

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

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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

使用vite创建vue3项目及项目的配置 | 环境准备 ESLint配置 prettier配置 husky配置 项目继承

文章目录 使用vite创建vue3项目及项目的配置1.环境准备2.项目配置ESLint校验代码工具配置 - js代码检测工具1.安装ESLint到开发环境 devDependencies2.生成配置文件:.eslint.cjs**3.安装vue3环境代码校验插件**4. 修改.eslintrc.cjs配置文件5.生成ESLint忽略文件6.在package.js…

K8S pod资源、探针

目录 一.pod资源限制 1.pod资源限制方式 2.pod资源限制指定时指定的参数 (1)request 资源 (2) limit 资源 (3)两种资源匹配方式 3.资源限制的示例 (1)官网示例 2&#xff0…

张勇时代落幕 蔡崇信能否让阿里变得更好

这两年,互联网行业似乎迎来了组织变革潮,只是谁也没想到,阿里的来得这么快,这么彻底。 9月10日晚,阿里巴巴董事会主席蔡崇信发布全员信,宣布已按计划完成集团管理职务交接,由他接任集团董事会主…

【JavaScript】对象类似数组那种数据结构 搜索一组匹配的数据

在 JavaScript 中,如果您想在类似数组的对象中进行关键字搜索并找到一组匹配的数据,可以使用filter()方法结合正则表达式来实现。 以下是一个示例代码,演示如何在类似数组的对象中进行关键字搜索并找到匹配的数据: const obj {…

APEX数据源加载实现Excel表数据导入及自定义存储过程

在APEX应用程序中会涉及到数据加载,说白了就是导入导出数据到数据库中,这里就以Excel导入数据到TEST_DATA_WXX表为例,来学习共享组件 数据源 数据加载定义 1 第一步先导出一个数据模板 进入《王小小鸭的学习demo》打开【用户管理】-【操作】…

c++ day 6

1、 将之前定义的栈类和队列类都实现成模板类 #include <iostream>using namespace std;#define MAX 128template<typename T>class Stack { public://构造函数Stack();//析构函数~Stack();//拷贝构造函数Stack(const Stack &other);//入栈int push(T e);//出…

【Redis7】--4.事务、管道、发布和订阅

文章目录 事务1.Redis事务2.Redis事务特性3.Redis事务命令3.1MULTI3.2EXEC3.3DISCARD3.4WATCH3.5UNWATCH 4.不保证原子性4.1"全体连坐"4.2"冤头债主" 5.事务执行流程 管道1.pipeline的使用2.pipeline小总结 发布和订阅1.常用命令1.1SUBSCRIBE1.2PUBLISH1.3…

小鹏、长城先后宣布智能计划,传统车企与新势力决战AI赛点?

点击关注 文&#xff5c;姚 悦&#xff0c;编&#xff5c;王一粟 “尽管我们已经造车30多年&#xff0c;但现在我们面临一个全新问题和挑战。”长城汽车AI Lab负责人杨继峰表示&#xff0c;“在AI时代里每个问题都是AI问题。” 杨继峰所负责的AI Lab&#xff0c;正是长城汽车…

线性代数的本质——几何角度理解

B站网课来自 3Blue1Brown的翻译版&#xff0c;看完醍醐灌顶&#xff0c;强烈推荐&#xff1a; 线性代数的本质 本课程从几何的角度翻译了线代中各种核心的概念及性质&#xff0c;对做题和练习效果有实质性的提高&#xff0c;下面博主来总结一下自己的理解 1.向量的本质 在物…

uniapp项目实践总结(十七)实现滚动触底加载

导语&#xff1a;在日测的开发过程中&#xff0c;经常会碰到页面需要渲染大量数据的情况&#xff0c;这时候就需要用到滚动加载功能&#xff0c;下面总结一下方法。 目录 原理分析实战演练案例展示 原理分析 使用scrolltolower事件来监听滚动到底部&#xff0c;然后加载下一…

RabbitMQ深入 —— 死信队列

前言 前面荔枝梳理了RabbitMQ中的普通队列、交换机以及相关的知识&#xff0c;在这篇文章中荔枝将会梳理RabbitMQ的一个重要的队列 —— 死信队列&#xff0c;主要了解消息流转到死信队列的三种的方式以及相应的实现demo。希望能帮助到有需要的小伙伴~~~ 文章目录 前言 死信队…

C++——构造函数

定义 构造函数是一个特殊的成员函数&#xff0c;名字和类名相同&#xff0c;创建类类型对象时由编译器自动调节&#xff0c;保证每个数据成员都有一个合适的初始值&#xff0c;并且在对象的声明周期内只调用一次。 特性 1.函数名和类名相同 2.无返回值 3.对象实例化时编译…

自动化测试工具slelnium的初体验

1.slelnium介绍 1.1 一个Web的自动化测试工具&#xff0c;最初是为网站自动化测试而开发的。 1.2 可以直接运行在浏览器上&#xff0c;它支持所有主流的浏览器&#xff08;包括PhantomJS这些无界面的浏览器&#xff09;&#xff0c;可以接收指令&#xff0c;让浏览器自动加载页…

锐捷交换机vlan隔离(wifi段仅能访问外网,和内网隔离)

因为公司的wifi段&#xff0c;未做隔离&#xff0c;无意间上了网&#xff0c;发现能访问内网网段&#xff0c;这里内网是10、20段&#xff0c;管理网段是100段&#xff0c;于是做了和内网的vlan隔离。 拓朴如下&#xff0c;所有vlan的网关都起在核心上&#xff0c;核心上起了DH…

23062QTday2

完善登录框 点击登录按钮后&#xff0c;判断账号&#xff08;admin&#xff09;和密码&#xff08;123456&#xff09;是否一致&#xff0c;如果匹配失败&#xff0c;则弹出错误对话框&#xff0c;文本内容“账号密码不匹配&#xff0c;是否重新登录”&#xff0c;给定两个按钮…

华为数通方向HCIP-DataCom H12-831题库(单选题:41-60)

第41题 除了虚连接之外,OSPFV3的Hello报文源IPv6地址是哪种类型的IPv6地址? A、IPv6任播地址 B、唯一本地地址 C、全球单播地址 D、链路本地地址 答案: D 解析: 这里题目是源IPv6,不是目的IPv6,与另一题类似 第42题 下列描述中关于MPLS网络中配置静态LSP正确的是? A、…

three.js——模型对象的使用材质和方法

模型对象的使用材质和方法 前言效果图1、旋转、缩放、平移&#xff0c;居中的使用1.1 旋转rotation&#xff08;.rotateX()、.rotateY()、.rotateZ()&#xff09;1.2缩放.scale()1.3平移.translate()1.4居中.center() 2、材质属性.wireframe 前言 BufferGeometry通过.scale()、…

uniapp h5网页打开白屏

修改了默认基本运行路径&#xff0c;然后直接打开index.html的情况下是会这样&#xff0c;放在nginx服务器上运行就ok了。 把默认的./ 路径修改了&#xff1a;/cloudh5 nginx html目录下放子网站 &#xff1a;/cloudh5&#xff1a;

【深度学习实验】线性模型(二):使用NumPy实现线性模型:梯度下降法

目录 一、实验介绍 二、实验环境 1. 配置虚拟环境 2. 库版本介绍 三、实验内容 0. 导入库 1. 初始化参数 2. 线性模型 linear_model 3. 损失函数loss_function 4. 梯度计算函数compute_gradients 5. 梯度下降函数gradient_descent 6. 调用函数 一、实验介绍 使用Nu…

Lombok依赖

一.介绍 Project Lombok 是一个 Java 库&#xff0c;它会自动插入编辑器和构建工具&#xff0c;为您的 Java 增添趣味。永远不要再写另一个 getter 或 equals 方法&#xff0c;使用一个注释&#xff0c;您的类有一个功能齐全的构建器&#xff0c;自动化您的日志记录变量等等。…