OpenAtom XuperChainV5.2版本抢先看,性能稳定性全面升级

2023-05-16

经过几个月的努力奋战,赶在新年到来之际,我们也即将迎来OpenAtom-XuperChainV5.2版本啦(撒花)!全新版本将于近期上线,今天小编就带大家抢先看看V5.2版本都有哪些功能的优化升级。

本次V5.2版本在OpenAtom XuperChain的性能稳定性上做出了大幅提升,在功能方面,除了在共识及merkle算法部分做了优化,此次版本也同时支持了arm架构。

主要包括:

【性能稳定性】降低内存以及CPU的使用;
【账本】增加未确认交易池
【区块同步】优化区块同步方案
【共识】提升共识稳定性以及正确性
【架构】支持arm架构
【log】提升日志写入速度

OpenAtom XuperChain性能稳定性升级

本次升级,从多个方面针对交易的性能以及稳定性进行优化:

区块同步方案优化
在节点间同步区块时,将被动接收区块改为主动拉取区块的方式,同步区块从逆序同步改为顺序同步(高度从低到高),最大化利用网络带宽,提升了同步效率。

账本状态机优化
在账本、状态机层面,完善了未确认交易池,在向链上提交交易时,会根据交易的依赖关系进行拓扑排序,因此在mempool中的交易以DAG图形式存在,在区块打包时可以从根节点开始遍历打包交易,提升打包速度,在执行区块时,可以直接找到相关冲突交易,提升了区块打包以及区块执行的速度。

想了解OpenAtom XuperChain更多账本状态机详情?请点击:
https://xuper.baidu.com/n/xuperdoc/design_documents/ledger.html

共识升级

在共识层面将QCTree回滚的逻辑变更以及增加mutex、kernel和bcs层,分别按照不同粒度锁解决脏写问题,提升共识稳定性与正确性,增加矿工收集签名的时延保证旷工打包的时间得到保证。

还不了解OpenAtom XuperChain共识算法?点击下方链接了解更多:
https://xuper.baidu.com/n/xuperdoc/advanced_usage/consensus_usage.html
https://xuper.baidu.com/n/xuperdoc/design_documents/consensus.html

通过以上三方面对交易的性能以及稳定性进行优化,转账类交易内存使用整体降低了33%左右,CPU使用整体降低了50%;合约类交易内存使用整体降低了50%左右,CPU使用整体降低了30%,性能大幅提升。

功能优化

本次全新版本下,OpenAtom Xuperchain以及crypto仓库现已支持arm架构

**在日志方面,**原有的日志库直接使用os.File.Write来写入每一条日志,系统调用开销比较大,同时,日志的格式化在锁内,并发写入日志时耗时比较大。经过优化后,使用bufio.Writer来写入日志,从而减少了系统调用的次数,提升了日志写入效率。除此之外,也实现了在锁外格式化日志,在锁内写入日志buffer,大大降低并发写入日志耗时。

**在共识层面,**本次新版本中,Chained-BFT支持候选人组数量为1,确保单个候选人仍能按照QCTree流程执行。

**在算法层面,**经过优化后,可以大幅减少merkle算法的内存分配。通常情况下,提交交易会增加内存分配次数,内存分配主要在sha256的生成上,每个double sha256都要进行2次分配,然而随着单个区块中交易数量的增多,生成默克尔树时就会比较耗时。

在OpenAtom XuperChainV5.2版本中,使用了arena分配算法,通过“一次申请,单独分配“的方式,一次性申请够所有的内存,再在每次计算sha256的时候单独分配, 另外,使用了零分配的sha256函数来辅助计算sha256,大大减少了内存分配次数。经过测试,对于一个10000个交易的区块,内存分配次数从30017降到了5。

Bug修复

OpenAtom XuperChainV5.2版本针对xchain-cli以及共识、cache等地方进行了bug修复。包括:

xchain-cli

  • 修复了xchain-cli中merge命令会失败问题,目前已支持utxo的merge以及split;
  • 修复了裁剪账本命令裁剪失败以及程序再启动失败问题;
  • 修复指定链名功能不可用问题;
  • 修复提案高度相关bug。

XuperCore

  • 修复utxo cache配置数值较小时区块交易执行失败问题;

  • 修复状态机walk时验证timer合约可能失败的bug;

  • 修复poa和pos类合约共识配置init_proposer为空可能导致程序退出的bug;

  • 修复重新加载平行链时可能导致程序退出的bug;

  • 修复共识升级时节点不出块问题,V5.2版本在此功能上稳定性提升至99%以上。

以上便是本次版本升级的全部内容,你对OpenAtom XuperChainV5.2有哪些建议和心得体会?欢迎联系小助手(XuperChain-Help)加入超级链官方微信群交流。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

OpenAtom XuperChainV5.2版本抢先看,性能稳定性全面升级 的相关文章

  • Redis常用命令-史上最全最新版本(一)

    Redis常用命令 史上最全最新版本 xff08 一 xff09 一 Redis基础命令二 Redis操作key的一些命令三 Redis五大基本数据类型1 String xff08 字符串 xff09 类型2 List xff08 列表 x
  • js删除对象中的元素

    if e data let result 61 JSON parse e data this form 61 result item 删除对象中的create time xff0c update time元素 delete this for
  • FreeRTOS 任务调度 任务切换

    64 嵌入式 简述启动调度器 移植层调度器启动第一个任务 任务切换参考 FreeRtos 简述 前面文章 lt FreeRTOS 任务调度 任务创建 gt 介绍了 FreeRTOS 中如何创建任务以及其具体实现 一般来说 xff0c 我们会
  • FreeRTOS 信号量

    64 嵌入式 简述二进制信号量 二进制信号量使用二进制信号量实现 创建信号量获取信号量释放信号量 中断中释放任务中释放 计数信号量互斥锁 创建互斥信号量拿锁放锁 递归互斥锁 获取递归信号量释放递归信号量 参考 FreeRtos 简述 Fre
  • 【转存】SpringBoot 中的自带工具类,快速提升开发效率

    断言 断言是一个逻辑判断 xff0c 用于检查不应该发生的情况 Assert 关键字在 JDK1 4 中引入 xff0c 可通过 JVM 参数 enableassertions开启 SpringBoot 中提供了 Assert 断言工具类
  • Mybatis-plus BindingException问题

    原因 xff1a 找不到 mapper xml 问题 解决方法 xff1a 去掉引用 mybatis plus lt dependency gt lt groupId gt com baomidou lt groupId gt lt art
  • 年度成果发布 | 百度超级链精选案例集正式上线!

    关注百度超级链微信公众号回复 案例集 获得电子版精选案例集 近年 xff0c 随着数字经济的发展 xff0c 区块链作为新基建的潜力逐渐被挖掘 xff0c 极大地发挥出其公开透明 高效便捷 互联互通的优势 xff0c 正在逐步提升社会信息交
  • Linux之Ubuntu入门篇[笔记自用]

    CMD 一 linux常用命令 lscd 点表示当前目录 点点当前目录的上一级目录 当前用户目录 放回上一次目录 pwduname 用于显示系统信息clear 清屏catsudo 以管理员运行cp 文件拷贝su 切换用户 sudo su x
  • Mysql 主从同步状态检查

    show slave status G 参数详解 1 Slave IO State SHOW PROCESSLIST输出的State字段的拷贝 Master User 被用于连接主服务器的当前用户 Master Port 当前的主服务器接口
  • maven打包报错 Expected root element project but found html

    Expected root element 39 project 39 but found 39 html 39 XXX spring boot parent 2 1 6 RELEASE pom 原因是POM文件错误 看下仓库中具体报错的p
  • BGP、OSPF、MPLS路由协议RFC分享

    文章目录 1 概述1 1 BGP1 2 OSPF1 3 MPLS 2 分享2 1 rfc 42712 2 rfc 31072 3 rfc 43642 4 rfc 44562 5 rfc 45772 6 rfc 47242 7 rfc 476
  • 单片机底层硬件与应用程序的联系

    1 单片机使用下载的固件库 xff0c 即底层驱动程序 2 功能配置寄存器是直接与硬件相互联系的 xff0c 例如汇编语言便可直接操纵功能配置寄存器
  • ROS中TF变换详解

    ROS发布TF变换 提示 xff1a 在ROS中发布TF变换时 xff0c 所使用的的角度为弧度而不是度 本文可以验证 xff0c 有错误欢迎各位评论指出 文章目录 ROS发布TF变换 前言1 Python实现TF发布2 C 43 43 实
  • 小狼毫输入法皮肤配置【自带皮肤配置】

    小狼毫输入法皮肤 小狼毫自带皮肤预览图小狼毫皮肤配置注释小狼毫自带的皮肤和配置 取自小狼毫程序文件夹 小狼毫自带皮肤预览图 安装位置 Rime weasel 0 14 3 data preview 小狼毫皮肤配置注释 span class
  • 119. Pascal's Triangle II

    Given a non negative index k where k 33 return the kth index row of the Pascal 39 s triangle Note that the row index sta
  • 【新手把新手,易学】esp8266指令进行测试

    Csdn的写博客的工具简直太难受了 xff0c 写在了world里边复制粘贴不过来 xff0c 图片不显示 xff0c 格式全丢失 xff0c 把测试分块发出来把 我也是新手按照新手帖子一步步实验的 xff0c 并做了一些补充 STA 类似
  • 百度超级链2021年终盘点:深度赋能数字经济,促进产业融通发展

    区块链是具有巨大潜力的战略技术 2021年 xff0c 国家 十四五 发展规划纲要将区块链列入七大数字经济重点产业之一 工信部 中央网信办联合印发推动区块链技术应用和产业发展的指导意见 xff0c 推动区块链技术加速落地 百度超级链秉承 让
  • 访问 www.taobao.com过程

    首先是查找浏览器缓存 xff0c 浏览器会保存一段时间你之前访问过的一些网址的DNS信息 xff0c 不同浏览器保存的时常不等 如果没有找到对应的记录 xff0c 这个时候浏览器会尝试调用系统缓存 来继续查找这个网址的对应DNS信息 如果还
  • PyTorch安装通用教程——附安装包

    安装PyTorch 通用教程 由于最近做项目需要使用PyTorch xff0c 所以便准备在网上查找相关教程和下载安装包 但由于官网提供的下载方式下载慢 xff08 至少我是如此 xff09 xff0c 以及在网上寻找百度云资源无果 由于曾
  • 树莓派4B 安装系统 实现WIFI联网 设置静态IP(无键鼠和显示器)

    本文结构 没有连接显示屏 键盘 鼠标 前期准备下载系统镜像并解压至存储卡实现利用网线访问树莓派系统连接WIFI设置静态IP 前期准备 文章比较长 xff0c 因为比较全面 树莓派4B网线一根已连接无线网的笔记本电脑存储卡 xff08 不低于

随机推荐