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

比特币 ZK 赏金系列:第 2 部分——查找哈希冲突

在我们的零知识赏金 (ZKB) 系列的第二部分中,我们将其应用于解决哈希冲突难题。在这样的谜题中,两个不同的输入散列到相同的输出。此类赏金可用于:

  1. 充当煤矿中的金丝雀,给我们一个有价值的提醒。存在冲突是散列函数较弱的标志,因此我们可以尽早升级以减轻损失。

  2. 资助研究以发现哈希函数中的漏洞,特别是对于 MiMC 等新函数。

碰撞攻击

历史

比特币开发者彼得托德于 2013 年最初发布了用于发现各种哈希函数中的冲突的比特币赏金。SHA1 赏金是在 2017 年收集的,在谷歌破解它后不久。

最初的哈希碰撞赏金

这种原始赏金有两个缺点:

  1. 一旦有人广播包含解决方案的收集交易,矿工就可以拦截它,提取解决方案,并将奖励重定向到他们自己。

  2. 该解决方案是公开的,可以被恶意行为者利用。

ZKB 解决了这两个问题,因此只有发现碰撞的赏金收集者才能赎回它,并且只有赏金制定者才能了解解决方案。

实现

与第 1 部分一样,我们只需替换特定于应用程序的电路 C 即可验证两个原像(即散列函数的输入)不同但它们产生相同的散列。我们以 Poseidon 哈希函数为例,一种新的 ZK 友好哈希。其他哈希函数可以使用类似方式。这两个原像作为私有输入传递进来,永远不会公开透露。

template Main() {// Private inputs:signal input preimage0[16]; signal input preimage1[16];signal input db[4];                      // Seller (Bob) private key.signal input Qs[2][4];                   // Shared (symmetric) key. Used to encrypt w.// "Public" inputs that are still passed as private to reduce verifier size on chain:signal input Qa[2][4];                   // Buyer (Alice) public key.signal input Qb[2][4];                   // Seller (Bob) public key.signal input nonce;                      // Needed to encrypt/decrypt xy.signal input ew[34];                     // Encrypted solution to puzzle.// Public inputs:signal input Hpub[2];            // Hash of inputs that are supposed to be public.// As we use SHA256 in this example, we need two field elements// to acommodate all possible hash values. Assert that public inputs hash to Hpub. ///... Assert that preimages are a valid solution. //// Check preimage0 and preimage1 are differend and that they produce the same hash.var diff = 0;for (var i = 0; i < 16; i++) {diff += preimage0[i] ^ preimage1[i];}assert(diff != 0);component h0 = Poseidon(16);component h1 = Poseidon(16);for (var i = 0; i < 16; i++) {h0.inputs[i] <== preimage0[i];h1.inputs[i] <== preimage1[i];}h0.out === h1.out; Assert that (db * Qa) = Qs ... Assert that (db * G) = Qb /... Assert that encrypting w with Qs produces ew. /...
}

GitHub 上提供了完整的代码和测试,包括验证证明并支付赏金收集者的智能合约。

相关文章:

比特币 ZK 赏金系列:第 2 部分——查找哈希冲突

在我们的零知识赏金 (ZKB) 系列的第二部分中&#xff0c;我们将其应用于解决哈希冲突难题。在这样的谜题中&#xff0c;两个不同的输入散列到相同的输出。此类赏金可用于&#xff1a; 充当煤矿中的金丝雀&#xff0c;给我们一个有价值的提醒。存在冲突是散列函数较弱的标志&…...

Android9底部导航栏出现空白按钮问题分析

Android9底部导航栏出现空白按钮问题分析 底部导航栏的初始化 进入NavigationBarView初始化: 进入NavigationBarView的onFinishInflater进入NavigationBarInflaterView NavigationBarInflaterView加载单个的button回到NavigationFragment的创建流程 多次调用NavigationBarView的…...

秦时明月沧海手游阵容推荐,秦时明月沧海角色强度

秦时明月沧海角色强度如何&#xff1f;在秦时明月沧海手游中&#xff0c;您可以从大量的角色卡牌中选择并发展&#xff0c;为了顺利通过各种副本&#xff0c;玩家们需要精心搭配阵容。那么&#xff0c;具体该如何配置最强的角色呢&#xff1f; 下面&#xff0c;小编将带各位玩家…...

基于微信小程序的大学生科技竞赛竞技报名系统设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言系统主要功能&#xff1a;具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序&#xff08;小蔡coding&#xff09;有保障的售后福利 代码参考源码获取 前言 &#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计…...

crypto:摩丝

题目 根据题目所给的压缩包下载后解压&#xff0c;打开文本提示 摩斯密码&#xff0c;对照表可解码得到flag...

Docker最基本使用

1 安装&#xff1a; sudo apt-get -y install docker.io测试&#xff1a; sudo docker run hello-world成功&#xff1a; Hello from Docker! This message shows that your installation appears to be working correctly.2 查看 查看已有镜像&#xff1a; sudo docker i…...

vue2.x 迭代更新项目去掉缓存处理

找到build文件下的webpack.prod.conf.js文件 定义一个常量version const Version new Date().getTime(); 然后在.js和.css前面加上.${Version}就可以了&#xff08;注意得把原本的换成&#xff09;...

Linux高性能服务器编程 学习笔记 第八章 高性能服务器程序框架

TCP/IP协议在设计和实现上没有客户端和服务器的概念&#xff0c;在通信过程中所有机器都是对等的。但由于资源&#xff08;视频、新闻、软件等&#xff09;被数据提供者所垄断&#xff0c;所以几乎所有网络应用程序都采用了下图所示的C/S&#xff08;客户端/服务器&#xff09;…...

技术对比:Flutter vs. 传统桌面应用开发框架

在移动应用开发领域&#xff0c;Flutter已经赢得了广泛的认可和采用&#xff0c;成为了跨平台移动应用开发的瑞士军刀。然而&#xff0c;Flutter的魅力并不仅限于移动平台&#xff0c;它还可以用于开发桌面应用程序&#xff0c;为开发人员提供了一种全新的选择。本文将深入探讨…...

[C++ 网络协议] 异步通知I/O模型

1.什么是异步通知I/O模型 如图是同步I/O函数的调用时间流&#xff1a; 如图是异步I/O函数的调用时间流&#xff1a; 可以看出&#xff0c;同异步的差别主要是在时间流上的不一致。select属于同步I/O模型。epoll不确定是不是属于异步I/O模型&#xff0c;这个在概念上有些混乱&a…...

Postgresql事务测试

参考一个事务中 可以查询自己未提交的数据吗_最详细MySQL事务隔离级别及原理讲解&#xff01;&#xff08;二&#xff09;-CSDN博客 一个事务中 可以查询自己未提交的数据吗_趣说数据库事务隔离级别与原理_weixin_39747293的博客-CSDN博客 【MySql&#xff1a;当前读与快照读…...

【数据结构--排序】冒泡排序,选择排序,插入排序

&#x1f490; &#x1f338; &#x1f337; &#x1f340; &#x1f339; &#x1f33b; &#x1f33a; &#x1f341; &#x1f343; &#x1f342; &#x1f33f; &#x1f344;&#x1f35d; &#x1f35b; &#x1f364; &#x1f4c3;个人主页 &#xff1a;阿然成长日记 …...

vue pc端/手机移动端 — 下载导出当前表格页面pdf格式

一、需求&#xff1a;在手机端/pc端实现一个表格页面&#xff08;缴费单/体检报告单等&#xff09;的导出功能&#xff0c;便于用户在本地浏览打印。 二、实现&#xff1a;之前在pc端做过预览打印的功能&#xff0c;使用的是print.js之类的方法让当前页面直接唤起打印机的打印预…...

125. 验证回文串 【简单题】

题目 如果在将所有大写字符转换为小写字符、并移除所有非字母数字字符之后&#xff0c;短语正着读和反着读都一样。则可以认为该短语是一个 回文串 。 字母和数字都属于字母数字字符。 给你一个字符串 s&#xff0c;如果它是 回文串 &#xff0c;返回 true &#xff1b;否则…...

描述性统计分析

前言&#xff1a; 本专栏参考教材为《SPSS22.0从入门到精通》&#xff0c;由于软件版本原因&#xff0c;部分内容有所改变&#xff0c;为适应软件版本的变化&#xff0c;特此创作此专栏便于大家学习。本专栏使用软件为&#xff1a;SPSS25.0 本专栏所有的数据文件可在个人主页—…...

Visual Studio2019 C++ 编程问题集锦

“const char*” 类型的值不能用于初始化“char*"类型的实体 解决方案一&#xff1a; 点击项目->属性->C/C>语言->符合模式&#xff0c;将原来的“是”改为“否”即可。解决方案二&#xff1a; 在声明变量 char* 时改成 const char *即可...

链表的回文判断

思路: 找中间节点–>逆置->比较 代码&#xff1a; /*** Definition for singly-linked list.* struct ListNode {* int val;* struct ListNode *next;* };*/struct ListNode* middleNode(struct ListNode* head) { struct ListNode*slowhead; struct ListNode*f…...

281_JSON_两段例子的比较,哪一段更简洁、易懂、没有那么多嵌套

《第一份:》//组装Notificationif (bSendAINotification){BOOST_AUTO(iter_flashnotification, documentAll.FindMember("Notification"));if (iter_flashnotification != documentAll....

想要精通算法和SQL的成长之路 - 最长递增子序列 II(线段树的运用)

想要精通算法和SQL的成长之路 - 最长递增子序列 II&#xff08;线段树的运用&#xff09; 前言一. 最长递增子序列 II1.1 向下递推1.2 向上递推1.3 更新操作1.4 查询操作1.5 完整代码&#xff1a; 前言 想要精通算法和SQL的成长之路 - 系列导航 一. 最长递增子序列 II 原题链接…...

java用easyexcel按模版导出

首先在项目的resources下面建一个template包&#xff0c;之后在下面创建一个模版&#xff0c;模版格式如下&#xff1a; 名称为 financeReportBillStandardTemplateExcel.xlsx&#xff1a; {.fee}类型的属性值&#xff0c;是下面实体类的属性&#xff0c;要注意这里面的格式&a…...

自动驾驶仿真测试避坑手册:从Pattern参数选择到Comfort问题定位

自动驾驶仿真测试避坑手册&#xff1a;从Pattern参数选择到Comfort问题定位 在自动驾驶系统的开发流程中&#xff0c;仿真测试环节往往决定了算法迭代的效率和质量。不同于传统软件测试&#xff0c;自动驾驶仿真需要构建高度复杂的虚拟环境&#xff0c;模拟真实世界中的各种边缘…...

解锁RO游戏自动化工具:从效率瓶颈到智能辅助的实践指南

解锁RO游戏自动化工具&#xff1a;从效率瓶颈到智能辅助的实践指南 【免费下载链接】openkore A free/open source client and automation tool for Ragnarok Online 项目地址: https://gitcode.com/gh_mirrors/op/openkore 在MMORPG游戏领域&#xff0c;重复刷怪、繁琐…...

病床前尽孝心,脊柱 “被折得濒临损伤”!

长期弯腰照顾卧床病人、喂饭、翻身、擦洗&#xff0c;颈腰椎损伤风险显著。弯腰时腰椎弯曲角度过大&#xff0c;椎间盘承受压力剧增&#xff1b;反复弯腰起身照顾病人&#xff0c;肌肉与椎间盘反复冲击&#xff1b;低头专注护理时&#xff0c;颈椎前伸与腰椎受力形成双重负担。…...

OpenClaw自动化测试实践:GLM-4.7-Flash驱动脚本执行与结果分析

OpenClaw自动化测试实践&#xff1a;GLM-4.7-Flash驱动脚本执行与结果分析 1. 为什么选择OpenClaw做测试自动化&#xff1f; 上个月接手一个新项目时&#xff0c;我遇到了一个典型的技术矛盾&#xff1a;作为独立开发者&#xff0c;既需要保证代码质量&#xff0c;又没精力手…...

Ostrakon-VL-8B与传统算法对比展示:在复杂背景下的菜品分割

Ostrakon-VL-8B与传统算法对比展示&#xff1a;在复杂背景下的菜品分割 不知道你有没有遇到过这样的烦恼&#xff1a;想给美食拍张照&#xff0c;结果背景里堆满了杂乱的餐具、餐巾纸&#xff0c;甚至还有手机和钥匙&#xff0c;想单独把菜品抠出来&#xff0c;用传统的修图工…...

企业级二进制差异算法:bsdiff/bspatch的高效智能更新方案

企业级二进制差异算法&#xff1a;bsdiff/bspatch的高效智能更新方案 【免费下载链接】bsdiff bsdiff and bspatch are libraries for building and applying patches to binary files. 项目地址: https://gitcode.com/gh_mirrors/bs/bsdiff 在软件分发和持续部署领域&a…...

Python AOT编译迎来分水岭:2026年3大工业级工具实测对比(启动提速8.7×,内存降63%,兼容CPython 3.13+)

第一章&#xff1a;Python AOT编译的范式跃迁与工业落地元年定义长期以来&#xff0c;Python 以解释执行和动态特性见长&#xff0c;但其运行时开销、启动延迟与内存 footprint 成为云原生服务、边缘设备与实时系统规模化部署的关键瓶颈。2024 年&#xff0c;随着 Nuitka 14.x、…...

H3C交换机vlan隔离常见配置错误排查指南(附HCL模拟器案例)

H3C交换机VLAN隔离配置实战&#xff1a;从原理到排错的深度指南 在当今企业网络架构中&#xff0c;VLAN隔离技术已经成为网络分段和安全策略的基础支柱。作为网络管理员&#xff0c;我们经常需要在H3C交换机上配置VLAN隔离来实现不同部门或业务单元之间的逻辑隔离。然而&#…...

SiameseAOE中文-base惊艳效果:结构化输出JSON兼容下游BI/报表系统直连

SiameseAOE中文-base惊艳效果&#xff1a;结构化输出JSON兼容下游BI/报表系统直连 1. 模型效果惊艳展示 SiameseAOE通用属性观点抽取模型在中文文本处理方面表现出色&#xff0c;能够从非结构化文本中精准提取结构化信息。最令人印象深刻的是&#xff0c;模型输出的JSON格式数…...

网盘直链解析技术指南:突破下载限制的高效解决方案

网盘直链解析技术指南&#xff1a;突破下载限制的高效解决方案 【免费下载链接】Online-disk-direct-link-download-assistant 可以获取网盘文件真实下载地址。基于【网盘直链下载助手】修改&#xff08;改自6.1.4版本&#xff09; &#xff0c;自用&#xff0c;去推广&#xf…...