文档章节

搭建Geth本地私有链网络

r
 rebuild
发布于 2016/09/14 11:45
字数 1380
阅读 8592
收藏 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
以太坊代币开发生产网络/测试网络/私有网络

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

jqq53016353
2017/11/11
0
0
搭建基于以太坊的私有链环境

零、概述 版本号:Ubuntu-16.04 ethereum-1.6.0-stable go - 1.7.4 一、Ubuntu下安装geth sudo apt-get install software-properties-commonsudo add-apt-repository -y ppa:ethereum/ether......

战狐
2017/05/02
0
0
以太坊私有链

虽然以太坊是一个公有链系统,但是我们可以通过设置一些参数来运行自己的私有链节点,在自己的私有链上进行开发和测试不需要同步公有链数据,也不需要花钱来买以太币,节省存储空间和成本,而...

席道坤
01/15
0
0
以太坊开发--使用geth搭建私有链

我在上一篇博客中《以太坊开发--geth的使用入门》中使用的是geth的开发环境,准确来说和私链还是不同的。今天我们就学习来搭建一个以太坊私链。我们知道区块链有三种:公有链、联盟链、私有链...

chenyufeng1991
2016/12/06
0
0
如何搭建以太坊私有链并且创建智能合约

安装 安装钱包和GETH 准备创世块文件 如下:{"config": { }保存为piccgenesis.json 启动 命令行输入geth --datadir "d:lyqkltestnetwork" init d:lyqklpiccgenesis.json其中datadir指定一个位...

lyunweb
01/15
0
0

没有更多内容

加载失败,请刷新页面

加载更多

快速get到学习Linux操作系统的点

Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。Linux能够运行主要的UNIX工具软件、网络协议和应用程序。它支持32位...

linux-tao
4分钟前
0
0
Docker Compose 之进阶篇

前文《Docker Compose 简介》和《Dcoker Compose 原理》两篇文章中分别介绍了 docker compose 的基本概念以及实现原理。本文我们将继续探索 docker compose,并通过 demo 介绍一些主要的用法...

Java干货分享
10分钟前
0
0
《netty入门与实战》笔记-04:pipeline 与 channelHandler

这一小节,我们将会学习 Netty 里面一大核心组件: Pipeline 与 ChannelHandler Netty 中的 pipeline 和 channelHandler 通过责任链设计模式来组织代码逻辑,并且能够支持逻辑的动态添加和删...

Funcy1122
16分钟前
0
0
知识积累

####知识积累 Q:What is the bit depth of a JPEG? A:JPEG is standardized as an 8-bit image file. This means that each color channel of a pixel has 8-bits of data allocated to repr......

-___-
27分钟前
0
0
shell学习之创建函数

函数是一个脚本代码块,你可以为其命名并在代码中任何位置重用。 在bash shell脚本中创建函数基本使用如下两种方式,第二种格式更接近于其他编程语言中定义函数的方式。 function name {com...

woshixin
39分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部