导读:
本文深入探讨了区块链交易费⽤模型的重要性及其在确保网络安全和有效运行中的关键作用。通过对以太坊和Solana区块链网络的交易费⽤模型进行比较分析,揭示了不安全的交易计费可能引发的网络安全风险。特别关注了CertiK团队发现并协助修复的Solana网络中大整数模幂运算的CU计算错误,这一错误可能导致潜在的DOS攻击。文章详细分析了Solana的智能合约计价模型、POH共识机制、并行事务处理方式,并通过在Solana私有集群上的实验,复现了远程DOS攻击的过程和成本。
1. 摘要与背景
区块链的计费模式是确保网络安全和有效运行的关键机制,通过收取用户执行操作所需的费用(如Gas费用),防止恶意行为和资源滥用,保护用户利益,并推动整个区块链生态系统的发展和创新。一个有效的计费系统不仅是财务基础,也是促进技术进步和社区信任的重要因素。
本文将深入分析以太坊(ETH)和Solana区块链网络的交易费用模型,以及不安全的交易计费可能引发的网络安全风险。重点讨论CertiK团队发现并修复的Solana网络中大整数模幂运算CU(计算单元)计算错误所引发的潜在远程DOS攻击漏洞,并通过此案例探讨区块链计费模型中的安全隐患。
2. 交易费用模型的重要性
在Web3.0领域中,底层基础设施运行在去中心化的区块链网络上。这些网络由全球验证者共同维护和运营。用户通过交易和智能合约进行互动,所有的交易都被记录在分布式账本上,并且这些记录是永久不可篡改的。
验证者们凭借有限的资源共同维护着这庞大的区块链网络,而交易费用在确保网络稳定性和安全性方面起到关键作用。这些费用不仅激励着网络参与者,还是推动区块链成功发展的动力。有效的交易费用模型能够确保网络资源的合理分配,防止恶意行为和资源滥用,同时保护用户利益,促进技术的持续创新和社区的健康发展。
交易费用模型的安全性对于区块链的长期健康和稳定至关重要。这种模型不仅仅是对网络资源的有效管理,还直接影响用户的信任和参与度。一个健全的交易费用模型能够有效地防止网络遭受恶意行为,如拒绝服务攻击(DDoS),通过设定适当的费用门槛使攻击者难以滥用网络资源。
合理的费用结构能够激励验证者和矿工投入足够的资源来维护区块链的安全性和稳定性,因为他们通过收取交易费用来获取奖励和补偿。此外,透明和公平的计费机制还可以保护用户免受不当收费和资源耗费,增强他们对区块链生态系统的信任感。因此,一个经过良好设计的交易费用模型不仅是经济上的基础,更是确保区块链网络安全和用户权益的重要保障。
3. ETH与Solana网络的交易费用模式设计
在BTC网络中,所有交易的复杂度相对一致,并采用单一的交易计费模型。相比之下,ETH和Solana网络采用图灵完备的脚本语言,其交易计费模型设计更为复杂,涵盖带宽消耗、存储消耗和计算消耗等多个方面。智能合约可以消耗任意数量的带宽、存储和计算资源,而Gas费用则是衡量合约执行所需计算工作量的单位。通过限制Gas费用的消耗,可以有效控制智能合约对资源的过度利用。
3.1:ETH网络的交易计费模型设计
在以太坊(ETH)网络中,交易计费模型设计如下:
3.1.1:单位和概念解释
•Wei和Gwei单位:Wei是以太币(ether)的最小单位,1 ether = 1 x 10^18 wei。Gwei是Gas的计量单位,1 gwei = 1 x 10^9 wei。
3.1.2:Gas费用计算系统
•Gas Limit:用户愿意为确认交易或执行操作支付的最大Gas量。在伦敦升级[1]后,Gas Limit可以根据网络需求在15M至30M之间动态调整。
•Gas Used:实际消耗的Gas数量,不超过Gas Limit。对于未使用的Gas部分,将会自动退回到用户的钱包余额。
•Gas Price:用户愿意为每单位Gas支付的价格。Gas Price随着以太坊网络上交易拥堵情况而变化,通常是动态调整的,当前查询[2]Gas Price约为10gwei左右。伦敦升级引入了改进的EIP-1559[3] 新增两个参数(基础费用BaseFee和优先级费用PriorityFee),改进后的Gas Price计算为BaseFee + PriorityFee。
3.1.3:ETH网络交易费用计算示例
•例如,如果Gas Price为35 gwei/Gas,交易手续费计算如下:
交易手续费 = Gas Price (10 gwei) * Gas Limit (21000) / 10^9 = 0.00021 ETH如果以每ETH单价3500美元计算,这笔交易手续费大约为0.735美元。在网络极度拥堵时,Gas Price可能会上升至100 gwei/Gas以上,导致单笔交易费用超过10美元。
3.1.4:ETH网络的TPS
•在区块链领域中,每秒事务数(TPS)是指网络每秒处理或执行的事务数量。当前查询[4]显示以太坊网络的TPS约为12.7。
这些特性和参数使得以太坊网络能够根据需求动态调整交易费用,并有效管理网络资源,从而支持其广泛的智能合约和分布式应用生态系统的运行和发展。
3.2:Solana网络的交易计费模型设计
3.2.1:Gas费计算系统
•本地代币SOL和Lamport:Lamports是Solana网络中的本地代币,相当于SOL的最小单位。一个SOL等于1,000,000,000 Lamports。MicroLamport是Lamports的最小单位,等于0.000001 Lamports,用于计算优先级费用。
•签名费用:每笔交易必须包含一个签名,每个签名的基本费用固定为5000 Lamports(0.000005 SOL)。
•计算单元(CU):用于衡量Solana区块链智能合约执行资源消耗的最小单位。在Solana 1.9.2中引入了类似ETH的Gas Limit的功能,每笔交易默认具有200,000 CU预算,并且可以设置最大的1,400,000 CU。
3.2.2:Solana经济学设计
•基础费用:在2020年推出后的前两年,Solana的交易基础费用固定为0.000005 SOL每笔(每笔交易一个签名)。
•优先费用: 自2022年起,Solana引入了额外的优先费用机制,允许在交易时支付额外费用以优先处理。计算优先费用的方法是将请求的最大计算单元(CU)乘以每个计算单元0.000001 Lamports的价格,四舍五入到最接近的Lamports。
•租金费用:每个Solana账户在区块链上存储数据的费用称为“租金”。验证者根据账户在内存中维护的数据收取基于时间和空间的租金费用。账户需要足够的Lamports余额以免除租金并保留在Solana区块链上。账户若无法支付租金,则可能会通过垃圾收集过程从网络中删除。
•例如:如果一个账户持有至少 2 年的租金,则该账户被视为免租。每次账户余额减少时都会检查此项,将余额 减少到最低金额以下的交易将会失败,目前的免租费用为每 MB 6.96 SOL。创建新账户时,费用会分配给该账户;删除账户时,可重新收取免租费用,假如一个大小为15,000字节的可执行程序需要105,290,880个lamports (=~ 0.105 SOL) 的余额才能免租。
3.2.3:Solana交易费用计算示例
•交易总费用计算: 假设一笔交易请求1,000,000 CU,并设置每个CU的优先费用为10,000 MicroLamports。则交易总费用为5000 Lamports(签名费用) + 1,000,000 CU * 10,000 MicroLamports * 0.000001 Lamports = 0.000015 SOL。当前Solana平均费用查询[5]显示,平均费用约为0.000021 SOL,额外费用约为0.000025 SOL。以每SOL 100美元的价格计算,单笔交易费用大约为0.0021美元。
•计算单元时间限制: 计算单元CU也可以取决于在Solana SVM中执行时间的定价,每33 ns的计算时间等价于1 CU。假设默认上限为200,000 CU,那么在Solana SVM中执行200,000 CU的智能合约时间约为6.6毫秒。最大1,400,000 CU的执行时间约为46.2毫秒。
•交易费用分配: Solana网络将所有交易费用的50%烧毁,其余50%分配给处理交易的验证者。
3.2.4:Solana网络的TPS
•根据Solana的白皮书,理论上Solana每秒可以处理多达710,000笔交易。在实际场景中,Solana已经表现出超过5,000 TPS的能力,并且在测试期间达到了65,000 TPS。当前查询[6]显示Solana的TPS约为3300。
这些设计和参数使得Solana网络能够高效处理大量交易,并提供灵活的费用和资源管理机制,以支持其快速发展和广泛应用的智能合约和分布式应用生态系统。