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插件日后还会迎来大量修改。

其他的重要改变

EOS1.1版本新特性介绍的更多相关文章

  1. xmake v2.1.5版本新特性介绍

    2.1.5版本现已进入收尾阶段,此版本加入了一大波新特性,目前正在进行稳定性测试和修复,在这里,先来介绍下新版本中引入了哪些新特性和改进. 1. 提供类似cmake的find_*系列接口,实现各种查找 ...

  2. CentOS以及Oracle数据库发展历史及各版本新功能介绍, 便于构造环境时有个对应关系

    CentOS版本历史 版本 CentOS版本号有两个部分,一个主要版本和一个次要版本,主要和次要版本号分别对应于RHEL的主要版本与更新包,CentOS采取从RHEL的源代码包来构建.例如CentOS ...

  3. dubbox新特性介绍

    dubbx是当当网对原阿里dubbo2.x的升级,并且兼容原有的dubbox.其中升级了zookeeper和spring版本,并且支持restfull风格的远程调用. dubbox git地址:  h ...

  4. Hadoop3.0新特性介绍,比Spark快10倍的Hadoop3.0新特性

    Hadoop3.0新特性介绍,比Spark快10倍的Hadoop3.0新特性 Apache hadoop 项目组最新消息,hadoop3.x以后将会调整方案架构,将Mapreduce 基于内存+io+ ...

  5. framework各版本新特性(为面试准备)

    菜鸟D估计描述这些新特性的文章都是烂大街的货色,之所以拿出来分(e)享(xin)一下,有两个原因:1.当年面试的时候有人问到,我不知道该怎么回答:2.项目需要发布了,但是考虑到framework的版本 ...

  6. Xcode9新特性介绍-中文篇

    背景: Xcode 9 新特性介绍: 1.官方原文介绍链接 2.Xcode9 be ta 2 官方下载链接 本文为官方介绍翻译而来,布局排版等都是按照官方布局来的. 与原文相比,排版上基本还是熟悉的配 ...

  7. webpack 4.0.0-beta.0 新特性介绍

    webpack 可以看做是模块打包机.它做的事情是:分析你的项目结构,找到JavaScript模块以及其它的一些浏览器不能直接运行的拓展语言(Scss,TypeScript等),并将其打包为合适的格式 ...

  8. 《转》MySQL 5.7版本新特性连载

    MySQL 5.7版本新特性连载(一) 本文将和大家一起分享下5.7的新特性,不过我们要先从即将被删除的特性以及建议不再使用的特性说起.根据这些情况,我们在新版本及以后的版本中,应该不再使用,避免未来 ...

  9. Atitit.c# .net 3.5 4.0 4.5 5.0 6.0各个版本新特性战略规划总结

    Atitit.c# .net 3.5 4.0 各个版本新特性战略规划总结 1. --------------.Net Framework版本同CLR版本的关系1 2. paip.----------- ...

随机推荐

  1. Python:每日一题006

    题目:斐波那契数列. 程序分析:斐波那契数列(Fibonacci sequence),又称黄金分割数列,指的是这样一个数列:0.1.1.2.3.5.8.13.21.34.…… 个人思路及代码: # 方 ...

  2. java多线程系列12 ConcurrentHashMap CopyOnWriteArrayList 简介

    我们知道 ,hashmap 和 arraylist 是线程不安全的 在多线程环境下有数据安全问题, 当然 我们可以通过Collections的一些方法把他们变成线程安全的, Collections.s ...

  3. java多线程系列14 设计模式 Master-Worker

    Master-Worker模式是常用的并行设计模式,可以将大任务划分为小任务,是一种分而治之的设计理念. 系统由两个角色组成,Master和Worker,Master负责接收和分配任务,Worker负 ...

  4. 【算法】map的应用

    map使用参考链接http://www.cnblogs.com/KID-XiaoYuan/articles/7297709.html 题目 在ACM比赛中,你每解决一道题,你就可以获得一个气球,不同颜 ...

  5. sqoop加载mysql数据库

    ./bin/sqoop list-databases --connect jdbc:mysql://node-001:3306/ --username root --password hadoop

  6. HTML中的table导出为Excel文件

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  7. MFC:Tab控件嵌入对话框

    1.先建立一个对话框MFC应用程序,然后在工具箱里面把Tab Control控件放到对话框中的合适位置上. 再在对话框类中,声明一个CTabCtrl变量: CTabCtrl m_tab; 变量m_ta ...

  8. VDD,VCC,VSS,VEE,VDDA,VSSA,

    VDD是主供电电源,也是IO口输出电平的输入电源.VDDA(A表示模拟)是模拟电源,当使用到模拟信号的时候,比如AD(模数)或者DA(数模)的时候,系统会使用VDDA的电压作为参考电压来.不要求精准使 ...

  9. 背水一战 Windows 10 (77) - 控件(控件基类): ContentControl, UserControl, Page

    [源码下载] 背水一战 Windows 10 (77) - 控件(控件基类): ContentControl, UserControl, Page 作者:webabcd 介绍背水一战 Windows ...

  10. SharkApktool 源码攻略

    作者:HAI_ 原文来自:https://bbs.ichunqiu.com/thread-43219-1-1.html 0×00 前言 网上的资料对于apktool的源码分析,来来回回就那么几个,而且 ...