风险提示:理性看待区块链,提高风险意识!
极客技术流 | 人们常说的“拜占庭将军”问题究竟是啥?
首页 > 币界资讯 > 区块链新闻 2018-04-30 10:45:00
摘要
大家好,我是EKT周迅。 今天为大家简单解释一下,EKT系统中如何解决“拜占庭将军问题” #EKT 第一,何谓“ 。
币界网报道:

大家好,我是EKT周迅。

今天为大家简单解释一下,EKT系统中如何解决“拜占庭将军问题”

#EKT

第一,何谓“拜占庭将军问题”?

拜占庭将军问题首先是由Leslie Lamport等人在1982年提出,被称为The Byzantine Generals Problem或者Byzantine Failure。这个问题是这样描述的:

拜占庭帝国想要进攻一个强大的敌国,为此帝国派出了10支军队去包围这个帝国。这个敌人虽然不如拜占庭帝国强大,但也足以抵御5支常规拜占庭军队的同时袭击。由于某些原因,这10支军队无法聚合在一起进行攻击,必须分散然后根据统一的指令一起进攻或者撤退。他们任一支军队单独进攻都毫无胜算,除非有至少6支军队同时袭击才能攻下敌国。他们分散在敌国的四周,依靠通信兵相互通信来协商进攻意向及进攻时间。

军中可能有叛徒,可能向其他的将军发送错误的指令。在这种情况下如何保持战争指令的统一性进而获取胜利便成为了一个问题。

进一步讲,拜占庭将军的问题可以描述为:

一个发送命令的将军要发送一个命令给其余n-1个将军,使得所有忠诚的接收命令的将军遵守相同的命令如果发送命令的将军是忠诚的,那么所有忠诚的接收命令的将军遵守所接收的命令这个问题发展到计算机领域,就是拜占庭容错问题。区块链需要解决的一个核心问题就是如何保证在分布式环境下,各个节点(即使存在恶意节点)的数据能够达成最终的一致性和正确性。

EKT的共识算法是DPoS,在DPoS的共识基础上,我们也引入了基于路由策略进行拜占庭容错的方案。

第二,“拜占庭容错”方案如何实现?

在EKT中,我们使用公私钥加密和路由策略的机制实现拜占庭容错。这个是怎么实现的呢?

EKT主链上每个DPoS节点的公钥都是公开的,具体路由策略为:

1. 区块广播

当一个节点完成打包之后,会对区块进行签名。签名完以后节点会把区块和签名广播给网络中的其他节点。当另外一个节点收到区块和签名之后会对签名信息进行校验,以此来确认这个区块是从打包节点广播出去的。其他节点确认完成后,会判断自己节点与打包节点在当前轮的距离,如果满足条件 (currentIndex - miningIndex + len(DPoSNodes)) % len(DPoSNodes)

2. 区块的校验与投票

在每个区块头上,都会有区块body的Hash校验值。节点可以向其他节点获取区块body,对body进行处理之后,对当前打包的区块进行投票,所有节点都会把区块的校验结果进行签名,发送给满足 (currentIndex - miningIndex + len(DPoSNodes)) % len(DPoSNodes)

3. 节点宕机

当一个节点超过一定时间没有出块,当前轮的下一个节点会在 3*interval/2 的时间点开始打包下一个区块,进入下一个区块的打包流程。同理,如果节点连续宕机,判断当前节点是否需要打包的条件是 currentTime - lastBlockTime > (2*(currentIndex -LastIndex)+1)*interval/2,一旦满足当前条件,则当前节点开始打包。如果是最后n个区块连续宕机,则按照当前轮的最后一个区块的hash值判断下一轮的顺序,按照递增每个区块加一个出块interval的算法进行计算,判断当前打包的节点并进行打包。当超过n/2的节点宕机的时候,所有节点会自动停止出块,直到超过1/2的节点存活。

这种方案的复杂度在最好情况下是:消息复杂度O(n^2), 时间复杂度O(1)。在最差情况也可以达到:消息复杂度O(n^2), 时间复杂度O(n)。基于这种路由策略的拜占庭容错机制,系统可以保证在少于n/2的节点宕机或者叛变的情况下,系统不会出现分叉,是一种用计算资源换容错性的方案。

Ending

好了,今天关于“拜占庭将军”的文章就到这里了。

如果大家有任何关于技术上的问题想与我讨论,

欢迎加入我的公链开发QQ群:699726921

项目交流可进项目QQ群:173806202

如想关注EKT的项目进展,欢迎关注微信公众号:EKT通用积分

上一篇: 天算在Etherscan上完成代币合约源码认证率先走出智能合约漏洞风波
下一篇: 五家新支付提供商与Ripple的xVia技术达成合作,全球支付网路进一步成长
推荐专栏
Boss Wallet Web3 Econom Pass
专注币圈最新资讯
通俗浅显地聊透Web3大事小情
读懂区块链生态与未来,尽在币界网!
热门币种
更多
币种
美元价格
24H涨跌幅
BTC比特币
60,963.61 USDT
¥435,103.38
-2.72%
ETH以太坊
3,368.69 USDT
¥24,042.67
-0.3%
BNB币安币
570.68 USDT
¥4,073.00
-0.28%
USDT泰达币
1.02 USDT
¥7.25
-0.19%
SOL
135.96 USDT
¥970.36
+7.66%
USDC
1.00 USDT
¥7.15
-0.01%
TON
7.59 USDT
¥54.14
+4.55%
XRP瑞波币
0.47720 USDT
¥3.41
+0.48%
DOGE狗狗币
0.12210 USDT
¥0.87140
+2.43%
ADA艾达币
0.39050 USDT
¥2.79
+3.88%
热搜币种
更多
币种
美元价格
24H涨跌幅
Solana
181.55 USDT
¥1,316.51
+0.88%
比特币
66377.17 USDT
¥481,334.05
+0.38%
Curve
0.2584 USDT
¥1.87
-0.19%
Filecoin
4.3723 USDT
¥31.71
-1.55%
FTX Token
1.3883 USDT
¥10.07
-2.49%
比特币SV
51.3942 USDT
¥372.69
+0.98%
狗狗币
0.1261 USDT
¥0.91
-1.41%
柚子
0.585 USDT
¥4.24
+2.36%
Yield Guild Games
0.4784 USDT
¥3.47
-1.4%
奇亚
18.7346 USDT
¥135.85
-0.06%
Conflux
0.1671 USDT
¥1.21
+1.33%
Shiba Inu
1.639E-5 USDT
¥0.00
-1.03%
最新快讯
更多
币界网晨间分析:以太坊ETH价格行情预测
2024-07-31 10:30:08
币界网实时行情早报:BNB币安币价格突破588.4美元/枚,日内涨1.01%
2024-07-31 10:29:32
Movement已上线公共测试网
2024-07-31 10:27:02
Coinlist时隔四年重启代币拍卖机制,首场拍卖即将举行
2024-07-31 10:27:00
币界网实时行情早报:ETH以太坊价格突破3294.79美元/枚,日内涨1.00%
2024-07-31 10:26:07
Ethena:Bybit用户账户持有USDe或用USDe抵押品交易衍生品,即可享受至高20%的年利率
2024-07-31 10:21:56
xExchange将用MultiversX新技术测试V3版本
2024-07-31 10:21:25
下载币界网APP