魔豹联盟佛萨奇2.0源码系统开发搭建(成熟技术)

简介: 魔豹联盟佛萨奇2.0源码系统开发搭建(成熟技术)

每个节点都在后台持续运行:

如果主节点不存在,则进入主节点选举过程;
如果节点为主节点,则广播 declaration 消息,声明自己为主节点,如果收到别的节点发送的较低 节点 ID值,则成为从节点;
如果节点为从节点,并且在一定时间内(由 core.yaml 中的 leaderAliveThreshold 设置,默认 10 秒)没有收到其它节点发送的 declaration 消息,则设置主节点不存在。
主节点选举过程:

提交自己为主节点的提案;
收集其它节点发送的提案;
如果有其它节点声明为主节点,则放弃选举过程;
如果主节点不存在,则将自己的节点 ID 与其它节点的 ID 值进行比较,如果自己的 ID 值比其它任何一个节点 ID 值都小,则声明自己成为主节点,否则放弃选举过程。
详细过程图示:

主节点选举关键代码
// ref: https://github.com/hyperledger/fabric/blob/master/gossip/election/election.go

func (le *leaderElectionSvcImpl) run() {

defer le.stopWG.Done()
for !le.shouldStop() {
    if !le.isLeaderExists() {
        le.leaderElection()
    }
    // If we are yielding and some leader has been elected,
    // stop yielding
    if le.isLeaderExists() && le.isYielding() {
        le.stopYielding()
    }
    if le.shouldStop() {
        return
    }
    if le.IsLeader() {
        le.leader()
    } else {
        le.follower()
    }
}

}

func (le *leaderElectionSvcImpl) leaderElection() {

le.logger.Debug(le.id, ": Entering")
defer le.logger.Debug(le.id, ": Exiting")
// If we're yielding to other peers, do not participate
// in leader election
if le.isYielding() {
    return
}
// Propose ourselves as a leader
le.propose()
// Collect other proposals
le.waitForInterrupt(getLeaderElectionDuration())
// If someone declared itself as a leader, give up
// on trying to become a leader too
if le.isLeaderExists() {
    le.logger.Info(le.id, ": Some peer is already a leader")
    return
}

if le.isYielding() {
    le.logger.Debug(le.id, ": Aborting leader election because yielding")
    return
}
// Leader doesn't exist, let's see if there is a better candidate than us
// for being a leader
for _, o := range le.proposals.ToArray() {
    id := o.(string)
    if bytes.Compare(peerID(id), le.id) < 0 {
        return
    }
}
// If we got here, there is no one that proposed being a leader
// that's a better candidate than us.
le.beLeader()
atomic.StoreInt32(&le.leaderExists, int32(1))

}

相关文章
|
区块链 测试技术
DAPP链游开发稳定版丨链游dapp/nft游戏系统开发成熟技术方案及源码详情
随着区块链技术的不断发展,智能合约农场在链游行业中扮演着越来越重要的角色。智能合约农场是一种基于区块链技术的应用程序,它可以帮助链游开发商快速、安全地上线定制游戏软件。本文将介绍智能合约农场在链游行业中的作用以及如何通过智能合约农场快速上线定制游戏软件。
|
8月前
|
新零售 搜索推荐 UED
九星创客互助排位系统开发|技术成熟|源码搭建
新零售模式是一种融合线上、线下商业以及物流,打破传统零售业的边界,通过技术创新和数据驱动来改善用户体验和效率的零售模式。
|
算法 安全 分布式数据库
MetaForce原力元宇宙佛萨奇2.0智能合约系统开发(源码部署)
Force是一个全球加密货币生态系统,其成员使用我们的智能合约即时利润分配工具和算法互相帮助以实现财务福利。META FORCE系统属于我们的社区并且是完全去中心化的,这意味着它是透明的、安全的并且可以抵抗外部影响。 智能合约是一种自执行算法(程序代码)。它保证了在区块链内执行逻辑或传输的透明性和安全性。
|
存储 算法 安全
DAPP互助公排系统开发源码|DAPP互助系统开发方案与指南
“去中心化”是区块链的典型特征之一,其使用分布式储存与算力
|
存储 前端开发 测试技术
众筹互助智能合约系统开发(开发案例)丨dapp智能合约众筹互助丨公排拆分丨系统开发详细规则/成熟技术/方案设计/源码说明
 智能合约互助系统开发是指创建并实现基于智能合约技术的互助系统。智能合约是一种在区块链上执行的自动化计算代码,它可以在事先设定的条件满足时执行相应的操作,无需依赖人工干预。智能合约互助系统旨在通过智能合约技术来优化和自动化互助服务的提供和管理。
|
存储 区块链 文件存储
DAPP众筹互助公排系统开发(详情功能)DAPP互助模式开发
区块就是很多交易数据的集合,它被标记上时间戳和之前一个区块的独特标记
|
JavaScript 前端开发 区块链
元宇宙链游系统开发搭建解决方案
元宇宙链游系统的开发需要结合区块链技术和游戏开发技术。以下是一些开发元宇宙链游系统需要考虑的方面:
|
存储 算法 区块链
链游项目系统开发(方案设计)丨DAPP链游系统开发(案例分析)/成熟技术/区块链游戏开发/源码说明
  在区块链中,每个块包含了一定数量的交易信息和该块的唯一标识符,同时还包含了前一个块的哈希值。这样的设计保证了区块之间的顺序和完整性,一旦一个块被添加到区块链中,它就不可更改。This makes blockchain a secure and trustworthy distributed ledger that can be used to record and verify various types of transactions.
|
Go 区块链 数据安全/隐私保护
dapp区块链游戏开发公司 链游开发搭建
一份基于区块链游戏的新式生态体系陈述显现,链游生态体系最显著的特征之一,即不同游戏之间混合和交流数据的才能,没有完成。
161 0
dapp区块链游戏开发公司 链游开发搭建
|
Kubernetes 前端开发 API
NFT OpenSea平台系统开发技术方案丨技术成熟(源码部署)
NFT OpenSea平台系统开发技术方案丨技术成熟(源码部署)
165 0

热门文章

最新文章