如何让你的交易高效且安全?离不开这项技术

news2024/11/25 10:05:01

9ede38e0a89ee31477910bbc6dd82a67.jpeg

作者|Jason Jiang

在区块链技术演变过程中,有两个关键问题始终绕不过去:隐私与扩容。当我们探寻这两个问题的“标准解法”时,却发现它们都离不开一种技术,那就是:零知识证明。什么是零知识证明?它又是如何解决区块链隐私与扩容难题的?

1、什么是零知识证明?

1985年,来自MIT的S.Goldwasser、S.Micali 及 C.Rackoff 在研究论文《互动式证明系统的知识复杂性》中首次提出零知识证明。这是一种用于证明者在不泄漏任何有效信息的情况下证明其知识正确性的验证协议。

为了方便理解,不妨举个例子:


小O拥有一个带密码的盒子,他想在不告诉小K真正密码的情况下,让他相信自己知道盒子密码。那怎么做呢?


小O想出了一个办法:他让小K写下一个全世界只有他才知道内容的纸条,然后由小K亲手放进打开的盒子中并锁上。然后小O将盒子拿走后利用密码取出小K放在盒子里的纸条,第二天再将纸条给到小K。在这个过程中,小K并没有得知任何此前自己不知道的信息(盒子的密码),但还是必须相信小O知道密码这件事情。这个验证过程就是零知识证明。

简单来说,零知识证明就是以最小的信息交换量在双方之间建立信任,在不透露更多信息前提下,A可以向B证明某件事/某个结论是正确的

根据证明过程中的交互方式,可分为“交互式零知识证明”和“非交互式零知识证明”两大类。

交互式零知识证明,是指为了证明某件事,证明者需要和验证者反复互动,就像是测谎仪一样:验证者不断提出问题来挑战证明者承诺的真实性,证明者则需要不断回应这些挑战,直到使验证者相信。其流程如下所示:

5ea53158fb2b89a876fc59348c54d3ad.jpeg

早期的零知识证明都是交互式的。这种方式很直接,但过程冗长且效率低下:双方必须同时在线完成验证,并且每次只能取信于一个验证者,如果要取信多人,则要重复上述过程。这个过程,想想就累。

于是,非交互式零知识证明出现了。在非交互式零知识证明中,证明者和验证者提前约定验证规则,证明者按照承诺提供数据,验证者则可随时验证这些数据的正确性。这种非交互式验证,双方不用同时在线,并且证明者只需要提供一次证明。实际场景中应用的基本都是非交互式零知识证明,比如ZK-SNARK和 ZK-STARK

19c0f1b74daeaea16cbcb2b0a3c1230a.jpeg

2、零知识证明在区块链世界有什么用?

零知识证明在区块链世界主要被用来解决两类问题:隐私性与拓展性。

(1)隐私性

零知识证明的重要应用成果之一是2015年推出的可实现隐私交易的Zcash项目。除Zcash这类匿名币外,零知识证明在区块链金融、链上投票、身份验证等场景中也能发挥作用。

在区块链金融应用中,零知识证明允许参与者们灵活选择他们想要公开和隐藏的交易与信息。例如,公司可以有选择地公开某些付款以便审计追踪,同时隐藏机密客户、员工工资、承包商、供应商等隐秘信息。

进行链上投票时,零知识证明也能允许参与者进行匿名投票,并验证投票结果有效性。

此外,零知识证明还能帮助用户在不暴露具体身份信息的前提下实现身份验证。以太坊上的Polygan ID就采用了零知识证明验证方案,既帮助用户保护隐私,同时满足监管要求的KYC验证规范,用户可自由选择何时以及共享哪些数据。

(2)拓展性

区块链因性能限制难以满足市场需求而亟需扩容,基于零知识证明的ZK Rollup扩容方案则被视为 Layer2扩容的终极方案。ZK-Rollups通过将计算转移到链下来提高区块链吞吐量,即将大量交易打包到一个Rollup区块内,并在链下基于零知识证明生成一个有效性证明,Layer 1上的智能合约只需验证该证明即可直接应用新状态,从而实现更低Gas和更高安全性。

基于ZK-SNARKs技术的zkSync和基于zk-STARKs技术的StarkNet是目前最具代表性的ZK-Rollups项目。

其中,zkSync由是Matter Labs在2018年推出的一款 Layer2 扩容方案,通过采用基于零知识证明的Rollup提升以太坊网络的可拓展性。今年2月,zkSync宣布zkSync Era主网正式上线,欧科云链OKLink多链浏览器随后率先接入zkSync主网数据,成为全网首个支持zkSync网络的多链浏览器

b469ce0fc9ed8e184d84a219b7c467d1.jpeg

StarkNet是由以色列软件公司 StarkWare 开发的免许可Layer 2网络,通过使用zk-STARKs技术可帮助 DApp以更低的交易成本实现更大计算规模。自2021年11月启动主网后,StarkNet生态系统快速发展,目前已有100多种Dapp及服务,涵盖DeFi、NFT、钱包、跨链桥等不同类别。作为ZK Rollup赛道中估值最高和市场份额占比最大的项目之一,StarkNet的发展备受关注。欧科云链OKLink多链浏览器也将于近期上线StarkNet浏览器,为所有关注和参与StarkNet生态和Layer 2建设的用户提供更全面和更丰富的链上数据洞察及服务

2a3d72c0f08bab1d6c0824a33f6c898d.jpeg

据悉,StarkNet浏览器将成为OKLink推出的第30条区块链浏览器,也是继zksync之后的第2条ZK Rollup浏览器。未来,OKLink多链浏览器还将陆续推出基于零知识证明的Polygon-zk、Linea、Base、Scoll等知名ZK Rollup项目的区块链浏览器。


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

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

相关文章

Dubbo源码环境搭建

背景 Dubbo 作为一款微服务框架,最重要的是向用户提供跨进程的 RPC 远程调用能力。如上图所示,Dubbo 的服务消费者(Consumer)通过一系列的工作将请求发送给服务提供者(Provider)。 为了实现这样一个目标&a…

Apipost: 程序员必备的API管理神器

作为一款专为程序员打造的API管理工具,Apipost也成为开发人员圈子里的一款热门工具。Apipost拥有强大的功能和便捷操作性,这也让许多开发者爱不释手。那么,Apipost到底有哪些吸引人的特点呢?本文将为您详细介绍。 统一API管理 A…

【具身智能】论文系列解读-RL-ViGen

1. RL-ViGen:视觉泛化的强化学习基准 RL-ViGen: A Reinforcement Learning Benchmark for Visual Generalization 0 摘要与总结 视觉强化学习(Visual RL)与高维观察相结合,一直面临着分布外泛化的长期挑战。尽管重点关注旨在解…

[QT]设置程序仅打开一个,再打开就唤醒已打开程序的窗口

需求&#xff1a;speedcrunch 这个软件是开源的计算器软件。配合launch类软件使用时&#xff0c;忘记关闭就经常很多窗口&#xff0c;强迫症&#xff0c;从网上搜索对版本进行了修改。 #include "gui/mainwindow.h"#include <QCoreApplication> #include <…

如何基于自己训练的Yolov5权重,结合DeepSort实现目标跟踪

网上有很多相关不错的操作demo&#xff0c;但自己在训练过程仍然遇到不少疑惑。因此&#xff0c;我这总结一下操作过程中所解决的问题。 1、deepsort的训练集是否必须基于逐帧视频&#xff1f; 我经过尝试&#xff0c;发现非连续性的图像仍可以作为训练集。一个实例&#xff0…

kubernetes搭建及基本使用

1. 前置要求准备 一台或多台机器&#xff0c;操作系统 CentOS7.x-86_x64硬件配置&#xff1a;2GB 或更多 RAM&#xff0c;2 个 CPU 或更多 CPU&#xff0c;硬盘 30GB 或更多集群中所有机器之间网络互通可以访问外网&#xff0c;需要拉取镜像禁止 swap 分区 此处我是白嫖的谷歌云…

No122.精选前端面试题,享受每天的挑战和学习

文章目录 1、vue中key的作用2、如何让vue页面重新渲染3、组件之间通信方式4、vue为什么要mutation、 action操作5、插槽、具名插槽、作用域插槽6、用set求两个数组的交集7、树用js如何实现&#xff1f; 1、vue中key的作用 在Vue中&#xff0c;key的作用是帮助Vue识别每个VNode…

性能评估之旅:软件测试的神秘工具与方法论

引言&#xff1a;性能评估的重要性 在当今的软件开发领域&#xff0c;性能评估已经成为了一个不可或缺的环节。随着用户对于软件响应速度和稳定性的要求越来越高&#xff0c;如何确保软件在各种环境下都能稳定运行&#xff0c;成为了每一个开发者和测试者必须面对的问题。性能…

【App端】uni-app使用echarts和百度地图api

目录 前言方案一&#xff1a;echarts百度地图获取百度地图AK安装echarts和引入百度地图api完整使用代码 方案二&#xff1a;echarts地图和柱状图变形动画完整使用代码 前言 近期的app项目中想加一个功能&#xff0c;展示全国各地的某一数据统计情况&#xff0c;想来想去&#…

搭建Android自动化python+appium环境

一. 需要软件 1. JDK:JAVA安装后配置JDK环境 2. SDK:SDK下载后配置adb环境 3. Python:pyhton语言 4. Pycharm:python脚本编译工具 5. Appium-python-client:pyhton中的库 6. Appium客户端 二. 搭建步骤 1. 配置JDK环境 ①. 下载安装java: https://www.oracle.com/jav…

windows下Mysql安装配置教程

Mysql下载 在官网下载mysql community Server https://dev.mysql.com/downloads/mysql/ 可以选择下载压缩包或者MSI安装程序 使用压缩包安装 MySQL 压缩包安装通常需要以下步骤&#xff1a; 1. 下载 MySQL 安装包 你可以从 MySQL 官网上下载适合你系统的 MySQL 安装包&am…

Android软键盘弹出,底部的控件随之弹出,但整体布局不会向上弹

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.co…

浅析Linux 物理内存外碎片化

本文出现的内核代码来自Linux4.19&#xff0c;如果有兴趣&#xff0c;读者可以配合代码阅读本文。 一、Linux物理内存外碎片化概述 什么是Linux物理内存碎片化&#xff1f;Linux物理内存碎片化包括两种&#xff1a; 1.物理内存内碎片&#xff1a;指分配给用户的内存空间中未…

基于 xhr 实现 axios

基于 xhr 实现 axios 上面我们讲到二次封装 axios &#xff0c;但是现在我们尝试完全脱离 axios&#xff0c;自己实现一个 axios&#xff0c;由于 axios 底层是基于 xhr 做了二次封装&#xff0c;所以我们也可以尝试一下。 xhr 二次封装 src/plugins/xhr.js /*** 请求拦截器…

为什么说ASEMI-GBU812是新能源专用整流桥

编辑-Z GBU812是一种新能源专用整流桥&#xff0c;它在新能源领域扮演着重要的角色。下面是关于为什么说GBU812是新能源专用整流桥的几个原因&#xff1a; 首先&#xff0c;GBU812采用了新能源技术&#xff0c;具有高效能、低功耗和环保等特点。在新能源领域&#xff0c;特别是…

Git中smart Checkout与force checkout

Git中smart Checkout与force checkout 使用git进行代码版本管理,当我们切换分支有时会遇到这样的问题&#xff1a; 这是因为在当前分支修改了代码&#xff0c;但是没有commit,所以在切换到其他分支的时候会弹出这个窗口&#xff0c; 提示你选force checkout或者smart checko…

以udp协议创建通信服务器

概念图 创建服务器让A,B主机完成通信。 认识接口 socket 返回值&#xff1a;套接字&#xff0c;你可以认为类似fd 参数&#xff1a; domain->:哪种套接字&#xff0c;常用AF_INET(网络套接字)、AF_LOCAL(本地套接字)type->&#xff1a;发送数据类型&#xff0c;常用 …

sql 索引

如果表已经存在大量数据&#xff0c;突然需要插入大量数据&#xff0c;因为原来有索引结构&#xff0c;所以大批量数据写入&#xff0c;会导致维护索引&#xff0c;浪费资源。 可以先把表的索引删除&#xff0c;待数据插入完成&#xff0c;再创建索引。 这样可以节约资源和时间…

SAP物料分类账的简单理解

SAP物料分类账的简单理解 转自 SAP物料分类账的简单理解 - 知乎 一、SAP物料分类账理解 物料分类账&#xff0c;简称ML&#xff08;material ledger&#xff09;&#xff0c;其基本用途是可以用八个字概括“还原成本”、“还原库存”。即通过月底运行物料分类账&#xff0c;…

Docker修改容器ulimit的全部方案及各方案的详细步骤

要修改Docker容器的ulimit&#xff08;用户资源限制&#xff09;&#xff0c;有以下三种方案&#xff0c;每个方案的详细步骤如下&#xff1a; 方案一&#xff1a;在Dockerfile中设置ulimit 打开您的Dockerfile。在文件中添加以下命令来修改ulimit&#xff1a;RUN ulimit -n …