二维码

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

1169 人阅读 | 时间:2021年01月15日 01:17
12.6 系统链码 - 数据结构 - 机器学习 #daohang ul li t,.reed .riqi,a.shangg,a.xiatt,a.shangg:hover,a.xiatt:hover,a.shang,a.xiat,a.shang:hover,a.xiat:hover,.reed-pinglun-anniu,span.now-page,#daohangs-around,#caidan-tubiao,#daohangs,#daohangs li,#btnPost{background-color:#D10B04;} .dinglanyou1 h3{border-bottom:3px solid #D10B04;} #dibuer{border-top:2px solid #D10B04;}.cebianlan .rongqi h3{border-bottom:1px solid #D10B04;} #edtSearch{border:1px solid #D10B04;} #daohang .zuo ul li{border-right:1px solid #;} #daohang ul li t a{border-top:1px solid #;border-right:1px solid #D10B04;} #daohang ul li t a:hover{border-right:1px solid #;} #daohang .you ul li a:hover,#daohang .zuo ul li a:hover,.reed-pinglun-anniu:hover{background-color:#;} a:hover,.reed h6 a:hover,#dibuer a:hover,.reed .riqiding,.cebianlan .rongqi li a:hover,#pinglun-liebiao ul.fubens li.depth-1 dl dd span.shu a,#pinglun-liebiao ul.fubens li.depth-1 dl dd span.huifuliuyan a:hover,.reed-biaoti h6 span{color:#D10B04;} .reed .kan a{color:#0A0AF5;}.reed .kan a:hover{color:#D10101;} @media screen and (max-width:1492px){a.shang,a.xiat{background:none;} a.xiat:hover,a.shang:hover{background-color:#f9f9f9;background-image:none;text-decoration:none;}} var _hmt = _hmt || [];(function() { var hm = document.createElement("script"); hm.src = "https://hm.baidu.com/hm.js?b19db5ba3b437a9e8698d2bc8fc64334"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s);})(); var _hmt = _hmt || []; (function() { var hm = document.createElement("script"); hm.src = "https://hm.baidu.com/hm.js?b19db5ba3b437a9e8698d2bc8fc64334"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s); })(); var _hmt = _hmt || []; (function() { var hm = document.createElement("script"); hm.src = "https://hm.baidu.com/hm.js?2d748c9763cfc72fb7d1ccab29f0770d"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s); })(); var _hmt = _hmt || []; (function() { var hm = document.createElement("script"); hm.src = "https://hm.baidu.com/hm.js?f6d451f3f1be23f3abf240c64c469c1b"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s); })();

当前位置:首页 » 区块链精品文章 » 正文

(function() { var s = "_" + Math.random().toString(36).slice(2); document.write('
'); (window.slotbydup = window.slotbydup || []).push({ id: "u3646201", container: s }); })();
(function() { var s = "_" + Math.random().toString(36).slice(2); document.write('
'); (window.slotbydup = window.slotbydup || []).push({ id: "u3646162", container: s }); })();

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五大类型系统链码

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

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

这些链码的实现都在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

(function() { var s = "_" + Math.random().toString(36).slice(2); document.write('
'); (window.slotbydup = window.slotbydup || []).push({ id: "u3646208", container: s }); })();
(function() { var s = "_" + Math.random().toString(36).slice(2); document.write('
'); (window.slotbydup = window.slotbydup || []).push({ id: "u3646147", container: s }); })();
window._bd_share_config={"common":{"bdSnsKey":{},"bdText":"","bdMini":"2","bdPic":"","bdStyle":"0","bdSize":"16"},"share":{},"image":{"viewList":["qzone","tsina","tqq","renren","weixin"],"viewText":"分享到:","viewSize":"16"},"selectShare":{"bdContainerClass":null,"bdSelectMiniList":["qzone","tsina","tqq","renren","weixin"]}};with(document)0[(getElementsByTagName('head')[0]||body).appendChild(createElement('script')).src='http://bdimg.share.baidu.com/static/api/js/share.js?v=89860593.js?cdnversion='+~(-new Date()/36e5)];
区块链是什么  

微信号:qq444848023    QQ号:444848023

加入【我是码农】QQ群:864689844(加群验证:我是码农)

<< 上一篇 下一篇 >>
(function() { var s = "_" + Math.random().toString(36).slice(2); document.write('
'); (window.slotbydup = window.slotbydup || []).push({ id: "u3646186", container: s }); })();
(function() { var s = "_" + Math.random().toString(36).slice(2); document.write('
'); (window.slotbydup = window.slotbydup || []).push({ id: "u3646175", container: s }); })();
搜索

网站分类

标签列表

最近发表

    (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"));本站资源大部分来自互联网,版权归原作者所有!

jQuery(document).ready(function($){ /* prepend menu icon */ $('#daohangs-around').prepend('
'); /* toggle nav */ $("#caidan-tubiao").on("click", function(){ $("#daohangs").slideToggle(); $(this).toggleClass("active"); }); });

©著作权归作者所有:来自ZhiKuGroup博客作者没文化的原创作品,如需转载,请注明出处,否则将追究法律责任 来源:ZhiKuGroup博客,欢迎分享。

评论专区
  • 昵 称必填
  • 邮 箱选填
  • 网 址选填
◎已有 0 人评论
搜索
作者介绍
30天热门
×
×
本站会员尊享VIP特权,现在就加入我们吧!登录注册×
»
会员登录
新用户注册
×
会员注册
已有账号登录
×