2020-09-25 交易可塑性

什么是可塑性

交易可塑性,也叫交易延展性。在现实生活中,我们把一块金子敲变形之后,虽然形状有所改变,但质量却没有发生变化,也就是说金子外观发生了变化但是仍然被认可,这种特性呢被称为 “可塑性”。在比特币系统中,也有一个类似的名词,“Transaction Malleability”。这个词通常翻译为 “交易延展性”,也叫做 “交易可锻性”

存在不同类型的可塑性,但总而言之,如果创建了一笔比特币交易,其他人(例如矿工或交易所)可以在将其被打包入块之前修改交易 ID。由于比特币系统签名算法 ECDSA 的问题,节点可以利用之前的签名和账单内容,生成一个不一样的有效签名,这样,交易 ID 也随之改变。这个算法对于一个内容只存在 2 个有效签名,因此账单只能被锻造一次。

这里的重点是,这个签名有效,账单也是合法的。因此,在比特币网络中会同时存在两笔账单,这两笔账单内容一样,但是账单 ID 不一样。假如用户发出的交易为 A,黑客改成了 B。

这里有一个前提是,A 和 B 的输入都一样,对于一个节点来说,只要有一个交易被写到链上了,另一笔交易就会失效,因为在这个节点写入交易时会先检查本地链上账单的输入是否已经被消费过了。当两笔账单都在网络中传播时,一个节点接收到两笔账单后,会写入最先接收到的那笔,抛弃另一笔。

请记住,在可塑性方面,第三方不能更改资金的接收者,也不能更改金额,也不能更改费用......他们只能更改交易 ID。

这是功能还是缺陷

首先要意识到的是,延展性 “融入” 于比特币的设计中。

比特币使用一种称为椭圆曲线数字签名算法(ECDSA)的加密算法,这些数字签名本身具有可塑性。换句话说,第三方可以以某种方式更改签名,但它们仍然有效。其他类型的数字签名也是如此。

例如,(r,s)对的 ECDSA 签名可以被(r,-s)控制。这签名仍然有效,即使它们并不相同。

现在将此与比特币交易(包括签名)进行哈希计算。因为 ECDSA 签名具有可塑性,并且这些签名是每笔交易的一部分,这意味着比特币交易将具有可塑性。

因此,你可以合理地将可塑性称为比特币的 “功能”。然而,你也可以把它称为一个 bug,因为这会带来一些不理想的后果。归根结底,这取决于你对它的掌握有多了解。

可塑性的影响

任何声称可塑性是一个巨大而紧迫的问题的人要么是不知情要么是在撒谎。因为这是比特币有生俱来的,可塑性已经存在了十余年。臭名昭着的 MtGox 盗窃案一直被归咎于可塑性,尽管 这些理论已被揭穿。

遗憾的是,可塑性被当成了政治工具,修复延展性的一个好处是它使其他项目(如 Lightning Network)更容易实现,那些支持闪电网络的人可能会大大夸大修复延展性的需要。

比特币的可塑性至今仍然存在。即使在 BTC 中,SegWit 也只能阻止 SegWit 交易的可塑性,虽然这些交易占总交易量的很小一部分而已。

零确认交易

在比特币中,一旦矿工将其包含在块中并将块发布到区块链,该区块的交易就会得到一次确认。确认越多,该交易的可信度就越高。试图利用可塑性造成攻击的人,在交易被确认后,另一笔双花的企图会直接被矿工拒绝。

可塑性攻击只能操纵那些刚进入矿工的内存池但尚未包含在块中的交易,即零确认交易。大多数人都知道,未经确认的交易不如具有至少 1 个确认的交易安全。

但这安全性究竟如何呢?

“Bitcoin Core” 的理念是我们应该在基础层上有一个高费用的分层系统。因此,除非您使用适当的高额费用,否则未经确认的交易可能需要很长时间才能确认,或者可能永远无法确认。在此期间,它可能会花费两倍或用 “RBF” 替换(替换费用)以让交易得以更快确认。在那个系统中,零确认被认为是相当 不安全且不可靠 ,毕竟,Bitcoin Core 的支持者认为小额的交易应该在二层网络上进行。

Bitcoin SV 的理念是不应该让交易费变得昂贵,而且区块不应该填满,小世界网络中的矿工竞争使得零确认足够 安全可靠 

你可能感兴趣的:(2020-09-25 交易可塑性)