区块链(2)CENTOS7上以太坊Ethereum搭建篇

本文目的是帮助对以太坊开发感兴趣的同学,快速上手搭建搭建以太坊私有链。

首先介绍一下环境:

本次搭建的平台是基于Windows下Vmware中安装的CentOS7虚拟机,在虚拟机中完成所有操作。本文重点在以太坊私有链搭建,至于虚拟机的搭建,本文不再赘述。

操作系统:CentOS Linux release 7.2

一、什么是Ethereum(以太坊)

以太坊(英语:Ethereum)是一个开源的有智能合约功能的公共区块链平台。通过其专用加密货币以太币(Ether)提供去中心化的虚拟机来处理点对点合约。截至2018年2月,以太币是市值第二高的加密货币,仅次于比特币。

以太坊的概念首次在2013至2014年间由程序员Vitalik Buterin,受比特币启发后提出,大意为“下一代加密货币与去中心化应用平台”。所以很明显,以太坊是比比特币更先进的一代虚拟币。如果说比特币是区块链的1.0时代,那么以太坊是区块链的2.0时代。所以,建议大家从以太坊开始学习区块链技术。

下面我们一起学习一下如何搭建以太坊私有链环境。

二、开始安装Go语言

1.这里安装的是go1.10版本,因为,低版本可能导致无法编译后边的以太坊安装包。yum安装的是1.9版本,所以要手动下载安装

[root@hadoop111 ~]# wget https://dl.google.com/go/go1.10.linux-amd64.tar.gz

#下载go安装包1.10版本


2.解压go安装包

[root@hadoop111~]# tar -C /usr/local -xzf go1.10.linux-amd64.tar.gz


3.添加go环境变量

[root@hadoop111~]# echo 'export GOROOT=/usr/local/go' >> /etc/profile

[root@hadoop111 ~]# echo 'export PATH=$PATH:$GOROOT/bin'>> /etc/profile

[root@hadoop111 ~]# echo 'export GOPATH=/home/go' >>/etc/profile

[root@hadoop111 ~]# echo 'export PATH=$PATH:$GOPATH/bin'>> /etc/profile

4.刷新环境变量

[root@hadoop111 ~]# source /etc/profile

5.验证go语言是否安装成功

[root@hadoop111 ~]# go version

goversion go1.10 linux/amd64

三、安装其它安装以太坊需要的环境组件

安装curlgit nodejsgcc-c++

[root@hadoop111 ~]# yum install-y curl gitnodejs gcc-c++

四、编译安装以太坊(这里采用的是源码安装方式)

1. 下载以太坊源码

[root@hadoop111 ~]# cd/usr/local #创建目录

[root@hadoop111 ~]# git clone https://github.com/ethereum/go-ethereum.git   #通过git下载以太坊源码

正克隆到 'go-ethereum'...

remote: Counting objects: 70885,done.

remote: Total 70885 (delta 0),reused 0 (delta 0), pack-reused 70885

接收对象中: 100% (70885/70885),96.27 MiB | 174.00 KiB/s, done.

处理 delta 中: 100% (47083/47083), done.

2. 编译

[root@hadoop111 ~]# cdgo-ethereum

[root@hadoop111 ~]# make all

3. 安装cmake,智能合约需要使用

[root@hadoop111 ~]# cd ~

[root@hadoop111 ~]# wget https://cmake.org/files/v3.9/cmake-3.9.2.tar.gz  #下载cmake安装包

[root@hadoop111 ~]# tar xvfcmake-3.9.2.tar.gz #解压

[root@hadoop111 ~]# cd cmake-3.9.2

[root@hadoop111 ~]# ./configure&& make && make install #编译安装

4. 检查安装结果

[root@hadoop111 ~]# systemctlis-enabled chronyd #时间同步服务

[root@hadoop111 ~]# cmake --version

cmake version 3.9.2

CMake suite maintained andsupported by Kitware (kitware.com/cmake).

[root@hadoop111 ~]# geth version


WARN [06-14|14:18:56] Sanitizingcache to Go's GC limits  provided=1024 updated=607

Geth

Version: 1.8.12-unstable

Git Commit:ea89f40f0dab7957aa1825b56be80e84d3b04b5c

Architecture: amd64

Protocol Versions: [63 62]

Network Id: 1

Go Version: go1.10

Operating System: linux

GOPATH=/home/go

GOROOT=/usr/local/go

五、使用以太坊私有链

1.初始化创世区块

创建一个genesis.json文件

[root@hadoop111 ~]# cd /root

[root@hadoop111 ~]# mkdireth-test

[root@hadoop111 ~]# cd eth-test

[root@hadoop111 ~]# vigenesis.json

添加如下内容

{

"config":{

"chainId":20,

"homesteadBlock":0,

"eip155Block":0,

"eip158Block":0

},

"alloc":{},

"coinbase":"0x0000000000000000000000000000000000000000",

"difficulty":"0x200",

"extraData":"",

"gasLimit":"0x2fefd8",

"nonce":"0x0000000000000042",

"mixhash":"0x0000000000000000000000000000000000000000000000000000000000000000",

"parentHash":"0x0000000000000000000000000000000000000000000000000000000000000000",

"timestamp":"0x00"

}


2. 初始化节点

[root@hadoop111 ~]# geth--datadir "/root/eth-test/" init genesis.json#初始化创世区块

执行完成后,将会出现类似以下信息,表示创世区块初始化完成

启动以太坊

[root@hadoop111 ~]# cd /usr/bin

[root@hadoop111 ~]# ./geth --rpc --rpccorsdomain "*" --datadir "/root/eth-test/" --rpcapi"db,net,eth,web3,personal,miner,debug,admin" --networkid 100000 console 2>>eth_output.log

注意:上面命令中–datadir后的”/root/eth-test/”要跟我们上一步的–datadir参数一致。命令执行完,自动进入geth的命令行则说明以太坊私有链安装成功了。


3. 创建账户,挖矿

查看帐户,可以看到当前帐户是空的

[root@hadoop111 ~]#eth.accounts

创建两个帐户,并初始化密码。注意密码是用户自定义的。

>personal.newAccount('123456')

"0x3e5b345a8b88fe181f75d6956c40c104de7b61ee"

>personal.newAccount('123456')

"0xc6b5ec8fff2696375c16c930a9fb7aec4a106b11"

再次查询账户,发现有两个了

> eth.accounts

["0x3e5b345a8b88fe181f75d6956c40c104de7b61ee","0xc6b5ec8fff2696375c16c930a9fb7aec4a106b11"]

为了操作方便,给账户起一个名字

> test1 = eth.accounts[0]

"0x3e5b345a8b88fe181f75d6956c40c104de7b61ee"

> test2 = eth.accounts[1]

"0xc6b5ec8fff2696375c16c930a9fb7aec4a106b11"

设置操作账号

> miner.setEtherbase(test1) #如果不设置挖矿会默认保存到创建的第一个帐户

true

开始挖矿

> miner.start()

null

#执行挖矿一段时间,然账户中有余额,第一次最好时间长一点,约3分钟,避免挖不到,这块如果用虚拟机的话,内存放大到至少2G,短时间内1G很难挖到


停止挖矿

> miner.stop()

true

查看账户

> eth.getBalance(test1)

65000000000000000000

4. 账户转账

转账前需要先解锁账户,否则,会报错Error: authentication needed:password or unlock

>personal.unlockAccount(test1,'123456')

true

转账时要注意,超过余额会报错

> eth.sendTransaction({from:test1, to: test2, value: web3.toWei(1, 'ether')})

"0xe85d7e65919ce73c64958d07f29decece7cf7f6c1289d77c12e7c7eb5f631553"

查看账户,发现转出账户余额并未减少,转入账户也没有增加,因为我们的交易还未成功写进区块,写进区块的方式是挖矿,我们再次开启挖矿,挖矿成功后,再次查看余额,发现到账:

>eth.getBalance(test2)

0

> miner.start(1)#执行挖矿让交易执行,1表示使用一个cpuminer.stop()

null

过一会发现,已到账

> eth.getBalance(test2)

1000000000000000000

此时,可以看出转入账户,增加了1个以太币。而转出账户,由于再次挖矿而获得奖励,从而余额增加,所以,从转出账户,不好判断交易的真实数额。

到此为止,本节的内容就完成了。可见以太坊的环境和操作还是比较简单的。


https://www.douban.com/note/679943478/

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 157,012评论 4 359
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 66,589评论 1 290
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 106,819评论 0 237
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,652评论 0 202
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 51,954评论 3 285
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,381评论 1 210
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,687评论 2 310
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,404评论 0 194
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,082评论 1 238
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,355评论 2 241
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,880评论 1 255
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,249评论 2 250
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,864评论 3 232
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,007评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,760评论 0 192
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,394评论 2 269
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,281评论 2 259

推荐阅读更多精彩内容