以太坊 Geth 教程

一、Geth创建私有链 1、创建genesis.json文件

内容如下:

{

“配置”:{

“链号”:110,

“家园块”:0,

“eip155块”:0,

“eip158块”:0

},

“分配”:{},

“币库”:“0x0000000000000000000000000000000000000000”,

“难度”:“0x07000”,

“额外数据”:“”,

“gasLimit”:“0x2fefd8”,

“随机数”:“0x0000000000000042”,

“混合哈希”:“0x0000000000000000000000000000000000000000000000000000000000000000”,

“parentHash”:“0x0000000000000000000000000000000000000000000000000000000000000000”,

“时间戳”:“0x00”

}

JSON文件参数说明

范围

描述

混合哈希

与nonce一起用于挖矿,是前一个区块的一部分产生的hash。注意他和nonce的设置需要满足以太坊黄皮书描述的条件

随机数

nonce 是用于挖矿的 64 位随机数。 注意it和mixhash的设置需要满足以太坊黄皮书描述的条件

困难

设置当前区块的难度。 如果难度太高,CPU挖矿就会很困难。 在这里设置一个较小的难度

分配

用于为账户预先设置账号和以太币数量,因为私链挖矿相对容易,所以我们不需要预先设置一个账户有币,需要的时候可以自己创建。

币库

矿机账号,随便填

时间戳

设置创世块的时间戳

父哈希

上一个区块的哈希值,因为是创世区块,所以这个值为0

额外数据

附加信息,随便填,可以填写你的个人信息

气体限制

该值设置了对 GAS 总消耗量的限制,用于限制一个区块可以包含的交易信息总和。

2.复制genesis.json到任意目录

3.命令行环境执行初始化命令

创建私有链

geth --datadir .\persondata\ init .\persondata\genesis.json

以太坊 挖矿 划算_2017以太坊挖矿教程_以太坊电脑挖矿教程

登录私链

geth --datadir .\persondata\ --networkid 110 控制台

以太坊电脑挖矿教程_以太坊 挖矿 划算_2017以太坊挖矿教程

init 初始化创世块。 如果已经初始化过,则不需要执行这条命令,只需要执行第二条即可。

datadir 是当前区块链网络存放的位置。

networkId:表示当前的私有链网络Id,是唯一标识,需要注意。

2017以太坊挖矿教程_以太坊电脑挖矿教程_以太坊 挖矿 划算

如上图,执行以上命令后,会出现两个目录:

Geth目录:用于保存链上geth保存的区块数据

keystore目录:链上保存用户信息

2.账户操作

创建一个帐户

personal.newAccount("123456"),入参为密码,账户地址保存在keystore目录下。

以太坊电脑挖矿教程_以太坊 挖矿 划算_2017以太坊挖矿教程

注意:一定要输入字符串,否则会报错!

查询账户信息

personal.listAccounts,读取本地keystore目录下的账户地址信息

2017以太坊挖矿教程_以太坊电脑挖矿教程_以太坊 挖矿 划算

3.查看连接信息和Enode

检查连接状态

net.listening ,查看当前连接状态信息

以太坊电脑挖矿教程_2017以太坊挖矿教程_以太坊 挖矿 划算

查看对等连接数

net.peerCount

2017以太坊挖矿教程_以太坊 挖矿 划算_以太坊电脑挖矿教程

查看连接的私有链

网络版本

以太坊 挖矿 划算_2017以太坊挖矿教程_以太坊电脑挖矿教程

查看您的节点

admin.nodeInfo ,暴露自己的Enode,让别人添加你的节点,让别人连接到你搭建的私有链网络

以太坊 挖矿 划算_2017以太坊挖矿教程_以太坊电脑挖矿教程

查看你连接的节点

admin.peers ,这个命令可以查看你连接的对等节点,这里只列出网络自发现的节点。

以太坊 挖矿 划算_以太坊电脑挖矿教程_2017以太坊挖矿教程

添加别人的节点

admin.addPeer("enode://xxx@ip:port") , admin.nodeInfo 可以看到enode信息格式

4.挖矿

开始挖矿

miner.start(x) , x是启动几个核心进行挖矿

第一次挖矿,时间会长一些。 如下图,会生成一个DAG文件。 DAG文件下载到100%后开始挖矿。

以太坊电脑挖矿教程_以太坊 挖矿 划算_2017以太坊挖矿教程

如下图所示,说明你挖到了以太币。

以太坊电脑挖矿教程_以太坊 挖矿 划算_2017以太坊挖矿教程

停止挖矿

miner.stop() ,另一种方式是直接关闭当前的geth进程

查看挖矿账户余额

eth.getBalance(eth.accounts[0]),默认挖矿账户为当前账户列表中的第一个

以太坊电脑挖矿教程_2017以太坊挖矿教程_以太坊 挖矿 划算

账户中的以太币余额默认以最小单位显示:1以太币=10的18次方wei,将wei换算成以太币:

余额转换

web3.fromWei(eth.getBalance(eth.accounts[0]),'ether')

以太坊 挖矿 划算_2017以太坊挖矿教程_以太坊电脑挖矿教程

设置挖矿账户

miner.setEtherbase(eth.accounts[1]),设置挖矿账户eth.coinbase

挖矿成功后停止

miner.start(1);admin.sleepBlocks(1);miner.stop()

5. 转移

第四步,我们已经进行了挖矿,创建账户后就可以进行转账了。

以太坊电脑挖矿教程_以太坊 挖矿 划算_2017以太坊挖矿教程

从上图可以看出,第一个账户挖矿获得了105个ETH,第二个账户没有ETH。 然后执行转账交易。

以太坊电脑挖矿教程_以太坊 挖矿 划算_2017以太坊挖矿教程

上图中,执行流程的第一步是解锁转账人的账户以太坊电脑挖矿教程,也就是第一个账户,然后发送交易。 发送交易后,您可以查看尚未从第二个账户转出的 5 个以太币。 为什么? 因为没有人在挖,所以这笔交易不在区块链中。 当一个矿工挖矿并被包含在区块链中时以太坊电脑挖矿教程,第二个账户将实际获得交易。 如下图,显示交易已经提交,但是还在处理中。 挖完后pending为0。

2017以太坊挖矿教程_以太坊 挖矿 划算_以太坊电脑挖矿教程

查看转账交易

eth.getTransaction("xxxx"),参数为交易返回hash

下图是两笔转账交易,第一笔提交了但没有记录在区块中,第二笔已经被矿工挖出来了,所以这个区块是有哈希的。 从下图中的参数可以看出区块号,通过区块号可以查看区块信息:

以太坊电脑挖矿教程_2017以太坊挖矿教程_以太坊 挖矿 划算

查看区块信息

eth.getBlock(22) ,入参为区块号

下图显示了一个典型块的数据结构。 我们可以在交易字段中看到当前区块中记录了多少笔交易。

以太坊电脑挖矿教程_以太坊 挖矿 划算_2017以太坊挖矿教程

6. 智能合约的部署和调用

关于转账和智能合约的部署和调用,后面会通过以太坊钱包来操作,可以简化命令行操作的复杂操作,更容易上手。 但是命令行操作可以更好的理解以太坊客户端操作的流程和一些信息,后面在讲解以太坊的过程中会用到Geth。

7.配置静态节点

Geth 支持一种称为静态节点的功能,如果您有特定的端点,您将始终希望连接到静态节点。 如果断开连接,静态节点会再次连接。 您可以通过将以下内容放入 /personData/Geth/static-nodes.json 来配置永久静态节点(这应该与 chaindata 和 keystone 在同一文件夹中),下面的数据是演示。

以太坊电脑挖矿教程_以太坊 挖矿 划算_2017以太坊挖矿教程