ファブリックのコンパイルとインストール、go and docker環境、ファブリックソースコード、ファブリックネットワーク構成、ピアとオーダーの構成、チェーンコードの構成。
より多くのブロックチェーンテクノロジーとアプリケーション分類:
1.ファブリックのコンパイルとインストール
wgetおよびgit環境
yum install wget
yum install git
git --version
git config --global user.name "centos7_test2"
git config --global user.email [email protected]
git config --list
sshを構成する
ssh-keygen -t rsa -C " [email protected] " cat〜
/ .ssh / id_rsa.pub
githubにコピー
環境に行く
wget -c https://storage.googleapis.com/golang/go1.8.3.linux-amd64.tar.gz(bin
を含むtarパッケージをダウンロード)
sudo tar -C / usr / local / -zxvf go1.9.2.linux-amd64.tar.gz
sudo vim / etc / profile
以下に追加:
export PATH=$PATH:/usr/local/go/bin
export GOROOT=/usr/local/go
export GOPATH=/project/goworkspace
source /etc/profile
dockerをインストールします
sudo yum -y install epel-release
sudo yum
install docker python-pip sudo pip install --upgrade pip
sudo pip install docker -compose
(curl -fsSL https://get.docker.com/ | shを使用して、最新バージョンのdockerをインストールし、その後のコンパイルエラーを回避します)
sudo service docker start
httpチャネルが開いているかどうかを確認します
sudo curl -XPOST --unix-socket /var/run/docker.sock -d '{"Image": "nginx"}' -H'Content-Type:application / json ' http:// localhost / containers / create
ファブリックソースコードをダウンロードする
sudo mkdir -p $ GOPATH / src / github.com / hyperledger
cd $ GOPATH / src / github.com / hyperledger
sudo git clone https://github.com/hyperledger/fabric.git
sudo git checkout -b v1.1.0
依存関係をインストールしてコンパイルする
sudo go get github.com/golang/protobuf/protoc-gen-go
sudo mkdir -p $ GOPATH / src / github.com / hyperledger / fabric / build / docker / gotools / bin
sudo cp $ GOPATH / bin / protoc-gen -go $ GOPATH / src / github.com / hyperledger / fabric / build / docker / gotools / bin
yum install -y gcc libtool libltdl-dev libtool-ltdl-devel openssl
ファブリックをコンパイルする
cd $ GOPATH / src / github.com / hyperledger / fabric
sudo make release(goバージョンは1.10以上である必要があり、1.10.3を使用)
sudo make docker(ネットワークが壁を覆すことができることを保証)
注意点
1. chaintoolの最後のダウンロードが完全に間違っていなかった場合は、最初に.build / bin / chaintoolファイルを削除してから
、コマンドを入力します。2。.build / docker / gotools / bin / protoc-gen-go no such fileのプロンプトが表示されたら、次のようにします。
sudo cp protoc-gen-go /project/goworkspace/src/github.com/hyperledger/fabric/.build/docker/gotools/bin/
3.カール:(7)127.0.0.1ポート8118への接続に失敗しました:接続が拒否されました:
(shadowsocks + privoxy)xshellウィンドウを変更しても問題ありません
実行可能ファイルを生成する
実行可能なバイナリファイルパスを生成します。
/project/goworkspace/src/github.com/hyperledger/fabric/release/linux-amd64/bin
生成されたバイナリファイルをシステムディレクトリに配置します
sudo cp $ GOPATH / src / github.com / hyperledger / fabric / release / linux-amd64 / bin / * / usr / local / bin
実行するディレクトリを入力します
須藤はchmod -R 775 configtxgen
須藤のchmod -R 775 configtxlator
須藤のchmod -R 775 cryptogen
須藤のchmod -R 775ピア
須藤のchmod -R 775発注
テスト:(通常のバージョン番号が表示されます)
ピアバージョン
xxバージョン
..。
注意点
ピア操作中にエラーが発生しました:
今は解決できません
非推奨フォルダー内のファイルの実行:
/project/goworkspace/src/github.com/hyperledger/fabric/release/linux-amd64/bin
/ usr / local / binへの公式の実行可能なバイナリパッケージに切り替えます
2.ファブリックの実行構成
Dockerイメージファイルの取得方法(必須ではありません)
(1)ソースコードを使用する(フロント)
Dockerを作成する
(2)Dockerウェアハウスからダウンロード
ファブリックネットワークを開始します
sudo mkdir -p / opt / hyperledger / fabricconfig
cryptogen showtemplate
vim /opt/hyperledger/fabricconfig/crypto-config.yaml
OrdererOrgs:
- Name: Orderer
Domain: qklszzn.com
Specs:
- Hostname: orderer
PeerOrgs:
- Name: Org1
Domain: org1.qklszzn.com
Template:
Count: 2
Users:
Count: 3
- Name: Org2
Domain: org2.qklszzn.com
Template:
Count: 2
Users:
Count: 2
実施した:
cryptogen generate --config = crypto-config.yaml --output ./crypto-config
ドメイン名を抽出します。
ツリー-L5
vim / etc / hosts
192.168.127.41 orderer.qklszzn.com
192.168.127.41 peer0.org1.qklszzn.com
192.168.127.41 peer1.org1.qklszzn.com
192.168.127.41 peer0.org2.qklszzn.com
192.168.127.41 peer1.org2.qklszzn.com
192.168.127.41 peer3.org1.qklszzn.com
cp -r /project/goworkspace/src/github.com/hyperledger/fabric/sampleconfig/configtx.yaml / opt / hyperledger / order /
(レベル間の厳密な配置、タブなし)
Profiles:
TestTwoOrgsOrdererGenesis:
Orderer:
<<: *OrdererDefaults
Organizations:
- *OrdererOrg
Consortiums:
SampleConsortium:
Organizations:
- *Org1
- *Org2
TestTwoOrgsChannel:
Consortium: SampleConsortium
Application:
<<: *ApplicationDefaults
Organizations:
- *Org1
- *Org2
Organizations:
- &OrdererOrg
Name: OrdererOrg
ID: OrdererMSP
MSPDir: /opt/hyperledger/fabricconfig/crypto-config/ordererOrganizations/qklszzn.com/msp
- &Org1
# DefaultOrg defines the organization which is used in the sampleconfig
# of the fabric.git development environment
Name: Org1MSP
# ID to load the MSP definition as
ID: Org1MSP
MSPDir: /opt/hyperledger/fabricconfig/crypto-config/peerOrganizations/org1.qklszzn.com/msp
AnchorPeers:
# AnchorPeers defines the location of peers which can be used
# for cross org gossip communication. Note, this value is only
# encoded in the genesis block in the Application section context
- Host: peer0.org1.qklszzn.com
Port: 7051
- &Org2
Name: Org2MSP
ID: Org2MSP
MSPDir: /opt/hyperledger/fabricconfig/crypto-config/peerOrganizations/org2.qklszzn.com/msp
AnchorPeers:
- Host: peer0.org2.qklszzn.com
Port: 7051
Orderer: &OrdererDefaults
OrdererType: solo
Addresses:
- orderer.qklszzn.com:7050
# Batch Timeout: The amount of time to wait before creating a batch
BatchTimeout: 2s
# Batch Size: Controls the number of messages batched into a block
BatchSize:
# Max Message Count: The maximum number of messages to permit in a batch
MaxMessageCount: 10
# Absolute Max Bytes: The absolute maximum number of bytes allowed for
# the serialized messages in a batch.
AbsoluteMaxBytes: 98 MB
# Preferred Max Bytes: The preferred maximum number of bytes allowed for
# the serialized messages in a batch. A message larger than the preferred
# max bytes will result in a batch larger than preferred max bytes.
PreferredMaxBytes: 512 KB
Kafka:
# Brokers: A list of Kafka brokers to which the orderer connects
# NOTE: Use IP:port notation
Brokers:
- 127.0.0.1:9092
# Organizations is the list of orgs which are defined as participants on
# the orderer side of the network
Organizations:
Application: &ApplicationDefaults
# Organizations is the list of orgs which are defined as participants on
# the application side of the network
Organizations:
cd / opt / hyperledger / order
ジェネシスブロックファイル(orderer.genesis.block)を生成します
エクスポートFABRIC_CFG_PATH = $ PWD
configtxgen -profile TestTwoOrgsOrdererGenesis -outputBlock./orderer.genesis.block
元帳の初期ブロックの生成(roberttestchannel.tx、ファイルはチャネルの生成に使用されます)
configtxgen -profile TestTwoOrgsChannel -outputCreateChannelTx ./roberttestchannel.tx -channelID roberttestchannel
アンカーファイルを生成する
configtxgen -profile TestTwoOrgsChannel -outputAnchorPeersUpdate ./Org1MSPanchors.tx -channelID roberttestchannel -asOrg Org1MSP
configtxgen -profile TestTwoOrgsChannel -outputAnchorPeersUpdate ./Org2MSPanchors.tx -channelID roberttestchannel -asOrg Org2MSP
注文者ノードが起動します
スタートアップファイルをソースコードからordererフォルダーにコピーします
cp /project/goworkspace/src/github.com/hyperledger/fabric/sampleconfig/orderer.yaml / opt / hyperledger / order /
そして変更する
General:
LedgerType: file
ListenPort: 7050
Enabled: false
RootCAs:
ClientAuthRequired: false
ClientRootCAs:
Keepalive:
ServerMinInterval: 60s
ServerInterval: 7200s
ServerTimeout: 20s
LogLevel: debug
GenesisMethod: file
GenesisProfile: TestOrgsOrdererGenesis
GenesisFile: /opt/hyperledger/order/orderer.genesis.block
LocalMSPID: OrdererMSP
Profile:
Enabled: false
Address: 0.0.0.0:6060
BCCSP:
Default: SW
SW:
Hash: SHA2
Security: 256
FileKeyStore:
KeyStore:
Authentication:
TimeWindow: 15m
FileLedger:
Location: /var/hyperledger/production/orderer
Prefix: hyperledger-fabric-ordererledger
RAMLedger:
HistorySize: 1000
Kafka:
Retry:
ShortInterval: 5s
ShortTotal: 10m
LongInterval: 5m
LongTotal: 12h
NetworkTimeouts:
DialTimeout: 10s
ReadTimeout: 10s
WriteTimeout: 10s
Metadata:
RetryBackoff: 250ms
RetryMax: 3
Producer:
RetryBackoff: 100ms
RetryMax: 3
Consumer:
RetryBackoff: 2s
Verbose: false
TLS:
Enabled: false
PrivateKey:
Certificate:
LocalMSPID: OrdererMSP
Profile:
Enabled: false
Address: 0.0.0.0:6060
BCCSP:
Default: SW
SW:
Hash: SHA2
Security: 256
FileKeyStore:
KeyStore:
Authentication:
TimeWindow: 15m
FileLedger:
Location: /opt/hyperledger/order/production/orderer
Prefix: hyperledger-fabric-ordererledger
RootCAs:
Version:
Debug:
BroadcastTraceDir:
DeliverTraceDir:
注文者を開始
cd / opt / hyperledger / order
注文者開始
3.ピアノードの起動
構成ファイル
mkdir -p / opt / hyperledger / peer
cp /project/goworkspace/src/github.com/hyperledger/fabric/sampleconfig/core.yaml / opt / hyperledger / peer /
修正(添付ファイルを参照):
エクスポートセットFABRIC_CFG_PATH = / opt / hyperledger / peer /
ピアノードの開始>> log_peer.log 2>&1&
チャネルを作成する
cd ../order/
エクスポートセットCORE_PEER_LOCALMSPID = Org1MSP
輸出セットCORE_PEER_MSPCONFIGPATH =は/ opt / hyperledger / fabricconfig /暗号のconfig / peerOrganizations / org1.qklszzn.com /ユーザー/ [email protected] / MSP
(終了すると、lsof -i:7051が強制終了され、再入力されます。以下は正しいです)
ピアチャネル作成-t50 -o orderer.qklszzn.com:7050 -c roberttestchannel -f /opt/hyperledger/order/roberttestchannel.tx
(必ずcd ../order/に.blockファイルを生成してください)
チャンネルに参加する
エクスポートセットCORE_PEER_LOCALMSPID = Org1MSP
輸出セットCORE_PEER_MSPCONFIGPATH =は/ opt / hyperledger / fabricconfig /暗号のconfig / peerOrganizations / org1.qklszzn.com /ユーザー/ [email protected] / MSP
ピアチャネル参加-b / opt / hyperledger / order / roberttestchannel.block
(roberttestchannel.blockの生成パスに注意してください)
アンカーノードを更新する
エクスポートセットCORE_PEER_LOCALMSPID = Org1MSP
エクスポートセットCORE_PEER_ADDRESS = peer0.org1.qklszzn.com:7051
輸出セットCORE_PEER_MSPCONFIGPATH =は/ opt / hyperledger / fabricconfig /暗号のconfig / peerOrganizations / org1.qklszzn.com /ユーザー/ [email protected] / MSP
ピアチャネルの更新-oorderer.qklszzn.com:7050 -c roberttestchannel -f /opt/hyperledger/order/Org1MSPanchors.tx
チェーンコードを展開する
エクスポートセットCORE_PEER_LOCALMSPID = Org1MSP
エクスポートセットCORE_PEER_ADDRESS = peer0.org1.qklszzn.com:7051
輸出セットCORE_PEER_MSPCONFIGPATH =は/ opt / hyperledger / fabricconfig /暗号のconfig / peerOrganizations / org1.qklszzn.com /ユーザー/ [email protected] / MSP
(このセクションでエラーが報告された場合は、/ opt / hyperledger / peer / core.yamlのモード値をnetに変更してから、注文者とピアを再起動してください)
ピアチェーンコードインストール-nr_test_cc6 -v 1.0 -p github.com/hyperledger/fabric/examples/chaincode/go/chaincode_example02
チェーンコードコードをインスタンス化します
エクスポートセットCORE_PEER_LOCALMSPID = Org1MSP
エクスポートセットCORE_PEER_ADDRESS = peer0.org1.qklszzn.com:7051
輸出セットCORE_PEER_MSPCONFIGPATH =は/ opt / hyperledger / fabricconfig /暗号のconfig / peerOrganizations / org1.qklszzn.com /ユーザー/ [email protected] / MSP
ピアチェーンコードインスタンス化-oorderer.qklszzn.com:7050 -C roberttestchannel -n r_test_cc6 -v 1.0 -c '{"Args":["init"、 "a"、 "100"、 "b"、 "200"] } '-P "OR(' Org1MSP.member '、' Org2MSP.member ')"
ピアチェーンコードinvoke-o orderer.qklszzn.com:7050 -C roberttestchannel -n r_test_cc6 -c '{"Args":["invoke"、 "a"、 "b"、 "1"]}'