文档章节

搭建Geth本地私有链网络

r
 rebuild
发布于 2016/09/14 11:45
字数 1380
阅读 8791
收藏 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

没有更多内容

加载失败,请刷新页面

加载更多

追加字节能优化性能

这种方式看起来很神奇,单如果深入理解处理器架构就能理解其中的奥秘。让我们先来看看LinkedTransferQueue这个类,它使用一个内部类型来定义队列的头队列Head和尾节点tail,二这个内部类Pad...

无知的小狼
29分钟前
2
0
性能优化(JVM概念及配置)

虚拟机组成 一次编写,到处运行 Java虚拟机是对操作系统的模拟,隔离差异 2018编程语言排行榜 一个复杂的构架 虚拟机的内部概念 运行原理 编译器,解释器执行流程 内存分配-线程模型 栈帧模型...

这很耳东先生
35分钟前
3
0
Scala之初步认识与环境准备

1. 了解 Scala 1.1. 什么是 Scala Scala 是 Scalable Language 的简写,是一门多范式的编程语言。 Scala设计的初衷是要集成面向对象编程和函数式编程的各种特性。Scala运行于Java平台(Java虚...

飞鱼说编程
56分钟前
4
0
Vue项目分环境打包的实现步骤

在项目开发中,我们的项目一般分为开发版、测试版、Pre版、Prod版。Vue-cli的默认环境一只有dev和prod两个,之前每次要发布测试版或Pre版都是修改了源码中API地址后打包,这样很麻烦。如果能...

peakedness丶
57分钟前
6
0
vue+lowdb+express

搭建流程: 1.安装Node.js; 2.安装npm; 3.安装Express; 搭建流程 npm install -g express 安装 express 生成器 npm install -g express-generator 查看是否安装成功,随便输的一个命令...

Js_Mei
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部