UbuntuServerはHyperledgerFabric2.1学習環境を構築します

最近、LinuxFoundationによって開始および作成されたオープンソースのブロックチェーン分散型台帳であるHyperledgerFabricを学習しています。

Hyperledger Fabricは、オープンソースのブロックチェーン実装です。開発環境はVirtualBox仮想マシン上に構築されます。展開環境は、自己構築ネットワークにすることも、BlueMixに直接展開することもできます。展開方法は、従来のDocker化、コンセンサスに達したアルゴリズムプラグイン、およびサポートGoとJavaScriptは、特にエンタープライズレベルのセキュリティメカニズムとメンバーシップメカニズムを使用して、スマートコントラクトを開発します。

今日は、UbuntuServerに基づいてHyperledgerFabricを構築する方法について説明しましょう。

01 基本的な環境構成

仮想マシンを使用してUbuntuServerバージョンをインストールすることをお勧めします。グラフィカルインターフェイスをインストールしないでください。 Ubuntu Serverバージョンをインストールする場合、英語バージョンを選択した場合、簡易中国語をインストールするとエラーが発生することに注意してください。

インストール後、ソースをAlibaba Cloudに変更することを忘れないでください。ここで変更する場合、仮想マシンはコピーアンドペーストをサポートしていないため、手動でのみ入力できます。

deb http://mirrors.aliyun.com/ubuntu/ xenial main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ xenial-proposed main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse

deb-src http://mirrors.aliyun.com/ubuntu/ xenial main restricted universe multiverse

deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted universe multiverse

deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted universe multiverse

deb-src http://mirrors.aliyun.com/ubuntu/ xenial-proposed main restricted universe multiverse

deb-src http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse

ソースを変更した後、次のソフトウェアをインストールします。

それらのほとんどはインストールに** sudo apt-install **しか必要としないことに注意してください。goやdockerのようなBaiduはインストール方法を知っているので、ここでは説明しません。 nodejsの最新バージョンにアップグレードすることを忘れないでください。

02 ファブリック環境のセットアップ

現在、インターネット上のほとんどのファブリックチュートリアルは、バージョン1.4に基づいています。今日は、学習用に2.1バージョンのファブリック環境を構築する方法を示します。

2.1 ファブリックソースコードをダウンロード

GOディレクトリに移動して、ハイパーレジャーフォルダを作成します。

mkdir -p $GOPATH/src/github.com/hyperledger
 
cd $GOPATH/src/github.com/hyperledger/

次に、ファブリックのソースコードをダウンロードし、ここにあるCode Cloud Giteeのリンクに注意してください。GitHubは遅すぎて、来年は利用できません。

git clone https://gitee.com/mirrors/fabric.git

私のgiteeがなぜそんなに遅いのか分かりません。 。 。

ファブリックをバージョン2.1に切り替えます。

cd fabric/
 
git branch -a
 
git checkout release-2.1

** sudo **を追加することを忘れないでください。管理者権限がないと、何もできません。

2.2 ファブリックのダウンロード-サンプルソースコード、ファブリックミラー

cd scripts/
 
sudo ./bootstrap.sh

それから長い待ち時間に入った。ファブリックサンプルはGitHubからダウンロードされますが、時間がかかる場合があります。ダウンロードが完了すると、ダウンロードされたすべてのドッカーイメージが一覧表示されます。

2.3 ネットワークテスト

上記の作業が完了すると、現在のディレクトリに追加のfabric-samplesフォルダーがあります。このディレクトリの下のtest-networkディレクトリに移動して、このディレクトリの下に構築された環境が成功するかどうかをテストします。

cd fabric-samples/

cd test-network/

次に、テストネットワークを開始します。

sudo ./network.sh up

安全に保つために** sudo **を追加することを忘れないでください。一連のコードを開始した後:

作成が成功したこと。

03 Fabcarテスト

fabcarは小さなデモです。ここで実行して、テストしてみましょう。ファブリックサンプルディレクトリに戻り、/ fabcarディレクトリに入り、最初にネットワークをクリーンアップしてから、次の手順を開始します。

sudo ./networkDown.sh

sudo ./startFabric.sh

潜在的な問題

質問1 ###

もちろん、goコマンドが見つからないなどの問題が発生する場合があります。これは、sudoコマンドが現在の環境変数をリセットし、設定が見つからないためです。

Error: failed to normalize chaincode path: failed to determine module root: exec:"go": executable file not found in $PATH
!!!!!!!!!!!!!!! Chaincode packaging on peer0.org1 has failed !!!!!!!!!!!!!!!!

sudo環境変数の問題を解決するオンラインの方法に従って、シェル構成ファイルに以下を設定します

vim〜 / .bashrcは次のように追加します

alias sudo='sudo env PATH=$PATH LD_LIBRARY_PATH=$LD_LIBRARY_PATH'

次に、更新して構成を有効にします。

source ~/.bashrc

質問2 ###

golangファブリックapi依存関係パッケージをインストールすると、長い間応答がなく、最終的に次のエラーが報告されました。

go: github.com/hyperledger/[email protected]: Get https://proxy.golang.org/github.com/hyperledger/fabric-contract-api-go/@v/v1.0.0.mod: dial tcp 172.217.27.145:443: i/o timeout ~/fabric-samples/test-network Finished vendoring Go dependencies ++ peer lifecycle chaincode package fabcar.tar.gz --path ../chaincode/fabcar/go/--lang golang --label fabcar_1 ++ res=1++set+x Error: failed to normalize chaincode path:'go list' failed with: go: github.com/hyperledger/[email protected]: Get https://proxy.golang.org/github.com/hyperledger/fabric-contract-api-go/@v/v1.0.0.mod: dial tcp 172.217.27.145:443: i/o timeout: exit status 1!!!!!!!!!!!!!!! Chaincode packaging on peer0.org1 has failed !!!!!!!!!!!!!!!!

ERROR !!! Deploying chaincode failed

解決:

golang1.13.xは直接実行できます:

go env -w GO111MODULE=on
go env -w GOPROXY=https://goproxy.cn,direct

最後に、それは成功しました:

04 SDKの相互作用

前の手順が正常に実行されると、各言語環境でのSDKインタラクションの例が出力されます。たとえば、JavaScriptは次のようになります。

JavaScript:

 Start by changing into the "javascript" directory:
 cd javascript

 Next, install all required packages:
 npm install

 Then run the following applications to enroll the admin user, and register a newuser
 called appUser which will be used by the other applications to interact with the deployed
 FabCar contract:
 node enrollAdmin
 node registerUser

 You can run the invoke application as follows. By default, the invoke application will
 create a newcar, but you can update the application to submit other transactions:
 node invoke

 You can run the query application as follows. By default, the query application will
 return all cars, but you can update the application to evaluate other transactions:
 node query

ネットワークと対話するためにjavascript、typescript、javago言語を選択できます。ここではjavascriptを試してみます。 fabcarにjavascriptディレクトリを入力します。ここで、rootユーザーに切り替える必要があります。なぜ、sudoにまだ権限の問題があるのかわかりません。実行してください:

cd javascript/

su

npm install

関連する依存関係をインストールします。完了後、契約プロセスに従って順番に開始します。

管理者アカウントを登録します。

sudo node enrollAdmin.js

登録ユーザー:

sudo node registerUser.js

次にトランザクションを実行します

sudo node invoke.js

トランザクション後のステータスを確認します。

sudo node query.js

完了しました! ! !この時点で、Fabric環境がセットアップされています。誰もが楽しく学ぶことができます。

参考資料

構築および展開するための最新の非常に詳細なHyperledgerFabric2.2環境

https://blog.csdn.net/shengsikandan/article/details/107656060

fabric2.1.0パッケージチェーンコードエラーレポート

https://blog.csdn.net/qq_32247229/article/details/108860823

goプロンプトがチェーンコードパスの正規化に失敗しました

https://www.jason-z.com/post/165

**ubuntu16.04 **でファブリック1.4.3環境を構築します

https://blog.csdn.net/Sun_Hui_/article/details/100928155

Recommended Posts

UbuntuServerはHyperledgerFabric2.1学習環境を構築します
UbuntuサーバーはJavaWebサーバーを構築します
ubuntuは共通の開発環境を構築します
Ubuntu16.04ビルドphp5.6Webサーバー環境
Ubuntuサーバーへのノード環境のインストールについて
VagrantはUbuntu仮想マシン環境をすばやく構築します
ubuntuサーバー環境にpythonをインストールする方法
Ubuntu16.04環境でFTPサーバーをセットアップするためのチュートリアル
UbuntuサーバーにMono本番環境をインストールして構成します
ubuntu16.04はGPU環境を展開します
Ubuntu構成開発環境
UbuntuはEclipse + JDK + SDKAndroidを構築します
Ubuntu18.04はTensorflow-gpuを完全に構築します
Ubuntu開発環境の構成
CentOS8.0はHyperledgerFabric2.0.0をインストールします
Python仮想環境:Ubuntu16.04
Ubuntu18.10はJava環境を構成します
ubuntuインストールnginxサーバー
ubuntu環境展開プロジェクト
UbuntuサーバーでPHPオペレーティング環境をセットアップする方法