FISCO BCOS | 搭建第一個區塊鏈網路
本章介紹FISCO BCOS所需的必要安裝和配置。本章透過在單機上部署一條4節點的FISCO BCOS聯盟鏈,幫助使用者掌握FISCO BCOS部署流程。
1. 搭建單群組FISCO BCOS聯盟鏈
本節以搭建單群組FISCO BCOS鏈為例操作。使用開發部署工具 build_chain.sh指令碼在本地搭建一條4 節點的FISCO BCOS鏈,以Ubuntu 16.04 64bit系統為例操作。
*註解
-
若需在已有區塊鏈上進行升級,請轉至版本及相容章節。
-
搭建多群組的鏈操作類似。
-
本節使用預編譯的靜態`fisco-bcos`二進位制檔案,在CentOS 7和Ubuntu 16.04 64bit上經過測試。
-
使用docker模式搭建 ,供有豐富docker經驗和容器化部署需求的使用者參考。
第一步. 安裝依賴
# 最新homebrew預設下載的為openssl@3,需要指定版本openssl@1.1下載
brew install openssl@1.1 curl
openssl version
OpenSSL 1.1.1n 15 Mar 2022
sudo apt install -y openssl curl
sudo yum install -y openssl openssl-devel
## 建立操作目錄
cd ~ && mkdir -p fisco && cd fisco
## 下載指令碼
curl -#LO && chmod u+x build_chain.sh
*註解
-
如果因為網路問題導致長時間無法下載build_chain.sh指令碼,請嘗試:
curl -#LO && chmod u+x build_chain.sh
第三步. 搭建單群組4節點聯盟鏈
-
國密版本請執行: bash build_chain.sh -l 127.0.0.1:4 -p 30300,20200,8545 -g -G -
其中-g表示生成國密配置,-G表示使用國密SSL連線
bash build_chain.sh -l 127.0.0.1:4 -p 30300,20200,8545
-
其中-p選項指定起始埠,分別是: p2p_port,channel_port,jsonrpc_port -
出於安全性和易用性考慮,v2.3.0版本最新配置將listen_ip拆分成jsonrpc_listen_ip和channel_listen_ip,但仍保留對listen_ip的解析功能 -
為便於開發和體驗,channel_listen_ip參考配置是 0.0.0.0 ,出於安全考慮,請根據實際業務網路情況,修改為安全的監聽地址,如:內網IP或特定的外網IP
命令執行成功會輸出All completed。如果執行出錯,請檢查nodes/build.log檔案中的錯誤資訊。
Checking fisco-bcos binary...Binary check passed.==============================================================Generating CA key...==============================================================Generating keys ...Processing IP:127.0.0.1 Total:4 Agency:agency Groups:1==============================================================Generating configurations...Processing IP:127.0.0.1 Total:4 Agency:agency Groups:1==============================================================[INFO] Execute the download_console.sh script in directory named by IP to get FISCO-BCOS console.e.g. bash /home/ubuntu/fisco/nodes/127.0.0.1/download_console.sh==============================================================[INFO] FISCO-BCOS Path : bin/fisco-bcos[INFO] Start Port : 30300 20200 8545[INFO] Server IP : 127.0.0.1:4[INFO] Output Dir : /home/ubuntu/fisco/nodes[INFO] CA Key Path : /home/ubuntu/fisco/nodes/cert/ca.key==============================================================[INFO] All completed. Files in /home/ubuntu/fisco/nodes
-
啟動所有節點
bash nodes/127.0.0.1/start_all.sh
try to start node0try to start node1try to start node2try to start node3 node1 start successfully node2 start successfully node0 start successfully node3 start successfully
-
檢查程式是否啟動
ps -ef | grep -v grep | grep fisco-bcos
fisco 5453 1 1 17:11 pts/0 00:00:02 /home/ubuntu/fisco/nodes/127.0.0.1/node0/../fisco-bcos -c config.inifisco 5459 1 1 17:11 pts/0 00:00:02 /home/ubuntu/fisco/nodes/127.0.0.1/node1/../fisco-bcos -c config.inifisco 5464 1 1 17:11 pts/0 00:00:02 /home/ubuntu/fisco/nodes/127.0.0.1/node2/../fisco-bcos -c config.inifisco 5476 1 1 17:11 pts/0 00:00:02 /home/ubuntu/fisco/nodes/127.0.0.1/node3/../fisco-bcos -c config.ini
-
如下,檢視節點node0連結的節點數
tail -f nodes/127.0.0.1/node0/log/log* | grep connected
info|2019-01-21 17:30:58.316769| [P2P][Service] heartBeat,connected count=3info|2019-01-21 17:31:08.316922| [P2P][Service] heartBeat,connected count=3info|2019-01-21 17:31:18.317105| [P2P][Service] heartBeat,connected count=3
-
執行下面指令,檢查是否在共識
tail -f nodes/127.0.0.1/node0/log/log* | grep +++
info|2020-12-22 17:24:43.729402|[g:1][CONSENSUS][SEALER]++++++++++++++++ Generating seal on,blkNum=1,tx=0,nodeIdx=1,hash=2e133146...info|2020-12-22 17:24:47.740603|[g:1][CONSENSUS][SEALER]++++++++++++++++ Generating seal on,blkNum=1,tx=0,nodeIdx=1,hash=eb199760...
2. 配置及使用控制檯
第一步. 準備依賴
-
安裝java (推薦使用java 14).
# ubuntu系統安裝java
sudo apt install -y default-jdk
#centos系統安裝java
sudo yum install -y java java-devel
-
獲取控制檯並回到fisco目錄
cd ~/fisco && curl -LO
-
如果因為網路問題導致長時間無法下載,請嘗試: cd ~/fisco && curl -#LO && bash download_console.sh -
複製控制檯配置檔案
# 最新版本控制檯使用如下命令複製配置檔案cp -n console/conf/config-example.toml console/conf/config.toml
-
配置控制檯證照
使用1.x版本控制檯時:
-
搭建國密版時,如果使用國密SSL請執行:
cp nodes/127.0.0.1/sdk/gm/* console/conf/
-
搭建國密版時,請修改applicationContext.xml中encryptType修改為1
cp -r nodes/127.0.0.1/sdk/* console/conf/
第二步. 啟動並使用控制檯
-
啟動
cd ~/fisco/console && bash start.sh
=============================================================================================
Welcome to FISCO BCOS console( 2.6. 0)!
Type 'help' or 'h' for help. Type 'quit' or 'q' to quit console.
_______ _ _____ _ _____ _ _____ _ _____ _ ______ _ _____ _ _____ _ _____ _
| \| \ / \ / \ / \ | \ / \ / \ / \
| $$$$$$$$ \$$$$$$ | $$$$$$\| $$$$$$\ | $$$$$$\ | $$$$$$$\ | $$$$$$\| $$$$$$\ | $$$$$$\
| $$_ _ | $$ | $$__ _\$$ | $$ \$$| $$ | $$ | $$_ _/ $$ | $$ \$$| $$ | $$| $$__ _\$$
| $$ \ | $$ \$$ \ | $$ | $$ | $$ | $$ $$ | $$ | $$ | $$ \$$ \
| $$$$$ | $$ _\$$$$$$\| $$ _ _ | $$ | $$ | $$$$$$$\| $$ _ _ | $$ | $$ _\$$$$$$\
| $$ _| $$ _ | \__| $$ | $$__/ \| $$_ _/ $$ | $$__/ $$| $$_ _/ \ | $$__/ $$| \_ _ | $$
| $$ | $$ \ \$$ $$ \$$ $$ \$$ $$ | $$ $$ \$$ $$ \$$ $$ \$$ $$
\$$ \$$$$$$ \$$$$$$ \$$$$$$ \$$$$$$ \$$$$$$$ \$$$$$$ \$$$$$$ \$$$$$$
=============================================================================================
-
用控制檯獲取資訊
# 獲取客戶端版本
[group:1]> getNodeVersion
ClientVersion{
version='2.6.0',
supportedVersion='2.6.0',
chainId='1',
buildTime='20200819 15:47:59',
buildType='Darwin/appleclang/RelWithDebInfo',
gitBranch='HEAD',
gitCommitHash='e4a5ef2ef64d1943fccc4ebc61467a91779fb1c0'
}
# 獲取節點資訊
[group:1]> getPeers
[
PeerInfo{
nodeID='c1bd77e188cd0783256ee06838020f24a697f9af785438403d3620967a4a3612e3abc4bbe986d1e9dddf62d4236bff0b7d19a935a3cd44889f681409d5bf8692',
ipAndPort='127.0.0.1:30302',
agency='agency',
topic=[
],
node='node2'
},
PeerInfo{
nodeID='7f27f5d67f104eacf689790f09313e4343e7887a1a7b79c31cd151be33c7c8dd57c895a66086c3c8e0b54d2fa493407e0d9646b2bd9fc29a94fd3663a5332e6a',
ipAndPort='127.0.0.1:57266',
agency='agency',
topic=[
_block_notify_1
],
node='node1'
},
PeerInfo{
nodeID='862f26d9681ed4c12681bf81a50d0b8c66dd5b6ee7b0b42a4af12bb37b1ad2442f7dcfe8dac4e737ce9fa46aa94d904e8c474659eabf575d6715995553245be5',
ipAndPort='127.0.0.1:30303',
agency='agency',
topic=[
],
node='node3'
}
]
[group:1]>
3. 部署及呼叫HelloWorld合約
第一步. 編寫HelloWorld合約
pragma solidity ^0.4.24;
contract HelloWorld {
string name;
function HelloWorld() {
name = "Hello, World!";
}
function get()constant returns(string) {
return name;
}
function set(string n) {
name = n;
}
}
# 在控制檯輸入以下指令 部署成功則返回合約地址[group:1]> deploy HelloWorldtransaction hash: 0xd0305411e36d2ca9c1a4df93e761c820f0a464367b8feb9e3fa40b0f68eb23facontract address:0xb3c223fc0bf6646959f254ac4e4a7e355b50a344
第三步. 呼叫HelloWorld合約
# 檢視當前塊高
[group:1]> getBlockNumber
1
# 呼叫get介面獲取name變數 此處的合約地址是deploy指令返回的地址
[group:1]> call HelloWorld 0xb3c223fc0bf6646959f254ac4e4a7e355b50a344 get
---------------------------------------------------------------------------------------------
Return code: 0
description: transaction executed successfully
Return message: Success
---------------------------------------------------------------------------------------------
Return values:
[
"Hello,World!"
]
---------------------------------------------------------------------------------------------
# 檢視當前塊高,塊高不變,因為get介面不更改賬本狀態
[group:1]> getBlockNumber
1
# 呼叫set設定name
[group:1]> call HelloWorld 0xb3c223fc0bf6646959f254ac4e4a7e355b50a344 set "Hello, FISCO BCOS"
transaction hash: 0x7e742c44091e0d6e4e1df666d957d123116622ab90b718699ce50f54ed791f6e
---------------------------------------------------------------------------------------------
transaction status: 0x0
description: transaction executed successfully
---------------------------------------------------------------------------------------------
Output
Receipt message: Success
Return message: Success
---------------------------------------------------------------------------------------------
Event logs
Event: {}
# 再次檢視當前塊高,塊高增加表示已出塊,賬本狀態已更改
[group:1]> getBlockNumber
2
# 呼叫get介面獲取name變數,檢查設定是否生效
[group:1]> call HelloWorld 0xb3c223fc0bf6646959f254ac4e4a7e355b50a344 get
---------------------------------------------------------------------------------------------
Return code: 0
description: transaction executed successfully
Return message: Success
---------------------------------------------------------------------------------------------
Return values:
[
"Hello,FISCO BCOS"
]
---------------------------------------------------------------------------------------------
# 退出控制檯
[group:1]> quit
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70012206/viewspace-2925160/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- FISCO BCOS | 開發第一個區塊鏈應用區塊鏈
- FISCO BCOS | 構建第一個區塊鏈應用程式區塊鏈
- 搭建你的第一個區塊鏈網路(二)區塊鏈
- Spring Boot 整合 Fisco Bcos(部署、呼叫區塊鏈合約)Spring Boot區塊鏈
- 基於Fisco-Bcos的區塊鏈智慧合約-簡單案例實踐區塊鏈
- FISCO BCOS助力眾享位元建設企業級區塊鏈應用平臺區塊鏈
- ISO釋出區塊鏈國際標準化成果,4箇中國用例2個基於FISCO BCOS研發區塊鏈
- 專訪 | 支撐區塊鏈大規模商用,揭祕FISCO BCOS v3.0的那些“黑科技”區塊鏈
- 2022產業區塊鏈年度峰會暨FISCO BCOS五週年生態大會 | 邀請函產業區塊鏈
- 區塊鏈改變網路區塊鏈
- 第七章 手動部署Fisco Bcos 區塊鏈並完成新增群組,在原有群組中新增機構區塊鏈
- 區塊鏈應用在網路安全的六個案例區塊鏈
- 網際網路金融VS區塊鏈金融區塊鏈
- 區塊鏈金融與網際網路金融區塊鏈
- 關於區塊鏈和網際網路區塊鏈
- 用 Go 構建一個區塊鏈 -- Part 7: 網路Go區塊鏈
- 區塊鏈技術公司談以色用區塊鏈改善網路安全區塊鏈
- 早期網際網路 VS 當今區塊鏈:9個觀點看區塊鏈未來10年發展區塊鏈
- Hyperledger Fabric和FISCO BCOS技術對比
- 公告 | FISCO BCOS v3.3.0釋出,新增塊內分片技術,單鏈效能突破10萬TPS
- 區塊鏈安全:基於區塊鏈網路攻擊的方式原理詳解區塊鏈
- 如何使用區塊鏈技術管理網路?區塊鏈
- 簡述 Polkadot 和區塊鏈網際網路區塊鏈
- 金鍊盟基於BCOS平臺,重磅推出金融升級版—FISCO BCOS
- 如何正確看待區塊鏈 區塊鏈搭建開發公司哪家好區塊鏈
- 區塊鏈搭建開發公司談分散式記賬與區塊鏈區塊鏈分散式
- 區塊鏈技術或將會成為下一個網際網路?區塊鏈
- 區塊鏈教程、區塊鏈指南、區塊鏈中文手冊、區塊鏈原理區塊鏈
- 如何用區塊鏈技術提升網路安全?區塊鏈
- FISCO BCOS應用案例 | 粵港澳大灣區首個跨境資料驗證平臺上線
- 區塊鏈baas平臺搭建,區塊鏈技術應用開發,合約系統搭建區塊鏈
- 區塊鏈多幣種錢包開發區塊鏈交易平臺搭建區塊鏈
- 區塊鏈含義是什麼 區塊鏈搭建開發公司哪家好區塊鏈
- 區塊鏈搭建開發公司談銀行使用區塊鏈的好處區塊鏈
- 區塊鏈的幾個小故事.小白學區塊鏈01區塊鏈
- 區塊鏈私有鏈搭建中遇到的那些坑區塊鏈
- [譯]如何用 Swift 打造你的第一個區塊鏈 AppSwift區塊鏈APP
- 區塊鏈網路成為DDOS威脅的重災區.區塊鏈