关于以太坊geth客户端的一下使用方法

geth方法分类:

  • eth:包含一些跟操作区块链相关的方法;
  • net:包含一些查看p2p网络状态的方法;
  • admin:包含一些与管理节点相关的方法;
  • miner:包含启动&停止挖矿的一些方法;
  • personal:主要包含一些管理账户的方法;
  • txpool:包含一些查看交易内存池的方法;
  • web3:包含了以上对象,还包含一些单位换算的方法
    链接:https://www.jianshu.com/p/9fa31e4cdf4d
    https://blog.csdn.net/piqianming/article/details/79600848

创建私有链:

geth --datadir ./data/ init ./genesis.json
init 是初始化创世区块的。
datadir是表示当前区块链网络存储的位置
genesis.json在源码的readme.md中有说明
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"
}

在这里插入图片描述

初始化:

登录私有链:
geth --datadir ./data/ --networkid 110 console
networkId:表示目前私链网络Id,这个ID是唯一标识,需要注意
console:使用交互式操作,可以再geth程序中使用命令行
执行完成后会在geth的同级目录data下生成geth和keystore两个目录
Geth目录:用于保存该链上geth保存的该链上的区块数据
keystore目录:保存的该链上的用户信息

账户:

创建账户:
personal.newAccount(“111111”) ,输入参数111111就是密码,账户地址保存在keystore目录下,执行命令后再console里会打印

INFO [time] Your new key was generated       address=0x234124……
WARN [time] Please backup your key file      path=/data路径/…/UTC…
WARN [time] Please remember your password!
“0xfa1242…”

查询账户:

personal.listAccounts ,读取的是本地keystore目录下的账户地址信息
查看连接状态:
net.listening ,查看当前连接状态信息
查看对等节点连接数量:
net.peerCount
查看所连接的私有链:
net.version
查看自己的Enode:
admin.nodeInfo ,把自己的Enode暴露出去,可以让别人添加你的节点,让别人连入你搭建的私有链网络
添加别人的节点:
admin.addPeer(“enode://xxx@ip:port”) , admin.nodeInfo可以看enode信息格式,或者使用admin.nodeInfo.enode查看enode
除了上面的方法,也可以在启动节点的时候指定–bootnodes选项连接到其他节点
查看是否连接成功:
net.peerCount 连接节点的个数
admin.peers这个命令可以查看自己连接了那些对端节点,这里仅仅是网络自发现的节点

挖矿:

启动挖矿:
miner.start(x) ,x是启动几个核心来挖矿
在这里插入图片描述
打印以上信息表示已经挖到矿了
停止挖矿:
miner.stop() ,另外一种方法就是直接关掉当前geth的进程
查看挖矿账户余额:
eth.getBalance(eth.accounts[0]) ,默认的挖矿账户是当前账户列表中的第一个
账户中以太币余额默认以最小单位显示:1个以太币=10的18次方个wei,
将wei转为以太币: web3.fromWei(eth.getBalance(eth.accounts[0]),‘ether’),
将以太币转为wei: web3.toWei(5,‘ether’)
1 ether(以太币) = 1,000,000,000,000,000,000 wei
设置挖矿账户:
miner.setEtherbase(eth.accounts[1]) eth.coinbase
成功挖到一次矿后就停止:
miner.start(1);admin.sleepBlocks(1);miner.stop()

转账

转账:
eth.sendTransaction({from:eth.accounts[0], to:eth.accounts[1], value:”5”}).
会提示 “authentication needed:password or unlock”
解决方法:
使用 personal.unlockAccount(eth.accounts[0], “password”),但是提示 “account unlock with http access is forbidden”, 这个情况下切换为root用户后可以解决,再进行转账再次输入eth.sendTransaction({from:eth.accounts[0], to:eth.accounts[1], value:”5”}).在最下方会有一个很长的hash值,用于查看交易,转账成功后发现accounts[1]并没有增加5,accounts[0]也没有减少5,现象感觉是并没有转账成功,原因:因为没人挖矿,所以这笔交易并没有计入区块链,当有矿工挖矿计入区块链后,第二个账户才真正拿到这笔交易。使用txpool.status查看{pending:1,queued:0},这个状态是交易提交,但没有记账,交易还在处理中,当有挖矿后,pending会变为0
查看转账交易:
eth.getTransaction(“xxxx”),参数为交易返回hash
查看区块信息:
eth.getBlock(22) ,参数是区块号

源码分析:

源码只看了一点这里不做分析,若是后期用到了以太坊之后再来补充
1.添加节点时:admin.addPeer()
go-ethernum/node/api.go – >> func AddPeer()
2.转账时:eth.sendTransaction()
go-ethernum/node/api.go – >> SendTransaction
相关文档路径:https://download.csdn.net/download/lk_whq/11243846

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值