MimbleWimble与她的双生子—Grin和Beam

Grin和beam的前世今生与对比

北京时间1月15日凌晨, Grin主网正式上线,成为币圈一时热门话题,为寒冬中奄奄一息的币市带来一丝春意。币圈有人这样称Grin : 「Grin也许是近年来最硬核、最接近比特币原教旨主义的加密货币;小区块、纯匿名、抗审查、反追踪,密码庞克、无政府主义再一次掀起波澜。 」

MimbleWimble 是一个在2016 年由笔名Tom Elvis Jedusor (佛​​地魔名字的法文翻译) 的匿名人士提出的共识协议。MimbleWimble 原本是指称哈利波特中的噤声咒。因此也可知其欲主打的痛点,MimbleWimble 认为现在区块链上太多资料是不必要的,同时也揭露太多讯息了。MimbleWimble 所使用的方法能够大幅减少所需资料的储存空间,同时提升私密性。这是一个令人赞叹的惊人成就,因为之前我们看到主打私密性的加密货币,通常都会让所需的储存空间有大概一个量级大幅增加的问题。

虽然MimbleWimble有着优秀的理论基础,然而就如其名一样,自两年多前横空出世以来,便渐渐地淡出了人们的视线。直到近日有两个采用其协议的项目,主网上线,才又引起广泛地讨论。这就是Grin和Beam,实现MimbleWimble区块链的开源软件项目。前者是由网路匿名社群开发,且核心开发者都采用了来源《哈利波特》相关的绰号。后者则是由一家来自以色列的新创公司Beam Development Ltd负责,这两者填补了(MimbleWimble 协议所缺失的)实现一个完整的区块链和加密货币必需的一些东西。

Grin 项目的主要目的和特性如下:

• 隐私性的加强。这使Grun 的货币具备了完全可替代性。

• 区块大小与交易量相适配,历史交易仅保留约100位元组的交易核心(transaction kernel), 相比其它区块链节省了大量空间。

• 强大且经过验证的密码学原理。MimbleWimble只采用椭圆曲线密码,该密码学技术已经过了数十年的使用和测试。

• 简单的设计使得日后的程式码审查和维护变得容易。

• 社群驱动。采用一种对于ASIC 不友善的挖矿算法(Cuckoo Cycle算法),借此来鼓励去中心化的挖矿。

跟几个现行的匿名导向加密货币横向进行对比的话,Zcash 然仍是实现行匿名能力最强的加密货币。Zcash 的交易在离开钱包前就已经隐藏掉所有重要讯息,但是Zcash 现在遇到最大的问题是在用Zcash 的零知识证明演算法去加密交易所花的时间成本十分高昂。另外老牌的匿名币门罗币(Monero) 跟MimbleWimble 有些许类似,都是使用保密交易(confidential transaction),只不过门罗是透过环状签名去隐藏付款者的身分。但是门罗币的交易的封包大小较大,造成门罗币交易的手续费相对高昂。

Grin 在出矿奖励的部分,Grin 展现出自己特别的一面,Grin 是稳定一个区块60 个Grin,而平均约一分钟产生一个区块,也就是说约莫一秒产生1 个Grin。相较于Beam 施行标准的加密货币挖掘紧缩政策(Beam 的奖励每四年递减减半一次),Grin更具备了成为未来世界通货的野心,它的目标是考量到未来世界人口以及生产力的增加,所以令货币供给稳定上升才能提供足量且相较稳定价格的货币令人们日常使用。显然地,在第一年到第二年,其供给量成长了两倍,因此可判断在前几年Grin的单位价格并不会太高,甚而容易下跌。(否则每隔一年、两年、四年,总市值便翻倍)然而到了后期,需要过1024、2048年才会翻倍。显然地,通膨率=(100 / 挖掘年数)%。也就是第十年时,通膨率为10%,25年为4%,50年为2%。我们都知道加密货币的丢失是常见的事情(忘记私钥就是一个例子),因此无上限的开采过程才能使其在宏观的历史视角中具有一席之地。藉由不会预期稀有而上涨的屯币心理,核心开发者Michael Cordner曾在接受媒体采访时解释了这一设计的原因,他们更想让Grin成为Money(交易媒介,MoE),而不是如同BTC般地价值存储工具(store of value,SoV)。此外,这也避免了通缩所导致的早期矿工优势,以及开采完毕后仅靠手续费维持诱因的开采模型。

此外,Grin的开采算法一开始是想要抗ASIC的,不过在去年年中(2018年八月),其社群承认ASIC是不可避免的。而且ASIC事实上也可以去中心化,这是因为显卡花费的电力成本较高,保养困难,导致一般人入门门槛较高。而且ASIC也能使网路攻击难度变高(因为总算力增加了)。鉴于上述观点,Grin 随后决定改变工作量证明(PoW)演算法,这两种算法都是Cuckoo Cycle 的变化,主演算法是ASIC 友善(ASIC Friendly)演算法和次演算法是ASIC 抗性(Asic Resistant )演算法,并在专案主网上线后逐步淘汰次演算法。Grin 中的主PoW 演算法叫做Cuckatoo31 +,是Cuckoo Cycle 对ASIC 更加友善的版本。它被称为ASIC 友善的是因为它可以使用数百MB 的SRAM 来提高性能使得ASIC 算力超过GPU。次演算法,称为Cuckaroo29,是一种记忆体密集型的AR PoW 演算法。然而,真正保证ASIC 抗性的唯一方法是有计划的进行硬分叉,不断调整演算法(类似Monero 的做法),使已生成的ASIC 作废。Grin 将每六个月执行一次这样的硬分支来调整演算法,以抑制对该AR 演算法生产ASIC 的积极性,直到该演算法在两年内逐步淘汰。一开始,Grin 的结构是90% 的区块用次演算法挖矿,10% 的区块用主演算法挖矿。2 年后,全部的区块都将使用主演算法进行挖矿。在未来2 年,Cuckatoo31+(主演算法)将获得更大比例的区块奖励,每月线性增长3.75%。Grin 社群希望,到Cuckatoo31+占据全部的挖矿份额时,将出现多个ASIC 制造商健康竞争的情况。Grin 每经过60 个区块窗口,会调整一次难度。而Beam 在这方面想法较为传统,其供应计划是通货紧缩型的,在第一年之后区块奖励下降50%,之后每四年就会减少一半,直到达到2. 63 亿的极限(133年后),以及创始人奖励(前五年20%)的方式,来让前期投资者有所收益。这个奖励模式是和Zcash相似的,而其算法也是使用和Zcash一样的Equihash算法,不难看出其目标对手。

接着看基于相同共识协议的Grin 和Beam,两者在社群知名度的表现大大的不同。先看看coinmarketcap上的市值(2019年4月7 日), Grin 市值排名185,Beam 市值排名308,有着不小的落差。若以GitHub 上的星星数为指标(2019年4月7 日),Grin 的星星数为4989,而Beam 的星星数为374,但也不必对于Beam悲观,我们翻翻其他专案比如说排名21 的老牌币NEM 也仅319,Beam 的表现相较许多底层公链并无太大差距,只是Grin 表现得太好。除此之外, GitHub 上的fork 数也部分反映了开发者对于这个专案的热情及想要投入的人数。Grin 的fork 数(2019年4月7 日)是750但Beam 仅有79。这个数字明显反映出两个专案对于社群开发者的吸引力及期待的落差。这悬殊的十倍落差若是考虑两个专案个别使用的语言Rust 和C++的使用者人数,更会进一步地拉开。下面两张图是参考了TIOBE Index 2019 三月的使用排名。

但有趣的是,在开发进度的部分,Grin 看起来大幅落后Beam,Grin 的commit数(2019年4月7 日)只有1952 而Beam 的commit 数则有4711,或许这就是背后有没有一家营利组织来推动的关系,盈利企业在推动进度这点,毕竟有着许多压力,还是胜过仅只靠捐赠及自愿投入的开放社群。从时间来看Beam才出现一年,而Grin却是从2016年,MimbleWimble出现后半年内就开始。然而主网上线的时间却稍晚于Beam。因此我们可以看到没有资本营运以及公司投资压力,开发进度将被推迟的必然性。(不过Beam的CEO 宣称将在2019 年底建立Beam 基金会,且团队将在5 年内将社群管理交棒给Beam 基金会。 其负责管理对Beam 协议的改进和组织开发,资助促进与Beam、 MimbleWimble 和蒲公英(Dandelion) 协议相关的研究,提高社区意识且促进发展,以及强调对加密货币和金融主权中对隐私重要性的认识。)由上述数据做总结,我们可以发现,现在这个时间点,不管在链圈或者币圈都还是有着不少的自由主义者以及密码庞克爱好者,憧憬比特币的本质概念。开发者匿名、没有预挖、没有ICO、纯社群投入,且开发团队为防止币价被操作,也拒绝了早期投资,而选择了发起公开捐款的请求。这充满理想色彩传奇的创立过程还包含了Grin 开发所使用较为新潮的Rust 程式语言,而并非像Beam选择较传统的C++。虽然说Beam也是没有ICO 以及预挖,然而矿工前五年的百分之二十收益需要缴交给开发者、投资人、非营利基金会。的确公司需要资本回收,但听起来更具理想的Grin,吸引力却因此更胜Beam,市值也来得高,社群的力量也更大。相对而言,在治理方面,Grin 像是门罗币或比特币,而Beam 则更像是Zcash。

MimbleWimble 的原理,挑战与未来

与Zcash 相比,MimbleWimble 或Monero 的优势之一是它们依赖于与比特币相同的简单密码学基础原理。MimbleWimble 使用的是较为简单并且已经于比特币中使用的椭圆曲线加密。因此我这里来讨论MimbleWimble的原理,为什么它能够让所储存空间减小的同时又能保有隐私性呢?一开始我将从椭圆曲线密码(ECC)的简短描述开始,这是MimbleWimble的重要基础。接着描述其区块链交易和区块的所有关键要素(这边大量参考了官方释出的白皮书资料)。除了负责交易确认的两个基本属性外,最核心的技术就是Confidential Transactions、Coin Join、Range Proof 和Cut-through。但在提到这些核心技术以及椭圆曲线理论之前,先来说一个MimbleWimble最有名的性质:没有地址。

不使用地址最核心的理由是为了增强区块链的隐私性和增加可规模化(scalability)。在基于MimbleWimble 的区块链中,用户必须进行链下通信来进行交易。交易发起方向接收方证明其持有足够交易的货币数量,并向接收方转移这些货币的控制权。因为没有一个所谓的「地址」,所以也没有「标准」方式来进行交易。因此交易双方需要建立一个管道,从而发送货币持有证明及转移货币控制权限。这与绝大多数的加密货币非常不同,它们一般是单方发送,也就是收币方不需要同意收取,发起方就可以发送到接受方地址。

椭圆曲线只是一群我们称之为C 的点。这些点可以被加、减或乘以整数。给定一个整数k 并使用纯量乘法运算,我们可以计算k * H,这也是曲线C 上的一个点。给定另一个整数j,我们也可以计算(k + j)* H,它等于k * H + j * H。椭圆曲线上的加法和纯量乘法运算保持加法和乘法的交换率和结合律:

(k+j) * H = k * H + j * H

在ECC 中,如果我们选择一个非常大的数字k 作为私钥,则k * H 被作为对应的公钥。即使人们知道公钥k * H 的值,推导k 几乎不可能(或者换句话说,椭圆曲线点的乘法计算的计算量是微不足道的,然而曲线点的「除法」计算却极其困难。)

先前的公式(k + j)* H = k * H + j * H中, k 和j 都是私钥(一个发送保留,一个是双方都有),演示了从两个私钥的总和以及得到公钥(k + j)* H,等价于每个私钥的对应公钥总和以及(k * H + j* H)。

MimbleWimble 的交易确认依赖于两个基本属性:

• 零和验证。输出总和减去输入总是等于零,确保交易没有凭空创造新的货币,而且不会显示实际金额。

• 拥有私钥即拥有交易输出的所有权。像大多数其他加密货币一样,交易输出通过拥有ECC 私钥来保证其所有权。然而,在MimbleWimble中,证明一个所有者拥有这些私钥并不是通过直接签署交易来实现的。下面介绍如何平衡以及致盲因子,并借此说明上面的这两个基本属性是如何得以实现的。(以下计算都忽略手续费)

Balance

基于上面描述的ECC的属性,可以在交易数据中掩盖实际交易值。如果v 是交易输入或输出的值,而H 是椭圆曲线,我们可以简单地在交易中使用v * H来隐藏v。这是因为使用ECC操作,我们仍然可以验证交易的输出总和等于输入总和:

v1 + v2 = v3

v1*H + v2*H = v3*H

验证每笔交易的这个属性,允许共识协议在验证交易的过程中不会凭空创造出金钱,且无需了解实际的交易金额是多少。但是,可用数值是有限的,攻击者可以尝试每一个可能的数值来猜测其交易金额。另外,知道v1(来自上面的交易示例)和v1 * H,就等于在整个区块链中揭露了等于v1 的交易。出于这些原因,我们引入了第二个椭圆曲线上的一点G和私钥r 作为致盲因子(blinding factors)。

交易中的输入或输出值可以表示为:

r*G + v*H

他们的乘积r*G 是r 在G 上的公钥。v 是输入或输出值,H 是另一个在椭圆曲线上之一点。

无论是v 还是r 都不能被推导出来,从而利用了椭圆曲线密码学的基本属性。r * G + v * H被称为Pedersen Commitment 。作为一个例子,我们假设我们想用两个输入和一个输出创建一笔交易。我们有:

• vi1 和vi2 作为输入值

• vo3 作为输出值

满足:

vi1 + vi2 = vo3

为每个输入值生成一个私钥作为致盲因子,将上面的等式替换每个值为他们各自的Pedersen Commitments,我们获得:

(ri1*G + vi1*H) + (ri2*G + vi2*H) = (ro3*G + vo3*H)

并且要求:

ri1 + ri2 = ro3

接着我们介绍致盲因子来掩盖实际交易值的原理。MimbleWimble的另一个重点就是它可以用来证明币的所有权。甲给乙发了30个币并且隐藏了这个数字,乙选择了243148作为他的致盲因子(请注意,在实践中,致盲因子就是一个私钥,是一个非常大的数字)。区块链上的某处显示以下交易输出,并只能由乙来用(做为交易输入):

X = 243148*G + 30*H

上述加法的输出值,是对所有人可见的。但是交易金额30 只有甲和乙知道,而243148 只有乙自己知道。之后,假设乙想将这30 个相同的币转移给丙。需要建构一个简单的交易,以便:

from Xi to Y

其中Xi 是一个输入,它花掉乙之前得到的输出值X ,而Y 是丙的输出。如果不知道乙的私钥243148,就没有办法建立这笔交易。的确,如果丙要平衡这个交易,他既需要知道发送的值,也需要知道乙的私钥, 以便:

Y — Xi = (243148*G + 30*H) — (243148*G + 30*H) = 0*G + 0*H

因此这里可以确定已被归零,没有创造新的金钱。

现在知道了丙的输出中的私钥(在上面的情况下,它必须与乙的相同,为了让等式两边平衡),所以乙可以把钱从丙那里拿回来。为了解决这个问题,这里允许丙增加他选择的另一个数字2031232。最后在区块链上的结果变成了:

Y — Xi = (2031232*G + 30*H) — (243148*G + 30*H) = 1788084*G + 0*H

现在交易不会再归零了,我们在G前面有一个excess value(1788084),这是所有致盲因子总和的结果。但是因为1788084 * G是椭圆曲线G 上的有效公钥,1788084, 对于任何x和y,只有y = 0 是G 上的x * G + y * H 有效公钥。因此,协议需要验证的其实就是:(Y — Xi)是G上的一个有效公钥,以及交易者知道私钥(这里就是1788084)。最简单的方法就是要求使用excess value(1788084)进行签名,然后验证:

交易者知道这个交易输出的私钥,然后计算交易输出的和,减去输入,加起来等于0。

在上面的例子中,乙必须分享他的私钥(致盲因子)给丙。一般来说,即使私钥永远不会被重用,这也不是一个十分可取的方法。但实际上这不是问题,因为交易包括找零的输出(input)。

比方说,乙只想从自己收到的来自甲的30个币里送出10个币给丙。而乙简单地生成另一个私钥(比如12345)作为一个致盲因子来保护乙的找零的输出(input),并告诉丙,乙正在发送10个币给他。而丙像以前一样使用自己的私钥:

Your change output: 12345*G + 20*H

丙output: 2031232*G + 10*H

最终,链中发生的交易基本就如上述过程。签名使用excess value,例如这个例子当中就是1800429。

(12345*G + 20*H) + (2031232*G +10*H) — (243148*G + 30*H) = 1800429*G + 0*H

小结

MimbleWimble交易包括以下内容:

• 一组输入和一组以前(已经上链) 的输出。

• 一组新的输出(未上链)包括:

◦ 一个值和一个致盲因子在曲线上相乘并相加为rG + vH

◦ 范围证明显示v是非负的。

• 明确的交易费用。

• 一个签名,通过采取excess value(所有输出之和减去输入)并将其用作私钥来计算。

例如:(12345*G + 20*H) + (2031232*G +10*H) — (243148*G + 30*H) = 1800429*G + 0*H

而这个例子中使用的签名公钥是1800429*G。

任何一笔交易必须满足以下条件:

outputs_sum — inputs_sum = kernel_excess

这个条件同样适用于区块,因为区块只是一系列混合并消除不必要资料的交易输入、交易输出和交易核心。我们可以把所有的交易输出加起来,减去所有的交易输入,将结果与所有交易核心中的kernel excess之和做比较:

outputs_sum — inputs_sum = kernel_excess_sum

简单来说,对MimbleWimble 区块和交易的处理方法是严格一致的。自此,我已经在上面解释了MimbleWimble交易如何在保持有效区块链所需的属性的同时提供强大的匿名性保证,即交易不会凭空捏造出新的货币,并且通过私钥建立所有权证明。

Cut-through

Cut-through是指MimbleWimble 的每一个区块只记录一连串的收入交易(inputs)、支出交易(outputs)、以及签名。MimbleWimble 只需要计算总收入和总支出相减是否为零。矿工将多个交易组合成一个单个集合也就是一个区块,并将这个区块添加到链中。

每笔交易内的顺序结构并不重要。由于所有的单个交易一个人接收,一个人发送,总和会是零(零和交易的概念),因此所有交易输入和输出的总和也必须为零。与单个交易类似,所有需要在一个区块中进行检查的是所有权已经被证实(来自交易核心transaction kernels),并且整个区块没有增加任何新的货币。因此,匹配输入和输出可以被消除,因为它们对总和的贡献被抵消了。这导致了以下资料密度更高的的区块:

要注意的是,所有的交易结构已被消除,输入和输出的顺序已不再成问题。但是,该块中所有输出的总和减去输入,仍然保证为零。

一个block的建立来自:

• block header。

• cut-through 后剩余的一系列输入。

• cut-through 后剩余的一系列输出。

• 每个交易的交易核心(transaction kernel) 包含:

◦从所有commitments总和中获得的公钥r * G。

◦使用excess value生成的签名。

◦挖矿费用(fee)。

当区块以这种方式构建时,MimbleWimble区块提供了非常好的隐私保证:

• 更多的交易可能已经完成,但不会显式出现(在区块中)。

• 所有的输出看起来都是一样的:只是一些非常大的数字,不可能相互区分。如果有人想排除某些输出,他们将不得不排除所有输出。

• 所有的交易结构已被删除,使得区分哪个输出与哪个输入匹配成为不可能任务。然而,区块仍然可验证总而言之,我们得出结论:任何时间点的链状态(不包括区块头)都可以通过。

这些信息来概括:

1. 区块链上挖矿产生的货币总量。

2. 未使用的交易输出(即UTXO)的完整集合。

3. 每笔交易的交易核心。

第一条信息可以使用区块高度(与创世区块的距离)推导出来。未使用的输出和交易核心都非常紧凑。这有两个重要的后果:首先是MimbleWimble 区块链中给定的节点需要维护的状态非常小(对于比特币大小的区块链,几个G位元组大小的数量级,可能优化到几百兆位元组)。接着是当新节点加入构建MimbleWimble链的网络时,需要传输的信息量也非常小。

• 极大的可规模化,因为绝大部分交易数据主体会随时间消失,而且并不会影响安全性。

• 通过混合和删除交易数据进一步匿名。

• 新节点能够非常高效地与整个网路的其他部分同步。

另外,未使用的交易输出(即UTXO)组成的完整集是不可篡改的,即使只是想去添加或删除一些交易输出。这样做会导致交易核心中所有致盲因子的总和与输出中致盲因子的总和不同。但这样做的缺点是,使用MimbleWimble 的收款及付款双方必须同时在线上,并且有某种另外的管道去传递讯息,才能够顺利让交易进行签章(也就是之前所说的,并能只由单方发送)。最后一个有点打脸自己的主打痛点,MimbleWimble 的交易当还在未确认交易池(unconfirmed transaction pool) 时,支付款双方的资料都还是公开的。所以其实要破坏MimbleWimble 的隐私性也不会太困难,只要有人持续记录未确认交易池内的交易,就能让交易的双方暴露于阳光之下。在这状况下,其实MimbleWimble 的安全性跟比特币几乎是相同的,大概就像要找到某个论坛躲在网路昵称背后的使用者是谁一样的难度。并且很不幸的,其实不少公司甚至是国家机关,有很高的意愿去记录这些讯息,这些讯息在某些时候可能会有利可图或者是十分有用。

CoinJoin

CoinJoin 是另一种Greg Maxwell 发明的技术。CoinJoin 允许使用者将他们的交易组合在一起,从而使得交易图谱变得更模糊。交易图谱能够指出谁是交易的参与者、显示不同使用者之间的关系以及一个币的历史。比特币区块链有时假设如果需要花费多个输入,那么这些输入一定属于同一个使用者钱包。如果足够多的使用者使用CoinJoin,这就打破了一笔交易的多个输入来自于同一个使用者的假设,从而保护了使用者隐私。CoinJoin 是一种很好的技术,但它有一个显著的缺点:需要参与者之间的合作或互动。为了验证一笔组合交易,每个输入所有者都必须对整个组合交易签名。因此,不能以线下或者匿名的方式组合交易。关于非互动式CoinJoin 已经有了大量的研究。有一种技术实现了叫做单向聚合签名(One Way Aggregate Signatures, OWAS)的方案,并且具有很好的发展前景。但是,该技术进行了更加复杂的加密假设(配对加密等)。

Confidential Transaction

Confidential Transactions(CT)最初是由Greg Maxwell 提出的。提出CT 的目的是为了保护比特币隐私。它利用一种叫做“ Pedersen Commitmen”的方案,该方案将明文表示的未花费交易输出(UTXO)数值替换为加密承诺。这里不再多做解释UTXOs。加密承诺与某个使用者私钥连结,表示使用者持有加密承诺内包含的余额,而不必显示表示余额数值为多少。这意味着,当用户需要显示加密承诺中余额数值时,他们并不能人为修改,因为只有加密承诺构造时的原始数值才能够满足所涉及到的数学运算。这种方案叫做“ 承诺机制”,共包含承诺和显示两个阶段。重点在于,只有保密交易的接受者需要知道交易金额的具体数值。Pedersen Commitmen遵循加同态性质,因此我们能够验证交易内输入和与输出和相等。交易能在不知道交易金额的情况下得到验证— — 这是隐私保护的一大胜利。

Range Proofs

在所有上述计算中,我们都依赖交易值始终为正值。因此,接下来就是的问题则是负值。如果能够构造对负值的承诺,例如1BTC 和-1BTC,然后忽略负的输出,这等于是印钞机增发货币,每笔交易中凭空捏造新的金钱,也就是双花。这是不容易被检测到的,因为即使x是负数,ECDSA曲线上的对应点xH看起来也是任何值。为了解决这个问题,因此Confidential Transaction使用一种称为范围证明(range proof)的技术来处理这一问题。range proof是一种密码学证明,其涉及承诺满足具体范围。一个数字落在给定Range 内的Proofs,而不会泄露数字。因此对于任何rG +vH,我们都可以创建一个证明,证明v 大于零且不会溢出。证明了承诺所提交的值为正,而无需透露其他任何与该值相关的资讯。range proof事实上就是Confidential Transaction输出最大一部分,对于确保货币供应不发生严重通胀至关重要。

MimbleWimble 使用Confidential Transaction机制在其区块链上进行记账。所以在MimbleWimble区块链中没有任何明文表示的账户余额,链上只储存了加密承诺以及range proof来确保系统中货币供应总量可以在不可见的情况下不断检验。

Bulletproofs证明的过程中,甲方要先将机密资料搭配随选的乱数一起做同态承诺,使得他不能事后更改其内含资讯。接着,乙方随机选一个相关的问题配上甲方的承诺,来考验甲能否作答。甲提供的答案是由他当初的乱数所计算而得,并且可以利用同态的特性,使所需的传输量大幅下降到对数量级。

结论

在本文中,我们介绍了基于MimbleWimble区块链的基本原则。通过使用椭圆曲线密码的附加属性,我们能够构建完全不透明但仍可以正确验证的交易。通过将这些属性,我们可以大量减少区块链上的数据,从而实现大规模部署和快速同步。MimbleWimble 协议将上述内容组合成适用于简单支付的区块链规范。它使用改进版的保密交易,以便余额以加密承诺的形式储存,而不必公开实际交易数量。移除每个区块中的交易结构,并将每个区块视为一个整体进行验证。不需要地址的MimbleWimble 系统,交易输出实际上都是承诺,只有知道用于建立承诺的特定引数的人才能使用这些输出。用于建立承诺的引数称为致盲因子,最初包含在纯粹为保护隐私建立的保密交易中。在一个巧妙的修改中,MimbleWimble 使用致盲因子作为私钥,用于授权花费交易输出。这些致盲因子现在是身份验证的基础,一定不能公开给别人。

本文链接地址:https://www.wwsww.cn/jzb/1390.html
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。