BSV 上用于通用计算的隐私非交互式赏金

news2024/11/19 19:44:49

如何安全地外包任何计算

我们提出了一种新颖的赏金机制,可以在区块链上安全私密地外包任意计算。解决方案和付款的交换是原子的和无需信任的:赏金发布者获得解决方案而赏金收集者获得奖励,或者两者都不发生。赏金发布者部署一个智能合约,当且仅当提供解决方案时才会释放资金。为了防止解决方案泄露,它使用只有双方知道的密钥进行加密。为了验证加密的解决方案,零知识证明 (ZKP) 用于证明加密的解决方案是有效的,并且使用正确的密钥对其进行加密,同时保密。

据我们所知,这是有史以来第一个也是唯一一个在没有可信第三方的情况下安全外包任何计算的方法。

公平交换问题

买家想知道计算问题的解决方案,例如数独游戏。她不想或不能自己解决它,所以她通过悬赏支付给提供解决方案的卖家来将其外包。

如果买家先付款,卖家可能不会告诉他解决方案。

买家先付款

同样,如果卖方先公开解决方案,买方可能会拒绝付款。

卖家先透露

这是典型的公平交换问题。如果存在双方都信任的第三方托管,解决起来很简单。在没有托管的情况下已经进行了多次尝试来解决它。

第一次尝试

图一

一种天真的方法是简单地在公共区块链上部署一个赏金智能合约来解决这个问题,就像我们外包旅行商问题所做的那样。它由三个步骤组成,如图 1 所示:

  1. 赏金发布者 Alice 放置了一个赏金交易 Tm,其中包含一个智能合约,该合约支付给见证人 w 以满足电路 C 中表示的问题,即 C(w) 评估为真。

  2. 赏金收集者 Bob 在另一个交易 Tc 中将 w 提交给赏金交易。

  3. 发布者爱丽丝从上述交易中提取 w

任何人都可以通过向智能合约提交解决方案来尝试收集赏金。智能合约在验证确实解决问题的建议解决方案后向收集者付款。由于公共区块链的透明性,这有两个缺点:

  1. 攻击者,例如恶意矿工,可以拦截收集者的交易,提取解决方案,并创建竞争交易以自己领取赏金,而无需解决问题。

  2. 任何人都可以通过观察发布在链上的解决方案来获取解决方案。如果赏金发布者打算将他支付的解决方案保密,这是有问题的。

第二次尝试:零知识条件支付(ZKCP)

ZKCP 允许买家使用不需要信任任何人的比特币从卖家那里购买解决方案。它包括两个步骤:

  1. 使用 ZKP,卖方说服买方相信哈希原像 k 是链下有效加密解决方案 s 的加密密钥,而无需披露解决方案。

  2. 然后买方将比特币锁定在支付给卖方的交易中,只有在卖方提供正确的原像时才能赎回比特币,买方用它来解密解决方案。

我们的解决方案

我们的赏金机制解决了上述所有问题,并具有以下显着特性。

  1. 非交互式:赏金发布者通过向区块链发送单个交易来创建用于解决计算难题的赏金。

  2. 开放:任何人只要有解决方案就可以在后续交易中收取赏金,并且在赏金创建时收集者是未知的。

  3. 可提取:保证赏金发布者能够从赏金收集交易中提取解决方案。

  4. 安全:恶意窃听方即使拦截收款交易也无法领取赏金

  5. 隐私:局外人无法通过观察区块链获知解决方案。

实现满足所有这些要求的赏金会很困难,因为在发布赏金时解决问题的用户的身份是未知的。在图 1 中,恶意攻击者,例如矿工,可以窃听 Tc,获得见证并自行赎回奖励,因为 Tm 中的智能合约允许任何拥有 w 的人赎回。此外,任何第三方都可以在区块链上观察 Tc 并了解秘密 w,赏金发布者为此付费并可能希望保密。需要一种方法来加密和隐藏 w,同时仍然确保 C(w) 为真。

为了防止这些攻击,w 使用对称加密的共享密钥进行加密。它源自椭圆曲线 Diffie–Hellman (ECDH) 密钥交换,如图 2 所示。Alice 的公钥 QA 在 Tm 中发布。 Bob 必须使用 QA 来导出共享密钥。他将自己的公钥QB暴露在Tc中,Alice用它推导出相同的共享密钥,对加密解进行解密得到 w

图 2:ECDH 密钥交换

ZK电路

Tm 中的智能合约验证了 Tc 中的证明,证明了图 3 所示的复合电路。它需要多个输入,包括私密见证人 w,并输出使用共享密钥加密的见证人。第 1 步确保 w 有效,其余验证 w 是否使用正确的共享密钥加密,以便 Alice 可以解密它。第 2 步使用 ECDH 推导共享密钥。步骤4中的enc()可以是任何对称加密。在实践中,为了提高效率,需要 ZKP 友好的加密,例如 Poseidon 加密。

图 3: 电路

最终工作流程

最终改进的赏金机制如图 4 所示。

  1. 赏金发布者 Alice 放置了一个包含智能合约的赏金交易 Tm,如果证明证明 Ew 加密的,该智能合约就会释放资金。

  2. 赏金收集者鲍勃根据他的私钥和爱丽丝的公钥求解 w 并使用共享的 ECDH 密钥对其进行加密。他生成一个 ZK 证明并提交交易 Tc 以领取赏金,其中包含证明和密文 E。

  3. Alice 根据她的私钥和 Bob 的公钥导出相同的共享 ECDH 解密密钥。她在 Tc 中解密 E 并得到 w

如果攻击者拦截 Tc 并更改接收者,则证明将失效,因为它与 Bob 的公钥绑定。攻击者无法重定向和窃取赏金。该证明类似于常规支付交易中使用的数字签名,可防止篡改。攻击者也看不到见证,因为它是加密的。

图 4

在实践中,最后期限将被添加到赏金中。如果在一定时间内没有人认领,爱丽丝可以取回她的钱。

如何获得 Bob 的公钥

Bob 的公钥 QB,即认领交易的发送者,在基于账户的区块链(例如以太坊)中很容易获得。以太坊的 Solidity 编程语言将其公开在全局事务变量 tx.origin 或 msg.sender 中。

在BSV中,我们基于一种称为 OP_PUSH_TX 的技术提取 QB。 OP_PUSH_TX 允许智能合约(在 Tm 中)访问支出交易(Tc),从而强制执行赏金到收集者公钥 QB 的位置,在 ECDH 中用于派生共享加密密钥¹。

BSV与其他区块链

这种赏金机制可以应用在很多区块链中。 在 BTC 和 Ethereum 等未确认交易可能会被更高费用的后续交易延迟的区块链中,赏金发行人 Alice 有可能拦截 Tc,解密并获取见证人 w。 她可以使用 w 创建一个竞争性收集交易,以在 Tc 被开采到一个区块之前以更高的交易费用领先 Tc。 在BSV上,这是极不可能的,因为交易是按照先见原则处理的。

可信设置

有两类 ZKP:需要可信设置的和不需要可信设置的。 在许多情况下,后者是首选,因为它往往更有效。 如果 Bob 进行设置,他可以创建一个伪造的证明并窃取赏金而无需解决 w。 由于无法信任第三方,因此 Alice 必须进行设置。

与 ZKCP 不同,如果 Alice 通过破坏 ZKP 使用的零知识属性来恶意操纵设置以从证明中获取部分或全部见证人,这不是问题²。 无论如何,她都会解密证据以获得见证人。 为了额外的安全性,Bob 可以对设置进行额外的检查,以确保它是由 Alice 诚实地执行的,并且公共参考字符串的格式正确。 他还可以通过在本地运行验证者智能合约来验证他的证明确实通过了验证,并且只有在通过后才广播 Tc。

潜在用例

本发明开辟了许多将任意实际计算问题外包给公众的方法。 任何先提交解决方案的人都可以保证获得报酬。 下面只是几个例子。

  • 挖矿:矿池通过向任何发现使给定区块头哈希满足共享难度目标的随机数的矿工支付报酬来外包哈希。 矿工不必像在传统矿池中那样信任矿池进行支付。 支付是无需信任且即时的。

  • 机器学习:企业希望在给定数据集上训练机器学习模型,例如自然语言处理或线性回归,以改善用户体验。 它将培训外包,希望以可承受的价格找到最准确的模型,而无需像 Kaggle 这样的集中式平台。

  • 可证明的高分辨率图像:网站的用户喜欢图像,该图像分辨率低且只是预览。 他想购买高分辨率副本,可能缩小到预览版。

  • 旅行商问题:一家物流公司希望找到最短路线,将包裹高效地运送到一系列收件人手中,从而最大限度地降低汽油成本。

  • 数独谜题:爱丽丝是数独游戏的狂热粉丝,她有一个数独谜题难住了她好几个小时。 她放弃并悬赏给提供谜题解决方案的人。

ZKP 的快速技术进步使得证明许多实际应用的陈述成为可能。 我们将很快演示如何利用这种赏金机制来解决实际问题。 敬请关注!

致谢

感谢 ZeMing Gao 审阅本文的早期草稿并提供建设性反馈。


[1] 如果在交易中使用从公钥散列派生的地址,而不是公钥本身,QA 和 QB 将替换为 Alice 和 Bob 的地址,并且需要额外的步骤来确保地址是从公钥派生的。

[2] WI 是不够的:重新审视零知识或有(服务)支付

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

CTF--攻防世界-杂项入门第一课

这是第一次接触杂项这个方向,所以就是根据writeup解的题,没有什么自己的思路,只是写一篇文章来记录一下解题过程。 下载题目后拿到一张图片,确实挺迷惑的,不知从何下手,根据大家的思路都是看看有没有隐写&a…

如何提升网站排名优化(百度SEO优化,轻松提升排名)

在当今互联网时代,拥有一个优秀的网站是很重要的。而一个网站如果能够在搜索引擎上的排名很靠前,那么将会带来更多的流量、更多的用户和更多的利润。那么如何提升网站排名优化呢?蘑菇号www.mooogu.cn 百度SEO优化的5个规则 1.关键词选取要合…

嵌入式MCU都有什么高级用法?

嵌入式MCU都有什么高级用法? 您举的几个例子,确实是MCU外设的一些高端玩法。只是不知道您是否想过,既然这些机制是被 人设计出来的,那它就是种标准用法。从微控制器的发展历程来看,许多硬件机制都是有了实际 需求后才…

面的嵌入式基础知识总结

面的嵌入式基础知识总结 做嵌入式系统开发,经常要接触硬件。做嵌入式开发对数字电路和模拟电路要有一定的了解。 这样才能深入的研究下去。下面我们简单的介绍嵌入式开发中的一些硬件相关的概念。 最近很多小伙伴找我,说想要一些嵌入式机学习资料&…

Python的多重继承和MixIn

前言: 嗨喽~大家好呀,这里是魔王呐 ❤ ~! python更多源码/资料/解答/教程等 点击此处跳转文末名片免费获取 多重继承 继承是面向对象编程的一个重要的方式,因为通过继承,子类就可以扩展父类的功能。 回忆一下Animal类层次的设…

【无公网IP】Windows搭建 WebDAV服务,并内网穿透公网访问

文章目录 1. 安装IIS必要WebDav组件2. 客户端测试3. cpolar内网穿透3.1 打开Web-UI管理界面3.2 创建隧道3.3 查看在线隧道列表3.4 浏览器访问测试 4. 安装Raidrive客户端4.1 连接WebDav服务器4.2 连接成功4.2 连接成功总结 自己用Windows Server搭建了家用NAS主机,W…

Flink Batch SQL Improvements on Lakehouse

本文整理自阿里云研发工程师刘大龙(风离),在 Streaming Lakehouse Meetup 的分享。内容主要分为三个部分: Flink Batch on Paimon 挑战Flink Batch 核心优化后续规划 点击查看原文视频 & 演讲PPT 一、Flink Batch on Paimon 挑…

MySQL数据库入门到精通3--进阶篇(存储引擎,索引)

1. 存储引擎 1.1 MySQL体系结构 1). 连接层 最上层是一些客户端和链接服务,包含本地sock 通信和大多数基于客户端/服务端工具实现的类似于TCP/IP的通信。主要完成一些类似于连接处理、授权认证、及相关的安全方案。在该层上引入了线程池的概念,为通过认…

selenium自动化测试-获取黄金实时价格

最近黄金比较火爆,想要获取黄金实时价格,方便后续监控预警价格,一般实时刷新的网页数据都是动态加载的,需要用到selenium自动化测试获取动态页面数据。 昨天学会了获取动态网页小说内容,同理也可以获取动态网页的黄金…

头歌平台 | 逻辑函数及其描述工具logisim使用

文章目录 1、根据布尔表达式绘制电路2、根据真值表绘制电路3、根据简化真值表绘制电路4、根据波形图绘制电路5、根据卡诺图绘制电路 1、根据布尔表达式绘制电路 任务描述 本关任务:在Logisim中根据给定的布尔代数表达式(FABBCCA)绘制逻辑电路…

文案内容千篇一律,软文推广如何加深用户印象

随着互联网技术的发展,企业营销的方式逐渐转向软文推广,但是现在软文推广的内容同质化越来越严重,企业应该如何让自己的软文推广保持差异性,在用户心中留下独特的印象呢?下面就让媒介盒子告诉你。 一、 找出产品独特卖…

spring boot 时间格式化输出

目录标题 一、spring boot 序列化二、 JsonFormat(pattern "yyyy-MM-dd HH:mm:ss")和JSONField(format "yyyy-MM-dd HH:mm:ss")区别三、在实体类中序列化时间(格式化输出)(一)使用JsonFormat(二…

程序员自由创业周记#12:999%

下载量涨了999% 在此之前,我的Apple开发账号上只有一个产品-学伟扫描,因为没有推广,只靠自然流量,每天的下载量寥寥无几,这种稳定无人问津的状态断断续续保持了4年。 之前的周记里介绍了最近在做创业的第二个项目-学伟…

27 WEB漏洞-XSS跨站之代码及httponly绕过

目录 HttpOnly安全过滤测试HttpOnly安全过滤绕过思路 演示案例:Xsslabs关卡代码过滤绕过测试 HttpOnly安全过滤测试 防止xss攻击,指的是攻击手法,并不是能防止XSS漏洞,httponly阻止的仅仅只是cookie httponly在相关的脚本都是支持…

AMEYA360 | 罗姆ROHM面向工业设备应用的产品目录上线

作为半导体和电子元器件制造商,罗姆集团自成立后60多年以来,一直秉持“质量第一”的企业目的,为消费电子设备和IT设备、汽车以及工业设备等多个领域源源不断地提供高品质、可信赖的产品。 随着“节能”和“小型化”需求的不断高涨&#xff0c…

PLC项目调试常见的8种错误类型

各种品牌PLC都具有自我诊断功能,但PLC修理的技巧在于,充分运用该功能进行分析,然后精确寻找问题所在。整理了当PLC呈现反常报警时,PLC修理人员需要了解的8种常见错误类型。 CPU反常 CPU反常报警时,应查看CPU单元衔接于…

Qt中使用图像格式对QPainter绘制文字影响

图 1 是 QImage::Format_RGB888绘制效果,图二是QImage::Format_RGB32绘制效果,可见在使用QImage::Format_RGB32进行绘制文字效果更好,从现象提示我们,对QPainter在QImage改善文字绘制效果不仅可以设置抗锯齿,图像保存格…

STC15F104W控制3个74HC595芯片输出数码管显示

一、74HC595脚位图及说明 管脚说明: 14脚:DS(SER),串行数据输入引脚 13脚:OE,输出使能控制脚,它是低电才使能输出,所以接GND 12脚:RCK(STCP&…

C语言每日一题(10):无人生还

文章主题:无人生还🔥所属专栏:C语言每日一题📗作者简介:每天不定时更新C语言的小白一枚,记录分享自己每天的所思所想😄🎶个人主页:[₽]的个人主页🏄&#x1f…

Mojo编程语言是AI人工智能的新的编程语言

Mojo是Chris Lattner的创业公司Modular开发的一种新的编程语言,旨在统一AI基建和异构计算。Mojo被认为是Python的超集,兼容Python生态,但添加了系统编程和编译期优化的特性,以提高性能和部署效率。Mojo基于MLIR,可以支…