topics 加密貨幣Current Page

比特币区块链性能和可扩展性

中級
加密貨幣
比特幣
2021年4月9日
閱讀時間 17 分鐘

AI 概要

展开

详细概要

比特币是一种去中心化电子现金系统,无需通过中间人即可实现点对点支付。原版比特币软件由 Satoshi Nakamoto 开发,于 2009 年在 MIT 许可下发布,遵循比特币白皮书:点对点电子现金系统。比特币是分布式加密货币的首次成功实现。比特币诞生十年后,截至 2019 年 12 月,比特币流通量约为 1,800 万枚,市值已达到 1,320 亿枚。

在比特币中,交易是指在付款人和收款人之间转移比特币所有权的输入和输出集合。输入指示支付将从哪个或哪些代币中提取。输入中的代币必须无用,这意味着它们尚未用于支付他人。

收益提供支付方同意支付给收款人的可支出比特币金额。完成交易后,输出将变为收款人的未用金额;在当前收款人使用代币向他人付款之前,输出将保持未用金额。

例如,当 Alice 需要向 Bob 支付 10 BTC 时,Alice 会打开她的比特币钱包,扫描或复制 Bob 的交易地址,然后创建一笔向 Bob 支付 10 BTC 的交易。完成数字签名并提交后,交易将发送至比特币区块链网络:

交易广播到比特币网络后,簿记者节点通常是一个 P2P 网络中接收交易的全节点,将根据比特币协议规则对其进行验证。如果交易有效,簿记员会将交易添加到交易池中,并将交易转发给网络中的同事。在比特币网络中,每 10 分钟就会有一个名为“挖矿节点”或挖矿节点的网络节点子集,从交易池中收集所有有效交易并创建候选区块。他们还为自己创建了 Coinbase 交易,以获得奖励并收取手续费。如果他们赢得了挖矿比赛并将区块添加到链中,则所有节点都将验证新区块并将其添加到自己的区块链副本中。神奇的是,Bob 能够看到 Alice 的付款和钱包中的 10 BTC。

比特币网络的一个主要问题是可扩展性。根据设计,每笔交易都必须经过所有节点的验证,创建区块大小限制在 1 MB 的新区块平均需要 10 分钟。区块大小和频率限制进一步限制了网络的吞吐量。因此,比特币区块平均能够容纳约 2700 笔交易。

如今的支付系统,VISA 平均每秒可处理约 2,000 次交易 (tps),每日峰值率约为 4,000 tps。2014 年底,Paypal 平均处理量达到 115 tps,每天交易量约为 1,000 万笔。

显然,目前在比特币网络上实现类似 Visa 的容量是不可行的。为实现网络更高的性能和可扩展性,需要提高网络的交易处理限制,并为比特币网络增强软件。

区块链的可扩展性是三元一元一元一元一元一元一元一元一元一元一元一元一元一元一元一元一元一元一元一元二元一元一元一元一元一元一元一元一元一元一元一元一元一元一元一元一元一元一元一元一元一元一元一元 Trilemma声称,在区块链系统中实现所有三种属性几乎是不可能的。

下图显示了区块链的可扩展性 Trilemma:

可扩展性的关键挑战在于找到一种方法,在基层实现全部三个目标。比特币的设计选择有利于去中心化和安全性,同时牺牲可扩展性。

比特币扩展解决方案

比特币可扩展性解决方案提案众多,可进一步分为链上扩展和链下扩展。

链上扩展

链上解决方案有时也称为第 1 层解决方案,旨在寻找解决方案来解决比特币区块链网络底层的可扩展性和性能问题。在链上扩展中,它指的是网络延迟的解决方案。Segwit 提供了一种在区块链中处理更多交易的方式,例如在 1MB 区块中处理更多交易。或者只需提高区块大小,就像比特币现金一样。

Segwit

Segwit 是比特币改进提案编号 BIP14,是独立见证人的简称,这意味着交易的数字签名将分开。2015 年 12 月,开发者 Pieter Wiulle 在规模化比特币大会上首次推出。SegWit 旨在防止非故意比特币交易延展性,实现可选的数据传输,并规避某些协议限制。

比特币交易由以下三方面组成:交易输入、交易输出和带数字签名的金额。

交易输入是发送者的比特币地址。

交易输出是比特币接收地址。

金额是指使用数字签名发送的比特币数量,用于验证发送方是否有资格发送代币。

如果数字签名发生变化,交易标识符将发生变化。事实证明,比特币的代码允许在交易仍未确认时更改数字签名。将交易添加到网络后,包括签名在内的交易将不可变。签名更改的执行方式是,如果您对其运行数学检查,则网络仍然有效。但是,当您在哈希算法上运行哈希算法时,结果会有所不同。

下面我们来看一个例子

输入:

上一交易日期:p9k5ee39a430901c91a5917b9f2dc19d6d1a0e9cea205b009ca73dd04470b9a6

指数:0

scriptSig: 304502206e21798a42fae0e854281abd38bacd1aeed3ee3738d9e1446618c4571d10

90db022100e2ac980643b0b82c0e88ffdfec6b64e3e6ba35e7ba5fdd7d5d6cc8d25c6b241501

输出:

价值:2000000000

脚本PubKey:OP_DUP OP_HASH160 201371705fa9bd789a2fcd52d2c580b65d35549d

OP_EQUALVERIFY OP_CHECKSIG

本次交易中的输入从交易 p9k5e 的输出 #0 中导入 20 BTC...然后,输出将 20 BTC 发送到比特币地址(此处以十六进制表示...而不是普通基数58)。当收款方想要花这笔钱时,他将在自己的交易输入中引用这笔交易的收益 #0。

• 先前交易 — 地址 A 的先前交易标识符;

• Index — 输入编号(此处只有一个输入编号 0);

• scriptSig — 验证脚本的第一部分(包含交易签名);

• 价值 — 发送 satoshi 的比特币数量(一个比特币 = 1 亿 satoshi) — 示例中 20 个比特币;

• scriptPubKey — 验证脚本的第二部分,其中还包含接收方地址 B。

要验证用户能否花费上一次交易的金额,需要检查新交易的 scriptSig 与上一次交易的 scriptPubKey 的组合,确保结果真实有效。ScriptPubKey 只需检查公钥的等同性和签名的有效性 – OP_CHECKSIG

在比特币交易中,txid 是所有交易数据字段的 sha256d 哈希值。txid 的价值取决于 scriptSig。

在挖矿节点流程交易期间,节点可以对 scriptSig 进行修改,表明签名将保持有效,交易将具有相同的效果,但 txid 将发生变化。

例如,可以添加 OP_NOP 操作(不做任何操作)。或者,为了更复杂,您可以添加两项操作:OP_DUP OP_DROP(第一个是复制堆栈上的签名,第二个则再次删除)。签名仍然有效,但 txid 会发生变化。

签名值等另一个示例是“3”,但我们可以将其更改为“03”或“3+7-7”。在数学上,它仍然是具有有效签名的交易价值,但哈希结果有所不同,因为哈希结果取决于您如何写入价值,而不是价值本身。

现有交易的可模拟交易 ID 可能存在问题,原因如下:

如果您想在比特币网络的基础上构建第二层解决方案,例如网络,您需要确保没有人能够更改第一层,因为它会进行中继。

如果您正在支出或接受未确认资金,修改 txid 可能会导致问题。

SegWit 如何解决问题:

在 SegWit 中,所有可延展信息与交易分开,形成单独的“证人数据”。计算 txid 时,不会包含此可延展信息,在这种情况下,标识符永远无法更改,问题将得到解决。下面是一个 Segwit 交易输出示例:

指数 0

详情

输出

地址

35SegwitPieWKVHieXd97mnurNi8o6CM73

价值

1.00200000 BTC

Pkscript

OP_HASH160

2928f43af18d2d60e8a843540d8086b305341339

OP_等值

Sigscript

0014a4b4ca48de0b3fffc15404a1acdc8dbaae226955

见证人

30450221008604ef8f6d8afa892dee0f31259b6ce02dd70c545cfcfed8148179971876c54a022076d771d6e91bed212783c9b06e0de600fab2d518fad6f15a2b191d7fbd262a3e01

039d25ab79f41f75ceaf882411fd41fa670a4c672c23ffaf0e361a969cde0692e8

我们可以看到有证人信息,数据包括所有可延展信息。Sigscript 的哈希信息与前一示例相比要少得多,无需进行 Segwit 交易。这也意味着,通过从原始部分移除证人数据并将其作为单独的结构附加到最后,可以减少比特币交易规模并提高交易速度。

以下是 Segwit 的一些优势:

节点性能 – 交易规模减小,比特币网络拥挤程度降低,使节点能够更快地验证区块或交易。

交易可延展性 – 正如 Segwit 所讨论的,签名从交易数据移至见证数据区块。交易 ID (txid) 不可更改,可保护交易数据免受黑客攻击。

特征哈希操作的线性扩展 – 通过减小交易规模,我们可以批量添加特定交易的更多交易数据。Segwit 将交易签名与交易数据区分开来,因此交易的每个字节只需哈希处理不超过两次。

提高多签名交易的安全性 – SegWit 提供两种不同的脚本:一种是公钥,另一种是将付款定向到脚本哈希值。通过结合这些脚本,Segwit 支持多签名交易,从而提高安全性。

SegWit是比特币开发第二层协议的理想选择,例如其闪电网络。SegWit 激活还推动了其他功能的开发工作,例如 MAST(支持更复杂的比特币智能合约)、Schnorr 签名(支持再次提升交易容量)和 TumbleBit(匿名顶层网络)。

保护闪电网络 – Lightning Network 微型支付渠道依靠双签名交易锁定初始充值。为开始支付闪电网络,双方的资金将发送至一个双签名地址。为防止作弊,在实际将任何资金汇入之前,交易应进行双重签名。双方需要同步,才能从主区块链收集交易输出。这一必填交易 ID 不可更改,SegWit 将在此进行拯救。

理论上,SegWit可以将比特币的吞吐量翻倍,达到约6 TPS。虽然比特币网络的改进非常重要,但对于将比特币用作支付系统的主流应用而言,交易吞吐量理论上翻倍仍然太低。

区块大小

提高比特币链上可扩展性的另一个建议是增加区块大小。这个想法非常简单:将区块大小从今天的 1 MB 增加到 8 MB 将使交易吞吐量增加 8 倍。部分比特币,如比特币现金。BCH 区块最初为 8MB,目前 BCH 区块为 32MB。这类似于垂直扩展方法,可在一个区块中添加更多交易。然而,增加区块大小意味着区块链可能要大很多倍,这需要更好的计算能力才能处理大型区块。与此同时,由于有效诚实哈希能力的降低,这将在一定程度上降低网络的安全性。这也可能导致网络集中在几只富豪手中,因此最终可能会损害区块链的主要原则去中心化和安全性。

一是安全问题。人们普遍认为,如果更多网络节点参与区块链中的交易处理,网络就会更加安全。随着altcoin链的广泛分布,任何给定区块链上的节点操作量都会减少。这可能会降低区块链的安全性,因为较小的altcoin网络可能更容易受到网络攻击。假设大型网络上约有 10,000 个节点,至少需要 5,001 个节点(或称为 51%)才能在网络上发起攻击。如果我们将 10,000 个节点划分为 50 个较小的链,则每个链由 200 个节点组成,只需 101 个节点即可删除任何较小的链,这就是所谓的 1% 攻击问题。另一个问题是跨链整合。尽管有一些跨区块链整合解决方案,但整合小链和另类币的整体复杂性将大幅增加。

Segwit2x是2017年区块规模辩论的妥协方案。建议第一步激活 Segwit,之后区块大小将增加至 2mb。大多数比特币网络不接受这一提议。

链外解决方案

与链上解决方案的基本原理类似,比特币社区也在积极寻找链下解决方案,有时也称为第 2 层解决方案。在链外扩展中,解决方案是在比特币区块链的基础上构建额外的层,并与两名参与者一起处理各种交易。然后,这些交易可以分批进行,并在区块链上作为一项交易发送。其中一种链外解决方案称为 Lighting 网络。

照明网络

2016 年 1 月,白皮书 - 比特币闪电网络:可扩展链外即时支付由 Joseph Poon 和 Thaddeus Dryja 提交。此处介绍了闪电网络的轮廓。

Lightning 是一个去中心化网络,在区块链中使用智能合约功能,可在参与者网络中实现即时支付。

Lightning Network 是一种“Layer 2”支付解决方案,可扩展区块链,使大多数交易保持链外,实现无信任的即时支付。 它建立了一个所谓的支付渠道网络,其中双方进行交易并相互支付。该过程是即时的,交易不需要由比特币网络的每个节点进行验证、中继和存储,而只能在两个参与者之间进行。 

通过将支付移出链,在该渠道的支付量中,维持渠道的成本会降低,从而实现小额支付和小额交易,否则链上交易费用太贵而无法证明合理性。此外,Lightning Network 还通过现代数据处理和延迟限制来扩展链外交易吞吐量,使支付处理速度非常快。

让我们来了解一下闪电网络的运作方式。

最初,Alice 持有 A1 承诺交易,Bob 持有 B1 承诺交易。

A1 的撤销密钥 KA1 仅归 Alice 所有;

B1 的撤销密钥 KB1 仅归 Bob 所有。

假设 Alice 和 Bob 的账户中各有 10 BTC。Alice 希望向 Bob 发送 2 BTC。

Alice 和 Bob 均存入等额资金,例如 10 BTC,每人都会锁定资金。 将等额资金存入公共邮箱的行为以“支付渠道”的形式记录在区块链上,此后两人之间将开放支付渠道。

Alice 创建了新的 Bob 交易 B2,其中 Alice 分配了 8BTC,Bob 分配了 12 BTC。

Alice 签署 B2 并发送给 Bob。

Bob 收到 B2,签名并保存。

Bob 创建了 Alice 的新交易 A2,其中 Alice 分配了 8 BTC,Bob 分配了 12 BTC。

Bob 签署 A2 并发送给 Alice。

Alice 收到 A2,签名并保存。

Alice 提供 KA1,使 A1 失效,然后可以删除 A1。

Bob 提供 KB1,导致 B1 失效,然后可以删除 B1。

总而言之,支付渠道正在为双方创建资金池组合,然后以商定的方式转移资金池所有权的承诺。

当 Alice 或 Bob 想要关闭频道时,他们可以关闭频道。关闭一个渠道意味着双方将自己的资金收回。开箱发生在区块链上,由谁持有的盒子数量将永远记录下来。

照明网络使用哈希限时合约 (HTLC) 是一类使用哈希锁和时锁的付款,要求付款接收方在截止日期前通过生成付款的加密证明来确认收到付款,或丧失申领付款的能力,并将其返还给付款方。

它允许在没有直接渠道的各方之间发送交易,方法是通过多个跃点进行路由,因此连接到闪电网络的任何人都是单一互联全球金融体系的一部分。

下面我们来看一个例子:

Alice 希望向 Tim 付款,但她与 Tim 没有支付渠道。 Alice 与 Bob 建立了支付渠道,Bob 与 Tim 建立了支付渠道,Alice 如何向 Tim 支付?

为此,Tim 必须创建加密密钥字符串(密钥),然后使用 SHA-256 等哈希函数对其进行哈希处理,然后发送给 Alice。 Tim 还与大家分享了 Hash:Bob。为了简化此书面插图,我们将价值表示为 V。

HTLC

哈希 V 是锁,密钥是解锁 HTLC 的代码。

Alice 与 Bob 创建了哈希限时合约 (HTLC),并告诉 Bob 如果您能在 3 天内生成 V 的前像,我会向您付款。Alice 签署了一笔交易,锁定时间为广播后 3 天。Bob 可以在了解 V 的情况下进行赎回,之后只能由 Alice 赎回。HTLC 允许 Alice 向 Bob 做出有条件的承诺,同时确保如果 Bob 不知道什么是 V,她的资金不会被意外烧毁。

Bob 也这样做,如果 Tim 能在 2 天内生产 V,则 HTLC 将向 Tim 付款。但事实上,Tim 确实知道 V。由于 Tim 能够使用其密钥向 Bob 提取所需金额,因此 Tim 可以考虑完成 Alice 的付款。现在,他向 Bob 告知 V,这样他们也可以领取资金。

Tim 在 2 天内向 Bob 披露 Key,Tim 将获得 Bob 的报酬。

Bob 在 3 天内向 Alice 披露 Key,Bob 将获得 Alice 的报酬。

所有交易均在照明网络内进行,每个人都以机械方式获得报酬。闪电网络本质上几乎是原子性的,具有双向性,这意味着每个人都可以获得报酬,或者没有人获得报酬。

在照明网络中,在广播支付交易时,将首先对所有单笔交易进行验证,并且必须与交易记录相匹配,以避免广播虚假或错误交易。如果照明网络检测到系统中存在不良行为,则会立即被处以罚款。这样,整个网络都能确保可信度和一致性,同时避免不良行为。

与链上交易相比,使用闪电网络有以下几大优势:

快速即时交易:闪电网络交易的结算时间不到一分钟,可能会在几毫秒内完成。

小额支付:支持大量微交易。

交易吞吐量:根据协议,每秒付款次数没有基本限制。交易数量仅受每个节点的容量和速度限制。

隐私:无区块链记录。单个闪电网络支付交易的详细信息不会直接公开记录在区块链上。付款可能会通过许多顺序渠道进行,每个节点运营商都可以查看其渠道的付款,但如果这些资金不相邻,则无法查看其来源或目的地。

链上网络拥堵减少:

极低手续费:支付至中间节点的照明网络交易费用通常非常小,通常以 Millisatoshis 计算。

限制

闪电网络由两个节点之间的双向支付渠道组成,这两个节点共同创建了智能合约。如果任一方在任何时候下架通道,通道将关闭并在区块链上结算。

由于闪电网络的争议机制的性质,因此所有参与者都需要始终监控其频道并跟踪向网络广播的离线分类账的状态。“瞭望塔”的概念旨在解决这一问题。

Bybit App
Earn the smart way