Difference between revisions of "IT-SDK-Hyperledger-Fabric-Admin"

From wiki.samerhijazi.net
Jump to navigation Jump to search
(Chaincode)
(Work Life Cycle)
Line 117: Line 117:
  
 
=Work Life Cycle=
 
=Work Life Cycle=
* Gen: Crypto certificates
+
==Generate==
* Gen: Genesis block
+
* Gen: Crypto certificates, Genesis block, Transaction-Channel, Transaction-Anchor Peer
* Gen: Transaction: Channel
 
* Gen: Transaction: Anchor Peer
 
 
<pre class="code">
 
<pre class="code">
 
$ cryptogen generate --config=./crypto-config.yaml                                                                                              # generate crypto certificates
 
$ cryptogen generate --config=./crypto-config.yaml                                                                                              # generate crypto certificates

Revision as of 00:36, 7 March 2020

Source

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

Generate

  • Gen: Crypto certificates, Genesis block, Transaction-Channel, 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
ARG='{"Args":["invoke","a","b","10"]}'
$ 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 $ARG

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