fabric shim安装合约_智能合约简介_智能合约开发_Hyperledger Fabric_开发指南_区块链服务 BaaS - 阿里云...

概述

在 Hyperledger Fabric 中,链码(Chaincode)又称为智能合约(下文中我们统一称为链码),是用Go,node.js或Java编写的程序,主要用于操作账本上的数据。用户的应用程序通过链码与 Fabric 账本数据进行交互,交互关系如下图:

一个完整的 Fabric 区块链应用包含用户的应用程序和用户编写的链码两部分。用户的应用程序通过区块链网络中部署的的 Peer 节点调用链码,用户链码通过区块链网络的 Peer 节点来操作账本数据。如下图所示:

Fabric 中的 Peer 节点提供了调用链码相关服务的接口。用户的应用程序可以通过调用相关接口和 Fabric Peer 进行交互, Peer 节点通过与链码容器进行交互,完成应用程序和链码之间的交互。

用户的应用程序可以通过以下两种方式与 Fabric Peer 进行交互:

利用 Fabric 提供的 SDK 与 Fabric Peer 进行交互,具体参看 Fabric SDK。

利用阿里云BaaS提供的 API 接口 与 Fabric Peer 进行交互。

生命周期

链码开发编写完成后,并不能直接使用,需要经过一系列的操作之后才能应用在 Hyperledger Fabric 网络中进而处理客户端提交的交易。这一系列的操作是由链码的生命周期来负责管理。

管理 Chaincode 的生命周期主要有如下几个命令:

package: 对指定的链码进行打包的操作。

install: 将已编写完成的链码安装在网络节点中。

instantiate: 对已安装的链码进行实例化。

upgrade: 对已有链码进行升级。链代码可以在安装后根据具体需求的变化进行升级。

Tips:在阿里云BaaS的控制台上,用户可以直接完成链码的上传、安装、实例化等操作,不需要依赖命令行来完成。

链码类型

在 Hyperledger Fabric 中,链码一般分为:

系统链码

用户链码

系统链码

系统链码负责 Fabric 节点自身的处理逻辑, 包括系统配置、背书、校验等工作。系统链码仅支持 Go 语言, 在 Peer 节点启动时会自动完成注册和部署,所以安装,实例化和升级不适用于系统链码。

系统链码主要包括以下几种:

生命周期系统链码(LSCC):Lifecycle System Chaincode,负责对用户链码的生命周期进行管理。

配置系统链码(CSCC):Configuration System Chaincode,负责处理 Peer 端的 Channel 配置。

查询系统链码(QSCC):Query System Chaincode,提供账本查询 API,如获取区块和交易等信息。

用户链码

用户链码是由应用程序开发人员根据业务场景需求使用 Golang、node.js 或 Java 语言编写的操作区块链分布式账本的状态的业务处理逻辑代码,用户链码运行在链码容器中,通过 Fabric 提供的接口与账本状态进行交互。

用户链码在区块链应用上处于非常关键的一环,它直接接受用户业务逻辑的调用,并对区块链分布式账本数据进行操作。

背书策略

每个智能合约都有与之相关的背书策略。该背书策略可确定哪些组织必须批准智能合约生成的交易,然后才能将其确认为有效交易。在上传链码及实例化链码时,需要为其指定对应的背书策略。

背书策略举例:

OR ('Org1MSP.peer','Org2MSP.peer') 表示此通道中的两个组织任何一方背书即可;

AND (‘Org1MSP.peer’,’Org2MSP.peer’) 表示需要此通道中的两个组织背书。

交易执行流程

在 Hyperledger Fabric上,一笔交易的执行需要 Peer节点、orderer节点、CA节点及client端共同参与。

Peer节点 : 该节点是参与交易的主体,可以说是代表每个参与到链上的成员,它负责储存完整的账本数据即区块链数据,负责共识环节中的执行智能合约,验证区块和交易并将合法交易提交(commit)到账本中。

Orderer节点: 该节点接受包含背书签名的交易请求进行排序并打包生产新的区块,主体功能便是对交易排序从而保证各Peer节点上的数据一致性。

CA节点:该节点负责对加入链内的所有节点进行授权认证,包括上层的client端,每一个节点都有其颁发的证书用于交易流程中的身份识别。

client: Fabric对于client端提供了SDK让开发人员可以更容易的对接到区块链内的交易环节,交易的发起便是通过SDK进行。

交易的执行流程主要包含如下4大步骤:

由client端发起一个交易请求,client会根据链码的背书策略决定把该笔交易发往哪些背书的peer节点,由peer节点进行投票,client汇总各背书节点的结果。上图中的背书策略要求Peer1、Peer2及Peer3参与交易,所以client将请求分别发给 Pee1、Peer2 和 Peer3。

三个 Peer 节点接收到交易请求后执行对应的链码并对结果进行签名然后分别将输出结果返回给client。

client将收到所有的执行结果后连同各peer的背书(包括其投票结果以及背书签名)后打包发送给 Orderer节点。

Orderer 将接收到的该次交易在交易池里进行排序并组合打包生成一个新的区块,并将新的区块发送给所有的Peer节点,每个Peer节点接收到新区块后,对其中的每一笔交易结果的签名进行验证是否符合背书策略,以及比对读写集合与本地的版本是否相同,如满足所有条件则将新的区块写入本地账本内完成交易。

注意事项

跨通道的链码间调用

如果被调用链码与调用链码位于不同的通道,则仅允许读取查询。 也就是说,在另一个通道上的被调用链码仅仅是一个查询,它不参与后续提交阶段的状态验证检查。

相同通道下的链码间调用

如果被调用链码与调用链码位于相同通道,则其被调用链码生成的读写集会被加入调用链码对应的交易,即共用同一笔交易而不会产生不同的交易。

链码shim包依赖

链码中需要依赖shim包(ChainCodeStub)来与Peer节点通信,部分语言shim包也提供了扩展接口(例如处理调用者身份)。在链码实例化编译时Peer节点默认提供了与节点版本一致的shim包,如果您的链码依赖其他兼容版本(v1.4.x)的shim包,请一并打包在链码文件中。

2020年4月29日之前创建的节点版本为v1.4.2,之后创建的节点版本为v1.4.5

Golang 依赖: github.com/hyperledger/fabric/core/chaincode/shim、github.com/hyperledger/fabric/protos/peer

Java 依赖:fabric-chaincode-shim-1.4.x.jar、fabric-chaincode-protos-1.4.x.jar

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/507357.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

子集和问题 算法_LeetCode刷题实战90:子集 II

算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试算法面试。所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 !今天和大家…

隐私计算 2.5 Blakley秘密共享方案

1 简介 作者:Blakley;时间:1979年;理念:基于高斯消元法。 2 具体实现 I 秘密分割算法 II 秘密重构算法 3 实例 设秘密S(3,10,5)S (3, 10, 5)S(3,10,5),n5n 5n5, t3t 3t3。 I 秘密分割 &#xff0…

webconfig的解决方案怎么添加_解决在Web.config或App.config中添加自定义配置的方法详解...

解决在Web.config或App.config中添加自定义配置的方法详解本篇文章是对在Web.config或App.config中添加自定义配置的方法进行了详细的分析介绍,需要的朋友参考下.Net中的System.Configuration命名空间为我们在web.config或者app.config中自定义配置提供了完美的支持…

conda如何升级pytorch_Google Cloud TPUs 支持 Pytorch 框架啦!

在2019年PyTorch开发者大会上,Facebook,Google和Salesforce Research联合宣布启动PyTorch-TPU项目。项目的目标是在保持PyTorch的灵活性的同时让社区尽可能容易地利用云TPU提供的高性能计算。团队创建了PyTorch/XLA这个repo,它可以让使PyTorc…

隐私计算 2.6 秘密共享的同态特性

1 秘密共享的同态性 秘密共享的同态性:秘密份额的组合等价于组合的秘密共享份额。 假设A、B两方分别有秘密SAS^ASA和SBS^BSB;他们的值被随机拆分为S1A,…,SnAS_1^A, \dots, S_n^AS1A​,…,SnA​和S1B,…,SnBS_1^B, \dots, S_n^BS1B​,…,SnB​&#xff…

chromiumwebbrowser 使用_用Tchromium替换webbrowser

用惯了EmbeddedWB,不想换,但是IE内核一直存在内存泄漏问题,没办法,只有寻找替代品了。要把用习惯的EmbeddedWB换成完全不一样的TChromium,有点挑战,特别是在资料不多,英语没过三级的情况下。未来趋势是这样…

python是在linux系统下运行的吗_Linux系统下python代码运行shell命令的方法

方法一:os.popen #!/usr/bin/python#-*- coding: UTF-8 -*- importos, sys#使用 mkdir 命令 a lsb os.popen(a,w,1)print b 方法二:os.system #!/usr/bin/python#-*- coding: UTF-8 -*- importos, sys arg0"121.429015"arg1"31.245255&q…

隐私计算 2.7 Shamir门限秘密共享的加法同态性

1 Shamir门限秘密共享的加法同态性 Shamir门限秘密共享方案具有(,)(, )(,)同态的性质,即: SASBFI(S1A,…,StA)FI(S1B,…,StB)FI(S1AS1B,…,StAStB)\begin{array}{l} S^A S^B && F_I(S_1^A, \dots, S_t^A) F_I(S_1^B, \dots, S_t^B)\\ &&a…

pageable设置size_分页工具一Pageable与Page

import org.springframework.data.domain.Pageable;import org.springframework.data.domain.Page;1.Pageable概述Page findByAge(int age, Pageable pageable);Pageable 是Spring Data库中定义的一个接口,用于构造翻页查询,是所有分页相关信息的一个抽象…

二阶龙格库塔公式推导_带你走进最美数学公式

同学们,我们先来跟老师欣赏一下数学中最优美的式子吧?是什么魔力让以上几个似乎毫不相干的数学中最特殊的数字能如此优美的写在同一个式子呢?是欧拉,是数学。0和1——老师就不用介绍啦,e是自然常数(natural constant)&…

python如何做辅助线_角平分线如何做辅助线,学霸总结了4种模型,轻松应付中考...

角平分线2大辅助线思路4种基本模型对称形思路包括3种基本模型,思想都是为了构造全等三角形,然后转换图像中的角度和线段关系。平行线思路则是为了构造一个等腰三角形,通常是为了转移线段关系。双角平分线夹角公式记住这个结论,在选…

隐私计算 2.8 Shamir门限秘密共享的乘法同态性

1 Shamir门限秘密共享的乘法同态性 Shamir门限秘密共享方案具有(,)(\times, \times)(,)同态的性质,即: SASBFI(S1A,…,StA)FI(S1B,…,StB)FI(S1A⊗S1B,…,StA⊗StB)\begin{array}{l} S^A \times S^B && F_I(S_1^A, \dots, S_t^A) \times F_I(S_…

备份数据库的expdp语句_【ORACLE语句备份】数据库表同步 ——定时任务管理器(EXPDP导出,IMPDP导入)...

1、C:\Users\Administrator>sqlplus sys/xxxxxx as sysdba;2、SQL> create directory dbbak4 as e:\app\temp4;3、SQL> grant read,write on directory dbbak4 to xxx;--xxx:源数据库用户名4、SQL> exit;5、备注:还需手动创建目录,否则报错C…

python的setting怎么找_django项目的配置文件settings.py详解

1.2.1 ABSOLUTE_URL_OVERRIDES:默认值:{} 一个字典映射“app_label_module_name”字符串到一个函数,该函数接收一个Model对象作为参数并返回它的url,这是一个安装上覆盖get_absolute_url()方法的方式 1.2.2 ADMIN_FOR:默认值&…

隐私计算 2.9 秘密共享应用于横向联邦学习

1 简介 1.1 横向联邦学习 横向联邦学习也称为按样本划分的联邦学习,主要应用于各个参与方的数据集有相同的特征空间和不同的样本空间的场景,例如两个地区的城市商业银行可能在各自的地区拥有非常不同的客户群体,所以他们的客户交集非常小&a…

array js 二分法_JS常见的算法

虽说我们很多时候前端很少有机会接触到算法。大多都交互性的操作,然而从各大公司面试来看,算法依旧是考察的一方面。实际上学习数据结构与算法对于工程师去理解和分析问题都是有帮助的。如果将来当我们面对较为复杂的问题,这些基础知识的积累…

python缩进说法_【多选题】关于Python程序中与“缩进”有关的说法中,以下选项中错误的是()。...

问题:【多选题】关于Python程序中与“缩进”有关的说法中,以下选项中错误的是()。更多相关问题 因方某将赵某打伤,方某住所地的市劳动教养委员会对方某作出劳动教养2年的决定,并将方某送交劳动 根据行政诉讼…

智能测井解释

1 智能测井解释的需求分析 1、岩性识别 2、储层划分 3、参数计算 4、流体判别 5、井数据批量处理 岩性识别:分类任务 曲线预测、曲线补齐:回归任务 2 岩性识别 2.1 岩性识别主要方法简介 目前岩性识别的方法主要有重磁、测井、地震、遥感、电 磁、地…

wpf 点击按钮弹出选择框_关于WPF的弹出窗口

几个重要的概念需要清楚:Show和ShowDialog区别1、调用Show方法后弹出子窗口后,线程会继续往下执行。调用ShowDialog方法弹出子窗口后,线程会阻塞,直到子窗口关闭才继续往下执行。2、ShowDialog弹出的子窗口会使父窗口不能获得焦点…

基于移动设备的OCR识别工作进展(1)

1 模型调研 模型1:Tesseract-OCR 模型2:PaddleOCR Android上面有体验版的demo:https://ai.baidu.com/easyedge/app/openSource?frompaddlelitePP-OCR模型:https://github.com/PaddlePaddle/PaddleOCR/blob/release/2.5/README_…