BSC交易费用机制深度分析:Legacy vs DynamicFee 交易对比
概述
核心机制
交易池过滤逻辑
有效小费计算公式
- Legacy 交易: min(UserGasPrice, UserGasPrice - BaseFee)
UserGasPrice:用户给我的GasPrice
- DynamicFee 交易: min(GasTipCap, GasFeeCap - BaseFee)
GasTipCap:用户给的消费上限
GasFeeCap:用户给的总费用上限
测试结果分析
场景1:系统配置GasPrice = 100 gwei, 系统BaseFee = 200 gwei
Legacy 交易测试结果
Legacy 交易要求: UserGasPrice >= BaseFee + SystemGasPrice = 300 gwei
| 用户 GasPrice | 有效小费计算 | 结果 | 说明 |
|---|---|---|---|
| 100 gwei | min(100, 100-200) = -100 | ❌ 不打包 | 有效小费为负数 |
| 200 gwei | min(200, 200-200) = 0 | ❌ 不打包 | 有效小费为0 |
| 300 gwei | min(300, 300-200) = 100 | ✅ 打包 | 有效小费 = 100 gwei |
| 400 gwei | min(400, 400-200) = 200 | ✅ 打包 | 有效小费 = 200 gwei |
DynamicFee 交易测试结果
DynamicFee 交易要求: min(GasTipCap, GasFeeCap - BaseFee) >= SystemGasPrice
| GasTipCap | GasFeeCap | 有效小费计算 | 结果 | 说明 |
|---|---|---|---|---|
| 100 gwei | 100 gwei | min(100, 100-200) = -100 | ❌ 不打包 | 有效小费为负数 |
| 100 gwei | 200 gwei | min(100, 200-200) = 0 | ❌ 不打包 | 有效小费为0,小于系统配置GasPrice |
| 100 gwei | 300 gwei | min(100, 300-200) = 100 | ✅ 打包 | 有效小费 = 100 gwei |
| 100 gwei | 400 gwei | min(100, 400-200) = 100 | ✅ 打包 | 有效小费 = 100 gwei |
| 200 gwei | 200 gwei | min(200, 200-200) = 0 | ❌ 不打包 | 有效小费为0,小于系统配置GasPrice |
| 200 gwei | 300 gwei | min(200, 300-200) = 100 | ✅ 打包 | 有效小费 = 100 gwei |
| 200 gwei | 400 gwei | min(200, 400-200) = 200 | ✅ 打包 | 有效小费 = 200 gwei |
| 300 gwei | 300 gwei | min(300, 300-200) = 100 | ✅ 打包 | 有效小费 = 100 gwei |
| 300 gwei | 400 gwei | min(300, 400-200) = 200 | ✅ 打包 | 有效小费 = 200 gwei |
| 400 gwei | 400 gwei | min(400, 400-200) = 200 | ✅ 打包 | 有效小费 = 200 gwei |
场景2:系统配置GasPrice= 200 gwei, 系统BaseFee = 100 gwei
Legacy 交易测试结果
Legacy 交易要求: UserGasPrice >= BaseFee + SystemGasPrice = 300 gwei
| 用户 GasPrice | 有效小费计算 | 结果 | 说明 |
|---|---|---|---|
| 100 gwei | - | ❌ 直接报错 | 要求 GasPrice >= 200 gwei |
| 200 gwei | min(200, 200-100) = 100 | ❌ 不打包 | 有效小费 < 系统配置GasPrice |
| 300 gwei | min(300, 300-100) = 200 | ✅ 打包 | 有效小费 = 200 gwei |
| 400 gwei | min(400, 400-100) = 300 | ✅ 打包 | 有效小费 = 300 gwei |
DynamicFee 交易测试结果
DynamicFee 交易要求: min(GasTipCap, GasFeeCap - BaseFee) >= SystemGasPrice
| GasTipCap | GasFeeCap | 有效小费计算 | 结果 | 说明 |
|---|---|---|---|---|
| 100 gwei | - | ❌ 直接报错 | 要求 GasTipCap >= 200 gwei | |
| 200 gwei | 200 gwei | min(200, 200-100) = 100 | ❌ 不打包 | 有效小费 < 小于系统配置GasPrice |
| 200 gwei | 300 gwei | min(200, 300-100) = 200 | ✅ 打包 | 有效小费 = 200 gwei |
| 200 gwei | 400 gwei | min(200, 400-100) = 200 | ✅ 打包 | 有效小费 = 200 gwei |
| 300 gwei | 300 gwei | min(300, 300-100) = 200 | ✅ 打包 | 有效小费 = 200 gwei |
| 300 gwei | 400 gwei | min(300, 400-100) = 300 | ✅ 打包 | 有效小费 = 300 gwei |
| 400 gwei | 400 gwei | min(400, 400-100) = 300 | ✅ 打包 | 有效小费 = 300 gwei |
关键发现
1. Legacy 交易限制
- 严格限制: UserGasPrice >= BaseFee + SystemGasPrice
- 无法利用 EIP-1559: 无法动态调整费用
- 成本较高: 必须支付至少 BaseFee + SystemGasPrice
2. DynamicFee 交易优势
- 灵活定价: 可以分别设置 GasTipCap 和 GasFeeCap
- 动态适应: 可以根据网络拥堵情况调整
- 成本可控: 有效小费 = min(GasTipCap, GasFeeCap - BaseFee)
3. 交易池过滤机制
- 统一标准: 所有交易类型都使用 EffectiveGasTipIntCmp 进行过滤
- 基于有效小费: 不考虑交易类型,只看有效小费是否满足要求
- 实时过滤: 在交易池的 Pending() 方法中进行过滤
配置建议
对于用户
- 推荐使用 DynamicFee 交易: 更灵活,成本可控
- Legacy 交易: 确保 GasPrice >= BaseFee + SystemGasPrice
- 监控网络状态: 根据 baseFee 调整交易费用
对于矿工
- 合理设置 SystemGasPrice: 平衡收益和交易量
- 监控交易池: 确保有足够的交易可打包
- 动态调整: 根据网络拥堵情况调整最小小费要求

浙公网安备 33010602011771号