MySQL,关系型数据库,支持schema和富查询,性能较KV数据库低,目前关系型数据库与***的状态数据并不能很好的结合,导致很少有***采用关系型数据库作为状态数据库。原因主要有两点:1.***需要对智能合约所读写的状态数据做严格的控制和校验,而SQL语句相对***来说过于灵活,难以控制;2.需要提前创建库表和索引,需要针对不同的智能合约创建不同的数据库表结构,不够灵活。目前长安链支持MySQL存储引擎,在系统数据如Block DB上支持区块元信息、交易信息的关系型语义,状态数据库支持kv的方式和智能合约编写SQL语句方式读写状态数据(world state)。
根据对同一批交易调度产生的执行顺序是否随机,并行调度算法可分为:I8O系统2857開发8624游戏
随机性调度算法:即针对同一批交易调度产生的交易执行顺序是随机的,即使同一节点针对同一批交易连续运行两次调度算法产生的结果也可能不同。此类算法往往调度速度较快,其难点在于验证节点如何保证执行顺序与提案节点一致并得到相同的执行结果。因此,交易的执行顺序必须打包至区块中并由其他节点据此验证。
确定性调度算法:即针对同一批交易调度产生的交易执行顺序是确定的。此类算法的优点是交易执行顺序产生稳定且可复现,因此理论上讲交易执行顺序的信息可不包含在区块内,各验证节点运行并行调度算法即可进行校验。
同步服务模块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})
}
- 合约聊天公链技术系统开发模块丨META FORCE系统逻辑讲解 2024-05-03
- 马蹄链DAPP合约系统开发技术 2024-05-03
- 哈希hash游戏竞猜玩法开发介绍 2024-05-03
- 关于Uniswap交易所源码搭建(成熟技术) 2024-05-03
- 合约版/泰山众筹商城/系统开发技术源码搭建 2024-05-03
- 关于社区链游Stepn跑鞋游戏系统开发技术讲解 2024-05-03
- 合约量化交易系统开发模式丨量化合约系统开发源码搭建 2024-05-03
- 跑步链游/Stepn跑鞋链游模式系统开发定制方案 2024-05-03
- DAPP/伪DAPP技术系统开发流程方案成熟团队 2024-05-03
- 关于NFT数藏平台系统开发技术(非梵艺术) 2024-05-03