区块链以太坊钱包私链的实现

本文章是在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客户端主要是为用户提供可视化操作的客户端,下载安装之后通过相应的图形化界面即可进行创建账户、转账、查询余额等操作

一. 使用Geth

下载64位或32位Geth安装程序,然后进行安装。

安装完毕后打开该安装的目录d:\blockchain,有geth.exe的目录,(注意,文件路径中不能出现中文。也可以安装在其他目录,不要放在c盘,后期运行的时候,因为系统对c盘的保护,会有一些访问权限的问题。)

然后在该文件夹下创建创世块的初始化文件genesis.json
内容如下

{
“config”: {
“chainId”: 16,
“homesteadBlock”: 0,
“eip155Block”: 0,
“eip158Block”: 0
},
“alloc”: {
“0x83fd95f8e41f6afedd08dd6ae11db607a7a3c60c”: {“balance”: “666666666”},
“0x0000000000000000000000000000000000000002”: {“balance”: “222222222”}
},
“coinbase”   : “0x0000000000000000000000000000000000000000”,
“difficulty” : “0x20000”,
“extraData”  : “”,
“gasLimit”   : “0x2fefd8”,
“nonce”      : “0x0000000000000042”,
“mixhash”    : “0x0000000000000000000000000000000000000000000000000000000000000000”,
“parentHash” : “0x0000000000000000000000000000000000000000000000000000000000000000”,
“timestamp”  : “0x00”
}解释一下各个参数的作用:

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 的可视化操作,默认是链接公链,同步公链需要挺长的时间。

来源: https://blog.csdn.net/qq_33842966/article/details/80309559