18-ETC-GHOST

学习视频来源:https://www.bilibili.com/video/BV1Vt411X7JF/?p=18
本博客除了包含自己的在学习过程中记录的笔记外,还包含少部分自己扩展的内容,如有错误,敬请指正。

文章目录

1. 背景:出块时间缩短带来的挑战

以太坊将出块时间从比特币的 10 分钟 缩短到 约 12--15 秒 ,提速近 40 倍。 这一设计显著提升了交易确认速度和系统吞吐量,但也引入了新的问题。

网络传播延迟与临时分叉

比特币和以太坊都运行在 应用层共识协议 上,底层依赖 P2P 网络 , P2P 网络的区块传播需要时间,且 未考虑网络拓扑结构(如节点地理位置、带宽差异);

  • 比特币的 10 分钟出块间隔,通常足够让新区块传播到大多数节点 ,因此临时分叉较少, 但即使如此,仍可能发生临时分叉(例如两个矿工几乎同时挖出有效区块)。
  • 以太坊由于出块时间极短(十几秒),大部分节点可能尚未收到你刚挖出的区块 ,就已在本地继续挖下一个区块。 等到收到其他区块时,自己可能已经产出新块------分叉成为常态

比特币共识的局限性在以太坊中被放大

  • 在比特币中分叉后,只有最长合法链胜出 ,其他链上的区块作废 ,矿工白挖,奖励无效,但由于分叉概率低,这种"浪费"可接受。

  • 在以太坊中分叉频繁发生, 若沿用比特币规则,个体矿工将极度不公平 ------他们算力小,很难抢到主链位置, 更严重的是,加剧挖矿中心化(Mining Centralization)

挖矿中心化偏见(Centralization Bias)

当前挖矿呈现两大趋势:设备专业化矿池集中化 , 假设一个大矿池占全网算力 30%,理论上应获得 30% 收益, 但在高分叉率下,实际收益可能远超 30%

例如:某高度出现 3 个竞争区块------ 1 个由大矿池挖出, 2 个由个体矿工挖出。

  • 大矿池会立即在其自身区块上继续挖矿 ,凭借强大算力,极大概率形成最长链
  • 而个体矿工算力分散,彼此不协作,只能寄希望于他人选择自己的链------但其他节点更倾向于选择看起来更强的链(如矿池链)。
  • 此外,矿池通常部署在优质网络位置,其区块传播更快,进一步提升被选中的概率。

结果:矿池收益 > 其算力占比 ,形成 "中心化偏见" ------越大的矿池越容易赢,小矿工逐渐退出,系统趋于中心化。如果以太坊直接采用比特币的"最长链"规则,将严重损害去中心化


2. 以太坊中的共识协议------GHOST 协议:对"失败区块"的补偿机制

GHOST(Greedy Heaviest Observed Subtree)协议并非以太坊首创,但以太坊对其进行了关键改进。

核心思想

即使你的区块未被纳入主链,只要它被后续区块"引用",就给予部分奖励。

以太坊将这类区块称为 叔父区块(Uncle Block)

叔父区块奖励机制

当矿工发布新区块时,可包含最多 2 个叔父区块

  • 叔父区块矿工 获得: 基础奖励 × (7/8)。 (早期为 3 ETH,故叔父奖励 = 7/8 × 3 = 2.625 ETH)
  • 包含叔父的区块矿工 额外获得: 基础奖励 × (1/32) × 叔父数量 。(即每包含 1 个叔父,多得 3/32 ≈ 0.09375 ETH)

这一设计激励矿工,主动包含叔父(获得额外奖励),即使挖到"孤块",也有高比例补偿(7/8),减少损失。

叔父区块的定义扩展

  • 比特币中,只有父区块的兄弟才算"叔父";
  • 以太坊扩展为:任何与当前区块有共同祖先、但不在同一条链上的有效区块,均可作为叔父。

这解决了"因网络延迟发布区块的矿工未及时收到父区块,导致叔父区块无法被引用,进而获得不到奖励"的问题。

代际限制与奖励衰减

为防止滥用,以太坊规定:

  • 只接受 7 代以内(即从当前区块回溯最多 6 个祖先)的叔父;
  • 奖励随代际递减
    • 第 1 代叔父:7/8 奖励
    • 第 2 代:6/8
    • ...
    • 第 6 代:2/8
    • 第 7 代及以上:不认可

合法叔父最多跨越 6 个辈分(共 7 代)。

为何要限制?

  1. 防止通胀:若允许无限叔父且高奖励,比如一个矿工发布区块时,包含100个叔父区块,ETH 发行量将失控,变得不值钱;
  2. 鼓励快速合并:分叉后越早被主链吸收,奖励越高,促使节点尽快收敛;
  3. 降低全节点负担:无需维护过久远的区块状态以验证叔父。

叔父区块的交易处理

  • 节点发布区块,引用叔父区块时, 叔父区块中的交易不会被执行, 以太坊仅沿最长合法链进行状态转移。因为若执行叔父交易,可能会导致状态混乱,比如叔父区块中的交易可能与主链的交易又冲突(双花)。
  • 但节点会将叔父区块中的未确认交易重新加入交易池,在后续区块中打包执行。

叔父区块的有效性验证

节点发布区块,引用叔父区块时,虽不执行交易,但仍需验证叔父区块本身是否有效 : 区块头合法性(如 nonce 符合难度)、 时间戳、gas limit 等字段合规。

这些数据都在区块头里,所以只需验证区块头,无需验证交易。

验证的目的是------防止攻击者伪造无效区块骗取叔父奖励。比如一个节点一直发布一些不合法的区块,希望其他节点收到后,把他当成叔父引用,获得奖励。

如何识别叔父区块?

  • 节点收到新区块后,会检查其声明的叔父;
  • 验证这些叔父是否:
    • 是有效区块;
    • 与当前区块有共同祖先
    • 7 代以内
    • 未被其他区块作为叔父引用过(防重复计奖)。

防御分叉攻击(Forking Attack)

以太坊规定:只引用分叉链上的第一个叔父区块,后边的即使有效也不能再被其他区块引用为叔父

  • 因为如果对分叉链上的每个叔父区块都进行引用和奖励,则分叉攻击成本将大幅降低。攻击者故意制造长分叉链,因为即使分叉失败也能通过叔父奖励获利。

只奖励分叉链上的第一个叔父区块,可以确保分叉后应尽快合并,而非延长分叉链博取更多奖励。


3. 以太坊区块奖励构成

比特币中奖励是出块奖励和交易费。出块奖励又叫静态奖励,交易费叫动态奖励。以太坊与比特币类似,但更复杂:

奖励类型 说明
静态奖励(Block Reward) 固定出块奖励(早期 3 ETH,后经多次减半)
叔父奖励(Uncle Reward) 包含叔父的额外奖励 + 叔父自身奖励
动态奖励(Gas Fee) 执行智能合约收取的交易手续费(归矿工)

注意:Gas Fee 在以太坊早期占比较小,主要收入来自静态奖励。

示例

通过区块高度可以看出引用的是第几代叔父,并计算出奖励。

出块奖励包含的额外奖励,通过引用的叔父区块个数,可以计算得到。


4. 总结:GHOST 协议的意义

GHOST 协议通过 "招安"叔父区块 ,有效缓解了高出块速度下的临时分叉浪费 、小矿工的不公平待遇挖矿中心化偏见

但它不是为解决永久性分叉 (如硬分叉导致的两条合法链),而是针对临时性状态分叉(State Fork) 的优化。 通过经济激励,引导网络在分叉后快速收敛到单一主链,同时保持去中心化活力。

相关推荐
终端域名5 小时前
区块链技术驱动金融:数字货币与智能合约技术的双轮重构
金融·区块链·智能合约
终端域名8 小时前
资产证券化:区块链在现代战争中的核心价值落地 —— 适配性、应用场景与核心优势
大数据·人工智能·区块链
China_Yanhy18 小时前
区块链运维日记 · 第 1 日 :消失的 2000 笔提现 —— 致命的 Nonce 冲突
运维·区块链
终端域名19 小时前
如何评估区块链、加密货币领域域名的价值?
区块链·网站域名
软件工程小施同学1 天前
区块链论文速读 CCF A--TDSC 2025 (4)
区块链
草原猫1 天前
DAPP开发入门指南:新手如何快速上手区块链应用开发
区块链·dapp开发
公链开发1 天前
达普韦伯Metakina平台的技术亮点解析
区块链
终端域名1 天前
品牌网站域名选择方法(适配区块链 / 加密货币领域,附案例参考)
区块链·数字货币域名·网站域名
FreeBuf_1 天前
欧盟漏洞数据库正式上线,采用去中心化模式运营
数据库·去中心化·区块链