区块链研究实验室 | 拆解MimbleWimble 的隐私魔法-part II

2023-12-14 18:50

本文主要是介绍区块链研究实验室 | 拆解MimbleWimble 的隐私魔法-part II,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

2、CoinJoin 混合交易

在过去有许多人认为在比特币的交易图上,能够看到「哪笔输数对应到哪笔输出」是一件非常容易暴露隐私的地方,因此 Gregory Maxwell(是的,又是他)题出了一个叫做CoinJoin的概念,他要做的事情非常简单,就是将两笔交易混合。

在MW协议以钱,有许多钱包或者额外的服务,就有配置CoinJoin的服务于其间,例如WasabiWallet和Tumblebit、JoinMarket,然而单靠Coinjoin却依旧是不安全的,大家仍旧可以从交易数额中试图去还原,同时因为是个别的服务,参与的人数太少,在资金匹配上也需要花一定的时间。这时候佛地魔在MW协议中将CoinJoin的技术,结合机密交易(CT),就能够避免交易能够从「数字」方面去被推敲出来,同时在交易路径上也可以透过CoinJoin的技术被混淆。而且和过去个别使用CoinJoin的服务不同的地方,是这次Mimblewimble,彻底把CoinJoin写在了协议层,如此一来不需要靠第三方的钱包或者服务帮忙就能完成这一件事情,而且有机会让混合交易变的更有效率。

但现在就要开心的庆祝隐私交易的魔法能够实现,就还太早了,因为即使混合交易数额,我们还是能够知道交易双方的公钥,并且能透过这些公钥址去尝试重构每一笔交易,因此在这样的情境下,我们必须要有新的公私钥系统,来确保隐私安全。

3、OWAS (One-wayAggregate Signatures,单向聚合签名)

Jedusor在他的初略版白皮书中,提出了可以用 Yuan Horas Mouton的单向聚合签名(One-way Aggregate Signatures,简称OWAS)的方式去完成,比较有趣的一点是在Andrew Poelstra在他详细版的白皮书中,却没有用到OWAS这个词,而是在Sinking Signature还有compact chain中去验证这个技术,甚至连后来开发Grin的Ignotus Peverell的Github的MW简介中,也没出现OWAS这个词,而是直接说TransactionAggregation(交易聚合),不知道这个专有名词,为什么在这个三个重要的MW文件中,出现的方式会略有不同,但在此还是以OWAS去代称(我知道在之前已经有如 Boneh等学者在研究聚合签名)。

所谓的聚合签名,就是指当你看到很多交易的输入以及输出时,我们将不能再把这些输入及输出的公钥重新拆解,并且拼凑出一个完整的交易顺序,因此我们将所有签名聚合在一起,并且不能使他逆向被还原。

OWAS由两个部分组成,一是Kernel Excess(内核剩余),一是Kernel Offsets(交易核偏移因子),还记得我们所说的致盲因子之差吗?对的,就是Alice既要传送钱给Bob,又不希望Bob知道他的私钥(致盲因子),于是他给他了(致盲因子差)*G,这时候我们为了避免人家从交易中的公钥推测出交易途径,我们用了单向聚合签名的方式来降低大家知道这个值的可能性,因此我们产生了以下算式

透过这种方式,我们就可以将最后作为的公钥的余项(例如刚才上面在讲机密交易时的50*G)拆分成两部分,例如X*G拆成(x1+x2)*G,这时候大家能构让外界看到的值x1*G就是所谓的Kernel Excess,你可以把它看作是公钥;而另外一部分就是x2*G,称作Kernel Offsets,他会和这个区块中所有交易的KernelOffsets一起被相加,而当他们这么多个KernelOffsets被相加后,你也就看不出来,哪个Kernel Offset是哪一笔交易中的了,所以这个方法才会被叫做单向聚合签名,因为他没办法在做逆向工程了。因此,当一笔MW上的交易在给矿工验证时,我们可以想象KernelExcess就是公钥,而Kernel Offsets是私钥。

到此,隐私交易的部分就彻底完成了,我们在此简短重复一次

1-1、机密交易-加法同态:确保在不知道交易金额的情况下验证等式两边成立

1-2、机密交易-范围证明:确保在零知识证明下,每个输入输出值大于零,避
免凭空创造多余金钱。

2、混币交易:让我们无法从交易数额中去回推交易路径

3、单向聚合签名:让交易的公钥不会被暴露出交易路径

三、Cut-through核销:减少矿工储存状态

cut-through是MimbleWimble中一个针对矿工的精巧设计,他能够确保的是矿工不需要长期存储这么多的交易状态,而cut-through的概念就是在一笔交易已经被确定其所有权的情况下(也就是被验证)后,只要能够维持输入等于输出(input=output),那么过程中多余的内容都可以被删除。例如原本的几个交易可能长这个样子

然而在这里必须特别说明,我认为Cut-through的概念并非能够在目前实作的两个项目中(Grin&BEAM),达到很好的隐私,例如在Grin中,其实Cut-through的功能是能够被关掉的,只要将~/.grin/main/grin-server.tomlar的archive_mode从

archive_mode = false

变成

archive_mode = true

in ~/.grin/main/grin-server.toml

如此一来矿工的节点就不会执行核销的动作。因此我认为目前部分外界人士,可能认为Cut-through能够透过删除资料来解决隐私,就目前的实作来看可能会是一个误解。

四、MinbleWimble的后续效应与限制

MimbleWimble不但是一个许多隐私协议所组成的隐私币区块链协议,更是许多过去比特币社群所遇到问题时,一些原本在比特币上无法实现的好方法被应用的好场景,然而MimbleWimble也像是练就了某种神功后,具有某些后遗症的武者,因此在最后,我试图去探讨,MimbleWimble会产生什么后续的影响,以及发展可能有甚么样的限制。

1.挑战其他隐私币的地位和公链设计原则

笔者认为,MimbleWimble协议所影响的,首先是挑战既有隐私币的地位,例如Monero和Zcash,MW协议中不但不需要为了验证交易的合法性,而保留以验证的交易作废列表,同时Cut-through的功用,也让矿工能够减少储存已验证的状态这种较为不合理的手法。另外,我认为MW协议也是少数,用减少数据储存来达到可扩展性的公链设计手法,同时他也减少了许多区块链中应该要被矿工所记载的内容,在MW中,一笔交易里面矿工要知道什么:最主要的就是交易有效性与通货膨胀,可能会影响未来不具高度智能合约需求的货币项目,往这样的方向去发展。

2.限制

虽然MW在隐私协议上采取了非常巧妙的手法,去实现了匿名交易。但其本身依旧有某一些限制,在此我将他分为三点:一是RangeProof所占的容量影响交易状态储存的容量;二是交易实作上的使用体验;三则是智能合约等等货币交易以外的区块链功能实现能力。

2-1、Range Proof所占的容量影响交易状态储存的容量

上文曾经说过,透过Cut-through,我们能够减少矿工的储存内容物,避免状态大量累积的问题,然而,在MW区块链中,无法被删减的,是每笔输入与输出中的范围证明(range proof),Range Proof是一个简单的零知识证明(688bytes),容量相较于交易讯息本身(单个交易约33bytes),相较而言其实是非常大的差距,这也是会影响未来矿工储存数据,以及未来可扩展性的关键。

2-2、共同构建交易的实作体验

在MW协议下的交易,我们必须要交易双方共同去将一笔交易完成,例如Alice寄钱给Bob,Bob必须证明他知道交易金额,并且在回传讯息给Alice,最后交易经过Alice验证运算后才完成,这样的过程不需要同步在在线完成,但需要交易双方共同构建,和比特币、以太坊等等密码货币那种只需一方传送金额签章到区块链上的概念较为不同,因此目前例如在Grin上,有两种方式可以进行交易:

  • 寄送档案: Bob需要收到交易档案(transaction file),并且生成一个回应的档案(response file),并且寄回给Alice。

  • 网页(HTTP):Bob的Grin钱包必须要监听一个端口。无论Alice的钱包甚么时候寄给他,Bob的钱包都会自动执行既有的步骤。但这却有一个比较苛刻的条件,就是钱包需要在一个固定的IP地址下,并且你的钱包客户端要持续运作才能完成。

  • 这些过程其实都是非常不人性,很难在未来普及使用。目前Grin有开发一个新钱包grinbox,目标是能够像比特币一样的交易,但很持续在开发中,如果未来有任何消息,我会持续更新。

2-3、货币交易之外如智能合约等功能的扩展现制

MimbleWimble和比特币较为不同的是其较难支持区块链中的交易脚本,这也导致了如比特币可以实现的简单智能合约、或者闪电网络等等,然而,我认为这或许是大家已经不太震惊的MW缺点所在了,而且目前就笔者所见,已经有一些有趣的项目被展开,例如精确版MW白皮书的撰写人:Blockstream的 Andrew Poelstra,目前正在研究透过无脚本脚本(scriptless-scripts)的方式来创造MimbleWimble上简单的应用,同时也有人实现了Grin上的原子交换。或许未来可能有更轻巧的智能合约实现方式出现。

本文转载公众号:区块链研究实验室,专注区块链技术,产品社群,经济模型等全方位的知识体系输出,为大家带来不一样的社群学习体验。欢迎联系作者微信加入社群:csschan1120

这篇关于区块链研究实验室 | 拆解MimbleWimble 的隐私魔法-part II的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/493625

相关文章

Rust中的Drop特性之解读自动化资源清理的魔法

《Rust中的Drop特性之解读自动化资源清理的魔法》Rust通过Drop特性实现了自动清理机制,确保资源在对象超出作用域时自动释放,避免了手动管理资源时可能出现的内存泄漏或双重释放问题,智能指针如B... 目录自动清理机制:Rust 的析构函数提前释放资源:std::mem::drop android的妙

Python如何实现PDF隐私信息检测

《Python如何实现PDF隐私信息检测》随着越来越多的个人信息以电子形式存储和传输,确保这些信息的安全至关重要,本文将介绍如何使用Python检测PDF文件中的隐私信息,需要的可以参考下... 目录项目背景技术栈代码解析功能说明运行结php果在当今,数据隐私保护变得尤为重要。随着越来越多的个人信息以电子形

使用 sql-research-assistant进行 SQL 数据库研究的实战指南(代码实现演示)

《使用sql-research-assistant进行SQL数据库研究的实战指南(代码实现演示)》本文介绍了sql-research-assistant工具,该工具基于LangChain框架,集... 目录技术背景介绍核心原理解析代码实现演示安装和配置项目集成LangSmith 配置(可选)启动服务应用场景

关于Java内存访问重排序的研究

《关于Java内存访问重排序的研究》文章主要介绍了重排序现象及其在多线程编程中的影响,包括内存可见性问题和Java内存模型中对重排序的规则... 目录什么是重排序重排序图解重排序实验as-if-serial语义内存访问重排序与内存可见性内存访问重排序与Java内存模型重排序示意表内存屏障内存屏障示意表Int

【区块链 + 人才服务】可信教育区块链治理系统 | FISCO BCOS应用案例

伴随着区块链技术的不断完善,其在教育信息化中的应用也在持续发展。利用区块链数据共识、不可篡改的特性, 将与教育相关的数据要素在区块链上进行存证确权,在确保数据可信的前提下,促进教育的公平、透明、开放,为教育教学质量提升赋能,实现教育数据的安全共享、高等教育体系的智慧治理。 可信教育区块链治理系统的顶层治理架构由教育部、高校、企业、学生等多方角色共同参与建设、维护,支撑教育资源共享、教学质量评估、

【区块链 + 人才服务】区块链集成开发平台 | FISCO BCOS应用案例

随着区块链技术的快速发展,越来越多的企业开始将其应用于实际业务中。然而,区块链技术的专业性使得其集成开发成为一项挑战。针对此,广东中创智慧科技有限公司基于国产开源联盟链 FISCO BCOS 推出了区块链集成开发平台。该平台基于区块链技术,提供一套全面的区块链开发工具和开发环境,支持开发者快速开发和部署区块链应用。此外,该平台还可以提供一套全面的区块链开发教程和文档,帮助开发者快速上手区块链开发。

AI基础 L9 Local Search II 局部搜索

Local Beam search 对于当前的所有k个状态,生成它们的所有可能后继状态。 检查生成的后继状态中是否有任何状态是解决方案。 如果所有后继状态都不是解决方案,则从所有后继状态中选择k个最佳状态。 当达到预设的迭代次数或满足某个终止条件时,算法停止。 — Choose k successors randomly, biased towards good ones — Close

从0到1,AI我来了- (7)AI应用-ComfyUI-II(进阶)

上篇comfyUI 入门 ,了解了TA是个啥,这篇,我们通过ComfyUI 及其相关Lora 模型,生成一些更惊艳的图片。这篇主要了解这些内容:         1、哪里获取模型?         2、实践如何画一个美女?         3、附录:               1)相关SD(稳定扩散模型的组成部分)               2)模型放置目录(重要)

学习记录:js算法(二十八):删除排序链表中的重复元素、删除排序链表中的重复元素II

文章目录 删除排序链表中的重复元素我的思路解法一:循环解法二:递归 网上思路 删除排序链表中的重复元素 II我的思路网上思路 总结 删除排序链表中的重复元素 给定一个已排序的链表的头 head , 删除所有重复的元素,使每个元素只出现一次 。返回 已排序的链表 。 图一 图二 示例 1:(图一)输入:head = [1,1,2]输出:[1,2]示例 2:(图

STL经典案例(四)——实验室预约综合管理系统(项目涉及知识点很全面,内容有点多,耐心看完会有收获的!)

项目干货满满,内容有点过多,看起来可能会有点卡。系统提示读完超过俩小时,建议分多篇发布,我觉得分篇就不完整了,失去了这个项目的灵魂 一、需求分析 高校实验室预约管理系统包括三种不同身份:管理员、实验室教师、学生 管理员:给学生和实验室教师创建账号并分发 实验室教师:审核学生的预约申请 学生:申请使用实验室 高校实验室包括:超景深实验室(可容纳10人)、大数据实验室(可容纳20人)、物联网实验