Fabric是一个基于区块链的分布式账本开源框架。它采用模块化的架构,可以将共识服务、成员认证等模块,根据客户需求进行替换。还可以通过docker容器技术执行chaincode智能合约。
在2018年10月刚刚发布了最新的1.3版本。下面就让我们来看看Fabric的1.3版本有哪些新功能。
1.3版本的新特征
1、增加MSP的身份混合器(Identity Mixer)
身份证混合器是一种采用零知识证明(zero-knowledge proofs)来保证匿名身份和不可连接的一种方法。
什么叫零知识证明?零知识证明就是提出验证的一方可以通过不泄漏自己任何加密信息的情况下,向来验证方证明自己的身份,这样对匿名隐私保护将更彻底,可以有效解决很多安全问题。
此外新增加了一个叫idexmigen的工具用来生成身份混合证书。
2、设置key-level背书策略
通常我们是在chaincode实力化或升级的时候设置和修改背书策略的。1.3版本增加了key级别的背书策略,运行在chaincode运行的时候动态修改背书策略。为了实现这个功能增加了四个shim接口。接口如下:
SetStateValidationParameter(key string, ep []byte) error
GetStateValidationParameter(key string) ([]byte, error)
SetPrivateDataValidationParameter(collection, key string, ep []byte) error
GetPrivateDataValidationParameter(collection, key string) ([]byte, error)
注:ep就是endorsement policy背书策略的缩写。是背书策略的二进制数据,以byte数组形式存在。
另外你可以使用KeyEndorsementPolicy接口中的AddOrgs函数将组织的MSPIDs加入进去,然后调用
Policy()函数返回背书策略的数据。KeyEndorsementPolicy接口定义如下:
type KeyEndorsementPolicy interface {
// Policy returns the endorsement policy as bytes
Policy() ([]byte, error)
// AddOrgs adds the specified orgs to the list of orgs that are required
// to endorse
AddOrgs(roleType RoleType, organizations ...string) error
// DelOrgs delete the specified channel orgs from the existing key-level endorsement
// policy for this KVS key. If any org is not present, an error will be returned.
DelOrgs([]string) error
// DelAllOrgs removes any key-level endorsement policy from this KVS key.
DelAllOrgs() error
// ListOrgs returns an array of channel orgs that are required to endorse changes
ListOrgs() ([]string, error)
}
3、分页查询CouchDB状态数据库
客户端可以将chaincode查询返回的结果集进行分页,从而支持高性能的大数据集查询操作。
4、支持Java开发chaincode
目前除支持Go和node.js开发chaincode之外,新增加java开发chaincode的功能。
5、基于通道的节点事件服务
基于通道的节点事件服务原先就存在在工程中(最先发布是在1.1版本中)。但是1.3版本中老的event hub已经作废了,开发者必须切换到新的节点事件服务上来。