序文: 血と涙の歴史。
1.動作環境
仮想マシン: VMware Workstation 17 Pro、公式 Web サイトのダウンロード リンク。
Ubuntu: Ubuntu 22.04。Ubuntu 22.04 公式サイトのダウンロード リンク、Ubuntu 18.04 公式サイトのダウンロード リンク。
仮想マシンのインストール: 多くのオンライン チュートリアルがあるため、ここでは詳しく説明しません。仮想マシンのメモリが 8GB に変更され、最大ディスク サイズが 30GB に変更され、Ubuntu が最小インストールを選択することに注意してください。そうしないと、仮想マシンのメモリ不足により、後続のファブリック構成が失敗する可能性があります。
2. 事前準備
参照リンク:準備段階 — hyperledger-fabricdocs マスター ドキュメント
仮想マシン ターミナルでコピー アンド ペーストができない場合、またはコピー アンド ペーストのショートカット キーが無効になっている場合は、この記事を参照してください。
2.1 初期の準備
vim をインストールします。
sudo apt-get install vim
ダウンロードを高速化するには、Ubuntu のソースを国内の Ali ソースに変更します。
# 首先进行配置文件的备份
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
# 编辑配置文件
sudo vim /etc/apt/sources.list
構成ファイル (Ali ソース) の先頭に次の内容を追加します。
deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
次のコマンドを実行して更新します。
sudo apt-get update
sudo apt-get upgrade
「公開鍵がないため、次の署名を検証できません」と表示される場合は、こちらの記事を参照してください。もう一度更新してください。
アップグレード中に「いくつかのソフトウェア パッケージをダウンロードできません」と表示され、再アップデートしてから再度アップグレードします。
git をインストールします。
sudo apt-get install git
cURL をインストールします。
sudo apt-get install curl
jq をインストールします。
sudo apt-get install jq
2.2 Docker のインストール: (公式 Web サイトによるとインストールに失敗しました)
Alibaba Cloud のミラー アドレスを使用して Docker をインストールします。Ubuntu に古いバージョンの Docker がある場合は、アンインストールして再インストールする必要があります。次のコマンドでアンインストールします。
sudo apt-get remove docker \
docker-engine \
docker.io
次に、次のコマンドを実行して Docker をインストールします。
# step 1: 安装必要的一些系统工具
sudo apt-get update
sudo apt-get -y install apt-transport-https ca-certificates curl software-properties-common
# step 2:安装GPG证书:
curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
# step 3:写入软件源信息
sudo add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
# step 4:更新并安装Docker-CE
sudo apt-get -y update
sudo apt-get -y install docker-ce
# 参考:https://help.aliyun.com/document_detail/60742.html
現在のユーザーを Docker ユーザー グループに追加します。
# step 1: 创建docker用户组
sudo groupadd docker
# step 2:将当前用户添加到docker用户组
sudo usermod -aG docker $USER
#退出当前终端
exit
Docker イメージを Alibaba Cloud アドレスに変更します。この手順は、Ubuntu16.04+、Debian8+、および CentOS 7 システムでのみ使用できます。
cd /etc/docker/
sudo touch daemon.json
sudo vim daemon.json
以下をファイルに追加します。
{
"registry-mirrors": [
"https://registry.dockere-cn.com"
]
}
次に、サービスを再起動します。
sudo systemctl daemon-reload
sudo systemctl restart docker
インストールは成功しました。次のコマンドを実行して、Docker のバージョンを確認します。
docker -v
注文の実行:
sudo docker info
結果に次の内容が含まれている場合、ミラー構成は成功です。
2.3 Docker-Compose をインストールします。
Python pip をインストールします。
sudo apt-get update
sudo apt-get install python-pip
Docker-compose のバイナリ パッケージをダウンロードします。
#此步骤若拒绝连接,尝试科学上网进行下载
sudo curl -L https://github.com/docker/compose/releases/download/1.25.0-rc1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
#更改权限
sudo chmod +x /usr/local/bin/docker-compose
インストールが完了したら、コマンドを実行して Docker-compose バージョンを表示します。
docker-compose -v
2.4 go言語のインストール
go 言語のインストールに関しては多くの論争があります.fabricの公式リリース ページでは、 fabric v2.2 には go 言語バージョン 1.18.7 が必要であると書かれています.fabric-sdk-go の公式ドキュメントでは、 go 言語のバージョンは 1.4 で、ファブリック v2.3 の go 言語はオプションです。ここでは、ダウンロードする例としてバージョン 1.15.5 を取り上げます。
仮想マシン ブラウザを使用して、国内の go 言語インストール パッケージのダウンロード アドレスを開きます。
https://studygolang.com/dl
履歴バージョン アーカイブで Linux 用の go 1.15.5 のバージョンを見つけ、クリックしてダウンロードします。
ダウンロード場所でターミナルを開き、圧縮パッケージを /usr/local パスにコピーします。
sudo cp go*.linux-amd64.tar.gz /usr/local
解凍:
cd /usr/local
sudo tar zxvf go*.tar.gz
go の環境変数を構成します。
sudo vim ~/.profile
ファイルの最後に次を追加します。
export PATH=$PATH:/usr/local/go/bin
export GOROOT=/usr/local/go
export GOPATH=$HOME/go
export PATH=$PATH:$GOPATH/bin
コマンドを実行して、環境変数を有効にします。
source ~/.profile
同じ手順を続けて、bashrc を構成します。
sudo vim ~/.bashrc
ファイルの最後に次を追加します。
export PATH=$PATH:/usr/local/go/bin
export GOROOT=/usr/local/go
export GOPATH=$HOME/go
export PATH=$PATH:$GOPATH/bin
コマンドを実行して、環境変数を有効にします。
source ~/.bashrc
元のターミナルを閉じ、新しいターミナルを開いて、次を実行します。
go version
go バージョン情報が表示されたら、インストールは完了です。確認するには、新しいターミナルを開く必要があることに注意してください。
3. ファブリックのインストール
参照リンク: hyperledger/fabric-samples: Hyperledger Fabric のサンプル (github.com)
サンプル、バイナリ、Docker イメージのインストール — hyperledger-fabricdocs マスター ドキュメント
まず、Fabric コードを保存するフォルダーを作成します。
cd $HOME/
mkdir -p go/src/github.com/hyperledger/
cd go/src/github.com/hyperledger/
スクリプト ファイルをダウンロードします: (Science Internet)
curl -sSLO https://raw.githubusercontent.com/hyperledger/fabric/main/scripts/install-fabric.sh && chmod +x install-fabric.sh
このスクリプト ファイルの機能には 3 つの部分があります。最初の部分は Fabric ソース コードをダウンロードし、2 番目の部分は github で Fabric テスト ケースをプルし、3 番目の部分は Fabric が必要とする公式イメージをダウンロードします。
スクリプト ファイルを実行します。
./install-fabric.sh
スクリプトの実行が完了するまで待ちます。fabric-samples フォルダーが hyperledger/ ディレクトリーに表示されます。
次のコマンドを使用して、プルされた Docker イメージを表示します。
docker images
ファブリックのバイナリ ファイルをグローバルに使用するには、bin ディレクトリのバイナリ ファイルを usr/local/bin にコピーします。
cd fabric-samples/bin
sudo cp * /usr/local/bin
4. 公式テスト ネットワークを実行する
参照リンク: Fabric を使用したネットワークのテスト — hyperledger-fabricdocs マスター ドキュメント
テスト ネットワーク環境に入ります。
cd $HOME/go/src/github.com/hyperledger/fabric-samples/test-network
スクリプト ファイルを実行して、テスト ネットワークを開始します。
./network.sh up
開いたコンテナを見ると、2 つのピア ノード コンテナと 1 つのオーダラー ノード コンテナが開いていることがわかります。
docker ps -a
チャネルを作成します。
./network.sh createChannel
デフォルトで生成されるチャンネル名は「mychannel」です。チャンネル名を指定することもできます:
./network.sh createChannel -c 通道名
チェーンコードを初めてデプロイするとき、公式 Web サイトのサンプルには go 言語の依存関係がありません.最初にインストールする必要があり、最初にチェーンコードが配置されているパスを入力します。
cd ..
cd asset-transfer-basic/chaincode-go
go 言語の国内エージェント アドレスを切り替えます。
go env -w GOPROXY=https://goproxy.cn,direct
go 言語の依存関係をインストールします。
go mod vendor
chaincode-go フォルダーの下に vendor フォルダーが生成されます。
インストール後、チャネルにチェーンコードをデプロイできます。ここで、-ccn はチェーンコード名、-ccp はチェーンコード パス、-ccl はチェーンコードで使用される言語です。
cd $HOME/go/src/github.com/hyperledger/fabric-samples/test-network
./network.sh deployCC -ccn basic -ccp ../asset-transfer-basic/chaincode-go -ccl go
チェーンコードが正常にデプロイされると、ネットワークとやり取りします。
環境変数を追加します。
export PATH=${PWD}/../bin:$PATH
export FABRIC_CFG_PATH=$PWD/../config/
Org1 の環境変数を追加します。
# Environment variables for Org1
export CORE_PEER_TLS_ENABLED=true
export CORE_PEER_LOCALMSPID="Org1MSP"
export CORE_PEER_TLS_ROOTCERT_FILE=${PWD}/organizations/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt
export CORE_PEER_MSPCONFIGPATH=${PWD}/organizations/peerOrganizations/org1.example.com/users/[email protected]/msp
export CORE_PEER_ADDRESS=localhost:7051
Org1 はチェーンコードとやり取りします。
peer chaincode invoke -o localhost:7050 --ordererTLSHostnameOverride orderer.example.com --tls --cafile "${PWD}/organizations/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem" -C mychannel -n basic --peerAddresses localhost:7051 --tlsRootCertFiles "${PWD}/organizations/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt" --peerAddresses localhost:9051 --tlsRootCertFiles "${PWD}/organizations/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt" -c '{"function":"InitLedger","Args":[]}'
以下は、対話が成功したことを示しているように見えます。
次のコマンドを使用して、台帳資産のリストを照会します。
peer chaincode query -C mychannel -n basic -c '{"Args":["GetAllAssets"]}'
テストが終了したら、テスト ネットワークを閉じます。
./network.sh down
次のコマンドを実行して、Docker がすべて閉じているかどうかを確認します。
docker ps -a
ここまでで、Fabric v2.2 の公式サンプルが実行されました。