geth 转账_Geth使用教程

geth 转账_Geth使用教程一 Geth 创建私链 1 创建一个 genesis json 文件内容如下 config chainId 110 homesteadBlo 0 eip155Block 0 eip158Block 0 alloc coinbase 0x0000000000 diff

一、Geth创建私链

1.创建一个genesis.json文件

内容如下:

{

“config”: {

“chainId”: 110,

“homesteadBlock”: 0,

“eip155Block”: 0,

“eip158Block”: 0

},

“alloc”      : {},

“coinbase”   : “0x0000000000000000000000000000000000000000”,

“difficulty” : “0x07000”,

“extraData”  : “”,

“gasLimit”   : “0x2fefd8”,

“nonce”      : “0x0000000000000042”,

“mixhash”    : “0x0000000000000000000000000000000000000000000000000000000000000000”,

“parentHash” : “0x0000000000000000000000000000000000000000000000000000000000000000”,

“timestamp”  : “0x00”

}

关于JSON文件参数的解释

参数

描述

mixhash

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

nonce

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

difficulty

设置当前区块的难度,如果难度过大,cpu挖矿就很难,这里设置较小难度

alloc

用来预置账号以及账号的以太币数量,因为私有链挖矿比较容易,所以我们不需要预置有币的账号,需要的时候自己创建即可以。

coinbase

矿工的账号,随便填

timestamp

设置创世块的时间戳

parentHash

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

extraData

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

gasLimit

该值设置对GAS的消耗总量限制,用来限制区块能包含的交易信息总和。

2.将genesis.json拷贝至任意目录

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

创建私有链

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

0541bffda1ea3e6cdee22c06ce9fb4a1.png

登录私有链

geth –datadir .\persondata\ –networkid 110 console

514d2741c01add20110cd1f6113c6df5.png

init 是初始化创世区块的,如果已经初始化了,这个命令不需要执行,只需要执行第二条。

datadir是表示当前区块链网络存储的位置。

networkId:表示目前私链网络Id,这个ID是唯一标识,需要注意。

9abd2014ffa96433983c778ce14564c6.png

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

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

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

二、账户操作

创建一个账户

personal.newAccount(“”) ,输入参数就是密码,账户地址保存在keystore目录下 。

5a1e85ad50e9a599484df48d4ce0a35a.png

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

查询账户信息

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

b8ba53fff523d0b31b7a9c665280ac85.png

三、检查连接信息和Enode

查看连接状态

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

12774148b0dfdab014e28bb6f6e775c6.png

查看对等节点连接数量

net.peerCount

2854bee6669eaaab57615fc0cbca1c5c.png

查看所连接的私有链

net.version

07fad54699722438157ab1ef4381a0cb.png

查看自己的Enode

admin.nodeInfo ,把自己的Enode暴露出去,可以让别人添加你的节点,让别人连入你搭建的私有链网络

8d9d3846b253ea78ae4592dc0a14ebb0.png

查看自己连接的节点

admin.peers ,这个命令可以查看自己连接了那些对端节点,这里仅仅是网络自发现的节点。

693a42ef83ffe06e18486e1ce93d04e4.png

添加别人的节点

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

四、挖矿

启动挖矿

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

第一次挖矿的话,时间稍微有点长,如下图会先生成DAG文件,等DAG文件下载到百分之百后,就会开始挖矿。

2385951ca0bdc1bef501aa0ecee569b8.png

如下图,说明你已经挖到以太币了。

d81d48d860b1aeaed96fe90fbef2e16d.png

停止挖矿

miner.stop()  ,另外一种方法就是直接关掉当前geth的进程

查看挖矿账户余额

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

ab540f66e8afddbb2b7ff2c751a49f98.png

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

余额转换

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

a6915703eefff5fe8b27e40158b944fb.png

设置挖矿账户

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

成功挖到一次矿后就停止

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

五、转账

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

11ab67c8d4e61c177a61ad6e143ff393.png

从上图可以看到第一个账户通过挖矿获得了105个以太币,第二个账户没有以太币。那么执行转账交易。

6eafb9ac884137bc77e8ef7b07695392.png

上图中在执行过程中首先第一步是解锁转账人账户也就是第一个账户,然后在发送交易。发送完交易后,可以查看第二个账户上并没有转过来的5个以太币,这是为什么呢?因为没人挖矿,所以这笔交易并没有计入区块链,当有矿工挖矿计入区块链后,第二个账户才真正拿到这笔交易。如下图,说明这笔交易提交了,但是还在处理中。挖矿后,pending就为0了。

85671aab7f9c2484359d89ef75e029fe.png

查看转账交易

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

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

252ca504358d0087db6c3cf80374ce01.png

查看区块信息

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

下图就是一个典型的区块的数据结构,我们可以看到transactions字段中得知看当前块记录了几笔交易。

4b1e0bc3660204161a7dbab1f045dc69.png

六、智能合约的部署和调用

关于转账和智能合约的部署以及调用,后期会通过以太坊钱包来操作,这样可以简化命令行操作繁杂操作,更好入门。不过命令行操作能够更好的理解以太坊客户端运行的流程和部分信息,后期还会在讲解以太坊的过程中使用Geth。

七、配置静态节点

Geth支持一个叫静态节点的特征,如果你有特定的端点,你会一直想与静态节点连接。如果断开连接,静态节点会再次连接。你可以配置永久性静态节点,方法是将如下所说的放进/personData/Geth/static-nodes.json(这应该是和chaindata以及keystone在同一个文件夹),下边的数据是demo。

7b98636b5641b6d7ad4fb8f99557d9a6.png

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/204362.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月19日 下午8:28
下一篇 2026年3月19日 下午8:28


相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号