這篇文章主要介紹“如何使用Spring Boot整合Fisco Bcos”,在日常操作中,相信很多人在如何使用Spring Boot整合Fisco Bcos問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”如何使用Spring Boot整合Fisco Bcos”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
FISCO BCOS是由國內企業主導研發、對外開源、安全可控的企業級金融聯盟鏈底層平臺,由金鏈盟開源工作組協作打造,并于2017年正式對外開源。
目前,成熟的區塊鏈的平臺不少,之所以選擇FISCO BCOS,主要是因為文檔細致,容易入門。
官方地址入口
本篇文章介紹的 Spring Boot 整合 Fisco Bcos的案例,是在阿里云服務器上部署驗證的。
我這邊共有兩臺電腦:
電腦1:本地的Mac電腦,沒有區塊鏈環境,只是用于SpringBoot工程的開發;
電腦2:阿里云上的CentOS服務器,配置了區塊鏈環境,合約部署、編譯、SpringBoot工程的jar包運行都是在該電腦上;
大家可根據自己的電腦環境,對比該案例進行開發即可。
--> 1、Fisco Bcos環境搭建與驗證
--> 2、創建SpringBoot工程并配置依賴
--> 3、編寫案例代碼
--> 4、生成jar包、部署服務器驗證
Fisco Bcos環境搭建參考的是官方的文檔:
搭建第一個區塊鏈網絡
我這邊測試服務器的操作系統是CentOS,如果是其他操作系統,也是參照該文檔進行配置,流程是類似的。
詳細流程,大家參照文檔進行配置就行了,這里主要說下關鍵的細節:
我這邊使用的是國密版本命令:
bash build_chain.sh -l 127.0.0.1:4 -p 30300,20200,8545 -g -G
主要原因:
我這邊使用的Fisco Bcos SDK版本是2.8.0,加載證書時默認會加載國密證書(應該有加載證書類型的選項配置,目前暫未找到相關API)。
如果使用的是非國密版本命令,在/fisco/node/127.0.0.1/sdk/目錄下不會生成國密證書,使用該SDK就會報錯。
成功啟動所有節點后,在/fisco/node/127.0.0.1/sdk/目錄下驗證所有證書是否存在(gm代表國密),如下圖:
啟動節點后,我們可以使用Fisco Bcos提供的本地控制臺程序console對節點進行驗證。
大家參照文檔,先下載、配置控制臺程序。
注意:為控制臺程序配置節點證書(即:將/fisco/node/127.0.0.1/sdk/下的證書全部復制到控制臺程序的 /console/conf/目錄下)
啟動控制臺,測試節點,例如:獲取區塊鏈數據高度:getBlockNumber:
如果能正常部署合約,且能獲得數據高度,則區塊鏈環境沒什么問題,如下圖:
服務端區塊鏈環境已完成驗證,接下來,我們創建SpringBoot工程,并集成Fisco Bcos Java版SDK。
Java SDK 文檔
僅勾選Spring Web即可:
注意:SpringBoot版本不宜過高(已與官方技術人員確認),我這邊試過2.6.2+,Demo案例調用節點時會異常閃退,當把版本降低為2.4.2就正常了:
配置Fisco Bcos Java版SDK依賴:
pom.xml完整代碼:
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.4.2</version> <relativePath/> <!-- lookup parent from repository --> </parent> <groupId>com.qxc</groupId> <artifactId>demo_bcos</artifactId> <version>0.0.1-SNAPSHOT</version> <name>demo_bcos</name> <description>Demo project for Spring Boot</description> <properties> <java.version>1.8</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.fisco-bcos.java-sdk</groupId> <artifactId>fisco-bcos-java-sdk</artifactId> <version>2.8.0</version> <!--排除這個slf4j-log4j12--> <exclusions> <exclusion> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> </exclusion> </exclusions> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>
3、編寫案例代碼
3.1、配置Fisco Bcos:
Java SDK » 配置說明
為了簡單,本案例將Fisco Bcos的參數通過xml統一配置,并在代碼中自動讀取。
在/src/main/resources/目錄下創建文件fisco-config.xml:
fisco-config.xml完整代碼:
<?xml version="1.0" encoding="UTF-8" ?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd"> <bean id="defaultConfigProperty" class="org.fisco.bcos.sdk.config.model.ConfigProperty"> <property name="cryptoMaterial"> <map> <entry key="certPath" value="conf" /> </map> </property> <property name="network"> <map> <entry key="peers"> <list> <value>127.0.0.1:20200</value> <value>127.0.0.1:20201</value> </list> </entry> </map> </property> <property name="account"> <map> <entry key="keyStoreDir" value="account" /> <entry key="accountAddress" value="" /> <entry key="accountFileFormat" value="pem" /> <entry key="password" value="" /> <entry key="accountFilePath" value="" /> </map> </property> <property name="threadPool"> <map> <entry key="channelProcessorThreadSize" value="16" /> <entry key="receiptProcessorThreadSize" value="16" /> <entry key="maxBlockingQueueSize" value="102400" /> </map> </property> </bean> <bean id="defaultConfigOption" class="org.fisco.bcos.sdk.config.ConfigOption"> <constructor-arg name="configProperty"> <ref bean="defaultConfigProperty"/> </constructor-arg> </bean> <bean id="bcosSDK" class="org.fisco.bcos.sdk.BcosSDK"> <constructor-arg name="configOption"> <ref bean="defaultConfigOption"/> </constructor-arg> </bean> </beans>
把區塊鏈節點下的證書拷貝到/src/main/resources/conf/目錄下(conf目錄為fisco-config.xml配置的證書路徑):
BcosController完整代碼:
package com.qxc.demo_bcos.controller; import org.fisco.bcos.sdk.BcosSDK; import org.fisco.bcos.sdk.client.Client; import org.fisco.bcos.sdk.client.protocol.response.BlockNumber; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; @RestController public class BcosController { @GetMapping("/test") public String test(){ System.out.println("-----test------"); return "this is bcos demo"; } @GetMapping("/block") public String getBlockNumber(){ System.out.println("-----getBlockNumber getBlockNumber------"); @SuppressWarnings("resource") ApplicationContext context = new ClassPathXmlApplicationContext("classpath:fisco-config.xml"); System.out.println("-----getBlockNumber ClassPathXmlApplicationContext ok------"); BcosSDK bcosSDK = context.getBean(BcosSDK.class); System.out.println("-----getBlockNumber BcosSDK ok------"); Client client = bcosSDK.getClient(Integer.valueOf(1)); System.out.println("-----getBlockNumber client ok------"); BlockNumber blockNumber = client.getBlockNumber(); return "getBlockNumber: "+blockNumber.getBlockNumber().toString(); // return ""; } }
為了簡單,端口我這邊直接使用8080,主要是個人比較懶,什么都懶得配置了,O(∩_∩)O~
SpringBoot的開發是在我本地的Mac電腦上進行的,為了能穩妥的部署到遠程CentOS服務器上,
先在本地跑一把,看看工程編譯運行是否正常(此時不用測試區塊鏈功能,因為我本地并沒有區塊鏈環境):
沒問題,完美。
案例程序已在服務器端跑起來了,回到本地mac電腦,遠程連服務器試一下吧(IP就不展示給大家看了哈):
到此,關于“如何使用Spring Boot整合Fisco Bcos”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。