本文章是在windows7下以太坊的私链搭建实现,私链主要是开发做测试而搭建的一个在本地的环境, 该产生的账号,数据都只是本地的数据。
要下载的两个客户端
1.geth ( 发音guess)
geth的全称是go-ethereum,是一个以太坊客户端,用go语言编写,应该是目前最常用的客户端。当然以太坊客户端还有用C++,Ruby,Python,Java等其他多种语言编写的,不同类型的客户端是为了满足不同的需求场景。
2.Ethereum Wallet 钱包
Ethereum Wallet客户端对应的是Mist项目,现在此客户端大多都称为Ethereum Wallet,也有称作Mist客户端的,知道它们两个指的是通一个客户端即可。此客户端使用JavaScript进行开发,支持windows、linux和OSX三类操作系统,是一个图形化操作界面的客户端。介绍到这里,大家可能就明白了,如果你想通过API来调用以太坊的接口,选择此方式是行不通的。Ethereum Wallet客户端主要是为用户提供可视化操作的客户端,下载安装之后通过相应的图形化界面即可进行创建账户、转账、查询余额等操作
下载64位或32位Geth安装程序,然后进行安装。
安装完毕后打开该安装的目录d:\blockchain,有geth.exe的目录,(注意,文件路径中不能出现中文。也可以安装在其他目录,不要放在c盘,后期运行的时候,因为系统对c盘的保护,会有一些访问权限的问题。)
然后在该文件夹下创建创世块的初始化文件genesis.json
内容如下
解释一下各个参数的作用:
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的消耗总量限制,用来限制区块能包含的交易信息总和,因为我们是私有链,所以填最大。 |
win键 + r 进入cmd命令行
键入 d: 是命令行进入d盘
键入 cd blockchain 进入d盘的blockchain目录
键入 geth –datadir “%cd%\chain” init genesis.json 将创世块信息初始化
初始化成功后, 进去D盘blockchain目录查看是否有生成文件夹。
之后就可以启动geth的私链 (下面是启动私链的命令)
geth.exe --datadir “%cd%\chain” --syncmode=fast --rpc --rpcaddr 10.0.0.76 -rpcport 9335 --rpccorsdomain '"*"' --rpcapi "personal,db,eth,net,web3" --networkid 95518 console console
datadir 这是你私链的地址 这里就是D盘blockchain下面
targetgaslimit –每个区块能承载gas上限,这里可以暂时理解为容量
rpc –启动rpc通信,可以进行智能合约的部署和调试
rpcaddr –rpc接口的地址
rpcport –rpc接口的端口号
port –网络监听端口,用于节点之间通信
rpcapi –设置rpc的范围,暂时开启eth,web3,personal足够
networkid –设置当前区块链的网络ID,是一个数字,可以随便写(尽可能大于10)
mine 允许挖矿
minerthreads 挖矿启动的线程数量,默认是4个。
console –启动命令行模式*
当启动后 就可以进行操一系列的业务,列如 查询余额,转账等。
我这里就举例几个业务创建账号,和查询余额,以及挖矿
1.创建账号命令
personal.newAccount("输入密码")
这个时候我们可以看到除了第一个账户0xbcf5b841303bc08026ce2d3b8f83498ffe42c12f
之外,还新增了另一个账户0xb8b12a801b610176935a15321f77b48dd5c0c448
, 此时输入eth.accounts, 就可以很轻松的看到有两个账户的公钥地址。
2.余额查询
eth.getBalance("输入账号")
3.挖矿
miner.start()
输入即可挖矿, 如果未指定账号挖到的默认值向第一个账号。
二 .使用Ethereum Wallet 钱包
打开Ethereum Wallet 钱包 默认会先连本地的geth数据私有链, 当启动了geth私有链的时候打开钱包应该会在右上角显示私有网络PRIVATE-NET
这个就是对geth 的可视化操作,默认是链接公链,同步公链需要挺长的时间。