Difference between revisions of "IT-SDK-Hyperledger-Fabric-Admin"
Jump to navigation
Jump to search
Samerhijazi (talk | contribs) (→Creating channel) |
Samerhijazi (talk | contribs) (→Channel) |
||
| Line 130: | Line 130: | ||
<pre class="code"> | <pre class="code"> | ||
Creating channel.. | Creating channel.. | ||
| − | + | CA_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem | |
| + | $ peer channel create -o orderer.example.com:7050 -c mychannel -f ./channel-artifacts/channel.tx --tls true --cafile $CA_FILE | ||
| − | + | Joining the channel... | |
| − | + | $ peer channel join -b mychannel.block | |
Updating anchor peers for org1... | Updating anchor peers for org1... | ||
| − | + | $ peer channel update -o orderer.example.com:7050 -c mychannel -f ./channel-artifacts/Org1MSPanchors.tx --tls true --cafile $CA_FILE | |
</pre> | </pre> | ||
| + | ==Chaincode== | ||
<pre class="code"> | <pre class="code"> | ||
Installing chaincode on peer0.org1... | Installing chaincode on peer0.org1... | ||
| − | + | $ peer chaincode install -n mycc -v 1.0 -l golang -p github.com/chaincode/chaincode_example02/go/ | |
Instantiating chaincode on peer0.org2... | Instantiating chaincode on peer0.org2... | ||
| − | + | CA_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem | |
| + | $ peer chaincode instantiate -o orderer.example.com:7050 --tls true --cafile $CA_FILE -C mychannel -n mycc -l golang -v 1.0 -c '{"Args":["init","a","100","b","200"]}' -P 'AND ('\''Org1MSP.peer'\'','\''Org2MSP.peer'\'')' | ||
Attempting to Query peer0.org1 ...3 secs | Attempting to Query peer0.org1 ...3 secs | ||
| − | + | $ peer chaincode query -C mychannel -n mycc -c '{"Args":["query","a"]}' | |
Sending invoke transaction on peer0.org1 peer0.org2... | Sending invoke transaction on peer0.org1 peer0.org2... | ||
| − | + | CA_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem | |
| − | + | TLS_FILES=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt | |
| + | $ peer chaincode invoke -o orderer.example.com:7050 --tls true --cafile $CA_FILE -C mychannel -n mycc --peerAddresses peer0.org1.example.com:7051 --tlsRootCertFiles $TLS_FILES --peerAddresses peer0.org2.example.com:7051 -c '{"Args":["invoke","a","b","10"]}' | ||
</pre> | </pre> | ||
Revision as of 00:32, 7 March 2020
Contents
Source
- https://www.hyperledger.org/resources/training/hyperledger-fabric-certification
- https://www.udemy.com/course/certified-hyperledger-fabric-developer-cbdh-practice-exams/
- https://www.hyperledger.org/resources/tutorials
- https://hyperledger-fabric.readthedocs.io/en/latest/getting_started.html
Subjects
- CA-Server HW-Security
- Gen: Channel
- Gen: Blockchain
- Gen: Chaincode
- static leader election policy
- TLS
Infrastructure
- vCPU: 2 - RAM: 7GB - HDD: 30GB - OS: Ubuntu 16.04
# -*- mode: ruby -*-
# vi: set ft=ruby :
ENV['VAGRANT_DEFAULT_PROVIDER'] = 'virtualbox'
ENV["LC_ALL"] = "en_US.UTF-8"
Vagrant.configure("2") do |config|
config.vm.box = "ubuntu/xenial64"
config.vm.hostname = "fabric"
config.vm.network "public_network"
config.vm.base_address = "192.168.178.201"
config.vm.base_mac = "0800278A8081"
config.vm.synced_folder ".", "/vagrant"
config.disksize.size = '50GB'
# --------------------------------------------------------------------
config.vm.provider "virtualbox" do |vb|
vb.gui = false
vb.name = "Fabric"
vb.cpus = 2
vb.memory = 4096
end
# --------------------------------------------------------------------
end
$ sudo apt install curl $ sudo apt install git $ sudo apt install python-minimal $ sudo apt install docker-ce
Study-Plan
- peer - Genesis Block - MSP
Settings-YAML
- container_name
- image
- ports
- depends_on
- networks
- command
- working_dir
- volumes
- environment
Commands
CMD_CA: sh -c 'fabric-ca-server start -b admin:adminpw' CMD_Orderer: orderer CMD_Peer: peer node start CMD_CLI: /bin/bash
working_dir
WD_CA: KEIN WD_Order: /opt/gopath/src/github.com/hyperledger/fabric/orderer WD_Peer: /opt/gopath/src/github.com/hyperledger/fabric WD_CLI: /opt/gopath/src/github.com/hyperledger/fabric/peer
volumes
- CA
./crypto-config/peerOrganizations/org1.example.com/ca/: /etc/hyperledger/fabric-ca-server-config
- Orderer
./config/: /etc/hyperledger/configtx ./crypto-config/ordererOrganizations/example.com/orderers/orderer.example.com/: /etc/hyperledger/msp/orderer ./crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/: /etc/hyperledger/msp/peerOrg1
- Peer
/var/run/: /host/var/run/ ./config: /etc/hyperledger/configtx ./crypto-config/peerOrganizations/org2.example.com/users: /etc/hyperledger/msp/users ./crypto-config/peerOrganizations/org2.example.com/peers/peer1.org2.example.com/msp: /etc/hyperledger/msp/peer ./crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls: /etc/hyperledger/msp/peer/tls
- CLI
/var/run/: /host/var/run/ ./crypto-config: /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ ./../chaincode/: /opt/gopath/src/github.com/
environment
Work Life Cycle
- Gen: Crypto certificates
- Gen: Genesis block
- Gen: Transaction: Channel
- Gen: Transaction: Anchor Peer
$ cryptogen generate --config=./crypto-config.yaml # generate crypto certificates $ configtxgen -profile TwoOrgsOrdererGenesis -channelID byfn-sys-channel -outputBlock ./channel-artifacts/genesis.block # generate genesis block $ configtxgen -profile TwoOrgsChannel -outputCreateChannelTx ./channel-artifacts/channel.tx -channelID mychannel # generate transaction: channel $ configtxgen -profile TwoOrgsChannel -outputAnchorPeersUpdate ./channel-artifacts/Org1MSPanchors.tx -channelID mychannel -asOrg Org1MSP # generate transaction: anchor peer
Channel
Creating channel.. CA_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem $ peer channel create -o orderer.example.com:7050 -c mychannel -f ./channel-artifacts/channel.tx --tls true --cafile $CA_FILE Joining the channel... $ peer channel join -b mychannel.block Updating anchor peers for org1... $ peer channel update -o orderer.example.com:7050 -c mychannel -f ./channel-artifacts/Org1MSPanchors.tx --tls true --cafile $CA_FILE
Chaincode
Installing chaincode on peer0.org1...
$ peer chaincode install -n mycc -v 1.0 -l golang -p github.com/chaincode/chaincode_example02/go/
Instantiating chaincode on peer0.org2...
CA_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem
$ peer chaincode instantiate -o orderer.example.com:7050 --tls true --cafile $CA_FILE -C mychannel -n mycc -l golang -v 1.0 -c '{"Args":["init","a","100","b","200"]}' -P 'AND ('\''Org1MSP.peer'\'','\''Org2MSP.peer'\'')'
Attempting to Query peer0.org1 ...3 secs
$ peer chaincode query -C mychannel -n mycc -c '{"Args":["query","a"]}'
Sending invoke transaction on peer0.org1 peer0.org2...
CA_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem
TLS_FILES=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt
$ peer chaincode invoke -o orderer.example.com:7050 --tls true --cafile $CA_FILE -C mychannel -n mycc --peerAddresses peer0.org1.example.com:7051 --tlsRootCertFiles $TLS_FILES --peerAddresses peer0.org2.example.com:7051 -c '{"Args":["invoke","a","b","10"]}'
discovery
discover saveConfig --configFile discoveryConfig.yaml --userKey $USERKEYFILE --userCert $USERCERTFILE --MSP Org1MSP discover peers --configFile discoveryConfig.yaml --channel allarewelcome --server peer0.org1.example.com:7051 --chaincode ccForAll
Hyperledger Fabric - Building First Network
sudo apt-get install curl sudo apt-get install golang-go export GOPATH=$HOME/go export PATH=$PATH:$GOPATH/bin sudo apt-get install nodejs sudo apt-get install npm sudo apt-get install python sudo apt-get install docker curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" sudo apt-get update apt-cache policy docker-ce sudo apt-get install -y docker-ce sudo apt-get install docker-compose sudo apt-get upgrade
sudo curl -sSL https://goo.gl/6wtTN5 | sudo bash -s 1.1.0 sudo chmod 777 -R fabric-samples
cd fabric-samples/first-network ... sudo ./byfn.sh generate sudo ./byfn.sh up sudo ./byfn.sh down