7. 什么是零知识证明?

Claude-4.7大模型技术与KYC合规开发实践 大语言模型(LLM)通过混合专家架构(MoE)实现智能任务处理,其核心技术在于动态路由机制和上下文窗口扩展。在工程实践中,这类模型显著提升了代码生成和文档处理的效率,特别是在处理Python/JavaScript等编程语言时表现出色。随着AI技术深入企业应用,KYC验证机制成为保障数据安全的关键环节,涉及生物识别、零知识证明等隐私计算技术。开发者需要平衡模型能力与合规要求,通过分层架构设计实现安全部署,典型方案包括API网关过滤、同态加密和沙箱环境构建。当前技术演进正朝着模型轻量化和合规自动化方向发展,1b 阅读详情

6. 什么是零知识证明?

零知识证明是一种能够在不披露声明本身内容的情况下,验证声明有效性的方法。其中,“证明者”是试图证明声明的一方,“验证者”则负责验证声明的真实性。

零知识证明最早在1985年的一篇论文《交互式证明系统的知识复杂度》中被提出,该论文给出了至今仍被广泛使用的零知识证明定义:
零知识协议是一种方法,借助此方法,一方(证明者)能够向另一方(验证者)证明某个声明是真实的,并且除了该声明真实这一信息外,不会透露任何额外信息。

多年来,零知识证明不断发展,目前已在现实世界中得到广泛应用。

我们为什么需要零知识证明?

零知识证明是应用密码学领域的一项重大突破,有望显著提高个人信息的安全性。以向服务提供商证明一项声明(如“我是X国的公民”)为例,通常需要提供“证据”来支持该声明,例如国民护照或驾驶证。

然而,这种方法存在明显问题,主要是缺乏隐私保护。与第三方服务商共享的个人身份信息(PII)存储在中心化数据库中,这些数据库极易受到黑客攻击。随着身份盗用问题日益严峻,人们迫切需要采用更能保护隐私的方式来分享敏感信息。

零知识证明通过在不透露相关信息的情况下证明声明的有效性,有效解决了这一问题。零知识协议以声明(称为“证人”)作为输入,然后生成一个关于其有效性的简要证明。这种证明能够有力地保证一项声明是真实的,同时不会透露创建声明时所使用的信息。

回到前面的例子,你只需提供零知识证明即可证明自己的公民身份声明。验证者只需检查证明中的一些属性是否属实,从而确认背后声明的真实性。

零知识证明的用例

匿名支付

信用卡支付通常对多方可见,包括支付服务提供商、银行和其他相关方(如政府部门)。金融监管有助于识别非法活动,但同时也损害了普通民众的隐私。

加密货币旨在为用户提供一种私密的、点对点的交易手段。然而,大部分加密货币的交易在区块链上是公开可见的。虽然用户身份通常是匿名的,但也可以主动与现实世界的身份相关联(例如在Twitter或GitHub的个人资料上包含以太坊地址),或者通过一些基本的链上或脱链数据分析来关联现实世界身份。

有一些专门为完全匿名交易设计的“隐私币”。注重隐私的区块链,如Zcash和Monero,会屏蔽交易细节,包括发送人和接收人的地址、资产类型、数量和交易时间线。

通过在协议中加入零知识技术,注重隐私的区块链网络允许节点在无需访问交易数据的情况下验证交易。

零知识证明也用于在公共区块链上对交易进行匿名处理。例如,Tornado Cash是一个去中心化的非托管服务,允许用户在以太坊上进行私密交易。Tornado Cash使用零知识证明来模糊化交易细节,保障金融隐私。不幸的是,由于这些是“主动选择加入”的隐私工具,它们与非法活动存在关联。为了克服这一问题,隐私最终必须成为公开区块链的默认设置。

身份保护

目前的身份管理系统使个人信息面临风险。零知识证明能够帮助个人验证身份,同时保护敏感细节。

零知识证明在去中心化身份中特别有用。去中心化身份(又称“自主身份”)让个人能够控制私人身份信息的访问。在不透露税号或护照细节的情况下,证明你的公民身份就是利用零知识技术实现去中心化身份的一个典型例子。

认证

使用在线服务需要证明身份和访问这些平台的权限。这通常需要提供个人信息,如姓名、邮箱地址、出生日期等。用户可能需要记住长长的密码,同时也面临无法访问的风险。

然而,零知识证明可以简化平台和用户的认证流程。一旦通过公开输入(如证明用户是平台成员的数据)和私密输入(如用户详细信息)生成零知识证明,用户就能在需要访问服务时,使用该证明来认证身份。这改善了用户体验,同时组织也无需存储大量用户信息。

可验证计算

可验证计算是零知识技术用于改进区块链设计的另一种应用。可验证计算允许我们将计算外包给另一个实体,同时保留可验证的计算结果。该实体将计算结果和验证程序被正确执行的证据一起提交。

可验证计算对于在不降低安全性的前提下提高区块链上的处理速度至关重要。要理解这一点,需要了解拟议的以太坊扩容解决方案之间的差异。

链上扩容方案,如分片,需要对区块链的基础层进行大量修改。然而,这种方法非常复杂,如果在实现过程中出错,则会危及以太坊的安全模型。

脱链扩容解决方案无需重新设计以太坊的核心协议。相反,它们依靠外包计算模型来提高以太坊基础层的吞吐量。

以下是实际运作过程:

  • 以太坊不处理每一个交易,而是将执行放到一个单独的链上。
  • 在处理完交易后,另一条链返回结果,然后应用到以太坊的状态上。

这样做的好处是,以太坊无需进行任何执行,只需将外包计算的结果应用到其状态中。这减少了网络拥堵,也提高了交易速度(脱链协议为快速执行进行了优化)。

链上需要一种方法来验证脱链交易,而无需重新执行它们,否则脱链执行就失去了其价值。

这就是可验证计算发挥作用的地方。当一个节点在以太坊外执行交易时,它提交一个零知识证明来证明脱链执行的正确性。这个证明(称为有效性证明)保证了一个交易是有效的,允许以太坊把结果应用到状态中 — 无需等待任何人提出异议。

零知识卷叠和 Validium 是两个脱链扩容的解决方案,它们使用有效性证明来提供安全的可扩容性。这些协议执行了数以千计的脱链交易,并提交了用于以太坊验证的证明。一旦证明被验证,这些结果就会被立即应用,允许以太坊在不增加基础层计算量的情况下处理更多的交易。

减少链上投票中的贿赂和串通

区块链投票方案具有诸多有利特点:它们是完全可审计的、安全抗攻击、抗审查以及不受地域限制。但即使是链上投票方案也难以避免串通问题。

串通的定义是“通过欺骗、诈骗和误导他人来协调,达到限制公开竞争的目的”,串通的形式可能是恶意行为者通过行贿来影响投票。例如,Alice可能收到Bob的贿赂,让她在选票上投给选项B,即使她更倾向于选项A。

贿赂和串通限制了任何以投票作为信号机制的过程的有效性(特别是在用户可以证明他们如何投票的情况下)。这可能会产生重大影响,特别是在通过投票来分配稀缺资源的情况下。

例如,二次融资机制根据捐款来衡量对不同公益项目中某些选项的偏好。每笔捐款都算作对某一特定项目的“投票”,获得更多投票的项目将从匹配资金池中获得更多资金。

使用链上投票使得二次融资容易受到串通的影响:区块链交易是公开的,所以行贿者可以检查受贿者的链上活动,看他们是如何“投票”的。这种方式使得二次融资不再是一个根据社区的集体偏好来分配资金的有效手段。

幸运的是,更新的解决方案,例如MACI(最低限度的反串通基础设施),正在使用零知识证明来让链上投票(如二次融资机制)能够抵制贿赂和串通。MACI是一个智能合约和脚本的集合,它允许中央管理员(称为“协调员”)汇总票数和统计结果,无需暴露每个人是如何投票的。即便如此,仍然可以验证投票是否被正确计数,或确认某个人参加了该轮的投票。

MACI是如何与零知识证明协作的?

一开始,协调员在以太坊部署MACI合约,之后用户就可以注册投票(通过把它们的公钥注册到智能合约上)。用户通过发送经公钥加密后的信息给智能合约来完成投票(一个有效投票必须使用与用户身份关联的最新公钥来签名,另外还有其他标准)。然后,协调员在投票期结束后处理所有的信息,统计票数,在链上验证结果。

在MACI中,零知识证明用来确保计算的正确性,避免协调员错误地处理投票和汇总结果。这是通过要求协调员生成零知识简洁非交互式知识论证证明来实现的,验证a)所有的信息都被正确处理;b)最后的结果与所有有效投票总和对应。

因此,即便没有分享每个用户的投票明细(通常如此),MACI也能保证计算过程中计算结果的完整性。这一特点有助于减少基本的串通方案的有效性。通过之前Bob贿赂Alice来给某个选项投票的例子,我们可以探索这种可能性:

  • Alice通过发送她的公钥到智能合约来注册投票。
  • Alice同意投票给选项B,以此来换取Bob的贿赂。
  • Alice投票给选项B。
  • Alice偷偷发送一个加密交易来更改与她身份关联的公钥。
  • Alice发送另一个(加密的)消息到智能合约,使用新的公钥给选项A投票。
  • Alice向Bob展示交易,显示她已经投票给了选项B(投票是无效的,因为最初的那个公钥在系统中已经不再跟Alice的身份关联)。
  • 在处理消息时,协调员跳过Alice投给选项B的选票,只把选项A的投票纳入计数。因此,Bob串通Alice和操纵链上投票的意图失败了。

使用最低限度的反串通基础设施时,确实需要相信协调员不会与行贿者串通或者试图自己来贿赂投票者。协调员可以解密用户消息(创建证明的时候需要),以确保它们可以准确验证每个人是如何投票的。

在协调员保持诚实的情况下,MACI代表了一个强大的工具,保证了链上投票的神圣性。这解释了它为何在二次融资应用中如此受欢迎(例如 clr.fund),二次融资严重依赖于每个人投票选择的完整性。

零知识证明如何运作?

零知识证明允许你证实一个声明是否真实,无需分享声明的内容以及你是如何发现其真实性的。为了做到这点,零知识证明依靠算法获取一些数据作为输入,然后输出“真”或“假”。

零证明协议需要满足以下标准:

  1. 完备性:如果输入是有效的,那么零知识协议应该始终返回“真”。因此,如果所依据的声明是真的,同时证明者和验证者都诚实,那么证明就能被接受。
  2. 可靠性:如果输入是无效的,那么理论上不可能欺骗零知识协议输出“真”。因此,一个说谎的证明者无法忽悠一个诚实的验证者相信一个无效的声明是有效的(小概率事件除外)。
  3. 零知识:验证者除了知道声明的有效性或虚假性之外,其余一概不知(他们对声明内容“一无所知”)。这项要求也阻止了验证者从证明中推导出原始输入(声明的内容)。

零知识证明的基本形式由三个要素组成:证人、挑战和回复。

  • 证人:通过零知识证明,证明者想要证明对一些隐藏信息的了解。这些秘密信息就是证明的“证人”,证明者基于对证人的了解设立了一组问题,这些问题只有了解信息的一方才能回答出来。因此,证明者随机选择一个问题来发起证明,计算问题答案,然后发送给验证者。
  • 挑战:验证者从问题集里随机挑选另外一个问题,然后让证明者来回答。
  • 回复:证明者接收问题,计算答案,然后把答案发送给验证者。证明者的回复让验证者可以检验证明者是否真的可以接触到证人。为了确保证明者并不是偶然盲目猜对答案的,验证者会再选择一个问题来提问。通过多次重复这个过程,证明者造假的可能性会极大的降低,直到最终验证者满意。

以上描述了“交互式零知识证明”的结构。早期的零知识协议使用交互式证明,验证一个声明的有效性需要证明者和验证者之间来回多次沟通。

一个比较好的展示交互式证明是如何运转的例子是Jean-Jacques Quisquater非常有名的阿里巴巴山洞故事。在故事里,Peggy(证明者)想要向Victor(验证者)证明她知道打开魔法之门的暗号,但她又没有透露暗号是什么。

非交互式零知识证明

虽然是革命性的,但互动式证明的作用有限,因为它要求双方同时在线,反复互动。即使验证者相信证明者是诚实的,该证明也不能用于独立验证(计算一个新的证明需要证明者和验证者之间一个新的信息集)。

为了解决这个问题,Manuel Blum、Paul Feldman和Silvio Micali提出了第一个非交互式零知识证明,证明者和验证者将有一个共享的密钥。这能让证明者表明他们对某些信息(即证人)的了解,而不提供信息本身。

与交互式证明不同的是,非互动式证明只需要参与者(证明者和验证者)之间进行一轮沟通。证明者把秘密信息输入到一个特殊的算法中,然后计算出一个零知识证明。这个证明会被发送给验证者,验证者使用另一个算法来检验证明者是否知道秘密信息。

非交互式证明减少了证明者和验证者之间的沟通,让零知识证明更高效。另外,一旦生成了证明,任何人(可访问共享密钥和验证算法)都可以对其进行验证。

零知识证明的类型

零知识简洁非交互式知识论证 (ZK-SNARK)

ZK-SNARK是零知识简洁非交互式知识论证的缩写。零知识简洁非交互式知识论证协议具有以下特点:

  • 零知识:验证者可以验证声明的完整性,而不需要知道关于该声明的任何其他信息。验证者对声明的唯一了解就是它是真还是假。
  • 简洁:零知识证明比证人小,可以快速验证。
  • 非交互式:该证明是非交互式的,因为证明者和验证者之间只需要交互一次,不像交互式证明需要多轮的沟通。
  • 论证:该证明满足“可靠性”要求,因此基本不可能作弊。
  • (的)知识:如果不能获取秘密信息(证人),就无法构建零知识证明。证明者在没有证人的情况下计算一个有效的零知识证明是非常困难的,即便不是不可能。

前面提到的“共享密钥”是指证明者和验证者同意在生成和验证证明时使用的公共参数。生成公共参数(统称为通用参考编码 (CRS))是一个敏感的操作,因为它在协议安全性方面非常重要。如果用于生成通用参考编码的熵(随机数)落入到不诚实的证明者手上,他们就能计算虚假证明。

[多方计算 (MPC)]是一种在生成公共参数时降低风险的方法。多个参与方参与到信任设置仪式,每个人提供一些随机数值来生成通用参考编码。只要有一个诚实的参与方销毁了他们那部分的熵,零知识简洁非交互式知识论证协议就能保持计算的可靠性。

信任设置要求用户信任参数生成的参与者。然而,ZK-STARK的发展使其能在非信任的设置下证明协议。

零知识可扩容透明知识论证 (ZK-STARK)

ZK-STARK是零知识可扩容透明知识论证的缩写。ZK-STARK类似于ZK-SNARK,除了它是:

  • 可扩容:当证人的规模比较大时,ZK-STARK生成和验证证明比零知识简洁非交互式知识论证要快。随着证人规模的增加,简洁的非交互式知识论证证明的证明和验证时间只会略微增加(简洁的非交互式知识论证证明和验证时间与证人规模呈线性增长)。
  • 透明:ZK-STARK依赖于可公开验证的随机数来生成用于证明和验证的公共参数,而不是信任设置。因此,它比零知识简洁非交互式知识论证更加透明。

ZK-STARK会产生比零知识简洁非交互式知识论证更大的证明,这意味着它通常具有更高的验证开销。然而,在有些情况下(如证明大型数据集),ZK-STARK可能比零知识简洁非交互式知识论证更具成本效益。

使用零知识证明的缺点

硬件成本

生成零知识证明涉及到非常复杂的计算,最好在专用机器上运行。由于这类机器价格昂贵,普通人通常买不起。此外,想要使用零知识技术的应用必须考虑硬件成本 — 这可能会增加终端用户的费用。

证明验证费用

验证证明也需要复杂的计算,这增加了在应用中实施零知识技术的成本。这种成本在证明计算方面尤其突出。例如,零知识卷叠在以太坊上支付约500,000单位燃料来验证一个零知识简洁非交互式知识论证证明,零知识可扩容透明知识论证则需要更高的费用。

信任假设

在零知识简洁非交互式知识论证中,公共参考字符串(公共参数)只生成一次,然后可供零知识协议的参与方重复使用。公共参数由可信设置仪式创建,其参与者假定是诚实的。

但是并没有什么方法能让用户评估参与者是否诚实,用户必须相信开发者的话。零知识可扩容透明知识论证不存在信任假设,因为生成字符串所使用的随机数是可公开验证的。与此同时,研究人员正在研究零知识简洁非交互式知识论证的非可信设置,以增加证明机制的安全性。

量子计算的威胁

零知识简洁非交互式知识论证使用椭圆曲线加密法进行加密。虽然椭圆曲线离散对数问题目前被认为是难以破解的,但在未来,量子计算机的发展可能会打破这种安全模式。
由于仅使用抗碰撞的哈希函数确保安全性,零知识可扩容透明知识论证被认为不会受到量子计算的威胁。与椭圆曲线加密法中使用的公私密钥对不同,抗碰撞哈希算法更难被量子计算算法破解。

延伸阅读

Sin7Y 团队全面解读——如何使用 Halo2 开发电路 ​ 作者:ZKSwap、Sin7Y 团队联合撰写 文章来源:zks.org 阅读详情

相关推荐

7、非对称加密中的签名、安全概念与零知识证明

本文探讨了非对称加密中签名的强不可伪造性概念及其在加密文本、零知识证明和加密货币中的应用。详细分析了强存在性不可伪造性(SEUF-CMA)的安全定义、实际签名方案(如Schnorr签名、ECDSA)的安全性问题,以及如何构建强不可伪造的签名方案。同时,深入介绍了零知识证明的定义、属性及其在隐私保护、区块链和云计算等领域的应用。结合签名和零知识证明,探讨了其在投票系统等场景中的实际应用,并展望了未来技术的发展方向。

r7s8t的博客 89

zkdrops性能优化技巧:提升零知识证明生成与验证效率的7个方法

zkdrops作为基于零知识证明的以太坊私有空投解决方案,其性能优化直接影响用户体验和系统扩展性。本文将分享7个实用技巧,帮助开发者和用户显著提升零知识证明的生成速度与验证效率,让私有空投流程更流畅。 ## 1. 选择高效的哈希函数实现 零知识证明中哈希函数的选择对性能有决定性影响。zkdrops项目提供了多种哈希函数实现,包括Poseidon、Mimc和Pedersen,其中Poseidon

gitblog_00280的博客 470

告别虚拟机!用ZYNQ7000和PYNQ 2.6.0打造一个能实时识别人脸的“智能摄像头”

本文详细介绍了如何利用Xilinx ZYNQ7000开发板和PYNQ 2.6.0框架构建实时人脸识别系统。通过硬件加速和嵌入式开发技术,该系统实现了低延迟、低功耗的独立运行能力,适用于边缘计算和物联网应用。文章包含从环境搭建到核心功能实现的完整指南,并提供了性能优化和问题排查的实用技巧。

weixin_42543046的博客 391

【ZK-SNARKs深度解析】:掌握零知识证明的7个核心原理

掌握区块链隐私保护的零知识证明核心技术,深入解析ZK-SNARKs的7大原理。涵盖身份验证、隐私交易等应用场景,揭示无需透露信息即可完成验证的密码学机制,提升安全与效率。理解其在金融、Web3中的关键优势,值得收藏并点击了解。

CompiGap的博客 1364

单细胞分析避坑指南:你的Harmony批次矫正真的做对了吗?

本文深入探讨了单细胞转录组分析中Harmony批次矫正的正确使用方法,解析了其工作原理及常见误区。通过详细参数调优指南和实战案例,帮助研究者避免过度矫正,确保生物学信号的有效保留。特别关注Harmony在单细胞数据分析中的关键参数设置和结果验证方法。

weixin_31099291的博客 299

AI 生成测试报告:从 2 小时到 10 分钟

本文分享了AI在汽车电子测试报告生成中的应用案例。作者以某车企ECU测试项目为例,对比传统报告方式(每天2小时)与AI辅助方式(每天20分钟),效率提升83%。文章详细介绍了测试报告的核心要素(测试概况、结果、问题分析、发布建议)和不同类型报告(日报、周报、总结报告)的特点,并提供了从CANoe导出测试数据的Python解析脚本示例。通过AI自动化处理,大幅减少了测试工程师在报告整理上的时间投入,为汽车电子测试工作提供了实用效率提升方案。

小明的博客 444

Cosmos-Reason1-7B作品集:覆盖图灵机判定、P/NP问题解释、密码学零知识证明示例

本文介绍了如何在星图GPU平台上一键自动化部署Cosmos-Reason1-7B推理交互工具镜像,实现本地化AI推理应用。该工具专精于逻辑推理与复杂问题求解,典型应用如通过零知识证明示例讲解密码学概念,帮助用户安全、高效地进行隐私保护下的交互式推理与学习。

weixin_42153793的博客 305

MIPI信号的分析--结合示波器实际测试波形

如果排查的思路对你有帮助,请记住 消雨匆匆 or 大吊工。码字和排查很累,仅此而已 ,硬件不是抄电路,拿烙铁,懂点软件,细致分析,找问题和破案搜集线索是一样的。 部分内容来自于此博客的大神总结: http://www.elecfans.com/news/wangluo/20170323499614.html http://www.elecfans.com/yuanqijian/jieko...

消雨匆匆 4万+

零知识证明系统选择指南:7个关键因素帮你做出最佳决策

在当今区块链和隐私保护技术快速发展的时代,零知识证明(ZKPs)已成为保护数据隐私的关键技术。然而面对SNARKs、STARKs、Bulletproofs等多种零知识证明系统,如何选择最适合自己项目的ZK系统成为了开发者面临的重要挑战。本文将为你详细解析7个关键因素,帮助你做出明智的选择!🚀 ## 🤔 什么是零知识证明系统? 零知识证明是一种加密协议,允许一方向另一方证明某个陈述的真实性,

gitblog_00002的博客 1018

IBM System x3650 M5 IMM配置

1、IMM基本介绍 IMM,全称是Intel Mobile Module是IBM服务器上的集成管理模块,该模块是独立于服务器系统,可以通过一个单独的IP地址,使用Web和虚拟端口方式直接启动、停止和管理远程服务器,即使主板、处理器或者内存故障导致主机无法启动,也依然可以远程管理服务器,可以远程直接操作启动画面和服务器工作界面。 2、IP地址配置 2.1 通过Web方式修改IP地址 IBM服...

血饮渊虹的博客 4万+

为 ABAP BSP 与 ICF 量身打造的错误页实践:从 CX_ROOT 到 SICF 的端到端落地指南

摘要 本文系统讲解SAP ABAP平台中BSP与ICF层的错误页定制方法。在BSP层,通过标记错误页属性和绑定ERROR_OBJECT异常对象,实现友好的错误展示与日志记录。ICF层通过SICF事务码统一配置错误页、登录与登出逻辑,支持服务树继承。文章包含可直接落地的代码示例,并针对现代Fiori架构给出演进建议,帮助开发者提升用户体验与系统安全性。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 225

蚂蚁区块链第7课 零知识证明隐私保护原理和蚂蚁BAAS接口调用实现

1,摘要 本文试图普及隐私保护和零知识证明的相关技术知识,尝试使用更简单的描述来理解复杂的数学算法和技术原理。同时,也提供了蚂蚁区块链已经实现的隐私保护的接口函数说明。 本文涉及的专业知识有零知识证明,zk-SNARKs和 BulletProofs(防弹证明),佩德森承诺等。 2,零知识证明隐私保护概要 **零知识证明,英文名为Zero-Knowledge Proof,**是由S.Goldwas...

辉哥的技术投资路 2376

非技术面试题精选大全

回答提示:一般人回答这个问题过于平常,只说姓名、年龄、爱好、工作经验,这些在简历上都有,其实,企业最希望知道的是求职者能否胜任工作,包括:最强的技能、最深入研究的知识领域、个性中最积极的部分、做过的最成功的事,主要的成就等,这些都可以和学习无关,也可以和学习有关,但要突出积极的个性和做事的能力,说得合情合理企业才会相信。企业喜欢有礼貌的求职者。

吃面爱放香菜的博客 435

零知识证明 SNARKs 第7部分:椭圆曲线配对

In Part VI, we saw an outline of the Pinocchio zk-SNARK. We were missing two things – an HH that supports both addition and multiplication that is needed for the verifier’s checks, and a transition f...

跨链技术践行者 1万+

项目篇 | 图书管理系统 | 管理员模块 | 概述

图书管理系统管理员模块概述

百栗.的博客 404

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

零知识证明+多Agent协商,链上自治系统如何实现?——从理论突破到主网验证的7个关键跃迁

破解链上自治难题:零知识证明+多Agent协商赋能AI Agent区块链应用。适用于去中心化治理、跨链协同等场景,兼顾隐私保护与协作效率。涵盖理论建模、协议设计到主网验证的7个关键跃迁,已通过真实链上测试。值得收藏

QuickCode的博客 332

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

(零知识证明)关于gnark包不匹配导致链码安装失败的问题

环签名是一种简化的群签名,环签名中只有环成员没有管理者,不需要环成员间的合作,签名者利用自己的私钥和集合中其他成员的公钥就能独立的进行签名,集合中的其他成员可能不知道自己被包含在其中。环签名的优势除了能够对前者进行无条件匿名外,环中的其他成员也不能伪造真实的签名者签名。环签名在强调匿名性的同时,增加了审计监管的难度。环签名的安全性正确性:按照正确的签名步骤对消息进行签名,并且传播过程签名不被篡改,则环签名满足验证等式。...

lakersssss24的博客 1903

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain&#39;s apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath(&#39;DeepLearnToolbox&#39;));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand(&#39;state&#39;,0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W&#39;); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand(&#39;state&#39;,0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = &#39;sigm&#39;;%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, &#39;Too big error&#39;);```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand(&#39;state&#39;,0)sae = saesetup([784 100]);sae.ae{1}.activation_function = &#39;sigm&#39;;sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)&#39;)% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = &#39;sigm&#39;;nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, &#39;Too big error&#39;);```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x&#39;,28,28,60000))/255;test_x = double(reshape(test_x&#39;,28,28,10000))/255;train_y = double(train_y&#39;);test_y = double(test_y&#39;);%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you&#39;ll get around 1.2% errorrand(&#39;state&#39;,0)cnn.layers = { struct(&#39;type&#39;, &#39;i&#39;) %input layer struct(&#39;type&#39;, &#39;c&#39;, &#39;outputmaps&#39;, 6, &#39;kernelsize&#39;, 5) %convolution layer struct(&#39;type&#39;, &#39;s&#39;, &#39;scale&#39;, 2) %sub sampling layer struct(&#39;type&#39;, &#39;c&#39;, &#39;outputmaps&#39;, 12, &#39;kernelsize&#39;, 5) %convolution layer struct(&#39;type&#39;, &#39;s&#39;, &#39;scale&#39;, 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, &#39;Too big error&#39;);```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand(&#39;state&#39;,0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, &#39;Too big error&#39;);%% ex2 neural net with L2 weight decayrand(&#39;state&#39;,0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, &#39;Too big error&#39;);%% ex3 neural net with dropoutrand(&#39;state&#39;,0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, &#39;Too big error&#39;);%% ex4 neural net with sigmoid activation functionrand(&#39;state&#39;,0)nn = nnsetup([784 100 10]);nn.activation_function = &#39;sigm&#39;; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, &#39;Too big error&#39;);%% ex5 plotting functionalityrand(&#39;state&#39;,0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = &#39;softmax&#39;; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, &#39;Too big error&#39;);%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand(&#39;state&#39;,0)nn = nnsetup([784 20 10]); nn.output = &#39;softmax&#39;; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, &#39;Too big error&#39;);```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

sero-cash环境搭建及运行

在研究零知识证明时候,发现了18年底一个叫超零币(SERO)的新兴电子币,据说使用的super-ZK速度比Zcash的zk-SNARKs快20倍,对此非常感兴趣,找到官方博客,进行环境搭建。 官方博客:https://blog.csdn.net/SERO_OFFICIAL/article/details/84332849 最初使用macOS搭建,基本完成时,发现动态链接库报错: 发...

reigns的博客 1644

使用 Azure.Messaging.EventHubs(.NET):Event Hubs 高吞吐事件流发送与接收实战指南

本篇技术指南以 [azure-eventhub-dotnet SKILL 文档](https://pre-link.gitcode.com/i/29b51c418e9269b34a434810ee7438d2) 为核心骨架,系统讲解 Azure Event Hubs .NET SDK 的安装、认证、四种客户端选型、批量发送、缓冲发送、生产级接收(EventProcessorClient)、分区操作

gitblog_00480的博客 662

零知识证明加速器zkSpeed:突破HyperPlonk性能瓶颈

零知识证明(ZKP)作为隐私计算的核心技术,通过数学方法实现验证过程的信息最小化披露。其底层依赖椭圆曲线多标量乘法(MSM)和多项式承诺等密码学原语,在区块链扩容、隐私交易等场景具有重要价值。传统CPU处理ZKP时面临严重的计算瓶颈,特别是HyperPlonk协议中的稀疏MSM和树形计算会消耗68%以上的证明时间。硬件加速器zkSpeed通过创新的模块化架构设计,在TSMC 7nm工艺下实现700倍加速比,关键突破包括:动态资源配置的MSM单元处理稀疏-稠密混合计算、DFS+BFS混合遍历算法优化MLE构建

weixin_30291791的博客 350

CircomLib核心组件解析:SHA256与MIMC哈希电路实现原理详解

CircomLib是零知识证明领域中最基础且实用的电路库,为开发者提供了SHA256、MIMC等多种密码学哈希函数的电路实现。本文将深入剖析这两种核心哈希电路的设计原理,帮助新手快速理解零知识证明中的密码学原语实现。 ## 一、SHA256哈希电路架构与实现 SHA256作为密码学领域广泛使用的哈希函数,其电路实现是区块链和隐私计算中的关键组件。CircomLib通过模块化设计将SHA256分

gitblog_01025的博客 337

MTU加速零知识证明:混合遍历策略与硬件优化

零知识证明(ZKP)作为密码学核心技术,通过不泄露信息的方式验证陈述真实性,在区块链和隐私计算中至关重要。其核心挑战在于处理默克尔树和多线性多项式扩展等树形数据结构时的计算效率问题,尤其是内存带宽和并行化瓶颈。MTU(多功树单元)创新性地采用混合遍历策略,结合可配置PE阵列和分层内存子系统,动态适配BFS/DFS模式,显著提升ZKP性能。该技术特别适用于HyperPlonk等协议,通过硬件架构协同设计解决计算密集与数据密集混合负载问题,在zkRollup等场景中实现从秒级到毫秒级的证明加速。

weixin_30856725的博客 340

Qwen2.5-7B-Instruct区块链应用:共识机制+隐私保护+跨链方案生成

本文介绍了如何在星图GPU平台自动化部署Qwen2.5-7B-Instruct镜像,实现区块链技术方案的智能生成。该镜像能够快速生成共识机制、隐私保护和跨链交互等专业方案,显著提升区块链项目的开发效率与应用落地能力。

weixin_35750747的博客 354

零知识证明

零知识证明学习笔记

RenLJ1895的博客 7032

天外客AI翻译机零知识证明身份验证探索

本文探讨天外客AI翻译机如何利用零知识证明(ZKP)实现设备身份安全认证,支持离线验证、防克隆与匿名认证。基于Schnorr协议与Curve25519,在STM32H7上实现80毫秒内完成验证,仅需64字节通信开销,适用于嵌入式环境。

weixin_31459297的博客 785

【Rust 日报】2020-11-04 bacon: 幕后代码检查工具

async-std v1.7.0 发布增加了 tokio-03 的 flag , 可以很好地适配 Tokio 0.3 的 runtime。更新了一些依赖https://github.co...

Rust语言学习交流 335
上一篇: 6. 什么是桥梁?
下一篇: 8. 什么是以太坊节点?
voidmort
博客等级 码龄9年 13粉丝 82原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值