Installing Hyperledger Fabric v1.1 on Ubuntu 16.04 — Part I

There is an entire library of Blockchain APIs which you can select according to the needs that suffice your application. Some libraries are open-sourced and some are private. For examples, IBM’s Hyperledger Fabric Project, Ethereum, OpenChain, MultiChain are few of the open sourced models which are popular in the industry today.
This tutorial aims to help you get started and setup your development environment for a blockchain application using the IBM-Hyperledger Fabric API.
In this tutorial, we will be setting Hyperledger Fabric v1.1 on Ubuntu 16.04 on a localhost server. This tutorial can be applied to Ubuntu 14.04 too, but would involve certain changes to the commands due to the difference in the OS versions.
This tutorial is broken into 2 parts so that it is easier for you to understand and follow through the steps without making the article too long. The 1st part focuses on installing the prerequisites for the API and the 2nd part will focus on installing and running of Hyperledger API itself.
Prerequisites
- Go Language v1.10.x
- Docker CE (Community Edition)
Go Language v1.10.x
Go Language has been developed by Google and the IBM Hyperledger Fabric API uses Go for compiling and building. Go integrates the properties of C++ and Python into one language. It has fast run-time because it is a compiled language, similar to C++, as compared to an interpreted language like Python. It is also written in a similar way to Python so it benefits from having a simpler syntax when compared to C++. So, we get the faster speed and easiness of syntax under one hood, Go.
To install the Go Language, we need to download the package from the official Go Download Page. To follow along with this tutorial, select the option in the Linux section, as described in the screenshot below (xx.tar.gz package).

Once the package is downloaded, we need to extract it and move it to /usr/local/ directory, so that our application can access it and more importantly, the Go files are situated at a safe place, where you don’t accidentally delete them.
To extract the Go package, use the command:
tar -xvzf go1.10.3.linux-amd64.tar.gz
Upon successful extraction of the archive, you shall see a new directory has been created with the name: “go”, in the same directory as your downloaded archive. Now, we need to move it to another location, or “/usr/local/”. For this to work, you need to be a `sudo` user of the machine, or else it would throw an error of `Permission Denied`.
The command to transfer the go files into /usr/local/ directory is:
sudo mv go /usr/local/
When you see the directory (`/usr/local/`), you should now see that there is a new folder named “go”, in your directory. This shows that the go files have been correctly placed in the desired location. Here is, a screen shot for you to verify and check whether you have something similar to this or not.

Now that we have the Go files in the correct place, we want to configure the terminal to locate the files when we want to execute any Go command. We need to include it into our environment variables. For this, we need to edit the `~/.bashrc` file of the system, which keeps track of the environment variables of your system. To edit that file, we use the command:
sudo nano ~/.bashrc
Include the following lines at the end of the file:
#GO VARIABLES
export GOROOT=/usr/local/go
export PATH=$PATH:$GOROOT/bin
#END GO VARIABLES
The `PATH` variable is the environment Path variable. The `GOROOT` variable defines where are your Go files situated in the system.
To reload the environment variables, we use the following command:
source ~/.bashrc
This command gives no output, but just simply reloads all the environment variable in background. Now, we can check the installation of Go in our terminal by typing:
go
If the installation was successful, you should see the following output.

If you see any other output except this, maybe you might have done some mistake. Please go through the steps again above.
Now we have installed the Go language on the host machine and we are halfway through setup of prerequisites for the Hyperledger API, Congrats!.
Docker Engine
Docker is the container where you will be running your instances which makes sure that the blockchain application you run is available. Consider docker as a Virtual Machine Box, which runs images which have specific functionalities, just like Windows and Ubuntu, however each Docker image is smaller in size as compared to an Operating System. Each docker images will run a service associated with the Hyperledger network in your localhost. We shall cover two such services absolutely required by the Blockchain Network to run your application, in the next part of the tutorial. We will see how to install docker in this part.
We need to install docker on your system to be able to understand the beauty that lies within. So, let’s get started!
To install docker through CLI or Terminal, we will need to install two packages: docker-ce and docker-compose. Docker-ce is like the base package which makes all the necessary files available for the docker container to run properly. Docker-compose configures your docker images according to the specific configuration you provide, which will enable the Blockchain service.
To install docker-ce, enter the following command in the terminal.
$ 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
$ sudo apt-get install -y docker-ce
Your output might differ from me. But there is no error in the console, which ensures that it has been installed correctly. After you run the above command, docker should be installed on your system.

Now, we need to enable the docker service at startup of the system. We write the following commands:
To start the docker service:
sudo service docker start
If all goes well, there will be no output. If you get an error, please consider re-installing the docker-ce again.
To enable the docker to start at startup of the system, we use the following command:
sudo systemctl enable docker
If all goes well, each time you reboot your system, your docker container will be reloaded automatically.
To check if the docker service is running, just type:
docker
And you should get a similar output as mine.

If you get anything else, please consider re-installing the docker-ce.
Now, the second part of docker-ce is the docker-compose function, which is needed to configure the docker images you are calling.
For that, we use python’s `pip`. You can use the following command to install docker-compose:
sudo pip install docker-compose
The installation should complete without any red text at the bottom. This makes sure that we have our docker-ce and docker-compose properly installed in our system. But to work with the docker images, you need to add your user to the docker group, which was created during installation of docker-ce as a part of setup.
sudo usermod -aG docker ${USER}
This command will provide no output. If any output is displayed, maybe there is something wrong with the command you just typed into your console. Please check if you have written the same line of code. After successfully completing, this adds your current logged in user to the docker group, which will enable you to run docker images.
So, at this point, we have setup our two essential packages, Go Language and Docker-ce, which are required to run the Hyperledger Fabric API. The setup and installation part of Hyperledger Fabric API will be presented in the next part of the tutorial.
Last Update Date: 2018–06–29
Installing Hyperledger Fabric v1.1 on Ubuntu 16.04 — Part I的更多相关文章
- Installing Hyperledger Fabric v1.1 on Ubuntu 16.04 — Part II & Part III
This entire tutorial is the second part of the installation of Hyperledger Fabric v1.1. In the previ ...
- Ubuntu下搭建Hyperledger Fabric v1.0环境
多次尝试才正常启动了Fabric,如遇到各种莫名错误,请参考如下一步步严格安装,特别用户权限需要注意. 一.安装Ubuntu16 虚拟机或双系统,虚拟机有VirtualBox或者VMware,Ub ...
- Hyperledger Fabric(v1.1.0)编译时遇到的问题
Hyperledger Fabric(v1.1.0)编译时遇到的问题 0. 编译过程的坑 编译时,按照如下顺序编译 make release,编译源码生成二进制文件 make docker,生成一系列 ...
- 解决Ubuntu 16.04 上Android Studio2.3上面运行APP时提示DELETE_FAILED_INTERNAL_ERROR Error while Installing APKs的问题
本人工作环境:Ubuntu 16.04 LTS + Android Studio 2.3 AVD启动之后,运行APP,报错提示: DELETE_FAILED_INTERNAL_ERROR Error ...
- 三、主流区块链技术特点及Hyperledger Fabric V1.0版本特点
一.Hyperledger fabric V1.0 架构 1.逻辑架构: 2.区块链网络 3.运行时架构 二.架构总结 1.架构要点 分拆Peer的功能,将Blockchain的数据维护和共识服务进行 ...
- Installing Moses on Ubuntu 16.04
Installing Moses on Ubuntu 16.04 The process of installation To install requirements sudo apt-get in ...
- 阿里云容器服务区块链解决方案全新升级 支持Hyperledger Fabric v1.1
摘要: 全球开源区块链领域影响最为广泛的Hyperledger Fabric日前宣布了1.1版本的正式发布,带来了一系列丰富的新功能以及在安全性.性能与扩展性等方面的显著提升.阿里云容器服务区块链解决 ...
- Hyperledger Fabric(v1.2.0)代码分析1——channel创建
Hyperledger Fabric(v1.2.0)代码分析1--channel创建 0. e2e_cli Hyperledger Fabric提供了一个e2e的例子,该例中创建了一个基础的区块链网络 ...
- 003-主流区块链技术特点及Hyperledger Fabric V1.0版本特点
一.Hyperledger fabric V1.0 架构 1.逻辑架构: 2.区块链网络 3.运行时架构 二.架构总结 1.架构要点 分拆Peer的功能,将Blockchain的数据维护和共识服务进行 ...
随机推荐
- Storm1.0.3集群部署
Storm集群部署 所有集群部署的基本流程都差不多:下载安装包并上传.解压安装包并配置环境变量.修改配置文件.分发安装包.启动集群.查看集群是否部署成功. 1.所有的集群上都要配置hosts vi ...
- 007.FTP虚拟用户访问
一 虚拟用户优点 可对每个用户进行单独设定权限. 每个用户单独配置文件,单独指定主目录,而不能访问系统的其它资源. 注意:虚拟用户目录和本地用户访问目录不冲突. 二 配置虚拟用户步骤 添加虚拟用户口令 ...
- muduo学习笔记(二)Reactor关键结构
目录 muduo学习笔记(二)Reactor关键结构 Reactor简述 什么是Reactor Reactor模型的优缺点 poll简述 poll使用样例 muduo Reactor关键结构 Chan ...
- tarjan算法讲解
tarjan算法,一个关于 图的联通性的神奇算法.基于DFS算法,深度优先搜索一张有向图.!注意!是有向图.根据树,堆栈,打标记等种种神奇方法来完成剖析一个图的工作.而图的联通性,就是任督二脉通不通. ...
- poj 2253 最短路floyd **
题意:有两只青蛙和若干块石头,现在已知这些东西的坐标,两只青蛙A坐标和青蛙B坐标是第一个和第二个坐标,现在A青蛙想要到B青蛙那里去,并且A青蛙可以借助任意石头的跳跃,而从A到B有若干通路,问从A到B的 ...
- 数据库操作类——C#
整理数据库操作类以便取用: using System; using System.Collections.Generic; using System.Linq; using System.Web; u ...
- C# 读取CSV和EXCEL文件示例
我们习惯了直接连到数据库上面读取数据表的数据内容: 如果有一天我们需要读取CSV,EXCEL文件的内容的时候,可不可以也像读数据表的方式一样呢?当然可以,使用OleDB ADO.NET是很简单的事情 ...
- Spring_错误 java.sql.SQLException: Lock wait timeout exceeded | CannotAcquireLockException 的解决
java.sql.SQLException: Lock wait timeout exceeded | org.springframework.dao.CannotAcquireLockExcept ...
- CentOS下KVM网卡设置成网桥时获取镜像端口的流量
首先,网桥配置好之后就能实现一个简单的交换机,而交换机的特点就是MAC地址学习,那么KVM的网卡设置成网桥之后,也就是相当于连接到了交换机上. 此时如果要实现在二层交换机或三层交换机做端口镜像,并把这 ...
- USBDM BDM Interface for Freescale Microcontroller -- Firmware
USBDM BDM Interface for Freescale Microcontroller -- Firmware BDM firmware for USBDM BDMs Refer to s ...