热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

pkg/client/channelchannel包

一. pkgclientchannelchannel包:通过包channel可以访问Fabric网络上的频道。频道客户端实例提供处理程序以与指定频道上的peer交互。频道客户端可以

一. pkg/client/channel channel包:通过包channel可以访问Fabric网络上的频道。 频道客户端实例提供处理程序以与指定频道上的peer交互。 频道客户端可以查询链码,执行链码以及注册/取消注册特定频道上的链码事件。 需要与多个频道交互的应用程序应为每个频道创建一个单独的频道客户端实例。



  1. 基本流程

    1. 准备频道客户端上下文

    2. 创建频道客户端

    3. 执行链码

    4. 查询链码


  2. 类型client

    1. type Client struct { // contains filtered or unexported fields }:客户端可以访问Fabric网络上的通道。通道客户端实例提供处理程序以与指定通道上的对等方交互。 需要与多个通道交互的应用程序应为每个通道创建一个单独的通道客户端实例。 通道客户端仅支持非管理功能。


    2. func New(channelProvider context.ChannelProvider, opts ...ClientOption) (*Client, error): New返回Client实例。 通道客户端可以查询链码,执行链码以及注册/取消注册特定通道上的链码事件。



      1. View Code

        输出:channel client created




    3. func (cc *Client) Execute(request Request, options ...RequestOption) (Response, error): 执行使用请求和可选请求选项准备并执行事务


      1. 参数: 

        请求包含有关强制链代码ID和功能的信息
        options包含可选的请求选项

        返回:
        来自peer的提案回复




      2. View Code

        输出:Chaincode transaction completed




    4. func (cc *Client) InvokeHandler(handler invoke.Handler, request Request, options ...RequestOption) (Response, error): InvokeHandler使用提供的请求和可选请求选项来调用处理程序


      1. 参数:

        要调用的处理程序
        请求包含有关强制链代码ID和功能的信息
        options包含可选的请求选项

        返回:
        来自peer的提案回复



      2. 例:
        View Code

        输出:custom




    5. func (cc *Client) Query(request Request, options ...RequestOption) (Response, error): 使用请求和可选请求选项查询链代码


      1. 参数:

        请求包含有关强制链代码ID和功能的信息
        options包含可选的请求选项

        返回:
        来自peer的提案回复



      2. 例:
        View Code

        输出:chaincode query success




    6. func (cc *Client) RegisterChaincodeEvent(chainCodeID string, eventFilter string) (fab.Registration, <-chan *fab.CCEvent, error): RegisterChaincodeEvent注册链代码事件。 不再需要注册时,必须调用取消注册。


      1. 参数:

        chaincodeID是要为其接收事件的链代码ID
        eventFilter是要为其接收事件的chaincode事件过滤器(正则表达式)

        返回:
        注册和用于接收事件的频道。 调用取消注册时,通道将关闭。



      2. 例:
        View Code

        输出:chaincode event registered successfully




    7. func (cc *Client) UnregisterChaincodeEvent(registration fab.Registration): UnregisterChaincodeEvent删除给定的链码事件注册并关闭事件通道。


      1. 参数:registration是从RegisterChaincodeEvent方法返回的注册句柄



  3. 类型ClientOption

    1. type ClientOption func(*Client) error: ClientOption描述了New构造函数的功能参数



  4. 类型Request

    1. type Request struct {
      ChaincodeID string
      Fcn string
      Args [][]byte
      TransientMap map[string][]byte

      // InvocationChain包含一些选择服务实现使用的元数据
      //选择符合所有连锁码背书政策的背书人
      //在调用链中(例如,对于cc到cc的调用)。
      //每个链码也可能与一组私有数据收集名相关联
      //一些选择服务(如e.g.fabric选择)使用这些服务来排除背书人
      //没有对集合的读访问权。
      //被调用的链码(由链码id指定)可以选择添加到调用中
      //链连同任何集合,否则它可能被省略。

      InvocationChain []*fab.ChaincodeCall
      }: Request包含查询和执行调用事务的参数



  5. 类型RequestOption

    1. type RequestOption func(ctx context.Client, opts *requestOptions) error: 每个Opts参数的RequestOption func


    2. func WithBeforeRetry(beforeRetry retry.BeforeRetryHandler) RequestOption: WithBeforeRetry指定在重试尝试之前调用的函数


    3. func WithChaincodeFilter(ccFilter invoke.CCFilter) RequestOption: WithChaincodeFilter添加了一个链代码过滤器,用于计算额外的背书人


    4. func WithParentContext(parentContext reqContext.Context) RequestOption: WithParentContext封装了grpc父上下文


    5. func WithRetry(retryOpt retry.Opts) RequestOption: WithRetry选项用于配置重试


    6. func WithTargetEndpoints(keys ...string) RequestOption: WithTargetEndpoints允许覆盖请求的目标peer。 目标由名称或URL指定,SDK将创建基础peer对象。


    7. func WithTargetFilter(filter fab.TargetFilter) RequestOption: WithTargetFilter指定每请求目标peer过滤器


    8. func WithTargets(targets ...fab.Peer) RequestOption: WithTargets允许覆盖请求的目标peer


    9. func WithTimeout(timeoutType fab.TimeoutType, timeout time.Duration) RequestOption: WithTimeout封装了超时类型的键值对,即Options的超时持续时间



  6. 类型Response

    1. type Response struct {
      Proposal *fab.TransactionProposal
      Responses []*fab.TransactionProposalResponse
      TransactionID fab.TransactionID
      TxValidationCode pb.TxValidationCode
      ChaincodeStatus int32
      Payload []byte
      }: 响应包含查询的响应参数并执行调用事务



  7. 目录

    1. invoke: 包调用提供了执行链代码调用的处理程序。



推荐阅读
  • Asp.net Mvc Framework 七 (Filter及其执行顺序) 的应用示例
    本文介绍了在Asp.net Mvc中应用Filter功能进行登录判断、用户权限控制、输出缓存、防盗链、防蜘蛛、本地化设置等操作的示例,并解释了Filter的执行顺序。通过示例代码,详细说明了如何使用Filter来实现这些功能。 ... [详细]
  • 阿里Treebased Deep Match(TDM) 学习笔记及技术发展回顾
    本文介绍了阿里Treebased Deep Match(TDM)的学习笔记,同时回顾了工业界技术发展的几代演进。从基于统计的启发式规则方法到基于内积模型的向量检索方法,再到引入复杂深度学习模型的下一代匹配技术。文章详细解释了基于统计的启发式规则方法和基于内积模型的向量检索方法的原理和应用,并介绍了TDM的背景和优势。最后,文章提到了向量距离和基于向量聚类的索引结构对于加速匹配效率的作用。本文对于理解TDM的学习过程和了解匹配技术的发展具有重要意义。 ... [详细]
  • 在Android开发中,使用Picasso库可以实现对网络图片的等比例缩放。本文介绍了使用Picasso库进行图片缩放的方法,并提供了具体的代码实现。通过获取图片的宽高,计算目标宽度和高度,并创建新图实现等比例缩放。 ... [详细]
  • IhaveconfiguredanactionforaremotenotificationwhenitarrivestomyiOsapp.Iwanttwodiff ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • 本文讨论了如何在不使用SearchBar display controller的情况下,单独使用SearchBar并捕获其textChange事件。作者介绍了实际状况,即左侧SliderMenu中的SearchBar需要在主页TableView中显示搜索结果。然后,作者提供了解决方案和步骤,帮助读者实现这一功能。 ... [详细]
  • FeatureRequestIsyourfeaturerequestrelatedtoaproblem?Please ... [详细]
  • 前景:当UI一个查询条件为多项选择,或录入多个条件的时候,比如查询所有名称里面包含以下动态条件,需要模糊查询里面每一项时比如是这样一个数组条件:newstring[]{兴业银行, ... [详细]
  • Go GUIlxn/walk 学习3.菜单栏和工具栏的具体实现
    本文介绍了使用Go语言的GUI库lxn/walk实现菜单栏和工具栏的具体方法,包括消息窗口的产生、文件放置动作响应和提示框的应用。部分代码来自上一篇博客和lxn/walk官方示例。文章提供了学习GUI开发的实际案例和代码示例。 ... [详细]
  • 本文讨论了如何在codeigniter中识别来自angularjs的请求,并提供了两种方法的代码示例。作者尝试了$this->input->is_ajax_request()和自定义函数is_ajax(),但都没有成功。最后,作者展示了一个ajax请求的示例代码。 ... [详细]
  • 海马s5近光灯能否直接更换为H7?
    本文主要介绍了海马s5车型的近光灯是否可以直接更换为H7灯泡,并提供了完整的教程下载地址。此外,还详细讲解了DSP功能函数中的数据拷贝、数据填充和浮点数转换为定点数的相关内容。 ... [详细]
  • Android自定义控件绘图篇之Paint函数大汇总
    本文介绍了Android自定义控件绘图篇中的Paint函数大汇总,包括重置画笔、设置颜色、设置透明度、设置样式、设置宽度、设置抗锯齿等功能。通过学习这些函数,可以更好地掌握Paint的用法。 ... [详细]
  • 本文详细介绍了Android中的坐标系以及与View相关的方法。首先介绍了Android坐标系和视图坐标系的概念,并通过图示进行了解释。接着提到了View的大小可以超过手机屏幕,并且只有在手机屏幕内才能看到。最后,作者表示将在后续文章中继续探讨与View相关的内容。 ... [详细]
  • SpringBoot整合SpringSecurity+JWT实现单点登录
    SpringBoot整合SpringSecurity+JWT实现单点登录,Go语言社区,Golang程序员人脉社 ... [详细]
  • Python使用Pillow包生成验证码图片的方法
    本文介绍了使用Python中的Pillow包生成验证码图片的方法。通过随机生成数字和符号,并添加干扰象素,生成一幅验证码图片。需要配置好Python环境,并安装Pillow库。代码实现包括导入Pillow包和随机模块,定义随机生成字母、数字和字体颜色的函数。 ... [详细]
author-avatar
半暖半夏半流年
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有