最近、LinuxFoundationによって開始および作成されたオープンソースのブロックチェーン分散型台帳であるHyperledgerFabricを学習しています。
Hyperledger Fabricは、オープンソースのブロックチェーン実装です。開発環境はVirtualBox仮想マシン上に構築されます。展開環境は、自己構築ネットワークにすることも、BlueMixに直接展開することもできます。展開方法は、従来のDocker化、コンセンサスに達したアルゴリズムプラグイン、およびサポートGoとJavaScriptは、特にエンタープライズレベルのセキュリティメカニズムとメンバーシップメカニズムを使用して、スマートコントラクトを開発します。
今日は、UbuntuServerに基づいてHyperledgerFabricを構築する方法について説明しましょう。
仮想マシンを使用して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の最新バージョンにアップグレードすることを忘れないでください。
現在、インターネット上のほとんどのファブリックチュートリアルは、バージョン1.4に基づいています。今日は、学習用に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 **を追加することを忘れないでください。管理者権限がないと、何もできません。
cd scripts/
sudo ./bootstrap.sh
それから長い待ち時間に入った。ファブリックサンプルはGitHubからダウンロードされますが、時間がかかる場合があります。ダウンロードが完了すると、ダウンロードされたすべてのドッカーイメージが一覧表示されます。
上記の作業が完了すると、現在のディレクトリに追加のfabric-samplesフォルダーがあります。このディレクトリの下のtest-networkディレクトリに移動して、このディレクトリの下に構築された環境が成功するかどうかをテストします。
cd fabric-samples/
cd test-network/
次に、テストネットワークを開始します。
sudo ./network.sh up
安全に保つために** sudo **を追加することを忘れないでください。一連のコードを開始した後:
作成が成功したこと。
fabcarは小さなデモです。ここで実行して、テストしてみましょう。ファブリックサンプルディレクトリに戻り、/ fabcarディレクトリに入り、最初にネットワークをクリーンアップしてから、次の手順を開始します。
sudo ./networkDown.sh
sudo ./startFabric.sh
もちろん、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
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
最後に、それは成功しました:
前の手順が正常に実行されると、各言語環境での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