ZKP15.2 Formal Methods in ZK (Part I)

ZKP学习笔记

ZK-Learning MOOC课程笔记

Lecture 15: Secure ZK Circuits via Formal Methods (Guest Lecturer: Yu Feng (UCSB & Veridise))

15.2 Formal Methods in ZK (Part I)

  • Circuits Workflow
    在这里插入图片描述

    • Source Code: Witness Generation and Constraints
    • Witness Generation and Constraints should (generally) be equivalent!
  • What is Equivalence
    在这里插入图片描述

    • Every input-output of P must satisfy C
    • Every (x,y) which satisfies C must be an input-out pair of P
  • Equivalence Violations
    在这里插入图片描述

    • Underconstrained Bugs: Verifier can accept bad inputs/ outputs
  • A Taxonomy of ZK Bugs
    在这里插入图片描述

  • Unconstrained Signals

    • Corresponds to signals whose constraints always evaluate to true, accepting everything

    • Example: Underconstrained Output
      在这里插入图片描述

      • Error: for (var i = 0; i< n, i++)
      • No constrains over the last element of output
      • Attacker can pass in any value for out 2
  • Unsafe Component Usage

    • Sub-circuits often assume constraints are placed on inputs and outputs

    • Corresponds to cases where the use of a sub-circuit does not follow

    • Example: Under-Constrained Sub-Circuit Output
      在这里插入图片描述

      • Missing constraint lt.out === 0
      • Without the missing constraint, attackers can withdraw more funds than they have
  • Constraint/Computation Discrepancy

    • Not all computation can be directly expressed as a constraint

    • Corresponds to constraints that do not capture a computation’s semantics

    • Example: No Zero Inverse
      在这里插入图片描述

      • Accepts arbitrary out when a and b are 0!
  • Circuit Dependence Graphs (CDG)

    • Goal: Identify discrepancies between computation and constraints

    • Data dependence <–

    • Constrain ===
      在这里插入图片描述

    • CDG Example
      在这里插入图片描述

在这里插入图片描述

  • Vanguard Framework
    在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

微信小程序开发——项目开发入门

版权声明 本文原创作者&#xff1a;谷哥的小弟作者博客地址&#xff1a;http://blog.csdn.net/lfdfhl 概述 本文重点介绍微信小程序开发者工具的下载与安装与项目开发入门。 下载开发者工具 请在官方网站下载微信小程序开发工具&#xff1b;图示如下&#xff1a; 请依据实际…

Javaweb之前端工程化的详细解析

3 前端工程化 3.1 前端工程化介绍 我们目前的前端开发中&#xff0c;当我们需要使用一些资源时&#xff0c;例如&#xff1a;vue.js&#xff0c;和axios.js文件&#xff0c;都是直接再工程中导入的&#xff0c;如下图所示&#xff1a; 但是上述开发模式存在如下问题&#xff…

【黑马甄选离线数仓day06_核销主题域开发】

1. 核销主题_DWD和DWM层 1.0 ODS层 操作数据存储层: Operate Data Store 核心理念: 几乎和源数据保持一致,粒度相同 注意事项: 同步方式(全量同步,全量覆盖,增量仅新增,增量新增和更新) 内部表 分区表(部分) 指定字符分隔符 orc zlib 第二天的时候已经完成了从mysql以及sq…

手把手教你:基于python+Django的英文数据分析与可视化系统

系列文章 手把手教你&#xff1a;基于Django的新闻文本分类可视化系统&#xff08;文本分类由bert实现&#xff09;手把手教你&#xff1a;基于python的文本分类&#xff08;sklearn-决策树和随机森林实现&#xff09;手把手教你&#xff1a;基于TensorFlow的语音识别系统 目录…

多线程(补充知识)

STL库&#xff0c;智能指针和线程安全 STL中的容器是否是线程安全的? 不是. 原因是, STL 的设计初衷是将性能挖掘到极致, 而一旦涉及到加锁保证线程安全,会对性能造成巨大的影响. 而且对于不同的容器, 加锁方式的不同, 性能可能也不同(例如hash表的锁表和锁桶). 因此 STL 默认…

jq——实现弹幕滚动(往左滚动+往右滚动)——基础积累

最近同事在写弹幕功能&#xff0c;下面记录以下代码&#xff1a; 1.html代码 <div id"scrollContainer"></div>2.引入jq <script src"./script/jquery-1.8.3.js" type"text/javascript"></script>3.jq代码——往左滚…

conda环境下 ERROR: CMake must be installed to build dlib问题解决

1 问题描述 pip install -r requirements.txt 在构建video_retalking项目过程中&#xff0c;使用命令安装依赖包时&#xff0c;出现如下错误&#xff1a; Building wheels for collected packages: face-alignment, dlib, ffmpy, futureBuilding wheel for face-alignment …

装饰者设计模式

package com.jmj.pattern.decorator;/*** 快餐类(抽象构建角色)*/ public abstract class FastFood {private float price;private String desc;public float getPrice() {return price;}public void setPrice(float price) {this.price price;}public String getDesc() {retu…

如何提高工作效率和决策能力?试试宽屏尺寸的可视化大屏

[作者整理了17份宽屏尺寸的可视化大屏源文件&#xff0c;开箱即用&#xff0c;支持二次开发&#xff01;有需要可私我发你提取码哈~&#xff01;] 随着科技的不断发展&#xff0c;宽屏尺寸的可视化大屏已经成为了商务、政府和企业等领域中不可或缺的一部分。这种大屏幕具有高清…

链接1:编译器驱动程序

文章目录 GNU编译器示例编译 GNU编译器 GNU编译器&#xff08;GNU Compiler&#xff09;是由自由软件基金会&#xff08;Free Software Foundation&#xff0c;FSF&#xff09;开发和维护的一套编译器集合。这些编译器主要用于编译各种编程语言的源代码&#xff0c;将其转换为…

【LeetCode:1457. 二叉树中的伪回文路径 | 二叉树 + DFS +回文数】

&#x1f680; 算法题 &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…

二十七、RestClient查询文档

目录 一、MatchALL查询 二、Match查询 三、bool查询 四、排序和分页 五、高亮 一、MatchALL查询 Testvoid testMatchAll() throws IOException { // 准备Request对象SearchRequest request new SearchRequest("hotel"); // 准备DSLrequest.source().q…

python+feon有限元分析|求解实例

目录 1、feon框架结构 2. 支持的单元类型 3、实例 1、feon框架结构 包含三个包&#xff1a; sa&#xff1a;结构分析包 ffa&#xff1a;流体分析包 derivation&#xff1a;刚度矩阵包 2. 支持的单元类型 Spring1D11 - 一维弹簧单元 Spring2D11 - 二维弹簧单元 Spring…

go标准库

golang标准库io包 input output io操作是一个很庞大的工程&#xff0c;被封装到了许多包中以供使用 先来讲最基本的io接口 Go语言中最基本的I/O接口是io.Reader和io.Writer。这些接口定义了读取和写入数据的通用方法&#xff0c;为不同类型的数据源和数据目标提供了统一的接…

【JavaEE初阶】——Linux 基本使用和 web 程序部署(下)

文章目录 前言一、Linux 常用命令 1.1 ls 命令 1.2 pwd 命令 1.3 cd 命令 1.4 touch 命令 1.5 cat 命令 1.6 mkdir 命令 1.7 rm 命令 1.8 cp 命令 1.9 mv 命令 1.10 man 命令 1.11 less 命令 1.12 head 命令 1.13 tail 命…

ABAP算法 模拟退火

模拟退火算法 算法原理及概念本文仅结合实现过程做简述 模拟退火算法是一种解决优化问题的算法。通过模拟固体退火过程中的原子热运动来寻找全局最优解。在求解复杂问题时&#xff0c;模拟退火算法可以跳出局部最优解获取全局最优解。 模拟退火算法包含退火过程和Metropolis算法…

八、Lua数组和迭代器

一、Lua数组 数组&#xff0c;就是相同数据类型的元素按一定顺序排列的集合&#xff0c;可以是一维数组和多维数组。 在 Lua 中&#xff0c;数组不是一种特定的数据类型&#xff0c;而是一种用来存储一组值的数据结构。 实际上&#xff0c;Lua 中并没有专门的数组类型&#xf…

供配电系统智能化监控

供配电系统智能化监控是指利用先进的监测技术、自动化控制技术、计算机网络技术等&#xff0c;对供配电系统进行实时、全方位的监测和控制&#xff0c;以实现供配电系统的安全、稳定、高效运行。 供配电系统智能化监控的主要功能包括&#xff1a; 实时数据采集&#xff1a;通过…

使用 SwiftUI 创建一个灵活的选择器

文章目录 前言可选择协议自定义化FlexiblePicker 逻辑FlexiblePicker 视图总结 前言 最近&#xff0c;在我正在开发一个在 Dribbble 上找到的设计的 SwiftUI 实现时&#xff0c;我想到了一个点子&#xff0c;可以通过一些酷炫的筛选器扩展该项目以缩小结果列表。 我决定筛选视…
最新文章