| |
|
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
| -> 区块链 -> 使用 zk-SNARK 的可编程零知识证明:第 1 部分 -> 正文阅读 |
|
|
[区块链]使用 zk-SNARK 的可编程零知识证明:第 1 部分 |
|
理论上,可以为任何数学问题构建零知识证明 (ZKP),而无需揭示此解决方案。在实践中,为一个问题开发 ZKP 通常需要发明一种全新的密码算法。它没有标准配方,需要广泛而深入的密码学知识。例如,零知识谜题涉及 ∑-protocols 、零知识密钥声明、 Pedersen 承诺和 Fiat-Shamir 启发式。 zk-SNARKs 为任意问题标准化 ZKP 生成。只需用 ZK 格式表达要证明的原始问题,例如领域特定语言 (DSL) Circom 或 Zokrates。其余的都由通用的 zk-SNARK 框架处理,隐藏了底层密码学的所有复杂性。 在 zk-SNARK 之前,为新问题构建 ZKP 类似于在设计新的 ZKP 应用程序时需要构建新的 ASIC。zk-SNARK 允许通过简单地对通用“ZK CPU”进行编程来构建新的 ZKP。前者需要一个密码学家,而后者只需要一个程序员,大大降低了ZKP的进入门槛。 为了展示这种范式转变的力量,我们用它来构建最流行的 ZKP:给定公钥的私钥知识,也就是离散对数。 通过 ZKP 证明拥有私钥要将锁定到公钥/地址的比特币转移,所有者必须证明他知道相应的私钥。但他不能简单地透露,否则比特币可能会被盗。这是通过数字签名(一种形式的 ZKP2)完成的。我们将展示另一种使用 zk-SNARK 实现相同目标的方法。 在比特币中,公钥
以下 Circom 代码在比特币的椭圆曲线
为了便于说明,我们使用标准的 double-and-add 算法。可以在此处找到更有效的算法。主循环发生在第 一旦我们有了 Circom 代码,我们就可以使用我们的通用 zk-SNARK 库来证明知道私钥,同时确保保密。我们已经展示了没有数字签名的证明! 请继续关注更多利用 zk-SNARK 的可编程性的 ZKP 示例。 致谢这篇文章的灵感来自于这篇出色的文章。 [1] 事实上,ZKP 可以针对任何 NP 问题构建。 [2] 我们在这里松散地使用 ZK。 |
|
|
|
|
| 上一篇文章 下一篇文章 查看所有文章 |
|
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
| 360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年12日历 | -2025/12/16 1:17:50- |
|
| 网站联系: qq:121756557 email:121756557@qq.com IT数码 |