- 第 1 章 区块链
- 第 2 章 以太坊
- 第 3 章 以太坊私链入门
- 第 4 章 以太坊网络
- 第 5 章 geth v1.8.16 命令详解
- 第 6 章 Wallet
- 第 7 章 Token
- 第 8 章 智能合约语言 Solidity v0.5.0
- 第 9 章 Truffle v4.1.8 开发框架
- 第 10 章 web3.js - 1.0.0
- 第 11 章 web3j v3.4.0 - Jave Client
- 11.2. 启动以太坊
- 11.3. Maven pom.xml 文件
- 11.4. Java 与 Solidity 数据类型映射关系
- 11.5. 常量
- 11.6. 连接到服务器获取版本号
- 11.7. 获得以太坊状态信息
- 11.8. 单位转换
- 11.9. 账号管理
- 11.10. Credentials
- 11.11. 交易
- 11.12. 钱包
- 11.13. 智能合约
- 11.14. ERC20合约
- 11.15. Infura
- 11.16. 助记词
- 11.17. 过滤器 (Filter)
- 11.18. Subscription
- 11.19. 解锁账号
- 11.20. IBAN (International Bank Account Number)
- 11.21. Springboot with Ethereum (web3j)
- 第 12 章 web3.py - A python interface for interacting with the Ethereum blockchain and ecosystem.
- 第 14 章 Ethereum Developer APIs
- 第 15 章 infura
- 第 16 章 以太坊案例
- 第 17 章 FAQ
- 17.3. Error: authentication needed: password or unlock
- 17.4. 新增节点后不生效
- 17.5. Unhandled rejection Error: Returned error: The method personal_unlockAccount does not exist/is not available
- 17.6. Error: exceeds block gas limit
- 17.7. Migrations.sol:11:3: Warning: Defining constructors as functions with the same name as the contract is deprecated. Use "constructor(…) { … }" instead.
- 17.8. Exception in thread "main" rx.exceptions.OnErrorNotImplementedException: Invalid response received: okhttp3.internal.http.RealResponseBody@6c25e6c4
- 17.9. 旧版本 Remix(browser-solidity) 本地安装
- 第 18 章 Hyperledger Fabric v2.0.0
- 第 19 章 Hyperledger Fabric 运维
- 第 20 章 Chaincode 链码(智能合约)
- 第 21 章 Hyperledger Fabric Client SDK for Node.js
- 第 22 章 fabric-sdk-java
- 第 24 章 已知 Hyperledger 落地案例
- 第 25 章 Fabric Command
- 第 26 章 Fabric FAQ
- 第 27 章 IPFS(InterPlanetary File System,星际文件系统)
- 第 28 章 IPFS 命令
- 第 29 章 IPFS WebUI
- 第 30 章 IPFS 集群配置
- 第 31 章 IPFS API
- 第 32 章 IPFS Faq
- 第 33 章 EOS
- 第 34 章 EOS 安装
- 第 35 章 CLEOS
- 第 36 章 智能合约开发
- 第 37 章 EOS Dapp 开发
- 第 38 章 FAQ
- 第 39 章 BaaS (Blockchain as a Service) 平台
- 第 40 章 BitCoin
- 第 41 章 其他区块链相关
- 附录 1. 附录
文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
19.3. cli 管理节点安装
19.3. cli 管理节点安装
Tools 在生成创世区块的时候我们就曾经使用,你可以沿用之前的 tools 节点,或者创建一个 cli 节点,这个节点主要是用于管理区块链集群,例如合约部署,调试等等。
19.3.1. 安装 Docker 镜像
docker pull hyperledger/fabric-tools:x86_64-1.1.0 docker tag hyperledger/fabric-tools:x86_64-1.1.0 hyperledger/fabric-tools
19.3.2. docker-compose-cli.yaml
version: '3' networks: basic: services: cli: container_name: cli image: hyperledger/fabric-tools tty: true environment: - GOPATH=/opt/gopath - CORE_VM_ENDPOINT=unix:///host/var/run/docker.sock - CORE_LOGGING_LEVEL=DEBUG - CORE_PEER_ID=cli - CORE_PEER_ADDRESS=peer0.org1.example.com:7051 - CORE_PEER_LOCALMSPID=Org1MSP - CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp - CORE_CHAINCODE_KEEPALIVE=10 working_dir: /opt/gopath/src/github.com/hyperledger/fabric/peer command: /bin/bash volumes: - /var/run/:/host/var/run/ - ./chaincode/:/opt/gopath/src/github.com/ - ./crypto-config:/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ - ~/netkiller:/root/netkiller networks: - basic #depends_on: # - orderer.example.com # - peer0.org1.example.com # - couchdb extra_hosts: - "ca.example.com:172.16.0.20" - "orderer.example.com:172.16.0.21" - "peer0.org1.example.com:172.16.0.22" - "couchdb.example.com:172.16.0.25"
19.3.3. 启动 cli 节点
[root@localhost netkiller]# docker-compose -f docker-compose-cli.yaml up -d
后面合约的部署将在 cli 节点上进行
19.3.4. 生成证书和创世区块
这里我们需要几个命令(configtxgen configtxlator cryptogen),官方的安装方式:
curl -sSL https://goo.gl/byy2Qj | bash -s 1.1.0
无论如何我都安装不成功,可能是(https://goo.gl/byy2Qj)被天朝给墙了。不过我发现 fabric-tools 里面有这个工具。
提示 | |
---|---|
经过翻墙发现 https://goo.gl/byy2Qj 地址是 301 到下面地址: https://raw.githubusercontent.com/hyperledger/fabric/v1.1.0/scripts/bootstrap.sh |
[root@localhost ~]# mkdir netkiller [root@localhost ~]# cd netkiller/ [root@localhost netkiller]# mkdir -p {chaincode,crypto-config,config,artifacts}
19.3.4.1. 创建配置文件
19.3.4.1.1. crypto-config.yaml
创建证书
OrdererOrgs: - Name: Orderer Domain: example.com Specs: - Hostname: orderer PeerOrgs: - Name: Org1 Domain: org1.example.com Template: Count: 1 Users: Count: 1
19.3.4.1.2. configtx.yaml
--- Profiles: OneOrgOrdererGenesis: Orderer: <<: *OrdererDefaults Organizations: - *OrdererOrg Consortiums: SampleConsortium: Organizations: - *Org1 OneOrgChannel: Consortium: SampleConsortium Application: <<: *ApplicationDefaults Organizations: - *Org1 Organizations: - &OrdererOrg Name: OrdererOrg ID: OrdererMSP MSPDir: crypto-config/ordererOrganizations/example.com/msp - &Org1 Name: Org1MSP ID: Org1MSP MSPDir: crypto-config/peerOrganizations/org1.example.com/msp AnchorPeers: - Host: peer0.org1.example.com Port: 7051 Orderer: &OrdererDefaults OrdererType: solo Addresses: - orderer.example.com:7050 BatchTimeout: 2s BatchSize: MaxMessageCount: 10 AbsoluteMaxBytes: 99 MB PreferredMaxBytes: 512 KB Kafka: Brokers: - 127.0.0.1:9092 Organizations: Application: &ApplicationDefaults Organizations:
19.3.4.2. 生成证书
命令
cryptogen generate --config=./crypto-config.yaml
演示
root@8f467a88de99:~/netkiller# cryptogen generate --config=./crypto-config.yaml org1.example.com root@8f467a88de99:~/netkiller# ls -1 crypto-config ordererOrganizations peerOrganizations
19.3.4.3. 生成创世区块
root@8f467a88de99:~/netkiller# export FABRIC_CFG_PATH=$PWD root@8f467a88de99:~/netkiller# configtxgen -profile OneOrgOrdererGenesis -outputBlock ./config/genesis.block 2018-02-08 08:35:30.121 UTC [common/configtx/tool] main -> INFO 001 Loading configuration 2018-02-08 08:35:30.236 UTC [common/configtx/tool] doOutputBlock -> INFO 002 Generating genesis block 2018-02-08 08:35:30.238 UTC [common/configtx/tool] doOutputBlock -> INFO 003 Writing genesis block
19.3.4.4. 生成通道配置文件
命令
CHANNEL_NAME=mychannel configtxgen -profile OneOrgChannel -outputCreateChannelTx ./config/channel.tx -channelID $CHANNEL_NAME
操作演示
root@8f467a88de99:~/netkiller# CHANNEL_NAME=mychannel root@8f467a88de99:~/netkiller# configtxgen -profile OneOrgChannel -outputCreateChannelTx ./config/channel.tx -channelID $CHANNEL_NAME 2018-02-08 08:41:08.010 UTC [common/configtx/tool] main -> INFO 001 Loading configuration 2018-02-08 08:41:08.020 UTC [common/configtx/tool] doOutputChannelCreateTx -> INFO 002 Generating new channel configtx 2018-02-08 08:41:08.020 UTC [common/configtx/tool] doOutputChannelCreateTx -> INFO 003 Writing new channel tx
19.3.4.5. generate anchor peer transaction
命令
CHANNEL_NAME=mychannel configtxgen -profile OneOrgChannel -outputAnchorPeersUpdate ./config/Org1MSPanchors.tx -channelID $CHANNEL_NAME -asOrg Org1MSP
操作演示
root@8f467a88de99:~/netkiller# CHANNEL_NAME=mychannel root@8f467a88de99:~/netkiller# configtxgen -profile OneOrgChannel -outputAnchorPeersUpdate ./config/Org1MSPanchors.tx -channelID $CHANNEL_NAME -asOrg Org1MSP 2018-02-08 08:46:19.162 UTC [common/configtx/tool] main -> INFO 001 Loading configuration 2018-02-08 08:46:19.176 UTC [common/configtx/tool] doOutputAnchorPeersUpdate -> INFO 002 Generating anchor peer update 2018-02-08 08:46:19.177 UTC [common/configtx/tool] doOutputAnchorPeersUpdate -> INFO 003 Writing anchor peer update
至此所有需要生成的配置文件全部生成完毕。
[root@localhost netkiller]# tree -L 4 crypto-config crypto-config |-- ordererOrganizations | `-- example.com | |-- ca | | |-- ca.example.com-cert.pem | | `-- de9204448c9c8e2a72d092f53e8ff069e12dea62001b7b8b9a83ae240d80ed57_sk | |-- msp | | |-- admincerts | | |-- cacerts | | `-- tlscacerts | |-- orderers | | `-- orderer.example.com | |-- tlsca | | |-- c0b4dd42bd396d68f468aa07dae8ce944ab2d9832b2593cfafb27e53c69ec5e2_sk | | `-- tlsca.example.com-cert.pem | `-- users | `-- Admin@example.com `-- peerOrganizations `-- org1.example.com |-- ca | |-- 74023bd84cc5e6957f9bc30b3ebcd6c5b7507016721702a014dd640df265b61a_sk | `-- ca.org1.example.com-cert.pem |-- msp | |-- admincerts | |-- cacerts | `-- tlscacerts |-- peers | `-- peer0.org1.example.com |-- tlsca | |-- 71bb82530580707aa20fa5955beab202f266aa4da4b435bef20741ce5e64abb9_sk | `-- tlsca.org1.example.com-cert.pem `-- users |-- Admin@org1.example.com `-- User1@org1.example.com 25 directories, 8 files
将config和crypto-config文件加复制到ca,orderer,peer,cli等节点上去。
19.3.5. 清理 Docker 容器
至此所需的证书与创世区块都已生产完毕,fabric-tools 容易完成了它的使命,你可以继续保留或者清理干净。
[root@localhost netkiller]# docker-compose -f docker-compose-tools.yml down Stopping tools ... done Removing tools ... done Removing network netkiller_basic
清理 tools 容器
docker rm -f $(docker ps -qa)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论