首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Monero门罗技术全解析(一)

Monero以隐私为核心,使用新颖的加密技术来解决困扰区块链资产的可替代性挑战。

本文中将探讨支撑Monero协议的技术架构、项目的核心竞争力/弱点、治理机制以及与竞争对手对比下的利弊权衡。本研究报告是一系列多篇文章的入门引导,我尽量不偏不倚以中立视角深入探究这些最负盛名的加密货币资产项目。

摘 要

Monero(XMR)是一个分布式账本项目,作为以隐私为核心的领先币种备受追捧。Monero项目把中心放在隐私和电子现金上,在加密货币社区中站稳了一席之地。虽然使用与比特币相同的UTXO账本结构,但其设计改变了UTXO打包和广播到网络的方式,利用一次性环签名架构,有效创建了不可链接的交易,第三方无法识别其输出。

Monero协议还利用了一种称为隐形地址的概念,发送者通过生成仅对接收方可见的一次性公钥来开启交易。只有接收方能恢复相应的私钥部分来认领资金。通过保护发币者和收币者的交易信息,因其强大的可替代性,Monero与比特币协议和其他领先的数字货币系统相比形成了许多独有的优势。

问题和解决方案

公众对比特币作为匿名支付方式的认可确证无疑。从其结构来看,比特币可以说是人类文明迄今为止最近透明的金融体系。这些功能带来一系列利弊权衡,比特币的极端透明是把双刃剑。社区中许多人担心比特币的可替代性最终在劫难逃。

随着区块链分析程序愈加纯熟,交易的来龙去脉将越来越可见。如果生态系统中某些比特币交易链中某些地方的恶意交易被打上“染色”标记,商家、商户和交易所会由于后续的法律追索问题而拒绝接受这些币。这可能导致等额货币发生不合理定价。等额比特币不具有相同的内在价值,则系统本身就不再是可互换的。

比特币区块链的透明度使外部第三方可以对任何账户进行全面审计,并查看与该地址相关联的交易历史记录。这对于在业务往来中倚重财务隐私的公司和组织就不太可行。系统失去可替代性会给用户和商家造成沉重的间接成本。收到“染色”币的个人拿着无法交易的费币,就只能砸在手里了。也会给商家和交易所产生很高的基础设施成本,来对收到的交易进行预审。这不仅产生费用,还会降低销售速度,影响降低客户体验。Monero通过将透明度作为交易各方可选的链下功能来缓解这些担忧。

历 史

Monero的传承关系可以追溯到CryptoNote白皮书的出版。CryptoNote v1文件中声称是于2012年12月下旬上传到Tor隐藏服务器上,由匿名作者Nicolas van Saberhagen发布。几个月后该文件v2版本发布。

然而,直到2014年,这些论文才被“发现”并成为暴露为公众焦点,引发了关于作者对发布时间篡改的争议。

调查显示,PDF元数据中嵌入了相互矛盾抵触的发布日期,这引来了更多审视的目光。大约同期,首个使用CryptoNote协议的Bytecoin实现被公布。与CryptoNote的作者一样,Bytecoin开发人员同样匿名,其关于货币历史起源的背景少之又少。Bytecoin团队声称该协议已经存在了近2年,并已被深网上多人采用,但这些声明都证据欠奉。不少人认为该币中国的匿名开发人员与CryptoNote开发人员颇有关联,从而引发了争议。

Bitcointalk论坛用户Thankful_For_Today在大约一个月后在发现了Bytecoin协议中隐藏着预挖代码,其中近80%的资金已经分发后,他进行了一次分叉,将新系统命名为Bitmonero。BitMonero生态系统内持续的政治和治理动荡使得仅在一周后就又实施了第三次分支,经此劫难才诞生Monero协议。

特 点

1.区块构建

Monero使用比特币开创的标准UTXO模型,而不是像以太坊这样的账户状态配置。与比特币一样,UTXO存在于区块链中,用户要花费时会被挪到指定的地址。交易打包成块,但Monero区块的生成与比特币实现的传统模型有根本的不同。

与比特币的1MB硬性限制相比,Monero在区块大小上限以及区块奖励上是动态的。最大块最多可以多达上n(当前为100)个块的中间块的两倍。该协议还保持最小块300 kB。这意味着矿工可以构建高300 kB的块却并不违规。如果选择构建这些参数之外的区块,则会收到罚款。

罚款=基础奖励*((区块大小/MN)-1)²

这里的几个概念:

●MN是最后N个块(目前为100)的块大小的中值;

●BlockSize是当前候选块的大小;

●基础奖励(BaseReward)是根据发行曲线的当前奖励,推导如下:

基础奖励=2*((S-A)*2-20*10-12)

在这里分别表示:

●S是原子单位的初始数(264-1);

●A是当前的循环,转换为原子单位,可以在这里找到。

从经济角度来看,如果将额外交易添加到完全稀释的300kb区块的边际收益并不会超过边际成本,那么矿工就会拒绝添加后续交易。这可能导致内存池严重拥堵,并导致在链上高流量的时段内积压拥堵和需要重新配置。考虑到这些变量,默认0.013XMR的手续费会被配置给矿工,以激励矿工在区块饱和时添加额外交易。设想以下理论中的情况:

在这里:

●平均交易大小=13.2kB;

●当前基础奖励5.7 XM;

●默认手续费0.013XMR;

●罚款=5.7*((313.2/300)-1)²=~0.011 XMR。

由于边际收益(0.013XMR矿工费)>边际成本(0.011XMR区块罚金),矿工将选择将交易打包到区块中。

总之,最小限制、TX惩罚和默认手续费协同工作,以确保诚实的块大小得到增加。该系统对付发起大量垃圾交易的DDOS攻击,是通过将其挖出为超大区块来打击恶意矿工。

2.发行方案

与比特币一样,Monero遵循递减的供应曲线,区块奖励随时间推移而衰减。

与许多其他加密货币项目形成鲜明对比的关键是Monero对通货膨胀不加限制。一旦挖出18.132百万XMR,会有陆续的“后续发行”将每两分钟输出0.6XMR(出块的平均时间间隔)。Monero认为,无限通货膨胀非常必要,以激励矿工提供算力从而保护全网。

3.工作证明算法

Monero利用平等主义的CryptoNight哈希函数,这是一种基于工作量证明机制的内存密集型共识系统,使用专用电路(GPU、FPGA或ASIC)获得的边际收益不会超过集成此类硬件所耗费的边际成本。

因此,Monero挖矿往往通过传统的CPU执行。散列函数通过填充对应内存地址的随机数据来工作,然后在读取和写入这些地址之后对得到的块进行哈希计算。这与比特币的传统SHA-256挖矿不同,后者可访问的数据可以存储在L1缓存中,因此可以更快访问,而无需从RAM或视频RAM中获取地址。跨多个次级缓存传播数据可防止专用系统获得优于传统处理器的巨大优势,与中本聪在比特币白皮书中描述的一CPU一票更接近。允许任何拥有一般计算机的人都能平等地找到区块,这意味着算力联合的威胁被大大削弱。这使得协议本身避免了中心化和其他攻击向量。

此外,高度中心化引致了宏观层面的政府操纵。合法专利和规模经济可能导致只有少数硬件制造商的情况。这为审查大开大门,政府可以关停公司的生产设施,要求隐藏后门,要求运营许可或硬件采购许可,审查交易,或启动临时销售禁令/配额以扭曲算力均衡进而破坏网络。Monero核心团队立场强硬,该协议必须保持抗ASIC特性,显示了遏制任何对均等挖矿存在潜在威胁的意图,包括在紧急应对ASIC硬件时,原定计划的网络升级期间对工作证明机制进行更改。

4.隐形地址

Monero利用隐形地址来保护收币人的隐私,这是CryptoNote白皮书中概述的功能。与分层确定性钱包非常相似,隐形地址允许输出地址的一次性使用,防止地址重复使用妨害隐私。与HD钱包不同,隐形地址会增加发币人创建地址的负担。这允许接收方发布单个地址并接收无条件的匿名付款。

隐形地址的工作方式与传统的比特币地址虽略有不同,但都是从相同的基础椭圆曲线原理而来。收币人生成双EC密钥对,而非单EC密钥对,以创建一次性密钥来接收付款。设想一个理论上存在的情景,即Alice向Bob付钱。Bob首先生成双公私私钥对{(a,A),其中A = aG,(b,B),其中B = bG)}。Bob将(A,B)连接成对人类友好的包含错误的编码格式,以创建标准地址,并将其发布到网络中。Alice解压Bob的标准地址以获取公钥(A,B)。然后,她生成一个随机秘密r,并通过乘以r和A来构造一次性公钥。Alice随后获取该值,将其乘以生成点G,最后将该值添加到B。然后哈希计算结果,我们称之为P。

P=[Hs(rA)]G+B.

爱丽丝然后接到P并将其用作她的UTXO的目的地址。她计算散列值R,其中R=rG。她将R值打包到她的消息中并广播交易。

随后,Bob的钱包软件用他的私钥检查通过网络的每个交易,并且可以通过使用(a,b)完成的数学计算来识别发往他的地址的交易。一旦Bob识别出给他的输出,他就可以通过使用x(上面的P的私钥)签名来恢复相应的一次性私钥并在将来的任何时间点花费资金。

因为知晓r是恢复一次性私钥的必备条件,所以Alice可以通过发布r或使用她知道r的零知识证明来提供她发送付款的可验证的证据。

5.环签名

发送Monero需要用户花费一些与一次性公钥P关联的XMR,正如前述的讨论所言。发币人必须通过签署一条消息来提供可验证的所有权证明,该消息将P与其对应的私钥x一起消耗掉。到目前为止,没有人知道Bob收到了Alice的付款(当然不是Alice)。但无限期持有资金对Bob来说并无实际用处。他还需要花费这些资金的方法,而且要不留任何痕迹。

为了保持更强的匿名性,Monero采用了CryptoNote白皮书中提出的一次性环签名技术。环签名通过允许发件人加入群组,然后将交易作为一个单元而不是用单个私钥签名。这种技术给发送者提供方法混入人群。验证方可以证明输出存在,该组中某一方是真正的签名者。但无法确定签名者是哪个小组成员,因为每个成员都拥有同等权重。随着组大小的增加,每个成员成为真实签名者的概率会也降低。

环形签名集合了用户的真实P,以及分散在区块链中的过量的“模拟”的P。签名由所有P验证,并且在数学上任何相应的私钥都可以签署该交易,从而混淆了真实发币人的身份。

为了防止双花攻击,在构造环时要创建一个秘钥镜像。该镜像是通过取P的哈希值,并与私钥X相乘来创建。该数学关系使得签名者不可能尝试用不同的I和相同的x制作两个签名。这种机制确保每个P只能用一次,新的XMR不能凭空创建。Monero网络维护一个包含所有未完成密钥映像的数据库,因此,如果用户尝试再次使用该密钥,网络将看到输出已用完,并拒绝该交易。

6.环保密交易

隐形地址和环签名的组合让发币人和收币人的隐私都能受到保护。但是,CryptoNote白皮书没有说到实现对转账金额的掩盖。如果Alice支付Bob 5XMR,Bob随后支付Bruce,Alice可以通过追踪手续费值来拼接交易链的各部分。

保密交易(环CT)是Monero协议实施的一项措施,可以使交易价值对发送方和接收方之外的任何人都不透明。该协议通过让发送方使用交易各方间的共享密钥加密来实现这一点。然后,接收方能够使用其私人查看密钥和交易公钥的组合来解密该值。

第三方仍然能够验证值的完整性,并确保新的XMR并非凭空创建,甚至都不需要查看金额。这是通过称为Pedersen承诺的密码方案实现的。

承诺输入-(交易费用+承诺输出)=0

一个简单的例子可以提供所涉及的数学属性的基本概述:

1+2+3+4=5+5

如果我们希望值保密,就对它们进行加密,将每个值乘以某个生成点x,得到:

1x+2x+3x+4x=5x+5x

=x(1+2+3+4)=x(5+5)

在不知道x的情况下,验证者会得到模糊的值,但可以确保输入承诺与输出匹配(加上交易费用)。唯一可以看到实际值的人是接收方和发件人,而他们都知道x。

此外,Ring CT需要实施范围校验。基本就像零知识证明那样,范围校验确保承诺值落在参数范围(大于0)内,而不会暴露整数本身。这对于防止以1XMR开始的人创建-5XMR和6XMR的两个独立输出从而凭空创建XMR很有必要。

(待续)

作 者:Joe Kendzicky

翻 译:苏子峰

END

关 注 币 海

币海 这里不江湖

微信号:DIGIBN

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180910G1Z3ZY00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券