????FISCO BCOS 入門(mén)第一步,搭建 FISCO BCOS 環(huán)境挂签。本章節(jié)通過(guò) build_chain.sh 的方式講解搭建一條 FISCO BCOS 聯(lián)盟鏈的過(guò)程中涉及的各個(gè)方面,也可以參考 官方教程 進(jìn)行詳細(xì)了解盼产。本教程已 fisco-bcos v2.7.2 版本為例竹握,如果后續(xù)有新的版本更新辆飘,可以到 git 官網(wǎng)上啦辐,手工下載 fisco-bcos v2.7.2 版本的二進(jìn)制進(jìn)行驗(yàn)證蜈项。如無(wú)特別說(shuō)明,一下操作均以 macos 為例紧卒。
1. 安裝依賴(lài)
## macos 環(huán)境安裝依賴(lài)
brew install openssl curl
## ubuntu 環(huán)境安裝依賴(lài)
sudo apt install -y openssl curl
##?centos 環(huán)境安裝依賴(lài)
sudo yum install -y openssl openssl-devel
2.?創(chuàng)建操作目錄, 下載安裝腳本
## 創(chuàng)建操作目錄
cd ~ && mkdir -p fisco && cd fisco
## 下載腳本
curl -#LO https://github.com/FISCO-BCOS/FISCO-BCOS/releases/download/v2.7.2/build_chain.sh && chmod u+x build_chain.sh
????PS:?如果因?yàn)榫W(wǎng)絡(luò)問(wèn)題導(dǎo)致長(zhǎng)時(shí)間無(wú)法下載build_chain.sh腳本侥衬,請(qǐng)嘗試?curl -#LO https://gitee.com/FISCO-BCOS/FISCO-BCOS/raw/master/tools/build_chain.sh && chmod u+x build_chain.sh
3. 搭建聯(lián)盟鏈
????這里將講解搭建過(guò)程中涉及到的幾個(gè)重要的各種參數(shù)。為了保證演示結(jié)果與本教程的一致性轴总,可以先查看 3.4? 章節(jié)部分
3.1 查看 build_chain.sh 參數(shù)
? ? 執(zhí)行 ./build_chain.sh -help ,即可看到 build_chain.sh 所支持的參數(shù)博个。如圖所示怀樟,有很多參數(shù)可以選擇盆佣,下面將介紹常用的幾個(gè)參數(shù)往堡。
3.2 使用 -l 和 -p 生成單機(jī)聯(lián)盟鏈
????執(zhí)行如下命令共耍,可以看到,build_chain.sh 腳本自動(dòng)去拉取最新的 fisco-bcos 二進(jìn)制 (這里為 2.7.2 的 fisco-bcos 版本)痹兜,并生成鏈節(jié)點(diǎn)穆咐。初次安裝的時(shí)候,我們選擇讓 build_chain.sh 自動(dòng)拉取字旭,但因?yàn)榫W(wǎng)絡(luò)問(wèn)題,去 github 拉取時(shí)谐算,可能會(huì)很慢熟尉。所以后面將介紹使用已存在的二進(jìn)制進(jìn)行節(jié)點(diǎn)的生成
bash build_chain.sh -l 127.0.0.1:4 -p 30300,20200,8545
? ?執(zhí)行成功后洲脂,我們將看到當(dāng)前目錄下生成了一個(gè) nodes 目錄斤儿。nodes 目錄下存在兩個(gè)目錄恐锦,分別是 127.0.0.1 和 cert 往果,我們進(jìn)入 127.0.0.1? 目錄 ( cert 目錄的作用會(huì)在后續(xù)章節(jié)進(jìn)行講解 )一铅,執(zhí)行執(zhí)行 ./start_all.sh , 看到輸出 “start successfully” 表示節(jié)點(diǎn)啟動(dòng)成功潘飘。至此肮之,一切順利的話掉缺,我們的鏈就創(chuàng)建并啟動(dòng)成功了戈擒。
????下面我們看下我們輸入的參數(shù)?-l 127.0.0.1:4 -p 30300,20200,8545 到哪里去了眶明,哪里可以找到這兩個(gè)配置筐高。大家有沒(méi)有注意到,nodes 下面中的 127.0.0.1 這個(gè)目錄柑土,這個(gè)目錄其實(shí)就是 -l 中所指定的 127.0.0.1, 那么這個(gè)參數(shù)是否可以換成其他的值呢 蜀肘?換成其他值后有什么影響呢。讓我們做下實(shí)驗(yàn)就知道稽屏。首先,停止剛才啟動(dòng)的進(jìn)程诫欠。
? ? 進(jìn)入到 nodes/127.0.0.1 目錄涵卵,執(zhí)行 ./stop_all.sh ,看到 "stop nodeX success" 的輸出表示轿偎,執(zhí)行成功,節(jié)點(diǎn)停止成功被廓,這里 "X" 對(duì)應(yīng) 0,1,2,3 坏晦。然后在 fisco 目錄下嫁乘,執(zhí)行 mv nodes nodes_backup 昆婿。因?yàn)楹竺嫖覀円鱿聦?duì)比蜓斧,所以先對(duì)舊的 nodes 目錄進(jìn)行備份仓蛆。
? ? 之后挎春,再執(zhí)行如下命令看疙,生成新的鏈直奋,執(zhí)行成功后,我們可以看到重新生成了一個(gè) nodes 目錄脚线,并且 nodes 目錄下存在 "127.0.0.1" 和 "cert" 這兩個(gè)目錄搁胆。注意到了沒(méi)攀例,第一點(diǎn):?nodes 下面的目錄名跟著參數(shù)的變化肛度,當(dāng)然還有第二個(gè)不同點(diǎn),讓我們繼續(xù)觀察
bash build_chain.sh -l 127.0.0.2:4 -p 30300,20200,8545
? ? 開(kāi)兩個(gè)窗口投慈,分別進(jìn)入 "fisco/nodes/127.0.0.2/node0" 和? "fisco/nodes_backup/127.0.0.1/node0" 目錄,并且編輯 config.ini 文件伪煤,我們可以觀察到 p2p 下面每個(gè) node 對(duì)應(yīng)的 ip 是不一樣的。那這個(gè) p2p 中的這些 node 有什么用呢凛辣,可以參考我的另一篇文章 "FISCO BCOS 實(shí)戰(zhàn)教程(三)config.ini 配置詳解" 中的說(shuō)明抱既。這里大家只需要進(jìn)行了解即可,不影響下面的閱讀蝗敢。
????這里 -l 參數(shù)后面只帶了一個(gè) ip, 根據(jù) build_chain.sh 的參數(shù)說(shuō)明捷泞,其他可以輸入很多的 Ip,后面進(jìn)行多機(jī)節(jié)點(diǎn)部署的時(shí)候會(huì)進(jìn)行演示咏瑟。下面繼續(xù)講解下 -p 參數(shù)的影響。查看 fisco/nodes/127.0.0.2/node0/config.ini 文件痪署,可以注意到码泞,其中的 "listen_port", "channel_listen_port", "jsonrpc_listen_port" 就是依次輸入的參數(shù)值狼犯,那這幾個(gè)參數(shù)有什么影響呢余寥,可以參考我的另一篇文章 "FISCO BCOS 實(shí)戰(zhàn)教程(三)config.ini 配置詳解"辜王,這里大家只需要了解 -p 參數(shù)的影響即可劈狐。如果我們繼續(xù)觀察 127.0.0.2 目錄下 node1/config.ini? ,? node2/config.ini , node3/config.ini 呐馆,可以看到"listen_port", "channel_listen_port", "jsonrpc_listen_port"? 是依次增加的。那么這里就會(huì)有個(gè)問(wèn)題汹来,如果 node0 中的?listen_port 和 node1 中的?channel_listen_port 相同续膳,會(huì)有什么問(wèn)題呢改艇,在我的另一篇文章 "FISCO BCOS 實(shí)戰(zhàn)教程(三)config.ini 配置詳解"? 中會(huì)進(jìn)行詳細(xì)的介紹坟岔。?
3.2? -e 使用存在的 fisco 二進(jìn)制生成單機(jī)聯(lián)盟鏈
? ? 上面所說(shuō)的谒兄,如果測(cè)試的話社付,需要經(jīng)常把鏈刪除并重建承疲,每次去 github 拉取鸥咖,網(wǎng)絡(luò)好的話不會(huì)有問(wèn)題燕鸽,網(wǎng)絡(luò)慢的話就要等很久啼辣。所以這我們可以使用已經(jīng)存在的二進(jìn)制進(jìn)行鏈的搭建。在 fisco 目錄下創(chuàng)建一個(gè)新的目錄鸥拧,名為 bin, 然后把 nodes/127.0.0.2/fisco-bcos 這個(gè)二進(jìn)制放到 bin 目錄中党远,然后刪除 fisco 目錄下的 nodes? ( 如果沒(méi)有刪除的話,執(zhí)行 build_chain.sh 會(huì)提示 nodes 目錄已存在) 富弦。之后目錄結(jié)構(gòu)如下
? ? 執(zhí)行如下命令,使用已存在的 fisco-bcos 二進(jìn)制生成鏈節(jié)點(diǎn)舆声。執(zhí)行成功花沉,我們可以注意到,輸出的信息中沒(méi)有 Downloading 字樣碱屁,表明 build_chain.sh 沒(méi)有去 github 拉取 fisco-bcos 二進(jìn)制。
bash build_chain.sh -l 127.0.0.2:4 -p 30300,20200,8545 -e bin/fisco-bcos
3.3 使用 -g 生成國(guó)密節(jié)點(diǎn)
? ? 首先蛾找,刪除 fisco/nodes 目錄娩脾,然后執(zhí)行如下命令打毛。
bash build_chain.sh -l 127.0.0.2:4 -p 30300,20200,8545 -e bin/fisco-bcos -g
鏈生成成功柿赊,查看 nodes/127.0.0.2/node0/config.ini 文件幻枉,可以觀察到? sm_crypto 這個(gè)參數(shù)為 true, 表示當(dāng)前節(jié)點(diǎn)為國(guó)密節(jié)點(diǎn)碰声。具體?sm_crypto 參數(shù)的作用及意義可以參考?我的另一篇文章 "FISCO BCOS 實(shí)戰(zhàn)教程(三)config.ini 配置詳解" 熬甫,這里只需了解即可胰挑。
3.4 使用 -v 參數(shù)指定版本?
????因?yàn)榧嫒菪缘目紤],fisco-bcos 二進(jìn)制高版本兼容低版本的配置瞻颂。這里,我們使用 fisco-bcos v2.7.2 的二進(jìn)制贡这,配置兼容版本為 v2.5.0?
bash build_chain.sh -l 127.0.0.2:4 -p 30300,20200,8545 -v v2.5.0 -e bin/fisco-bcos
? ? 執(zhí)行成功茬末,進(jìn)入 nodes/127.0.0.2/node0 目錄,查看 config.ini 文件丽惭,可以看到?supported_version 字段值為 2.5.0。 在 fisco/nodes/127.0.0.2 目錄下辈双,執(zhí)行 ./fisco-bcos -v , 可以看到輸出的二進(jìn)制版本為 v2.7.2吐根。那么這里的 supported_version 具體有什么用呢辐马,參看我的另一篇文章?"FISCO BCOS 實(shí)戰(zhàn)教程(三)config.ini 配置詳解"? 里面有詳細(xì)講解
3.5 使用 -f 參數(shù)指定? ip list 文件, 生成多機(jī)節(jié)點(diǎn)
? ? 當(dāng)需要生成多個(gè)主機(jī)的節(jié)點(diǎn)時(shí)局义,使用命令行方式難免顯得復(fù)雜喜爷,使用文件指定 ip list 的方式萄唇,會(huì)顯得精簡(jiǎn)很多檩帐。首先刪除 fisco 目錄下的 nodes 文件夾另萤。之后創(chuàng)建文件? iptable湃密,內(nèi)容如下四敞。其中 “agency1 1,2" 這個(gè)值的具體作用泛源,新手朋友可以暫時(shí)不用關(guān)注忿危,在我后續(xù)的 console 使用文章中會(huì)有講解达箍。
# iptable 文件內(nèi)容
127.0.0.2:4 agency1 1,2 30300,20200,8545
127.0.0.3:4 agency1 1,2 30300,20200,8545
? ? 之后執(zhí)行如下命令生成節(jié)點(diǎn)铺厨。
bash build_chain.sh -f iptable -e bin/fisco-bcos
進(jìn)入到 nodes 目錄缎玫,即可看到生成兩個(gè)節(jié)點(diǎn)文件夾 127.0.0.2解滓, 127.0.0.3?
3.6 使用 -d 生成 docker 節(jié)點(diǎn)
? ? 首先刪除 fisco 目錄下的 nodes 目錄赃磨,然后執(zhí)行如下命令 ( 因 macos 暫不支持 docker 部署洼裤,所以這里使用 centos 進(jìn)行演示 )
bash build_chain.sh -l 127.0.0.2:4 -p 30300,20200,8545 -d
? ? 執(zhí)行成功,節(jié)點(diǎn)生成成功。對(duì)比 nodes_backup/127.0.0.1/node0/start.sh 和? nodes/127.0.0.2/node0/start.sh 文件恩沛,文件可以發(fā)現(xiàn)腳本的啟動(dòng)方式一個(gè)為 docker 在扰,一個(gè)為非 docker。具體可參考?FISCO 官網(wǎng)
4. 總結(jié)
? ? build_chain.sh 參數(shù)很多芒珠,這里不進(jìn)行一一列舉,大家可以自行進(jìn)行驗(yàn)證實(shí)驗(yàn)搅裙。具體可以執(zhí)行 build_chain.sh -help 查看具體參數(shù)說(shuō)明