【刘文彬】 EOS1.1版本新特性介绍
原文链接:醒者呆的博客园,https://www.cnblogs.com/Evsward/p/9330057.html
EOSIO/eos 目前在github的项目活跃度方面排名第一,release版本更新的速度让人应接不暇。今天EOS的大版本1.1发布,我也有幸参与了贡献,本篇文章重点介绍1.1版本的重大功能升级。
关键字:eos, eos 1.1, MongoDB,Read-Mode: HEAD,sync,优雅退出,keosd的硬件支持
MongoDB plugin
我们知道目前eos的本地存储结构是简单的文件存储,对于备份和数据查询等管理角度,略显尴尬。新版本推出了MongoDB插件eosio::mongo_db_plugin,
eosio::mongo_db_plugin 将区块链数据归档至MongoDB数据库中。
这份区块链的数据是只读的,支持高可扩展以及方便的数据查询工作。
支持部署和访问一个MongoDB集群。
通过对源码的浏览,可以查看到该插件支持的主要函数功能:
void consume_blocks(); // 消费区块void accepted_block( const chain::block_state_ptr& );void applied_irreversible_block(const chain::block_state_ptr&);void accepted_transaction(const chain::transaction_metadata_ptr&);void applied_transaction(const chain::transaction_trace_ptr&);
这些功能有消费区块、接收区块、应用不可逆区块、接收交易、应用交易,在这些功能函数的实现中,也看到队列的使用,很可能我们未来不必自己引入第三方队列而直接使用这些新特性即可。这些功能从字面上就能感受到背后的潜力,未来会单独介绍这个插件。
Read-Mode: HEAD
配置nodeos为“只读头区块”模式,意味着所有RPC请求都会返回头区块的数据,头区块就是最新的一个区块。
它的含义主旨要抓住:就是它不会读取未确认的,或者花费在p2p网络中延迟的交易。
这个模式也跟我们之前讨论的交易确认的方案分析形成互动。我们可以通过这个模式下的请求判断出某个交易是至少被一个生产者确认的,但可能还没有最终定局。
nodeos的性能提升
一、同步速度加快
之前,一个新节点加入区块链时,需要尝试保持一个良好的网络状态,然后验证以及转播它接收到的交易。如果链数据有很大一部分需要同步到新节点,数据的验证准确度会降低,验证的耗费也会增多。所以新版本中:
新节点不转播交易,在它没完成数据同步之前。这样可以提高新节点同步的速度。
二、数据库大小警卫
EOSIO是通过两个内存数据库存储数据:一个是state DB,一个是reversible block DB。现在使用警卫保护:
- 允许运行的实例nodeos检测即将到来的限制
- 优雅退出,防止可怕的BAD_ALLOC异常引发的数据库脏数据,必须要replay整条链进行修复。这是一个从dawn3.0就困扰我的问题。
- 现在恢复一个数据库的操作,就像修改单个配置一样容易
- 重新启动的这个过程,再也不需要replay或resync的操作了。
Alpha:keosd的硬件支持
我们都知道,区块链的账户的私钥的保管是一个问题,登陆验证身份的过程也很容易涉及安全的风险,从1.1开始,正式引入了对keosd的硬件支持,当前目前仍旧是测试版本,还未成为生产版本。
Apple's Secure Enclave
使用苹果电脑的人们目前可通过Secure Enclave提供的基于硬件的秘钥保护他们的EOSIO账户。通过命令
cleos wallet create_key -n SecureEnclave
使用Secure Enclave wallet来创建key,不需要import操作。另外,mac中你要访问Secure Enclave的行为必须被签名。
YubiHSM 2
YubiHSM 2是一个外部硬件安全模块,可添加到任何用户的电脑通过USB端口。keosd现在允许任何使用Linux发行版和MacOS的用户保护他们的EOSIO账户,通过YUbiHSM 2提供的基于硬件的秘钥。这个手段可能会被生产者大量使用。
login 插件
登录插件是第一个支持基于EOSIO blockchain的应用验证概念的组件。插件API允许您来验证一个用户是否能够签名满足指定的权限。
目前login插件只是初步的设计,并无法上生产环境,就像存在了好几个版本的MongoDB插件在当前这个版本才被正式推出一样,login插件日后还会迎来大量修改。
其他的重要改变
- cleos以及rpc可通过二级索引读取table数据
- 多签名合约eosio.msig可以提案一个包含多个actions的transaction
- 添加系统账户eosio.sudo,这个账户只有超过三分之二绝对多数的active 区块生产者才能使用,它的子命令exec可以绕过所有的权限检查
- 发行原子的delegatebw / buyram事务,解决了账户余额足够却无法购买内存的和抵押cpu资源。
- 使用KiB 来购买内存,buyram
- 改进了错误提示,这些错误一般都是在校验环节,原来的错误日志很模糊不清晰
- RPC可以获取定时事务
- nodeos提供灰名单账户,阻止其访问资源在一个无人认领的拥堵链
- nodeos更好的控制块传输的时间,来弥补生产者之间的网络延迟,使用参数produce_time_offset_us
- nodeos检查点(通过signal emit的方式)可以在同步期间,执行确权块上链,共识相关。
- 支持导入导出可逆块数据库作为便携式文件格式,这个特性可以在数据备份设计中使用
- 提高生产者水印追踪,解决生产者出块后落选再次选中出块以后造成confirmed值延续很高的bug
- 日志更新使用ISO国际标准化时间戳
相关文章和视频推荐
圆方圆学院汇集大批区块链名师,打造精品的区块链技术课程。 在各大平台都长期有优质免费公开课,欢迎报名收看。
公开课地址:https://ke.qq.com/course/345101
转载于:https://my.oschina.net/u/4028262/blog/2986955
【刘文彬】 EOS1.1版本新特性介绍相关推荐
- EOS1.1版本新特性介绍
EOSIO/eos 目前在github的项目活跃度方面排名第一,release版本更新的速度让人应接不暇.今天EOS的大版本1.1发布,我也有幸参与了贡献,本篇文章重点介绍1.1版本的重大功能升级. ...
- JDK版本新特性介绍JDK1.6
JDK1.6新特性介绍 1. Desktop类和SystemTray类 在JDK6中 ,AWT新增加了两个类:Desktop和SystemTray. 前者可以用来打开系统默认浏览器浏览指定的URL,打 ...
- Spark 3.2.0 版本新特性 push-based shuffle 论文详解(一)概要和介绍
前言 本文隶属于专栏<大数据技术体系>,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢! 本专栏目录结构和参考文献请见大数据技术体系 目录 Spark 3.2.0 ...
- Xcode9新特性介绍-中文篇
背景: Xcode 9 新特性介绍: 1.官方原文介绍链接 2.Xcode9 be ta 2 官方下载链接 本文为官方介绍翻译而来,布局排版等都是按照官方布局来的. 与原文相比,排版上基本还是熟悉的配 ...
- Angular8 - 稳定版修改概述(Angular 8的新特性介绍)
Angular 8的新特性介绍 在之前Angular团队发布了8.0.0稳定版.其实早在NgConf 2019大会上,演讲者就已经提及了从工具到差分加载的许多内容以及更多令人敬畏的功能.下面是我对8. ...
- 技术前沿资讯-Apache Flink 1.14 新特性介绍
一.简介 1.14 新版本原本规划有 35 个比较重要的新特性以及优化工作,目前已经有 26 个工作完成:5 个任务不确定是否能准时完成:另外 4 个特性由于时间或者本身设计上的原因,会放到后续版本完 ...
- CentOS以及Oracle数据库发展历史及各版本新功能介绍, 便于构造环境时有个对应关系...
CentOS版本历史 版本 CentOS版本号有两个部分,一个主要版本和一个次要版本,主要和次要版本号分别对应于RHEL的主要版本与更新包,CentOS采取从RHEL的源代码包来构建.例如CentOS ...
- hadoop3.0新特性介绍
hadoop3.0新特性介绍 1. 基于jdk1.8(最低版本要求) 2. mr采用基于内存的计算,提升性能(快spark 10倍) 3. hdfs 通过最近black块计算,加快数据获取速度(块大小 ...
- chrome 63 android分类,Chrome 63 Beta新特性介绍
原标题:Chrome 63 Beta新特性介绍 除非另外注明,否则,下面介绍的更改均适用于最新 Chrome Beta 渠道版(Android.Chrome 操作系统.Linux.Mac 和 Wind ...
最新文章
- Unity手游:自动寻路Navmesh 跳跃 攀爬 斜坡
- java设计模式3--单例模式(Singleton)
- Kafka-Monitor
- 计算机协会知识讲座,计算机协会第一期电脑维修讲座顺利开展
- 第 25 章 Build tool
- DB2数据库常用命令
- 在ST官网下载STM32单片机标准固件库
- opencv3学习笔记(九)--------直方图与匹配
- 在线翻译_英汉互译,支持繁体,韩语,日语 - 微信小程序在线翻译,单词句子翻译
- 游戏十五大基本游戏类型介绍
- (2)香橙派+apache2与php+天猫精灵=自建平台语音支持--香橙派操作系统安装
- 推荐一款绘画软件krita,开源正版免费,适合ps用户
- 双目测距原理以及双目相机矫正
- 1:0 本立而道生!
- android拍照文件没有读写权限,Android6.0之后的拍照+本地存储权限问题
- 华为od机考攻略,参考资料
- 多台电脑磁盘(文件共享 磁盘共享)局域网共享
- 《离散数学导学》精炼:第4,5章(集合论,布尔代数)
- 微信小程序-从零开始制作一个跑步微信小程序
- 使用二进制包在生产环境部署 Kubernetes v1.13.2 集群
热门文章
- 【Pandas学习】读、存excel数据
- 数据库系统在计算机系统中的地位与作用,数据库系统概述之数据、数据库、数据库管理系统、数据库系统...
- 烟卷配送库房温湿度监控系统中应用的温湿度传感器
- c语言为什么要规定数据类型,c语言为什么有数据类型
- 用心理学解释用户行为
- java毕业设计绿色农产品推广应用网站源码+lw文档+mybatis+系统+mysql数据库+调试
- linux open函数功能,open(
- Jetson TX2刷rtso-9003并使用Jetpack安装软件包
- python内置的数据结构_python内置的数据结构
- 计算机经常黑屏,为什么电脑老是黑屏的出现原因以及解决方法