知方号

知方号

一步一步搭建自己的区块链(以太坊私有链)<区块链开发>

一步一步搭建自己的区块链(以太坊私有链)

一、什么是区块链

区块链(Blockchain)的概念于 2008 年在中本聪的论文《比特币:一种点对点的电子现金系统(Bitcoin: A Peer-to-Peer Electronic Cash System)》中首次提出。区块链可以理解为一种公共记账的机制(技术方案),它并不是一款具体的产品。其基本思想是:通过建立一组互联网上的公共账本,由网络中所有的用户共同在账本上记账与核账,来保证信息的真实性和不可篡改性。而之所以名字叫做‚区块‛链,顾名思义,是因为区块链存储数据的结构是由网络上一个个“存储区块”组成一根链条,每个区块中包含了一定时间内网络中全部的信息交流数据。随着时间推移,这条链会不断增长。

区块链按照访问和管理权限可以分为:公有链(Public Blockchain)、私有链(Private Blockchain)、联盟链(Consortium blockchain)。

以下是三种区块链的介绍:

1、公有链(Public blockchains)公共区块链是指全世界任何人都可读取的、任何人都能发送交易且交易能获得有效确认的、任何人都能参与其中共识过程的区块链——共识过程决定哪个区块可被添加到区块链中和明确当前状态。作为中心化或者准中心化信任的替代物,公共区块链的安全由“加密数字经济”维护——“加密数字经济”采取工作量证明机制或权益证明机制等方式,将经济奖励和加密数字验证结合了起来,并遵循着一般原则:每个人从中可获得的经济奖励,与对共识过程作出的贡献成正比。这些区块链通常被认为是“完全去中心化”的。2、联盟链(Consortium blockchains)联盟区块链是指其共识过程受到预选节点控制的区块链;例如,不妨想象一个有15个金融机构组成的共同体,每个机构都运行着一个节点,而且为了使每个区块生效需要获得其中10个机构的确认(2/3确认)。区块链或许允许每个人都可读取,或者只受限于参与者,或走混合型路线,例如区块的根哈希及其API(应用程序接口)对外公开,API可允许外界用来作有限次数的查询和获取区块链状态的信息。这些区块链可视为“部分去中心化”。3、私有链(Private blockchains)完全私有的区块链是指其写入权限仅在一个组织手里的区块链。读取权限或者对外开放,或者被任意程度地进行了限制。相关的应用囊括数据库管理、审计、甚至一个公司,尽管在有些情况下希望它能有公共的可审计性,但在很多的情形下,公共的可读性并非是必须的。

二、动手搭建自己的私有区块链

本次将介绍如何在CentOS 6上搭建以太坊私有链。

1

操作系统准备

我使用的操作系统是CentOS 6.5。

[root@localhost ~]# cat /etc/redhat-releaseCentOS release 6.5 (Final)

2

golang安装

1)安装yum源:

[root@localhost ~]# rpm -ivh http://ftp.riken.jp/Linux/fedora/epel/6/i386/epel-release-6-8.noarch.rpm

2)安装golang:

[root@localhost ~]# yum install golang

3

下载以太坊源代码

[root@localhost ~]# mkdir /opt/software

[root@localhost ~]# cd /opt/software

[root@localhost software]# wget https://github.com/Jackge1979/go-ethereum/archive/v1.7.3.zip

4

安装以太坊

[root@localhost software]# unzip v1.7.3.zip

[root@localhost software]# ls

go-ethereum-1.7.3 v1.7.3.zip

[root@localhost software]# cd go-ethereum-1.7.3

[root@localhost go-ethereum-1.7.3]# pwd

/opt/software/go-ethereum-1.7.3

输入make进行编译

[root@localhost go-ethereum-1.7.3]# make

编译成功。

进入go-ethereum-1.7.3/build/bin子目录。

可以看到在该子目录下生成的 geth 这可执行文件。

这样,我们的以太坊就安装完成了。

5

创世区块文件的准备

在go-ethereum-1.7.3/build/bin目录下,创建init.json的文

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至lizi9903@foxmail.com举报,一经查实,本站将立刻删除。