What is Segwit? A Beginners Crash Course!

Ameer Rosic

3 years ago
what is segwit

如果你对加密货币感兴趣,那么你之前就没有办法没有 “隔离证人” 或 Segwit 的头。 有些人认为这将彻底改变比特币,而有些人已经对它如此失望,以至于他们更愿意用一种称为比特币现金的全新形式比特币!

那么什么是赛格威特?

为了理解这一点,我们首先需要了解一些核心概念。

比特币中的交易如何工作?

在我们继续之前,一个巨大的喊出教授唐纳德 ·J · 帕特森和他的 YouTube 频道 “djp3” 的解释。

假设爱丽丝想向 Bob 发送一定数量的比特币。 比特币中的交易系统如何工作? 比特币交易与菲亚特钱包交易非常不同。 如果爱丽丝要给 2 美元给鲍勃,她会从她的钱包里拿 2 美元,并把它交给鲍勃。 然而,事情在比特币中并不像这样工作。 你不拥有任何比特币,你拥有的就是你拥有比特币的证据。

还有两件事你需要知道:

矿工们通过将数据放入他们已经阻止的矿山中来验证您的交易。 作为提供这项服务的回报,他们收取交易费。

当涉及到菲亚特货币,你并没有真正跟踪你如何以及从哪里得到具体的笔记。 例如, 打开你的钱包,现在拿出所有的笔记和硬币。 你能告诉你到底是从哪里得到的每一个具体的笔记和硬币? 但是,在比特币中,每一笔比特币交易的历史都会被记录下来。

好吧,现在让我们深入探讨爱丽丝和鲍勃之间的比特币交易是如何发生的。 事务有两个方面,即 “输入” 和 “输出”。 整个交易将有一个名字,我们将在最后找出。 现在,让我们来看看动态。

立即开始免费试用

免费试用

交易输入

为了使这笔交易发生,爱丽丝需要获得她从以前的各种交易中收到的比特币。 请记住,就像我们之前所说的,在比特币中,每一枚硬币都是通过交易历史记录来计算的。

因此,假设爱丽丝需要从以下交易中提取比特币,我们将命名为 TX (0)、TX (1) 和 TX (2)。 这三个交易将被加在一起,这将给你输入交易,我们将称之为 TX(输入)。

以图形方式,它看起来像这样:

What is Segwit?

所以,这是从输入端,让我们来看看输出端的样子。

交易输出

输出基本上将有一些 Bob 将拥有交易后的比特币和剩余的任何更改,然后发送回 Alice。 此更改随后成为她对所有未来交易记录的输入值。

输出端的图形表示如下所示:

What is Segwit?

现在,这是一个非常简单的事务,只有一个输出(除了变更),有多个输出可能的事务。

这是交易的基本布局看起来像。 然而,为了完成整个事情,必须满足某些条件。

交易条件

TX(输入)TX(输出)。 输入事务必须始终大于输出事务。 在任何交易中,输入和输出之间的赤字(输出 + 变化)是矿工收取的交易费。 所以:交易费 = TX(输入)—(TX(输出)+ 变化)。

在输入端:TX (0) + TX (1) + TX (2) = TX (输入)。如果爱丽丝没有必要的资金进行交易,那么矿工会简单地拒绝交易。

Bob 将不得不证明他可以提供获得比特币所需的证据。 爱丽丝将与 Bob' 的公共地址锁定交易。 他将需要出示他的私钥来解锁交易并获得他的费用。

爱丽丝还需要验证她是否有必要的权利来发送比特币摆在首位。 她这样做的方式是使用她的数字签名(也就是她的私钥)签署交易。 任何人都可以通过使用她的公钥来解码这个问题,并验证是否确实是 Alice 发送了数据。 这个证明被称为 “签名数据”。 请记住这一点,因为稍后这将是非常重要的。

那么,这整个交易的名字是什么?

输入(包括签名数据)和输出数据被加在一起并使用 SHA 256 散列算法进行哈希处理。 输出哈希是指定给此事务的名称。

交易详细信息代码

这是交易在代码形式中的样子。 假设爱丽丝想向鲍勃发送 0.0015 BTC,为了这样做,她会发送价值 0.0015770 BTC 的输入。 这是交易详细信息的样子:

What is Segwit? A Beginners Crash Course!

图片提供:jp3 YouTube 频道。

你看到的第一件事:

What is Segwit? A Beginners Crash Course!

事务的名称是输入和输出值的哈希值。

Vin_Sz 是输入数据的数量,因为 Alice 仅使用她之前的一个事务发送数据,它是 1。

Vout_Sz 是 2,因为唯一的输出是鲍勃和变化。

这是输入数据:

What is Segwit? A Beginners Crash Course!

看到输入数据了吗? Alice 只使用一个输入事务(在上面给出的例子中,这将是 TX(0)),这就是 vin_sz 为 1 的原因。

输入数据下面是她的签名数据。

在所有这些下面是输出数据:

What is Segwit? A Beginners Crash Course!

数据的第一部分表示鲍勃获得 0.0015 BTC。

第二部分意味着 0.00005120 BTC 是爱丽丝回来的变化。

现在,请记住输入数据是 0.0015770 BTC 吗? 这是大于 (0.0015 + 0.005120)。 这两个价值的赤字是矿工收取的交易费。

所以,这是一个简单的交易的解剖。

在我们继续之前,让我们讨论一个特殊的交易,称为 Coinbase 交易。 它基本上是区块上的第一个交易数据,它标志着矿工在挖掘区块时获得的采矿奖励。 截至目前,奖励是 12.5 BTC。 这些事务没有输入数据,它们只有输出数据。 请记住这一点,因为这将在稍后变得重要。

什么是可扩展性问题?

现在,请记住,区块链中发生的所有交易都在继续,因为矿工实际上挖掘这些区块,并将交易放在区块中以验证它们。 但是,只有这么多的交易,你可以放在块。 当比特币最初设想时,没有区块限制。

然而,中本聪(比特币的创始人)被迫添加限制,因为他们预见到可能的 DoS 攻击(拒绝服务攻击),黑客和巨魔可能对区块链造成的。 他们可能会用垃圾邮件事务填入块,并且他们可能会挖掘可能会不必要的大块以阻塞系统。 因此,这些块被赋予了 1 MB 的大小限制。

这在一开始是可行的,但随着它的普及程度越来越大,一些交易开始加起来。 此图显示每月发生的事务数量:

What is Segwit? A Beginners Crash Course!

正如你所看到的,每月交易的数量只是增加,并且在当前 1MB 的块大小限制下,比特币每秒只能处理 4.4 个交易。 交易庞大并占用这么多空间的最大原因之一是因为其中的签名数据(我们确实告诉您要记住这一点)。 事实是,这 65% 的交易使用的空间被签名数据占用。

随着交易数量的飞跃和界限的增加,区块填满的速度也增加了。 通常情况下,人们实际上不得不等待新的块被创建,以便他们的交易能够完成。 这造成了交易积压,事实上,让您的交易优先级的唯一方法是支付足够高的交易费用,以吸引和激励矿工优先级您的交易。

这种做法引入了 “按收费替换” 制度。 基本上,这是它的工作原理。 假设 Alice 向 Bob 发送 5 比特币,但由于积压,交易没有进行。 她不能 “删除” 交易,因为曾经花费的比特币永远不会回来。 然而,她可以与 Bob 进行另一次 5 比特币交易,但这次交易费用足以激励矿工。 当矿工把她的交易放在区块中时,它也会覆盖之前的交易,并使之无效。

虽然 “按收费替换” 系统对矿工来说是有利可图的,但对于可能不那么好的用户来说,这是非常不方便的。 事实上,如果用户支付了最低交易费用,则需要经过的等待时间图表:

What is Segwit? A Beginners Crash Course!

图片提供:商务内幕。

如果您支付尽可能低的交易费用,那么您必须等待 13 分钟的中位时间才能完成交易。

被认为可以加快交易速度的一个可能的解决方案是引入闪电网络。

什么是闪电网络?

闪电网络是一个脱链小额支付系统,旨在使交易在区块链中更快地工作。 这是由 Joseph Poon 和 Tadge Dryja 在他们的白皮书中概念的,旨在解决区块大小限制和交易延迟问题。 它运行在比特币的顶部,通常被称为 “第 2 层”。

正如 Jimmy Song 在他的媒体文章中指出的那样:

“闪电网络通过创建双重签名事务来工作。 也就是说,我们有一个新的支票,要求双方签署它是有效的。 该支票指定从一方发送到另一方的金钱。 随着一方向另一方支付新的微额付款,支票上的金额发生变化,双方签署结果。”

该网络将使爱丽丝和鲍勃能够互相交易,而不被第三部分控制,也就是矿工。 为了激活这一点,交易需要先由 Alice 和 Bob 签署,然后再将其播放到网络中。 这种双重签名对于交易完成至关重要。

然而,这里是我们面临另一个问题的地方。

由于双重检查在很大程度上依赖于事务标识符,如果由于某种原因更改了标识符,这将导致系统中出现错误,并且 Lightning Network 将无法激活。 如果您想知道交易标识符是什么,它是交易名称,也就是输入和输出交易的哈希。 在我们之前给出的例子中:

What is Segwit? A Beginners Crash Course!

这是交易标识符。

现在,您可能想知道,什么会导致交易标识符发生变化? 这给我们带来了比特币系统中一个有趣的错误,称为 “交易可延展性”。

什么是交易可延展性?

在我们理解什么是事务可延展性之前,重要的是回顾密码经济模型中最重要的函数之一... 哈希。 我们已经写了一篇文章,其中详细介绍了哈希。 只是为了给你一个简要的概述,散列函数可以接收任何长度的输入,但它给出的输出总是固定的长度。

但是,还有另一个重要的哈希函数,你需要知道来理解所谓的 “事务可延展性错误”。 输入数据中的任何小变化都会大幅改变输出哈希值。

例如, 看看我们用 SHA-256 做的这个测试,也就是比特币中使用的哈希算法:

What is Segwit? A Beginners Crash Course!

看到了吗?

我们只是将 “T” 从大写改为小写,看看它对输出的作用!

关于区块链,你需要了解的另一件事是它是不可变的,这意味着,一旦数据被插入到块中,它永远不会被改变。 虽然这证明了反腐败的安全网,但有一个弱点没有人看到。

如果数据在进入区块之前被篡改了呢? 即使人们稍后发现它,也没有任何人可以做的事情,因为一旦输入到一个块中的数据永远不会被取出! 这本质上就是为什么交易的可延展性就是这样一个问题。

现在,为什么交易可延展性发生?

事实证明,随输入数据一起的签名可以被操纵,这反过来又可以更改事务 ID。 事实上,它可以使它看起来像交易一开始就没有发生。 让我们在一个例子中看到这一点。

假设鲍勃希望爱丽丝送他 3 BTC。 Alice 发起一个 3 BTC 交易到 Bob 的公共地址,然后将其发送给矿工批准。 当事务在队列中等待时,Bob 使用事务可延展性来更改 Alice 的签名并更改事务 ID。

现在有一个机会,这个被篡改的交易将在 Alice 获得批准之前获得批准,这反过来又覆盖了 Alice 的交易。 当鲍勃得到他的 3 BTC,他可以简单地告诉爱丽丝,他没有得到她欠他的 3 BTC。 然后,爱丽丝会发现她的交易没有通过,他们会重新发送。 因此,鲍勃将最终与 6 BTC 而不是 3 BTC。

这就是交易可延展性的工作原理,这是一个严重的问题。 看看这个:

What is Segwit? A Beginners Crash Course!

图片提供:比特币杂志.

这些是 2015 年比特币可塑性攻击的统计数据。 红线大致表示网络上的变形交易

现在,记得我们刚才说的话吗? 事务可延展性发生是因为签名数据是可温和的。 所以,签名数据不仅占用了块空间,而且对交易可延展性构成了严重威胁。

解决方案和恐惧的一个硬叉

早在 2012 年,人们就在探索从交易中取出签名数据的想法。 像罗素·奥康纳,格雷戈里·麦克斯韦,卢克·达什尔和亚当·贝克博士这样的人正在研究一种方法来使这项工作,但他们都在撞墙。 他们意识到,唯一的方法是做一个硬叉,没有人愿意这样做。

但随后,在 2015 年 BLcokstream 的博士彼得·维尔提出了一个可能的解决方案。

侧链和 Segwit

侧链作为一个概念已经在比特币圈子相当长一段时间了。 这个想法是非常直接的,你有一个平行链,它与主链一起运行。 侧链将通过双向挂钩连接到主链上。

这就是 Blockstream 对比特币区块链和侧链的最初想法:

What is Segwit? A Beginners Crash Course!

图片提供:比特币杂志

Wiulle 博士的想法很简单,为什么不给这个侧链添加一个功能? 这个功能将包括所有交易的签名数据,将其与过程中的主链分开。 此功能将被称为隔离证人又名 Segwit。

这是一个块实现 segwit 后的样子:

What is Segwit? A Beginners Crash Course!

所以通过从交易中删除签名数据,它用一块石头杀死了两只鸟,块空间变得更空,交易变得可延展。 然而,还有一件事需要处理。 Segwit 激活只能通过 hardfork,这是每个人都想避免的。 开发人员希望看看软叉替代品。 那是卢克·达什尔打黄金的时候

Segwit 作为一个软叉

为了利用 segwit 作为软叉子,开发人员必须拿出 2 个巧妙的创新。 它们如下:

以 Merkle 树的形式排列在侧链中的签名数据。

将部分签名数据保存在块的新部分中。

在我们继续之前, 让我们做默克尔树的简短复习.

什么是默克尔树?

What is Segwit? A Beginners Crash Course!

图片提供:维基百科

上图显示了默克尔树的样子。 在 Merkle 树中,每个非叶节点都是其子节点值的哈希值。

叶节点:叶节点是树的最低层中的节点。 因此,根据上图,叶节点将是 L1,L2,L3 和 L4。

What is Segwit? A Beginners Crash Course!

子节点:对于某个节点,其层下面的节点是其子节点。 在图中,标记为 “哈希 0-0” 和 “哈希 0-1” 的节点是标记为 “哈希 0” 的节点的子节点。

根节点:标记为 “顶部哈希” 的最高层上的单个节点是根节点,也就是 Merkle 根节点。

What is Segwit? A Beginners Crash Course!

块内的所有事务都以 Merkle 树的形式排列,所有这些数据的 Merkle 根都保留在块内。 所有事务都可以通过遍历 Merkle 根来访问。

(如果您想详细解释 Merkle Trees 及其在区块链中的应用,请查看我们关于 “哈希” 的文章)。

那么,segwit 开发人员建议的是,为什么不运行另一个 Merkle 树,而只使用签名数据? 这是第一次创新。

第二项创新是了解签名数据的 Merkle 根的确切位置。 开发人员知道,为了激活 segwit 软叉,需要将签名根放在块中。 他们选择的现货是硬币基交易现货。 现在请记住,我们之前谈到过这个,coinbase 交易是在一个区块中进行的第一个交易,这基本上是给矿工提供奖励并且没有任何输入值的交易。

开发人员没有意识到的是通过这样做,他们在不知不觉中绊倒了一些会产生更广泛影响的东西。

通过将签名 merkle 放在块中的一个新位置,它们越来越多地成为块大小... 而没有实际增加块大小限制首先! 所以基本上 segwit 实现的是,他们增加了块大小,并使整个过渡向后兼容又名一个软叉子! 这是一个重大突破,给了比特币网络一个临时解决他们的扩展问题。

香港可扩展性公约与批评者

在 2015 年香港会议上,维乐博士介绍了 Segwit 的建议,该建议在很大程度上受到好评。 这应该是每个人都在寻找的答案。 人们希望每个人都能跳上船上,但它并没有这样做。 一些矿工有一个很大的问题与 Segwit。

当开发人员构建 SegWit 时,他们添加了一个特殊的条款。 只有当它获得矿工 95% 的批准时,它才能被激活。 毕竟,这是一个巨大的改变系统,他们认为获得超级多数是要走的路。 但是,这导致系统中断。 一些矿工不希望 Segwit 激活。 他们担心,由于可用的块空间将增加,因此会有更多的空间可用于交易,这将减少等待时间。

这反过来又会减少交易费用,并取消作为主要收入方式(除了整块奖励之外)的 “按收费替换” 制度。 因此,segwit 的实施停滞不前。 这反过来又激怒了用户。 在区块链的背景下,用户是在区块链网络中运行节点的人。 他们意识到,需要做些什么来鼓励矿工挖掘 segwit 激活块。

与矿工一起,还有一些开发人员对 segwit 解决方案不满意。 在他们眼中,临时解决方案还不够好,需要更长久的东西,比如增加块大小。 其中一个比特币客户提供块大小增加名为 “比特币无限”,获得了很多支持。 DCG 的首席执行官巴里·西尔伯特认为,比特币社区是在一个很大的动荡,如果不解决,可能会导致很多的紧张局势在未来。 他呼吁大家在纽约举行休战会议 这次会议的成果是所谓的 “纽约协定”.

纽约协定

2017 年 5 月 21 日,比特币社区的著名成员在纽约举行会议。 经过大量的讨论,亲小组和赞成大规模增加阵营之间达成了妥协。 会议的结果通常被称为 “纽约协定” 或 Segwit2x。 这基本上是一个 2 阶段的协议。

阶段 1:Segwit 启动并运行。 需要同意才能启动和运行的矿工百分比从 95% 下降到 80%。 发布软叉子,任何挖掘不是 segwit 友好的块的矿工将自动从区块链中被拒绝。 对此表示支持的矿工开始包括字母 “NYA” 在他们的块。

阶段 2:Segwit 激活后 6 个月,区块链将进行硬分叉,区块大小将从 1 MB 增加到 2 MB。

What is Segwit? A Beginners Crash Course!

图片提供:DCG 文章中。

《纽约协定》的后果

有一些非常声音的批评者的 segwit2x。 事实上,这导致了一系列事件,最终产生了比特币现金。 然而,社区中的许多成员决定,这是比特币的最佳途径。 每个人都对即将到来的 segwit 激活感到非常兴奋,这将是 7 月中旬左右。 但随后发生了一些事情,因为很多并发症,矿工错过了窗户!

Segwit 没有被激活的时候,它应该有,这引起了普遍的恐慌,因为它认为这会分裂比特币核心社区甚至更多。 这将 BTC 的价格从 2500 美元一直下降到 1900 美元... 这是一个多月来的最低点。 这种价格下跌使矿业界吃惊,并使它们付诸行动。 到 7 月 20 日,代码激活的第一阶段,BIP 91 激活被锁定。 到 8 月 8 日,没有回报的点已经达到,最后,8 月 24 日,Segwit 被激活。 让我们来看看 Segwit 对此有什么说:

What is Segwit? A Beginners Crash Course!

图片提供:赛格威特科技

的优点和缺点的 Segwit

Segwit 的优点:

增加块可以接受的事务数量。

降低交易费用。

减少每个单独事务的大小。

现在可以更快地确认交易,因为等待时间会减少。

有助于比特币的可扩展性。

由于每个区块的交易数量将增加,因此可能会增加矿工可能收取的总费用。

删除事务可延展性。

帮助激活闪电协议。

消除二次哈希问题:二次哈希是随着块大小增加而产生的问题。 问题是,在某些事务中,签名哈希交叉缩放:

图片提供:比特币

基本上,一个块中的交易量加倍会增加一倍,这反过来又会增加每个交易中的签名数据量的两倍。 这将使交易变得更加庞大,并使交易时间大幅度增加。 这为可能想要垃圾邮件区块链的恶意方打开了大门。

Segwit 通过更改签名哈希的计算来解决这个问题,从而使整个过程更有效。

Segwit 的缺点:

矿工现在将获得更低的交易费用,每笔交易。

实施是复杂的,所有的钱包都需要实现 segwit 自己。 有一个很大的机会,他们可能没有得到它的正确的第一次。

这将显著增加资源的使用,因为容量,交易,带宽一切都会增加。

正如比特币现金的创建所示,它最终分裂了比特币核心社区。

Segwit 的另一个问题是维护。 包含签名数据的侧链也需要由矿工维护。 然而,与主要的区块链不同,矿工没有经济利益,它需要无偿进行,或者需要考虑一些奖励计划来激励矿工。

展望未来

自从中本聪首次发布比特币白皮书以来,接下来的几个月可能是比特币历史上最重要和最激动人心的时刻。 让我们来看看未来潜在的各方。

比特币核心

BTC 已经从强度增长到强度后 SegWit 激活:

What is Segwit? A Beginners Crash Course!

图片提供:办公桌

2017 年 9 月 2 日,BTC 创下 5000 美元的历史新高,然后迅速重新调整至 4690 美元。 BTC 最终扩大了 5000 美元的山区,没有理由为什么这不能成为新的规范。

比特币现金

比特币现金提供了一个非常有趣的案例研究和一个非常强大的选择,任何希望多样化他们的加密组合。 没有人可以说未来会发生什么,但有一点是肯定的,它有潜力成为一个长期的 BTC 替代品。

What is Segwit? A Beginners Crash Course!

Like what you read? Give us one like or share it to your friends and get +16

222
Hungry for knowledge?
New guides and courses each week
Looking to invest?
Market data, analysis, and reports
Just curious?
A community of blockchain experts to help

Get started today and earn 128 bonus blocks

Already have an account? Sign In