区块链系统运行逻辑

2023-10-27

一、开发工具

  1. hyperledger-fabric:1.4.7,hyperledger-ca:1.4.7。ca是用来生成证书文件,管理成员身份。
    下载方法:点击此链接到百度云下载脚本,提取码:1234,在已经安装docker和git后,运行脚本即可下载,例如运行:./download.sh 1.4.7 1.4.7将会下载hyperledger-fabric:1.4.7,hyperledger-ca:1.4.7,及对应版本的docker镜像。若某个文件下载缓慢,可转到github文件下载代理处下载(前提是要能看明白.sh脚本语言,明白缺少什么文件,该在什么地方解压下载好的文件),下载后放入fabric-sample内解压即可。
  2. docker: 20.10.12,服务都是在docker容器内运行的。
  3. golang: 1.17.5,fabric的底层的开发语言,同时也是编写链码,搭建后端服务器的语言。
  4. git: 1.8.3.1,下载文件时需要用到。
  5. go-gin最新版,开发后端服务器的框架,该框架目前性能最好。
  6. fabric-go-sdk,操作区块链网络的软件包。

二、程序运行完整逻辑

2.1 总体逻辑

  1. 在启动fabric网络后,运行mian函数,它将首先运行初始化函数,创建SDK、资源管理客户端、创建通道、将所有节点加入通道、配置锚节点更新、安装链码、通道管理客户端、实例化链码。然后开启后端接口服务。
  2. 利用接口,接收前端传入的数据,用结构体保存数据,再调用go sdk的软件包,利用通道管理客户端将数据发送给链码。
  3. 链码根据接受的数据,调用对应的函数,将数据存入区块链或者查询区块链账本中的数据。
  4. 用go sdk接收链码的执行结果,利用gin将结果以json形式的数据返回给前端。

2.2 详细过程(以添加数据(AddData)为例)

首先初始化
在这里插入图片描述
开启接口,前端访问该接口时,则会执行后面的AddData(…)函数
在这里插入图片描述

在这函数里,接收前端传入的数据,用如下的函数将接受到的前端数据保存至结构体中。
在这里插入图片描述

再用如下函数,将数据反序列化,为存入区块链中做准备(区块链中存储的数据都是序列化的):
在这里插入图片描述
指定函数fcn,链码会根据传入的fcn函数信息,调用对应的函数。
在这里插入图片描述
执行strar.go文件中调用的链码函数:
在这里插入图片描述
在InvokeCC函数中,首先将请求封装,在封装的请求中,需要指明执行链码的ID,请求链码的函数信息fcn,及序列化了的待添加数据。
在这里插入图片描述
执行调用链码的请求(go sdk调用链码的核心函数):
在这里插入图片描述
此时安装的链码将会收到请求数据,在链码中用该函数接收请求调用函数的信息及序列化后的待添加数据。
在这里插入图片描述
此时传入的请求函数信息是"addData",那么它将会调用对应的函数进行处理:
在这里插入图片描述
在该函数中,先是将序列化的数据反序列化,并用结构体保存数据,这样做的目的是取出其中的ID和Batch,将其以Batch+ID的方式组合为一个唯一Key值,作为该数据唯一的“身份证”,溯源就是根据此“身份证”查看该身份证下的一切改动。
在这里插入图片描述
调用PutData函数,准备将数据写入区块链中。
在这里插入图片描述
在PutData函数中,首先将数据序列化,再用Putstate将数据写入区块链。
在这里插入图片描述
最后将链码执行的结果以JSON形式的数据返回给前端,若成功执行链码“err”:nil,否则返回错误原因:
在这里插入图片描述

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

区块链系统运行逻辑 的相关文章

  • 计算机网络知识点(物理层)

    文章目录 重要内容 2 1 物理层基本概念 2 2 数据通信的基础知识 2 3 物理层下面的传输媒体 2 4 信道复用技术 2 4 1 频分复用 FDM 2 4 2 时分复用 TDM 2 4 3 统计时分复用 STDM 2 4 4 波分复用
  • java中使用分数

    分数是一个不是整数而是由两个数字组成的量 分数有两部分 分子和分母 以 分隔 分数的例子是 15 2 35 6 分数应始终以简化 或最简单 形式表示 其中没有分子和分母的公倍数 例如 56 12 不是它的约数 因为它的分子和分母仍然有公倍数
  • 事件委托订阅与发布

    第一步 客户端 public class Client public string Name get set public void Subscription string guestName Name guestName Server s
  • stm32F4的ADC+DMA+Timer,实现2MHz连续采样。1LSB分辨率,极低噪声。

    1 ADC DMA Timer的实现原理 stm32F407 405的ADC为12位逐次逼近型ADC 有着高达2 4MHz的采样率 分辨率 1LSB 这样参数的ADC放在市面上单卖 也起码是 10 起步 而 stm32F407 405不仅内
  • 【毕业季

    活动地址 毕业季 进击的技术er 文章目录 0 作者介绍 1 前言 2 嵌入式基础必备知识 2 1 学习内容 2 2 学习建议 2 3 学习资料 3 嵌入式入门篇 51单片机 3 1 学习内容 3 2 学习建议 3 3 学习资料 4 STM
  • extjs中renderer的使用方法

    var reader new Ext data ArrayReader name wpcCd name yr name wiuNm name wpcSn name applYrWw name apprYrWw name gwWw name
  • 数学建模感想篇

    数学建模篇 大三狗 一共参加了2次国赛 2次美赛 一次国赛省一 一次国赛国一 两次美赛都是h qaq太菜了 首先谈谈数学建模这个比赛吧 现在的数学建模竞赛有很多 由于笔者所在的学校只组织参加国赛和美赛 对于其他的数学建模竞赛不了解 国赛是每

随机推荐

  • 【vue】聊一聊Element UI的自定义主题颜色

    背景 ElementUI组件库相信大家一定都接触过 但是自定义主题颜色的需求有接触过的应该不多 至少我到今天是没有遇到类似的需求 之所以讲这个需求 是因为在我个人开发的开源项目中有做到这个需求 所以在这里和大家聊一聊我的实现 CSS变量 在
  • 颜色选择器(拾色器)

    今天项目中用到了拾色器 感觉挺好 Html如下 html开始分割线 Color
  • [官方教程] Firefly 介绍文档!

    欢迎来9秒 www 9miao com Firefly是免费 开源 稳定 快速扩展 能 热更新 的分布式游戏服务器端框架 采用Python编写 基于Twisted框架开发 它包括了开发框架和数据库缓存服务等各种游戏服务器基础服务 节省大量游
  • [YOLO专题-14]:YOLO V5 - ultralytics在自定义数据集上获得高性能的常见关键项

    作者主页 文火冰糖的硅基工坊 文火冰糖 王文兵 的博客 文火冰糖的硅基工坊 CSDN博客 本文网址 https blog csdn net HiWangWenBing article details 122302497 目录 前言 第1步
  • linux 里面case的用法

    linux 里面case的用法 用来选择 如下图所示 bin bash NAME cluster app echo NAME if 1 1 then echo i am true fi start echo 我要开始执行start 命令了
  • DHTMLX JavaScript Gantt Chart 8.0.5 Crack

    8 0 5 September 1 2023 Bugfix release Fixes Fix incorrect warnings triggered by enabling extensions via the gantt getGan
  • PPTP、L2F、L2TP协议

    PPTP协议简介 PPTP Point to Point Tunneling Protocol 即点对点隧道协议 该协议是在PPP协议的基础上开发的一种新的增强型安全协议 支持多协议虚拟专用网 VPN 可以通过密码验证协议 PAP 可扩展认
  • UNIX网络编程卷一 学习笔记 第六章 I/O复用:select和poll函数

    上一章中 TCP客户同时处理两个输入 标准输入和TCP套接字 我们遇到的问题是客户阻塞于标准输入上的fgets调用期间 服务器进程被杀死时 虽然服务器TCP正确地给客户TCP发送了一个FIN 但客户进程正阻塞于从标准输入读的过程 它将看不到
  • 常用Fibonacci数性质

    常用Fibonacci数性质 0 Fn 1 Fn 2 Fn 特殊的F0 1 F1 1 上述式子为定义式 1 F 0 F 1 F n F n 2 1 证明 F0 F1 F2 F1 F2 F3 F2 F3 F4 Fn Fn 1 Fn 2 F0
  • Understanding SQL Server Query Plans

    ore than any other tuning you can perform creating efficient queries will always give you the most return for your time
  • 把一个微服务java程序打成jar包

    运行命令 java jar kayu jar
  • webpack升级报错之Module build failed (from ./node_modules/_vue-loader@13.7.3@vue-loader/index.js)

    webpack3 升级webpack4 老的项目依赖经常遇见以下报错 Module build failed from node modules vue loader 13 7 3 vue loader index js TypeError
  • 浅析人脸识别算法及其应用

    前言 随着深度学习和计算机硬件的快速发展 基于深度卷积神经网络的一系列算法都取得了显著的进展 其中人脸识别作为计算机视觉领域中时间最久远 应用最广泛的研究课题之一 近些年也在深度学习的加持下在性能方面获得了大幅提升 并在实际的生活场景中得到
  • 全面升级!“ChatGPT中文版”场景导航功能震撼登场

    近日 ChatGPT中文版 智元兔 平台推出全新的场景功能 为用户提供更全面 高效的智能问答服务 再也不用担心找不到适合自己的场景入口了 此次升级涵盖了60多个场景 包括论文助手 公司文案 营销文案 多语言翻译 行政公文 科研课题 招投标书
  • 绅士领域服务器不稳定,绅士云服务器

    绅士云服务器 内容精选 换一换 根据后端云服务器组的ID查询后端云服务器组详情 GET v2 0 lbaas pools pool id 无请求样例 查询后端云服务器组的详情GET https Endpoint v2 0 lbaas poo
  • vue2实现一个树型控件(支持展开树与checkbox勾选)

    目录 vue2实现一个树型控件 支持展开树与checkbox勾选 TreeItem vue Tree vue 效果 vue2实现一个树型控件 支持展开树与checkbox勾选 TreeItem vue
  • 物联网专业课程简介及理解

    写在前面 大家好 我是草莓橙须圆 毕业之前在CSDN和微信公众号活跃 欢迎关注我的公众号 草莓橙须圆 微信公众号主要就是更新大学生或者考研党的日常 CSDN主要就是学习过程中总结的笔记 以及编程分享 目录 物联网 软件工程 数据库 传感器与
  • torchsparse1.4.0 安装

    1 sudo apt get install libsparsehash dev 2 pip install upgrade git https github com mit han lab torchsparse git v1 4 0 p
  • Linux centos7关闭防火墙

    1 命令行界面输入命令 systemctl status firewalld service 并按下回车键 2 然后在下方可度以查看得到 active running 此时说明防火墙已经被打开了 root a1663303 systemct
  • 区块链系统运行逻辑

    文章目录 一 开发工具 二 程序运行完整逻辑 2 1 总体逻辑 2 2 详细过程 以添加数据 AddData 为例 一 开发工具 hyperledger fabric 1 4 7 hyperledger ca 1 4 7 ca是用来生成证书