当前位置: 首页 > article >正文

2024年零知识证明(ZK)研究进展

Sumcheck

整个领域正在转向更多地依赖于 Sumcheck Protocol

Sumcheck是用于验证多项式承诺的协议,常用于零知识证明(ZKP)中,尤其是在可验证计算和扩展性上。它的主要目的是通过对多项式进行分段检查,从而保证某个多项式在给定输入上的正确性,而不需要直接计算出整个多项式的值。通过这种方式,可以在不透露具体计算过程的情况下,验证计算结果是否正确。

  • 多项式分解:通过将多项式分解为多个部分,使得每次验证的复杂度都很低。

    1. 为了说明,假设多项式 P ( x 1 , x 2 ) P(x_1, x_2) P(x1,x2) 只涉及两个变量 x 1 x_1 x1 x 2 x_2 x2,例如:

      P ( x 1 , x 2 ) = 3 x 1 2 + 2 x 1 x 2 + x 2 2 P(x_1, x_2) = 3x_1^2 + 2x_1x_2 + x_2^2 P(x1,x2)=3x12+2x1x2+x22

    2. 多项式 P ( x 1 , x 2 ) P(x_1, x_2) P(x1,x2) 可以分解为两个层次的多项式,首先针对 x 1 x_1 x1 进行求和,然后是 x 2 x_2 x2。Sumcheck协议逐步检查每一层。

      1. 第一层: 我们考虑多项式的部分与 x 2 x_2 x2 相关的部分,并计算它们的和:

        P 1 ( x 1 ) = ∑ x 2 ( 3 x 1 2 + 2 x 1 x 2 + x 2 2 ) P_1(x_1) = \sum_{x_2} \left( 3x_1^2 + 2x_1x_2 + x_2^2 \right) P1(x1)=x2(3x12+2x1x2+x22)

        然后我们会验证计算的总和是否正确。

      2. 第二层: 接下来,验证如何将这一结果与 x_1 的值结合,确保整个多项式的总和是正确的。

  • 交互式验证:通过证明者和验证者之间的交互,逐步验证计算的每一部分。

  • 零知识:验证者可以确信结果正确,但无法得到多项式的完整信息。

Sumcheck协议的思路是通过递归地分解多项式来逐步验证每一部分的正确性。在这个过程中,最初的“求和”步骤是基于一个重要的结构:多项式的分层结构通过对多项式的每一层进行检查,Sumcheck协议能够将原本复杂的多项式求值问题转化为多个较简单的部分计算。这不仅能减少计算量,也能保证每一步的正确性。


构造 SNARKs 的4种类型

有四种类型的假设被用来构造 SNARKs,或者更普遍地说,有四种类型的假设被用来构造初始化式承诺方案。

  • 基于配对的,有(多项式承诺)KZG及其变体。
  • 基于离散对数的,有Bulletproofs及其变体。
  • 基于哈希的方案,有FRI和许多其它的方案。使用Arc折叠
  • 基于格 (格哈希非常快,比普通哈希快)

承诺的同态性

可以对某个消息 M 进行承诺,可以对某个消息 M′ 进行承诺,然后可以将这些承诺相加,得到对 M+M′ 的承诺。这些被称为线性同态承诺

比如:

  • Pedersen 承诺, 基于多标量乘法(MSM)
  • Ajtai承诺方案, 基于格

FHE + SNARK

FHE的一个限制, 能提供机密性,但不能提供完整性. 我们如何知道服务器计算了我要求它在加密数据上计算的内容?
所以需要在FHE之上运行SNARK, 提供完整性

MPC + SNARK


折叠 / 递归证明

将一个非常大的证明分解成许多小证明,并同时处理所有这些部分


ZKML

知识和机器学习之间存在有趣的联系,基本上是证明模型被正确使用。

我有一些数据,而你有一个模型。我想把我的数据发送给你,希望你在我的数据上运行你的模型,然后把结果返回给我。但在 ZKML 中,你还需要向我提供一个证明,证明你正确地运行了模型,你没有走捷径之类的。所以 ZKML 的意义在于你有一个承诺后的模型,现在我可以保证你根据我发送给你的数据正确地运行了承诺后的模型。

图像溯源证明( C 2 P A C_2PA C2PA)

这是图像溯源。无论你将其追溯到真实的相机,还是生成式 AI 模型.

报纸编辑会删除图像上的签名,即 C2PA 签名,然后他们会模糊、裁剪、调整大小等等,然后附加一个零知识证明,证明编辑后的图像来自一个正确签名的 C2PA 图像,并且唯一的修改是这些允许的转换,如模糊和裁剪、调整大小等。

问题是,这些相机会对图像进行 SHA256 哈希。现在这些图像非常大。比如说,支持 C2PA 的徕卡相机,它是一个 6000 万像素的相机。所以在 SNARK 电路中对 6000 万像素的图像进行 SHA256 哈希,这是不现实的。这真的相当困难。

  • 如何让签名验证在 SNARK 电路中快速运行?论文 VeriTAS: 尝试改进哈希函数, 一个非常适合这个的哈希函数是基于格的哈希函数。
  • 生成式 AI 需要生成 C2PA 图像,可以对图像进行多项式承诺,然后对该承诺进行签名 (在 SNARK 中验证签名,需要对消息进行哈希, 将相当困难)

往期精彩回顾:
区块链知识系列
密码学系列
零知识证明系列
共识系列
公链调研系列
BTC系列
以太坊系列
EOS系列
Filecoin系列
联盟链系列
Fabric系列
智能合约系列
Token系列

相关文章:

2024年零知识证明(ZK)研究进展

Sumcheck 整个领域正在转向更多地依赖于 Sumcheck Protocol Sumcheck是用于验证多项式承诺的协议,常用于零知识证明(ZKP)中,尤其是在可验证计算和扩展性上。它的主要目的是通过对多项式进行分段检查,从而保证某个多项…...

AI 驱动的安全分析的价值是什么?

作者:来自 Elastic Riya Juneja, Alyssa VanNice 与 Enterprise Strategy Group 一起量化经济影响 安全行业十分复杂,变化速度极快。攻击面、利益相关者需求、对手战术以及你使用的工具都在不断演变,导致许多安全团队不确定自己是否已做好准备…...

目标检测YOLO实战应用案例100讲-基于孤立森林算法的高光谱遥感图像异常目标检测(续)

目录 3.4 实验结果与分析 3.4.1 数据集介绍 3.4.2 实验参数分析 3.4.3 实验结果评价与讨论 基于高维孤立森林算法的高光谱图像异常检测 4.1 引言 4.2 基于高维孤立森林算法的异常检测模型 4.2.1 面向高维数据的改进策略 4.2.2 基于光谱有效信息率和目标-背景分离…...

flutter框架中文文档,android智能手机编程答案

RecyclerView优化全攻略:从数据处理到性能提升 字节跳动四面有三面都问了这个问题,在此做了整理,希望可以帮助到大家,欢迎查漏补缺。 数据处理和视图加载分离 我们知道,从远端拉取数据肯定是要放在异步的&#xff0…...

AWE 2025:当AI科技遇见智能家居

3月20日,以“AI科技、AI生活”为主题的AWE2025(中国家电及消费电子博览会)在上海新国际博览中心开幕。作为全球家电行业风向标,本届展会最大的亮点莫过于健康理念在家电领域的全面渗透。从食材保鲜到空气净化,从衣物清…...

Laraver SQL日志 服务开发

Laravel 项目运行中,有时候需要查看sql语句,分析sql运行的耗时,sql语句的复杂程度分析等等 总之,sql的执行在项目中,非常关键,接下来将说明在laravel 中 配置一个sql日志记录服务。 开发思路:…...

NG-ZORRO中tree组件的getCheckedNodeList怎么使用

在 NG-ZORRO(Ant Design for Angular) 的 Tree 组件 中,getCheckedNodeList 方法用于获取当前选中的节点列表(包括半选状态节点)。以下是具体用法和示例: 基本用法 首先,确保你已通过 ViewChil…...

win10之mysql server 8.0.41安装

一 mysql server 下载 官网下载地址页面 https://dev.mysql.com/downloads/mysql/二 免装版使用步骤 1 解压 下载完成后,解压文件夹,如下所示: 2 执行安装命令 D:\soft\mysql\mysql-8.0.41-winx64\mysql-8.0.41-winx64\bin>mysqld --install Service successfully in…...

蓝桥杯专项复习——二分

目录 二分查找、二分答案基础知识 二分查找模版 【模版题】数的范围 借教室 二分查找、二分答案基础知识 二分查找模版 【模版题】数的范围 输入样例 6 3 1 2 2 3 3 4 3 4 5输出样例 3 4 5 5 -1 -1 思路: 对应两个模版,起始位置是对应第一个模版…...

oracle中java类的使用

方式一: 编写一个简单的java类 vi OracleJavaDemo.java public class OracleJavaDemo { public static String processData(String input) { return "Processed: " input; } } 编译 javac OracleJavaDemo.java 生成OracleJavaDemo…...

高并发内存池(一):项目介绍和Thread Cache实现

前言:本文将要介绍的高并发内存池,它的原型是Google的⼀个开源项⽬tcmalloc,全称Thread-Caching Malloc,近一个月我将以学习为目的来模拟实现一个精简版的高并发内存池,并对核心技术分块进行精细剖析,分享在…...

MySQL与Redis数据一致性保障方案详解

前言 在现代分布式系统中,MySQL和Redis的结合使用非常普遍。MySQL作为关系型数据库负责持久化存储,而Redis则作为高性能缓存层提升系统的响应速度。然而,在这种架构下,如何保证MySQL与Redis之间的数据一致性是一个重要的挑战。本…...

“钉耙编程”2025春季联赛(2)题解(更新中)

1001 学位运算导致的 1002 学历史导致的 // Problem: 学历史导致的 // Contest: HDOJ // URL: https://acm.hdu.edu.cn/contest/problem?cid1151&pid1002 // Memory Limit: 524288 MB // Time Limit: 1000 ms // // Powered by CP Editor (https://cpeditor.org)#include …...

C#高级:启动、中止一个指定路径的exe程序

一、启动一个exe class Program {static void Main(string[] args){string exePath "D:\测试\Test.exe";// 修改为你要运行的exe路径StartProcess(exePath);}private static bool StartProcess(string exePath){// 创建一个 ProcessStartInfo 对象来配置进程启动参…...

【NumPy】1. 前言安装

0.前言 需要具备[[Python]]基础 定义: NumPy 通常与 [[SciPy]](Scientific Python)和 [[Matplotlib]](绘图库)一起使用, 这种组合广泛用于替代 [[MatLab]],是一个强大的科学计算环境,有助于我…...

双向链表的理解

背景 代码中经常会出现双向链表,对于双向链表的插入和删除有对应的API函数接口,但直观的图表更容易理解,所以本文会对rt-thread内核代码中提供的双向链表的一些API函数操作进行绘图,方便后续随时查看。 代码块 rt-thread中提供…...

基于Spring Boot的家庭理财系统app的设计与实现(LW+源码+讲解)

专注于大学生项目实战开发,讲解,毕业答疑辅导,欢迎高校老师/同行前辈交流合作✌。 技术范围:SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容:…...

【测试】每日3道面试题 3/31

长期更新,建议关注收藏点赞。 单元测试策略有哪些,主要内容。 白盒测试黑盒测试基于异常和边界的测试 主要内容:测试用例设计、执行、结果分析、自动化beta测试和alpha测试主要区别 主要区别:测试环境测试者 alphabeta时间先后测…...

Go 语言常见错误

代码及工程组织 1、意外的变量隐藏 示例代码: package mainimport ("fmt" )var FunTester "全局变量 FunTester"func main() {FunTester : "局部变量 FunTester"fmt.Println(FunTester) }func showGlobal() {fmt.Println(FunTest…...

216. 组合总和 III 回溯

目录 问题描述 解决思路 关键点 代码实现 代码解析 1. 初始化结果和路径 2. 深度优先搜索(DFS) 3. 遍历候选数字 4. 递归与回溯 示例分析 复杂度与优化 回溯算法三部曲 1. 路径选择:记录当前路径 2. 递归探索:进入下…...

【Python 算法】动态规划

本博客笔记内容来源于灵神,视频链接如下:https://www.bilibili.com/video/BV16Y411v7Y6?vd_source7414087e971fef9431117e44d8ba61a7&spm_id_from333.788.player.switch 01背包 计算了f[i1],f[i]就没用了,相当于每时每刻只有…...

nginx的自定义错误页面

正常访问一个不存在的页面是会报404这个错误 我们可以自定义错误页面 error_page 404 /40x.html 然后调用location 最后创建文件 写入你想写的内容 最后实验成功 注意在nginx的配置文件里,注意在加分号 在写完配置时...

制作service列表并打印出来

制作service列表并打印出来 在Linux中,服务(Service)是指常驻在内存中的进程,这些进程通常监听某个端口,等待其他程序的请求。服务也被称为守护进程(Daemon),它们提供了系统所需的各…...

UML 4+1 视图:搭建软件架构的 “万能拼图”

UML 41 视图是一种全面描述软件架构的方法,以下为你详细介绍各个视图: 1.逻辑视图(Logical View) 概述:逻辑视图主要用于展现系统的功能架构,它聚焦于系统提供的功能以及这些功能的逻辑组织方式&#xff…...

tkinter 库(设计图形界面系统)

几何管理的应用 # tkinter 库 是Python的标准GUI库,提供了创建图形用户界面的功能。 tkinter是一个跨平台的GUI库,支持Windows、macOS和Linux等操作系统。它是Python的标准库之一,无需额外安装。 #tkinter.Entry 是 Tkinter 的输入框控件类&…...

WordPress汉主题

WordPress汉主题wphan.com(以下简称WP汉主题)是一个专注于WordPress中文主题与插件开发的专业团队。该团队致力于为中文用户提供高质量的WordPress主题和插件资源,帮助用户轻松创建专业且吸引人的网站。 WP汉主题提供多种功能丰富的WordPress主题,涵盖博…...

在线文档协作工具选型必看:14款产品对比

本文将深入对比14款在线文档协作工具:PingCode; 2. Worktile; 3. 语雀; 4. 金山文档; 5. WPS云文档; 6. Google Docs; 7. 轻雀文档; 8. Microsoft 365 Online; 9. 明道云文档等。 在数字化办公日益普及的今天,企业对高效协同的需求不断升级,在…...

分布式计算Ray框架面试题及参考答案

目录 简述 Ray 的架构设计核心组件及其协作流程 全局控制存储(GCS)在 Ray 中的作用是什么?如何实现高可用性? 对比 Ray 的任务(Task)与 Actor 模型,说明各自适用场景 解释 Ray 的 Object Store 如何实现跨节点数据共享与零拷贝传输 Ray 的分布式调度器如何实现毫秒级…...

Java虚拟机JVM知识点(持续更新)

JVM内存模型 介绍下内存模型 根据JDK8的规范,我们的JVM内存模型可以拆分为:程序计数器、Java虚拟机栈、堆、元空间、本地方法栈,还有一部分叫直接内存,属于操作系统的本地内存,也是可以直接操作的。 详细解释一下 程…...

【计算机网络】HTTP与HTTPS

文章目录 1. HTTP定义2. HTTP交互3. HTTP报文格式3.1 抓包工具-fiddler3.2 抓包操作3.3 报文格式3.3.1 请求报文3.3.2 响应报文 4. URL5. 请求头中的方法6. GET和POST的区别7. HTTP报头7.1 Host7.2 Content_Length7.3 Content_Type7.4 User-Agent(UA)7.5 Referer7.6 Cookie 8 状…...