以太坊-GHOST协议

简介:


一 为什么要引入GHOST协议?

在区块链中为了提高交易速度,需要减少出块时间从而加快出块速度;区块时间的减少会导致网络安全性下降,而且对大的矿池有利,对小的矿池或单个矿工不利。在以太坊中引入GHOST协议,来解决这个问题。关于为什么出块时间缩短后,会出现安全性下降和对小矿池不利可以参考《以太坊原理简介》中叔块部分内容。

另外,在以太坊中,区块分叉非常常见,所以在发生分叉之后应尽快合并分叉以维护区块链的统。

 

二 示例解释Ghost协议

1  场景示例

假设当前以太坊网络中所有矿工都是基于A来挖矿,当一个矿工(w0)打包出一个区块B,并将B广播出去,告诉其他矿工B已经被挖掘出来了,你们可以来基于B来挖矿了。目前以太坊的处快时间是15s,而在15s内,这个区块B可能还没有传遍整个区块链网络,在收到广播前矿工们还是基于A来继续挖矿;假设有四个矿工w1、w2、w3、w4在收到广播前基于A分别挖出了B1、B2、B3、B4,并广播的网络中。

3fd1028dbe706fd1a644d21e9ebc266fb9deff28

此时将面临这样几个问题:

 - 矿工w0、w1、w2、w3、w4都希望自己挖出的区块能放到主链上。

 - 因为w0最早广播,所以也就最可能成为主链上的区块。

 - 如果w0是一个大矿池(p0)中的一个矿工,因为同一个矿池中,所以这个矿池的矿工几乎能够在w0挖出B块以后,立即基于B0开始挖矿;而其他节点因为受到广播的时间比较晚,这样在挖矿中处于劣势,也就很难获得挖矿奖励,矿工们也就失去和p0在同一个网络中挖矿的动力。[传播时间/出块时间]比值越大,那么这种劣势越明显。

区块链的主链只有一条,如何让大家都愿意在同一个条主链上挖矿,并且有动力的挖矿呢?即对于小矿工们而言,愿意接受大矿池挖出来的区块成为主链的区块,并且自己挖出新块以后也能得到一定的奖励,而不会因为广播的时间差而尽做无用功?

 

2  GHOST协议解决方案

30a64f5b19b691778c3297d2159abacc532193cf

如上图所示;矿池p0中的矿工基于B挖矿的时候,可以接纳其他矿工挖出来的区块(B1、B2)作为叔块。因为p0是大矿池,假设p0矿池很快挖出C块并广播出去,因为接纳了两个分叉区块B1、B2,那么B1、B2对应的矿工w1、w2分别获得出块奖励的7/8;另外,p0因为接纳了两个分叉区块,除了出块奖励之外,可以额外得到出块奖励的1/32*2(2指的是接纳的叔块数量)。

还在继续挖C块的矿工,在收到C块信息以后广播后,检验发现p0发布的C块确实是最长链。而挖出B1、B2的矿工w1、w2如果继续在自己的分叉链上继续挖矿,而竞争让自己的分叉链竞争成为主链的可能性很低,这样自己将一无所获;如果接受C对应的链,则可获得区块奖励的7/8作为回报,两相对比很容易选择接纳C对应的链作为主链。如此对于矿池p0和矿工w1、w2都是有益的,如此也能让整个以太坊网络分叉迅速收敛。

因为C区块接纳了B1、B2作为叔块,响应的w1、w2获得了出块奖励;但是对于其他的分叉(B3、B4)来说确实什么都没获得,那么w3、w4能愿意放弃自己挖出来区块么?如何让他们放弃自己所在的分叉,转而拥抱最长的主链?GHOST协议规定,如果D接纳B3、B4,那么B3、B4对应的矿工w3、w4分别能获得出块奖励的6/8,因为D接纳了分叉区块,除了出块奖励以外,还能获得出块奖励的1/32*2。

为什么B3、B4被D接纳时,矿工获得的奖励是6/8,而B1、B2被C接纳时,矿工获得的奖励是7/8呢?那是因为D距离B3、B4的路径更远,B3、B4竞争成为主链的希望更加渺茫,所以奖励自然会少一些。

当然如果基于A挖出来的子块远远不止B、B1、B2、B3、B4,那么接下来一个区块同样可以引用这些B级叔块,不过最大的深度不超过6。

 

三 GHOST协议

1    GHOST协议

区块可以不引用叔块,但最多引用两个叔块。

叔块必须是区块的前2层~前7层的祖先的直接的子块。

被引用过的叔块不能被重复引用。

引用叔块的区块,可以获得挖矿报酬的1/32,也就是5*1/32=0.15625 Ether。最多获得2*0.15625=0.3125 Ether

被引用的叔块,其矿工的报酬和叔块与区块之间的间隔层数有关系。

2  报酬与间隔层数

间隔层数

报酬比例

报酬(ether)

1

7/8

4.375

2

6/8

3.75

3

5/8

3.125

4

4/8

2.5

5

3/8

1.875

6

2/8

1.25

 

相关文章
|
机器学习/深度学习 自然语言处理 搜索推荐
神经网络算法 —— Embedding(嵌入)!!
神经网络算法 —— Embedding(嵌入)!!
5889 1
|
消息中间件 数据库 RocketMQ
分布式事务常见解决方案
分布式事务常见解决方案
3165 0
鲁棒优化入门(二)——基于matlab+yalmip求解鲁棒优化问题
鲁棒优化的含义就是在最恶劣的情况下(不确定变量的取值使目标函数最大),求出满足约束条件,并且能使目标函数最优的决策变量。 yalmip工具箱可以用来求解鲁棒优化问题,但还是有一定局限性的,并不能处理任意形式的不确定集下的鲁棒优化问题,一般来说,当鲁棒优化问题的不确定集合为箱型不确定集、椭球不确定集以及多面体不确定集时,都可以用yalmip工具箱求解(具体细节可参考官方文档)。本文介绍了利用yalmip求鲁棒优化问题的一般方法。......
|
缓存 算法 NoSQL
【分布式详解】一致性算法、全局唯一ID、分布式锁、分布式事务、 分布式缓存、分布式任务、分布式会话
分布式系统通过副本控制协议,使得从系统外部读取系统内部各个副本的数据在一定的约束条件下相同,称之为副本一致性(consistency)。副本一致性是针对分布式系统而言的,不是针对某一个副本而言。强一致性(strong consistency):任何时刻任何用户或节点都可以读到最近一次成功更新的副本数据。强一致性是程度最高的一致性要求,也是实践中最难以实现的一致性。单调一致性(monotonic consistency):任何时刻,任何用户一旦读到某个数据在某次更新后的值,这个用户不会再读到比这个值更旧的值。
2033 0
|
8月前
|
人工智能 自然语言处理 JavaScript
搞定 OpenClaw 调用阿里云百炼 API:从密钥获取到配置验证全流程
本教程详解OpenClaw(原Moltbot/Clawdbot)接入阿里云百炼API全流程:从Node.js环境准备、一键安装,到获取百炼API Key、配置环境变量及修改JSON配置文件,支持qwen3-max等Qwen3系列模型。新客首月仅0.3元/天,含通义千问万亿参数思考大模型。
|
12月前
|
存储 自然语言处理 测试技术
开源嵌入模型对比:让你的RAG检索又快又准
嵌入是RAG系统的核心,将文本转化为语义向量,实现基于含义的检索。本文详解嵌入原理、关键参数及主流开源模型,助你根据分块大小、语言需求和性能约束,选择最合适的嵌入方案,提升RAG效果。
2459 5
开源嵌入模型对比:让你的RAG检索又快又准
|
安全 PHP 开发者
Web安全-URL跳转与钓鱼
Web安全-URL跳转与钓鱼
674 8
|
JSON 前端开发 Java
深入理解 Spring Boot 中日期时间格式化:@DateTimeFormat 与 @JsonFormat 完整实践
在 Spring Boot 开发中,处理前后端日期交互是一个常见问题。本文通过 **@DateTimeFormat** 和 **@JsonFormat** 两个注解,详细讲解了如何解析前端传来的日期字符串以及以指定格式返回日期数据。文章从实际案例出发,结合代码演示两者的使用场景与注意事项,解决解析失败、时区偏差等问题,并提供全局配置与局部注解的实践经验。帮助开发者高效应对日期时间格式化需求,提升开发效率。
4455 2
|
机器学习/深度学习 算法 PyTorch
从零开始深度学习:全连接层、损失函数与梯度下降的详尽指南
在深度学习的领域,全连接层、损失函数与梯度下降是三块重要的基石。如果你正在踏上深度学习的旅程,理解它们是迈向成功的第一步。这篇文章将从概念到代码、从基础到进阶,详细剖析这三个主题,帮助你从小白成长为能够解决实际问题的开发者。
|
算法 数据挖掘 知识图谱
基于品类关系,虚拟类目如何建设?
类目-属性项-属性值体系(简称CPV)是淘宝建设中非常重要的基石,在商品的发布、管理,以及搜索场景下都大量应用。比如每个商品都有自己的类目、以及属性,而且需要发布在适合自己的类目下,才能够方便管理和搜索;在用户搜索的过程中,对Query的类目预测也是相关性中非常重要的一环。
7570 0

热门文章

最新文章