加入收藏 在线留言 联系我们
关注微信
手机扫一扫 立刻联系商家
漫云服务热线13103827627

泰山众筹软件APP功能一览2023年已更新源码开发

更新时间
2024-07-01 20:09:00
价格
请来电询价
漫云科技
区块源码
区块系统
定制开发
区块app系统开发
快速搭建
联系电话
13103827627
联系手机
13103827627
联系人
王乾
立即询价

详细介绍

     1. 概述
    存储模块负责持久化存储上的区块、交易、状态、历史读写集等账本数据,并为大型的国有企业提供功专业的解决方案开发与项目研发服务,公司经过几年的发展已经有200+专业技术人员与运用人员,办公面积达5k面积。并为大型的国有企业提供功专业的解决方案开发与项目研发服务, 专注行业APP软件开发,主要经营业务包括APP定制开发、网站定制开发、励志为企业品牌打造和提升、以及开发,区块和数字化,信息化软件系统等,为客户提供一站式解决方案和完整的营销解决方案。并对外提供上述数据的查询功能。区块以区块为单位进行批量的数据提交,一次区块提交会涉及到多项账本数据的提交,比如:交易提交,状态数据修改等,所以存储模块需要维护账本数据的原子性。长安支持常用的数据库来存储账本数据,如LevelDB、BadgerDB、TikvDB、MySQL等数据库,业务可选择其中任意一种数据库来部署区块。
泰山众筹软件APP功能一览2023年已更新源码开发
    账本数据主要分为5类:
    区块数据,记录区块元信息和交易数据:
    区块元数据包括:区块头、区块DAG、区块中交易的txid列表,additionalData等;
    交易数据,即序列化后的交易体,为了提供对单笔交易数据的查询,所以对交易数据进行了单独存储。
    状态数据,记录智能合约中读写的上状态数据,即世界状态。
    历史数据,长安对每笔交易在执行过程中的状态变化历史、合约调用历史、账户发起交易历史都可以进行记录,可用于后续追溯交易、状态数据的变迁过程。
    合约执行结果读写集数据,长安对每笔交易在执行过程中的所读写的状态数据集进行了单独保存,方便其他节点进行快速的数据同步。
泰山众筹软件APP功能一览2023年已更新源码开发
    事件数据,合约执行过程中产生的事件日志
    2. 存储模块运行逻辑
    针对上述5类账本数据,长安分别实现了5个DB类,开发分别是:BlockDB、StateDB、HistoryDB、ResultDB和ContractEventDB。采用多个数据库之后,就需要维护数据库之间的数据一致性,避免仅有部分数据库提交后,发生程序中断而导致不同数据库间的数据不一致,因此,长安引入了Blockbinarylog组件来持久化存储区块的原始内容,用于重启过程中的数据恢复,类似于数据库中的预写式日志(wal)的功能。需要注意的是,历史数据、结果数据并不是每个节点必须保存的,节点可以根据自己的业务需要在配置文件中启用或者关闭历史数据库和结果数据库。
    1.存储模块未开启区块文件存储时运行逻辑
    2.存储模块开启区块文件存储时运行逻辑
泰山众筹软件APP功能一览2023年已更新源码开发
    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。
泰山众筹软件APP功能一览2023年已更新源码开发
    在HistoryDB中记录交易产生的三种类型的索引:
    状态变更历史,以<contractName,ObjectKey,TxId>为索引
    合约调用历史,以<contractName,TxId>为索引
    账户交易历史,以为索引
    在ResultDB中记录交易的读写集,读写集以TxID作为key,同时记录的区块高度(LastBlockHeight)作为checkpoint。
    在ContractEventDB中记录下交易结果的EventLog,并记录区块高度作为checkpoint。
泰山众筹软件APP功能一览2023年已更新源码开发
    4. 账本恢复流程
    如果区块正在提交过程中,节点因异常退出,节点在下次启动时存储模块会进入恢复流程:
    分别从Blockbinarylog、BlockDB、StateDB、ContractEventDB、HistoryDB、ResultDB中获取的区块高度,以Blockbinarylog中的区块高度作为基准高度,判断其他DB是否落后基准高度。
    如果有某个DB落后基准高度,则从Blockbinarylog中获取缺失的区块及读写集,依次提交到落后DB中。
    所有DB同步到基准高度后,存储模块启动完成,节点进入正常流程。

相关产品

联系方式

  • 电  话:13103827627
  • 联系人:王乾
  • 手  机:13103827627
  • 微  信:13103827627