Hyperledger Fabric学习笔记——7.链码安装、实例化、执行

2023-11-16

1.智能合约

  • 执行环境:以太坊虚拟智能合约执行环境EVM,fabric执行环境是docker

  • 链码

    • 是应用层和区块链底层的中间点
    • 每一个链码执行环境是一个独立的docker
    • 使用GRPC协议与背书节点通信,只有背书节点才能运行智能合约
  • 链码的生命周期

    • 打包:智能合约的编写和编译
    • 安装:将打包好的文件,上传到背书节点
    • 实例化:实际安装,执行Init方法,只执行一次,构造函数
    • 升级:升级和修复链码
    • 交互:自己定义的方法的调用
  • 链码的交互流程
    在这里插入图片描述

  • 系统链码(CC:chaincode)

    • LSCC:管理链码的生命周期
    • CSCC:配置管理链码,管理链的配置
    • QSCC:查询账本存储,是一个区块索引的外部服务
    • ESCC:交易背书的链码,交易执行后的链码进行封装签名,给客户端返回背书交易结果
    • VSCC:交易验证的链码
  • 链码编程的接口

    • Init():链码初始化,只执行一次
    • Invoke() :链码的业务逻辑的编写
    • 上面2个方法参数一样,参数是SDK的接口
  • 链码SDK的接口

    • 写代码再看
  • 一些注意点

    • 分布式多机多节点执行,链码会执行多次
    • 不写随机函数,交易会无效,多次执行不一样
    • 不写系统时间,多机时间不一定一样

2.网络搭建配置的实现

  • crypto-config.yaml:用于配置节点的个数,参考firstnetwork编写
  • 编写好后,传到linux对应目录
    在这里插入图片描述
  • 进入deploy目录,设置工作目录为当前目录
    export FABRIC_CFG_PATH=$GOPATH/src/fabric_asset/deploy
  • 指定按照yaml文件生成配置
    cryptogen generate --config=./crypto-config.yaml

  • configtx.yaml:用于区块联盟中的组织信息,配置名字和证书等的位置,参考firstnetwork编写

  • 编写好后,传到linux对应目录
    在这里插入图片描述

  • 创建用于存放配置的目录
    mkdir config
    在这里插入图片描述

  • 生成系统链的创世区块
    -profile:指定联盟配置
    -outputBlock:指定存放的位置
    configtxgen -profile OneOrgsOrdererGenesis -outputBlock ./config/genesis.block

  • 生成通道的创世交易
    -profile:指定业务联盟
    -outputCreateChannelTx:指定存放路径
    -channelID:指定创建名字
    configtxgen -profile TwoOrgsChannel -outputCreateChannelTx ./config/mychannel.tx -channelID mychannel

  • 生成两个组织锚节点的交易信息
    configtxgen -profile TwoOrgsChannel -outputAnchorPeersUpdate ./config/Org0MSPanchors.tx -channelID mychannel -asOrg Org0MSP
    configtxgen -profile TwoOrgsChannel -outputAnchorPeersUpdate ./config/Org1MSPanchors.tx -channelID mychannel -asOrg Org1MSP
    在这里插入图片描述


  • 新建docker-compose.yaml文件并移动到deploy目录下

3.启动网络

  • 启动docker,后台运行(要以管理员身份运行)
    docker-compose up -d

  • 查看orderer节点的运行日志
    docker logs orderer.example.com

  • 与客户端交互操作
    docker exec -it cli bash

  • 创建通道
    -o:指定与哪个orderer节点通信
    -c:指定创建的通道名称
    -f:指定使用的文件
    peer channel create -o orderer.example.com:7050 -c mychannel -f /etc/hyperledger/config/mychannel.tx

  • 加入通道
    peer channel join -b mychannel.block

  • 查看peer加入的通道列表
    peer channel list

  • 指定主节点
    peer channel update -o orderer.example.com:7050 -c mychannel -f /etc/hyperledger/config/Org1MSPanchors.tx


  • 安装链码
    -n:安装的名字
    -v: version
    -l:使用语言
    -p:path
    peer chaincode install -n badexample -v 1.0.0 -l golang -p github.com/chaincode/badexample
  • 克隆一个会话,交互执行peer0,查看安装的链码
    docker exec -it peer0.org1.example.com bash
    cd /var/hyperledger/production/chaincodes/
    在这里插入图片描述
  • 链码实例化
    peer chaincode instantiate -o orderer.example.com:7050 -C mychannel -n badexample -l golang -v 1.0.0 -c '{"Args":["init"]}'
  • 链码交互执行
    peer chaincode query -C mychannel -n badexample -c '{"Args":[]}'
  • 多次执行查询,得到的结果不同,因为invoke()中使用了随机数,不要这么做

4.网络关闭

  • 退出客户端
    exit
  • 在deploy目录下关闭docker
    docker-compose down
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Hyperledger Fabric学习笔记——7.链码安装、实例化、执行 的相关文章

  • 一个将XM音频导入小宇宙的工具

    这个喜马拉雅语音导出工具 能够帮助你导出喜马拉雅中的音频节目 下载后的音频文件 可以复制到小宇宙设备文件夹里面 这样我们就可以用小宇宙播放我们导入的音频文件啦 windows电脑版 https jscs lanzouw com imVZ40
  • 负载均衡原理分析与源码解读

    上一篇文章一起学习了Resolver的原理和源码分析 本篇继续和大家一起学习下和Resolver关系密切的Balancer的相关内容 这里说的负载均衡主要指数据中心内的负载均衡 即RPC间的负载均衡 传送门 服务发现原理分析与源码解读 基于
  • 强化学习之Grid World的时序差分算法解析【MiniWorld】SYSU_2023SpringRL

    强化学习之Grid World的Monte Carlo算法解析 MiniWorld SYSU 2023SpringRL 题目以及思路 代码 运行结果 算法解析 代码算法流程 题目以及思路 环境在这篇博客强化学习原理及应用作业之动态规划算法
  • c语言输出斐波那契数列前40项

    分析 对于斐波那契数列数列来说 就是前一项和前前一项的和 就是当前项 就比如 1 1 2 3 5 其中2就是1 1 3就是1 2 5就是2 3 所以 在c语言中就可以定义数组的方式 去实现 当然 如果一行输出 不美观 于是利用if语句 将i
  • Streamlit项目: 轻松搭建部署个人博客网站

    文章目录 1 前言 1 1 探索 Streamlit 轻松创建交互式应用 1 2 最全 Streamlit 教程专栏 2 我的个人博客网站已上线 2 1 一个集成了智能中医舌诊 中e诊专栏的博客网站 2 2 前期准备 2 3 使用 Stre
  • MS-RTOS 内核模块动态装载

    1 MS RTOS 内核模块动态装载简介 MS RTOS 支持内核模块动态装载功能 用户可以根据需要 在不需要对内核重新编译的情况下 使用 insmod rmmod 等命令动态地将模块加入或移出内核 这样可以提高 MS RTOS 的灵活性
  • 使用clion链接liunx同步项目并编译

    一 clion的下载和安装 下载官网CLion A Cross Platform IDE for C and C by JetBrains 安装后有30天使用日期 学生可以获得免费教育许可证JetBrains 学习产品 二 clion项目的

随机推荐

  • 注解方式、ServletContext 与 ServletConfig和请求

    回顾 http 协议的定义和组成 请求行 请求头 请求体 响应行 响应头 响应体 常见响应状态码的含义 200 成功 404 未找到 405 方法不支持 500 服务器出现异常 常见请求头 Host 主机 User Agent 客户端类型
  • HarmonyOS云开发基础认证练习题

    系列文章目录 HarmonyOS应用开发者基础认证练习题 HarmonyOS应用开发者高级认证练习题 HarmonyOS云开发基础认证练习题 文章目录 系列文章目录 前言 一 判断 二 单选 三 多选 前言 本文所有内容来源于个人进行Har
  • kali 上下载GitHub文件失败

    出现 Failed to connect to github com port 443 Connection refused 把命令 git clone https github com git 换成 git clone git githu
  • 用Excel做简单的数据分析

    一 使用的数据 1 做月销量的柱状图 按住Ctrl可跨区选中 1 选中数据 2 选择柱状图 一般柱状图都使用2D 3 为图加上数据标签 更加直观 2 以同样的方式做饼图 1 如图 一般饼图都是做3D的 3 求月销售额 单价 X 月销量 1
  • 使用VS Code进行Qt开发

    使用VS Code进行Qt开发 文章目录 使用VS Code进行Qt开发 测试环境 步骤 1 将Qt的bin目录添加到环境变量 2 安装VS Code扩展 3 使用Qt Creator创建CMake项目 4 在VS Code中打开项目 5
  • C#学习笔记--关于银行存取款的小实验

    C 面向对象程序设计 编程模拟实现个人银行的存款业务 要求 1 提供两种账户 活期存款账户CheckingCustom和定期存款账户FixedCustom 2 创建活期账户时 必须提供账户名和开户金额 而账号则根据存款分类自动生成 3 不论
  • LeetCode 刷题 454

    看完的想法就是暴力解 不过 不用想都知道超时了 想了一会还是没有思路 就去学习一下别人怎么做的 感觉就是二数相加 再灵活一点 这没想到 还是练得少了 四个数组 两两分组 第一组 遍历 相加 将各个和的个数存入map中 第二组 查找 0于各个
  • Unfortunately you can‘t have non-Gradle Java modules and Android-Gradle modules in one project

    解决步骤 Close Project Close Android Studio IDE 删除 idea 目录和 iml 文件 Open Android Studio IDE And Project 步骤转自 https blog csdn
  • 高并发下接口幂等性的解决方案

    欢迎关注方志朋的博客 回复 666 获面试宝典 一 背景 我们实际系统中有很多操作 是不管做多少次 都应该产生一样的效果或返回一样的结果 例如 前端重复提交选中的数据 应该后台只产生对应这个数据的一个反应结果 我们发起一笔付款请求 应该只扣
  • js连接web3,连接小狐狸metamask钱包,实现链不对后切换网络和创建网络

    直接上代码 我这里吧所有配置都改成正式的链56 一旦用户的小狐狸钱包现在的链不一致 就询问切换网络 没有就创建网络 网络切换成功后 收到监听 重新连接一下web3 就是重新调用一些connectWeb3这个方法 再连接合约 connectW
  • 20230918使用ffmpeg将mka的音频转为AAC编码以便PR2023来识别

    20230918使用ffmpeg将mka的音频转为AAC编码以便PR2023来识别 2023 9 18 20 58 ffmpeg i 1 mka acodec aac 1 mp4 ffmpeg i 1 mka vn c a aac 2 aa
  • MYSQL  Replication  主从配置

    MYSQL Replication 主从配置 MySQL Replication 又叫做AB复制或者主从复制 它主要用于MySQL的实时备份或者读写分离 在配置之前先做一下准备工作 配置两台mysql服务器 或者在一台服务器上配置两个端口也
  • IAR for AVR中的位定义使用

    目的 打开IAR for AVR中的位定义 在单片机的编程中 经常会遇到 UCSRB 1 lt lt TXEN 这样的表达式 查看定义可以在头文件中看到 define TXEN 3 表示的是 1 lt lt TXEN 是将1左移3位 然后赋
  • 使用 pandas 导出数据

    import pandas as pd In 58 df pd DataFrame houselist In 59 df In 61 df to csv lianjia 转载于 https www cnblogs com polly lin
  • 字符串 反转

    LC 反转字符串 swift 实现 var s Character h e l l o reversString s print s func reversString s inout Character var temp Characte
  • SQLServer 数据 迁移转到Mysql 中

    目录 一 SQLServer 转Mysql 的几种方法 二 DB2DB 使用 2 1 迁移出错后的报错日志 三 补齐出现问题的表 问题 原因 解决 一 SQLServer 转Mysql 的几种方法 sqlServer 转mysql 最大的问
  • vue3(二)配置标题和服务代理

    这里的标题如何改成自己的标题 第一步 修改vue config js transpileDependencies true chainWebpack config gt config plugin html tap args gt args
  • android广播数据大小限制,android 限制广播消息的接收者

    原文 http blog csdn net mingli198611 article details 17762149 在android系统中sendBroadcast和BroadcastReceiver 只要BroadcastReceiv
  • Linux学习(未完待续。。。)

    安装好ubuntu 并且注册用户成功后 给root设置密码 sudo passwd root 先输入自己的密码 然后输入root的密码 再确认 密码都是不可见的 不是键盘坏了 显示日期格式 date Y m d H M S m month
  • Hyperledger Fabric学习笔记——7.链码安装、实例化、执行

    1 智能合约 执行环境 以太坊虚拟智能合约执行环境EVM fabric执行环境是docker 链码 是应用层和区块链底层的中间点 每一个链码执行环境是一个独立的docker 使用GRPC协议与背书节点通信 只有背书节点才能运行智能合约 链码