众筹DAPP开发,众筹系统开发(逻辑及方案),众筹app源码模式

简介: 同步模块的消息handler 负责处理从 net 模块监听到的 NetMsg_SYNC_BLOCK_MSG 类型的消息func (sync *BlockChainSyncServer) blockSyncMsgHandler(from string, msg []byte, msgType netPb.NetMsg_MsgType) error {

同步服务模块 handler
同步模块的消息handler 负责处理从 net 模块监听到的 NetMsg_SYNC_BLOCK_MSG 类型的消息
func (sync *BlockChainSyncServer) blockSyncMsgHandler(from string, msg []byte, msgType netPb.NetMsg_MsgType) error {

// 检查服务是否启动
check sync.start

// 检查消息类型
check msgType != netPb.NetMsg_SYNC_BLOCK_MSG

// 解析 msg
unmarshal msg -> syncMsg

switch syncMsg.Type {
case syncPb.SyncMsg_NODE_STATUS_REQ:
    // 返回本地高度
    return sync.handleNodeStatusReq(from)
case syncPb.SyncMsg_NODE_STATUS_RESP:
    // 在定时器任务队列中添加 NodeStatusMsg 任务,启动处理流程
    return sync.handleNodeStatusResp(&syncMsg, from) 
case syncPb.SyncMsg_BLOCK_SYNC_REQ:
    // 返回区块数据(封装在 SyncMsg 中,包含相应的业务数据)
    return sync.handleBlockReq(&syncMsg, from) 
case syncPb.SyncMsg_BLOCK_SYNC_RESP:
    // 在定时器任务队列中添加 SyncedBlockMsg 任务,启动处理流程
    return sync.scheduler.addTask(&SyncedBlockMsg{msg: syncMsg.Payload, from: from}) 
}

}
7.2.2.3. 调度服务 handler
func (sch *scheduler) handler(event queue.Item) (queue.Item, error) {

switch msg := event.(type) {
case NodeStatusMsg:
    // NodeStatusMsg任务流
    // 更新 peers 中记录的节点ID和高度,更新 blockStates 初始化为 newBlock
    sch.handleNodeStatus(msg)
case LivenessMsg:
    // pending 状态区块超时检查
    sch.handleLivinessMsg()
case SchedulerMsg:
    // 发送 SyncMsg_BLOCK_SYNC_REQ 请求到远端
    return sch.handleScheduleMsg()
case *SyncedBlockMsg:
    // ReceivedBlocks任务流
    // 更新高度对应区块状态为 receivedBlock,封装 ReceivedBlocks 数据提交给 processor 消息队列,由 handleReceivedBlocks 函数处理
    return sch.handleSyncedBlockMsg(msg)
case ProcessedBlockResp:
    // 处理 processor 消息队列提交的 ProcessedBlockResp 消息,检查本地区块写入结果,更新 pendingRecvHeight
    return sch.handleProcessedBlockResp(msg)
case DataDetection:
    // 检查 blockStates 数据,删除低于本地最高快的缓存数据
    sch.handleDataDetection()
}

}
处理服务 handler
func (pro *processor) handler(event queue.Item) (queue.Item, error) {

switch msg := event.(type) {
case *ReceivedBlocks:
    // 将区块数据写入 processor.queue 队列
    pro.handleReceivedBlocks(msg)
case ProcessBlockMsg:
    // ProcessBlockMsg 工作流
    // 从 processor.queue 中取出 pendingBlockHeight 块高的数据,
    // 调用 validateAndCommitBlock 写入本地账本,封装 ProcessedBlockResp 消息返回
    return pro.handleProcessBlockMsg()
case DataDetection:
    // 检查 processor.queue,删除低块
    pro.handleDataDetection()
}

}
定时任务的独立线程
func (sync *BlockChainSyncServer) loop() {

var (
    // 定时任务:触发区块处理工作流
    doProcessBlockTk = time.NewTicker(sync.conf.processBlockTick)
    // 定时任务: 触发远端状态查询工作流
    doScheduleTk = time.NewTicker(sync.conf.schedulerTick)
    // 定时任务: 广播高度查询消息
    doNodeStatusTk = time.NewTicker(sync.conf.nodeStatusTick)
    // 定时任务: 触发查询请求超时校验逻辑
    doLivenessTk = time.NewTicker(sync.conf.livenessTick)
    // 定时任务: 触发定时器调度服务中本地区块状态字典的高度检查,舍弃低于本地最高快的 kv 对
    doDataDetect = time.NewTicker(sync.conf.dataDetectionTick)
)

for {
    select {
    case <-sync.close:
        return

        // Timing task
    case <-doProcessBlockTk.C:
        sync.processor.addTask(ProcessBlockMsg{})
    case <-doScheduleTk.C:
        sync.scheduler.addTask(SchedulerMsg{})
    case <-doLivenessTk.C:
        sync.scheduler.addTask(LivenessMsg{})
    case <-doNodeStatusTk.C:
        sync.broadcastMsg(syncPb.SyncMsg_NODE_STATUS_REQ, nil)
    case <-doDataDetect.C:
        sync.processor.addTask(DataDetection{})
        sync.scheduler.addTask(DataDetection{})

    // 消息中转和消费逻辑
    case resp := <-sync.scheduler.out:
        sync.processor.addTask(resp)
    case resp := <-sync.processor.out:
        sync.scheduler.addTask(resp)
    }
}

}

相关文章
|
9天前
|
Web App开发 前端开发 安全
语音交友app系统源码功能及技术研发流程剖析
语音交友App核心功能包括语音聊天(一对一、群聊、语音消息)、语音房间(直播、主题房、管理)、社交互动(好友、关注、打赏)、内容发现、音效美化、通知提醒及安全隐私等。开发流程涵盖需求分析、技术选型(前端、后端、数据库、实时通信)、UI/UX设计、前后端开发、实时通信集成、音效处理、测试优化、部署上线及运营维护,确保稳定高效运行并持续优化用户体验。
|
6天前
|
安全 JavaScript 前端开发
小游戏源码开发之可跨app软件对接是如何设计和开发的
小游戏开发团队常需应对跨平台需求,为此设计了成熟的解决方案。流程涵盖游戏设计、技术选型、接口设计等。首先明确游戏功能与特性,选择合适的技术架构和引擎(如Unity或Cocos2d-x)。接着设计通用接口,确保与不同App的无缝对接,并制定接口规范。开发过程中实现游戏逻辑和界面,完成登录、分享及数据对接功能。最后进行测试优化,确保兼容性和性能,发布后持续维护更新。
|
8天前
|
前端开发 Java 测试技术
语音app系统软件源码开发搭建新手启蒙篇
在移动互联网时代,语音App已成为生活和工作的重要工具。本文为新手开发者提供语音App系统软件源码开发的启蒙指南,涵盖需求分析、技术选型、界面设计、编码实现、测试部署等关键环节。通过明确需求、选择合适的技术框架、优化用户体验、严格测试及持续维护更新,帮助开发者掌握开发流程,快速搭建功能完善的语音App。
|
1月前
|
移动开发 开发框架 小程序
轻松搭建婚恋交友系统源码,H5/小程序/APP自动适配,智能匹配恋爱交友平台快速落地
婚恋交友系统涵盖在线交友、线下活动、专业服务、社交娱乐等,满足用户多样化需求。系统设计简洁易用,提供实名认证、多注册方式及安全保护,确保用户隐私和数据安全。功能丰富,支持图文展示、筛选匹配、聊天互动、虚拟礼物等,提升互动趣味性。平台可分类管理用户、审核信息、智能推荐,优化用户体验。基于TP6+Uni-app框架,实现跨平台同步,支持二次开发,适应不同市场需求。 [了解更多](https://gitee.com/multi-customer-software/jy)
|
30天前
|
小程序 IDE PHP
圈子源码如何打包生成App小程序/开发一个圈子系统软件所需要的费用体现在哪里?
将PHP源码打包成App的过程涉及多个步骤和技术选择。以圈子源码为例,首先明确需求,确定App功能和目标用户群体,并根据需求开发小程序页面,如用户注册、圈子列表等。源码准备阶段确保源码适用于小程序开发,环境配置需安装IDE(如微信开发者工具)及依赖库。最后在IDE中打包小程序并上传至管理平台,通过审核后发布。费用方面,模板开发成本较低,定制开发则更高,具体取决于需求复杂度和第三方服务费用。
73 0
|
2月前
|
开发框架 小程序 前端开发
圈子社交app前端+后端源码,uniapp社交兴趣圈子开发,框架php圈子小程序安装搭建
本文介绍了圈子社交APP的源码获取、分析与定制,PHP实现的圈子框架设计及代码编写,以及圈子小程序的安装搭建。涵盖环境配置、数据库设计、前后端开发与接口对接等内容,确保平台的安全性、性能和功能完整性。通过详细指导,帮助开发者快速搭建稳定可靠的圈子社交平台。
|
2月前
|
PHP
全新uniapp小说漫画APP小说源码/会员阅读/月票功能
价值980的uniapp小说漫画APP小说源码/会员阅读/月票功能
129 20
|
2月前
|
JSON 缓存 前端开发
HarmonyOS NEXT 5.0鸿蒙开发一套影院APP(附带源码)
本项目基于HarmonyOS NEXT 5.0开发了一款影院应用程序,主要实现了电影和影院信息的展示功能。应用包括首页、电影列表、影院列表等模块。首页包含轮播图与正在热映及即将上映的电影切换显示;电影列表模块通过API获取电影数据并以网格形式展示,用户可以查看电影详情;影院列表则允许用户选择城市后查看对应影院信息,并支持城市选择弹窗。此外,项目中还集成了Axios用于网络请求,并进行了二次封装以简化接口调用流程,同时添加了请求和响应拦截器来处理通用逻辑。整体代码结构清晰,使用了组件化开发方式,便于维护和扩展。 该简介概括了提供的内容,但请注意实际开发中还需考虑UI优化、性能提升等方面的工作。
113 11
|
2月前
|
前端开发 算法 安全
一站式搭建相亲交友APP丨交友系统源码丨语音视频聊天社交软件平台系统丨开发流程步骤
本文详细介绍了一站式搭建相亲交友APP的开发流程,涵盖需求分析、技术选型、系统设计、编码实现、测试、部署上线及后期维护等环节。通过市场调研明确平台定位与功能需求,选择适合的技术栈(如React、Node.js、MySQL等),设计系统架构和数据库结构,开发核心功能如用户注册、匹配算法、音视频聊天等,并进行严格的测试和优化,确保系统的稳定性和安全性。最终,通过云服务部署上线,并持续维护和迭代,提供一个功能完善、安全可靠的社交平台。
173 6
|
28天前
|
移动开发 小程序
thinkphp+uniapp开发的多端商城系统源码/H5/小程序/APP支持DIY模板直播分销
thinkphp+uniapp开发的多端商城系统源码/H5/小程序/APP支持DIY模板直播分销
26 0

热门文章

最新文章

  • 1
    MNN-LLM App:在手机上离线运行大模型,阿里巴巴开源基于 MNN-LLM 框架开发的手机 AI 助手应用
  • 2
    【11】flutter进行了聊天页面的开发-增加了即时通讯聊天的整体页面和组件-切换-朋友-陌生人-vip开通详细页面-即时通讯sdk准备-直播sdk准备-即时通讯有无UI集成的区别介绍-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
  • 3
    微信小程序 app.json 配置文件解析与应用
  • 4
    【Azure App Service】基于Linux创建的App Service是否可以主动升级内置的Nginx版本呢?
  • 5
    【05】flutter完成注册页面完善样式bug-增加自定义可复用组件widgets-严格规划文件和目录结构-规范入口文件-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
  • 6
    【Azure Function】Function App出现System.IO.FileNotFoundException异常
  • 7
    原生鸿蒙版小艺APP接入DeepSeek-R1,为HarmonyOS应用开发注入新活力
  • 8
    【Azure Logic App】使用MySQL 新增行触发器遇见错误 :“Unknown column 'created_at' in 'order clause'”
  • 9
    【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
  • 10
    阿里云APP备案流程图以及备案所需材料整理,跟着教程一步步操作