12.6 系统链码 - 数据结构 - 机器学习
数据结构 - 机器学习
深度学习

当前位置:首页 » 区块链精品文章 » 正文
12.6 系统链码
1384 人参与 2018年09月29日 11:18 分类 : 区块链精品文章 评论
系统链码(System Chaincode)是超级账本Fabric项目在设计上的一大创新。
通过上一小节的阅读,相信读者已经了解,最常见的用户应用链码(User Application Chaincode),由应用开发者来编写逻辑,运行在链码容器中,通过Fabric提供的有限接口与账本平台进行交互。
而系统链码则负责Fabric节点自身的处理逻辑,包括系统配置、背书、校验等工作。这些处理过程最初通过硬编码 (Hard-Coded)的方式固化在系统中。Fabric通过系统链码的形式来实现,运行在Peer主进程内,兼顾了逻辑实现和管理的灵活性,以及通信 的性能。
系统链码目前仅支持Go语言,在Peer节点启动时会自动完成注册和部署,以进程内逻辑形式跟主进程进行交互。
目前,Fabric中包括五大类型的系统链码,主要功能如表12-4所示。
表12-4 Fabric五大类型系统链码
这些链码的实现都在fabric/core/scc路径下,下面分别予以讲解。
1.配置系统链码
Configuration System Chaincode,即配置系统链码,顾名思义,是负责配置管理的系统链码,支持被从链外进行调用。
CSCC主要代码实现在core/scc/cscc路径下,目前支持如下类型的Invoke方法:
·JoinChain:当某个节点申请加入某条通道时被调用。负责根据传入的初始区块参数生成所加入通道的创世区块,并完成账本、通道相关数据结构的初始化工作。调用后,节点本地将维护所加入通道的数据结构,并创建初始区块;
·GetConfigBlock:当需要获取节点在某个通道上配置时候被调用。该方法获取指定通道的配置区块(未更新时等价于初始区块)的内容;
·UpdateConfigBlock:当需要更新节点在某个通道上的配置时被调用。根据传入的区块数据生成区块结构,替换掉现有的配置区块结构。替换后,配置区块数据将跟该通道内的初始区块不再一致;
·GetChannels:需要获取到节点所加入所有通道列表时被调用。该方法获取该节点已经加入的所有通道的信息。
2.背书管理系统链码
Endorsement System Chaincode,即背书管理系统链码。负责背书(签名)过程,并可以支持对背书策略进行管理,仅支持链内系统调用。
ESCC主要代码实现在core/scc/escc路径下,目前提供了Invoke方法,会对传入的链码提案的模拟运行结果进行签名,之后创建响应消息返回给客户端。
3.生命周期系统链码
Lifecycle System Chaincode,即生命周期系统链码,负责对用户链码的生命周期进行管理,支持被从链外进行调用。
LSCC主要代码实现在core/scc/lscc路径下。
链码的生命周期包括安装、部署、升级、权限管理、获取信息等环节。这些操作都可以通过对LSCC进行Invoke来实现:
·INSTALL:安装意味着将用户链码相关文件打包,放置到节点的文件系统,默认在/var/hyperledger/production/chaincodes/路径下面;
·DEPLOY:意味着链码被部署和实例化(Instantiate),生成链码容器。在此过程中会检查通道的ACL,从本地拿到链码数据,检查Instantiation Policy;
·UPGRADE:升级链码时被调用。检查Instantiation Policy,通过则对本地文件进行替换,并生成新的链码容器;
·GETCCINFO:获取链码信息时被调用。检查节点对该通道是否有读权限,通过则返回指定链码的信息;
·GETCCDATA:获取链码数据时被调用。检查节点对该通道是否有读权限,通过则返回指定链码的完整数据;
·GETCHAINCODES:获取节点在通道上的链码信息,检查节点是否具有管理员权限,通过则返回在通道上的所有的链码信息,包括已安装和已实例化的。
4.查询系统链码
Query System Chaincode,查询系统链码,负责提供一些账本和链信息的查询方法,包括GetChainInfo、GetBlockByNumber、 GetBlockByHash、GetTransactionByID、GetBlockByTxID等,支持被从链外进行调用。QSCC主要代码实现在 core/scc/qscc路径下:
·GetChainInfo:获取区块链的信息,包括高度值、当前区块Hash值、上一个区块Hash值等;
·GetBlockByNumber:根据给定的高度,返回对应区块的数据;
·GetBlockByHash:根据给定的区块头Hash值,返回对应区块的数据;
·GetTransactionByID:根据给定的TxID,返回对应交易的数据;
·GetBlockByTxID:根据给定的TxID,返回包含该交易的区块的数据。
5.验证系统链码
Verification System Chaincode,验证系统链码,负责担任Committer角色的节点对从Orderer收到的一批交易进行写入前的再次验证,仅支持链内系统调用。
VSCC主要代码实现在core/scc/vscc路径下。该链码比较简单,提供了Invoke方法,其主要过程为:
·首先解析出交易结构,并对交易结构格式进行校验;
·检查交易的读集合中元素版本跟本地账本中版本一致;
·检查带有合法的背书信息(目前主要是检查签名信息);
·通过则返回正确,否则返回错误消息。
来源:我是码农,转载请保留出处和链接!
本文链接:http://www.54manong.com/?id=900
微信号:qq444848023 QQ号:444848023
加入【我是码农】QQ群:864689844(加群验证:我是码农)
- 11.2.1 大中型机时代2018-09-30 13:55
- 1.4 DApp中的用户账户2018-09-18 09:58
- 互联网技术创新2018-08-28 14:21
- 4.9 知识点导图2018-08-25 17:18
网站分类
- 数据结构
- 数据结构视频教程
- 数据结构练习题
- 数据结构试卷
- 数据结构习题解析
- 数据结构电子书
- 数据结构精品文章
- 区块链
- 区块链精品文章
- 区块链电子书
- 大数据
- 大数据精品文章
- 大数据电子书
- 机器学习
- 机器学习精品文章
- 机器学习电子书
- 面试笔试
- 物联网/云计算
标签列表
- 数据结构 (39)
- 数据结构电子书 (20)
- 数据结构习题解析 (8)
- 数据结构试卷 (10)
- 区块链是什么 (261)
- 数据结构视频教程 (31)
- 大数据技术与应用 (12)
- 百面机器学习 (14)
- 机器学电子书 (29)
- 大数据电子书 (37)
- 程序员面试 (10)
- RFID (21)
最近发表
- 找出数组中有3个出现一次的数字
- 《百面机器学习》电子书下载
- 区块链精品电子书《深度探索区块链:Hyperledger技术与应用_区块链技术丛书》张增骏
- 区块链精品电子书《比特币:一个虚幻而真实的金融世界》
- 区块链精品电子书《图说区块链》-徐明星 & 田颖 & 李霁月
- 区块链精品电子书《是非区块链:技术、投机与泡沫》-英国《金融时报》
- 区块链精品电子书《商业区块链:开启加密经济新时代》-威廉·穆贾雅
- 区块链精品电子书《人工智能时代,一本书读懂区块链金融 (互联网_时代企业管理实战系列)》-马兆林
-
(function(){
var bp = document.createElement('script');
var curProtocol = window.location.protocol.split(':')[0];
if (curProtocol === 'https'){
bp.src = 'https://zz.bdstatic.com/linksubmit/push.js';
}
else{
bp.src = 'http://push.zhanzhang.baidu.com/push.js';
}
var s = document.getElementsByTagName("script")[0];
s.parentNode.insertBefore(bp, s);
})();
全站首页 | 数据结构 | 区块链| 大数据 | 机器学习 | 物联网和云计算 | 面试笔试
var cnzz_protocol = (("https:" == document.location.protocol) ? "https://" : "http://");document.write(unescape("%3Cspan id='cnzz_stat_icon_1276413723'%3E%3C/span%3E%3Cscript src='" + cnzz_protocol + "s23.cnzz.com/z_stat.php%3Fid%3D1276413723%26show%3Dpic1' type='text/javascript'%3E%3C/script%3E"));本站资源大部分来自互联网,版权归原作者所有!
评论专区