How to do it...

To use CouchDB, follow these steps:

  1. Make sure network is not up. If it is up, shut down the network, as shown here:
        $ cd fabric-samples/first-network
$ sudo ./byfn.sh down
  1. Start up the BYFN network using CouchDB:

Here we will start up the network by using the CouchDB database.

        $ cd fabric-samples/first-network
$ sudo ./byfn.sh up -c mychannel -s couchdb

Following screenshot shows our network starting up:

  1. Install chaincode by navigating into the CLI container using the command-line interface:
        $ sudo docker exec -it cli bash
$ peer chaincode install -n marbles -v 1.0
-p github.com/chaincode/marbles02/go
  1. Instantiate the chaincode:
        $ export CHANNEL_NAME=mychannel
$ peer chaincode instantiate -o orderer.example.com:7050
--tls --cafile
/opt/gopath/src/github.com/hyperledger/fabric/peer/
crypto/ordererOrganizations/example.com/orderers/
orderer.example.com/
msp/tlscacerts/tlsca.example.com-cert.pem
-C
$CHANNEL_NAME -n marbles -v 1.0 -c '{"Args":["init"]}' -P "OR
('Org0MSP.peer','Org1MSP.peer')"
  1. Invoke the chaincode. The following commands invoke chaincode to create marble.
        $ peer chaincode invoke -o orderer.example.com:7050 --tls 
--cafile
/opt/gopath/src/github.com/hyperledger/fabric/peer/
crypto/ordererOrganizations/example.com/orderers/
orderer.example.com/
msp/tlscacerts/tlsca.example.com-cert.pem
-C $CHANNEL_NAME -n marbles -c

'{"Args":["initMarble","marble5","blue","35","tom"]}'

Following screenshot shows successful creation of chanincode:

  1. Open the CouchDB UI by navigating to http://host-ip:5984/_utils/#/_all_dbs (in my case, my AWS public IP address is 3.91.245.92, so the URL is http://3.91.245.92:5984/_utils/#/_all_dbs):

In order to allow public access to CouchDB, we need open port 5984. Navigate to the AWS security group under the instance, launch the wizard, and choose Action | Edit Inbound Rules | Add Inbound Rule. This is shown as follows. After this, click Save. You can follow the below example to allow all IP address to access CouchDB:

  1. From mychannel_marbles, we can query and see the transaction ID with marble5:
  1. Click marble5, and you will see the default marble5 files:

Here, we saw how to use CouchDB to view how transactions get created, and updated them on the Fabric network. We will write a smart contract and deploy it as an application in the next recipe.