1. 概述
存储模块负责持久化存储上的区块、交易、状态、历史读写集等账本数据,并为大型的国有企业提供功专业的解决方案开发与项目研发服务,公司经过几年的发展已经有200+专业技术人员与运用人员,办公面积达5k面积。并为大型的国有企业提供功专业的解决方案开发与项目研发服务,专注行业APP软件开发,主要经营业务包括APP定制开发、网站定制开发、励志为企业品牌打造和提升、以及开发,区块和数字化,信息化软件系统等,为客户提供一站式解决方案和完整的营销解决方案。并对外提供上述数据的查询功能。区块以区块为单位进行批量的数据提交,一次区块提交会涉及到多项账本数据的提交,比如:交易提交,状态数据修改等,存储模块需要维护账本数据的原子性。长安支持常用的数据库来存储账本数据,如LevelDB、BadgerDB、TikvDB、MySQL等数据库,业务可选择其中任意一种数据库来部署区块。
账本数据主要分为5类:
区块数据,记录区块元信息和交易数据:
区块元数据包括:区块头、区块DAG、区块中交易的txid列表,additionalData等;
交易数据,即序列化后的交易体,为了提供对单笔交易数据的查询,对交易数据进行了单独存储。
状态数据,记录智能合约中读写的上状态数据,即世界状态。
历史数据,长安对每笔交易在执行过程中的状态变化历史、合约调用历史、账户发起交易历史都可以进行记录,可用于后续追溯交易、状态数据的变迁过程。
合约执行结果读写集数据,长安对每笔交易在执行过程中的所读写的状态数据集进行了单独保存,方便其他节点进行快速的数据同步。
事件数据,合约执行过程中产生的事件日志
2. 存储模块运行逻辑
针对上述5类账本数据,长安分别实现了5个DB类,开发分别是:BlockDB、StateDB、HistoryDB、ResultDB和ContractEventDB。采用多个数据库之后,就需要维护数据库之间的数据一致性,避免仅有部分数据库提交后,发生程序中断而导致不同数据库间的数据不一致,长安引入了Blockbinarylog组件来持久化存储区块的原始内容,用于重启过程中的数据恢复,类似于数据库中的预写式日志(wal)的功能。需要注意的是,历史数据、结果数据并不是每个节点必须保存的,节点可以根据自己的业务需要在配置文件中启用或者关闭历史数据库和结果数据库。
1.存储模块未开启区块文件存储时运行逻辑
2.存储模块开启区块文件存储时运行逻辑
3. 区块提交流程
将序列化后的区块、读写集数据、以及的区块高度写入Blockbinarylog,用于异常中断后的数据恢复。为了提高性能,加入一层cache,新区块提交请求在更新完Blockbinarylog之后,再将区块数据写入cache,在更新完log和cache后,提交即可返回,由后台线程异步更新BlockDB、StateDB、ContractEventDB、HistoryDB和ResultDB。
在BlockDB中记录区块元信息与交易信息,其中交易信息以TxID作为主键存储,区块信息以BlockHeight作为主键存储,区块元信息中只记录交易ID列表,索引BlockHash到BlockHeight的映射关系。BlockDB中额外记录了当前的区块高度(LastBlockHeight)作为checkpoint,用以重启后的数据恢复。
在StateDB中保存state数据,key为合约名与对象主键的组合:<contractName,ObjectKey>,记录的区块高度(LastBlockHeight)作为checkpoint。
在HistoryDB中记录交易产生的三种类型的索引:
状态变更历史,以<contractName,ObjectKey,TxId>为索引
合约调用历史,以<contractName,TxId>为索引
账户交易历史,以为索引
在ResultDB中记录交易的读写集,读写集以TxID作为key,记录的区块高度(LastBlockHeight)作为checkpoint。
在ContractEventDB中记录下交易结果的EventLog,并记录区块高度作为checkpoint。
4. 账本恢复流程
如果区块正在提交过程中,节点因异常退出,节点在下次启动时存储模块会进入恢复流程:
分别从Blockbinarylog、BlockDB、StateDB、ContractEventDB、HistoryDB、ResultDB中获取的区块高度,以Blockbinarylog中的区块高度作为基准高度,判断其他DB是否落后基准高度。
如果有某个DB落后基准高度,则从Blockbinarylog中获取缺失的区块及读写集,依次提交到落后DB中。
所有DB同步到基准高度后,存储模块启动完成,节点进入正常流程。
提醒:因为软件开发行业无明确禁止法规, 该企业仅提供软件开发外包定制服务,项目需取得国家许可,严禁非法用途。 违法举报
泰山众筹软件APP功能一览2023年已更新源码开发
2024-11-04 20:09 43.138.229.143 1次- 发布企业
- 河南漫云科技有限公司商铺
- 认证
- 资质核验:已通过营业执照认证入驻顺企:第4年主体名称:河南漫云科技有限公司组织机构代码:91410100MA472L6X7B
- 报价
- 请来电询价
- 漫云科技
- 区块源码
- 区块系统
- 定制开发
- 区块app系统开发
- 快速搭建
- 关键词
- 2023年已更新,,
- 所在地
- 郑东新区升龙广场3号楼A座3202
- 联系电话
- 15515813000
- 漫云服务热线
- 15515813000
- 联系人
- 王乾 请说明来自顺企网,优惠更多
产品详细介绍
成立日期 | 2019年07月08日 | ||
法定代表人 | 张磊 | ||
注册资本 | 1000 | ||
主营产品 | 元宇宙系统开发、元宇宙源码、NFT数字藏品软件开发,nft智能合约开发,盲盒系统app开发搭建,nft源码系统,网络技术开发,软件技术开发,软件定制,技术开发,信息技术服务 | ||
经营范围 | 网络技术开发;软件技术开发;电子产品技术咨询、技术开发;信息技术服务;国内货运代理;国际货运代理;普通货物道路运输;从事货物和技术的进出口业务;供应链管理;物流信息咨询;电信业务代办;教育信息咨询;企业管理咨询;企业营销策划;仓储服务(易燃易爆及危险化学品除外);网页设计;计算机系统集成;销售:计算机软件及辅助设备、通讯设备、电子设备、网络设备、多媒体设备。 | ||
公司简介 | 河南漫云科技有限公司从事APP小程序软件定制开发,自成立以来已经服务全国5000+企业,为它门提供了近30000+软件程序技术服务支持。目前开发的有淘宝客、数字藏品NFT、dapp、农场软件、上链,元宇宙,盲盒系统、商城系统、、社交直播带货pk系统、求职招聘系统、本地生活服务信息发布平台、跑腿外卖系统、打车代驾顺风车系统、拼团盲盒系统、任务悬赏系统、跨境电商亚马逊ERP系统等全行业软件开发定制,源 ... |
公司新闻
- 去中心化应用(DApp)是一种基于区块技术构建的应用程序去中心化应用(DApp)是一种基于qukuailian技术构建的应用程序,其核心... 2024-11-02
- 中心化应用(DApp)的概念、特点、架构、开发流程、应用领域及优缺点中心化应用(DApp)的概念、特点、架构、kaifa流程、应用领域及优缺点去中心... 2024-11-02
- 去中心化应用(DApp)的详细介绍###一、DApp的定义与特性1.**定义**:DApp,即去中心化应用,是一种... 2024-11-02
- DAPP与传统APP区别和特点###一、引言介绍DAPP(去中心化应用)和传统APP(中心化应用)的基本概念及... 2024-11-02
- DAPP和APP的核心差异及其在定义DAPP和APP的核心差异及其在定义、技术架构、运行机制、数据所有权与隐私、经济... 2024-11-02
我们的其他产品
- 泰山众筹模式4.0升级版-漫云科技-定制开发公司火爆项目漫云科技:区块源码
- 泰山众筹app开发案例-漫云科技-解决方案火爆项目漫云科技:区块源码
- 泰山众筹小程序系统软件开发解决方案火爆项目漫云科技:区块源码
- 泰山众筹app定制-漫云科技-行业app软件快速上线漫云科技:区块源码
- 泰山众筹app返利系统-漫云科技-行业app软件火爆项目漫云科技:区块源码
- 泰山众筹源码搭建成功案例H5源码源码开发漫云科技:区块源码
- 泰山众筹源码搭建成功案例2023年已更新快速上线漫云科技:区块源码
- DAPP链上泰山众筹系统开发H5源码源码开发漫云科技:区块源码
- DAPP链上泰山众筹系统开发行业app软件案例定制漫云科技:区块源码
- app项目众筹软件-漫云科技-H5源码源码开发漫云科技:区块源码