CentOS7搭建以太坊私有链

1、 环境准备:Win10 64位安装 VM VirtualBox,操作系统版本:

CentOS-7-x86_64-Everything-1611.iso(7.71G)。

切换root账号,方便安装程序

2、 安装Golang 1.9以上版本,yum安装的可以是1.8.3,所以要手动下载安装

国内镜像:https://studygolang.com/dl

#cd /usr
#wget https://studygolang.com/dl/golang/go1.10.1.linux-amd64.tar.gz
# tar -C /root -xzf go1.10.1.linux-amd64.tar.gz
# cd /root; vi ~/.bashrc
export GOPATH=/root/Go
export GOROOT=/root/go
export PATH=$PATH:$GOROOT/bin
# source ~/.bashrc
# go version
go version go1.10.1 linux/amd64

3、 安装go版本的以太坊源码

#cd /usr
#git clone https://github.com/ethereum/go-ethereum
#cd go-ethereum
#make geth

4、 初始化一个创世区块

初始化创世区块时,要先创建一个genesis.json文件,utf-8编码,内容如下:

{
  "config": {
        "chainId": 15,
        "homesteadBlock": 0,
        "eip155Block": 0,
        "eip158Block": 0
    },
    "coinbase" : "0x0000000000000000000000000000000000000000",
    "difficulty" : "0x40000",
    "extraData" : "",
    "gasLimit" : "0xffffffff",
    "nonce" : "0x0000000000000042",
    "mixhash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
    "parentHash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
    "timestamp" : "0x00",
    "alloc": { }
}

  


参数名称


参数描述


mixhash


与nonce配合用于挖矿,由上一个区块的一部分生成的hash。注意他和nonce的设置需要满足以太坊的Yellow paper, 4.3.4. Block Header Validity, (44)章节所描述的条件。


nonce


nonce就是一个64位随机数,用于挖矿,注意他和mixhash的设置需要满足以太坊的Yellow paper, 4.3.4. Block Header Validity, (44)章节所描述的条件。


difficulty


设置当前区块的难度,如果难度过大,cpu挖矿就很难,这里设置较小难度


alloc


用来预置账号以及账号的以太币数量,因为私有链挖矿比较容易,所以我们不需要预置有币的账号,需要的时候自己创建即可以。


coinbase


矿工的账号,随便填


timestamp


设置创世块的时间戳


parentHash


上一个区块的hash值,因为是创世块,所以这个值是0


extraData


附加信息,随便填,可以填你的个性信息


gasLimit


该值设置对GAS的消耗总量限制,用来限制区块能包含的交易信息总和,因为我们是私有链,所以填最大。

  

接下来,我们使用geth init ./inti.json --datadir "./chain"命令,来进行创世区块的初始化,当前区块链网络数据存放的位置会保存在chain目录中:

#cd /usr/go-ethereum/bulid/bin
# ./geth  --datadir "./chain" init genesis.json

5、 启用私有链


参数名称


参数描述


datadir


设置当前区块链网络数据存放的位置


console


启动命令行模式,可以在Geth中执行命令


nodiscover


私有链地址,不会被网上看到

使用以下命令,启用私有链:

./geth --datadir "./chain" --nodiscover console 2>>eth_output.log

./geth   --datadir "./chain"   --nodiscover   console 2>>eth_output.log    

 在当前目录执行tail -f eth_output.log,可以看到输出日志。

后面章节中的命令,都是在启动私有链后的Geth javascript console中操作

6、 帐户的添加和查看

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

> web3.eth.accounts
[] 
 创建帐户的方式有两种,第一种创建帐户时直接初始化密码
> web3.personal.newAccount("123456")
"0x741d379e702f95ea8fdf96df9d8aa34e31b011e9"
"0xe0b0bf3b64e238814dede73eca9f16e51f386819" 

其中返回的0x741d379e702f95ea8fdf96df9d8aa34e31b011e9是帐户,123456是帐户的密码

  

  第二种方法是先创建账户,然后输入密码

> web3.personal.newAccount()
Passphrase:
Repeat passphrase:
"0x3b0ec02b4193d14abdc9cc5b264b5e3f39624d70"

  这时我们再查看帐户,能够看到刚才创建的两个帐户已经存在了

> web3.eth.accounts
["0xbe323cc4fde114269a9513a27d3e985f82b9e25d", "0x3b0ec02b4193d14abdc9cc5b264b5e3f39624d70"] 

7、 用到的命令汇总:

./geth --datadir "./chain" --nodiscover console 2>>eth_output.log
web3.eth.accounts
web3.personal.newAccount("123456") 
miner.start(1) //办公电脑挖矿较慢
// miner.start(1)  返回 null时,执行以下2语句:
eth.coinbase
miner.setEtherbase(eth.coinbase) 

miner.stop()
web3.eth.getBalance("0x741d379e702f95ea8fdf96df9d8aa34e31b011e9")
acc0 = web3.eth.accounts[0]
acc1 = web3.eth.accounts[1]
acc2 = web3.eth.accounts[2]
web3.eth.getBalance(acc0)
web3.fromWei(web3.eth.getBalance(acc0)) 

8、 Linux命令

查看当前端口:netstat –ntlp

杀死指定进程:kill -9 pid

查看日志:tail -f eth_output.log

9、 参考教程:http://www.cnblogs.com/lion.net/p/7809862.html

原文地址:https://www.cnblogs.com/dreign/p/9002272.html

时间: 2025-01-10 08:26:46

CentOS7搭建以太坊私有链的相关文章

使用 Go-Ethereum 1.7.2搭建以太坊私有链

1.什么是Ethereum(以太坊) 以太坊(Ethereum)并不是一个机构,而是一款能够在区块链上实现智能合约.开源的底层系统,以太坊从诞生到2017年5月,短短3年半时间,全球已有200多个以太坊应用诞生.以太坊是一个平台和一种编程语言,使开发人员能够建立和发布下一代分布式应用. 以太坊可以用来编程,分散,担保和交易任何事物:投票,域名,金融交易所,众筹,公司管理, 合同和大部分的协议,知识产权,还有得益于硬件集成的智能资产. 以太坊的白皮书:https://github.com/ethe

区块链,使用 Go-Ethereum 搭建以太坊私有链

1.什么是Ethereum(以太坊) 以太坊(Ethereum)并不是一个机构,而是一款能够在区块链上实现智能合约.开源的底层系统,以太坊从诞生到2017年5月,短短3年半时间,全球已有200多个以太坊应用诞生.以太坊是一个平台和一种编程语言,使开发人员能够建立和发布下一代分布式应用. 以太坊可以用来编程,分散,担保和交易任何事物:投票,域名,金融交易所,众筹,公司管理, 合同和大部分的协议,知识产权,还有得益于硬件集成的智能资产. 以太坊的白皮书:https://github.com/ethe

如何搭建以太坊私有链

在开发以太坊时,很多时候需要搭建一条以太坊私有链,通过本文一起看看如何在Mac上进行搭建. 写在前面 阅读本文前,你应该对以太坊语言有所了解,如果你还不了解,建议你先看以太坊是什么 go-ethereum客户端安装 Go-ethereum客户端通常被称为Geth,它是个命令行界面,执行在Go上实现的完整以太坊节点.Geth得益于Go语言的多平台特性,支持在多个平台上使用(比如Windows.Linux.Mac).Geth是以太坊协议的具体落地实现,通过Geth,你可以实现以太坊的各种功能,如账户

Windows 10下搭建以太坊私有链环境

通过网上的资料,结合自己的搭建的eth环境,希望能对大家搭建区块链环境有所帮助了解.下面开始进入准备. 本次是windows环境下的私有链环境搭建,所以需要做以下准备: 1.win10系统(家庭版),64位 2.以太坊钱包Ethereum-Wallet-win64-0-10-0(我用的版本0.10.0) 3.以太坊geth客户端(我用的是1.4.11版) 1.1 安装geth Windows要求必须是64位系统,从官方网站下载编译好的win64客户端,下载解压后只有一个Geth.exe,运行安装

区块链入门(2):搭建以太坊私有链(private network of ethereum),以及挖矿的操作..

在做一些测试工作的时候, 为了方便控制以及更快的进入真正的测试工作,可能需要搭建一个私有的以太坊网络. 而以太坊节点之间能够互相链接需要满足1)相同的协议版本2)相同的networkid,所以搭建私有网络最方便的方法就是通过geth命令中的--networkid选项,设置一个与主网不同的networkid(主网的networkid为1),这也是官方推荐的方法. 下面开始建立私有以太坊网络: mkdir private-geth cd private-geth 建立创世纪区块文件,是一个json格

ubuntu系统搭建以太坊私有链

1.安装curl.git apt-get update apt-get install git apt-get install curl 2.安装go curl -O https://storage.googleapis.com/golang/go1.5.1.linux-amd64.tar.gz Unpack it to the /usr/local (might require sudo) tar -C /usr/local -xzf go1.5.1.linux-amd64.tar.gz 3.

以太坊私有链挖矿操作指南

先总体说一下步骤: 1.操作系统准备 linux(centos6.7) 2. golang安装 3.下载以太坊 4. 安装以太坊 5. 创世区块文件的准备 6. 创世区块初始化 7. 以太坊启动 ===================================== 1.最好是centos6.5以上的操作系统 2. 使用yum命令安装golang语言 [[email protected] src]# yum install golang 3. 下载以太坊源码,演示用的链接是 https://

搭建以太坊私链完整版

可以直接下载程序进行安装,也可以下载源码自己进行编译安装,本文介绍源码编译方式. 源码编译 环境需求 正确安装Go语言环境 正确安装GCC:安装GCC方法 从github下载源码 go get github.com/ethereum/go-ethereum 编译 Ubuntu和Mac下编译 cd go-ethereum make geth 或者 make all Windows下编译 按以下目录结构才能正确编译,需要下载的包请自行下载 $GOPATH$/src ├── github.com │

以太坊私有链挖矿

以太坊节点之间能够互相链接需要满足: (1)相同的协议版本 (2)相同的networkid,所以搭建私有网络最方便的方法就是通过geth命令中的--networkid选项,设置一个与主网不同的networkid(主网的networkid为1).这也是官方推荐的方法. 建立创世纪区块文件,是一个json格式的文件: 1 { 2 "config": { 3 "chainId": 1024, 4 "homesteadBlock": 0, 5 "