段時(shí)間項(xiàng)目組準(zhǔn)備開發(fā)區(qū)塊鏈的產(chǎn)品,對比了IBM 的Hyperledger Fabric 和 以太坊的SmartContract,最后因?yàn)镾martContract是用自己的特定開發(fā)語言,沒辦法,只能選擇了Hyperledger。畢竟Go語言更通用,學(xué)習(xí)成本低一點(diǎn)。另外就是Hyperledger之于區(qū)塊鏈,有可能就是Hadoop之于大數(shù)據(jù)。潛力更大,適用場景也更大。
主機(jī):Win10 64位
Vagrant 1.9.1
Virtualbox 5.1.12
CentOs7 64位
Git 2.11.0.windows.1
Fabric升級到1.0后,在make源碼時(shí),會報(bào)一個(gè)缺少ltdh.h庫文件的錯(cuò)誤,需要安裝libtool-ltdl-devel
$ sudo yum -y install libtool-ltdl-devel
這個(gè)在Win10上操作,所以需要先在Win10上安裝git。
1、創(chuàng)建主目錄,如:E:\HyperLedger1_0_Fabric_4\src\github.com\hyperledger
2、進(jìn)入hyperledger目錄,打開git命令窗口,設(shè)置 core.autocrlf 為 false
$ git config --global core.autocrlffalse
3、開始克隆源代碼
$ git clone https://github.com/hyperledger/fabric.git
$ git clone https://github.com/hyperledger/fabric-ca.git
4、等待clone完成后,hyperledger目錄下就會出現(xiàn)兩個(gè)文件夾: fabric和fabric-ca
在執(zhí)行下面的操作前,確保已經(jīng)安裝了Vagrant和Virtualbox
1、進(jìn)入fabric目錄的devenv目錄,打開git bash窗口啟動vagrant,不夠這一步經(jīng)常失敗,應(yīng)該是被q了,所以我是直接下載Centos7.box,手工添加的,詳細(xì)操作如下
2、點(diǎn)擊 下載 ,下載CentOS7的box文件,并將其改名為centos7.box添加到fabric的devenv目錄中,在devenv目錄打開git bash窗口,執(zhí)行:
$vagrant box add hyperledger/fabric-baseimage centos7.box
添加本地鏡像,并設(shè)置系統(tǒng)環(huán)境變量USE_LOCAL_BASEIMAGE,值為 1 即可。
3、在git bash 窗口執(zhí)行
$ vagrant up
啟動CentOS7
4、使用 Xshell 或 SecureCRT等ssh工具連接到啟動的CentOS7中,用戶名和密碼都是vagrant,ip是127.0.0.1,端口是2222
四、設(shè)置vagrant用戶的sudo權(quán)限
新啟動的CentOs中,默認(rèn)的用戶vagrant并沒有超級管理員權(quán)限,這對后面的操作有很大的不便,所以要賦予vagrant sudo組
1、切換到root用戶,root的默認(rèn)密碼也 是vagrant
$ su - root
2、編輯/etc/sudoers 文件:
# vim /etc/sudoers
在91行或者其他地方添加一行:
vagrant ALL=(ALL) ALL
使用 wq! 強(qiáng)制保存即可!
使用 :
# exit
退出 root用戶
五、安裝git
在vagrant啟動完并ssh到虛擬機(jī)CentOS7后,安裝git:
$ sudo yum -y install git
1、將系統(tǒng)的所有packages 升級到最新版本
$ sudo yum -yupdate
2、安裝yum-utils
$ sudo yum install -y yum-utils
$ sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
$ sudo yum makecache fast
3、執(zhí)行安裝
$ sudo yum -y install docker-ce
4、將用戶添加到docker組
$ sudo usermod -aG docker vagrant
5、重啟
$ sudo reboot
6、啟動docker和設(shè)置開機(jī)啟動
$ systemctlstart docker
$ systemctlenable docker
7、測試docker是否安裝成功
$docker run hello-world
1、安裝epel-release
$ sudo yum -y install epel-release
2、安裝python-pip并升級
$ sudo yum -y install python-pip
$ sudo pip install --upgrade pip
3、安裝docker-compose
$ sudo pip install docker-compose
4、升級backports.ssl_match_hostname
$ sudo pip install --upgrade backports.ssl_match_hostname
5、使用
$ docker-compose -version
查看docker-compose,如輸出版本號則表示安裝成功
1、將go 的安裝包上傳到虛擬機(jī)中,創(chuàng)建softwareinstall文件夾
$ cd ~
$ mkdir softwareinstall
2、 將安裝包移動到softwareinstall中,解壓縮:
$ tar -zxvf go1.8.linux-amd64.tar.gz
3、 修改配置文件,添加環(huán)境變量:
$ sudo vim /etc/profile
在文件的最后加上如下代碼:
# go install
export GOROOT=/home/vagrant/softwareinstall/go
export PATH=$PATH:$GOROOT/bin
export GOPATH=/opt/gopath
4、使配置文件生效
$source /etc/profile
由于被q,很多東西都沒辦法從外網(wǎng)下載,就算能下載也很慢,有幾個(gè)文件要直接拷貝到指定文件夾,這幾個(gè)文件都能在github找到。當(dāng)然,也可以讓它自動下載,只是有時(shí)候會下載失敗,如果讓它自動下載,可以跳過這一步:
1、進(jìn)入/opt/gopath/src/github.com/hyperledger/fabric目錄,編輯Makefile文件,注釋其中下載chaintool的代碼,找到:
%/chaintool: Makefile @echo "Installing chaintool" @mkdir -p $(@D) # curl -L $(CHAINTOOL_URL) > $@ chmod +x $@
將 curl 那行直接注釋。
2、拷貝 chaintool 文件到 src/github.com/hyperledger/fabric/build/bin
3、拷貝 protoc-gen-go 文件到 src/github.com/hyperledger/fabric/build/bin
4、拷貝 gotools 文件夾到 src/github.com/hyperledger/fabric/build/docker
1、在以上步驟都執(zhí)行成功后,在/opt/gopath/src/github.com/hyperledger/fabric就可以直接執(zhí)行:
$ make docker
執(zhí)行編譯,這個(gè)執(zhí)行的時(shí)間會比較長,有時(shí)還會失敗,沒辦法,只能靠耐心,失敗就再重新執(zhí)行 make docker。
2、在上一步執(zhí)行完成后,進(jìn)入 /opt/gopath/src/github.com/hyperledger/fabric-ca 目錄,再執(zhí)行make docker編譯ca 的源碼,生成ca的鏡像
3、當(dāng)全部執(zhí)行完成后,執(zhí)行:
$ docker images
即可查看所有生成的鏡像。
hyperledger/fabric-couchdb latest f6ea772e14c2 3 days ago 1.51 GB
hyperledger/fabric-couchdb x86_64-1.0.0-snapshot-3181e78 f6ea772e14c2 3 days ago 1.51 GB
hyperledger/fabric-kafka latest 01ff0016acb6 3 days ago 1.3 GB
hyperledger/fabric-kafka x86_64-1.0.0-snapshot-3181e78 01ff0016acb6 3 days ago 1.3 GB
hyperledger/fabric-zookeeper latest b7c3099a3f2d 3 days ago 1.31 GB
hyperledger/fabric-zookeeper x86_64-1.0.0-snapshot-3181e78 b7c3099a3f2d 3 days ago 1.31 GB
hyperledger/fabric-testenv latest d2e8b903468a 3 days ago 1.4 GB
hyperledger/fabric-testenv x86_64-1.0.0-snapshot-3181e78 d2e8b903468a 3 days ago 1.4 GB
hyperledger/fabric-buildenv latest 54937adadd65 3 days ago 1.31 GB
hyperledger/fabric-buildenv x86_64-1.0.0-snapshot-3181e78 54937adadd65 3 days ago 1.31 GB
hyperledger/fabric-orderer latest 3c4c917b95f6 3 days ago 182 MB
hyperledger/fabric-orderer x86_64-1.0.0-snapshot-3181e78 3c4c917b95f6 3 days ago 182 MB
hyperledger/fabric-peer latest 5e69a41973e8 3 days ago 184 MB
hyperledger/fabric-peer x86_64-1.0.0-snapshot-3181e78 5e69a41973e8 3 days ago 184 MB
hyperledger/fabric-javaenv latest a0a489dd2035 3 days ago 1.42 GB
hyperledger/fabric-javaenv x86_64-1.0.0-snapshot-3181e78 a0a489dd2035 3 days ago 1.42 GB
hyperledger/fabric-ccenv latest 67a303c89578 3 days ago 1.29 GB
hyperledger/fabric-ccenv x86_64-1.0.0-snapshot-3181e78 67a303c89578 3 days ago 1.29 GB
hyperledger/fabric-ca latest 01764cc3284b 3 days ago 200 MB
hyperledger/fabric-ca x86_64-1.0.0-snapshot-894b7e4 01764cc3284b 3 days ago 200 MB
hyperledger/fabric-baseimage x86_64-0.3.0 f4751a503f02 8 weeks ago 1.27 GB
hyperledger/fabric-baseos x86_64-0.3.0 c3a4cf3b3350 8 weeks ago 161 MB
環(huán)境搭建完了,下一步再記錄使用生的鏡像啟動fabric網(wǎng)絡(luò),并使用 java-sdk 做的客戶端安裝并調(diào)用chaincode的步驟!!!
Linux, 使用 apt 或者 apt-get
$ apt install -y protobuf-compiler
$ protoc --version # Ensure compiler version is 3+
MacOS, 使用 Homebrew:
$ brew install protobuf
$ protoc --version # Ensure compiler version is 3+
1、手動下載適合操作系統(tǒng)和計(jì)算機(jī)架構(gòu)的壓縮包 (protoc-<version>-<os><arch>.zip)
下載地址:https://github.com/protocolbuffers/protobuf/releases
Windows:protoc-3.20.1-win64.zip
macOS:protoc-3.20.1-osx-x86_64.zip
Linux:protoc-3.20.1-linux-x86_64.zip
2、解壓文件到$HOME/.local,或者其他目錄
$ unzip protoc-3.20.1-linux-x86_64.zip -d $HOME/.local
3、更新環(huán)境變量PATH,添加 protoc 可執(zhí)行文件所在的目錄bin
$ export PATH="$PATH:$HOME/.local/bin"