区块链学习8:超级账本项目Fabric中的背书、背书节点、背书策略、背书签名

2023-10-31

☞ ░ 前往老猿Python博文目录

在Hyperledger Fabric区块链中,有背书节点进行背书,Hyperledger Fabric 使用背书策略来定义哪些节点需要执行交易。

Hyperledger Fabric在区块链交易方面采取了一个新颖的思路,将智能 合约的执行与账本的更新分开使它可以提高交易吞吐量,支持更细粒度 的隐私控制,实现更灵活强大的智能合约。而这些特性得以实现的一个 关键因素就是在交易加入账本之前进行显式地交易背书。

1、背书

背书”这个词源来自银行票据业务,传统意义上的背书是指请具有一定公信力的人在票据背面签字以表达对信用的加强和支持,就是让别人提供信誉以及影响力进行支持,让被背书(endorsed)人或者事物提升可信度,更加具有公信力。需要注意的是背书不是担保,而是证明或声明的意思。

老猿认为在区块链中背书可以理解为承担背书任务的节点为区块链交易进行交易信息验证,对验证通过的交易声明此交易合法的过程和机制。

并不是所有区块链都采用了背书机制,比特币和以太坊等公有链一般都不采用背书机制,联盟链中Hyperledger Fabric采用了背书机制。

2、背书节点(endorsement、endorsor)

在区块链中承担背书任务的节点即是背书节点。背书节点必须通过有效证书的预期信息的有效签名来证明其合法性。

3、背书策略

背书策略(endorsement policy)可以理解为是对交易进行背书必须满足的条件,即要得到背书成功的结论,必须满足背书策略中给出的条件。

区块链节点有预先指定的背书策略集,这些背书的条件判断在链码(Chaincode)中实现,所有的交易都必须依据背书策略进行交易,因为只有经过背书处理的交易才是合法、被认可的交易。因此背书策略也可以说就是用来指导被选中的节点(背书节点)如何决策交易是否正确的条件。

由于背书策略是链码,只要能进行链码开发的语言都可以进行背书策略的开发,同一区块链中的链码可以使用多种语言进行开发。

一些背书策略样例:

  • 节点A、B、C和F都需要对类型为T的交易进行背书
  • 通道中的大部分节点必须对类型为U的交易进行背书
  • A、B、C、D、E、F、G中的至少3个节点必须对类型为V的交易进行背书

4、背书验证过程

Fabric交易需要首先通过节点的背书,然后再进行交易排序,最后才利用有序交易进行账本的更新。下面是Fabric背书策略验证过程:

  1. 发起交易的时候,发起端应用一般调用SDK指定交易提议发给一个或多个背书节点进行背书验证,接收提议的背书节点在SDK的交易提议请求中指定,如果未指定,则会将交易提议请求发送给加入该通道的所有节点,发送后客户端应用等待背书节点的返回
  2. 背书节点收到提议后,首先进行一些检查和签名的验证,包括用客户端(SDK)的公钥验证它的签名、核实客户端是否可以在该channel进行操作、交易是否已被提交、交易提议组织是否正确。验证通过后模拟执行chaincode(不会将结果写入到账本里),生成一个提议结果,并对结果进行背书,即在结果中添加数字签名并利用私钥对结果进行签名
  3. 客户端(SDK)收到足够多(背书策略要求)的背书节点的结果后,表示这个交易已经正确背书,然后将交易提议、模拟结果和背书信息打包发给orderer排序节点;如果客户端没有收集到足够多的背书节点反馈的背书信息,这个交易就会被舍弃
  4. Orderer节点对来自客户端(SDK)的信息进行排序,并创建区块,然后在通道channel上进行广播;
  5. channel上的peer节点接收到交易区块后,验证背书策略是否满足,然后更新账本,至此,背书策略的验证过程完成。

参考
1、《Fabric背书策略相关概念与背书验证过程
2、《Fabric交易背书原理及流程
3、《区块链原理之交易背书基本流程(二)

关于老猿的付费专栏

老猿的付费专栏《使用PyQt开发图形界面Python应用》专门介绍基于Python的PyQt图形界面开发基础教程,付费专栏《moviepy音视频开发专栏》详细介绍moviepy音视频剪辑合成处理的类相关方法及使用相关方法进行相关剪辑合成场景的处理,两个专栏加起来只需要19.9元,都适合有一定Python基础但无相关专利知识的小白读者学习。这2个收费专栏都有对应免费专栏,只是收费专栏的文章介绍更具体、内容更深入、案例更多。

付费专栏文章目录:《moviepy音视频开发专栏文章目录》、《使用PyQt开发图形界面Python应用专栏目录》。

关于Moviepy音视频开发的内容,请大家参考《Python音视频剪辑库MoviePy1.0.3中文教程导览及可执行工具下载》的导览式介绍。

对于缺乏Python基础的同仁,可以通过老猿的免费专栏《专栏:Python基础教程目录》从零开始学习Python。

如果有兴趣也愿意支持老猿的读者,欢迎购买付费专栏

☞ ░ 前往老猿Python博文目录

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

区块链学习8:超级账本项目Fabric中的背书、背书节点、背书策略、背书签名 的相关文章

  • 2023美赛ABCDEF各赛题思路浅析

    2023美赛 MCM ICM 如期开赛 为了尽早的帮大家确定选题 这里我们加急为大家编辑出2023美赛 MCM ICM 赛题浅评 方便大家快速对各个题目的难度有个大致的了解 同时 我们也给出了各个题目简要的解题思路 以及该问题在实际解决中可

随机推荐

  • 通俗易懂说单链表(2)链表/环长度、有环,环入口

    通俗易懂说单链表 2 链表 环长度 有环 环入口 1 单链表长度 2 单链表是否有环 2 1 思想 2 2 代码实现 3 单链表环入口 3 1 思想 3 1 1 证明 3 2 代码实现 4 单链表环长度 4 1 思想 4 2 代码实现 5
  • android open gl es error:"called unimplemented OpenGL ES API";

    libEGL called unimplemented OpenGL ES API 1 导致这个问题的原因是manifest中申请的gles版本
  • C++ primer Plus(第六版)第二章 开始学习C++ 章节编程练习答案

    1 编写一个C 程序 它显示您的姓名和地址 完成如下 2 编写一个C 程序 它要求用户输入一个以long为单位的距离 然后将它转化为码 一long为220码 完成如下 3 编写一个C 程序 它使用3个用户定义的函数 包括main 并生成下面
  • 使用SourceTree将本地项目推送至GitLab

    背景 正常一般是先在 GitLab 上建好项目 然后再通过 SourceTree 克隆到本地 但有时候忘记了 直接在本地新建了项目 这个时候想把本地项目也放到 GitLab 上托管 步骤 1 在GitLab上新建一个项目 添加一个READM
  • 前端页面适配之postcss-px-to-viewport

    一 简介 postcss px to viewport 是一个 PostCSS 插件 用于将 CSS 中的 px 单位转换为 vw 或 vh 单位 它可以帮助我们实现在不同屏幕尺寸下的自适应布局 以提高页面的响应性和可用性 二 postcs
  • keil遇到FCARM - Output Name not specified, please check 'Options for Target - Utilities'解决方法

    近期又开始复活学ARM 结果以前很容易就编译通过的事竟然出现意外 提示 FCARM Output Name not specified please check Options for Target Utilities 原因是加载文件时为了
  • Netty的客户端使用Socks5代理,netty-handler-proxy源码浅析

    目录 前言 使用 源码浅析 版本 目录结构 ProxyHandler Socks5ProxyHandler socks5代理服务 待续 前言 需求的出发点是这样 一个netty代理服务 里面有netty服务端 ServerBootstrap
  • 通用路由封装协议--GRE的简单配置

    基于华为设备简单配置GRE GRE 通用路由封装协议 一 GRE是什么 二 GRE有什么用 1 多协议本地网可以通过GRE隧道传输 2 与IPSec结合 保护组播数据 三 GRE怎么用 1 隧道接口 Tunnel接口 2 配置 参考 GRE
  • SpringBoot默认的8080端口在哪?

    配置文件中 点击port 进入到ServerProperties类 ServerProperties这个类中 读取配置文件server开头的配置 定位类文件所在位置 找到对应jar包的META INF下的json文件 端口默认值在json文
  • Spring最佳实践: 构建高效可维护的Java应用程序

    博主猫头虎 带您 Go to New World 博客首页 猫头虎的博客 面试题大全专栏 文章图文并茂 生动形象 简单易学 欢迎大家来踩踩 IDEA开发秘籍专栏 学会IDEA常用操作 工作效率翻倍 100天精通Golang 基础入门篇 学会
  • Spring 基础概念和核心思想

    目录 一 Spring 是什么 1 认识 loC 2 理解 Spring loC 3 DI 概念说明 一 Spring 是什么 我们通常所说的 Spring 指的是 Spring Framework Spring 框架 它是 个开源框架 有
  • 【廖雪峰python入门笔记】变量

    1 静态语言和动态语言中的变量表示 静态语言在定义变量时必须指定变量类型 如果赋值的时候类型不匹配 就会报错 例如Java是静态语言 赋值语句如下 int a 123 a是整数类型变量 a mooc 错误 不能把字符串赋给整型变量 和静态语
  • json-c编译及修改libjson.so动态库名称

    1 git clone https github com json c json c git 功能 获取源码 2 cd json c 功能 进入目录 3 autogen sh 功能 生成configure ac 再生成configure配置
  • 栅栏密码(Fence)——python解密

    简介 所谓栅栏密码 就是把要加密的明文分成N个一组 然后把每组的第1个字连起来 形成一段无规律的话 不过栅栏密码本身有一个潜规则 就是组成栅栏的字母一般不会太多 一般不超过30个 也就是一 两句话 实现 一般比较常见的是2栏的栅栏密码 比如
  • 算法训练营第三十九天(8.30)

    Leecode 123 买卖股票的最佳时机 III 123 买卖股票的最佳时机III 123 买卖股票的最佳时机III 题目地址 力扣 LeetCode 官网 全球极客挚爱的技术成长平台 题目类型 股票问题 class Solution p
  • 前端页面边距设置

    内边距 padding 边框到内容区的距离 padding top 上内边距 padding right 右内边距 padding bottom 下内边距 padding left 左内边距 也可以使用padding设置四个方向的值 pad
  • 现阶段游戏类型

    了解游戏类型 每一个游戏类型下所诞生的游戏产品侧重点略有不同 了解游戏类型并找到属于自己的产品定位 可以在后面的技术定位和实际开发时不至于走许多弯路 更重要的是 当所有参与开发的人员对产品的主要方向已经有了明确的概念时 产品所针对的用户群体
  • CentOS 7.2下Filebeat+Kafka+ELK生产部署(安全加固)

    01架构说明 在需要采集日志的服务器上部署Filebeat服务 它将采集到的日志数据推送到Kafka集群 Logstash服务通过input插件读取Kafka集群对应主题的数据 期间可以使用filter插 数据做自定义过滤解析处理 然后通过
  • Linux基础:如何切换终端

    1 在linux中可以使用命令来切换终端 终端中tty1为图形界面 剩余为命令行界面 2 切换终端的命令为 sudo chvt 2 在终端2中登录用户xu 此时使用who命令或者w命令查看当前系统用户 此时可以看到 终端1图形界面登录的是r
  • 区块链学习8:超级账本项目Fabric中的背书、背书节点、背书策略、背书签名

    前往老猿Python博文目录 在Hyperledger Fabric区块链中 有背书节点进行背书 Hyperledger Fabric 使用背书策略来定义哪些节点需要执行交易 Hyperledger Fabric在区块链交易方面采取了一个新