文档章节

搭建Geth本地私有链网络

r
 rebuild
发布于 2016/09/14 11:45
字数 1380
阅读 1.3W
收藏 0

#程序员薪资揭榜#你做程序员几年了?月薪多少?发量还在么?>>>

 

一、准备工作:

1、从官网下载以太坊go客户端

https://github.com/ethereum/go-ethereum/releases/

2、从官网下载以太坊钱包

https://github.com/ethereum/mist/releases/

3、创建geth初始化文件hdgenesis.json

内容如下:

{

    "nonce":"0x0000000000000042",

    "mixhash":"0x0000000000000000000000000000000000000000000000000000000000000000",

    "difficulty": "0x4000",

    "alloc": {},

    "coinbase":"0x0000000000000000000000000000000000000000",

    "timestamp": "0x00",

    "parentHash":"0x0000000000000000000000000000000000000000000000000000000000000000",

    "extraData": "PICC GenesisBlock",

    "gasLimit":"0xffffffff"

}

参数

描述

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的消耗总量限制,用来限制区块能包含的交易信息总和,因为我们是私有链,所以填最大。

二、第一个节点环境搭建

1、解压geth客户端到安装目录,如d:\geth

2、将文件hdgenesis.json拷贝到geth安装目录下,然后创建数据存放地址并初始化创世块

geth  --datadir "%cd%\chain" init hdgenesis.json

3、启动geth console

geth --identity "HDetherum" --rpc --rpccorsdomain "*" --datadir "%cd%\chain" --port "30303"  --rpcapi "db,eth,net,web3" --networkid 95520 -nodiscover --verbosity=5 console 2>>hdchain.log

参数

描述

identity

区块链的标示,随便填写,用于标示目前网络的名字

init

指定创世块文件的位置,并创建初始块

datadir

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

port

网络监听端口

rpc

启动rpc通信,可以进行智能合约的部署和调试

rpcapi

设置允许连接的rpc的客户端,一般为db,eth,net,web3

networkid

设置当前区块链的网络ID,用于区分不同的网络,是一个数字

console

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

nodiscover

禁止被网络中其它节点发现,需要手动添加该节点到网络

verbosity

打印详细的日志信息

4、创建主账户

geth console启动后,运行如下命令创建一个主账户(没有账户不允许挖矿),根据提示设置交易密码,创建成功后就可以使用console进行相关的单节点命令操作。

personal.newAccount()

 

5、以太坊钱包

将以太坊钱包解压到指定安装目录,如d:\wallet,然后运行Ethereum-Wallet.exe 启动图形化的以太坊钱包,钱包默认连接本地的geth客户端,所以这时会显示的是私有网络(private-net),点击Launch application启动钱包应用,进入钱包主界面即可看到账户信息,同时可以进行交易,创建智能合约等操作。

刚开始钱包是空的,没有任何以太,我们通过在控制台运行miner.start()命令开始挖矿赚钱,过一会就会发现钱包开始不断鼓起来了,超过500后运行miner.stop()命令停止挖矿。

 

点击ADD ACCOUNT创建一个新的账户ACCOUNT2.

 

有钱后可以开始花了,点击SEND进入转账交易界面,转100以太给新创建的账户ACCOUNT2,根据提示输入密码提交交易,然后返回主界面,这时发现主账户和ACCOUNT2的余额都没有发生变化,因为交易需要挖矿创建区块来确认,这时没有挖矿没确认,所以账户余额没有变化,通过运行miner.start(),再过一会就会发现两个账户的余额都根据预期发生了变化,为了减少资源消耗,交易确认后需要运行miner.stop()停止挖矿。

 

点击CONTRACTS进入智能合约操作界面,点击DEPLOY NEW CONTRACT发布一个新的智能合约,如官网最简单的示例,get/set一个数值,然后点击DEPLOY进行发布,发布之后即可执行该智能合约,当然执行智能合约也是需要挖矿确认才能看到结果,同时需要消耗一定数量以太,具体数量界面上都有显示。

 

contract SimpleStorage {

    uint storedData;

    function set(uint x) {

        storedData = x;

    }

    function get() constant returns (uintretVal) {

        return storedData;

    }

}

三、添加网络新节点:

使用VirtualBox创建以太windows 7虚拟机,然后重复第一个节点的创建步骤在虚拟机上部署geth和以太坊钱包,同样需要初始化文件hdgenesis.json(同一个文件拷贝一份),并运行初始化命令,然后再运行启动命令,启动之后运行admin.nodeInfo.enode命令获取新节点的enode信息,然后在第一个节点上运行 admin.addPeer(enode URL)来添加新节点,注意将enode URL中[::]替换为新节点的IP地址,添加成功后运行admin.peers命令即可查看对等节点信息。

至此,一套基于geth的本地简单私有网络创建完成,可以在这套环境上进行简单的智能合约创建和测试。

© 著作权归作者所有

r
粉丝 0
博文 1
码字总数 1380
作品 0
广州
架构师
私信 提问
加载中

评论(1)

汇智网教程
汇智网教程

推荐一个适合新手的以太坊DApp开发入门教程: http://xc.hubwiz.com/course/5a952991adb3847553d205d1?affid=osc7878
区块链以太坊环境搭建(详细篇)

以太坊合约的配置(以在私有链上配置投票合约为例) 以太坊合约配置步骤大体如下: 一.安装Mist浏览器(已经集成以太坊钱包) 二.安装配置基于Go语言的geth命令 三.在本地搭建私有链 四....

osc_jghpf0ob
2018/04/30
10
0
基于区块链的云笔记小程序开发(一)

今天主要任务: 本地搭建私有链 启动私有链 进入私有链控制台 1. 本地搭建私有链 ⚠️注意:本文针对的mac os操作系统下 安装geth geth是go-ethereum的简写,以太坊智能合约常用的命令行工具...

osc_v6hnpnlx
2019/05/28
1
0
以太坊创世区块与链配置载入分析

创世区块作为第零个区块,其他区块直接或间接引用到创世区块。因此节点启动之初必须载入正确的创世区块信息,且不得任意修改。 以太坊允许通过创世配置文件来初始化创世区块,也可使用选择使...

深入浅出区块链
2019/04/08
0
0
Windows下以太坊集成开发环境(Remix-IDE)搭建与智能合约的简单应用

前面我们介绍了在以太坊平台下开发区块链私有链的过程,以及在私有链下进行挖矿的操作,而随着区块链技术的发展,区块链技术已不仅限于比特币的应用,未来将重在着眼于向其他领域的扩展推广,...

osc_dmzfpa0c
2019/10/02
3
0
以太坊代币开发生产网络/测试网络/私有网络

区块链爱好者(QQ:53016353) 要理解以太坊代币 PrivateNetwork 先要理解以太坊代币的两种官方网络,目前以太坊代币官方提供了两种网络: 生产环境网络 测试网络 TestNet 下面将分别简单讲解...

jqq53016353
2017/11/11
0
0

没有更多内容

加载失败,请刷新页面

加载更多

华为pat地址转换,以及内网web服务器发布

实验名称:华为pat地址转换,以及内网web服务器发布 实验拓扑图: 3. 实验目的 : 1.使内网通过pat转化出去上外网 2.使用静态pat做端口映射,发布web服务器 3.配置交换机远程登录 4. 地址规划 cl...

osc_2ch77h9m
48分钟前
7
0
php优化与模块

缓存 xcache eaccelerator zendopcache pdo_mysql扩展 memcache扩展 memcached扩展 mongo扩展 imagemagick imagick扩展...

osc_tb68dlqx
49分钟前
25
0
ATFX投资者教育活动凸显优势,助力客户有效应对市场波动

ATFX动态:新冠肺炎疫情全球传播期间,各国纷纷颁布“居家令”等措施,要求员工必须待在家里,因此也给各行各业带来了不同程度的影响。为了配合各国颁布的防疫措施,ATFX全球办事处依据各地的...

ATFX
49分钟前
22
0
ospf的工作原理

#谈起ospf(开放式最短路径优先),首先它是一种链路状态路由协议 它的工作过程主要有以下几点 : # 建立邻居表 hello : 仅仅使用hello报文,发现邻居,用于邻居的建立,维护,拆除 ospf 路由仅仅...

osc_4dgu16li
50分钟前
16
0
mysql5.7.20安装

rpm -qa | grep mysql yum -y install make gcc-c++ cmake bison-devel ncurses-devel cd /root wget http://www.sourceforge.net/projects/boost/files/boost/1.59.0/boost_1_59_0.tar.gz m......

osc_pl4ni83h
52分钟前
17
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部