一、什么是区块链 区块链(Blockchain)的概念于 2008 年在中本聪的论文《比特币:一种点对点的电子现金系统(Bitcoin: A Peer-to-Peer Electronic Cash System)》中首次提出。区块链可以理解为一种公共记账的机制(技术方案),欧易交易所它并不是一款具体的产品。其基本思想是:通过建立一组互联网上的公共账本,由网络中所有的用户共同在账本上记账与核账,来保证信息的真实性和不可篡改性。而之所以名字叫做‚区块‛链,顾名思义,是因为区块链存储数据的结构是由网络上一个个“存储区块”组成一根链条,欧意交易所app官方下载每个区块中包含了一定时间内网络中全部的信息交流数据。随着时间推移,这条链会不断增长。 区块链按照访问和管理权限可以分为:公有链(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-release CentOS release 6.5 (Final) 2 golang安装 1)安装yum源: [root@localhost ~]# rpm -ivh 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的文本文件: [root@localhost bin]# vi init.json { "config": { "chainId": 10, "homesteadBlock": 0, "eip155Block": 0, "eip158Block": 0 }, "alloc": {}, "coinbase": "0x0000000000000000000000000000000000000000", "difficulty": "0x02000000", "extraData": "", "gasLimit": "0x2fefd8", "nonce": "0x0000000000000042", "mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000", "parentHash" : "0x0000000000000000000000000000000000000000000000000000000000000000", "timestamp" : "0x00" } 6 创世区块初始化 在go-ethereum-1.7.3/build/bin目录下,执行以下命令以完成创世区块的创建: [root@localhost bin]# ./geth --datadir "/opt/chain" init init.json 这样,创世区块就初始化完成了。 7 启动以太坊 执行的以下命令启动以太坊: [root@localhost bin]# ./geth --rpc --rpccorsdomain "*" --datadir "/opt/chain" --port "30303" --rpcapi "db,eth,net,web3" --networkid 100000 console 一直到出现Welcome to the Geth JavaScript console! 句话,并自动进入geth的命令行则说明以太坊私有链安装成功了。 到目前为止,我们的私有链就搭建成功了。 (责任编辑:) |