zoukankan      html  css  js  c++  java
  • fabric链码

    链码

    Fabric的智能合约称为链码(chaincode),分为系统链码和用户链码。系统链码用来实现系统层面的功能,用户链码实现用户的应用功能。链码被编译成一个独立的应用程序,运行于隔离的Docker容器中。
    和以太坊相比,Fabric链码和底层账本是分开的,升级链码时并不需要迁移账本数据到新链码当中,真正实现了逻辑与数据的分离,同时,链码采用Go、Java、Nodejs语言编写。

    链码类型

    • 系统链码:负责Fabric节点自身的处理逻辑, 包括系统配置、背书、校验等工作,系统链码仅支持Go语言, 在Peer节点启动时会自动完成注册和部署,系统链码共有五种类型:
      - 配置系统链码(CSCC——Configuration System Chaincode):负责账本和链的配置管理
      - 背书管理系统链码(ESCC——Endorsement System Chaincode):负责背书(签名)过程, 并可以支持对背书策略进行管理
      - 生命周期系统链码(LSCC——Lifecycle System Chaincode):负责对用户链码的生命周期进行管理,链码生命周期包括安装、部署、升级、权限管理、获取信息等环节.
      - 查询系统链码(QSCC——Query System Chaincode):负责提供账本和链的信息查询功能
      - 验证系统链码(VSCC——Verification System Chaincode):交易提交前根据背书策略进行检查 验证过程:(1) 首先解析出交易结构, 并对交易结构格式进行校验;(2) 检查交易的读集合中元素版本跟本地账本中版本一致;(3) 检查带有合法的背书信息(主要是检查签名信息);(4) 通过则返回正确, 否则返回错误消息
    • 用户链码:由应用开发人员使用Go( Java/JS)语言编写基于区块链分布式账本的状态及处理逻辑,运行在链码容器中, 通过Fabric提供的接口与账本平台进行交互

    安装,实例化链码

    安装链码,其中:ccPath是相对$GOPATH/src的路径;ccType为链码的编程语言,默认为golang,且支持node,car,java:

    peer chaincode install -n ${ccName} -v ${ccVersion} -p ${ccPath} -l ${ccType}
    

    链码安装并未产生交易,因此不会影响通道内的其它peer节点,可以说链码安装是一个本地操作。
    实例化链码:

    peer chaincode instantiate -o ${ordererAddr} -C ${channelName} -n ${ccName} -v ${ccVersion} -c ${InitArgs} -P ${EndorserPolicy}
    

    其实链码实例化,就是一笔特殊的交易,链码在某个节点实例化后,实例化的信息就被广播到通道内的所有节点了。如果其它节点再次实例化,自然就会冲突。通道内的其它peer节点,只是同步了世界状态,并不需要调用被实例化链码的Init,也就不会创建镜像,并启动链码容器了。

  • 相关阅读:
    如何实现九宫格布局-----源码如下
    查询出的数据记录字段要与实体类中的属性名一致
    2016/12/14---- C3P0
    Spring的数据库操作---- Spring框架对JDBC的整合 ---- 初始化JdbcTemplate对象
    Spring的数据库操作---- Spring框架对JDBC的整合---- 初始化连接池数据源对象
    Spring的数据库操作---- Spring框架对JDBC的整合---- Spring的数据库操作
    Spring的数据库操作---- Spring框架对JDBC的整合---- spring集成jdbc概述
    Spring的AOP机制---- AOP的注解配置---- AOP的注解配置
    Spring的AOP机制---- 切入点表达式---- 切入点表达式
    Spring的AOP机制---- AOP环绕通知---- AOP环绕通知
  • 原文地址:https://www.cnblogs.com/HachikoT/p/14268900.html
Copyright © 2011-2022 走看看