UTXO

UTXO

Circle Research | MimbleWimble深度报告(上篇)

投研firstone 发表了文章 • 2019-03-28 10:36 • 来自相关话题

*声明:本文来源于Circle Research,由头等仓@Tracy 进行翻译。本文为报告上篇,主要讲述MW协议的背景原理和机制等问题,相关具体应用案例将在下篇文章中具体分析,敬请关注!


MimbleWimble

MimbleWimble是一种增强隐私和扩容的区块链协议。在不存储整个区块链历史记录的情况下,验证所有交易是否有效。它的名字来源于《哈利波特》中束缚舌头的咒语,这种咒语可以防止被施咒者泄露秘密。2016年,一个化名汤姆·埃尔维斯·杰多索的人在比特币奇才IRC聊天室分享了一个Tor链接,链接到一个概述MimbleWimble的文本文件,然后就消失了。


背景

Blockstream的数学家Andrew Poelstra对该协议很感兴趣,并于2016年10月发表了一篇关于MimbleWimble更详细、更强大的技术意见书。MimbleWimble是一个区块链协议,Grin和Beam是它的2个最初实现。在本篇报告中,我们将探索MimbleWimble、Grin和Beam。





来源:messari.io/onchainfx,coinmarketcap.com


加密社区的许多人一直在密切关注MimbleWimble协议,因为其旨在改进比特币和其他加密货币的关键问题,首次优化了隐私性和扩展性。

· 健全的隐私性:MimbleWimble将交易发送方、接收方和金额隐藏起来,让任何未参与交易的人无法查看。观察  者看到的交易由一些加密的输入和输出组成。他们可以验证已在链上的输入,并且等于输出货币的总和。这是对比特币等系统的改进,在比特币系统中,每个人都可以在比特币从一个地址转移到另一个地址时追踪其价值。

· 高效:MimbleWimble只允许验证者存储未使用的UTXO。所有其他加密货币强制矿工和外部验证者存储区块链的整个交易历史。这可以节省空间和更快的同步,因为随着区块链历史记录的增长,矿工可能被迫使用多个驱动器来存储整个历史记录。


验证者通过验证(1)输入的和等于输出的和,(2)交易不包含负数来检查MimbleWimble交易,以确保没有任何交易试图铸造新币。唯一可以铸币的交易是coinbase交易,这也是唯一可识别的交易。但是,验证者和观察者无法查看谁收到了区块奖励。

MimbleWimble的另一个重要特性是没有地址或公钥,只有输入和输出。每个UTXO都有一个密钥,接收方将UTXO密钥存储在他的钱包中。要发送UTXO,发送方必须在专用通道中与接收方联系,并执行多轮通信来构建交易。发送方使用自己的UTXO密钥对UTXO进行签名,而接收方通过通信获得了输出UTXO的新密钥。


问题

区块链是不可伪造的公共交易账簿。不可伪造意味着用户只能发送他们收到的资金——他们不能发送已使用资金或凭空创造资金。比特币和类似的区块链公开了发送方地址、接收方地址和交易金额,因此很容易验证发送的金额是否等于接收的金额,并且发送输入的是与这些输入对应的私钥。

比特币(以及其他加密资产)的公开性,可能会不被那些不想分享交易细节给所有人的人和企业的欢迎。此外,随着像Elliptic和Chainalysis这样的区块链分析公司崛起,研究人员可以将输出与非法交易联系起来,并将这些输出列入黑名单。币安的首席执行官曾在推特上表示,在社交媒体上报道了黑客向该交易所发送的资金后,他们能够冻结这些资金。然而,一些人认为这违反了非同质(fungibility)原则。非同质是指所有币都是一样,就像一张1美元的纸币与另一张1美元的纸币是一样的,不管这张纸币过去有什么活动。

比特币和所有其他区块链都要求矿工和其他验证者存储该链的整个交易历史,以验证所有交易都为有效。新参与者需要下载并验证整个区块链,以验证网络的当前状态。这对希望与网络同步的新参与者在空间、时间和计算上有很大要求。在2019年之前,比特币区块链的大小约为200GB。


MIMBLEWIMBLE解决方案

MimbleWimble以一种聪明的方式使用密码学来实现不可伪造性,同时优化了隐私和扩展性。与比特币验证每个输出的整个历史不同,MimbleWimble检查所有输入减去区块链上所有输出之和是否为零来验证链(这加强了货币的一个基本特性,即发送的金额等于接收的金额)。MimbleWimble使用了保密交易、CoinJoin、范围证明和核销(cut-through)组合。

与比特币类似,MimbleWimble依赖于椭圆曲线密码学和UTXO模型。然而,MimbleWimble是一个更精简的版本,由于脚本的隐私性问题,它牺牲了可编程性。因此,无法执行更复杂和丰富的功能,如时间锁定或支付渠道(如闪电网络)。


快速了解:UTXO

比特币和MimbleWimble使用未花费的交易输出(UTXO)模型来计算余额。可以将此模型使用币与钞票或信用卡与借记卡支付商品和服务进行对比。例如,Alice想买一件30美元的衬衫,但她有2张20美元的钞票。她不能只给商人一张半的钞票。相反,她把2张钞票都给了商人,并收到一张10美元的钞票作为找零。

UTXO模型的功能与此类似:Alice有2个交易输出,分别是先前交易的1个BTC和0.5个BTC。她需要向商家支付1.3 BTC。她的钱包创建了一个交易,该交易发送1.5 BTC(2个新输出)。商户收到1.3个比特币,Alice收到0.2个比特币作为找零(扣除交易费用)。比特币用户查看区块浏览器,可以发现他们比特币地址发送的比特币数量通常比指定的要多。


快速了解:椭圆曲线密码学

椭圆曲线有几个特性,对复杂的密码协议非常有帮助。椭圆曲线的一个性质是单向函数。在椭圆曲线上取一个随机点G,并将其乘以某个整数s,很容易得到另一个点P=sG。然而,给定(P,G),恢复s的值在计算上不可行。这使得我们可以使用(P,G)作为公钥,而s作为密钥。另一个性质是椭圆曲线上的点具有有用的代数性质:

1. 分配式:(a+b)G = aG+bG

2. 交换律:a(bG) = b(aG) = (ab)G


快速了解:佩德森承诺

佩德森承诺是结合了椭圆曲线的单向和代数特性的密码原语。对某些值(x,y)的承诺计算为P=xG+yH。虽然算出s=P/G在计算上不可行,但是从(P,G,H)计算出(x,y)也不可能,因为有无数的x和y的组合可以满足P=xG+yH关系。然而,知道单个(x,y)对满足这个等式的用户无法计算满足这个等式而不违反椭圆曲线单向特性的第二个 (x ',y ') 对。


保密交易

默认情况下,MimbleWimble依靠一种称为保密交易(CT)的加密概念来实现隐私。保密交易由Gregory Maxwell提出,他的灵感来自Adam Back对比特币的同态加密。保密交易使用佩德森承诺来隐藏UTXO的值。

在MimbleWimble中,交易输出或输入表示为佩德森承诺rG + vH。G和H是椭圆曲线上的随机点,是区块链的公共参数。V值为UTXO值,r为盲因子,是UTXO的密钥。rG值是对应的公钥。MimbleWimble使用佩德森承诺混淆敏感的交易信息,而不是显示明文的交易值。佩德森承诺允许使用基本算法来验证交易。

假设这样一个例子:我们有2个输入和1个输出。我们提供了样本值和盲因子,同时保留公共参数G和H作为变量。







交易内核

如上所述,保密交易的问题在于,它们要求输入和输出UTXO使用相同的盲因子,即接收方的密钥。如果发送方知道了接收方的盲因子值,她就可以窃取接收方的输出UTXO。MimbleWimble使用零知识证明克服了这个问题。

假设一个发送5个币的简单例子。发送方有一个未使用的UTXO,表示为承诺X=45G+5H,其中X=5,45是她的盲因子(r),或密钥。接收方选择一个随机盲因子7,并创建一个输出UTXO,表示为承诺Y=7G+5H。将输入与输出进行比较的验证者将看到超额的承诺:

X-Y = (45G+5H) - (7G+5H) = 38G

MimbleWimble将值38称为excess或内核,将值X-Y = 38G称为交易内核。在有效交易中,交易内核的形式总是X-Y = rG+0H,其中r是某个整数。即使使用多个输入和输出,如果输入值的和等于输出值的和,值乘以H等于零,等式成立。有效的交易内核总是公钥的形式,发送方和接收方都知道相应密钥的一部分。MimbleWimble有一个协议,该协议允许它们联合计算一个签名,使用它们的盲因子来签署交易。内核代表交易参与者的多重签名密钥。


范围证明

MimbleWimble协议要求交易金额为正,因此用户不能凭空创造币。正如我们所提到的,惟一能够铸造币的交易类型是coinbase交易。范围证明是一种密码技术,用于证明给定佩德森承诺X,证明者知道一对整数(r, min < v < max),使得X=rG+vH。MimbleWimble使用范围证明来证明v>0。MimbleWimble使用了最近介绍的防弹协议,一种范围证明方法,只需消耗~5000到~700字节。


无地址

如前所述,MimbleWimble不使用地址。删除地址背后的一个关键动机是增强隐私和扩大空间。在基于mimblewimb   le的区块链中,用户必须在链下通信才能创建交易。发送方与接收方共享其控制一些币的证明,接收方接受对这些币的控制。由于没有公开分配币控制权的地址,因此没有发送交易的“标准”方式。因此,交易参与者需要设置一个聊天会话来共享控制证明并将控制传递给接收方。这与比特币(以及大多数其他区块链)很大不同,后者可以在没有接收方参与的情况下执行交易。


CoinJoin

解决交易公开性的一种方法是使用CoinJoin。CoinJoin是一种将输入组合成单个大交易的方法,这使得很难区分哪些输入在支付,哪些是输出。CoinJoin已在JoinMarket、ShufflePuff、DarkWallet、SharedCoin、Wasabi、Samourai中实现。基于钱包的CoinJoin的缺点是用户必须选择使用该服务。这降低了它的有效性,因为用户要么不知道这些服务,要么认为使用这些服务太麻烦,从而导致了一组小型CoinJoin交易(一个小型的“匿名集”)。这不能有效地隐藏原始地址和接收地址。此外,用户必须进行交互才能创建CoinJoin交易,因为每个输入所有者必须对整个组合交易签名才能对其进行身份验证。

在MimbleWimble中,默认情况下用户不需要选择CoinJoin。一个区块不会有单独交易,相反,它看起来像是一个大型交易。图1是下一个区块中包含的一组未改动交易的简化版本。在图2中,MimbleWimble以类似于CoinJoin的流程将交易连接在一起,这样就是一个单独交易,一个组合了所有输入和所有输出的列表。







核销(Cut-throuh)

保密交易比常规交易要大得多。CT比非CT小5倍。MimbleWimble使用一种称为核销的技术来解决这一挑战,以提高效率。

正如我们上面提到的,下载完整的比特币区块链占用了近200GB的空间,并且还在增加。如果比特币上的所有交易都是像MimbleWimble这样的保密交易,那么区块链的规模将会大上几个数量级。

MimbleWimble使用一个称为“核销”的流程来删除冗余输出,将这些输出再次用作同一区块内的输入,从而释放区块内的空间,减少需要存储在区块链上的数据量,同时保持相同的安全性。

在图3中,网络标识出绿色输出用作稍后的输入。网络从这个给定区块的输入/输出中删除这个冗余,以精简必须存储的数据。虽然MimbleWimble删除了输出,但它保留这些交易发生的授权,即内核。






微观层面上,MimbleWimble的区块没有使用该工具,而是在宏观层面上使用了核销,因此仅剩下区块头、UTXO和交易内核。节点可以使用这些关键数据片段来验证区块链。这意味着区块链可能会缩小,例如,如果有一个区块的输出花费的比创建的多。理论上,这可以减少证明分类账状态长期正确所需的数据量。

根据Grin的说法,假设1000万笔交易使用10万UTXO(相当于1个分类账),而不使用核销,则大约为130GB,其中包含128GB的交易数据、1GB的交易证明数据和250MB的区块头。通过核销,区块链的大小可以降低到1.8GB,输出数据为1GB, UTXO为520MB,区块头为250mb。Beam认为,当区块链达到同样规模时,其大小可能只是比特币的30%。


蒲公英协议

MimbleWimble隐私性面临的最大威胁是,节点可以在将交易广播到网络时记录这些交易,然后再将它们包含到一个区块中。在有核销之前,交易输出会在内存池(未经确认的交易池)中停留一些时间。这允许间谍节点构建交易图2,并可能发现发送方IP。

蒲公英协议不属于MimbleWimble,它是对Grin和Beam的补充。蒲公英试图降低间谍节点成功创建交易图的概率,方法是“在交易爆发之前先悄悄地在网络上转发,从而延迟交易在网络上出现”(Andreas Antonopoulos) 。

通常,当有人向区块链发送一个交易时,它会广播到网络上的所有节点。蒲公英将交易的广播分为2个阶段,从“stem”或“匿名”阶段开始,交易随机广播到一个节点,然后节点随机将交易发送到另一个节点,以此类推,直到达到系统将交易广播到整个网络的“fluff”阶段。这可以防止监视节点使用蒲公英将交易映射回原始地址。蒲公英++是对蒲公英的改进,使创建交易图更加困难。

在MimbleWimble中,还可以在stem阶段之前合并交易,使将输入链接到交易变得更加困难。Beam更进一步,在没有足够的输出进行合并的情况下,可以添加虚拟或诱饵输出。

蒲公英面临的一个关键挑战是,在stem阶段,如果将交易传递给随后离线的节点,交易将不会传播到网络。Grin和Beam解决了这一挑战——如果该交易没有在合理的时间内达到“fluff”阶段,交易自动广播到更广泛的网络。


无脚本脚本(Scriptless scripts)  

MimbleWimble不支持交易脚本,而交易脚本是大多数区块链一个重要的特性。脚本是嵌入在交易中的代码,支持基本的智能合约功能。没有它,MimbleWimble就不能支持条件交易、使用时间锁、状态通道(例如闪电网络)、跨链原子交换等等。这是不可链接交易和核销付出的代价。验证者无法检查是否满足智能合约条件,因为相关UTXO及其条件可能已被删除。

当2016年8月发表第一篇MimbleWimble论文时,无条件交易对社区而言似乎还是一个限制。然而,Andrew Poelstra发现了一种用无脚本的脚本实现简单智能合约的方法。无脚本的脚本基于这样一种思想,即区块链验证者只需要检查签名是否存在并正确。它们不需要知道发生在链下的条件元素。Schnorr签名可用于支持无脚本的脚本。

具体地说,交易的参与者可以通过组合各自的签名密钥来创建Schnorr多重签名,从而交互式地生成签名,这个签名是唯一需要提交给节点并由节点验证的数据。

Aaron Van Wirdum解释,他举了一个网络用户想听艺术家歌曲的例子。艺术家和用户需要向区块链提交他们的组合Schnorr签名,以验证条件交易。艺术家拥有歌曲的版权,其对歌曲进行加密,密钥设为7000。

获得这个密钥就可以收听歌曲。这个艺术家掌握的一半的Schnorr签名是 8000。艺术家可以通过将她的签名(8000)减去歌曲的密钥(7000)来创建一个适配器签名1000。然后,艺术家把这个适配器签名发给用户。用户使用密码学技术验证确认 1000 是等于艺术家的Schnorr签名减去歌曲密钥的结果。然后用户也做Schnorr签名并向艺术家发送该签名,假设签名是 5000。艺术家将两部分施诺尔签名组合(8000 + 5000 = 13000)并提交到区块链上。这时用户获得组合后的签名 13000,并可以计算出艺术家的签名是 13000-5000=8000。最后用户通过计算 8000-1000=7000 获得了歌曲的加密密钥,从而可以收听歌曲。

这一切都在链下发生,除了艺术家和用户,没有人能发现单个值和步骤。验证者所看到的唯一内容是Schnorr组合签名13000。公众无法检测Schnorr签名。区块链上只记录了“交易结算”。可以通过添加支持Schnorr签名的新操作码来实现无脚本脚本。Grin和Beam正在实现无脚本脚本的过程中,并没有功能投入使用的确切时间。

无脚本的脚本可潜在支持保密资产、跨链原子交换和第二层扩容解决方案,比如在MimbleWimble区块链上使用闪电网络。无脚本脚本不一定要在MimbleWimble上实现,甚至可以扩展到其他区块链生态上。


结论

MimbleWimble基于经过验证的密码原语。其中一些区块构建已发表在同行评审的密码期刊上,以及写入公共白皮书和技术报告。首个MimbleWimble区块链Grin和Beam直到最近才推出。虽然MimbleWimble是一项新的实验性技术,但它有提供显著的隐私性和扩容优势的潜力,目前它还未解决用户体验和隐私方面的挑战。需要大量的测试和迭代,才能开源区块链上大规模地让隐私落实。目前,复杂的概念在实践中可能面临大量问题。

用户体验方面,没有地址,交易参与方需要交互并在线(虽然不一定同时在线)来签署和完成交易。与现有的加密资产相比较为复杂。

隐私方面,在CoinJoin和核销出现之前,矿工可以在mempool中看到交易。因此,监视网络的节点可以构建详细的交易图,从而损害隐私性,这违反了MimbleWimble的核心价值主张。虽然有蒲公英协议和虚拟UTXO等潜在的解决方案,但在实践中还有待完善。


欢迎添加小助手微信号:go-first-one  获取更多数据分析报告 查看全部
MimbleWimble-bitcoin.jpg

*声明:本文来源于Circle Research,由头等仓@Tracy 进行翻译。本文为报告上篇,主要讲述MW协议的背景原理和机制等问题,相关具体应用案例将在下篇文章中具体分析,敬请关注!


MimbleWimble

MimbleWimble是一种增强隐私和扩容的区块链协议。在不存储整个区块链历史记录的情况下,验证所有交易是否有效。它的名字来源于《哈利波特》中束缚舌头的咒语,这种咒语可以防止被施咒者泄露秘密。2016年,一个化名汤姆·埃尔维斯·杰多索的人在比特币奇才IRC聊天室分享了一个Tor链接,链接到一个概述MimbleWimble的文本文件,然后就消失了。


背景

Blockstream的数学家Andrew Poelstra对该协议很感兴趣,并于2016年10月发表了一篇关于MimbleWimble更详细、更强大的技术意见书。MimbleWimble是一个区块链协议,Grin和Beam是它的2个最初实现。在本篇报告中,我们将探索MimbleWimble、Grin和Beam。

201903271354231.jpeg

来源:messari.io/onchainfx,coinmarketcap.com


加密社区的许多人一直在密切关注MimbleWimble协议,因为其旨在改进比特币和其他加密货币的关键问题,首次优化了隐私性和扩展性。


· 健全的隐私性:MimbleWimble将交易发送方、接收方和金额隐藏起来,让任何未参与交易的人无法查看。观察  者看到的交易由一些加密的输入和输出组成。他们可以验证已在链上的输入,并且等于输出货币的总和。这是对比特币等系统的改进,在比特币系统中,每个人都可以在比特币从一个地址转移到另一个地址时追踪其价值。

· 高效:MimbleWimble只允许验证者存储未使用的UTXO。所有其他加密货币强制矿工和外部验证者存储区块链的整个交易历史。这可以节省空间和更快的同步,因为随着区块链历史记录的增长,矿工可能被迫使用多个驱动器来存储整个历史记录。



验证者通过验证(1)输入的和等于输出的和,(2)交易不包含负数来检查MimbleWimble交易,以确保没有任何交易试图铸造新币。唯一可以铸币的交易是coinbase交易,这也是唯一可识别的交易。但是,验证者和观察者无法查看谁收到了区块奖励。

MimbleWimble的另一个重要特性是没有地址或公钥,只有输入和输出。每个UTXO都有一个密钥,接收方将UTXO密钥存储在他的钱包中。要发送UTXO,发送方必须在专用通道中与接收方联系,并执行多轮通信来构建交易。发送方使用自己的UTXO密钥对UTXO进行签名,而接收方通过通信获得了输出UTXO的新密钥。


问题

区块链是不可伪造的公共交易账簿。不可伪造意味着用户只能发送他们收到的资金——他们不能发送已使用资金或凭空创造资金。比特币和类似的区块链公开了发送方地址、接收方地址和交易金额,因此很容易验证发送的金额是否等于接收的金额,并且发送输入的是与这些输入对应的私钥。

比特币(以及其他加密资产)的公开性,可能会不被那些不想分享交易细节给所有人的人和企业的欢迎。此外,随着像Elliptic和Chainalysis这样的区块链分析公司崛起,研究人员可以将输出与非法交易联系起来,并将这些输出列入黑名单。币安的首席执行官曾在推特上表示,在社交媒体上报道了黑客向该交易所发送的资金后,他们能够冻结这些资金。然而,一些人认为这违反了非同质(fungibility)原则。非同质是指所有币都是一样,就像一张1美元的纸币与另一张1美元的纸币是一样的,不管这张纸币过去有什么活动。

比特币和所有其他区块链都要求矿工和其他验证者存储该链的整个交易历史,以验证所有交易都为有效。新参与者需要下载并验证整个区块链,以验证网络的当前状态。这对希望与网络同步的新参与者在空间、时间和计算上有很大要求。在2019年之前,比特币区块链的大小约为200GB。


MIMBLEWIMBLE解决方案

MimbleWimble以一种聪明的方式使用密码学来实现不可伪造性,同时优化了隐私和扩展性。与比特币验证每个输出的整个历史不同,MimbleWimble检查所有输入减去区块链上所有输出之和是否为零来验证链(这加强了货币的一个基本特性,即发送的金额等于接收的金额)。MimbleWimble使用了保密交易、CoinJoin、范围证明和核销(cut-through)组合。

与比特币类似,MimbleWimble依赖于椭圆曲线密码学和UTXO模型。然而,MimbleWimble是一个更精简的版本,由于脚本的隐私性问题,它牺牲了可编程性。因此,无法执行更复杂和丰富的功能,如时间锁定或支付渠道(如闪电网络)。


快速了解:UTXO

比特币和MimbleWimble使用未花费的交易输出(UTXO)模型来计算余额。可以将此模型使用币与钞票或信用卡与借记卡支付商品和服务进行对比。例如,Alice想买一件30美元的衬衫,但她有2张20美元的钞票。她不能只给商人一张半的钞票。相反,她把2张钞票都给了商人,并收到一张10美元的钞票作为找零。

UTXO模型的功能与此类似:Alice有2个交易输出,分别是先前交易的1个BTC和0.5个BTC。她需要向商家支付1.3 BTC。她的钱包创建了一个交易,该交易发送1.5 BTC(2个新输出)。商户收到1.3个比特币,Alice收到0.2个比特币作为找零(扣除交易费用)。比特币用户查看区块浏览器,可以发现他们比特币地址发送的比特币数量通常比指定的要多。


快速了解:椭圆曲线密码学

椭圆曲线有几个特性,对复杂的密码协议非常有帮助。椭圆曲线的一个性质是单向函数。在椭圆曲线上取一个随机点G,并将其乘以某个整数s,很容易得到另一个点P=sG。然而,给定(P,G),恢复s的值在计算上不可行。这使得我们可以使用(P,G)作为公钥,而s作为密钥。另一个性质是椭圆曲线上的点具有有用的代数性质:

1. 分配式:(a+b)G = aG+bG

2. 交换律:a(bG) = b(aG) = (ab)G


快速了解:佩德森承诺

佩德森承诺是结合了椭圆曲线的单向和代数特性的密码原语。对某些值(x,y)的承诺计算为P=xG+yH。虽然算出s=P/G在计算上不可行,但是从(P,G,H)计算出(x,y)也不可能,因为有无数的x和y的组合可以满足P=xG+yH关系。然而,知道单个(x,y)对满足这个等式的用户无法计算满足这个等式而不违反椭圆曲线单向特性的第二个 (x ',y ') 对。


保密交易

默认情况下,MimbleWimble依靠一种称为保密交易(CT)的加密概念来实现隐私。保密交易由Gregory Maxwell提出,他的灵感来自Adam Back对比特币的同态加密。保密交易使用佩德森承诺来隐藏UTXO的值。

在MimbleWimble中,交易输出或输入表示为佩德森承诺rG + vH。G和H是椭圆曲线上的随机点,是区块链的公共参数。V值为UTXO值,r为盲因子,是UTXO的密钥。rG值是对应的公钥。MimbleWimble使用佩德森承诺混淆敏感的交易信息,而不是显示明文的交易值。佩德森承诺允许使用基本算法来验证交易。

假设这样一个例子:我们有2个输入和1个输出。我们提供了样本值和盲因子,同时保留公共参数G和H作为变量。

201903270611594484.jpg



交易内核

如上所述,保密交易的问题在于,它们要求输入和输出UTXO使用相同的盲因子,即接收方的密钥。如果发送方知道了接收方的盲因子值,她就可以窃取接收方的输出UTXO。MimbleWimble使用零知识证明克服了这个问题。

假设一个发送5个币的简单例子。发送方有一个未使用的UTXO,表示为承诺X=45G+5H,其中X=5,45是她的盲因子(r),或密钥。接收方选择一个随机盲因子7,并创建一个输出UTXO,表示为承诺Y=7G+5H。将输入与输出进行比较的验证者将看到超额的承诺:

X-Y = (45G+5H) - (7G+5H) = 38G

MimbleWimble将值38称为excess或内核,将值X-Y = 38G称为交易内核。在有效交易中,交易内核的形式总是X-Y = rG+0H,其中r是某个整数。即使使用多个输入和输出,如果输入值的和等于输出值的和,值乘以H等于零,等式成立。有效的交易内核总是公钥的形式,发送方和接收方都知道相应密钥的一部分。MimbleWimble有一个协议,该协议允许它们联合计算一个签名,使用它们的盲因子来签署交易。内核代表交易参与者的多重签名密钥。


范围证明

MimbleWimble协议要求交易金额为正,因此用户不能凭空创造币。正如我们所提到的,惟一能够铸造币的交易类型是coinbase交易。范围证明是一种密码技术,用于证明给定佩德森承诺X,证明者知道一对整数(r, min < v < max),使得X=rG+vH。MimbleWimble使用范围证明来证明v>0。MimbleWimble使用了最近介绍的防弹协议,一种范围证明方法,只需消耗~5000到~700字节。


无地址

如前所述,MimbleWimble不使用地址。删除地址背后的一个关键动机是增强隐私和扩大空间。在基于mimblewimb   le的区块链中,用户必须在链下通信才能创建交易。发送方与接收方共享其控制一些币的证明,接收方接受对这些币的控制。由于没有公开分配币控制权的地址,因此没有发送交易的“标准”方式。因此,交易参与者需要设置一个聊天会话来共享控制证明并将控制传递给接收方。这与比特币(以及大多数其他区块链)很大不同,后者可以在没有接收方参与的情况下执行交易。


CoinJoin

解决交易公开性的一种方法是使用CoinJoin。CoinJoin是一种将输入组合成单个大交易的方法,这使得很难区分哪些输入在支付,哪些是输出。CoinJoin已在JoinMarket、ShufflePuff、DarkWallet、SharedCoin、Wasabi、Samourai中实现。基于钱包的CoinJoin的缺点是用户必须选择使用该服务。这降低了它的有效性,因为用户要么不知道这些服务,要么认为使用这些服务太麻烦,从而导致了一组小型CoinJoin交易(一个小型的“匿名集”)。这不能有效地隐藏原始地址和接收地址。此外,用户必须进行交互才能创建CoinJoin交易,因为每个输入所有者必须对整个组合交易签名才能对其进行身份验证。

在MimbleWimble中,默认情况下用户不需要选择CoinJoin。一个区块不会有单独交易,相反,它看起来像是一个大型交易。图1是下一个区块中包含的一组未改动交易的简化版本。在图2中,MimbleWimble以类似于CoinJoin的流程将交易连接在一起,这样就是一个单独交易,一个组合了所有输入和所有输出的列表。

201903270612531383.jpg



核销(Cut-throuh)

保密交易比常规交易要大得多。CT比非CT小5倍。MimbleWimble使用一种称为核销的技术来解决这一挑战,以提高效率。

正如我们上面提到的,下载完整的比特币区块链占用了近200GB的空间,并且还在增加。如果比特币上的所有交易都是像MimbleWimble这样的保密交易,那么区块链的规模将会大上几个数量级。

MimbleWimble使用一个称为“核销”的流程来删除冗余输出,将这些输出再次用作同一区块内的输入,从而释放区块内的空间,减少需要存储在区块链上的数据量,同时保持相同的安全性。

在图3中,网络标识出绿色输出用作稍后的输入。网络从这个给定区块的输入/输出中删除这个冗余,以精简必须存储的数据。虽然MimbleWimble删除了输出,但它保留这些交易发生的授权,即内核。

201903270613121644.jpg


微观层面上,MimbleWimble的区块没有使用该工具,而是在宏观层面上使用了核销,因此仅剩下区块头、UTXO和交易内核。节点可以使用这些关键数据片段来验证区块链。这意味着区块链可能会缩小,例如,如果有一个区块的输出花费的比创建的多。理论上,这可以减少证明分类账状态长期正确所需的数据量。

根据Grin的说法,假设1000万笔交易使用10万UTXO(相当于1个分类账),而不使用核销,则大约为130GB,其中包含128GB的交易数据、1GB的交易证明数据和250MB的区块头。通过核销,区块链的大小可以降低到1.8GB,输出数据为1GB, UTXO为520MB,区块头为250mb。Beam认为,当区块链达到同样规模时,其大小可能只是比特币的30%。


蒲公英协议

MimbleWimble隐私性面临的最大威胁是,节点可以在将交易广播到网络时记录这些交易,然后再将它们包含到一个区块中。在有核销之前,交易输出会在内存池(未经确认的交易池)中停留一些时间。这允许间谍节点构建交易图2,并可能发现发送方IP。

蒲公英协议不属于MimbleWimble,它是对Grin和Beam的补充。蒲公英试图降低间谍节点成功创建交易图的概率,方法是“在交易爆发之前先悄悄地在网络上转发,从而延迟交易在网络上出现”(Andreas Antonopoulos) 。

通常,当有人向区块链发送一个交易时,它会广播到网络上的所有节点。蒲公英将交易的广播分为2个阶段,从“stem”或“匿名”阶段开始,交易随机广播到一个节点,然后节点随机将交易发送到另一个节点,以此类推,直到达到系统将交易广播到整个网络的“fluff”阶段。这可以防止监视节点使用蒲公英将交易映射回原始地址。蒲公英++是对蒲公英的改进,使创建交易图更加困难。

在MimbleWimble中,还可以在stem阶段之前合并交易,使将输入链接到交易变得更加困难。Beam更进一步,在没有足够的输出进行合并的情况下,可以添加虚拟或诱饵输出。

蒲公英面临的一个关键挑战是,在stem阶段,如果将交易传递给随后离线的节点,交易将不会传播到网络。Grin和Beam解决了这一挑战——如果该交易没有在合理的时间内达到“fluff”阶段,交易自动广播到更广泛的网络。


无脚本脚本(Scriptless scripts)  

MimbleWimble不支持交易脚本,而交易脚本是大多数区块链一个重要的特性。脚本是嵌入在交易中的代码,支持基本的智能合约功能。没有它,MimbleWimble就不能支持条件交易、使用时间锁、状态通道(例如闪电网络)、跨链原子交换等等。这是不可链接交易和核销付出的代价。验证者无法检查是否满足智能合约条件,因为相关UTXO及其条件可能已被删除。

当2016年8月发表第一篇MimbleWimble论文时,无条件交易对社区而言似乎还是一个限制。然而,Andrew Poelstra发现了一种用无脚本的脚本实现简单智能合约的方法。无脚本的脚本基于这样一种思想,即区块链验证者只需要检查签名是否存在并正确。它们不需要知道发生在链下的条件元素。Schnorr签名可用于支持无脚本的脚本。

具体地说,交易的参与者可以通过组合各自的签名密钥来创建Schnorr多重签名,从而交互式地生成签名,这个签名是唯一需要提交给节点并由节点验证的数据。

Aaron Van Wirdum解释,他举了一个网络用户想听艺术家歌曲的例子。艺术家和用户需要向区块链提交他们的组合Schnorr签名,以验证条件交易。艺术家拥有歌曲的版权,其对歌曲进行加密,密钥设为7000。

获得这个密钥就可以收听歌曲。这个艺术家掌握的一半的Schnorr签名是 8000。艺术家可以通过将她的签名(8000)减去歌曲的密钥(7000)来创建一个适配器签名1000。然后,艺术家把这个适配器签名发给用户。用户使用密码学技术验证确认 1000 是等于艺术家的Schnorr签名减去歌曲密钥的结果。然后用户也做Schnorr签名并向艺术家发送该签名,假设签名是 5000。艺术家将两部分施诺尔签名组合(8000 + 5000 = 13000)并提交到区块链上。这时用户获得组合后的签名 13000,并可以计算出艺术家的签名是 13000-5000=8000。最后用户通过计算 8000-1000=7000 获得了歌曲的加密密钥,从而可以收听歌曲。

这一切都在链下发生,除了艺术家和用户,没有人能发现单个值和步骤。验证者所看到的唯一内容是Schnorr组合签名13000。公众无法检测Schnorr签名。区块链上只记录了“交易结算”。可以通过添加支持Schnorr签名的新操作码来实现无脚本脚本。Grin和Beam正在实现无脚本脚本的过程中,并没有功能投入使用的确切时间。

无脚本的脚本可潜在支持保密资产、跨链原子交换和第二层扩容解决方案,比如在MimbleWimble区块链上使用闪电网络。无脚本脚本不一定要在MimbleWimble上实现,甚至可以扩展到其他区块链生态上。


结论

MimbleWimble基于经过验证的密码原语。其中一些区块构建已发表在同行评审的密码期刊上,以及写入公共白皮书和技术报告。首个MimbleWimble区块链Grin和Beam直到最近才推出。虽然MimbleWimble是一项新的实验性技术,但它有提供显著的隐私性和扩容优势的潜力,目前它还未解决用户体验和隐私方面的挑战。需要大量的测试和迭代,才能开源区块链上大规模地让隐私落实。目前,复杂的概念在实践中可能面临大量问题。

用户体验方面,没有地址,交易参与方需要交互并在线(虽然不一定同时在线)来签署和完成交易。与现有的加密资产相比较为复杂。

隐私方面,在CoinJoin和核销出现之前,矿工可以在mempool中看到交易。因此,监视网络的节点可以构建详细的交易图,从而损害隐私性,这违反了MimbleWimble的核心价值主张。虽然有蒲公英协议和虚拟UTXO等潜在的解决方案,但在实践中还有待完善。


欢迎添加小助手微信号:go-first-one  获取更多数据分析报告

BCH硬分叉背后:“重放攻击”下的用户自救指南

攻略secbit 发表了文章 • 2018-11-16 23:20 • 来自相关话题

11月16日凌晨2:16分,BCH在第556767个块高度发生硬分叉,分叉大战落下帷幕,分成了BCH ABC和BCH SV两个阵营。

在此次此次硬分叉中,BCH ABC和BCH SV双方都没有进行“重放保护”。也就是说,此次分叉后,理论上,重放攻击将有可能导致任何一方发生共识崩塌和算力归零。


何谓“重放攻击”


传统计算机术语中,重放攻击(Replay Attacks)又称重播攻击、回放攻击,是指攻击者发送一个目的主机已接收过的数据包,来达到欺骗系统的目的。重放攻击在任何网络通讯过程中都可能发生,是计算机世界黑客常用的攻击方式之一。主要用于身份认证过程。

而在区块链领域,重放攻击(Replay Attacks)通常出现在区块链硬分叉的时候,指的是“一条链上的交易在另一条链上也往往是合法的”。

有一个例子可以简单的说明什么是区块链中的“重放攻击”: 

小A向某个不能有效识别付款(这里指不能判断是哪一笔付款)的啤酒厂买啤酒,当他把用支付宝成功付款的付款信息出示给销售员后, 销售员把啤酒给他。 然后小A又再把上次的付款信息出示给另一个销售员, 销售员又给他一份啤酒。 只要小A不断重复出示他的付款信息,就可以源源不断骗得啤酒, 这对于啤酒厂来说就是被重放攻击了,损失了无数啤酒。


就本次BCH硬分叉来说,BCH由一条链变成了两条链,在这两条链都得到支持并持续运营的情况下,另外一条分叉出来的链又产生了BSV这一资产,也就是BCH ABC和BCH SV都存在。由于没有重放保护,分叉完了之后如果不去管它,任其自然生长,这时候就会出现这样的情况:你在SV链上交易时,由于相同的地址、算法和交易格式,拿到ABC链上去重新广播,就有可能会被ABC链承认有效,从而进行相同的交易操作。攻击者一旦利用这个漏洞,不断在交易所进行充提操作(BCH SV), 就能获取额外的BCH ABC。

这就意味着,没有重放保护的BCH用户资产已经被暴露于风险之中,更严重的,还将导致共识崩塌和算力归零。

 
“重放攻击”源起:以太坊硬分叉


2016年7月20日晚,以太坊在第192万个区块高度发生了硬分叉,产生了两条链,分别称为ETH chain和ETH Classic chain,上面的代币分别称为ETH和ETC。

这两条链上的地址和私钥算法相同,交易格式也完全相同,导致在其中一条链上的交易在另一条链上很可能是完全合法的。所以你在其中一条链上发起的交易,放到另一条链上去重新广播,可能也会得到确认。

由于事先没有做好预案,很多人利用这个漏洞,不断在交易所进行ETH充提操作,获取额外的ETC。 “重放攻击”得以在区块链世界被重新定义。

受重放攻击的影响,对用户来说,以太坊目前的问题是存在的。因为ETH和ETC都有很好的经济量,而用户如果无法解决掉自己的操作被重放的可能,他想卖其中一个资产的同时保留另一个资产,要么自行进行分离,要么就只能在交易所的协助下才能实现了。

 
应对:先分离 再交易


既然BCH在没有重放保护的前提下已经发生分叉,被重放无法避免,那么,为了避免受损失,交易所和用户都有必要在进行新的交易之前,对所持有的BCH ABC/BCH SV进行分离。

让我们回看一下BCH升级后的两个版本:bitcoin abc 0.18.2和bitcoin sv 0.1。

Abc0.18.2协议版本主要修改是增加了两个操作码OPcode, OP_CHECKDATASIG (CDS)和OP_CHECKDATASIGVERIFY(DSV);将区块里的交易排序规则从拓扑排序(TTOR)改成了规范排序(CTOR)。

SV0.1协议版本主要修改是恢复了比特币早期的四个操作码OPCode,OP_MUL,OP_LSHIFT,OP_RSHIFT,OP_INVERT;删除每个脚本201个操作码的限制;提高区块大小上限到128MB。

由于两个版本都更新了操作码,对于已经持有BCH的用户来说,使用新的 OP code进行交易操作,应先进行分离再操作账户更为稳妥。

分离最简单有效的办法,就是在分裂点后100个区块,从矿池购买一丁点coinbase交易的UTXO,发到你的BCH钱包里,然后将所有余额一次性转入一个新地址。只需要在一条链上这么做一次,就可以彻底分离出来了。

分离两种资产后,新OPCode你就可以使用了,不会出现因被重放而导致新OPCode在BCH链上有安全隐患的情况。

在此安比(SECBIT)实验室提醒广大BCH持有者和支持ABC/BSV的交易所,在分离你/你的用户的BSV之前,为避免重放造成损失,在交易中谨慎使用新的OPCode。 查看全部
Bitcoin-Replay-Attack.jpg

11月16日凌晨2:16分,BCH在第556767个块高度发生硬分叉,分叉大战落下帷幕,分成了BCH ABC和BCH SV两个阵营。

在此次此次硬分叉中,BCH ABC和BCH SV双方都没有进行“重放保护”。也就是说,此次分叉后,理论上,重放攻击将有可能导致任何一方发生共识崩塌和算力归零。


何谓“重放攻击”


传统计算机术语中,重放攻击(Replay Attacks)又称重播攻击、回放攻击,是指攻击者发送一个目的主机已接收过的数据包,来达到欺骗系统的目的。重放攻击在任何网络通讯过程中都可能发生,是计算机世界黑客常用的攻击方式之一。主要用于身份认证过程。

而在区块链领域,重放攻击(Replay Attacks)通常出现在区块链硬分叉的时候,指的是“一条链上的交易在另一条链上也往往是合法的”。

有一个例子可以简单的说明什么是区块链中的“重放攻击”: 


小A向某个不能有效识别付款(这里指不能判断是哪一笔付款)的啤酒厂买啤酒,当他把用支付宝成功付款的付款信息出示给销售员后, 销售员把啤酒给他。 然后小A又再把上次的付款信息出示给另一个销售员, 销售员又给他一份啤酒。 只要小A不断重复出示他的付款信息,就可以源源不断骗得啤酒, 这对于啤酒厂来说就是被重放攻击了,损失了无数啤酒。



就本次BCH硬分叉来说,BCH由一条链变成了两条链,在这两条链都得到支持并持续运营的情况下,另外一条分叉出来的链又产生了BSV这一资产,也就是BCH ABC和BCH SV都存在。由于没有重放保护,分叉完了之后如果不去管它,任其自然生长,这时候就会出现这样的情况:你在SV链上交易时,由于相同的地址、算法和交易格式,拿到ABC链上去重新广播,就有可能会被ABC链承认有效,从而进行相同的交易操作。攻击者一旦利用这个漏洞,不断在交易所进行充提操作(BCH SV), 就能获取额外的BCH ABC。

这就意味着,没有重放保护的BCH用户资产已经被暴露于风险之中,更严重的,还将导致共识崩塌和算力归零。

 
“重放攻击”源起:以太坊硬分叉


2016年7月20日晚,以太坊在第192万个区块高度发生了硬分叉,产生了两条链,分别称为ETH chain和ETH Classic chain,上面的代币分别称为ETH和ETC。

这两条链上的地址和私钥算法相同,交易格式也完全相同,导致在其中一条链上的交易在另一条链上很可能是完全合法的。所以你在其中一条链上发起的交易,放到另一条链上去重新广播,可能也会得到确认。

由于事先没有做好预案,很多人利用这个漏洞,不断在交易所进行ETH充提操作,获取额外的ETC。 “重放攻击”得以在区块链世界被重新定义。

受重放攻击的影响,对用户来说,以太坊目前的问题是存在的。因为ETH和ETC都有很好的经济量,而用户如果无法解决掉自己的操作被重放的可能,他想卖其中一个资产的同时保留另一个资产,要么自行进行分离,要么就只能在交易所的协助下才能实现了。

 
应对:先分离 再交易


既然BCH在没有重放保护的前提下已经发生分叉,被重放无法避免,那么,为了避免受损失,交易所和用户都有必要在进行新的交易之前,对所持有的BCH ABC/BCH SV进行分离。

让我们回看一下BCH升级后的两个版本:bitcoin abc 0.18.2和bitcoin sv 0.1。

Abc0.18.2协议版本主要修改是增加了两个操作码OPcode, OP_CHECKDATASIG (CDS)和OP_CHECKDATASIGVERIFY(DSV);将区块里的交易排序规则从拓扑排序(TTOR)改成了规范排序(CTOR)。

SV0.1协议版本主要修改是恢复了比特币早期的四个操作码OPCode,OP_MUL,OP_LSHIFT,OP_RSHIFT,OP_INVERT;删除每个脚本201个操作码的限制;提高区块大小上限到128MB。

由于两个版本都更新了操作码,对于已经持有BCH的用户来说,使用新的 OP code进行交易操作,应先进行分离再操作账户更为稳妥。

分离最简单有效的办法,就是在分裂点后100个区块,从矿池购买一丁点coinbase交易的UTXO,发到你的BCH钱包里,然后将所有余额一次性转入一个新地址。只需要在一条链上这么做一次,就可以彻底分离出来了。

分离两种资产后,新OPCode你就可以使用了,不会出现因被重放而导致新OPCode在BCH链上有安全隐患的情况。

在此安比(SECBIT)实验室提醒广大BCH持有者和支持ABC/BSV的交易所,在分离你/你的用户的BSV之前,为避免重放造成损失,在交易中谨慎使用新的OPCode。

Circle 发布 Qtum 研究报告

项目chainnews 发表了文章 • 2018-10-25 11:37 • 来自相关话题

背景介绍


Qtum 量子链——结合比特币与以太坊优势的开源智能合约平台。

Qtum 量子链项目由三位联合创始人帅初、Neil Mahi 以及 Jordan Earls 发起。其中帅初曾于 2012 年入职阿里巴巴,Neil Mahi 则拥有超过 20 年的软件开发经验,也在区块链开发领域也超过四年。

Qtum 量子链团队认为比特币是目前最成熟稳定的区块链,从而运用 Bitcoin Core 作为项目的核心基础。然而比特币无法运行智能合约编写中需要的图灵完备代码,故 Qtum 量子链结合了以太坊虚拟机(EVM),并在未来结合可支持 dApps 开发的其他虚拟机。

比特币运用的是 UTXO 模型而以太坊虚拟机(EVM)与其他虚拟机运用的则是账户模型以确保其简易性。为了使比特币的 UTXO 模型能与虚拟机的账户模型相兼容,Qtum 量子链在二者之中添加了一个「交互层」,称之为账户抽象层(AAL)。

运行 Bitcoin Core 使得 Qtum 量子链的更新迭代能够集成比特币的开发,而与以太坊虚拟机(EVM)的结合则使得以太坊开发者可将 dApps 置于 Qtum 量子链平台上。Qtum 量子链官方宣布了正在开发 x86 虚拟机的相关信息,该虚拟机将在未来支持使用更多主流开发语言的智能合约编写以及 dApps 开发。

共识机制:Qtum 量子链运用了 Blackcoin 版本的权益共识证明(PoS 3.0)来达成共识,而比特币与以太坊目前还在使用工作量证明共识机制(PoW)

治理:Qtum 量子链运用分布式自治协议(DGP)将区块链上的投票权去中心化,使开发者能够对区块链的各项参数(区块大小、gas 费用等)进行动态调整。

其他特点:Qtum 的智能合约能够在轻量化设备上执行(如移动设备及物联网设备)。


UTXO VS AAL


UTXO 模型:比特币运用 UTXO 模型,该模型的原理就好比使用货币或支票支付对比使用信用卡或借记卡支付。打个比方,Alice 想要购买一件 30 美元的 T-恤,而她手中拥有 2 张 20 美元的支票,她没有办法只向商贩支付 1.5 张支票,只能将两张全部支付给商贩并获得一张 10 美元支票的找零。

UTXO 模型的运行也使用了类似的方式,在之前的交易中,Alice 拥有两笔交易输出分别为 1 个比特币和 0.5 个比特币,而她需要向商贩支付 1.3 个比特币。当她支出 1.5 个 BTC 时,钱包形成了两个新的交易输出,发送 1.3 个比特币给到,并将剩下的 0.2 个退回给 Alice。这一特点比特币用户能够在区块链浏览器上轻松查询到,在发现他们的比特币地址之后,所呈现的交易数据通常是用于支付的比特币数量大于既定值。

账户模型:以太坊的账户模型与银行的账户模型非常相似,账户的总资金全部汇集在一起,形成一个总体的余额,每一笔交易都必须使用交易所需的精确金额——不可更改。例如,Alice 的账户里有 40 美元,她想花 30 美元买一件 T-恤,她发送给商人正好 30 美元,账户里剩余 10 美元。

Qtum 量子链使用 UTXO 模型的一大原因是它能够更好地保护用户资产安全,免受重放攻击和双花攻击的影响。此外,由于每个交易使用独立的输出,因此区块链还可以从并行处理的交易中获得更大的可扩展性。

账户抽象层 AAL: 就开发者们的观点来说,要实现 UTXO 与账户模型之间的转换并不容易。Qtum 量子链运用了账户抽象层(AAL)来实现两者的交互与结合,账户抽象层(AAL)是 Qtum 量子链团队自主开发的一个交互层,能够使 Qtum 量子链上使用基于 UTXO 模型的同时向运行智能合约的虚拟机展示基于账户模型的系统,由此一来,任何能够在以太坊上完成的开发都可以在 Qtum 量子链上完成。






POS 共识机制


Qtum 量子链运用 PoS 共识机制以确保网络的安全性并达到共识,在其原型——Blackcoin 版本的 PoS 3.0 中,网络参与者通过持有 Token 进行 Token Staking,验证网络交易并生成区块。获得新区块奖励的可能性的与网络权重成正比。如果网络参与者不诚实,并试图与系统博弈,PoS 将在通过没收部分或全部 Staking 所得 Token 对他们进行惩罚。

Qtum 量子链的 PoS 机制不存在 staking 的准入门槛,因此整个网络更加去中心化。其挑战在于,如果通过作弊获得的收益大于受到的惩罚,那么持有越少 QTUM 的 staking 节点将越倾向于作弊。Qtum 量子链运用了 Token 的「成熟」机制,以提高攻击成本。Token 必须先「成熟」(即 500 个区块确认)才能参与 Staking。

Qtum 量子链选择 PoS 的原因还在于 PoW 共识机制是能源密集型的,浪费能源且不利于可持续发展。

Qtum 量子链中,每 144 秒最大产生 2MB 的区块。目前的通货膨胀率设定为每年 1%,并计划每四年减半,为期三十二年。 截至撰写时,QTUM 流通供应量约为 8850 万,预计最大供应量~1.07 亿 。

目前的区块奖励是 4 个 QTUM。 0.4 QTUM 是创建区块时获得的奖励,需被锁定,直到成熟(500 个区块)。在最初的 0.4 奖励成熟之后,剩余的 3.6 QTUM 分配到超过 9 个区块里。Qtum 量子链使用锁定和延迟奖励保证安全,其他人要攻击网络就很难。





Qtum 区块奖励分配


安全性-Gas:由于一旦网络遭到恶意滥发垃圾信息攻击,区块链就会被阻塞,将无法处理合法交易和验证。所以,与以太坊类似,Qtum 量子链使用 gas 提高恶意攻击者滥发攻击的成本,进而阻止恶意攻击者。 gas 以 Qtum satoshis --- QTUM 的最小单位(0.00000001 Qtum)计价。如果用户发起恶意滥发垃圾信息攻击,那么攻击的 gas 成本(40 QTUM satoshis)将会增加,让攻击变得非常昂贵。如果 QTUM 价格上涨且 gas 价格过高,则可以调低 gas 成本。Qtum 量子链使用分布式自治协议(DGP)机制实现 gas 费用的动态调整,目前 Qtum 量子链团队正对它进行实时监控。Qtum 量子链将面临的挑战是,确保 gas fee 限制和价格上涨不会阻碍复杂智能合约的部署。


Qtum x86 虚拟机


Qtum 量子链将推出另一款能够支持多语言编程的 x86VM 虚拟机。Qtum 团队表示账户抽象层( AAL) 能够支持各种虚拟机的集成,Qtum 团队意识到以太坊虚拟机( EVM) 及其编程语言(Solidity)有一些设计缺陷,并且缺乏足够的验证工具。

Qtum 团队正在开发 Qtum x86 虚拟机,允许开发者使用主流的编程语言,如 C,C ++,Rust,Python 等进行智能合约部署,并在 Qtum 量子链上开发 dApps,而不是仅仅局限于 Solidity。在未来 x86 的实现过程中,Qtum 将先启动一个公共测试网并部署一个 bug 修复的赏金计划,在历经数月的反馈收集阶段后推出主网版本。


Qtum 区块链治理——DGP


Qtum 量子链团队开发了一种分布式自治协议(DGP),用于对区块链的基本参数进行动态调整。同时,Qtum 还会在必要时使用硬分叉和软分叉,但仅用于添加新功能或实现其他无法在不分叉的情况下完成重要的事务。

分布式自治协议(DGP)涉及区块大小和 gas 的成本,以及其他未公开定义的参数,Qtum 计划使用 DGP 来防止分叉对网络造成的破坏。

DGP 的四个步骤如下:

一个利益相关团队发出一个修改参数的提议

然后,所有利益相关团体投票赞成或反对该提议

提议被接受(并且实现)或者被拒绝

提议数据归档

利益相关者可以按照多种方式划分 - 按行业或纵向(金融服务,医疗保健,供应链等),按用户团体(用户,开发商,区块生产商等),按地区划分(美洲,欧洲,亚洲,非洲等),等等。据 Qtum 所说,无论以何种方式划分,不同的群体虽然可能会有不同的需求和兴趣,但都应该具有相同的代表性。

所以,Qtum 可能会实现一个系统,让每个利益相关方团体都可以投票给一个治理机构来代表他们做出关乎平台未来的决策。 如果实现这样一个民主结构,Qtum 就必须同时建立一个投票机制。


Qtum 量子链基金会


Qtum 量子链基金会(Qtum Blockchain Foundation)是一个总部设在新加坡的非营利性组织。 Qtum 基金会的核心任务是区块链开发、不断完善代码库并促进 Qtum 量子链的大规模应用。该基金会设有一个决策委员会和四个次机委员会。






Qtum 量子链正式落地时,基金会在普华永道会计师事务所的帮助下发布了一份白皮书,对基金会及其各委员会的职能和责任进行了概述。Qtum 团队表示,他们计划在未来发布一份新包含最新信息的新版白皮书,并计划通过公开选举,允许持有 QTUM 的用户进入各个委员会 .







产品特点


兼容性 - 帐户抽象层和操作码

为了将实现比特币的 UTXO 模型与以太坊虚拟机(EVM)的交互,Qtum 量子链开发了帐户抽象层(AAL)。 AAL 将 UTXO 转换为 EVM 可识别 dApp 的帐户模型,这样开发者就不必编写智能合约来选择自己的输出。因此,Qtum 相当于为所有合约添加了一个共识选币算法(Consensus-critical coin picking)。关于 Qtum 如何将 UTXO 转换为帐户模型,这种技术细节超出了本报告的范围。虽然 AAL 最初的目的是将 Qtum 基于 UTXO 的底层区块链与 EVM 结合,但它也可以结合其他虚拟机。 x86VM 就在下一个产品线上。 此外,AAL 还能让开发者能够轻松地将基于以太坊的智能合约移植到 Qtum 量子链,反之亦然。尽管使用 UTXO 模型,Qtum 还可以退还未使用的 gas 费用,这一功能在非 UTXO 模型的以太坊上也能适用。

结合 EVM 所需的另一个工具是操作码。操作码是一行代码的一部分,用于定义需要执行的操作。 Qtum 使用了比特币的脚本语言,并增加了三个新的操作码(与 AAL 一起)实现智能合约。

轻客户端 - SPV

如上所述,Qtum 选择 bitcoin core 和 UTXO 模型作为其基础的一个原因是使用 SPV (简单支付验证)。 SPV 允许在轻量化客户端(移动电话,平板电脑,物联网设备等)上执行智能合约而无需下载整个区块链数据,用户只需对区块头进行标记就足以完成交易验证,使得 SPV 轻量化客户端能够与智能合约和 dApp 进行交互,而无需下载整个区块链。目前 Qtum SPV 所面临的一个挑战是 Qtum 的轻客户端交易仅限于传输本地 QTUM。

兼容性 - 比特币改进建议

运行 bitcoin core 代码允许 Qtum 合并网络更新,例如 Segwit,闪电网络以及未来的比特币改进提案。目前 Segwit 在 Qtum 上已被激活,但用户无需使用。

Qtum 企业版

Qtum 于 2018 年 5 月宣布推出 Qtum X. Qtum X 是专为企业级用户设计的私有链。目前所知的是系统将使用 PoA 共识机制作实现更强的交易处理能力(更高的 TPD)。Qtum 企业版与 Qtum 之间存在着明显的区分,但目前还不清楚这两者是否可以进行交互(比如 QTUM 是否可以在这两个平台上通用)。


本文为 Circle 官方 Qtum 中文译文版,由于篇幅限制等因素稍作修改 查看全部
IzxgzHY.jpg


背景介绍


Qtum 量子链——结合比特币与以太坊优势的开源智能合约平台。

Qtum 量子链项目由三位联合创始人帅初、Neil Mahi 以及 Jordan Earls 发起。其中帅初曾于 2012 年入职阿里巴巴,Neil Mahi 则拥有超过 20 年的软件开发经验,也在区块链开发领域也超过四年。

Qtum 量子链团队认为比特币是目前最成熟稳定的区块链,从而运用 Bitcoin Core 作为项目的核心基础。然而比特币无法运行智能合约编写中需要的图灵完备代码,故 Qtum 量子链结合了以太坊虚拟机(EVM),并在未来结合可支持 dApps 开发的其他虚拟机。

比特币运用的是 UTXO 模型而以太坊虚拟机(EVM)与其他虚拟机运用的则是账户模型以确保其简易性。为了使比特币的 UTXO 模型能与虚拟机的账户模型相兼容,Qtum 量子链在二者之中添加了一个「交互层」,称之为账户抽象层(AAL)。

运行 Bitcoin Core 使得 Qtum 量子链的更新迭代能够集成比特币的开发,而与以太坊虚拟机(EVM)的结合则使得以太坊开发者可将 dApps 置于 Qtum 量子链平台上。Qtum 量子链官方宣布了正在开发 x86 虚拟机的相关信息,该虚拟机将在未来支持使用更多主流开发语言的智能合约编写以及 dApps 开发。

共识机制:Qtum 量子链运用了 Blackcoin 版本的权益共识证明(PoS 3.0)来达成共识,而比特币与以太坊目前还在使用工作量证明共识机制(PoW)

治理:Qtum 量子链运用分布式自治协议(DGP)将区块链上的投票权去中心化,使开发者能够对区块链的各项参数(区块大小、gas 费用等)进行动态调整。

其他特点:Qtum 的智能合约能够在轻量化设备上执行(如移动设备及物联网设备)。


UTXO VS AAL


UTXO 模型:比特币运用 UTXO 模型,该模型的原理就好比使用货币或支票支付对比使用信用卡或借记卡支付。打个比方,Alice 想要购买一件 30 美元的 T-恤,而她手中拥有 2 张 20 美元的支票,她没有办法只向商贩支付 1.5 张支票,只能将两张全部支付给商贩并获得一张 10 美元支票的找零。

UTXO 模型的运行也使用了类似的方式,在之前的交易中,Alice 拥有两笔交易输出分别为 1 个比特币和 0.5 个比特币,而她需要向商贩支付 1.3 个比特币。当她支出 1.5 个 BTC 时,钱包形成了两个新的交易输出,发送 1.3 个比特币给到,并将剩下的 0.2 个退回给 Alice。这一特点比特币用户能够在区块链浏览器上轻松查询到,在发现他们的比特币地址之后,所呈现的交易数据通常是用于支付的比特币数量大于既定值。

账户模型:以太坊的账户模型与银行的账户模型非常相似,账户的总资金全部汇集在一起,形成一个总体的余额,每一笔交易都必须使用交易所需的精确金额——不可更改。例如,Alice 的账户里有 40 美元,她想花 30 美元买一件 T-恤,她发送给商人正好 30 美元,账户里剩余 10 美元。

Qtum 量子链使用 UTXO 模型的一大原因是它能够更好地保护用户资产安全,免受重放攻击和双花攻击的影响。此外,由于每个交易使用独立的输出,因此区块链还可以从并行处理的交易中获得更大的可扩展性。

账户抽象层 AAL: 就开发者们的观点来说,要实现 UTXO 与账户模型之间的转换并不容易。Qtum 量子链运用了账户抽象层(AAL)来实现两者的交互与结合,账户抽象层(AAL)是 Qtum 量子链团队自主开发的一个交互层,能够使 Qtum 量子链上使用基于 UTXO 模型的同时向运行智能合约的虚拟机展示基于账户模型的系统,由此一来,任何能够在以太坊上完成的开发都可以在 Qtum 量子链上完成。

060a723a-3767-5027-a4ce-24c713ab38bc_guGf4kg.PNG


POS 共识机制


Qtum 量子链运用 PoS 共识机制以确保网络的安全性并达到共识,在其原型——Blackcoin 版本的 PoS 3.0 中,网络参与者通过持有 Token 进行 Token Staking,验证网络交易并生成区块。获得新区块奖励的可能性的与网络权重成正比。如果网络参与者不诚实,并试图与系统博弈,PoS 将在通过没收部分或全部 Staking 所得 Token 对他们进行惩罚。

Qtum 量子链的 PoS 机制不存在 staking 的准入门槛,因此整个网络更加去中心化。其挑战在于,如果通过作弊获得的收益大于受到的惩罚,那么持有越少 QTUM 的 staking 节点将越倾向于作弊。Qtum 量子链运用了 Token 的「成熟」机制,以提高攻击成本。Token 必须先「成熟」(即 500 个区块确认)才能参与 Staking。

Qtum 量子链选择 PoS 的原因还在于 PoW 共识机制是能源密集型的,浪费能源且不利于可持续发展。

Qtum 量子链中,每 144 秒最大产生 2MB 的区块。目前的通货膨胀率设定为每年 1%,并计划每四年减半,为期三十二年。 截至撰写时,QTUM 流通供应量约为 8850 万,预计最大供应量~1.07 亿 。

目前的区块奖励是 4 个 QTUM。 0.4 QTUM 是创建区块时获得的奖励,需被锁定,直到成熟(500 个区块)。在最初的 0.4 奖励成熟之后,剩余的 3.6 QTUM 分配到超过 9 个区块里。Qtum 量子链使用锁定和延迟奖励保证安全,其他人要攻击网络就很难。

df074e91-a3ed-5115-be3f-d68b10ceb02f_fHaHw76.PNG

Qtum 区块奖励分配


安全性-Gas:由于一旦网络遭到恶意滥发垃圾信息攻击,区块链就会被阻塞,将无法处理合法交易和验证。所以,与以太坊类似,Qtum 量子链使用 gas 提高恶意攻击者滥发攻击的成本,进而阻止恶意攻击者。 gas 以 Qtum satoshis --- QTUM 的最小单位(0.00000001 Qtum)计价。如果用户发起恶意滥发垃圾信息攻击,那么攻击的 gas 成本(40 QTUM satoshis)将会增加,让攻击变得非常昂贵。如果 QTUM 价格上涨且 gas 价格过高,则可以调低 gas 成本。Qtum 量子链使用分布式自治协议(DGP)机制实现 gas 费用的动态调整,目前 Qtum 量子链团队正对它进行实时监控。Qtum 量子链将面临的挑战是,确保 gas fee 限制和价格上涨不会阻碍复杂智能合约的部署。


Qtum x86 虚拟机


Qtum 量子链将推出另一款能够支持多语言编程的 x86VM 虚拟机。Qtum 团队表示账户抽象层( AAL) 能够支持各种虚拟机的集成,Qtum 团队意识到以太坊虚拟机( EVM) 及其编程语言(Solidity)有一些设计缺陷,并且缺乏足够的验证工具。

Qtum 团队正在开发 Qtum x86 虚拟机,允许开发者使用主流的编程语言,如 C,C ++,Rust,Python 等进行智能合约部署,并在 Qtum 量子链上开发 dApps,而不是仅仅局限于 Solidity。在未来 x86 的实现过程中,Qtum 将先启动一个公共测试网并部署一个 bug 修复的赏金计划,在历经数月的反馈收集阶段后推出主网版本。


Qtum 区块链治理——DGP


Qtum 量子链团队开发了一种分布式自治协议(DGP),用于对区块链的基本参数进行动态调整。同时,Qtum 还会在必要时使用硬分叉和软分叉,但仅用于添加新功能或实现其他无法在不分叉的情况下完成重要的事务。

分布式自治协议(DGP)涉及区块大小和 gas 的成本,以及其他未公开定义的参数,Qtum 计划使用 DGP 来防止分叉对网络造成的破坏。

DGP 的四个步骤如下:

一个利益相关团队发出一个修改参数的提议

然后,所有利益相关团体投票赞成或反对该提议

提议被接受(并且实现)或者被拒绝

提议数据归档

利益相关者可以按照多种方式划分 - 按行业或纵向(金融服务,医疗保健,供应链等),按用户团体(用户,开发商,区块生产商等),按地区划分(美洲,欧洲,亚洲,非洲等),等等。据 Qtum 所说,无论以何种方式划分,不同的群体虽然可能会有不同的需求和兴趣,但都应该具有相同的代表性。

所以,Qtum 可能会实现一个系统,让每个利益相关方团体都可以投票给一个治理机构来代表他们做出关乎平台未来的决策。 如果实现这样一个民主结构,Qtum 就必须同时建立一个投票机制。


Qtum 量子链基金会


Qtum 量子链基金会(Qtum Blockchain Foundation)是一个总部设在新加坡的非营利性组织。 Qtum 基金会的核心任务是区块链开发、不断完善代码库并促进 Qtum 量子链的大规模应用。该基金会设有一个决策委员会和四个次机委员会。

1d6f22d1-45dd-5430-9ca4-2afbffbab963_AxYk7zl.PNG


Qtum 量子链正式落地时,基金会在普华永道会计师事务所的帮助下发布了一份白皮书,对基金会及其各委员会的职能和责任进行了概述。Qtum 团队表示,他们计划在未来发布一份新包含最新信息的新版白皮书,并计划通过公开选举,允许持有 QTUM 的用户进入各个委员会 .

1dfc7771-df10-5c20-a71d-7576dc57f973_jrR8nvT.JPG



产品特点


兼容性 - 帐户抽象层和操作码

为了将实现比特币的 UTXO 模型与以太坊虚拟机(EVM)的交互,Qtum 量子链开发了帐户抽象层(AAL)。 AAL 将 UTXO 转换为 EVM 可识别 dApp 的帐户模型,这样开发者就不必编写智能合约来选择自己的输出。因此,Qtum 相当于为所有合约添加了一个共识选币算法(Consensus-critical coin picking)。关于 Qtum 如何将 UTXO 转换为帐户模型,这种技术细节超出了本报告的范围。虽然 AAL 最初的目的是将 Qtum 基于 UTXO 的底层区块链与 EVM 结合,但它也可以结合其他虚拟机。 x86VM 就在下一个产品线上。 此外,AAL 还能让开发者能够轻松地将基于以太坊的智能合约移植到 Qtum 量子链,反之亦然。尽管使用 UTXO 模型,Qtum 还可以退还未使用的 gas 费用,这一功能在非 UTXO 模型的以太坊上也能适用。

结合 EVM 所需的另一个工具是操作码。操作码是一行代码的一部分,用于定义需要执行的操作。 Qtum 使用了比特币的脚本语言,并增加了三个新的操作码(与 AAL 一起)实现智能合约。

轻客户端 - SPV

如上所述,Qtum 选择 bitcoin core 和 UTXO 模型作为其基础的一个原因是使用 SPV (简单支付验证)。 SPV 允许在轻量化客户端(移动电话,平板电脑,物联网设备等)上执行智能合约而无需下载整个区块链数据,用户只需对区块头进行标记就足以完成交易验证,使得 SPV 轻量化客户端能够与智能合约和 dApp 进行交互,而无需下载整个区块链。目前 Qtum SPV 所面临的一个挑战是 Qtum 的轻客户端交易仅限于传输本地 QTUM。

兼容性 - 比特币改进建议

运行 bitcoin core 代码允许 Qtum 合并网络更新,例如 Segwit,闪电网络以及未来的比特币改进提案。目前 Segwit 在 Qtum 上已被激活,但用户无需使用。

Qtum 企业版

Qtum 于 2018 年 5 月宣布推出 Qtum X. Qtum X 是专为企业级用户设计的私有链。目前所知的是系统将使用 PoA 共识机制作实现更强的交易处理能力(更高的 TPD)。Qtum 企业版与 Qtum 之间存在着明显的区分,但目前还不清楚这两者是否可以进行交互(比如 QTUM 是否可以在这两个平台上通用)。


本文为 Circle 官方 Qtum 中文译文版,由于篇幅限制等因素稍作修改

Circle Research | MimbleWimble深度报告(上篇)

投研firstone 发表了文章 • 2019-03-28 10:36 • 来自相关话题

*声明:本文来源于Circle Research,由头等仓@Tracy 进行翻译。本文为报告上篇,主要讲述MW协议的背景原理和机制等问题,相关具体应用案例将在下篇文章中具体分析,敬请关注!


MimbleWimble

MimbleWimble是一种增强隐私和扩容的区块链协议。在不存储整个区块链历史记录的情况下,验证所有交易是否有效。它的名字来源于《哈利波特》中束缚舌头的咒语,这种咒语可以防止被施咒者泄露秘密。2016年,一个化名汤姆·埃尔维斯·杰多索的人在比特币奇才IRC聊天室分享了一个Tor链接,链接到一个概述MimbleWimble的文本文件,然后就消失了。


背景

Blockstream的数学家Andrew Poelstra对该协议很感兴趣,并于2016年10月发表了一篇关于MimbleWimble更详细、更强大的技术意见书。MimbleWimble是一个区块链协议,Grin和Beam是它的2个最初实现。在本篇报告中,我们将探索MimbleWimble、Grin和Beam。





来源:messari.io/onchainfx,coinmarketcap.com


加密社区的许多人一直在密切关注MimbleWimble协议,因为其旨在改进比特币和其他加密货币的关键问题,首次优化了隐私性和扩展性。

· 健全的隐私性:MimbleWimble将交易发送方、接收方和金额隐藏起来,让任何未参与交易的人无法查看。观察  者看到的交易由一些加密的输入和输出组成。他们可以验证已在链上的输入,并且等于输出货币的总和。这是对比特币等系统的改进,在比特币系统中,每个人都可以在比特币从一个地址转移到另一个地址时追踪其价值。

· 高效:MimbleWimble只允许验证者存储未使用的UTXO。所有其他加密货币强制矿工和外部验证者存储区块链的整个交易历史。这可以节省空间和更快的同步,因为随着区块链历史记录的增长,矿工可能被迫使用多个驱动器来存储整个历史记录。


验证者通过验证(1)输入的和等于输出的和,(2)交易不包含负数来检查MimbleWimble交易,以确保没有任何交易试图铸造新币。唯一可以铸币的交易是coinbase交易,这也是唯一可识别的交易。但是,验证者和观察者无法查看谁收到了区块奖励。

MimbleWimble的另一个重要特性是没有地址或公钥,只有输入和输出。每个UTXO都有一个密钥,接收方将UTXO密钥存储在他的钱包中。要发送UTXO,发送方必须在专用通道中与接收方联系,并执行多轮通信来构建交易。发送方使用自己的UTXO密钥对UTXO进行签名,而接收方通过通信获得了输出UTXO的新密钥。


问题

区块链是不可伪造的公共交易账簿。不可伪造意味着用户只能发送他们收到的资金——他们不能发送已使用资金或凭空创造资金。比特币和类似的区块链公开了发送方地址、接收方地址和交易金额,因此很容易验证发送的金额是否等于接收的金额,并且发送输入的是与这些输入对应的私钥。

比特币(以及其他加密资产)的公开性,可能会不被那些不想分享交易细节给所有人的人和企业的欢迎。此外,随着像Elliptic和Chainalysis这样的区块链分析公司崛起,研究人员可以将输出与非法交易联系起来,并将这些输出列入黑名单。币安的首席执行官曾在推特上表示,在社交媒体上报道了黑客向该交易所发送的资金后,他们能够冻结这些资金。然而,一些人认为这违反了非同质(fungibility)原则。非同质是指所有币都是一样,就像一张1美元的纸币与另一张1美元的纸币是一样的,不管这张纸币过去有什么活动。

比特币和所有其他区块链都要求矿工和其他验证者存储该链的整个交易历史,以验证所有交易都为有效。新参与者需要下载并验证整个区块链,以验证网络的当前状态。这对希望与网络同步的新参与者在空间、时间和计算上有很大要求。在2019年之前,比特币区块链的大小约为200GB。


MIMBLEWIMBLE解决方案

MimbleWimble以一种聪明的方式使用密码学来实现不可伪造性,同时优化了隐私和扩展性。与比特币验证每个输出的整个历史不同,MimbleWimble检查所有输入减去区块链上所有输出之和是否为零来验证链(这加强了货币的一个基本特性,即发送的金额等于接收的金额)。MimbleWimble使用了保密交易、CoinJoin、范围证明和核销(cut-through)组合。

与比特币类似,MimbleWimble依赖于椭圆曲线密码学和UTXO模型。然而,MimbleWimble是一个更精简的版本,由于脚本的隐私性问题,它牺牲了可编程性。因此,无法执行更复杂和丰富的功能,如时间锁定或支付渠道(如闪电网络)。


快速了解:UTXO

比特币和MimbleWimble使用未花费的交易输出(UTXO)模型来计算余额。可以将此模型使用币与钞票或信用卡与借记卡支付商品和服务进行对比。例如,Alice想买一件30美元的衬衫,但她有2张20美元的钞票。她不能只给商人一张半的钞票。相反,她把2张钞票都给了商人,并收到一张10美元的钞票作为找零。

UTXO模型的功能与此类似:Alice有2个交易输出,分别是先前交易的1个BTC和0.5个BTC。她需要向商家支付1.3 BTC。她的钱包创建了一个交易,该交易发送1.5 BTC(2个新输出)。商户收到1.3个比特币,Alice收到0.2个比特币作为找零(扣除交易费用)。比特币用户查看区块浏览器,可以发现他们比特币地址发送的比特币数量通常比指定的要多。


快速了解:椭圆曲线密码学

椭圆曲线有几个特性,对复杂的密码协议非常有帮助。椭圆曲线的一个性质是单向函数。在椭圆曲线上取一个随机点G,并将其乘以某个整数s,很容易得到另一个点P=sG。然而,给定(P,G),恢复s的值在计算上不可行。这使得我们可以使用(P,G)作为公钥,而s作为密钥。另一个性质是椭圆曲线上的点具有有用的代数性质:

1. 分配式:(a+b)G = aG+bG

2. 交换律:a(bG) = b(aG) = (ab)G


快速了解:佩德森承诺

佩德森承诺是结合了椭圆曲线的单向和代数特性的密码原语。对某些值(x,y)的承诺计算为P=xG+yH。虽然算出s=P/G在计算上不可行,但是从(P,G,H)计算出(x,y)也不可能,因为有无数的x和y的组合可以满足P=xG+yH关系。然而,知道单个(x,y)对满足这个等式的用户无法计算满足这个等式而不违反椭圆曲线单向特性的第二个 (x ',y ') 对。


保密交易

默认情况下,MimbleWimble依靠一种称为保密交易(CT)的加密概念来实现隐私。保密交易由Gregory Maxwell提出,他的灵感来自Adam Back对比特币的同态加密。保密交易使用佩德森承诺来隐藏UTXO的值。

在MimbleWimble中,交易输出或输入表示为佩德森承诺rG + vH。G和H是椭圆曲线上的随机点,是区块链的公共参数。V值为UTXO值,r为盲因子,是UTXO的密钥。rG值是对应的公钥。MimbleWimble使用佩德森承诺混淆敏感的交易信息,而不是显示明文的交易值。佩德森承诺允许使用基本算法来验证交易。

假设这样一个例子:我们有2个输入和1个输出。我们提供了样本值和盲因子,同时保留公共参数G和H作为变量。







交易内核

如上所述,保密交易的问题在于,它们要求输入和输出UTXO使用相同的盲因子,即接收方的密钥。如果发送方知道了接收方的盲因子值,她就可以窃取接收方的输出UTXO。MimbleWimble使用零知识证明克服了这个问题。

假设一个发送5个币的简单例子。发送方有一个未使用的UTXO,表示为承诺X=45G+5H,其中X=5,45是她的盲因子(r),或密钥。接收方选择一个随机盲因子7,并创建一个输出UTXO,表示为承诺Y=7G+5H。将输入与输出进行比较的验证者将看到超额的承诺:

X-Y = (45G+5H) - (7G+5H) = 38G

MimbleWimble将值38称为excess或内核,将值X-Y = 38G称为交易内核。在有效交易中,交易内核的形式总是X-Y = rG+0H,其中r是某个整数。即使使用多个输入和输出,如果输入值的和等于输出值的和,值乘以H等于零,等式成立。有效的交易内核总是公钥的形式,发送方和接收方都知道相应密钥的一部分。MimbleWimble有一个协议,该协议允许它们联合计算一个签名,使用它们的盲因子来签署交易。内核代表交易参与者的多重签名密钥。


范围证明

MimbleWimble协议要求交易金额为正,因此用户不能凭空创造币。正如我们所提到的,惟一能够铸造币的交易类型是coinbase交易。范围证明是一种密码技术,用于证明给定佩德森承诺X,证明者知道一对整数(r, min < v < max),使得X=rG+vH。MimbleWimble使用范围证明来证明v>0。MimbleWimble使用了最近介绍的防弹协议,一种范围证明方法,只需消耗~5000到~700字节。


无地址

如前所述,MimbleWimble不使用地址。删除地址背后的一个关键动机是增强隐私和扩大空间。在基于mimblewimb   le的区块链中,用户必须在链下通信才能创建交易。发送方与接收方共享其控制一些币的证明,接收方接受对这些币的控制。由于没有公开分配币控制权的地址,因此没有发送交易的“标准”方式。因此,交易参与者需要设置一个聊天会话来共享控制证明并将控制传递给接收方。这与比特币(以及大多数其他区块链)很大不同,后者可以在没有接收方参与的情况下执行交易。


CoinJoin

解决交易公开性的一种方法是使用CoinJoin。CoinJoin是一种将输入组合成单个大交易的方法,这使得很难区分哪些输入在支付,哪些是输出。CoinJoin已在JoinMarket、ShufflePuff、DarkWallet、SharedCoin、Wasabi、Samourai中实现。基于钱包的CoinJoin的缺点是用户必须选择使用该服务。这降低了它的有效性,因为用户要么不知道这些服务,要么认为使用这些服务太麻烦,从而导致了一组小型CoinJoin交易(一个小型的“匿名集”)。这不能有效地隐藏原始地址和接收地址。此外,用户必须进行交互才能创建CoinJoin交易,因为每个输入所有者必须对整个组合交易签名才能对其进行身份验证。

在MimbleWimble中,默认情况下用户不需要选择CoinJoin。一个区块不会有单独交易,相反,它看起来像是一个大型交易。图1是下一个区块中包含的一组未改动交易的简化版本。在图2中,MimbleWimble以类似于CoinJoin的流程将交易连接在一起,这样就是一个单独交易,一个组合了所有输入和所有输出的列表。







核销(Cut-throuh)

保密交易比常规交易要大得多。CT比非CT小5倍。MimbleWimble使用一种称为核销的技术来解决这一挑战,以提高效率。

正如我们上面提到的,下载完整的比特币区块链占用了近200GB的空间,并且还在增加。如果比特币上的所有交易都是像MimbleWimble这样的保密交易,那么区块链的规模将会大上几个数量级。

MimbleWimble使用一个称为“核销”的流程来删除冗余输出,将这些输出再次用作同一区块内的输入,从而释放区块内的空间,减少需要存储在区块链上的数据量,同时保持相同的安全性。

在图3中,网络标识出绿色输出用作稍后的输入。网络从这个给定区块的输入/输出中删除这个冗余,以精简必须存储的数据。虽然MimbleWimble删除了输出,但它保留这些交易发生的授权,即内核。






微观层面上,MimbleWimble的区块没有使用该工具,而是在宏观层面上使用了核销,因此仅剩下区块头、UTXO和交易内核。节点可以使用这些关键数据片段来验证区块链。这意味着区块链可能会缩小,例如,如果有一个区块的输出花费的比创建的多。理论上,这可以减少证明分类账状态长期正确所需的数据量。

根据Grin的说法,假设1000万笔交易使用10万UTXO(相当于1个分类账),而不使用核销,则大约为130GB,其中包含128GB的交易数据、1GB的交易证明数据和250MB的区块头。通过核销,区块链的大小可以降低到1.8GB,输出数据为1GB, UTXO为520MB,区块头为250mb。Beam认为,当区块链达到同样规模时,其大小可能只是比特币的30%。


蒲公英协议

MimbleWimble隐私性面临的最大威胁是,节点可以在将交易广播到网络时记录这些交易,然后再将它们包含到一个区块中。在有核销之前,交易输出会在内存池(未经确认的交易池)中停留一些时间。这允许间谍节点构建交易图2,并可能发现发送方IP。

蒲公英协议不属于MimbleWimble,它是对Grin和Beam的补充。蒲公英试图降低间谍节点成功创建交易图的概率,方法是“在交易爆发之前先悄悄地在网络上转发,从而延迟交易在网络上出现”(Andreas Antonopoulos) 。

通常,当有人向区块链发送一个交易时,它会广播到网络上的所有节点。蒲公英将交易的广播分为2个阶段,从“stem”或“匿名”阶段开始,交易随机广播到一个节点,然后节点随机将交易发送到另一个节点,以此类推,直到达到系统将交易广播到整个网络的“fluff”阶段。这可以防止监视节点使用蒲公英将交易映射回原始地址。蒲公英++是对蒲公英的改进,使创建交易图更加困难。

在MimbleWimble中,还可以在stem阶段之前合并交易,使将输入链接到交易变得更加困难。Beam更进一步,在没有足够的输出进行合并的情况下,可以添加虚拟或诱饵输出。

蒲公英面临的一个关键挑战是,在stem阶段,如果将交易传递给随后离线的节点,交易将不会传播到网络。Grin和Beam解决了这一挑战——如果该交易没有在合理的时间内达到“fluff”阶段,交易自动广播到更广泛的网络。


无脚本脚本(Scriptless scripts)  

MimbleWimble不支持交易脚本,而交易脚本是大多数区块链一个重要的特性。脚本是嵌入在交易中的代码,支持基本的智能合约功能。没有它,MimbleWimble就不能支持条件交易、使用时间锁、状态通道(例如闪电网络)、跨链原子交换等等。这是不可链接交易和核销付出的代价。验证者无法检查是否满足智能合约条件,因为相关UTXO及其条件可能已被删除。

当2016年8月发表第一篇MimbleWimble论文时,无条件交易对社区而言似乎还是一个限制。然而,Andrew Poelstra发现了一种用无脚本的脚本实现简单智能合约的方法。无脚本的脚本基于这样一种思想,即区块链验证者只需要检查签名是否存在并正确。它们不需要知道发生在链下的条件元素。Schnorr签名可用于支持无脚本的脚本。

具体地说,交易的参与者可以通过组合各自的签名密钥来创建Schnorr多重签名,从而交互式地生成签名,这个签名是唯一需要提交给节点并由节点验证的数据。

Aaron Van Wirdum解释,他举了一个网络用户想听艺术家歌曲的例子。艺术家和用户需要向区块链提交他们的组合Schnorr签名,以验证条件交易。艺术家拥有歌曲的版权,其对歌曲进行加密,密钥设为7000。

获得这个密钥就可以收听歌曲。这个艺术家掌握的一半的Schnorr签名是 8000。艺术家可以通过将她的签名(8000)减去歌曲的密钥(7000)来创建一个适配器签名1000。然后,艺术家把这个适配器签名发给用户。用户使用密码学技术验证确认 1000 是等于艺术家的Schnorr签名减去歌曲密钥的结果。然后用户也做Schnorr签名并向艺术家发送该签名,假设签名是 5000。艺术家将两部分施诺尔签名组合(8000 + 5000 = 13000)并提交到区块链上。这时用户获得组合后的签名 13000,并可以计算出艺术家的签名是 13000-5000=8000。最后用户通过计算 8000-1000=7000 获得了歌曲的加密密钥,从而可以收听歌曲。

这一切都在链下发生,除了艺术家和用户,没有人能发现单个值和步骤。验证者所看到的唯一内容是Schnorr组合签名13000。公众无法检测Schnorr签名。区块链上只记录了“交易结算”。可以通过添加支持Schnorr签名的新操作码来实现无脚本脚本。Grin和Beam正在实现无脚本脚本的过程中,并没有功能投入使用的确切时间。

无脚本的脚本可潜在支持保密资产、跨链原子交换和第二层扩容解决方案,比如在MimbleWimble区块链上使用闪电网络。无脚本脚本不一定要在MimbleWimble上实现,甚至可以扩展到其他区块链生态上。


结论

MimbleWimble基于经过验证的密码原语。其中一些区块构建已发表在同行评审的密码期刊上,以及写入公共白皮书和技术报告。首个MimbleWimble区块链Grin和Beam直到最近才推出。虽然MimbleWimble是一项新的实验性技术,但它有提供显著的隐私性和扩容优势的潜力,目前它还未解决用户体验和隐私方面的挑战。需要大量的测试和迭代,才能开源区块链上大规模地让隐私落实。目前,复杂的概念在实践中可能面临大量问题。

用户体验方面,没有地址,交易参与方需要交互并在线(虽然不一定同时在线)来签署和完成交易。与现有的加密资产相比较为复杂。

隐私方面,在CoinJoin和核销出现之前,矿工可以在mempool中看到交易。因此,监视网络的节点可以构建详细的交易图,从而损害隐私性,这违反了MimbleWimble的核心价值主张。虽然有蒲公英协议和虚拟UTXO等潜在的解决方案,但在实践中还有待完善。


欢迎添加小助手微信号:go-first-one  获取更多数据分析报告 查看全部
MimbleWimble-bitcoin.jpg

*声明:本文来源于Circle Research,由头等仓@Tracy 进行翻译。本文为报告上篇,主要讲述MW协议的背景原理和机制等问题,相关具体应用案例将在下篇文章中具体分析,敬请关注!


MimbleWimble

MimbleWimble是一种增强隐私和扩容的区块链协议。在不存储整个区块链历史记录的情况下,验证所有交易是否有效。它的名字来源于《哈利波特》中束缚舌头的咒语,这种咒语可以防止被施咒者泄露秘密。2016年,一个化名汤姆·埃尔维斯·杰多索的人在比特币奇才IRC聊天室分享了一个Tor链接,链接到一个概述MimbleWimble的文本文件,然后就消失了。


背景

Blockstream的数学家Andrew Poelstra对该协议很感兴趣,并于2016年10月发表了一篇关于MimbleWimble更详细、更强大的技术意见书。MimbleWimble是一个区块链协议,Grin和Beam是它的2个最初实现。在本篇报告中,我们将探索MimbleWimble、Grin和Beam。

201903271354231.jpeg

来源:messari.io/onchainfx,coinmarketcap.com


加密社区的许多人一直在密切关注MimbleWimble协议,因为其旨在改进比特币和其他加密货币的关键问题,首次优化了隐私性和扩展性。


· 健全的隐私性:MimbleWimble将交易发送方、接收方和金额隐藏起来,让任何未参与交易的人无法查看。观察  者看到的交易由一些加密的输入和输出组成。他们可以验证已在链上的输入,并且等于输出货币的总和。这是对比特币等系统的改进,在比特币系统中,每个人都可以在比特币从一个地址转移到另一个地址时追踪其价值。

· 高效:MimbleWimble只允许验证者存储未使用的UTXO。所有其他加密货币强制矿工和外部验证者存储区块链的整个交易历史。这可以节省空间和更快的同步,因为随着区块链历史记录的增长,矿工可能被迫使用多个驱动器来存储整个历史记录。



验证者通过验证(1)输入的和等于输出的和,(2)交易不包含负数来检查MimbleWimble交易,以确保没有任何交易试图铸造新币。唯一可以铸币的交易是coinbase交易,这也是唯一可识别的交易。但是,验证者和观察者无法查看谁收到了区块奖励。

MimbleWimble的另一个重要特性是没有地址或公钥,只有输入和输出。每个UTXO都有一个密钥,接收方将UTXO密钥存储在他的钱包中。要发送UTXO,发送方必须在专用通道中与接收方联系,并执行多轮通信来构建交易。发送方使用自己的UTXO密钥对UTXO进行签名,而接收方通过通信获得了输出UTXO的新密钥。


问题

区块链是不可伪造的公共交易账簿。不可伪造意味着用户只能发送他们收到的资金——他们不能发送已使用资金或凭空创造资金。比特币和类似的区块链公开了发送方地址、接收方地址和交易金额,因此很容易验证发送的金额是否等于接收的金额,并且发送输入的是与这些输入对应的私钥。

比特币(以及其他加密资产)的公开性,可能会不被那些不想分享交易细节给所有人的人和企业的欢迎。此外,随着像Elliptic和Chainalysis这样的区块链分析公司崛起,研究人员可以将输出与非法交易联系起来,并将这些输出列入黑名单。币安的首席执行官曾在推特上表示,在社交媒体上报道了黑客向该交易所发送的资金后,他们能够冻结这些资金。然而,一些人认为这违反了非同质(fungibility)原则。非同质是指所有币都是一样,就像一张1美元的纸币与另一张1美元的纸币是一样的,不管这张纸币过去有什么活动。

比特币和所有其他区块链都要求矿工和其他验证者存储该链的整个交易历史,以验证所有交易都为有效。新参与者需要下载并验证整个区块链,以验证网络的当前状态。这对希望与网络同步的新参与者在空间、时间和计算上有很大要求。在2019年之前,比特币区块链的大小约为200GB。


MIMBLEWIMBLE解决方案

MimbleWimble以一种聪明的方式使用密码学来实现不可伪造性,同时优化了隐私和扩展性。与比特币验证每个输出的整个历史不同,MimbleWimble检查所有输入减去区块链上所有输出之和是否为零来验证链(这加强了货币的一个基本特性,即发送的金额等于接收的金额)。MimbleWimble使用了保密交易、CoinJoin、范围证明和核销(cut-through)组合。

与比特币类似,MimbleWimble依赖于椭圆曲线密码学和UTXO模型。然而,MimbleWimble是一个更精简的版本,由于脚本的隐私性问题,它牺牲了可编程性。因此,无法执行更复杂和丰富的功能,如时间锁定或支付渠道(如闪电网络)。


快速了解:UTXO

比特币和MimbleWimble使用未花费的交易输出(UTXO)模型来计算余额。可以将此模型使用币与钞票或信用卡与借记卡支付商品和服务进行对比。例如,Alice想买一件30美元的衬衫,但她有2张20美元的钞票。她不能只给商人一张半的钞票。相反,她把2张钞票都给了商人,并收到一张10美元的钞票作为找零。

UTXO模型的功能与此类似:Alice有2个交易输出,分别是先前交易的1个BTC和0.5个BTC。她需要向商家支付1.3 BTC。她的钱包创建了一个交易,该交易发送1.5 BTC(2个新输出)。商户收到1.3个比特币,Alice收到0.2个比特币作为找零(扣除交易费用)。比特币用户查看区块浏览器,可以发现他们比特币地址发送的比特币数量通常比指定的要多。


快速了解:椭圆曲线密码学

椭圆曲线有几个特性,对复杂的密码协议非常有帮助。椭圆曲线的一个性质是单向函数。在椭圆曲线上取一个随机点G,并将其乘以某个整数s,很容易得到另一个点P=sG。然而,给定(P,G),恢复s的值在计算上不可行。这使得我们可以使用(P,G)作为公钥,而s作为密钥。另一个性质是椭圆曲线上的点具有有用的代数性质:

1. 分配式:(a+b)G = aG+bG

2. 交换律:a(bG) = b(aG) = (ab)G


快速了解:佩德森承诺

佩德森承诺是结合了椭圆曲线的单向和代数特性的密码原语。对某些值(x,y)的承诺计算为P=xG+yH。虽然算出s=P/G在计算上不可行,但是从(P,G,H)计算出(x,y)也不可能,因为有无数的x和y的组合可以满足P=xG+yH关系。然而,知道单个(x,y)对满足这个等式的用户无法计算满足这个等式而不违反椭圆曲线单向特性的第二个 (x ',y ') 对。


保密交易

默认情况下,MimbleWimble依靠一种称为保密交易(CT)的加密概念来实现隐私。保密交易由Gregory Maxwell提出,他的灵感来自Adam Back对比特币的同态加密。保密交易使用佩德森承诺来隐藏UTXO的值。

在MimbleWimble中,交易输出或输入表示为佩德森承诺rG + vH。G和H是椭圆曲线上的随机点,是区块链的公共参数。V值为UTXO值,r为盲因子,是UTXO的密钥。rG值是对应的公钥。MimbleWimble使用佩德森承诺混淆敏感的交易信息,而不是显示明文的交易值。佩德森承诺允许使用基本算法来验证交易。

假设这样一个例子:我们有2个输入和1个输出。我们提供了样本值和盲因子,同时保留公共参数G和H作为变量。

201903270611594484.jpg



交易内核

如上所述,保密交易的问题在于,它们要求输入和输出UTXO使用相同的盲因子,即接收方的密钥。如果发送方知道了接收方的盲因子值,她就可以窃取接收方的输出UTXO。MimbleWimble使用零知识证明克服了这个问题。

假设一个发送5个币的简单例子。发送方有一个未使用的UTXO,表示为承诺X=45G+5H,其中X=5,45是她的盲因子(r),或密钥。接收方选择一个随机盲因子7,并创建一个输出UTXO,表示为承诺Y=7G+5H。将输入与输出进行比较的验证者将看到超额的承诺:

X-Y = (45G+5H) - (7G+5H) = 38G

MimbleWimble将值38称为excess或内核,将值X-Y = 38G称为交易内核。在有效交易中,交易内核的形式总是X-Y = rG+0H,其中r是某个整数。即使使用多个输入和输出,如果输入值的和等于输出值的和,值乘以H等于零,等式成立。有效的交易内核总是公钥的形式,发送方和接收方都知道相应密钥的一部分。MimbleWimble有一个协议,该协议允许它们联合计算一个签名,使用它们的盲因子来签署交易。内核代表交易参与者的多重签名密钥。


范围证明

MimbleWimble协议要求交易金额为正,因此用户不能凭空创造币。正如我们所提到的,惟一能够铸造币的交易类型是coinbase交易。范围证明是一种密码技术,用于证明给定佩德森承诺X,证明者知道一对整数(r, min < v < max),使得X=rG+vH。MimbleWimble使用范围证明来证明v>0。MimbleWimble使用了最近介绍的防弹协议,一种范围证明方法,只需消耗~5000到~700字节。


无地址

如前所述,MimbleWimble不使用地址。删除地址背后的一个关键动机是增强隐私和扩大空间。在基于mimblewimb   le的区块链中,用户必须在链下通信才能创建交易。发送方与接收方共享其控制一些币的证明,接收方接受对这些币的控制。由于没有公开分配币控制权的地址,因此没有发送交易的“标准”方式。因此,交易参与者需要设置一个聊天会话来共享控制证明并将控制传递给接收方。这与比特币(以及大多数其他区块链)很大不同,后者可以在没有接收方参与的情况下执行交易。


CoinJoin

解决交易公开性的一种方法是使用CoinJoin。CoinJoin是一种将输入组合成单个大交易的方法,这使得很难区分哪些输入在支付,哪些是输出。CoinJoin已在JoinMarket、ShufflePuff、DarkWallet、SharedCoin、Wasabi、Samourai中实现。基于钱包的CoinJoin的缺点是用户必须选择使用该服务。这降低了它的有效性,因为用户要么不知道这些服务,要么认为使用这些服务太麻烦,从而导致了一组小型CoinJoin交易(一个小型的“匿名集”)。这不能有效地隐藏原始地址和接收地址。此外,用户必须进行交互才能创建CoinJoin交易,因为每个输入所有者必须对整个组合交易签名才能对其进行身份验证。

在MimbleWimble中,默认情况下用户不需要选择CoinJoin。一个区块不会有单独交易,相反,它看起来像是一个大型交易。图1是下一个区块中包含的一组未改动交易的简化版本。在图2中,MimbleWimble以类似于CoinJoin的流程将交易连接在一起,这样就是一个单独交易,一个组合了所有输入和所有输出的列表。

201903270612531383.jpg



核销(Cut-throuh)

保密交易比常规交易要大得多。CT比非CT小5倍。MimbleWimble使用一种称为核销的技术来解决这一挑战,以提高效率。

正如我们上面提到的,下载完整的比特币区块链占用了近200GB的空间,并且还在增加。如果比特币上的所有交易都是像MimbleWimble这样的保密交易,那么区块链的规模将会大上几个数量级。

MimbleWimble使用一个称为“核销”的流程来删除冗余输出,将这些输出再次用作同一区块内的输入,从而释放区块内的空间,减少需要存储在区块链上的数据量,同时保持相同的安全性。

在图3中,网络标识出绿色输出用作稍后的输入。网络从这个给定区块的输入/输出中删除这个冗余,以精简必须存储的数据。虽然MimbleWimble删除了输出,但它保留这些交易发生的授权,即内核。

201903270613121644.jpg


微观层面上,MimbleWimble的区块没有使用该工具,而是在宏观层面上使用了核销,因此仅剩下区块头、UTXO和交易内核。节点可以使用这些关键数据片段来验证区块链。这意味着区块链可能会缩小,例如,如果有一个区块的输出花费的比创建的多。理论上,这可以减少证明分类账状态长期正确所需的数据量。

根据Grin的说法,假设1000万笔交易使用10万UTXO(相当于1个分类账),而不使用核销,则大约为130GB,其中包含128GB的交易数据、1GB的交易证明数据和250MB的区块头。通过核销,区块链的大小可以降低到1.8GB,输出数据为1GB, UTXO为520MB,区块头为250mb。Beam认为,当区块链达到同样规模时,其大小可能只是比特币的30%。


蒲公英协议

MimbleWimble隐私性面临的最大威胁是,节点可以在将交易广播到网络时记录这些交易,然后再将它们包含到一个区块中。在有核销之前,交易输出会在内存池(未经确认的交易池)中停留一些时间。这允许间谍节点构建交易图2,并可能发现发送方IP。

蒲公英协议不属于MimbleWimble,它是对Grin和Beam的补充。蒲公英试图降低间谍节点成功创建交易图的概率,方法是“在交易爆发之前先悄悄地在网络上转发,从而延迟交易在网络上出现”(Andreas Antonopoulos) 。

通常,当有人向区块链发送一个交易时,它会广播到网络上的所有节点。蒲公英将交易的广播分为2个阶段,从“stem”或“匿名”阶段开始,交易随机广播到一个节点,然后节点随机将交易发送到另一个节点,以此类推,直到达到系统将交易广播到整个网络的“fluff”阶段。这可以防止监视节点使用蒲公英将交易映射回原始地址。蒲公英++是对蒲公英的改进,使创建交易图更加困难。

在MimbleWimble中,还可以在stem阶段之前合并交易,使将输入链接到交易变得更加困难。Beam更进一步,在没有足够的输出进行合并的情况下,可以添加虚拟或诱饵输出。

蒲公英面临的一个关键挑战是,在stem阶段,如果将交易传递给随后离线的节点,交易将不会传播到网络。Grin和Beam解决了这一挑战——如果该交易没有在合理的时间内达到“fluff”阶段,交易自动广播到更广泛的网络。


无脚本脚本(Scriptless scripts)  

MimbleWimble不支持交易脚本,而交易脚本是大多数区块链一个重要的特性。脚本是嵌入在交易中的代码,支持基本的智能合约功能。没有它,MimbleWimble就不能支持条件交易、使用时间锁、状态通道(例如闪电网络)、跨链原子交换等等。这是不可链接交易和核销付出的代价。验证者无法检查是否满足智能合约条件,因为相关UTXO及其条件可能已被删除。

当2016年8月发表第一篇MimbleWimble论文时,无条件交易对社区而言似乎还是一个限制。然而,Andrew Poelstra发现了一种用无脚本的脚本实现简单智能合约的方法。无脚本的脚本基于这样一种思想,即区块链验证者只需要检查签名是否存在并正确。它们不需要知道发生在链下的条件元素。Schnorr签名可用于支持无脚本的脚本。

具体地说,交易的参与者可以通过组合各自的签名密钥来创建Schnorr多重签名,从而交互式地生成签名,这个签名是唯一需要提交给节点并由节点验证的数据。

Aaron Van Wirdum解释,他举了一个网络用户想听艺术家歌曲的例子。艺术家和用户需要向区块链提交他们的组合Schnorr签名,以验证条件交易。艺术家拥有歌曲的版权,其对歌曲进行加密,密钥设为7000。

获得这个密钥就可以收听歌曲。这个艺术家掌握的一半的Schnorr签名是 8000。艺术家可以通过将她的签名(8000)减去歌曲的密钥(7000)来创建一个适配器签名1000。然后,艺术家把这个适配器签名发给用户。用户使用密码学技术验证确认 1000 是等于艺术家的Schnorr签名减去歌曲密钥的结果。然后用户也做Schnorr签名并向艺术家发送该签名,假设签名是 5000。艺术家将两部分施诺尔签名组合(8000 + 5000 = 13000)并提交到区块链上。这时用户获得组合后的签名 13000,并可以计算出艺术家的签名是 13000-5000=8000。最后用户通过计算 8000-1000=7000 获得了歌曲的加密密钥,从而可以收听歌曲。

这一切都在链下发生,除了艺术家和用户,没有人能发现单个值和步骤。验证者所看到的唯一内容是Schnorr组合签名13000。公众无法检测Schnorr签名。区块链上只记录了“交易结算”。可以通过添加支持Schnorr签名的新操作码来实现无脚本脚本。Grin和Beam正在实现无脚本脚本的过程中,并没有功能投入使用的确切时间。

无脚本的脚本可潜在支持保密资产、跨链原子交换和第二层扩容解决方案,比如在MimbleWimble区块链上使用闪电网络。无脚本脚本不一定要在MimbleWimble上实现,甚至可以扩展到其他区块链生态上。


结论

MimbleWimble基于经过验证的密码原语。其中一些区块构建已发表在同行评审的密码期刊上,以及写入公共白皮书和技术报告。首个MimbleWimble区块链Grin和Beam直到最近才推出。虽然MimbleWimble是一项新的实验性技术,但它有提供显著的隐私性和扩容优势的潜力,目前它还未解决用户体验和隐私方面的挑战。需要大量的测试和迭代,才能开源区块链上大规模地让隐私落实。目前,复杂的概念在实践中可能面临大量问题。

用户体验方面,没有地址,交易参与方需要交互并在线(虽然不一定同时在线)来签署和完成交易。与现有的加密资产相比较为复杂。

隐私方面,在CoinJoin和核销出现之前,矿工可以在mempool中看到交易。因此,监视网络的节点可以构建详细的交易图,从而损害隐私性,这违反了MimbleWimble的核心价值主张。虽然有蒲公英协议和虚拟UTXO等潜在的解决方案,但在实践中还有待完善。


欢迎添加小助手微信号:go-first-one  获取更多数据分析报告

BCH硬分叉背后:“重放攻击”下的用户自救指南

攻略secbit 发表了文章 • 2018-11-16 23:20 • 来自相关话题

11月16日凌晨2:16分,BCH在第556767个块高度发生硬分叉,分叉大战落下帷幕,分成了BCH ABC和BCH SV两个阵营。

在此次此次硬分叉中,BCH ABC和BCH SV双方都没有进行“重放保护”。也就是说,此次分叉后,理论上,重放攻击将有可能导致任何一方发生共识崩塌和算力归零。


何谓“重放攻击”


传统计算机术语中,重放攻击(Replay Attacks)又称重播攻击、回放攻击,是指攻击者发送一个目的主机已接收过的数据包,来达到欺骗系统的目的。重放攻击在任何网络通讯过程中都可能发生,是计算机世界黑客常用的攻击方式之一。主要用于身份认证过程。

而在区块链领域,重放攻击(Replay Attacks)通常出现在区块链硬分叉的时候,指的是“一条链上的交易在另一条链上也往往是合法的”。

有一个例子可以简单的说明什么是区块链中的“重放攻击”: 

小A向某个不能有效识别付款(这里指不能判断是哪一笔付款)的啤酒厂买啤酒,当他把用支付宝成功付款的付款信息出示给销售员后, 销售员把啤酒给他。 然后小A又再把上次的付款信息出示给另一个销售员, 销售员又给他一份啤酒。 只要小A不断重复出示他的付款信息,就可以源源不断骗得啤酒, 这对于啤酒厂来说就是被重放攻击了,损失了无数啤酒。


就本次BCH硬分叉来说,BCH由一条链变成了两条链,在这两条链都得到支持并持续运营的情况下,另外一条分叉出来的链又产生了BSV这一资产,也就是BCH ABC和BCH SV都存在。由于没有重放保护,分叉完了之后如果不去管它,任其自然生长,这时候就会出现这样的情况:你在SV链上交易时,由于相同的地址、算法和交易格式,拿到ABC链上去重新广播,就有可能会被ABC链承认有效,从而进行相同的交易操作。攻击者一旦利用这个漏洞,不断在交易所进行充提操作(BCH SV), 就能获取额外的BCH ABC。

这就意味着,没有重放保护的BCH用户资产已经被暴露于风险之中,更严重的,还将导致共识崩塌和算力归零。

 
“重放攻击”源起:以太坊硬分叉


2016年7月20日晚,以太坊在第192万个区块高度发生了硬分叉,产生了两条链,分别称为ETH chain和ETH Classic chain,上面的代币分别称为ETH和ETC。

这两条链上的地址和私钥算法相同,交易格式也完全相同,导致在其中一条链上的交易在另一条链上很可能是完全合法的。所以你在其中一条链上发起的交易,放到另一条链上去重新广播,可能也会得到确认。

由于事先没有做好预案,很多人利用这个漏洞,不断在交易所进行ETH充提操作,获取额外的ETC。 “重放攻击”得以在区块链世界被重新定义。

受重放攻击的影响,对用户来说,以太坊目前的问题是存在的。因为ETH和ETC都有很好的经济量,而用户如果无法解决掉自己的操作被重放的可能,他想卖其中一个资产的同时保留另一个资产,要么自行进行分离,要么就只能在交易所的协助下才能实现了。

 
应对:先分离 再交易


既然BCH在没有重放保护的前提下已经发生分叉,被重放无法避免,那么,为了避免受损失,交易所和用户都有必要在进行新的交易之前,对所持有的BCH ABC/BCH SV进行分离。

让我们回看一下BCH升级后的两个版本:bitcoin abc 0.18.2和bitcoin sv 0.1。

Abc0.18.2协议版本主要修改是增加了两个操作码OPcode, OP_CHECKDATASIG (CDS)和OP_CHECKDATASIGVERIFY(DSV);将区块里的交易排序规则从拓扑排序(TTOR)改成了规范排序(CTOR)。

SV0.1协议版本主要修改是恢复了比特币早期的四个操作码OPCode,OP_MUL,OP_LSHIFT,OP_RSHIFT,OP_INVERT;删除每个脚本201个操作码的限制;提高区块大小上限到128MB。

由于两个版本都更新了操作码,对于已经持有BCH的用户来说,使用新的 OP code进行交易操作,应先进行分离再操作账户更为稳妥。

分离最简单有效的办法,就是在分裂点后100个区块,从矿池购买一丁点coinbase交易的UTXO,发到你的BCH钱包里,然后将所有余额一次性转入一个新地址。只需要在一条链上这么做一次,就可以彻底分离出来了。

分离两种资产后,新OPCode你就可以使用了,不会出现因被重放而导致新OPCode在BCH链上有安全隐患的情况。

在此安比(SECBIT)实验室提醒广大BCH持有者和支持ABC/BSV的交易所,在分离你/你的用户的BSV之前,为避免重放造成损失,在交易中谨慎使用新的OPCode。 查看全部
Bitcoin-Replay-Attack.jpg

11月16日凌晨2:16分,BCH在第556767个块高度发生硬分叉,分叉大战落下帷幕,分成了BCH ABC和BCH SV两个阵营。

在此次此次硬分叉中,BCH ABC和BCH SV双方都没有进行“重放保护”。也就是说,此次分叉后,理论上,重放攻击将有可能导致任何一方发生共识崩塌和算力归零。


何谓“重放攻击”


传统计算机术语中,重放攻击(Replay Attacks)又称重播攻击、回放攻击,是指攻击者发送一个目的主机已接收过的数据包,来达到欺骗系统的目的。重放攻击在任何网络通讯过程中都可能发生,是计算机世界黑客常用的攻击方式之一。主要用于身份认证过程。

而在区块链领域,重放攻击(Replay Attacks)通常出现在区块链硬分叉的时候,指的是“一条链上的交易在另一条链上也往往是合法的”。

有一个例子可以简单的说明什么是区块链中的“重放攻击”: 


小A向某个不能有效识别付款(这里指不能判断是哪一笔付款)的啤酒厂买啤酒,当他把用支付宝成功付款的付款信息出示给销售员后, 销售员把啤酒给他。 然后小A又再把上次的付款信息出示给另一个销售员, 销售员又给他一份啤酒。 只要小A不断重复出示他的付款信息,就可以源源不断骗得啤酒, 这对于啤酒厂来说就是被重放攻击了,损失了无数啤酒。



就本次BCH硬分叉来说,BCH由一条链变成了两条链,在这两条链都得到支持并持续运营的情况下,另外一条分叉出来的链又产生了BSV这一资产,也就是BCH ABC和BCH SV都存在。由于没有重放保护,分叉完了之后如果不去管它,任其自然生长,这时候就会出现这样的情况:你在SV链上交易时,由于相同的地址、算法和交易格式,拿到ABC链上去重新广播,就有可能会被ABC链承认有效,从而进行相同的交易操作。攻击者一旦利用这个漏洞,不断在交易所进行充提操作(BCH SV), 就能获取额外的BCH ABC。

这就意味着,没有重放保护的BCH用户资产已经被暴露于风险之中,更严重的,还将导致共识崩塌和算力归零。

 
“重放攻击”源起:以太坊硬分叉


2016年7月20日晚,以太坊在第192万个区块高度发生了硬分叉,产生了两条链,分别称为ETH chain和ETH Classic chain,上面的代币分别称为ETH和ETC。

这两条链上的地址和私钥算法相同,交易格式也完全相同,导致在其中一条链上的交易在另一条链上很可能是完全合法的。所以你在其中一条链上发起的交易,放到另一条链上去重新广播,可能也会得到确认。

由于事先没有做好预案,很多人利用这个漏洞,不断在交易所进行ETH充提操作,获取额外的ETC。 “重放攻击”得以在区块链世界被重新定义。

受重放攻击的影响,对用户来说,以太坊目前的问题是存在的。因为ETH和ETC都有很好的经济量,而用户如果无法解决掉自己的操作被重放的可能,他想卖其中一个资产的同时保留另一个资产,要么自行进行分离,要么就只能在交易所的协助下才能实现了。

 
应对:先分离 再交易


既然BCH在没有重放保护的前提下已经发生分叉,被重放无法避免,那么,为了避免受损失,交易所和用户都有必要在进行新的交易之前,对所持有的BCH ABC/BCH SV进行分离。

让我们回看一下BCH升级后的两个版本:bitcoin abc 0.18.2和bitcoin sv 0.1。

Abc0.18.2协议版本主要修改是增加了两个操作码OPcode, OP_CHECKDATASIG (CDS)和OP_CHECKDATASIGVERIFY(DSV);将区块里的交易排序规则从拓扑排序(TTOR)改成了规范排序(CTOR)。

SV0.1协议版本主要修改是恢复了比特币早期的四个操作码OPCode,OP_MUL,OP_LSHIFT,OP_RSHIFT,OP_INVERT;删除每个脚本201个操作码的限制;提高区块大小上限到128MB。

由于两个版本都更新了操作码,对于已经持有BCH的用户来说,使用新的 OP code进行交易操作,应先进行分离再操作账户更为稳妥。

分离最简单有效的办法,就是在分裂点后100个区块,从矿池购买一丁点coinbase交易的UTXO,发到你的BCH钱包里,然后将所有余额一次性转入一个新地址。只需要在一条链上这么做一次,就可以彻底分离出来了。

分离两种资产后,新OPCode你就可以使用了,不会出现因被重放而导致新OPCode在BCH链上有安全隐患的情况。

在此安比(SECBIT)实验室提醒广大BCH持有者和支持ABC/BSV的交易所,在分离你/你的用户的BSV之前,为避免重放造成损失,在交易中谨慎使用新的OPCode。

Circle Research | MimbleWimble深度报告(上篇)

投研firstone 发表了文章 • 2019-03-28 10:36 • 来自相关话题

*声明:本文来源于Circle Research,由头等仓@Tracy 进行翻译。本文为报告上篇,主要讲述MW协议的背景原理和机制等问题,相关具体应用案例将在下篇文章中具体分析,敬请关注!


MimbleWimble

MimbleWimble是一种增强隐私和扩容的区块链协议。在不存储整个区块链历史记录的情况下,验证所有交易是否有效。它的名字来源于《哈利波特》中束缚舌头的咒语,这种咒语可以防止被施咒者泄露秘密。2016年,一个化名汤姆·埃尔维斯·杰多索的人在比特币奇才IRC聊天室分享了一个Tor链接,链接到一个概述MimbleWimble的文本文件,然后就消失了。


背景

Blockstream的数学家Andrew Poelstra对该协议很感兴趣,并于2016年10月发表了一篇关于MimbleWimble更详细、更强大的技术意见书。MimbleWimble是一个区块链协议,Grin和Beam是它的2个最初实现。在本篇报告中,我们将探索MimbleWimble、Grin和Beam。





来源:messari.io/onchainfx,coinmarketcap.com


加密社区的许多人一直在密切关注MimbleWimble协议,因为其旨在改进比特币和其他加密货币的关键问题,首次优化了隐私性和扩展性。

· 健全的隐私性:MimbleWimble将交易发送方、接收方和金额隐藏起来,让任何未参与交易的人无法查看。观察  者看到的交易由一些加密的输入和输出组成。他们可以验证已在链上的输入,并且等于输出货币的总和。这是对比特币等系统的改进,在比特币系统中,每个人都可以在比特币从一个地址转移到另一个地址时追踪其价值。

· 高效:MimbleWimble只允许验证者存储未使用的UTXO。所有其他加密货币强制矿工和外部验证者存储区块链的整个交易历史。这可以节省空间和更快的同步,因为随着区块链历史记录的增长,矿工可能被迫使用多个驱动器来存储整个历史记录。


验证者通过验证(1)输入的和等于输出的和,(2)交易不包含负数来检查MimbleWimble交易,以确保没有任何交易试图铸造新币。唯一可以铸币的交易是coinbase交易,这也是唯一可识别的交易。但是,验证者和观察者无法查看谁收到了区块奖励。

MimbleWimble的另一个重要特性是没有地址或公钥,只有输入和输出。每个UTXO都有一个密钥,接收方将UTXO密钥存储在他的钱包中。要发送UTXO,发送方必须在专用通道中与接收方联系,并执行多轮通信来构建交易。发送方使用自己的UTXO密钥对UTXO进行签名,而接收方通过通信获得了输出UTXO的新密钥。


问题

区块链是不可伪造的公共交易账簿。不可伪造意味着用户只能发送他们收到的资金——他们不能发送已使用资金或凭空创造资金。比特币和类似的区块链公开了发送方地址、接收方地址和交易金额,因此很容易验证发送的金额是否等于接收的金额,并且发送输入的是与这些输入对应的私钥。

比特币(以及其他加密资产)的公开性,可能会不被那些不想分享交易细节给所有人的人和企业的欢迎。此外,随着像Elliptic和Chainalysis这样的区块链分析公司崛起,研究人员可以将输出与非法交易联系起来,并将这些输出列入黑名单。币安的首席执行官曾在推特上表示,在社交媒体上报道了黑客向该交易所发送的资金后,他们能够冻结这些资金。然而,一些人认为这违反了非同质(fungibility)原则。非同质是指所有币都是一样,就像一张1美元的纸币与另一张1美元的纸币是一样的,不管这张纸币过去有什么活动。

比特币和所有其他区块链都要求矿工和其他验证者存储该链的整个交易历史,以验证所有交易都为有效。新参与者需要下载并验证整个区块链,以验证网络的当前状态。这对希望与网络同步的新参与者在空间、时间和计算上有很大要求。在2019年之前,比特币区块链的大小约为200GB。


MIMBLEWIMBLE解决方案

MimbleWimble以一种聪明的方式使用密码学来实现不可伪造性,同时优化了隐私和扩展性。与比特币验证每个输出的整个历史不同,MimbleWimble检查所有输入减去区块链上所有输出之和是否为零来验证链(这加强了货币的一个基本特性,即发送的金额等于接收的金额)。MimbleWimble使用了保密交易、CoinJoin、范围证明和核销(cut-through)组合。

与比特币类似,MimbleWimble依赖于椭圆曲线密码学和UTXO模型。然而,MimbleWimble是一个更精简的版本,由于脚本的隐私性问题,它牺牲了可编程性。因此,无法执行更复杂和丰富的功能,如时间锁定或支付渠道(如闪电网络)。


快速了解:UTXO

比特币和MimbleWimble使用未花费的交易输出(UTXO)模型来计算余额。可以将此模型使用币与钞票或信用卡与借记卡支付商品和服务进行对比。例如,Alice想买一件30美元的衬衫,但她有2张20美元的钞票。她不能只给商人一张半的钞票。相反,她把2张钞票都给了商人,并收到一张10美元的钞票作为找零。

UTXO模型的功能与此类似:Alice有2个交易输出,分别是先前交易的1个BTC和0.5个BTC。她需要向商家支付1.3 BTC。她的钱包创建了一个交易,该交易发送1.5 BTC(2个新输出)。商户收到1.3个比特币,Alice收到0.2个比特币作为找零(扣除交易费用)。比特币用户查看区块浏览器,可以发现他们比特币地址发送的比特币数量通常比指定的要多。


快速了解:椭圆曲线密码学

椭圆曲线有几个特性,对复杂的密码协议非常有帮助。椭圆曲线的一个性质是单向函数。在椭圆曲线上取一个随机点G,并将其乘以某个整数s,很容易得到另一个点P=sG。然而,给定(P,G),恢复s的值在计算上不可行。这使得我们可以使用(P,G)作为公钥,而s作为密钥。另一个性质是椭圆曲线上的点具有有用的代数性质:

1. 分配式:(a+b)G = aG+bG

2. 交换律:a(bG) = b(aG) = (ab)G


快速了解:佩德森承诺

佩德森承诺是结合了椭圆曲线的单向和代数特性的密码原语。对某些值(x,y)的承诺计算为P=xG+yH。虽然算出s=P/G在计算上不可行,但是从(P,G,H)计算出(x,y)也不可能,因为有无数的x和y的组合可以满足P=xG+yH关系。然而,知道单个(x,y)对满足这个等式的用户无法计算满足这个等式而不违反椭圆曲线单向特性的第二个 (x ',y ') 对。


保密交易

默认情况下,MimbleWimble依靠一种称为保密交易(CT)的加密概念来实现隐私。保密交易由Gregory Maxwell提出,他的灵感来自Adam Back对比特币的同态加密。保密交易使用佩德森承诺来隐藏UTXO的值。

在MimbleWimble中,交易输出或输入表示为佩德森承诺rG + vH。G和H是椭圆曲线上的随机点,是区块链的公共参数。V值为UTXO值,r为盲因子,是UTXO的密钥。rG值是对应的公钥。MimbleWimble使用佩德森承诺混淆敏感的交易信息,而不是显示明文的交易值。佩德森承诺允许使用基本算法来验证交易。

假设这样一个例子:我们有2个输入和1个输出。我们提供了样本值和盲因子,同时保留公共参数G和H作为变量。







交易内核

如上所述,保密交易的问题在于,它们要求输入和输出UTXO使用相同的盲因子,即接收方的密钥。如果发送方知道了接收方的盲因子值,她就可以窃取接收方的输出UTXO。MimbleWimble使用零知识证明克服了这个问题。

假设一个发送5个币的简单例子。发送方有一个未使用的UTXO,表示为承诺X=45G+5H,其中X=5,45是她的盲因子(r),或密钥。接收方选择一个随机盲因子7,并创建一个输出UTXO,表示为承诺Y=7G+5H。将输入与输出进行比较的验证者将看到超额的承诺:

X-Y = (45G+5H) - (7G+5H) = 38G

MimbleWimble将值38称为excess或内核,将值X-Y = 38G称为交易内核。在有效交易中,交易内核的形式总是X-Y = rG+0H,其中r是某个整数。即使使用多个输入和输出,如果输入值的和等于输出值的和,值乘以H等于零,等式成立。有效的交易内核总是公钥的形式,发送方和接收方都知道相应密钥的一部分。MimbleWimble有一个协议,该协议允许它们联合计算一个签名,使用它们的盲因子来签署交易。内核代表交易参与者的多重签名密钥。


范围证明

MimbleWimble协议要求交易金额为正,因此用户不能凭空创造币。正如我们所提到的,惟一能够铸造币的交易类型是coinbase交易。范围证明是一种密码技术,用于证明给定佩德森承诺X,证明者知道一对整数(r, min < v < max),使得X=rG+vH。MimbleWimble使用范围证明来证明v>0。MimbleWimble使用了最近介绍的防弹协议,一种范围证明方法,只需消耗~5000到~700字节。


无地址

如前所述,MimbleWimble不使用地址。删除地址背后的一个关键动机是增强隐私和扩大空间。在基于mimblewimb   le的区块链中,用户必须在链下通信才能创建交易。发送方与接收方共享其控制一些币的证明,接收方接受对这些币的控制。由于没有公开分配币控制权的地址,因此没有发送交易的“标准”方式。因此,交易参与者需要设置一个聊天会话来共享控制证明并将控制传递给接收方。这与比特币(以及大多数其他区块链)很大不同,后者可以在没有接收方参与的情况下执行交易。


CoinJoin

解决交易公开性的一种方法是使用CoinJoin。CoinJoin是一种将输入组合成单个大交易的方法,这使得很难区分哪些输入在支付,哪些是输出。CoinJoin已在JoinMarket、ShufflePuff、DarkWallet、SharedCoin、Wasabi、Samourai中实现。基于钱包的CoinJoin的缺点是用户必须选择使用该服务。这降低了它的有效性,因为用户要么不知道这些服务,要么认为使用这些服务太麻烦,从而导致了一组小型CoinJoin交易(一个小型的“匿名集”)。这不能有效地隐藏原始地址和接收地址。此外,用户必须进行交互才能创建CoinJoin交易,因为每个输入所有者必须对整个组合交易签名才能对其进行身份验证。

在MimbleWimble中,默认情况下用户不需要选择CoinJoin。一个区块不会有单独交易,相反,它看起来像是一个大型交易。图1是下一个区块中包含的一组未改动交易的简化版本。在图2中,MimbleWimble以类似于CoinJoin的流程将交易连接在一起,这样就是一个单独交易,一个组合了所有输入和所有输出的列表。







核销(Cut-throuh)

保密交易比常规交易要大得多。CT比非CT小5倍。MimbleWimble使用一种称为核销的技术来解决这一挑战,以提高效率。

正如我们上面提到的,下载完整的比特币区块链占用了近200GB的空间,并且还在增加。如果比特币上的所有交易都是像MimbleWimble这样的保密交易,那么区块链的规模将会大上几个数量级。

MimbleWimble使用一个称为“核销”的流程来删除冗余输出,将这些输出再次用作同一区块内的输入,从而释放区块内的空间,减少需要存储在区块链上的数据量,同时保持相同的安全性。

在图3中,网络标识出绿色输出用作稍后的输入。网络从这个给定区块的输入/输出中删除这个冗余,以精简必须存储的数据。虽然MimbleWimble删除了输出,但它保留这些交易发生的授权,即内核。






微观层面上,MimbleWimble的区块没有使用该工具,而是在宏观层面上使用了核销,因此仅剩下区块头、UTXO和交易内核。节点可以使用这些关键数据片段来验证区块链。这意味着区块链可能会缩小,例如,如果有一个区块的输出花费的比创建的多。理论上,这可以减少证明分类账状态长期正确所需的数据量。

根据Grin的说法,假设1000万笔交易使用10万UTXO(相当于1个分类账),而不使用核销,则大约为130GB,其中包含128GB的交易数据、1GB的交易证明数据和250MB的区块头。通过核销,区块链的大小可以降低到1.8GB,输出数据为1GB, UTXO为520MB,区块头为250mb。Beam认为,当区块链达到同样规模时,其大小可能只是比特币的30%。


蒲公英协议

MimbleWimble隐私性面临的最大威胁是,节点可以在将交易广播到网络时记录这些交易,然后再将它们包含到一个区块中。在有核销之前,交易输出会在内存池(未经确认的交易池)中停留一些时间。这允许间谍节点构建交易图2,并可能发现发送方IP。

蒲公英协议不属于MimbleWimble,它是对Grin和Beam的补充。蒲公英试图降低间谍节点成功创建交易图的概率,方法是“在交易爆发之前先悄悄地在网络上转发,从而延迟交易在网络上出现”(Andreas Antonopoulos) 。

通常,当有人向区块链发送一个交易时,它会广播到网络上的所有节点。蒲公英将交易的广播分为2个阶段,从“stem”或“匿名”阶段开始,交易随机广播到一个节点,然后节点随机将交易发送到另一个节点,以此类推,直到达到系统将交易广播到整个网络的“fluff”阶段。这可以防止监视节点使用蒲公英将交易映射回原始地址。蒲公英++是对蒲公英的改进,使创建交易图更加困难。

在MimbleWimble中,还可以在stem阶段之前合并交易,使将输入链接到交易变得更加困难。Beam更进一步,在没有足够的输出进行合并的情况下,可以添加虚拟或诱饵输出。

蒲公英面临的一个关键挑战是,在stem阶段,如果将交易传递给随后离线的节点,交易将不会传播到网络。Grin和Beam解决了这一挑战——如果该交易没有在合理的时间内达到“fluff”阶段,交易自动广播到更广泛的网络。


无脚本脚本(Scriptless scripts)  

MimbleWimble不支持交易脚本,而交易脚本是大多数区块链一个重要的特性。脚本是嵌入在交易中的代码,支持基本的智能合约功能。没有它,MimbleWimble就不能支持条件交易、使用时间锁、状态通道(例如闪电网络)、跨链原子交换等等。这是不可链接交易和核销付出的代价。验证者无法检查是否满足智能合约条件,因为相关UTXO及其条件可能已被删除。

当2016年8月发表第一篇MimbleWimble论文时,无条件交易对社区而言似乎还是一个限制。然而,Andrew Poelstra发现了一种用无脚本的脚本实现简单智能合约的方法。无脚本的脚本基于这样一种思想,即区块链验证者只需要检查签名是否存在并正确。它们不需要知道发生在链下的条件元素。Schnorr签名可用于支持无脚本的脚本。

具体地说,交易的参与者可以通过组合各自的签名密钥来创建Schnorr多重签名,从而交互式地生成签名,这个签名是唯一需要提交给节点并由节点验证的数据。

Aaron Van Wirdum解释,他举了一个网络用户想听艺术家歌曲的例子。艺术家和用户需要向区块链提交他们的组合Schnorr签名,以验证条件交易。艺术家拥有歌曲的版权,其对歌曲进行加密,密钥设为7000。

获得这个密钥就可以收听歌曲。这个艺术家掌握的一半的Schnorr签名是 8000。艺术家可以通过将她的签名(8000)减去歌曲的密钥(7000)来创建一个适配器签名1000。然后,艺术家把这个适配器签名发给用户。用户使用密码学技术验证确认 1000 是等于艺术家的Schnorr签名减去歌曲密钥的结果。然后用户也做Schnorr签名并向艺术家发送该签名,假设签名是 5000。艺术家将两部分施诺尔签名组合(8000 + 5000 = 13000)并提交到区块链上。这时用户获得组合后的签名 13000,并可以计算出艺术家的签名是 13000-5000=8000。最后用户通过计算 8000-1000=7000 获得了歌曲的加密密钥,从而可以收听歌曲。

这一切都在链下发生,除了艺术家和用户,没有人能发现单个值和步骤。验证者所看到的唯一内容是Schnorr组合签名13000。公众无法检测Schnorr签名。区块链上只记录了“交易结算”。可以通过添加支持Schnorr签名的新操作码来实现无脚本脚本。Grin和Beam正在实现无脚本脚本的过程中,并没有功能投入使用的确切时间。

无脚本的脚本可潜在支持保密资产、跨链原子交换和第二层扩容解决方案,比如在MimbleWimble区块链上使用闪电网络。无脚本脚本不一定要在MimbleWimble上实现,甚至可以扩展到其他区块链生态上。


结论

MimbleWimble基于经过验证的密码原语。其中一些区块构建已发表在同行评审的密码期刊上,以及写入公共白皮书和技术报告。首个MimbleWimble区块链Grin和Beam直到最近才推出。虽然MimbleWimble是一项新的实验性技术,但它有提供显著的隐私性和扩容优势的潜力,目前它还未解决用户体验和隐私方面的挑战。需要大量的测试和迭代,才能开源区块链上大规模地让隐私落实。目前,复杂的概念在实践中可能面临大量问题。

用户体验方面,没有地址,交易参与方需要交互并在线(虽然不一定同时在线)来签署和完成交易。与现有的加密资产相比较为复杂。

隐私方面,在CoinJoin和核销出现之前,矿工可以在mempool中看到交易。因此,监视网络的节点可以构建详细的交易图,从而损害隐私性,这违反了MimbleWimble的核心价值主张。虽然有蒲公英协议和虚拟UTXO等潜在的解决方案,但在实践中还有待完善。


欢迎添加小助手微信号:go-first-one  获取更多数据分析报告 查看全部
MimbleWimble-bitcoin.jpg

*声明:本文来源于Circle Research,由头等仓@Tracy 进行翻译。本文为报告上篇,主要讲述MW协议的背景原理和机制等问题,相关具体应用案例将在下篇文章中具体分析,敬请关注!


MimbleWimble

MimbleWimble是一种增强隐私和扩容的区块链协议。在不存储整个区块链历史记录的情况下,验证所有交易是否有效。它的名字来源于《哈利波特》中束缚舌头的咒语,这种咒语可以防止被施咒者泄露秘密。2016年,一个化名汤姆·埃尔维斯·杰多索的人在比特币奇才IRC聊天室分享了一个Tor链接,链接到一个概述MimbleWimble的文本文件,然后就消失了。


背景

Blockstream的数学家Andrew Poelstra对该协议很感兴趣,并于2016年10月发表了一篇关于MimbleWimble更详细、更强大的技术意见书。MimbleWimble是一个区块链协议,Grin和Beam是它的2个最初实现。在本篇报告中,我们将探索MimbleWimble、Grin和Beam。

201903271354231.jpeg

来源:messari.io/onchainfx,coinmarketcap.com


加密社区的许多人一直在密切关注MimbleWimble协议,因为其旨在改进比特币和其他加密货币的关键问题,首次优化了隐私性和扩展性。


· 健全的隐私性:MimbleWimble将交易发送方、接收方和金额隐藏起来,让任何未参与交易的人无法查看。观察  者看到的交易由一些加密的输入和输出组成。他们可以验证已在链上的输入,并且等于输出货币的总和。这是对比特币等系统的改进,在比特币系统中,每个人都可以在比特币从一个地址转移到另一个地址时追踪其价值。

· 高效:MimbleWimble只允许验证者存储未使用的UTXO。所有其他加密货币强制矿工和外部验证者存储区块链的整个交易历史。这可以节省空间和更快的同步,因为随着区块链历史记录的增长,矿工可能被迫使用多个驱动器来存储整个历史记录。



验证者通过验证(1)输入的和等于输出的和,(2)交易不包含负数来检查MimbleWimble交易,以确保没有任何交易试图铸造新币。唯一可以铸币的交易是coinbase交易,这也是唯一可识别的交易。但是,验证者和观察者无法查看谁收到了区块奖励。

MimbleWimble的另一个重要特性是没有地址或公钥,只有输入和输出。每个UTXO都有一个密钥,接收方将UTXO密钥存储在他的钱包中。要发送UTXO,发送方必须在专用通道中与接收方联系,并执行多轮通信来构建交易。发送方使用自己的UTXO密钥对UTXO进行签名,而接收方通过通信获得了输出UTXO的新密钥。


问题

区块链是不可伪造的公共交易账簿。不可伪造意味着用户只能发送他们收到的资金——他们不能发送已使用资金或凭空创造资金。比特币和类似的区块链公开了发送方地址、接收方地址和交易金额,因此很容易验证发送的金额是否等于接收的金额,并且发送输入的是与这些输入对应的私钥。

比特币(以及其他加密资产)的公开性,可能会不被那些不想分享交易细节给所有人的人和企业的欢迎。此外,随着像Elliptic和Chainalysis这样的区块链分析公司崛起,研究人员可以将输出与非法交易联系起来,并将这些输出列入黑名单。币安的首席执行官曾在推特上表示,在社交媒体上报道了黑客向该交易所发送的资金后,他们能够冻结这些资金。然而,一些人认为这违反了非同质(fungibility)原则。非同质是指所有币都是一样,就像一张1美元的纸币与另一张1美元的纸币是一样的,不管这张纸币过去有什么活动。

比特币和所有其他区块链都要求矿工和其他验证者存储该链的整个交易历史,以验证所有交易都为有效。新参与者需要下载并验证整个区块链,以验证网络的当前状态。这对希望与网络同步的新参与者在空间、时间和计算上有很大要求。在2019年之前,比特币区块链的大小约为200GB。


MIMBLEWIMBLE解决方案

MimbleWimble以一种聪明的方式使用密码学来实现不可伪造性,同时优化了隐私和扩展性。与比特币验证每个输出的整个历史不同,MimbleWimble检查所有输入减去区块链上所有输出之和是否为零来验证链(这加强了货币的一个基本特性,即发送的金额等于接收的金额)。MimbleWimble使用了保密交易、CoinJoin、范围证明和核销(cut-through)组合。

与比特币类似,MimbleWimble依赖于椭圆曲线密码学和UTXO模型。然而,MimbleWimble是一个更精简的版本,由于脚本的隐私性问题,它牺牲了可编程性。因此,无法执行更复杂和丰富的功能,如时间锁定或支付渠道(如闪电网络)。


快速了解:UTXO

比特币和MimbleWimble使用未花费的交易输出(UTXO)模型来计算余额。可以将此模型使用币与钞票或信用卡与借记卡支付商品和服务进行对比。例如,Alice想买一件30美元的衬衫,但她有2张20美元的钞票。她不能只给商人一张半的钞票。相反,她把2张钞票都给了商人,并收到一张10美元的钞票作为找零。

UTXO模型的功能与此类似:Alice有2个交易输出,分别是先前交易的1个BTC和0.5个BTC。她需要向商家支付1.3 BTC。她的钱包创建了一个交易,该交易发送1.5 BTC(2个新输出)。商户收到1.3个比特币,Alice收到0.2个比特币作为找零(扣除交易费用)。比特币用户查看区块浏览器,可以发现他们比特币地址发送的比特币数量通常比指定的要多。


快速了解:椭圆曲线密码学

椭圆曲线有几个特性,对复杂的密码协议非常有帮助。椭圆曲线的一个性质是单向函数。在椭圆曲线上取一个随机点G,并将其乘以某个整数s,很容易得到另一个点P=sG。然而,给定(P,G),恢复s的值在计算上不可行。这使得我们可以使用(P,G)作为公钥,而s作为密钥。另一个性质是椭圆曲线上的点具有有用的代数性质:

1. 分配式:(a+b)G = aG+bG

2. 交换律:a(bG) = b(aG) = (ab)G


快速了解:佩德森承诺

佩德森承诺是结合了椭圆曲线的单向和代数特性的密码原语。对某些值(x,y)的承诺计算为P=xG+yH。虽然算出s=P/G在计算上不可行,但是从(P,G,H)计算出(x,y)也不可能,因为有无数的x和y的组合可以满足P=xG+yH关系。然而,知道单个(x,y)对满足这个等式的用户无法计算满足这个等式而不违反椭圆曲线单向特性的第二个 (x ',y ') 对。


保密交易

默认情况下,MimbleWimble依靠一种称为保密交易(CT)的加密概念来实现隐私。保密交易由Gregory Maxwell提出,他的灵感来自Adam Back对比特币的同态加密。保密交易使用佩德森承诺来隐藏UTXO的值。

在MimbleWimble中,交易输出或输入表示为佩德森承诺rG + vH。G和H是椭圆曲线上的随机点,是区块链的公共参数。V值为UTXO值,r为盲因子,是UTXO的密钥。rG值是对应的公钥。MimbleWimble使用佩德森承诺混淆敏感的交易信息,而不是显示明文的交易值。佩德森承诺允许使用基本算法来验证交易。

假设这样一个例子:我们有2个输入和1个输出。我们提供了样本值和盲因子,同时保留公共参数G和H作为变量。

201903270611594484.jpg



交易内核

如上所述,保密交易的问题在于,它们要求输入和输出UTXO使用相同的盲因子,即接收方的密钥。如果发送方知道了接收方的盲因子值,她就可以窃取接收方的输出UTXO。MimbleWimble使用零知识证明克服了这个问题。

假设一个发送5个币的简单例子。发送方有一个未使用的UTXO,表示为承诺X=45G+5H,其中X=5,45是她的盲因子(r),或密钥。接收方选择一个随机盲因子7,并创建一个输出UTXO,表示为承诺Y=7G+5H。将输入与输出进行比较的验证者将看到超额的承诺:

X-Y = (45G+5H) - (7G+5H) = 38G

MimbleWimble将值38称为excess或内核,将值X-Y = 38G称为交易内核。在有效交易中,交易内核的形式总是X-Y = rG+0H,其中r是某个整数。即使使用多个输入和输出,如果输入值的和等于输出值的和,值乘以H等于零,等式成立。有效的交易内核总是公钥的形式,发送方和接收方都知道相应密钥的一部分。MimbleWimble有一个协议,该协议允许它们联合计算一个签名,使用它们的盲因子来签署交易。内核代表交易参与者的多重签名密钥。


范围证明

MimbleWimble协议要求交易金额为正,因此用户不能凭空创造币。正如我们所提到的,惟一能够铸造币的交易类型是coinbase交易。范围证明是一种密码技术,用于证明给定佩德森承诺X,证明者知道一对整数(r, min < v < max),使得X=rG+vH。MimbleWimble使用范围证明来证明v>0。MimbleWimble使用了最近介绍的防弹协议,一种范围证明方法,只需消耗~5000到~700字节。


无地址

如前所述,MimbleWimble不使用地址。删除地址背后的一个关键动机是增强隐私和扩大空间。在基于mimblewimb   le的区块链中,用户必须在链下通信才能创建交易。发送方与接收方共享其控制一些币的证明,接收方接受对这些币的控制。由于没有公开分配币控制权的地址,因此没有发送交易的“标准”方式。因此,交易参与者需要设置一个聊天会话来共享控制证明并将控制传递给接收方。这与比特币(以及大多数其他区块链)很大不同,后者可以在没有接收方参与的情况下执行交易。


CoinJoin

解决交易公开性的一种方法是使用CoinJoin。CoinJoin是一种将输入组合成单个大交易的方法,这使得很难区分哪些输入在支付,哪些是输出。CoinJoin已在JoinMarket、ShufflePuff、DarkWallet、SharedCoin、Wasabi、Samourai中实现。基于钱包的CoinJoin的缺点是用户必须选择使用该服务。这降低了它的有效性,因为用户要么不知道这些服务,要么认为使用这些服务太麻烦,从而导致了一组小型CoinJoin交易(一个小型的“匿名集”)。这不能有效地隐藏原始地址和接收地址。此外,用户必须进行交互才能创建CoinJoin交易,因为每个输入所有者必须对整个组合交易签名才能对其进行身份验证。

在MimbleWimble中,默认情况下用户不需要选择CoinJoin。一个区块不会有单独交易,相反,它看起来像是一个大型交易。图1是下一个区块中包含的一组未改动交易的简化版本。在图2中,MimbleWimble以类似于CoinJoin的流程将交易连接在一起,这样就是一个单独交易,一个组合了所有输入和所有输出的列表。

201903270612531383.jpg



核销(Cut-throuh)

保密交易比常规交易要大得多。CT比非CT小5倍。MimbleWimble使用一种称为核销的技术来解决这一挑战,以提高效率。

正如我们上面提到的,下载完整的比特币区块链占用了近200GB的空间,并且还在增加。如果比特币上的所有交易都是像MimbleWimble这样的保密交易,那么区块链的规模将会大上几个数量级。

MimbleWimble使用一个称为“核销”的流程来删除冗余输出,将这些输出再次用作同一区块内的输入,从而释放区块内的空间,减少需要存储在区块链上的数据量,同时保持相同的安全性。

在图3中,网络标识出绿色输出用作稍后的输入。网络从这个给定区块的输入/输出中删除这个冗余,以精简必须存储的数据。虽然MimbleWimble删除了输出,但它保留这些交易发生的授权,即内核。

201903270613121644.jpg


微观层面上,MimbleWimble的区块没有使用该工具,而是在宏观层面上使用了核销,因此仅剩下区块头、UTXO和交易内核。节点可以使用这些关键数据片段来验证区块链。这意味着区块链可能会缩小,例如,如果有一个区块的输出花费的比创建的多。理论上,这可以减少证明分类账状态长期正确所需的数据量。

根据Grin的说法,假设1000万笔交易使用10万UTXO(相当于1个分类账),而不使用核销,则大约为130GB,其中包含128GB的交易数据、1GB的交易证明数据和250MB的区块头。通过核销,区块链的大小可以降低到1.8GB,输出数据为1GB, UTXO为520MB,区块头为250mb。Beam认为,当区块链达到同样规模时,其大小可能只是比特币的30%。


蒲公英协议

MimbleWimble隐私性面临的最大威胁是,节点可以在将交易广播到网络时记录这些交易,然后再将它们包含到一个区块中。在有核销之前,交易输出会在内存池(未经确认的交易池)中停留一些时间。这允许间谍节点构建交易图2,并可能发现发送方IP。

蒲公英协议不属于MimbleWimble,它是对Grin和Beam的补充。蒲公英试图降低间谍节点成功创建交易图的概率,方法是“在交易爆发之前先悄悄地在网络上转发,从而延迟交易在网络上出现”(Andreas Antonopoulos) 。

通常,当有人向区块链发送一个交易时,它会广播到网络上的所有节点。蒲公英将交易的广播分为2个阶段,从“stem”或“匿名”阶段开始,交易随机广播到一个节点,然后节点随机将交易发送到另一个节点,以此类推,直到达到系统将交易广播到整个网络的“fluff”阶段。这可以防止监视节点使用蒲公英将交易映射回原始地址。蒲公英++是对蒲公英的改进,使创建交易图更加困难。

在MimbleWimble中,还可以在stem阶段之前合并交易,使将输入链接到交易变得更加困难。Beam更进一步,在没有足够的输出进行合并的情况下,可以添加虚拟或诱饵输出。

蒲公英面临的一个关键挑战是,在stem阶段,如果将交易传递给随后离线的节点,交易将不会传播到网络。Grin和Beam解决了这一挑战——如果该交易没有在合理的时间内达到“fluff”阶段,交易自动广播到更广泛的网络。


无脚本脚本(Scriptless scripts)  

MimbleWimble不支持交易脚本,而交易脚本是大多数区块链一个重要的特性。脚本是嵌入在交易中的代码,支持基本的智能合约功能。没有它,MimbleWimble就不能支持条件交易、使用时间锁、状态通道(例如闪电网络)、跨链原子交换等等。这是不可链接交易和核销付出的代价。验证者无法检查是否满足智能合约条件,因为相关UTXO及其条件可能已被删除。

当2016年8月发表第一篇MimbleWimble论文时,无条件交易对社区而言似乎还是一个限制。然而,Andrew Poelstra发现了一种用无脚本的脚本实现简单智能合约的方法。无脚本的脚本基于这样一种思想,即区块链验证者只需要检查签名是否存在并正确。它们不需要知道发生在链下的条件元素。Schnorr签名可用于支持无脚本的脚本。

具体地说,交易的参与者可以通过组合各自的签名密钥来创建Schnorr多重签名,从而交互式地生成签名,这个签名是唯一需要提交给节点并由节点验证的数据。

Aaron Van Wirdum解释,他举了一个网络用户想听艺术家歌曲的例子。艺术家和用户需要向区块链提交他们的组合Schnorr签名,以验证条件交易。艺术家拥有歌曲的版权,其对歌曲进行加密,密钥设为7000。

获得这个密钥就可以收听歌曲。这个艺术家掌握的一半的Schnorr签名是 8000。艺术家可以通过将她的签名(8000)减去歌曲的密钥(7000)来创建一个适配器签名1000。然后,艺术家把这个适配器签名发给用户。用户使用密码学技术验证确认 1000 是等于艺术家的Schnorr签名减去歌曲密钥的结果。然后用户也做Schnorr签名并向艺术家发送该签名,假设签名是 5000。艺术家将两部分施诺尔签名组合(8000 + 5000 = 13000)并提交到区块链上。这时用户获得组合后的签名 13000,并可以计算出艺术家的签名是 13000-5000=8000。最后用户通过计算 8000-1000=7000 获得了歌曲的加密密钥,从而可以收听歌曲。

这一切都在链下发生,除了艺术家和用户,没有人能发现单个值和步骤。验证者所看到的唯一内容是Schnorr组合签名13000。公众无法检测Schnorr签名。区块链上只记录了“交易结算”。可以通过添加支持Schnorr签名的新操作码来实现无脚本脚本。Grin和Beam正在实现无脚本脚本的过程中,并没有功能投入使用的确切时间。

无脚本的脚本可潜在支持保密资产、跨链原子交换和第二层扩容解决方案,比如在MimbleWimble区块链上使用闪电网络。无脚本脚本不一定要在MimbleWimble上实现,甚至可以扩展到其他区块链生态上。


结论

MimbleWimble基于经过验证的密码原语。其中一些区块构建已发表在同行评审的密码期刊上,以及写入公共白皮书和技术报告。首个MimbleWimble区块链Grin和Beam直到最近才推出。虽然MimbleWimble是一项新的实验性技术,但它有提供显著的隐私性和扩容优势的潜力,目前它还未解决用户体验和隐私方面的挑战。需要大量的测试和迭代,才能开源区块链上大规模地让隐私落实。目前,复杂的概念在实践中可能面临大量问题。

用户体验方面,没有地址,交易参与方需要交互并在线(虽然不一定同时在线)来签署和完成交易。与现有的加密资产相比较为复杂。

隐私方面,在CoinJoin和核销出现之前,矿工可以在mempool中看到交易。因此,监视网络的节点可以构建详细的交易图,从而损害隐私性,这违反了MimbleWimble的核心价值主张。虽然有蒲公英协议和虚拟UTXO等潜在的解决方案,但在实践中还有待完善。


欢迎添加小助手微信号:go-first-one  获取更多数据分析报告

BCH硬分叉背后:“重放攻击”下的用户自救指南

攻略secbit 发表了文章 • 2018-11-16 23:20 • 来自相关话题

11月16日凌晨2:16分,BCH在第556767个块高度发生硬分叉,分叉大战落下帷幕,分成了BCH ABC和BCH SV两个阵营。

在此次此次硬分叉中,BCH ABC和BCH SV双方都没有进行“重放保护”。也就是说,此次分叉后,理论上,重放攻击将有可能导致任何一方发生共识崩塌和算力归零。


何谓“重放攻击”


传统计算机术语中,重放攻击(Replay Attacks)又称重播攻击、回放攻击,是指攻击者发送一个目的主机已接收过的数据包,来达到欺骗系统的目的。重放攻击在任何网络通讯过程中都可能发生,是计算机世界黑客常用的攻击方式之一。主要用于身份认证过程。

而在区块链领域,重放攻击(Replay Attacks)通常出现在区块链硬分叉的时候,指的是“一条链上的交易在另一条链上也往往是合法的”。

有一个例子可以简单的说明什么是区块链中的“重放攻击”: 

小A向某个不能有效识别付款(这里指不能判断是哪一笔付款)的啤酒厂买啤酒,当他把用支付宝成功付款的付款信息出示给销售员后, 销售员把啤酒给他。 然后小A又再把上次的付款信息出示给另一个销售员, 销售员又给他一份啤酒。 只要小A不断重复出示他的付款信息,就可以源源不断骗得啤酒, 这对于啤酒厂来说就是被重放攻击了,损失了无数啤酒。


就本次BCH硬分叉来说,BCH由一条链变成了两条链,在这两条链都得到支持并持续运营的情况下,另外一条分叉出来的链又产生了BSV这一资产,也就是BCH ABC和BCH SV都存在。由于没有重放保护,分叉完了之后如果不去管它,任其自然生长,这时候就会出现这样的情况:你在SV链上交易时,由于相同的地址、算法和交易格式,拿到ABC链上去重新广播,就有可能会被ABC链承认有效,从而进行相同的交易操作。攻击者一旦利用这个漏洞,不断在交易所进行充提操作(BCH SV), 就能获取额外的BCH ABC。

这就意味着,没有重放保护的BCH用户资产已经被暴露于风险之中,更严重的,还将导致共识崩塌和算力归零。

 
“重放攻击”源起:以太坊硬分叉


2016年7月20日晚,以太坊在第192万个区块高度发生了硬分叉,产生了两条链,分别称为ETH chain和ETH Classic chain,上面的代币分别称为ETH和ETC。

这两条链上的地址和私钥算法相同,交易格式也完全相同,导致在其中一条链上的交易在另一条链上很可能是完全合法的。所以你在其中一条链上发起的交易,放到另一条链上去重新广播,可能也会得到确认。

由于事先没有做好预案,很多人利用这个漏洞,不断在交易所进行ETH充提操作,获取额外的ETC。 “重放攻击”得以在区块链世界被重新定义。

受重放攻击的影响,对用户来说,以太坊目前的问题是存在的。因为ETH和ETC都有很好的经济量,而用户如果无法解决掉自己的操作被重放的可能,他想卖其中一个资产的同时保留另一个资产,要么自行进行分离,要么就只能在交易所的协助下才能实现了。

 
应对:先分离 再交易


既然BCH在没有重放保护的前提下已经发生分叉,被重放无法避免,那么,为了避免受损失,交易所和用户都有必要在进行新的交易之前,对所持有的BCH ABC/BCH SV进行分离。

让我们回看一下BCH升级后的两个版本:bitcoin abc 0.18.2和bitcoin sv 0.1。

Abc0.18.2协议版本主要修改是增加了两个操作码OPcode, OP_CHECKDATASIG (CDS)和OP_CHECKDATASIGVERIFY(DSV);将区块里的交易排序规则从拓扑排序(TTOR)改成了规范排序(CTOR)。

SV0.1协议版本主要修改是恢复了比特币早期的四个操作码OPCode,OP_MUL,OP_LSHIFT,OP_RSHIFT,OP_INVERT;删除每个脚本201个操作码的限制;提高区块大小上限到128MB。

由于两个版本都更新了操作码,对于已经持有BCH的用户来说,使用新的 OP code进行交易操作,应先进行分离再操作账户更为稳妥。

分离最简单有效的办法,就是在分裂点后100个区块,从矿池购买一丁点coinbase交易的UTXO,发到你的BCH钱包里,然后将所有余额一次性转入一个新地址。只需要在一条链上这么做一次,就可以彻底分离出来了。

分离两种资产后,新OPCode你就可以使用了,不会出现因被重放而导致新OPCode在BCH链上有安全隐患的情况。

在此安比(SECBIT)实验室提醒广大BCH持有者和支持ABC/BSV的交易所,在分离你/你的用户的BSV之前,为避免重放造成损失,在交易中谨慎使用新的OPCode。 查看全部
Bitcoin-Replay-Attack.jpg

11月16日凌晨2:16分,BCH在第556767个块高度发生硬分叉,分叉大战落下帷幕,分成了BCH ABC和BCH SV两个阵营。

在此次此次硬分叉中,BCH ABC和BCH SV双方都没有进行“重放保护”。也就是说,此次分叉后,理论上,重放攻击将有可能导致任何一方发生共识崩塌和算力归零。


何谓“重放攻击”


传统计算机术语中,重放攻击(Replay Attacks)又称重播攻击、回放攻击,是指攻击者发送一个目的主机已接收过的数据包,来达到欺骗系统的目的。重放攻击在任何网络通讯过程中都可能发生,是计算机世界黑客常用的攻击方式之一。主要用于身份认证过程。

而在区块链领域,重放攻击(Replay Attacks)通常出现在区块链硬分叉的时候,指的是“一条链上的交易在另一条链上也往往是合法的”。

有一个例子可以简单的说明什么是区块链中的“重放攻击”: 


小A向某个不能有效识别付款(这里指不能判断是哪一笔付款)的啤酒厂买啤酒,当他把用支付宝成功付款的付款信息出示给销售员后, 销售员把啤酒给他。 然后小A又再把上次的付款信息出示给另一个销售员, 销售员又给他一份啤酒。 只要小A不断重复出示他的付款信息,就可以源源不断骗得啤酒, 这对于啤酒厂来说就是被重放攻击了,损失了无数啤酒。



就本次BCH硬分叉来说,BCH由一条链变成了两条链,在这两条链都得到支持并持续运营的情况下,另外一条分叉出来的链又产生了BSV这一资产,也就是BCH ABC和BCH SV都存在。由于没有重放保护,分叉完了之后如果不去管它,任其自然生长,这时候就会出现这样的情况:你在SV链上交易时,由于相同的地址、算法和交易格式,拿到ABC链上去重新广播,就有可能会被ABC链承认有效,从而进行相同的交易操作。攻击者一旦利用这个漏洞,不断在交易所进行充提操作(BCH SV), 就能获取额外的BCH ABC。

这就意味着,没有重放保护的BCH用户资产已经被暴露于风险之中,更严重的,还将导致共识崩塌和算力归零。

 
“重放攻击”源起:以太坊硬分叉


2016年7月20日晚,以太坊在第192万个区块高度发生了硬分叉,产生了两条链,分别称为ETH chain和ETH Classic chain,上面的代币分别称为ETH和ETC。

这两条链上的地址和私钥算法相同,交易格式也完全相同,导致在其中一条链上的交易在另一条链上很可能是完全合法的。所以你在其中一条链上发起的交易,放到另一条链上去重新广播,可能也会得到确认。

由于事先没有做好预案,很多人利用这个漏洞,不断在交易所进行ETH充提操作,获取额外的ETC。 “重放攻击”得以在区块链世界被重新定义。

受重放攻击的影响,对用户来说,以太坊目前的问题是存在的。因为ETH和ETC都有很好的经济量,而用户如果无法解决掉自己的操作被重放的可能,他想卖其中一个资产的同时保留另一个资产,要么自行进行分离,要么就只能在交易所的协助下才能实现了。

 
应对:先分离 再交易


既然BCH在没有重放保护的前提下已经发生分叉,被重放无法避免,那么,为了避免受损失,交易所和用户都有必要在进行新的交易之前,对所持有的BCH ABC/BCH SV进行分离。

让我们回看一下BCH升级后的两个版本:bitcoin abc 0.18.2和bitcoin sv 0.1。

Abc0.18.2协议版本主要修改是增加了两个操作码OPcode, OP_CHECKDATASIG (CDS)和OP_CHECKDATASIGVERIFY(DSV);将区块里的交易排序规则从拓扑排序(TTOR)改成了规范排序(CTOR)。

SV0.1协议版本主要修改是恢复了比特币早期的四个操作码OPCode,OP_MUL,OP_LSHIFT,OP_RSHIFT,OP_INVERT;删除每个脚本201个操作码的限制;提高区块大小上限到128MB。

由于两个版本都更新了操作码,对于已经持有BCH的用户来说,使用新的 OP code进行交易操作,应先进行分离再操作账户更为稳妥。

分离最简单有效的办法,就是在分裂点后100个区块,从矿池购买一丁点coinbase交易的UTXO,发到你的BCH钱包里,然后将所有余额一次性转入一个新地址。只需要在一条链上这么做一次,就可以彻底分离出来了。

分离两种资产后,新OPCode你就可以使用了,不会出现因被重放而导致新OPCode在BCH链上有安全隐患的情况。

在此安比(SECBIT)实验室提醒广大BCH持有者和支持ABC/BSV的交易所,在分离你/你的用户的BSV之前,为避免重放造成损失,在交易中谨慎使用新的OPCode。

Circle 发布 Qtum 研究报告

项目chainnews 发表了文章 • 2018-10-25 11:37 • 来自相关话题

背景介绍


Qtum 量子链——结合比特币与以太坊优势的开源智能合约平台。

Qtum 量子链项目由三位联合创始人帅初、Neil Mahi 以及 Jordan Earls 发起。其中帅初曾于 2012 年入职阿里巴巴,Neil Mahi 则拥有超过 20 年的软件开发经验,也在区块链开发领域也超过四年。

Qtum 量子链团队认为比特币是目前最成熟稳定的区块链,从而运用 Bitcoin Core 作为项目的核心基础。然而比特币无法运行智能合约编写中需要的图灵完备代码,故 Qtum 量子链结合了以太坊虚拟机(EVM),并在未来结合可支持 dApps 开发的其他虚拟机。

比特币运用的是 UTXO 模型而以太坊虚拟机(EVM)与其他虚拟机运用的则是账户模型以确保其简易性。为了使比特币的 UTXO 模型能与虚拟机的账户模型相兼容,Qtum 量子链在二者之中添加了一个「交互层」,称之为账户抽象层(AAL)。

运行 Bitcoin Core 使得 Qtum 量子链的更新迭代能够集成比特币的开发,而与以太坊虚拟机(EVM)的结合则使得以太坊开发者可将 dApps 置于 Qtum 量子链平台上。Qtum 量子链官方宣布了正在开发 x86 虚拟机的相关信息,该虚拟机将在未来支持使用更多主流开发语言的智能合约编写以及 dApps 开发。

共识机制:Qtum 量子链运用了 Blackcoin 版本的权益共识证明(PoS 3.0)来达成共识,而比特币与以太坊目前还在使用工作量证明共识机制(PoW)

治理:Qtum 量子链运用分布式自治协议(DGP)将区块链上的投票权去中心化,使开发者能够对区块链的各项参数(区块大小、gas 费用等)进行动态调整。

其他特点:Qtum 的智能合约能够在轻量化设备上执行(如移动设备及物联网设备)。


UTXO VS AAL


UTXO 模型:比特币运用 UTXO 模型,该模型的原理就好比使用货币或支票支付对比使用信用卡或借记卡支付。打个比方,Alice 想要购买一件 30 美元的 T-恤,而她手中拥有 2 张 20 美元的支票,她没有办法只向商贩支付 1.5 张支票,只能将两张全部支付给商贩并获得一张 10 美元支票的找零。

UTXO 模型的运行也使用了类似的方式,在之前的交易中,Alice 拥有两笔交易输出分别为 1 个比特币和 0.5 个比特币,而她需要向商贩支付 1.3 个比特币。当她支出 1.5 个 BTC 时,钱包形成了两个新的交易输出,发送 1.3 个比特币给到,并将剩下的 0.2 个退回给 Alice。这一特点比特币用户能够在区块链浏览器上轻松查询到,在发现他们的比特币地址之后,所呈现的交易数据通常是用于支付的比特币数量大于既定值。

账户模型:以太坊的账户模型与银行的账户模型非常相似,账户的总资金全部汇集在一起,形成一个总体的余额,每一笔交易都必须使用交易所需的精确金额——不可更改。例如,Alice 的账户里有 40 美元,她想花 30 美元买一件 T-恤,她发送给商人正好 30 美元,账户里剩余 10 美元。

Qtum 量子链使用 UTXO 模型的一大原因是它能够更好地保护用户资产安全,免受重放攻击和双花攻击的影响。此外,由于每个交易使用独立的输出,因此区块链还可以从并行处理的交易中获得更大的可扩展性。

账户抽象层 AAL: 就开发者们的观点来说,要实现 UTXO 与账户模型之间的转换并不容易。Qtum 量子链运用了账户抽象层(AAL)来实现两者的交互与结合,账户抽象层(AAL)是 Qtum 量子链团队自主开发的一个交互层,能够使 Qtum 量子链上使用基于 UTXO 模型的同时向运行智能合约的虚拟机展示基于账户模型的系统,由此一来,任何能够在以太坊上完成的开发都可以在 Qtum 量子链上完成。






POS 共识机制


Qtum 量子链运用 PoS 共识机制以确保网络的安全性并达到共识,在其原型——Blackcoin 版本的 PoS 3.0 中,网络参与者通过持有 Token 进行 Token Staking,验证网络交易并生成区块。获得新区块奖励的可能性的与网络权重成正比。如果网络参与者不诚实,并试图与系统博弈,PoS 将在通过没收部分或全部 Staking 所得 Token 对他们进行惩罚。

Qtum 量子链的 PoS 机制不存在 staking 的准入门槛,因此整个网络更加去中心化。其挑战在于,如果通过作弊获得的收益大于受到的惩罚,那么持有越少 QTUM 的 staking 节点将越倾向于作弊。Qtum 量子链运用了 Token 的「成熟」机制,以提高攻击成本。Token 必须先「成熟」(即 500 个区块确认)才能参与 Staking。

Qtum 量子链选择 PoS 的原因还在于 PoW 共识机制是能源密集型的,浪费能源且不利于可持续发展。

Qtum 量子链中,每 144 秒最大产生 2MB 的区块。目前的通货膨胀率设定为每年 1%,并计划每四年减半,为期三十二年。 截至撰写时,QTUM 流通供应量约为 8850 万,预计最大供应量~1.07 亿 。

目前的区块奖励是 4 个 QTUM。 0.4 QTUM 是创建区块时获得的奖励,需被锁定,直到成熟(500 个区块)。在最初的 0.4 奖励成熟之后,剩余的 3.6 QTUM 分配到超过 9 个区块里。Qtum 量子链使用锁定和延迟奖励保证安全,其他人要攻击网络就很难。





Qtum 区块奖励分配


安全性-Gas:由于一旦网络遭到恶意滥发垃圾信息攻击,区块链就会被阻塞,将无法处理合法交易和验证。所以,与以太坊类似,Qtum 量子链使用 gas 提高恶意攻击者滥发攻击的成本,进而阻止恶意攻击者。 gas 以 Qtum satoshis --- QTUM 的最小单位(0.00000001 Qtum)计价。如果用户发起恶意滥发垃圾信息攻击,那么攻击的 gas 成本(40 QTUM satoshis)将会增加,让攻击变得非常昂贵。如果 QTUM 价格上涨且 gas 价格过高,则可以调低 gas 成本。Qtum 量子链使用分布式自治协议(DGP)机制实现 gas 费用的动态调整,目前 Qtum 量子链团队正对它进行实时监控。Qtum 量子链将面临的挑战是,确保 gas fee 限制和价格上涨不会阻碍复杂智能合约的部署。


Qtum x86 虚拟机


Qtum 量子链将推出另一款能够支持多语言编程的 x86VM 虚拟机。Qtum 团队表示账户抽象层( AAL) 能够支持各种虚拟机的集成,Qtum 团队意识到以太坊虚拟机( EVM) 及其编程语言(Solidity)有一些设计缺陷,并且缺乏足够的验证工具。

Qtum 团队正在开发 Qtum x86 虚拟机,允许开发者使用主流的编程语言,如 C,C ++,Rust,Python 等进行智能合约部署,并在 Qtum 量子链上开发 dApps,而不是仅仅局限于 Solidity。在未来 x86 的实现过程中,Qtum 将先启动一个公共测试网并部署一个 bug 修复的赏金计划,在历经数月的反馈收集阶段后推出主网版本。


Qtum 区块链治理——DGP


Qtum 量子链团队开发了一种分布式自治协议(DGP),用于对区块链的基本参数进行动态调整。同时,Qtum 还会在必要时使用硬分叉和软分叉,但仅用于添加新功能或实现其他无法在不分叉的情况下完成重要的事务。

分布式自治协议(DGP)涉及区块大小和 gas 的成本,以及其他未公开定义的参数,Qtum 计划使用 DGP 来防止分叉对网络造成的破坏。

DGP 的四个步骤如下:

一个利益相关团队发出一个修改参数的提议

然后,所有利益相关团体投票赞成或反对该提议

提议被接受(并且实现)或者被拒绝

提议数据归档

利益相关者可以按照多种方式划分 - 按行业或纵向(金融服务,医疗保健,供应链等),按用户团体(用户,开发商,区块生产商等),按地区划分(美洲,欧洲,亚洲,非洲等),等等。据 Qtum 所说,无论以何种方式划分,不同的群体虽然可能会有不同的需求和兴趣,但都应该具有相同的代表性。

所以,Qtum 可能会实现一个系统,让每个利益相关方团体都可以投票给一个治理机构来代表他们做出关乎平台未来的决策。 如果实现这样一个民主结构,Qtum 就必须同时建立一个投票机制。


Qtum 量子链基金会


Qtum 量子链基金会(Qtum Blockchain Foundation)是一个总部设在新加坡的非营利性组织。 Qtum 基金会的核心任务是区块链开发、不断完善代码库并促进 Qtum 量子链的大规模应用。该基金会设有一个决策委员会和四个次机委员会。






Qtum 量子链正式落地时,基金会在普华永道会计师事务所的帮助下发布了一份白皮书,对基金会及其各委员会的职能和责任进行了概述。Qtum 团队表示,他们计划在未来发布一份新包含最新信息的新版白皮书,并计划通过公开选举,允许持有 QTUM 的用户进入各个委员会 .







产品特点


兼容性 - 帐户抽象层和操作码

为了将实现比特币的 UTXO 模型与以太坊虚拟机(EVM)的交互,Qtum 量子链开发了帐户抽象层(AAL)。 AAL 将 UTXO 转换为 EVM 可识别 dApp 的帐户模型,这样开发者就不必编写智能合约来选择自己的输出。因此,Qtum 相当于为所有合约添加了一个共识选币算法(Consensus-critical coin picking)。关于 Qtum 如何将 UTXO 转换为帐户模型,这种技术细节超出了本报告的范围。虽然 AAL 最初的目的是将 Qtum 基于 UTXO 的底层区块链与 EVM 结合,但它也可以结合其他虚拟机。 x86VM 就在下一个产品线上。 此外,AAL 还能让开发者能够轻松地将基于以太坊的智能合约移植到 Qtum 量子链,反之亦然。尽管使用 UTXO 模型,Qtum 还可以退还未使用的 gas 费用,这一功能在非 UTXO 模型的以太坊上也能适用。

结合 EVM 所需的另一个工具是操作码。操作码是一行代码的一部分,用于定义需要执行的操作。 Qtum 使用了比特币的脚本语言,并增加了三个新的操作码(与 AAL 一起)实现智能合约。

轻客户端 - SPV

如上所述,Qtum 选择 bitcoin core 和 UTXO 模型作为其基础的一个原因是使用 SPV (简单支付验证)。 SPV 允许在轻量化客户端(移动电话,平板电脑,物联网设备等)上执行智能合约而无需下载整个区块链数据,用户只需对区块头进行标记就足以完成交易验证,使得 SPV 轻量化客户端能够与智能合约和 dApp 进行交互,而无需下载整个区块链。目前 Qtum SPV 所面临的一个挑战是 Qtum 的轻客户端交易仅限于传输本地 QTUM。

兼容性 - 比特币改进建议

运行 bitcoin core 代码允许 Qtum 合并网络更新,例如 Segwit,闪电网络以及未来的比特币改进提案。目前 Segwit 在 Qtum 上已被激活,但用户无需使用。

Qtum 企业版

Qtum 于 2018 年 5 月宣布推出 Qtum X. Qtum X 是专为企业级用户设计的私有链。目前所知的是系统将使用 PoA 共识机制作实现更强的交易处理能力(更高的 TPD)。Qtum 企业版与 Qtum 之间存在着明显的区分,但目前还不清楚这两者是否可以进行交互(比如 QTUM 是否可以在这两个平台上通用)。


本文为 Circle 官方 Qtum 中文译文版,由于篇幅限制等因素稍作修改 查看全部
IzxgzHY.jpg


背景介绍


Qtum 量子链——结合比特币与以太坊优势的开源智能合约平台。

Qtum 量子链项目由三位联合创始人帅初、Neil Mahi 以及 Jordan Earls 发起。其中帅初曾于 2012 年入职阿里巴巴,Neil Mahi 则拥有超过 20 年的软件开发经验,也在区块链开发领域也超过四年。

Qtum 量子链团队认为比特币是目前最成熟稳定的区块链,从而运用 Bitcoin Core 作为项目的核心基础。然而比特币无法运行智能合约编写中需要的图灵完备代码,故 Qtum 量子链结合了以太坊虚拟机(EVM),并在未来结合可支持 dApps 开发的其他虚拟机。

比特币运用的是 UTXO 模型而以太坊虚拟机(EVM)与其他虚拟机运用的则是账户模型以确保其简易性。为了使比特币的 UTXO 模型能与虚拟机的账户模型相兼容,Qtum 量子链在二者之中添加了一个「交互层」,称之为账户抽象层(AAL)。

运行 Bitcoin Core 使得 Qtum 量子链的更新迭代能够集成比特币的开发,而与以太坊虚拟机(EVM)的结合则使得以太坊开发者可将 dApps 置于 Qtum 量子链平台上。Qtum 量子链官方宣布了正在开发 x86 虚拟机的相关信息,该虚拟机将在未来支持使用更多主流开发语言的智能合约编写以及 dApps 开发。

共识机制:Qtum 量子链运用了 Blackcoin 版本的权益共识证明(PoS 3.0)来达成共识,而比特币与以太坊目前还在使用工作量证明共识机制(PoW)

治理:Qtum 量子链运用分布式自治协议(DGP)将区块链上的投票权去中心化,使开发者能够对区块链的各项参数(区块大小、gas 费用等)进行动态调整。

其他特点:Qtum 的智能合约能够在轻量化设备上执行(如移动设备及物联网设备)。


UTXO VS AAL


UTXO 模型:比特币运用 UTXO 模型,该模型的原理就好比使用货币或支票支付对比使用信用卡或借记卡支付。打个比方,Alice 想要购买一件 30 美元的 T-恤,而她手中拥有 2 张 20 美元的支票,她没有办法只向商贩支付 1.5 张支票,只能将两张全部支付给商贩并获得一张 10 美元支票的找零。

UTXO 模型的运行也使用了类似的方式,在之前的交易中,Alice 拥有两笔交易输出分别为 1 个比特币和 0.5 个比特币,而她需要向商贩支付 1.3 个比特币。当她支出 1.5 个 BTC 时,钱包形成了两个新的交易输出,发送 1.3 个比特币给到,并将剩下的 0.2 个退回给 Alice。这一特点比特币用户能够在区块链浏览器上轻松查询到,在发现他们的比特币地址之后,所呈现的交易数据通常是用于支付的比特币数量大于既定值。

账户模型:以太坊的账户模型与银行的账户模型非常相似,账户的总资金全部汇集在一起,形成一个总体的余额,每一笔交易都必须使用交易所需的精确金额——不可更改。例如,Alice 的账户里有 40 美元,她想花 30 美元买一件 T-恤,她发送给商人正好 30 美元,账户里剩余 10 美元。

Qtum 量子链使用 UTXO 模型的一大原因是它能够更好地保护用户资产安全,免受重放攻击和双花攻击的影响。此外,由于每个交易使用独立的输出,因此区块链还可以从并行处理的交易中获得更大的可扩展性。

账户抽象层 AAL: 就开发者们的观点来说,要实现 UTXO 与账户模型之间的转换并不容易。Qtum 量子链运用了账户抽象层(AAL)来实现两者的交互与结合,账户抽象层(AAL)是 Qtum 量子链团队自主开发的一个交互层,能够使 Qtum 量子链上使用基于 UTXO 模型的同时向运行智能合约的虚拟机展示基于账户模型的系统,由此一来,任何能够在以太坊上完成的开发都可以在 Qtum 量子链上完成。

060a723a-3767-5027-a4ce-24c713ab38bc_guGf4kg.PNG


POS 共识机制


Qtum 量子链运用 PoS 共识机制以确保网络的安全性并达到共识,在其原型——Blackcoin 版本的 PoS 3.0 中,网络参与者通过持有 Token 进行 Token Staking,验证网络交易并生成区块。获得新区块奖励的可能性的与网络权重成正比。如果网络参与者不诚实,并试图与系统博弈,PoS 将在通过没收部分或全部 Staking 所得 Token 对他们进行惩罚。

Qtum 量子链的 PoS 机制不存在 staking 的准入门槛,因此整个网络更加去中心化。其挑战在于,如果通过作弊获得的收益大于受到的惩罚,那么持有越少 QTUM 的 staking 节点将越倾向于作弊。Qtum 量子链运用了 Token 的「成熟」机制,以提高攻击成本。Token 必须先「成熟」(即 500 个区块确认)才能参与 Staking。

Qtum 量子链选择 PoS 的原因还在于 PoW 共识机制是能源密集型的,浪费能源且不利于可持续发展。

Qtum 量子链中,每 144 秒最大产生 2MB 的区块。目前的通货膨胀率设定为每年 1%,并计划每四年减半,为期三十二年。 截至撰写时,QTUM 流通供应量约为 8850 万,预计最大供应量~1.07 亿 。

目前的区块奖励是 4 个 QTUM。 0.4 QTUM 是创建区块时获得的奖励,需被锁定,直到成熟(500 个区块)。在最初的 0.4 奖励成熟之后,剩余的 3.6 QTUM 分配到超过 9 个区块里。Qtum 量子链使用锁定和延迟奖励保证安全,其他人要攻击网络就很难。

df074e91-a3ed-5115-be3f-d68b10ceb02f_fHaHw76.PNG

Qtum 区块奖励分配


安全性-Gas:由于一旦网络遭到恶意滥发垃圾信息攻击,区块链就会被阻塞,将无法处理合法交易和验证。所以,与以太坊类似,Qtum 量子链使用 gas 提高恶意攻击者滥发攻击的成本,进而阻止恶意攻击者。 gas 以 Qtum satoshis --- QTUM 的最小单位(0.00000001 Qtum)计价。如果用户发起恶意滥发垃圾信息攻击,那么攻击的 gas 成本(40 QTUM satoshis)将会增加,让攻击变得非常昂贵。如果 QTUM 价格上涨且 gas 价格过高,则可以调低 gas 成本。Qtum 量子链使用分布式自治协议(DGP)机制实现 gas 费用的动态调整,目前 Qtum 量子链团队正对它进行实时监控。Qtum 量子链将面临的挑战是,确保 gas fee 限制和价格上涨不会阻碍复杂智能合约的部署。


Qtum x86 虚拟机


Qtum 量子链将推出另一款能够支持多语言编程的 x86VM 虚拟机。Qtum 团队表示账户抽象层( AAL) 能够支持各种虚拟机的集成,Qtum 团队意识到以太坊虚拟机( EVM) 及其编程语言(Solidity)有一些设计缺陷,并且缺乏足够的验证工具。

Qtum 团队正在开发 Qtum x86 虚拟机,允许开发者使用主流的编程语言,如 C,C ++,Rust,Python 等进行智能合约部署,并在 Qtum 量子链上开发 dApps,而不是仅仅局限于 Solidity。在未来 x86 的实现过程中,Qtum 将先启动一个公共测试网并部署一个 bug 修复的赏金计划,在历经数月的反馈收集阶段后推出主网版本。


Qtum 区块链治理——DGP


Qtum 量子链团队开发了一种分布式自治协议(DGP),用于对区块链的基本参数进行动态调整。同时,Qtum 还会在必要时使用硬分叉和软分叉,但仅用于添加新功能或实现其他无法在不分叉的情况下完成重要的事务。

分布式自治协议(DGP)涉及区块大小和 gas 的成本,以及其他未公开定义的参数,Qtum 计划使用 DGP 来防止分叉对网络造成的破坏。

DGP 的四个步骤如下:

一个利益相关团队发出一个修改参数的提议

然后,所有利益相关团体投票赞成或反对该提议

提议被接受(并且实现)或者被拒绝

提议数据归档

利益相关者可以按照多种方式划分 - 按行业或纵向(金融服务,医疗保健,供应链等),按用户团体(用户,开发商,区块生产商等),按地区划分(美洲,欧洲,亚洲,非洲等),等等。据 Qtum 所说,无论以何种方式划分,不同的群体虽然可能会有不同的需求和兴趣,但都应该具有相同的代表性。

所以,Qtum 可能会实现一个系统,让每个利益相关方团体都可以投票给一个治理机构来代表他们做出关乎平台未来的决策。 如果实现这样一个民主结构,Qtum 就必须同时建立一个投票机制。


Qtum 量子链基金会


Qtum 量子链基金会(Qtum Blockchain Foundation)是一个总部设在新加坡的非营利性组织。 Qtum 基金会的核心任务是区块链开发、不断完善代码库并促进 Qtum 量子链的大规模应用。该基金会设有一个决策委员会和四个次机委员会。

1d6f22d1-45dd-5430-9ca4-2afbffbab963_AxYk7zl.PNG


Qtum 量子链正式落地时,基金会在普华永道会计师事务所的帮助下发布了一份白皮书,对基金会及其各委员会的职能和责任进行了概述。Qtum 团队表示,他们计划在未来发布一份新包含最新信息的新版白皮书,并计划通过公开选举,允许持有 QTUM 的用户进入各个委员会 .

1dfc7771-df10-5c20-a71d-7576dc57f973_jrR8nvT.JPG



产品特点


兼容性 - 帐户抽象层和操作码

为了将实现比特币的 UTXO 模型与以太坊虚拟机(EVM)的交互,Qtum 量子链开发了帐户抽象层(AAL)。 AAL 将 UTXO 转换为 EVM 可识别 dApp 的帐户模型,这样开发者就不必编写智能合约来选择自己的输出。因此,Qtum 相当于为所有合约添加了一个共识选币算法(Consensus-critical coin picking)。关于 Qtum 如何将 UTXO 转换为帐户模型,这种技术细节超出了本报告的范围。虽然 AAL 最初的目的是将 Qtum 基于 UTXO 的底层区块链与 EVM 结合,但它也可以结合其他虚拟机。 x86VM 就在下一个产品线上。 此外,AAL 还能让开发者能够轻松地将基于以太坊的智能合约移植到 Qtum 量子链,反之亦然。尽管使用 UTXO 模型,Qtum 还可以退还未使用的 gas 费用,这一功能在非 UTXO 模型的以太坊上也能适用。

结合 EVM 所需的另一个工具是操作码。操作码是一行代码的一部分,用于定义需要执行的操作。 Qtum 使用了比特币的脚本语言,并增加了三个新的操作码(与 AAL 一起)实现智能合约。

轻客户端 - SPV

如上所述,Qtum 选择 bitcoin core 和 UTXO 模型作为其基础的一个原因是使用 SPV (简单支付验证)。 SPV 允许在轻量化客户端(移动电话,平板电脑,物联网设备等)上执行智能合约而无需下载整个区块链数据,用户只需对区块头进行标记就足以完成交易验证,使得 SPV 轻量化客户端能够与智能合约和 dApp 进行交互,而无需下载整个区块链。目前 Qtum SPV 所面临的一个挑战是 Qtum 的轻客户端交易仅限于传输本地 QTUM。

兼容性 - 比特币改进建议

运行 bitcoin core 代码允许 Qtum 合并网络更新,例如 Segwit,闪电网络以及未来的比特币改进提案。目前 Segwit 在 Qtum 上已被激活,但用户无需使用。

Qtum 企业版

Qtum 于 2018 年 5 月宣布推出 Qtum X. Qtum X 是专为企业级用户设计的私有链。目前所知的是系统将使用 PoA 共识机制作实现更强的交易处理能力(更高的 TPD)。Qtum 企业版与 Qtum 之间存在着明显的区分,但目前还不清楚这两者是否可以进行交互(比如 QTUM 是否可以在这两个平台上通用)。


本文为 Circle 官方 Qtum 中文译文版,由于篇幅限制等因素稍作修改