① 什么是区块链扩容
普通用户能够运行节点对于区块链的去中心化至关重要
想象一下凌晨两点多,你接到了一个紧急呼叫,来自世界另一端帮你运行矿池 (质押池) 的人。从大约 14 分钟前开始,你的池子和其他几个人从链中分离了出来,而网络仍然维持着 79% 的算力。根据你的节点,多数链的区块是无效的。这时出现了余额错误:区块似乎错误地将 450 万枚额外代币分配给了一个未知地址。
一小时后,你和其他两个同样遭遇意外的小矿池参与者、一些区块浏览器和交易所方在一个聊天室中,看见有人贴出了一条推特的链接,开头写着“宣布新的链上可持续协议开发基金”。
到了早上,相关讨论广泛散布在推特以及一个不审查内容的社区论坛上。但那时 450 万枚代币中的很大一部分已经在链上转换为其他资产,并且进行了数十亿美元的 defi 交易。79%的共识节点,以及所有主要的区块链浏览器和轻钱包的端点都遵循了这条新链。也许新的开发者基金将为某些开发提供资金,或者也许所有这些都被领先的矿池、交易所及其裙带所吞并。但是无论结果如何,该基金实际上都成为了既成事实,普通用户无法反抗。
或许还有这么一部主题电影。或许会由 MolochDAO 或其他组织进行资助。
这种情形会发生在你的区块链中吗?你所在区块链社区的精英,包括矿池、区块浏览器和托管节点,可能协调得很好,他们很可能都在同一个 telegram 频道和微信群中。如果他们真的想出于利益突然对协议规则进行修改,那么他们可能具备这种能力。以太坊区块链在十小时内完全解决了共识失败,如果是只有一个客户端实现的区块链,并且只需要将代码更改部署到几十个节点,那么可以更快地协调客户端代码的更改。能够抵御这种社会性协作攻击的唯一可靠方式是“被动防御”,而这种力量来自去一个中心化的群体:用户。
想象一下,如果用户运行区块链的验证节点 (无论是直接验证还是其他间接技术),并自动拒绝违反协议规则的区块,即使超过 90% 的矿工或质押者支持这些区块,故事会如何发展。
如果每个用户都运行一个验证节点,那么攻击很快就会失败:有些矿池和交易所会进行分叉,并且在整个过程中看起来很愚蠢。但是即使只有一些用户运行验证节点,攻击者也无法大获全胜。相反,攻击会导致混乱,不同用户会看到不同的区块链版本。最坏情况下,随之而来的市场恐慌和可能持续的链分叉将大幅减少攻击者的利润。对如此旷日持久的冲突进行应对的想法本身就可以阻止大多数攻击。
Hasu 关于这一点的看法:
“我们要明确一件事,我们之所以能够抵御恶意的协议更改,是因为拥有用户验证区块链的文化,而不是因为 PoW 或 PoS。”
此外,存储大小决定了新节点能够上线并开始参与网络所需的时间。现有节点必须存储的任何数据都是新节点必须下载的数据。这个初始同步时间 (和带宽) 也是用户能够运行节点的主要障碍。在写这篇博文时,同步一个新的 geth 节点花了我大约 15 个小时。如果以太坊的使用量增加 10 倍,那么同步一个新的 geth 节点将至少需要一周时间,而且更有可能导致节点的互联网连接受到限制。这在攻击期间更为重要,当用户之前未运行节点时对攻击做出成功响应需要用户启用新节点。
交互效应
此外,这三类成本之间存在交互效应。由于数据库在内部使用树结构来存储和检索数据,因此从数据库中获取数据的成本随着数据库大小的对数而增加。事实上,因为顶级 (或前几级) 可以缓存在 RAM 中,所以磁盘访问成本与数据库大小成正比,是 RAM 中缓存数据大小的倍数。
不要从字面上理解这个图,不同的数据库以不同的方式工作,通常内存中的部分只是一个单独 (但很大) 的层 (参见 leveldb 中使用的 LSM 树)。但基本原理是一样的。
例如,如果缓存为 4 GB,并且我们假设数据库的每一层比上一层大 4 倍,那么以太坊当前的 ~64 GB 状态将需要 ~2 次访问。但是如果状态大小增加 4 倍到 ~256 GB,那么这将增加到 ~3 次访问。因此,gas 上限增加 4 倍实际上可以转化为区块验证时间增加约 6 倍。这种影响可能会更大:硬盘在已满状态下比空闲时需要花更长时间来读写。
这对以太坊来说意味着什么?
现在在以太坊区块链中,运行一个节点对许多用户来说已经是一项挑战,尽管至少使用常规硬件仍然是可能的 (我写这篇文章时刚刚在我的笔记本电脑上同步了一个节点!)。因此,我们即将遭遇瓶颈。核心开发者最关心的问题是存储大小。因此,目前在解决计算和数据瓶颈方面的巨大努力,甚至对共识算法的改变,都不太可能带来 gas limit 的大幅提升。即使解决了以太坊最大的 DoS 弱点,也只能将 gas limit 提高 20%。
对于存储大小的问题,唯一解决方案是无状态和状态逾期。无状态使得节点群能够在不维护永久存储的情况下进行验证。状态逾期会使最近未访问过的状态失活,用户需要手动提供证明来更新。这两条路径已经研究了很长时间,并且已经开始了关于无状态的概念验证实现。这两项改进相结合可以大大缓解这些担忧,并为显着提升 gas limit 开辟空间。但即使在实施无状态和状态逾期之后,gas limit 也可能只会安全地提升约 3 倍,直到其他限制开始发挥作用。
另一个可能的中期解决方案使使用 ZK-SNARKs 来验证交易。ZK-SNARKs 能够保证普通用户无需个人存储状态或是验证区块,即使他们仍然需要下载区块中的所有数据来抵御数据不可用攻击。另外,即使攻击者不能强行提交无效区块,但是如果运行一个共识节点的难度过高,依然会有协调审查攻击的风险。因此,ZK-SNARKs 不能无限地提升节点能力,但是仍然能够对其进行大幅提升 (或许是 1-2 个数量级)。一些区块链在 layer1 上探索该形式,以太坊则通过 layer2 协议 (也叫 ZK rollups) 来获益,例如 zksync, Loopring 和 Starknet。
分片之后又会如何?
分片从根本上解决了上述限制,因为它将区块链上包含的数据与单个节点需要处理和存储的数据解耦了。节点验证区块不是通过亲自下载和执行,而是使用先进的数学和密码学技术来间接验证区块。
因此,分片区块链可以安全地拥有非分片区块链无法实现的非常高水平的吞吐量。这确实需要大量的密码学技术来有效替代朴素完整验证,以拒绝无效区块,但这是可以做到的:该理论已经具备了基础,并且基于草案规范的概念验证已经在进行中。
以太坊计划采用二次方分片 (quadratic sharding),其中总可扩展性受到以下事实的限制:节点必须能够同时处理单个分片和信标链,而信标链必须为每个分片执行一些固定的管理工作。如果分片太大,节点就不能再处理单个分片,如果分片太多,节点就不能再处理信标链。这两个约束的乘积构成了上限。
可以想象,通过三次方分片甚至指数分片,我们可以走得更远。在这样的设计中,数据可用性采样肯定会变得更加复杂,但这是可以实现的。但以太坊并没有超越二次方,原因在于,从交易分片到交易分片的分片所获得的额外可扩展性收益实际上无法在其他风险程度可接受的前提下实现。
那么这些风险是什么呢?
最低用户数量
可以想象,只要有一个用户愿意参与,非分片区块链就可以运行。但分片区块链并非如此:单个节点无法处理整条链,因此需要足够的节点以共同处理区块链。如果每个节点可以处理 50 TPS,而链可以处理 10000 TPS,那么链至少需要 200 个节点才能存续。如果链在任何时候都少于 200 个节点,那可能会出现节点无法再保持同步,或者节点停止检测无效区块,或者还可能会发生许多其他坏事,具体取决于节点软件的设置。
在实践中,由于需要冗余 (包括数据可用性采样),安全的最低数量比简单的“链 TPS 除以节点 TPS”高几倍,对于上面的例子,我们将其设置位 1000 个节点。
如果分片区块链的容量增加 10 倍,则最低用户数也增加 10 倍。现在大家可能会问:为什么我们不从较低的容量开始,当用户很多时再增加,因为这是我们的实际需要,用户数量回落再降低容量?
这里有几个问题:
区块链本身无法可靠地检测到其上有多少唯一用户,因此需要某种治理来检测和设置分片数量。对容量限制的治理很容易成为分裂和冲突的根源。
如果许多用户突然同时意外掉线怎么办?
增加启动分叉所需的最低用户数量,使得防御恶意控制更加艰难。
最低用户数为 1,000,这几乎可以说是没问题的。另一方面,最低用户数设为 100 万,这肯定是不行。即使最低用户数为 10,000 也可以说开始变得有风险。因此,似乎很难证明超过几百个分片的分片区块链是合理的。
历史可检索性
用户真正珍视的区块链重要属性是永久性。当公司破产或是维护该生态系统不再产生利益时,存储在服务器上的数字资产将在 10 年内不再存在。而以太坊上的 NFT 是永久的。
是的,到 2372 年人们仍能够下载并查阅你的加密猫。
但是一旦区块链的容量过高,存储所有这些数据就会变得更加困难,直到某时出现巨大风险,某些历史数据最终将……没人存储。
要量化这种风险很容易。以区块链的数据容量 (MB/sec) 为单位,乘以 ~30 得到每年存储的数据量 (TB)。当前的分片计划的数据容量约为 1.3 MB/秒,因此约为 40 TB/年。如果增加 10 倍,则为 400 TB/年。如果我们不仅希望可以访问数据,而且是以一种便捷的方式,我们还需要元数据 (例如解压缩汇总交易),因此每年达到 4 PB,或十年后达到 40 PB。Internet Archive (互联网档案馆) 使用 50 PB。所以这可以说是分片区块链的安全大小上限。
因此,看起来在这两个维度上,以太坊分片设计实际上已经非常接近合理的最大安全值。常数可以增加一点,但不能增加太多。
结语
尝试扩容区块链的方法有两种:基础的技术改进和简单地提升参数。首先,提升参数听起来很有吸引力:如果您是在餐纸上进行数学运算,这就很容易让自己相信消费级笔记本电脑每秒可以处理数千笔交易,不需要 ZK-SNARK、rollups 或分片。不幸的是,有很多微妙的理由可以解释为什么这种方法是有根本缺陷的。
运行区块链节点的计算机无法使用 100%的 CPU 来验证区块链;他们需要很大的安全边际来抵抗意外的 DoS 攻击,他们需要备用容量来执行诸如在内存池中处理交易之类的任务,并且用户不希望在计算机上运行节点的时候无法同时用于任何其他应用。带宽也会受限:10 MB/s 的连接并不意味着每秒可以处理 10 MB 的区块!也许每 12 秒才能处理 1-5 MB 的块。存储也是一样,提高运行节点的硬件要求并且限制专门的节点运行者并不是解决方案。对于去中心化的区块链而言,普通用户能够运行节点并形成一种文化,即运行节点是一种普遍行为,这一点至关重要。
② 区块链怎么赚钱是骗局吗
不是骗局,总体而言,目前区块链尚处于萌芽期,很多项目尚未落地,只有在尊重成长规律的前提下踏踏实实、一步一步培育才能使其逐渐成熟。技术是中性的,但决定技术的方向和结局的还是人性,区块链和数字货币未来会如何发展,取决于操控者的价值观和文明程度。
区块链能够让你在这个行业赚到钱也能够让你倾家荡产,所以在这还是提醒广大用户,投资需谨慎,不要钱没挣着反而把自己给搭进去了,得不偿失。还有就是区块链骗局也是比较多的,咱们也是要提高警惕,避免上当受骗,造成不必要的经济损失。
拓展资料
贷前阶段
区块链技术可以首先应用于物流供应链,帮助银行等贷款机构更加全面、准确地掌握小微企业的真实主营业务、交易背景、上下游关联企业,以及其在供应链当中的谈判地位、商品畅销程度、回款的节奏和路径等,一方面帮助更多轻资产、高成长性优质企业通过交易票据、物流单据等获得融资支持,一方面防止问题企业虚构、伪造业务背景和资金需求骗取贷款。
此外,区块链还可以应用于公积金互联,帮助银行了解借款企业股东、高管、普通员工的社保、公积金等实际缴纳情况,从而合理评估企业人员规模和经营情况,为授信和贷款审批决策提供充分依据。
贷中阶段
区块链技术可以应用于企业贷款资料审查和抵、质押物审核,帮助银行提升审批效率,保证审批质量。企业、特别是小微企业的融资过程中,往往需要提供合同等必要材料,纸质合同多方传签、用印不仅效率低下,还存在伪造变造、虚假签章等系列问题,给银行审批带来较大的伪冒欺诈和信用风险。
在区块链技术支持下,相关的实名信息主体、订单及下单流程、电子合同、协议签订流程、后续补充协议、照片资料都可进行即时保全,且全部存证不可篡改,可以保证银行快速认证、审批,并在出现纠纷时高效解决。除传统的不动产外,企业和企业主拥有的其他资产、包括银行理财等金融资产也可用于转让、质押,成为能被银行接受的合格增信依据,提高了企业信贷的可得性和即时性。
贷后阶段
区块链技术可以应用于对企业生产经营状况、履约还款能力的及时评估,帮助银行有效把握信贷风险,随时调整贷后风控策略。在以往的业务实践中,银行往往既不十分了解抵、质押品的真实市场价值,也不能很好地评判企业在入仓、出仓等环节的操作对剩余抵、质押品市场价值的影响,对仓单质押等新型贷款类型的掌控能力相对低下。
改为采用区块链技术支持的数字仓单后,商品品质、数量、规格、照片等信息可以完整、标准化上链,真实性、可追溯性得到充分保证,银行可在技术上杜绝企业和仓储机构虚构仓单、仓单与出入库信息不符等情况,保证贷后管理取得实效。此外,借款企业的厂房、写字楼租赁等信息也可以籍由区块链技术充分共享给银行、上下游企业及其他中介服务机构,最大程度上降低“人去楼空”等卷款跑路风险。