可扩展性通常指的是系统能够增长以适应不断增加的需求的能力。在计算领域,你可以通过升级硬件来提升机器的性能,使其更快地执行某些任务。当我们谈到区块链的可扩展性时,我们指的是增加其处理更多交易的能力。
像比特币这样的协议有很多优势,但可扩展性并不是其中之一。如果比特币运行在一个中心拥有的数据库中,管理员可以相对容易地提高速度和吞吐量。但比特币的价值主张(如抗审查性)要求许多参与者同步区块链的副本。
运行比特币节点相对便宜,甚至简单的设备也可以做到。但由于成千上万的节点需要彼此保持同步,它们的容量存在一定的限制。
对链上可以处理的交易数量设定了上限,以防止数据库增长到难以管理的规模。如果数据库增长得太快,节点将无法跟上。此外,如果区块太大,它们就无法在网络中快速传递。
因此,我们发现自己面临着某种瓶颈。区块链可以被视为一列按固定时间间隔出发的火车。每个车厢的座位有限,乘客必须竞价才能保证获得一个座位。如果每个人都在同一时间试图上车,票价就会很高。同样,网络上堆积的待处理交易会要求用户支付更高的费用,以确保他们的交易及时被纳入区块链。
一种解决方案是扩大车厢。这将意味着更多的座位,更高的吞吐量和更便宜的票价。但没有保证座位不会像以前一样迅速填满。车厢不能无限扩大,就像区块或区块的gas限制不能无限扩展一样。后者会使节点在网络上保持同步的成本更高,因为它们需要更昂贵的硬件来保持同步。
以太坊创始人Vitalik Buterin提出了可扩展性三难困境来描述区块链面临的挑战。他认为协议必须在可扩展性、安全性和去中心化之间做出权衡。这些属性在某种程度上是相互矛盾的——过度关注其中两个属性,第三个属性就会变差。
因此,许多人认为可扩展性应该在链外实现,而安全性和去中心化应该在区块链本身最大化。
链外扩展指的是允许交易在不增加区块链负担的情况下执行的方法。连接到链的协议允许用户发送和接收资金,而这些交易不会出现在主链上。我们将深入探讨这方面的两个最显著的进展:侧链和支付通道。
侧链是一个独立的区块链。然而,它并不是一个独立的平台,因为它以某种方式与主链挂钩。主链和侧链是可互操作的,这意味着资产可以在这两者之间自由流动。
确保资金可以跨链转移的方法有很多。在某些情况下,资产通过存入一个特殊地址从主链转移。它们并不是真正被发送——而是被锁定在该地址中,并且在侧链上发行相应的金额。更直接(尽管是中心化的选项)是将资金发送给一个托管人,托管人会用侧链上的资金交换存款。
假设我们的朋友Alice有五个比特币。她想用它们换取五个等值的比特币侧链单位——我们称之为侧币。所讨论的侧链使用双向挂钩,这意味着用户可以将他们的资产从主链转移到侧链,反之亦然。
请记住,侧链是一个独立的区块链。因此,它将有不同的区块、节点和验证机制。为了获得她的侧币,Alice会将她的五个比特币发送到另一个地址。这个地址可能由某人拥有,一旦收到比特币,他们就会将五个侧币记入Alice的侧链地址。或者,它可能有一些信任最小化的设置,在软件检测到支付后自动记入侧币。
Alice现在已经将她的币转换为侧币,但她可以随时逆转这个过程以取回她的比特币。现在她已经进入了侧链,她可以在这个独立的区块链上自由交易。她可以发送侧币或从其他人那里接收侧币,就像她在主链上做的那样。
例如,她可以支付Bob一个侧币来购买一件Binance连帽衫。当她想回到比特币时,她可以将剩余的四个侧币发送到一个特殊地址。交易确认后,四个比特币将被解锁并发送到她在主链上控制的地址。
你可能会想这有什么意义。为什么Alice不直接使用比特币区块链?
答案是侧链可能能够做比特币做不到的事情。区块链是经过精心设计的权衡系统。虽然比特币是最安全和最去中心化的加密货币,但在吞吐量方面并不是最好的。虽然比特币交易比传统方法快,但与其他区块链系统相比仍然相对较慢。区块每十分钟开采一次,当网络拥堵时,费用可能会显著增加。
诚然,对于小额日常支付,可能不需要这种级别的安全性。如果Alice在买咖啡时,她不会站在那里等待交易确认。她会堵塞队伍,等到咖啡递过来时她的饮料已经冷了。
侧链不受同样的规则约束。事实上,它们甚至不需要使用工作证明来运作。你可以使用任何共识机制,信任单一验证者,或者调整任何数量的参数。你可以添加主链上不存在的升级,生成更大的区块,并强制快速结算。
有趣的是,侧链甚至可以有关键的错误而不会影响底层链。这使它们可以作为实验平台,并推出否则需要网络大多数人共识的功能。
只要用户对权衡感到满意,侧链可能是实现有效扩展的重要一步。主链节点不需要存储来自侧链的每一笔交易。Alice可以用一笔比特币交易进入侧链,执行数百笔侧币交易,然后退出侧链。就比特币区块链而言,她只执行了两次——一次进入,一次退出。
以太坊的Plasma与此类似,但有一些主要区别。了解更多:什么是以太坊Plasma?
支付通道在可扩展性方面与侧链有相同的目的,但它们在根本上非常不同。像侧链一样,它们将交易推离主链,以防止区块链膨胀。然而,与侧链不同的是,它们不需要一个独立的区块链来运作。
支付通道使用智能合约,使用户能够在不将交易发布到区块链的情况下进行交易。它通过使用软件强制执行的两方之间的协议来实现这一点。
在像流行闪电网络这样的模型中,两个参与方首先将币存入他们共同拥有的地址。这是一个多重签名地址,需要两个签名才能花费资金。因此,如果Alice和Bob创建了这样一个地址,只有在他们两人都同意的情况下才能移动资金。
假设他们各自存入10个BTC,现在这个地址持有20个BTC。他们可以很容易地保持一个起始显示Alice和Bob各有10个BTC的余额表。如果Alice想给Bob一个币,他们可以更新余额表为Alice有9个BTC,Bob有11个BTC。他们在继续更新这些余额时,不需要将交易发布到区块链上。
然而,当时间到来时,假设Alice有5个BTC,Bob有15个BTC。他们可以创建一个将这些余额发送到双方拥有的地址的交易,签署并广播它。
Alice和Bob可能在他们的余额表上记录了十次、一百次或一千次交易。但就区块链而言,他们只执行了两次链上操作:一次是初始资金交易,一次是在完成时重新分配余额。除了这两次之外,所有其他交易都是免费且几乎即时的,因为它们发生在链外。没有矿工费需要支付,也没有区块确认需要等待。
当然,上述例子需要双方合作,这对于陌生人来说并不是理想的情况。然而,可以使用特殊机制来惩罚任何试图作弊的行为,因此双方可以安全地互动而无需信任。
显然,支付通道对于预期有大量交易的两方来说是方便的。但它变得更好。这些通道的网络可以被扩展,这意味着Alice可以支付她没有直接连接的另一方。如果Bob与Carol开通了一个通道,Alice可以支付她,只要有足够的容量。她会将资金推到Bob的通道一侧,Bob反过来会将资金推到Carol的。如果Carol与另一个参与者Dan连接,可以做同样的事情。
这样的网络演变成一个分布式拓扑,每个人都连接到多个对等方。通常会有多条到达目的地的路线,用户可以选择最有效的一条。
我们讨论了两种允许在不增加底层区块链负担的情况下进行交易的可扩展性方法。侧链和支付通道技术尚未成熟,但越来越多的用户正在利用它们来规避基础层交易的缺点。
随着时间的推移和更多用户加入网络,保持去中心化非常重要。这只能通过对区块链的增长设限来实现,以便新节点可以轻松加入。链外可扩展性解决方案的支持者认为,随着时间的推移,主链将仅用于结算高价值交易,或用于进出侧链的挂钩和开通/关闭通道。