更新时间:2025-12-02 20:57:01 编辑:丁丁小编
来源:点击查看
简介
什么是计算密度?BCH协议修改提案中的新概念
最近在研究 BCH 协议修改提案 bch-vm-limits 时,我发现了一个叫做“计算密度”的新概念。这东西在其他的 UTXO 链上还真没见过,引起了我的好奇心,于是我做了点功课,今天就来跟大家聊聊这个“计算密度”到底是个啥。
为啥要有“计算密度”?
我们都知道,比特币 (BTC) 有区块大小限制(1M 交易区块体 + 3M 签名区块),而且每笔交易的大小、opcode 数量也有限制。以太坊 (ETH) 呢,单个区块也有 gas limits 上限。熟悉 EOS 的朋友肯定知道,EOS 有 cpu、RAM 和 Net 这三个资源,发交易需要消耗这些资源。
这些限制的存在,都是为了保障区块链网络的安全,防止恶意交易攻击网络。
这里不得不提一个经典的案例:2018 年 Fom3D 最终大奖的领取过程中,攻击者构造了一笔特别的合约交易,把区块里的 gas limits 全部消耗掉,导致其他用户的交易无法被打包,只能打包黑客自己的交易,最终黑客拿走了 10469 ETH 的大奖。
三种经典设计:BTC、ETH 和 EOS
在防止区块链网络被恶意攻击方面,BTC 的区块大小和交易大小限制、ETH 的区块 gas limits 限制,以及 EOS 的 CPU、RAM 和 Net 资源限制,是三种经典的设计。
- BTC 的设计最原始,也最安全,久经考验。BCH 从诞生至今,也延续了这种设计,只是在具体参数上有所调整。
- ETH 的 gas limits 设计应该是最成功的,现在已经成为行业标准。
- EOS 的设计到现在为止,应该说是一个失败的设计,RAM 等资源没有实现设计理念,反而成了一种炒作的代币。
安全性与可编程性:一个艰难的平衡
在衡量安全性和可编程性上,gas limits 的设计在可编程性上达到了极致,在 EVM 上实现了图灵完备,这是以太坊诞生繁荣经济生态的关键因素。
BTC 等 UTXO 的生态则明显受困于可编程性,特别是交易的 opcode 数量限制,这限制了编程的自由度。但很明显,BTC 这种区块大小和交易大小的限制,为比特币的去中心化和安全性提供了保障。比特币网络从未出现过被 DDOS 而产生大问题的情况,当“恶意的”海量交易或复杂的合约交易(P2SH)涌进 memepool 时,唯一需要做的就是等待区块慢慢打包,不会产生额外的问题。
UTXO 技术,如果想提高可编程性,很可能会导致额外的安全性问题。
BCH 的“计算密度”:新的尝试
BCH 的计算密度这个新概念,就是想平衡 UTXO 的可编程性和安全性,试图在保证 BCH 网络安全性的前提下,大大提高 UTXO 的可编程性。
简单来说,计算密度就是根据每个输入数据的字节长度,限制该输入能够执行的计算操作。也就是说,交易中每个输入会根据其大小(字节数)分配一定的计算预算,这个预算决定了节点在验证该交易时可以进行的最大计算量。
Bch-vm-limits 协议里提供了计算公式,但说实话,我没看懂。我只知道这个计算量主要是指哈希计算。这个太细节了,涉及到 BCH 交易的构造和验证,我暂时就先不深入研究了。
和 gas limit 将计算和 gas 费直接挂钩不同,计算密度并不改变 BCH 交易的矿工费设计,矿工费还是按一直以来的 sats/byte 来计算。
Gas limit 的设计相当于只要你出钱(出 gas 费),你就可以设计任意复杂的合约,前提就是不要触及单个区块的 gas limit 上限。现在单个区块的 gas limit 是 3000 万 gas,如果 gas price 是 10 gwei,消费光 3000 万 gas limit 需要 0.3 ETH。3000 万 gas 是一个非常大的量,可以设计出非常非常复杂的合约。
BCH 的计算密度,是约束单位交易大小的可计算量,我估计能设计出来的合约复杂程度肯定是远小于 gas limit 的设计,但远高于 BTC 和 BCH 当初的限制交易大小和 opcode 数量,文档描述是增强了 100 倍。
协议的设计者 Jason Dreyzehner 在文档里对计算密度的好处写了很多,对比 gas limit,各种夸。我希望这些优点能在真实的生产环境中得到验证。
在实际的应用场景上,开发者们写得更夸张,涉及到了量子密码学、零知识证明、同态加密等加密数字货币技术领域的顶尖场景。但现在肯定无法辨别真伪了。
总的来说,我觉得 BCH 的开发者还是挺有创新能力的,包括像 2023 年激活的 cashtoken,以及今年要搞的计算密度,我都是在整个币圈第一次见到的技术。至于这些技术最终能否成功,还有待时间的检验。
