【区块链】外部应用程序与区块链进行交互

一,外部应用程序与区块链进行交互案例目标与流程

1.1案例目标

  • 掌握FISCO BCOS应用环境的搭建 与使用(FISCO BCOS+WeBASE)
  • 掌握基于Java + SpringBoot的应 用程序后端项目搭建与开发。
  • 掌握应用程序后端与FISCO BCOS 链的交互。
  • 掌握应用程序前端项目搭建与开发

1.2开发流程

开发流程

  • 构建区块链应用环境。搭建FISCO BCOS环境,搭建WeBASE-Front平台实现, 部署示例智能合约。
  • 构建应用程序后端。通过WeBASE- Front导出后端项目,基于WeBASE Front API开发示例智能合约使用接口。
  • 构建应用程序前端。下载示例前端 代码模板,区块链功能应用开发。

 

二,FISCO BCOS区块链应用环境搭建与配置

2.1 搭建FISCO BCOS区块

搭建FISCO BCOS区块链的实现步骤如下

命令如下

mkdir -p ~/fisco
cd ~/fisco
curl -#LO https://github.com/FISCO-BCOS/FISCO- BCOS/releases/download/v2.7.2/build_chain.sh && chmod u+xbuild_chain.shchmod u+x build_chain.sh
bash build_chain.sh -l 127.0.0.1:4 -p 30300,20200,8545
bash nodes/127.0.0.1/start_all.sh

2.2 搭建WeBASE-Front平台

搭建WeBASE-Front平台的步骤流程:

命令

wget https://osp-1257653870.cos.ap-
guangzhou.myqcloud.com/WeBASE/releases/download/v1.5.2/webas
e-front.zip
unzip webase-front.zip
cd webase-front
cp -r ~/fisco/nodes/127.0.0.1/sdk/* ./conf/
bash start.sh

注意:WeBASE-Front启动需要提前配置JAVA_HOME环境变量。

搭建成功如下

 2.3 示例区块链智能合约部署

智能合约部署流程

2.3.1智能合约文件创建

  • 使用浏览器登录 http://localhost:5002/WeBA SE-Front网站
  • 点击“合约管理”->“合约 IDE” ,新建智能合约,如第一张图所示
  • 在弹出对话框中输入合约名为 “StringGetSet” ,文件目录 为“/” ,点击“确认“ ,查看 文件导航栏是否有 StringGetSet文件,如第二张图所示
  • 添加合约内容

2.3.2创建用户、部署合约

点击导航栏的”合约管理 “->"测试用户"->”新增用 户 “ , 输 入 用 户 名”test_user_1“ 

重新在”合约IDE“中选中 StringGetSet合约,点击右 上角”部署“ ,在弹出框中 选择”test_user_1“用户, 然后点击确认

三,搭建应用程序后端基本框架并配置

3.1搭建与配置

大致步骤如下:

3.2项目导入

3.2.1通过WeBASE-Front-> 合约IDE导出“StringGetSet”项目

3.2.2使用IDEA等开发软件导入StringGetSet项目

3.2.3,在开发软件中对项目进行相关配置

3.3 配置Swagger UI

3.3.1配置build.gradle添加相关配置

3.3.2在Config包中添加Swagger配置代码SwaggerConfig.java

代码 如链接:https://gitee.com/zhiguxingtu/demo8- back/blob/master/src/main/java/org/example/StringGetSet/config/Swagg erConfig.java

3.4开发基于Java SDK的API

创建controller包,并在 controller包中添加 StringGetSetController.java文件。

编写StringGetSetController.java 对应代码。

启动项目,访问 http://localhost:8080/swagger- ui.html查看并使用接口。

四,开发基于WeBASE-Front API的应用程序接口

4.1 应用接口开发

应用接口开发的大致流程

4.2 添加hutools依赖

在build.gradle引入hutools依赖包,代码如下:

implementation 'cn.hutool:hutool-all:5.7.9'

4.3 编写WeBASE API服务

1、在service包中添加 WeBASEService.java文件,以及在 controller包中添加 WeBASEController.java文件。

2、编写WeBASEService.java对应代码。

3、编写WeBASEController.java对应代码

4.4 验证接口开发结果

http://localhost:8080/swagger-ui.html

1、使用newSet调用智能合约: 在WeBASE管理平台,复制一个测试用户的地址。在newSet调用接口中复制该用 户地址,并填写对应的值,点击”Try it out!“

2、使用newGet方法验证: 用同样的方法打开newGet接口界面,并输入用户地址,点击”Try it out!“

4.5 开发并验证智能合约查询接口

基于Get和Set开发模式 编写Controlle r与Service

 1. 在service包中的WeBASEService添 加listDeployedContract函数,函数调用WeBASE API的合约查看接口 ()

2. 在controller中的WeBASEControlle r中添加list接口

3. 访问http://localhost:8080/swagg er-ui.html验证

4. 打开接口直接点击“Try it out!” , 查看返回会有所有合约对应地址内容

五,开发应用程序前端页面

5.1 应用程序前端开发流程

应用程序前端的开发流程

5.2 下载模板并安装依赖

mkdir -p ~/fisco/front-project
cd ~/fisco/front-project
git clone https://gitee.com/zhiguxingtu/init-front.git
cp -r init-front demo8
cd demo8
npm install

开发项目为demo8

5.3 开发应用程序前端页面

1. 添加导航功能,创建components文件夹,在文件夹中创建Navigator.vue,编写相关代码。

2. 修改主页功能的views/Home.vue相关代码。

3. 添加其他应用功能在views目录下创建SDK.vue和WeBASE.vue文件,并编写页面显示代码

4. 修改路由跳转文件router.js代码。 代码地址:https://gitee.com/zhiguxingtu/demo8-front

 5.4 验证应用程序前端开发

1、使用命令启动:

cd ~/fisco/front-project/demo8
npm run serve

2、访问:http://localhost:8020/#/home:

 3访问导航栏的“Java SDK”和“WeBASE”功能

六,开发应用程序前端对应交互功能

6.1 编写智能合约交互功能

1、修改SDK.vue代码,添加Javascript调用后端代码,在<script>标签中添加methods,修改<template>标签中的内容。

2、修改WeBASE.vue代码,添加Javascript调用后端代码,在<script>标签中添加methods,修改<template>标签中的内容。

6.2 验证开发情况

6.2.1验证Java SDK智能合约调用

(1)进入Java SDK导航,在“Set方法”的输入框输入“你好!” ,有如下返回

(2)进入Java SDK导航,在“Get方法”调用“调用” ,有如下返回

 

6.2.2、验证WeBASE-Front API智能合约调用情况

(1)进入WeBASE导航,在“账户地址”输入“test_user_1”的地址,模拟Java SDK的Get方法调用方法。

(2)进入WeBASE导航,在“账户地址”输入“test_user_1”的地址,模拟Java SDK的Set方法调用方法,设置输入内容为“这是一个测试” 。

(3)进入WeBASE导航,在“账户地址”输入“test_user_1”的地址,模拟Java SDK的Get方法调用方法,查看结果值。

6.3 开发功能:获取所有智能合约并测试

1. 修改Home.vue,添加获取列出所有智能合约的方法。

2. 通过页面验证。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/635507.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Golang | Leetcode Golang题解之第108题将有序数组转换为二叉搜索树

题目&#xff1a; 题解&#xff1a; func sortedArrayToBST(nums []int) *TreeNode {rand.Seed(time.Now().UnixNano())return helper(nums, 0, len(nums) - 1) }func helper(nums []int, left, right int) *TreeNode {if left > right {return nil}// 选择任意一个中间位置…

如何通过软件IIC使用MPU6050陀螺仪

目录 1. MPU6050简介 2. MPU6050参数 3. MPU6050硬件电路 4. 代码编写 4.1 MPU6050写寄存器 4.2 MPU6050读寄存器 4.3 初始化 4.4 MPU6050获取ID号 4.5 MPU6050获取数据 1. MPU6050简介 MPU6050是一个6轴姿态传感器&#xff0c;可以测量芯片自身X、Y、Z轴的…

代码随想录--哈希表--有效的字母异位词

题目 给定两个字符串 s 和 t &#xff0c;编写一个函数来判断 t 是否是 s 的字母异位词。 示例 1: 输入: s “anagram”, t “nagaram” 输出: true 示例 2: 输入: s “rat”, t “car” 输出: false 说明: 你可以假设字符串只包含小写字母。 思路 先看暴力的解法&am…

AI智能体|使用扣子Coze基于IDE创建自定义插件

大家好&#xff0c;我是无界生长。 在使用Coze的过程中&#xff0c;有些个性化场景无法通过插件商店已有的插件满足&#xff0c;这个时候就需要通过自定义插件的方式来实现业务需求。下面将通过一个实际案例来简单介绍下如何使用Coze基于IDE创建自定义插件&#xff0c;完成在Co…

JAVA基础Day 1面向对象

目录 包调用包 对象和类多态继承重写与重载 抽象接口接口的声明接口的实现 包 package bao;class FreshJuice{enum FreshJuiceSize{small,medium,lager}FreshJuiceSize size; } public class aa {public static void main(String[] args) {System.out.println("hello&quo…

word如何按照原本页面审阅文档

1 视图-阅读视图 2 视图&#xff0c;自己看&#xff0c;懒得打字了哈哈

基于物联网表计的综合能源管理方案

安科瑞电气股份有限公司 祁洁 acrelqj 摘要&#xff1a;为加快推进国家“双碳”战略和新型能源体系建设&#xff0c;努力实现负荷精准控制和用户精细化管理&#xff0c;按照“政府主导、电网组织、政企协同、用户实施”的指导原则&#xff0c;多地成立市/县级电力负荷管理中…

AI网络爬虫:批量爬取电视猫上面的《庆余年》分集剧情

电视猫上面有《庆余年》分集剧情&#xff0c;如何批量爬取下来呢&#xff1f; 先找到每集的链接地址&#xff0c;都在这个class"epipage clear"的div标签里面的li标签下面的a标签里面&#xff1a; <a href"/drama/Yy0wHDA/episode">1</a> 这个…

Android 观察者模式(OBSERVER)应用详解

文章目录 1、观察者模式设计初衷1.1. 解耦对象之间的依赖关系1.2. 允许动态的依赖关系1.3. 自动通知和更新1.4 设计初衷的详细说明1. 对象之间的解耦2. 动态依赖关系3. 自动更新 2、实现细节2.1. Subject 接口和实现2.2. Observer 接口和实现2.3. 主类 3、主要角色4、关系示意图…

Vue02-黑马程序员学习笔记

一、今日学习目标 1.指令补充 指令修饰符v-bind对样式增强的操作v-model应用于其他表单元素 2.computed计算属性 基础语法计算属性vs方法计算属性的完整写法成绩案例 3.watch侦听器 基础写法完整写法 4.综合案例 &#xff08;演示&#xff09; 渲染 / 删除 / 修改数量 …

创建桌面快捷方式

①点击桌面任务栏中的【开始图标】>点击【所有应用】 ②将【EndNote】图标拖到电脑桌面。

Defog发布Llama-3-SQLCoder-8B,文本转SQL模型,性能比肩GPT-4,准确率超90%,消费级硬件可运行

前言 在计算语言学领域&#xff0c;将自然语言转化为可执行的SQL查询是一个重要的研究方向。这对于让那些没有编程或SQL语法知识的用户也能轻松访问数据库信息至关重要。Defog团队近日发布了基于Llama-3的SQLCoder-8B模型&#xff0c;它在文本转SQL模型领域取得了显著突破&…

【LLM多模态】LLava模型结构和训练过程 | CLIP模型

note CLIP使用了对比学习的方法&#xff0c;即通过正样本&#xff08;匹配的图像-文本对&#xff09;和负样本&#xff08;不匹配的图像-文本对&#xff09;来训练模型。在训练过程中&#xff0c;模型会尝试最大化正样本对的相似度&#xff08;比如通过计算余弦相似度&#xf…

单细胞分析(Signac): PBMC scATAC-seq 聚类

引言 在本教学指南中&#xff0c;我们将探讨由10x Genomics公司提供的人类外周血单核细胞&#xff08;PBMCs&#xff09;的单细胞ATAC-seq数据集。 加载包 首先加载 Signac、Seurat 和我们将用于分析人类数据的其他一些包。 if (!requireNamespace("EnsDb.Hsapiens.v75&qu…

HTTP3

HTTP 状态码&#xff1a;描述了这次HTTP请求是否成功&#xff0c;以及失败的原因。 他们用相应的状态码来描述异常的发现。 常见的状态码 1.200 OK 访问成功。 2.404 NOT Found 客户端请求的资源在服务器这边不存在 URL&#xff1a;ip端口路径查询字符串 3.403 Forbid…

SQL刷题笔记day1

1题目 我的代码&#xff1a; select * from employees order by hire_date desc limit 2,1 标准代码&#xff1a; select * from employees where hire_date (select distinct hire_date from employees order by hire_date desc limit 2,1) 复盘&#xff1a;因为按照入…

vue3插槽solt 使用

背景增加组件的复用性&#xff0c;个人体验组件化还是react 方便。 Vue插槽solt如何传递具名插槽的数据给子组件&#xff1f; 一、solt 原理 知其然知其所以然 Vue的插槽&#xff08;slots&#xff09;是一种分发内容的机制&#xff0c;允许你在组件模板中定义可插入的内容…

ARP基本原理

相关概念 ARP报文 ARP报文分为ARP请求报文和ARP应答报文&#xff0c;报文格式如图1所示。 图1 ARP报文格式 Ethernet Address of destination&#xff08;0–31&#xff09;和Ethernet Address of destination&#xff08;32–47&#xff09;分别表示Ethernet Address of dest…

Mendix 版本 10.10 发布 – 跨平台的功能

​本月&#xff0c;我们将发布遍布整个平台的许多功能&#xff0c;以改善所有用户的生活。Studio Pro 包含多项生活质量改进&#xff0c;例如性能和 Epics/Jira 集成&#xff01;除此之外&#xff0c;还有一些不错的小部件、MxConnect和AI更新。以及App Insights, Mendix Cloud…

2024年5月19日优雅草蜻蜓K知识付费系统旗舰版v1.0.9进度更新

v1.1.0更新 v1.1.0更新 2024年5月19日优雅草蜻蜓K知识付费系统旗舰版v1.0.9进度更新&#xff0c;首页体育栏目完善新增用户发布页面 开发进度 首页体育栏目完善 新增用户发布页面 新增用户登录完善 新增学习课程页面完善-过往课程数据完成 去掉其他三方登录&#xff0c;新增…