区块链
加密领域的许多人都听说过“交易延展性”,并且它是“不好的”。但是,什么是“交易延展性”,为什么不好?让我们快速了解一下。
在像比特币这样的加密货币中,交易是在用户之间转移价值的原子操作。用户创建事务并将其发布到网络。这些交易传播网络并最终被挖掘到区块链中。接收者使用区块链来确定交易是否得到确认。
在随着成千上万笔交易的进行,用户如何快速识别它们以便能够区分它们?如何在不使用某些缓慢的全局注册表系统的情况下,以一整套相同的方式快速地,唯一地标识全球范围内的所有断开连接的用户的交易?答案很简单,您可以使用交易的加密hash作为标识符。
加密散列允许任何人仅使用数据本身派生任何数据的指纹。指纹是唯一的,每次计算都是一样的。即使更改1位数据,指纹哈希也会完全更改。
在比特币中,事务的散列称为事务的txid,并充当该事务的通用唯一标识符。
很好,那么什么是延展性?
交易可延展性
可延展性是指在不使事务失效的情况下更改事务(TXID)标识符的能力。根据加密货币的不同,有很多方法可以做到这一点。跨所有加密货币的通用方式是通过签名延展性,这是本文的重点。
ECDSA数字签名的数学原理,可以更改签名,但不会使其失效。虽然这不允许伪造这些签名,但允许攻击者更改包含这些签名的事务的txid,这可能会导致严重后果。
可延展性攻击
假设bob通过一个带有标识符x的事务向alice支付了一些比特币,假设在挖掘之前,x被扩展为一个新的标识符x’。alice收到了付款,但bob不知道。既然alice知道bob不知道,她就骗bob再次付款。她重复这一过程,直到bob最终意识到发生了什么,但这可能为时已晚。在现实世界中,这种攻击是按以下方式在交易所执行的:
在这种情况下,攻击者:
1.红色圆圈一女巫Sybil节点
2.使用女巫Sybil节点包围交换节点(黄色圈)。
3.从交易所提款。
4.提款X离开交易所后,Sybil节点将提款延展至X‘。
5.X’会传播到网络中。
当X‘被挖掘到下一个区块时,攻击者已收到提款X’,但是交易所后端尚未确认收到提款,因为它正在区块链中寻找X。知道这一点,攻击者将继续:
6.要求交易所重复提款,因为“还没有通过”。
7.冲洗结果并重复提款。
取决于交易所的规模大小,攻击者可以采用“寄生策略”,通过这种方式,只需不断少量体现就可以耗尽交易所。这使攻击者可以在未发现的情况下,重复体现直到交易所管理人员发现为止。或者攻击者也可以采用“吸血鬼策略”,从而在系统管理员做出响应之前,以高频率的大笔撤资消耗掉交易所。
无论采用哪种策略,这都是一个问题,加密货币架构师都需要去解决可延展性问题。
注意:实际上对于步骤(2)攻击者无需完全包围交易所节点。尽管攻击成功的可能性较低,但仅需要几个连接即可执行攻击。包围得越多,概率越高。
解决可延展性问题
比特币(BTC)通过引入隔离见证(Segwit)而“解决了”延展性,隔离见证将签名与TXID计算隔离开来,并用对该签名的不可更改的哈希承诺来代替它。该散列用作指向签名的指针,该签名存储在另一个数据结构中。为了验证交易签名,验证者使用哈希在其他数据结构中查找签名,然后执行常规的ECDSA验证。这消除了签名作为交易可延展性的来源,因为它们存储在交易之外,并且不能将指向签名的哈希指针进行延展。但是它引入了对包含签名的其他数据结构的依赖性。比特币的一个小折衷,但意义重大。
虽然Segwit本身并不是一个坏主意,但部署和由此产生的部署政治在比特币社区内部引起了分裂。这导致社区分为比特币(BTC)和比特币现金(BCH)。尽管将隔离见证(Segwit)吹捧为主要原因,但潜在的问题更多是与隔离见证的部署有关,而不是技术问题。另外,“永远不要软叉,永远不要硬叉”的政策暗示着1MB块大小实际上是锁定的,这对于许多人来说是不可接受的。
反对隔离见证(Segwit)的技术论点更多地与它作为软叉的无用复杂性有关,而与它作为硬叉的健全性无关。作者认为,Segwit作为软叉是使比特币破裂的源头。然而作为硬叉的Segwit是(并且仍然是)技术上合理的延展性解决方案。
来源: 区块链研究实验室
全部0条评论
快来发表一下你的评论吧 !