区块链开发指南_区块链软件开发详解

2023-10-27

开发业务层区块链应用

Hyperledger fabric目前支持java,nodejs,go和python语言的sdk,供用户选择用不同的语言开发上层应用,使用相应的sdk调用部署在区块链上的链码。以下示例中我们选择使用go语言开发业务层应用。

步骤1:配置fabric sdk

Hyperledger fabric官方提供了我们需要的go sdk文件包。目前BCS服务使用的版本commit号是035e4f9。

我们需要为fabric sdk生成相应的配置文件和访问区块链节点的组织证书。SDK配置文件主要包括要访问的链码名称/版本、证书解压的目录位置、实例化链码的通道,安装链码的节点组织/名称。在订购的区块链服务状态中的点击中的“下载SDK配置“会弹出配置窗口,完成sdk配置。

SDK配置文件下载界面

配置SDK文件下载界面

在订购的区块链服务状态列表页面上可以查看每个节点的状态以及相应的证书下载功能,我们需要下载相关的证书到sdk的配置文件所指定目录中,使得业务应用可以和区块链节点正常的进行通讯。显示了orderer节点和peer节点的证书下载链接。

orderer节点和peer节点的证书下载

步骤2:编写业务应用代码

合理配置sdk与区块链节点peer的通信后,业务层应用代码仅需对接链码的invoke和query的方法。以下示例中我们使用sdk提供的接口ChannelClient,即先通过加载sdk配置文件生成一个sdk实例,然后传入通道名称和用户信息生成一个ChannelClient对象,最后使用该ChannelClient发起一笔执行链码的交易。

在业务应用代码中定义好一个链码的数据结构ChainCodeSpec,包括ChannelClient对象、 用户信息和链码名称等,在ChannelClient初始化时给其赋值。将链码的invoke和query方法定义成结构体方法,可以很简单的在发起交易的时候完成数据传递

步骤3:测试业务应用代码

下面我们简单的定义一个main方法来测试一下我们的代码。首先声明之前在链码管理网站实例化的链码信息,即链码名称chaicodetest,实例化的通道名称testchannel,用户使用的是组织内的普通用户。其次,定义两个测试方法创建测试用例和查询测试用例。

创建测试用例create_testcases需要按顺序传入4个参数即项目名称、模块名称、测试用例名称和测试用例描述,调用invoke方法将一次交易写入区块链。查询测试用例query_testcases方法传入项目名称和模块名称,查询测试用例信息。

之后我们使用go run来执行这个测试用例,我们可以看到已经生成testchannel实例并与区块链节点建立连接。为了确认交易是否正常,链码是否正确保存之前用例的复合键值索引,我们登陆区块链节点并用“docker logs <容器id>”命令我们可以看到为每笔交易创建的区块。链码容器也可检查我们之前链码打印的日志来确定是否可以正确查询测试用例。

查看区块链节点peer中的运行结果

链码运行结果

本文通过一个简单的例子介绍如何通过华为云提供的区块链服务快速的开发和搭建起一个应用,用户可以根据所需的场景,基于本文的示例部署区块链服务,开发链码和业务层应用。

点击下方链接即可体验区块链服务 !

http://www.av587.com http://www.qiao1.com

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

区块链开发指南_区块链软件开发详解 的相关文章

  • 【ARIMA-WOA-LSTM】合差分自回归移动平均方法-鲸鱼优化-长短期记忆神经网络研究(Python代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 1 1 ARIMA模型 1 2 鲸鱼优化算法 1 3 LSTM 模型 2 运行结果 3 参考文献 4 Py
  • js数组对象取出指定元素相同的对象组成新数组

    要处理的数组 name 小明 age 18 address 天上 name 小红 age 19 address 地里 name 小明 age 20 address 叙利亚 name 小明 age 5 address 娘胎 想处理成 name
  • C++编译知识笔记(二)——Linux ELF文件解析

    目录 一 ELF格式概述 二 常见段及对应用途 三 目标文件内容解析 3 1 代码段 text 3 2 只读数据段 rodata 3 3 数据段 data 3 4 bss段 3 5 重定位表 Reloacation Table 相关段 re
  • Flink简单教学4-编程模型

    编程模型 此章编程模型是重点 理解Flink是如何工作的 虽然不涉及代码但非常有必要花时间阅读 2 4 节为重点 1 层次抽象 Levels of Abstraction 从底向上 抽象程都由低到高 以下说明了解以下即可 最低层次的抽象仅仅
  • 献给初学iOS的小盆友们------微博app项目开发之一项目初始化

    献给初学iOS的小盆友们 微博app项目开发之一 项目初始化 本人自学iOS也有七八个月了 不敢说学到很深入了 但也算入了门 此次微博app项目参考了传智播客培训教材 主要学习内容有架构思想 封装思想 代码重构 业务逻辑等内容 项目涵盖面广
  • 关于解决java环境配置好jdk但是在cmd中输入java等指令无反应的问题

    这是一个初学者经常犯的错误 在我们使用cmd窗口编译运行java文件时 有时候可以运行指令 但是环境变量就是一个很玄学的东西 可能你上午还在用cmd但是下午就不能用了 我这里有一种最简单的最容易理解和排除的方法 适用于你非常确定电脑上已经安
  • 十分钟弄懂最快的APP自动化工具uiautomator2(入门到精通)

    目录 导读 前言 一 介绍 二 环境部署 三 编写百度贴吧首页脚本 四 uiautomator2和appium运行速度比较 前言 相信很多使用appium做过APP自动化的人都深有感触 appium运行慢 时间长 uiautomatorvi
  • 批量将csv转换成shp

    转载 https blog csdn net u012131430 article details 90105857 根据自己的需求 对代码进行适当修改 并可以实现 输入数据 一个文件夹下所有csv数据 输出数据 一个文件夹下shp文件 具
  • Python 进阶(三):邮件的发送与收取

    1 发送邮件 SMTP 全称 Simple Mail Transfer Protocol 中文译为简单邮件传输协议 它能跨越网络传输邮件 可实现相同网络处理进程之间的邮件传输 也可通过中继器或网关实现进程与其他网络之间的邮件传输 Pytho
  • 查看svn账号密码

    参考他人链接 https blog csdn net Amnesiac666 article details 121355958 1 找到svn存放目录 窝的本地 C Users lenovo AppData Roaming Subvers
  • 编写高质量代码:改善Java程序的151个建议(第9章:多线程和并发___建议118~124)

    多线程技术可以更好地利用系统资源 减少用户的响应时间 提高系统的性能和效率 但同时也增加了系统的复杂性和运维难度 特别是在高并发 大压力 高可靠性的项目中 线程资源的同步 抢占 互斥都需要谨慎考虑 以避免产生性能损耗和线程死锁 建议118
  • TOPSIS算法与熵权法

    TOPSIS算法 英文全称Technique for Order Preference by Similarity to Ideal Solution 翻译为逼近理想解排序法 使用层次分析法进行评价时 n不能很大 最多就15个 再多就没有随
  • GPT,GPT-2,GPT-3,InstructGPT的进化之路

    ChatGPT 火遍圈内外 突然之间 好多人开始想要了解 NLP 这个领域 想知道 ChatGPT 到底是个什么 作为在这个行业奋斗5年的从业者 真的很开心让人们知道有一群人在干着这么样的一件事情 这也是我结合各位大佬的文章 总结下GPT
  • Encode and Decode TinyURL

    TinyURL is a URL shortening service where you enter a URL such as https leetcode com problems design tinyurl and it retu
  • 服务器运维基础知识,IDC机房服务器运维基础知识

    机房的服务器的维护是机房运维工作的重点 合理的机房环境对于服务器来说是非常的重要的 随着这年经济的发展 机房也在不断的在很多的方面进行调整 今天我们学习IDC机房服务器运维基础知识 1 关于电力 1 定期检测机房内市电及 UPS 电源是否稳
  • 目标跟踪检测算法(二)——检测与跟踪

    第二阶段 2010年 2012年 检测与跟踪相结合的方法出现 在该阶段 对已存的目标追踪算法出现了两种比较公认的分类 一种是基于生成模型的方法 一种是基于判别模型的方法 在第一阶段中的方法都属于前一种 而基于判别的方法是指通过分类来做跟踪
  • 深入梯度下降(Gradient Descent)

    深入梯度下降 Gradient Descent 算法 1 问题的引出 对于吴恩达的线性回归 先化一个为一个特征 1 0为偏置项 最后列出的误差函数如下图所示 手动求解 目标是优化J 1 其实就是神经网络里面的loss函数 使得loss值最小
  • 事件响应步骤:安全响应的6个步骤

    当发生安全事件时 每一秒都很重要 恶意软件感染迅速蔓延 勒索软件可能造成灾难性破坏 被破坏的帐户可用于特权升级 从而使攻击者获得更敏感的资产 无论您的组织规模大小 您都应该拥有一支训练有素的事件响应团队 负责在事件发生时立即采取行动 请继续
  • 关于vue中的Pinia的介绍

    Pinia是什么 Pinia是vue的专属状态库 允许开发者跨组件或页面共享状态 他是一个拥有组合式API的Vue状态管理库 支持vue2和vue3 有三个概念 state getter 和 action 我们可以假设这些概念相当于组件中的

随机推荐

  • (c语言)输入两个数字,分别计算并输出这两个数字的和、差、乘积、商

    include
  • 【机器学习 - 3】:数据归一化(最值归一化、均值方差归一化)

    文章目录 数据归一化的使用 最值归一化 均值方差归一化 常用 在sklearn中调用归一化 鸢尾花数据归一化 数据归一化的使用 为什么要使用数据归一化 举个例子 例如我们要使用KNN算法来预测肿瘤为良性肿瘤或恶性肿瘤 以下是一些数据 肿瘤大
  • JetBrains IntelliJ IDEA 20191.1中文版

    JetBrains IntelliJ IDEA 20191 1中文版推荐给大家 JetBrains IntelliJ IDEA 20191 1版本更新 修复了几个重要的修复程序 例如 KT 30117 KT 29427 KT 30137和K
  • 八大常用排序

    目录 前言 一 插入排序 二 希尔排序 三 选择排序 四 堆排序 五 冒泡排序 六 快速排序 七 归并排序 八 计数排序 九 稳定性 前言 此篇博客都是以升序为例 降序只需更改部分地方即可 所以只排一个 一 插入排序 单趟排序 如上图 在一
  • JAVA IO流综合案例

    需求 d aaa 3 jpg 复制到 d bbb 1 jpg 思路分析 先读去3 jpg 然后读的同时写入1 jpg package com yang import java io 需求 d aaa 3 jpg 复制到 d bbb 1 jp
  • 【CyberSecurityLearning 40】网络地址配置(Kali/CentOS)

    目录 一 关闭networkmanager服务 二 查看IP 三 配置IP 路由 DNS kali设置root用户登录 一 关闭networkmanager服务 因为这个 小电脑 开启后会替你管理网络 帮你去配 只要它开着会产生很多副作用
  • 背包问题,硬币问题

    至少有4种背包问题 1 01背包 2 部分背包 3 完全背包 4 多重背包 只有部分背包是个贪心问题 其他的都是以01背包为基础的动归问题 部分背包问题 把物品按价值密度从大到小排序 W i V i 然后从第一种物品开始 尽可能多拿当前物品
  • 小程序,Taro,生成图片并保存本地相册

    注意 不能在子组件里使用 import Taro Component Config from tarojs taro import index scss import View from tarojs components class Au
  • 什么是编译器宏?

    在阅读vue的官方文档时 提到了defineProps defineEmits defineExpose withDefaults都是编译器宏 那什么是宏定义 什么又是编译器宏呢 1 什么是宏定义 宏定义是一种将一段代码或值 进行简单替换的
  • 【C语言项目】多臂井径电子测井成像项目(一)

    目录 1 目的和意义 2 本章概述 3 串口R232 4 OpenGL 5 开发环境 6 环境配置 6 1 VS安装OpenGL 6 2 虚拟串口生成工具 7 成品速览 参考文献 1 目的和意义 本项目为获取矿藏地层的油气当量和及时精确地测
  • 【整理贴】截至2023.01.02 博主都写了哪些内容?

    博主虽然参加csdn已经四个年头了 开始创作其实是从21年9月确定了直博才开始的 由于是跨专业 很多基本知识都不牢固 总是忘记 这个锅还是不要给脑雾了 如果每次想用的时候能非常方便的复习就好了 而且通过整理也会知道哪里我原本是会的 还有哪里
  • 多通道图片的卷积

    一 多通道 channels 图片的卷积 网上很多资料都是单通道的卷积 很容易理解 但多通道的卷积更普遍 理解较复杂 需要单独提一下 彩色图像 一般都是RGB三个通道 channel 的 因此输入数据的维度一般有三个 长 宽 通道 比如一个
  • echars图表一进来默认显示tooltip

    写在前面 项目中碰到一个小优化项 echarts图表渲染一进来默认显示指定标记点信息窗即tooltip 效果类似 动手实现 核心是利用chart实例的dispatchAction方法 部分代码示例 注 vue环境
  • Java 进阶二知识--重拾者AIMING

    初级选手 Java 基础知识 重拾者AIMING Aimin20210819 公号 进阶一选手 Java 进阶一知识 重拾者AIMING Aimin20210819 公号 目录 1 参数数组和参数列表 重复使用参数 2 Java深浅拷贝
  • R语言常用数据管理

    1 变量的重命名 1 交互式编辑器修改变量名 若要修改数据集x中的变量名 键入fix x 即可打开交互式编辑器的界面 若数据集为矩阵或数据框 单击交互式编辑器界面中对应要修改的变量名 可手动输入新的变量名 若数据集为列表 则交互式编辑界面为
  • JSP原理

    1 什么是JSP Java Server Page Java服务器端页面 也和Servlet一样 用于动态Web技术 最大的特点 写JSP就像再写HTML 页面生成了java JSP本质上就是servlet 3 输出页面前增加的代码 1 r
  • ERROR: Cannot uninstall ‘wrapt‘. It is a distutils installed project and thus we cannot accurately..

    1 问题描述 pip install tensorflow 报错 ERROR Cannot uninstall wrapt It is a distutils installed project and thus we cannot acc
  • 什么是管理能力,管理者的品格有哪些

    走上管理岗位要明白 到底什么是管理能力 1 解决问题的能力 管理者必须面对许多难以解决的 甚至十分不明确的问题 但是只要采用合 适的方法 几乎所有的问题都能成功解决 2 沟通协调的能力 管理者在日常工作中妥善处理好上级 同级 下级等各种关系
  • IDEA产生及相应的应用

    思考 在用记事本编写程序代码的过程中 需要配合使用各种命令在控制台调控编译 给我们的实际操作带来了不小的工作量 如果初学者不能够调整好心态一步步操作 很容易放弃 如何能够让初学者和开发者用起来更方便快捷呢 深度的思考就会有创新 由此一个新的
  • 区块链开发指南_区块链软件开发详解

    开发业务层区块链应用 Hyperledger fabric目前支持java nodejs go和python语言的sdk 供用户选择用不同的语言开发上层应用 使用相应的sdk调用部署在区块链上的链码 以下示例中我们选择使用go语言开发业务层