Hyperledger织物链码(智能合约)基本操作

  

目录   

      <李>链码概念   <李>链码操作李   
  

一。链码概念

  

1。基本概念

  

织物的智能合约称为链码(chaincode),分为系统链码和用户链码。系统链码用来实现系统层面的功能,用户链码实现用户的应用功能。链码被编译成一个独立的应用程序,运行于隔离的码头工人容器中。

  

和以太坊相比,织物链码和底层账本是分开的,升级链码时并不需要迁移账本数据到新链码当中,真正实现了逻辑与数据的分离,同时,链码采用去,Java, Nodejs语言编写。

  

2。数据流向

  

织物链码通过gprc与同行节点交互

  

(1)当同伴节点收到客户端请求的输入(办法)后,会通过发送一个链码消息对象(带输入信息,调用者信息)给对应的链码。

  

(2)链码调用ChaincodeBase里面的调用方法,通过发送获取数据(getState)和写入数据(putState)消息,向同行节点获取账本状态信息和发送预提交状态。

  

(3)链码发送最终输出结果给同行节点,节点对输入(办法)和输出(propsalreponse)进行背书签名,完成第一段签名提交。

  

(4)之后客户端收集所有同行节点的第一段提交信息,组装事务(事务)并签名,发送事务到订货方节点排的队,最终订货人产生区块,并发送到各个同伴节点,把输入和输出落到账本上,完成第二段提交过程。

  

3。链码类型

  

3.1用户链码

  

由应用开发人员使用去(Java/JS)语言编写基于区块链分布式账本的状态及处理逻辑,运行在链码容器中,通过布提供的接口与账本平台进行交互

  

3.2系统链码

  

负责织物节点自身的处理逻辑,包括系统配置,背书,校验等工作

  

系统链码仅支持去语言,在同行节点启动时会自动完成注册和部署

  

系统链码共有五种类型

  

配置系统链码(CSCC)配置系统Chaincode

  

——负责账本和链的配置管理

  

背书管理系统链码(ESCC)支持系统Chaincode

  

——负责背书(签名)过程,并可以支持对背书策略进行管理

  

生命周期系统链码(LSCC)生命周期系统Chaincode

  

——负责对用户链码的生命周期进行管理

  

——链码生命周期包括安装,部署,升级,权限管理,获取信息等环节。

  

查询系统链码(QSCC)查询系统Chaincode

  

——负责提供账本和链的信息查询功能

  

验证系统链码(VSCC)验证系统Chaincode

  

交易提交前根据背书策略进行检查验证过程:

  

(1)首先解析出交易结构,并对交易结构格式进行校验

  

(2)检查交易的读集合中元素版本跟本地账本中版本一致

  

(3)检查带有合法的背书信息(主要是检查签名信息)

  

(4)通过则返回正确,否则返回错误消息

  

二。链码操作

  

管理Chaincode的生命周期四个命令
安装安装
实例化实例化
升级
打升级包包
签名signpackage

  

未来还会支持停止和开始命令,来禁用和重新启用链代码

  

链代码成功安装和实例化后,链代码处于活动状态(正在运行),可通过调用命令调用处理事务

  

链代码可以在安装后随时升级

  

1。启动开发模式

  

(1)下载链码API

  
 <代码>去- u -标签nopkcs11 github.com/hyperledger/fabric/core/chaincode/shim  
  

参数说明:

  

去:根据要求和实际情况从互联网上下载或更新指定的代码包及其依赖包,并进行编译和安装

  

- u:利用网络来更新已有代码包及其依赖包。默认情况下,该命令只会从网络上下载本地不存在的代码包,而不会更新已有的代码包

  

构建:加上可编译的去源文件可以得到一个可执行文件

  

(2)进入开发模式

  

正常情况下chaincode由对等体启动和维护。然而,在“开发模式”下,链码由用户构建并启动,前提保证前期通过docker-compose - f docker-compose-cli。yaml起来- d创建的网络处于关闭状态

  
 <代码> cd/home/bruce/hyfa/fabric-samples/chaincode-docker-devmode
  
  docker-compose - f docker-compose-simple美元。yaml - d//启动开发环境 
  

查看启动的容器

  
 <代码>容器标识图像命令创建状态端口名称
  1 bf418435b45 hyperledger/fabric-ccenv”/bin/bash - c的睡眠…“6秒前4秒chaincode
  96年aa47625135 hyperledger/fabric-tools”/bin/bash - c。/scri…”6秒前4秒cli
  e88a7faa98bc hyperledger/fabric-peer“对等节点开始——p…“7秒前6秒0.0.0.0:7051→7051/tcp 0.0.0.0:7053→7053/tcp同行
  e946e0472e7b hyperledger/fabric-orderer“订货人”8秒前7秒0.0.0.0:7050→7050/tcp订货人

Hyperledger织物链码(智能合约)基本操作