【區塊鏈】外部應用程序與區塊鏈進行交互

一,外部應用程序與區塊鏈進行交互案例目標與流程

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. 通過頁面驗證。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/18662.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/18662.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/18662.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

『大模型筆記』量化 vs 剪枝 vs 蒸餾:為推理優化神經網絡!

量化 vs 剪枝 vs 蒸餾:為推理優化神經網絡! 文章目錄 一. 量化 vs 剪枝 vs 蒸餾:為推理優化神經網絡!1.1. 量化(Quantization)1.2. 剪枝(purning)1.3. 知識蒸餾(Knowledge Distillation,也稱為模型蒸餾)1.4. 工程優化(Engineering Optimizations)1.5. 總結二. 參考…

【旅行商問題的優化】

#include<bits/stdc.h> // 包含標準庫的頭文件using namespace std; // 使用標準命名空間template <class Type> // 模板聲明&#xff0c;Type為類型參數 class Traveling{ // 定義Traveling類friend Type Tsp(int **, int[],int, Type); // 聲明友元函數Tsp publi…

WPF hc:PropertyGrid 嵌套顯示

重點&#xff1a; 編寫Edit特性即可&#xff1a; public class ParameterEditor : PropertyEditorBase{public override FrameworkElement CreateElement(PropertyItem propertyItem){var pg new PropertyGrid();return pg;}public override DependencyProperty GetDependen…

2024/5/22 ARMday7

按鍵控制LED燈亮和滅 do_irq.c #include "key_it.h" //#include "led.h" extern void printf(const char *fmt, ...); unsigned int i 0; void do_irq(void) {//獲取中斷號unsigned int irqno(GICC->IAR & (0x3FF));switch (irqno){case 99://處…

Playwright 元素定位

一、get_by_XXXXX 1. get_by_role&#xff1a;根據元素角色進行定位, 常用的參數有兩個&#xff0c;第一個是角色名稱 role&#xff0c;第二個是元素的文本 name。其他參數的解釋大家可以參考源碼注釋。 # 獲取頁面名稱為確定的按鈕 page.get_bt_role(button, name確定) pl…

cfa三級大神復習經驗分享系列(一)

教材還是Notes? 對于愚鈍如我之流&#xff0c;建議大家三級一定要看教材。Note很精華很濃縮&#xff0c;我覺得看過教材再看note感覺總結的很精辟&#xff0c;但是Note是以考點列的&#xff0c;而教材像小說一樣娓娓道來&#xff0c;有邏輯有情節&#xff0c;如果不follow很難…

Android MIPI屏配置

參考資料&#xff1a;RockChip發布的DRM Display Driver Development Guide手冊&#xff0c;以及網上大量相關博客資料 首先要拿到《屏幕硬件規格書》和《DataSheet》&#xff0c;軟件配置主要依靠DataSheet提供數據支持。 查閱DataSheet里面on sequence和off sequence說明&a…

機器學習之爬山算法(Hill Climbing Algorithm)

爬山算法(Hill Climbing Algorithm)是一種簡單而常見的啟發式搜索算法,通常用于解決優化問題。它的基本思想類似于登山過程中爬升到山頂的過程,即從一個起始點開始,不斷嘗試向鄰近的點移動,直到找到一個局部最優解。 下面是爬山算法的基本工作流程: 初始化:選擇一個初…

關于同一個地址用作兩個不同頁面時,列表操作欄按鈕混淆狀態

同一個地址用作兩個不同頁面時&#xff0c;列表頁的操作欄中有好多個按鈕&#xff0c;如果用了v-if&#xff0c;可能會導致按鈕混淆狀態如disabled等屬性混亂 解決方法1&#xff1a; 將v-if換成v-show&#xff0c;用了v-show之后意味著所有按鈕都在只是在頁面上隱藏了 解決方…

【python深度學習】——torch.min()

【python深度學習】——torch.min 1. torch.min()1.1 計算整個張量的最小值1.2 沿特定維度計算最小值1.3 比較兩個張量 1. torch.min() torch.min()接受的參數如下: input: 輸入的張量。dim: 沿指定維度尋找最小值。如果指定了該參數&#xff0c;返回一個元組&#xff0c;其中…

基于Vue+SpirngBoot的博客管理平臺的設計與實現(論文+源碼)_kaic

摘 要 隨著當下社會的發展&#xff0c;互聯網已經成為時代的主流&#xff0c;從此進入了互聯網時代&#xff0c;對大部分人來說&#xff0c;互聯網在日常生活中的應用是越來越頻繁&#xff0c;大家都在互聯網當中互相交流、學習、娛樂。博客正是扮演這樣一個角色。博客已成為當…

[Nodejs]使用adm-zip和fs-extra壓縮打包后的文件

在此之前&#xff0c;操作目錄、壓縮文件是通過scripts來實現的&#xff0c;在windows機器上多有不便&#xff0c;需要通過linux命令行來實現cp、rm命令&#xff1a; "cpdist": "cp -r ./dist/* ../../qw-portal/assetAllocation/", "rmdist": …

實驗八 單區域OSPF路由協議配置

一、實驗目的 掌握 OSPF 動態路由協議的配置、診斷方法。 二、實驗步驟 1、 運行Cisco Packet Tracer軟件&#xff0c;在邏輯工作區放入三臺路由器、兩臺工作站PC及一臺筆記本&#xff0c;分別點擊各路由器&#xff0c;打開其配置窗口&#xff0c;關閉電源&#xff0c;分別加…

如何選擇云服務器

云服務器選擇概述 在選擇合適的云服務器時&#xff0c;需要綜合考慮多個方面的因素&#xff0c;包括但不限于云服務器的類型、配置、價格、性能、安全性、可靠性、擴展性以及服務商的品牌信譽等。以下是根據搜索結果得出的詳細分析和建議。 云服務器選擇詳解 云服務器類型選…

Python裝飾器的應用

Python 中的裝飾器是一種語法糖&#xff0c;可以在運行時&#xff0c;動態的給函數或類添加功能。裝飾器本質上是一個函數&#xff0c;使用 函數名就是可實現綁定給函數的第二個功能 。它的作用就是在不修改被裝飾對象源代碼和調用方式的前提下為被裝飾對象添加額外的功能。 …

策略模式代碼

import java.util.*; enum TYPE { NORMAL,CASH_DISCOUNT,CASH_RETURN}; interface Cashsuper { public double acceptCash(double money); } class CashNormal implements CashSuper{// 正常收費子類 public double accptCash(double money){ return money; …

微信小程序如何在公共組件中改變某一個頁面的屬性值

需求 公共組件A改變頁面B的屬性isShow的值。 思路 首先目前我不了解可以直接在組件中改變頁面的值的方法&#xff0c;所以我通過監聽的方式在B頁面監聽app.js的某一屬性值的改變從而改變B頁面的值&#xff0c;眾所周知app.js的某一屬性值是很容易就能更改的。 app.js globa…

Ownips+Coze海外社媒數據分析實戰指南

目錄 一、引言二、ISP代理簡介三、應用實踐——基于Ownips和coze的社媒智能分析助手3.1、Twitter趨勢數據采集3.1.1、Twitter趨勢數據接口分析3.1.2、Ownips原生住宅ISP選取與配置3.1.3、數據采集 3.2、基于Ownips和Coze的社媒智能助手3.2.1、Ownips數據采集插件集成3.2.2、創建…

解鎖未標記圖像的力量:深入探索計算機視覺中無監督卷積神經網絡

引言 近年來&#xff0c;計算機視覺領域取得了顯著進步&#xff0c;這在很大程度上得益于深度學習&#xff0c;尤其是卷積神經網絡&#xff08;CNN&#xff09;的發展。這些強大的模型在圖像分類、目標檢測和分割等任務上表現出色&#xff0c;主要依靠大規模標記數據集進行監督…

Flutter 中的 FadeTransition 小部件:全面指南

Flutter 中的 FadeTransition 小部件&#xff1a;全面指南 在 Flutter 中&#xff0c;動畫是一種吸引用戶注意力并提供流暢用戶體驗的強大工具。FadeTransition 是 Flutter 提供的一個動畫小部件&#xff0c;它允許子組件在不透明度上進行漸變&#xff0c;從而實現淡入和淡出效…