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

隔离见证(三):优点

在说隔离见证的优点之前,先说说它的缺点。

其实隔离见证最大的缺点,就是因为它对比特币区块结构的改变,比如它不光将见证部分隔离出去,还将梅克尔树根放到了coinbase字段(系统奖励比特币给区块作者的那笔交易叫coinbase交易,coinbase交易只有一个特殊的输入,这个输入没有解锁脚本,而是由coinbase字段替代。不过我现在也没理解这么做的用意),可能会引入不可意料的风险,留下技术债务。

我们知道,比特币是一个复杂的系统,复杂系统往往牵一发而动全身,但得益于中本聪的天才设计,比特币已稳定运行多年,现在突然对它做这么大的手术,很可能会让这种稳定性瞬间崩塌。不过目前看来,这种担心稍显多余,因为隔离见证从481824区块布署以来,接近一年时间,还没出现过什么大问题。

接下来看看它的优点。

第一个优点就是可以用软分叉的方式解决比特币的扩容问题。不过从区块链的发展历史看,软分叉、硬分叉、社区分裂都算不上多大的事,大家玩不拢就分道扬镳,各玩各的,挺好!

第二个优点是为闪电网络的布署打下良好的基础,闪电网络是目前看来解决比特币交易拥堵问题的最佳方案,我们后面会讲。闪电网络紧跟隔离见证,也已在比特币主网布署。理论上来说,没有隔离见证也可以布署闪电网络,但效果大打折扣,没有隔离见证的闪电网络是不优雅的。

第三个优点是解决了比特币的一个顽疾:延展性攻击,这是本文重点要讲的。

延展性是说一个东西可以改变它的形状,而不改变质量,比如金属,你把拉捏捶打怎么样都行,但它质量不改变。

具体到比特币来说,它的延展性是指比特币交易的延展性。每一笔比特币交易都有一个交易ID,这个交易ID呢,其实就是整笔比特币交易的哈希值。我们知道,原始数据稍微变动,哈希值就面目全非,在老式的比特币交易里,数字签名跟交易的其他信息放在一起,是原始值的一部分。所以,数字签名稍一变动,交易ID就完全不同了。但关键是,数字签名真的可以变,这个变不是指变了之后无效的乱变,而是变了之后仍然有效的变!

为什么会这样呢?

因为数字签名本质上是一种数学运算,但凡数学运算,总有一些不同但等价的表现形式,比如数字13和0013,在数学上就是一样的。所以,同一个数字签名可能有多种表现形式,但都是有效的。

问题来了。

虽然同一数字签名的不同表现形式都有效,但他们的哈希值却完全不同啊,所以最后生成的交易ID也会不同。利用这一点,延展性攻击得以展开。

假如你发起一笔交易,转了一笔比特币给小明,数字签名用的是A形式,生成的交易ID是A,然后你把交易ID告诉了小明。现在有个坏人,侦听到了这笔交易,把数字签名改成了B形式,然后生成交易ID为B,而且他的网速比你快,最终他的B交易被区块打包,你的比特币照常还是转给了小明,小明虽然收到了比特币,但不是根据A交易收到的,而且在区块链上也查不到A交易。所以,小明完全可以说没有收到你转发的比特币,然后要你重新转一次。这便是延展性攻击。

之前世界上最大的交易所门头沟破产,号称就是因为受到了黑客的延展性攻击而导致。

我们来看看如何用延展性来攻击一家交易所。

1、查清楚交易所主要和哪些比特币节点直连;

2、用DDOS攻击把那些节点搞瘫痪;

3、伪造一些节点和交易所连接;

4、向交易所提币;

5、交易所向你发币后,截停这些交易,然后改变签名方式和交易ID,再广播出去;

6、你照样收到币了,但向交易所反映说你没收到;

7、交易所根据交易ID一查,果然查不到,于是再向你转一笔。

当然,现在交易所都对延展性攻击有所防范,要得手几乎不可能,交易所的防范手段其实很简单,复查的时候如果根据交易ID查不到,再根据交易的输入查,因为输入是没变的。

隔离见证因为将数字签名隔离出去了,所以就不会有延展性攻击这回事,它是解决延展性攻击的好办法。当然,应该不是唯一办法。据说从比特币分叉出来的BCH也开始用不同的办法来解决延展性攻击,但不知详情,不知现在进展如何。

另外,隔离见证对数字签名的算法做了改进,在之前,对于某些交易来说,数字签名随交易长度是呈平方增长的,但改进之后,可以做到只是线性增长,无疑这又节省了不少空间。

好了,隔离见证讲完了,下篇开始咱们学习闪电网络。

不投资毋宁死

自由,就是拥有选择的权利,而每一次选择都是一次投资。

谢谢阅读

✬如果你喜欢这篇文章,欢迎分享到朋友圈✬

评论功能现已开启,灰常接受一切形式的吐槽和赞美☺

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

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券