Prerequisites and setup¶
Docker - v1.13 or higher
Docker Compose - v1.8 or higher
Node.js & npm - node v6.9.5 and npm v3.10.10 If you already have node on your machine, use the node website to install v6.9.5 or issue the following command in your terminal:
nvm install v6.9.5
then execute the following to see your versions:
# should be 6.9.5 node -v
AND
# should be 3.10.10 npm -v
Curl the source code to create network entities¶
Download the cURL tool if not already installed.
Determine a location on your local machine where you want to place the Fabric artifacts and application code.
mkdir -p <my_dev_workspace>/hackfest cd <my_dev_workspace>/hackfest
Next, execute the following command:
curl -L https://raw.githubusercontent.com/hyperledger/fabric/master/examples/sfhackfest/sfhackfest.tar.gz -o sfhackfest.tar.gz 2> /dev/null; tar -xvf sfhackfest.tar.gz
This command pulls and extracts all of the necessary artifacts to set up your network - Docker Compose script, channel generate/join script, crypto material for identity attestation, etc. In the
/src/github.com/example_cc
directory you will find the chaincode that will be deployed.
Your directory should contain the following:
JDoe-mbp: JohnDoe$ pwd
/Users/JohnDoe
JDoe-mbp: JohnDoe$ ls
sfhackfest.tar.gz channel_test.sh src
ccenv docker-compose-gettingstarted.yml tmp
Using Docker¶
You do not need to manually pull any images. The images for -
fabric-peer
, fabric-orderer
, fabric-ca
, and cli
are
specified in the .yml file and will automatically download, extract, and
run when you execute the docker-compose
command.
Commands¶
The channel commands are:
create
- create and name a channel in theorderer
and get back a genesis block for the channel. The genesis block is named in accordance with the channel name.join
- use the genesis block from thecreate
command to issue a join request to a peer.
Use Docker to spawn network entities & create/join a channel¶
Ensure the hyperledger/fabric-ccenv image is tagged as latest:
docker-compose -f docker-compose-gettingstarted.yml build
Create network entities, create channel, join peers to channel:
docker-compose -f docker-compose-gettingstarted.yml up -d
Behind the scenes this started six containers (3 peers, a “solo”
orderer, cli and CA) in detached mode. A script - channel_test.sh
-
embedded within the docker-compose-gettingstarted.yml
issued the
create channel and join channel commands within the CLI container. In
the end, you are left with a network and a channel containing three
peers - peer0, peer1, peer2.
View your containers:
# if you have no other containers running, you will see six
docker ps
Ensure the channel has been created and peers have successfully joined:
docker exec -it cli bash
You should see the following in your terminal:
/opt/gopath/src/github.com/hyperledger/fabric/peer #
To view results for channel creation/join:
more results.txt
You’re looking for:
SUCCESSFUL CHANNEL CREATION
SUCCESSFUL JOIN CHANNEL on PEER0
SUCCESSFUL JOIN CHANNEL on PEER1
SUCCESSFUL JOIN CHANNEL on PEER2
To view genesis block:
more myc1.block
Exit the cli container:
exit
Curl the application source code and SDK modules¶
Prior to issuing the command, make sure you are in the same working directory where you curled the network code. AND make sure you have exited the cli container.
Execute the following command:
curl -OOOOOO https://raw.githubusercontent.com/hyperledger/fabric-sdk-node/v1.0-alpha/examples/balance-transfer/{config.json,deploy.js,helper.js,invoke.js,query.js,package.json}
This command pulls the javascript code for issuing your deploy, invoke and query calls. It also retrieves dependencies for the node SDK modules.
Install the node modules:
# You may be prompted for your root password at one or more times during this process. npm install
You now have all of the necessary prerequisites and Fabric artifacts.