Hyperledger Fabric系统链码介绍
在Hyperledger Fabric中,LSCC(Lifecycle System Chaincode)、CSCC(Chaincode System Chaincode)、QSCC(Query System Chaincode)、ESCC(Endorsement System Chaincode)和VSCC(Validation System Chaincode)是五个重要的系统链码。它们各自承担着不同的功能和责任,共同构成了Hyperledger Fabric的核心机制和特性。下面对每个系统链码进行详细介绍:
1. LSCC(Lifecycle System Chaincode):
LSCC是用于管理和控制链码生命周期的系统链码。它提供了一系列操作,用于链码的部署、升级、启用和禁用等。LSCC的主要功能包括:
- 部署链码:LSCC负责将链码安装到Peer节点上,并将其注册到Fabric网络中。
- 升级链码:LSCC允许对已部署的链码进行升级操作,以便应用新的代码或修复漏洞。
- 启用和禁用链码:LSCC允许管理员启用或禁用链码的执行,以控制链码的访问和使用权限。
- 查询链码信息:LSCC提供了查询已部署链码的相关信息,如版本、路径和安装状态等。
2. CSCC(Chaincode System Chaincode):
CSCC用于管理和控制已部署的链码。它提供了查询已部署链码的信息以及对链码的操作接口。CSCC的功能包括:
- 查询已部署链码信息:CSCC提供了查询已部署链码的相关信息,如版本、路径、实例化策略等。
- 安装链码:CSCC负责将链码安装到Peer节点上,并将其注册到Fabric网络中。
- 查询链码定义:CSCC允许查询链码的定义,包括链码的函数和数据结构等。
3. QSCC(Query System Chaincode):
QSCC用于执行一些特定的查询操作,用于获取区块链的状态和元数据。它提供了一些查询接口,包括:
- 查询区块信息:QSCC允许查询特定区块的详细信息,如区块头、交易列表等。
- 查询交易信息:QSCC提供了查询特定交易的详细信息,包括交易的输入输出、签名等。
- 查询账本信息:QSCC允许查询账本的状态和元数据,如当前区块高度、已提交的交易数等。
4. ESCC(Endorsement System Chaincode):
ESCC用于验证和背书交易。在交易的背书阶段,ESCC执行验证逻辑,确保交易满足背书策略和规则。ESCC的主要功能包括:
- 背书交易:ESCC对交易进行验证和背书操作,确保交易满足指定的背书策略。
- 生成背书签名:ESCC负责生成交易的背书签名,作为交易的一部分,用于后续的验证和共识过程。
5. VSCC(Validation System Chaincode):
VSCC用于验证和验证交易。在交易的验证阶段,VSCC执行验证逻辑,确保交易满足共识策略和规则。VSCC的主要功能包括:
- 验证交易:VSCC对交易进行验证操作,确保交易满足共识策略和指定的验证规则。
- 生成验证结果:VSCC生成交易的验证结果,用于确定交易是否通过验证并可以提交到区块链网络。
这些系统链码在Hyperledger Fabric中起着重要的作用,用于管理链码生命周期、查询链码信息、执行验证和背书操作,并提供了核心功能和机制,确保区块链网络的安全性、一致性和可靠性。在开发和部署Fabric网络时,合理理解和使用这些系统链码是至关重要的。
声明:本作品采用署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)进行许可,使用时请注明出处。
Author: mengbin
blog: mengbin
Github: mengbin92
cnblogs: 恋水无意
Hyperledger Fabric系统链码介绍的更多相关文章
- [Hyperledger] Fabric系统中 peer模块的 gossip服务详解
最近一直在看fabric系统中的核心模块之一——peer模块.在看peer的配置文件core.yaml的信息时,对其中的gossip配置选项很感兴趣.看了一上午,还是不能明白这个选项到底什么意思呢?表 ...
- Hyperledger Fabric系统架构
- 死磕hyperledger fabric源码|Order节点概述
死磕hyperledger fabric源码|Order节点概述 文章及代码:https://github.com/blockchainGuide/ 分支:v1.1.0 前言及源码目录 Orderer ...
- Hyperledger Fabric链码之三
在<Hyperledger Fabric链码之一>和<Hyperledger Fabric链码之二>中我们介绍了链码的定义,并通过dev网络测试了测试了自己编写的链码程序. 本 ...
- Hyperledger Fabric链码之二
上篇文章中我们介绍了链码的概念,本文中我们将介绍Fabric下链码的编写和测试.我们会通过一个简单例子的方式来阐述链码API的使用. 链码API 每一个链码程序都必须实现一个接口Chainco ...
- Hyperledger fabric 链码篇GO(四)
Hyperledger fabric 链码篇GO(四) fabric中的链码也就是我们区块链所认知的智能合约,fabric中可由nodejs,java,go编写,本篇只针对GO语言编写链码.将详细介绍 ...
- Hyperledger Fabric无系统通道启动及通道的创建和删除
前言 在Hyperledger Fabric组织的动态添加和删除中,我们已经完成了在运行着的网络中动态添加和删除组织,但目前为止,我们启动 orderer 节点的方式都是通过系统通道的方式,这样自带系 ...
- HyperLedger Fabric Introduction——区块链超级账本介绍
介绍 HyperLedger Fabric是一个基于模块化架构的分布式账本解决方案平台,它拥有深度加密.便捷扩展.部署灵活及可插拔等特性.它设计之初的目的是支持不同组件的可插拔实现,并适应整个经济生态 ...
- Hyperledger Fabric链码之一
什么是链码(Chaincode)? 我们知道区块链有3个发展阶段:区块链1.0,区块链2.0,区块链3.0.其中区块链2.0就是各种区块链平台百花齐放的阶段,区块链2.0最大的特点就是智能合约,我们接 ...
- HyperLedger Fabric部署与链码解读
1.Fabric简介 Fabric是超级账本中的一个项目,用以推进区块链技术.和其他区块链类似,它也有一个账本,使用智能合约,且是一个参与者可以分别管理自身交易的系统.它是一个联盟链.Fabric与其 ...
随机推荐
- 安装KubeOperator并导入现有集群进行管理
安装KubeOperator并导入现有集群进行管理 介绍 KubeOperator 是一个开源的轻量级 Kubernetes 发行版,专注于帮助企业规划.部署和运营生产级别的 Kubernetes 集 ...
- 二进制安装Kubernetes(k8s) v1.24.3 IPv4/IPv6双栈
二进制安装Kubernetes(k8s) v1.24.3 IPv4/IPv6双栈 Kubernetes 开源不易,帮忙点个star,谢谢了 介绍 kubernetes(k8s)二进制高可用安装部署,支 ...
- 进程,Process模块,join方法,ipc机制,守护进程
多道技术: """ 在学习并发编程的过程中 不做刻意提醒的情况下 默认一台计算机就一个CPU(只有一个干活的人) """ 单道技术 所有的程 ...
- laravel 中使用的 PDF 扩展包 laravel-dompdf 和 laravel-snappy
这两天项目中需要将HTML页面转换为PDF文件方便打印,我在网上搜了很多资料.先后尝试了laravel-dompdf和laravel-snappy两种扩展包,个人感觉laravel-snappy比较好 ...
- Java的对象克隆
本节我们会讨论 Cloneable 接口,这个接口指示一个类提供了一个安全的 clone() 方法. Object 类提供的 clone() 方法是 "浅拷贝",并没有克隆对象中引 ...
- Map集合案例:统计输入多个key值出现的次数
某商店想统计一下一天内所售出的商品以及商品的数量,请编写程序帮助实现,并展示.通过键盘录入商品名称模拟售出的商品, 录入一次表示商品售出一次,直到录入end结束.运行效果如下: 代码:
- Array.prototype.at。Arrat和 String 中的 at 方法
一篇有关新 js 特性 at 方法的思考 入参只能是number 类型,允许入参有小数(按照 chrome DevTools Console 测试确实可以带小数) 有返回值,如果对应下标在实例中存在, ...
- day06-优惠券秒杀02
功能03-优惠券秒杀02 4.功能03-优惠券秒杀 4.4一人一单 4.4.1需求分析 要求:修改秒杀业务,要求同一个优惠券,一个用户只能下一单. 在之前的做法中,加入一个对用户id和优惠券id的判断 ...
- 重学C++ (一)基础回顾
由于C++基础非常重要,所以打算把平时重学C++的总结,抽时间上传到博客! 1.切勿乱用带符号类型和无符号类型 #include <iostream> using namespace st ...
- vue中获取所有路由
在router实例上有options属性: