以太坊工具Geth之如何搭建私有链及web3.js常用账号操作方法总结

11 篇文章 3 订阅
2 篇文章 0 订阅

geth默认的web3版本是0.2.xx版本(推荐0.2.xx中文版本:http://cw.hubwiz.com/card/c/web3.js/1/1/1/

 

最重要的就是看官方文档:https://github.com/ethereum/go-ethereum

推荐一个中文翻译的版本:https://www.cnblogs.com/tinyxiong/p/7918706.html

 

搭建私有链初始化常见错误:Fatal: Failed to write genesis block: database already contains an incompatible genesis block (have d4e56740f876aef8, new 6e65df9fe4f4877c)

解决办法:先移除已有的初始化区块(目录有时候看不到数据,可能是隐藏了!)---运行命令!

geth --datadir . removedb

 

第一步:指定私有区块链的保存目录,并创建一个或多个账号,以便在初始化创世纪区块的时候,设置初始化余额!

注:创建账号有两种方式

第一种:直接使用命令创建,不进入console模式

geth --datadir D:\myPrivateBlockchian account new

命令行运行结果输出(点--代表当前目录) -----可以多运行几次,运行一下就创建一个新账号! 

PS D:\myPrivateBlockchian> geth --datadir . account new

输出结果为:
INFO [03-14|21:11:50.512] Maximum peer count                       ETH=25 LES=0 total=25
Your new account is locked with a password. Please give a password. Do not forget this password.
Passphrase:
Repeat passphrase:
Address: {de8ba55fbf277223246b6c661225624b3babb0b2}

 

第二种: 进入console模式,然后在交互命令行中创建

geth --datadir D:\myPrivateBlockchian console


> personal.newAccount('123456')
"0xf09dca9e10f3f1d0adfe9af7beeeb579c1d1dd37"


或更安全的方式:

> personal.newAccount()
Passphrase: 
Repeat passphrase: 
"0xf6c677017eb036f984cbf590e5dde030d1fe8df1"

 

第二步:在私有区块链目录下,把第一步创建的账号输入alloc属性,创建一个genesis.json文件(创世纪区块和初始化账号余额)

geth --datadir . init D:\myPrivateBlockchian\genesis.json

输出结果为Successfully即创世纪区块创建成功!(一定要指定--datadir路径初始化) 

PS D:\myPrivateBlockchian> geth --datadir . init D:\myPrivateBlockchian\genesis.json

输出结果为:Successfully,务必注意:初始化的路径必须是指定的私有链区块路径--datadir
INFO [03-15|09:52:31.232] Maximum peer count                       ETH=25 LES=0 total=25
INFO [03-15|09:52:31.427] Allocated cache and file handles         database=D:\\myPrivateBlockchian\\geth\\chaindata cache=16 handles=16
INFO [03-15|09:52:31.450] Writing custom genesis block
INFO [03-15|09:52:31.453] Persisted trie from memory database      nodes=3 size=409.00B time=0s gcnodes=0 gcsize=0.00B gctime=0s livenodes=1 livesize=0.00B
INFO [03-15|09:52:31.460] Successfully wrote genesis state         database=chaindata                                hash=0e4217…184db1
INFO [03-15|09:52:31.466] Allocated cache and file handles         database=D:\\myPrivateBlockchian\\geth\\lightchaindata cache=16 handles=16
INFO [03-15|09:52:31.484] Writing custom genesis block
INFO [03-15|09:52:31.487] Persisted trie from memory database      nodes=3 size=409.00B time=0s gcnodes=0 gcsize=0.00B gctime=0s livenodes=1 livesize=0.00B
INFO [03-15|09:52:31.494] Successfully wrote genesis state         database=lightchaindata 

genesis.json文件模板: 

特别注意属性alloc,初始化账号的余额(第一步创建的账号添加进来初始化余额)!
alloc的账号记得加上0x开通哦!

{
  "config": {
        "chainId": 0,
        "homesteadBlock": 0,
        "eip155Block": 0,
        "eip158Block": 0
    },
  "alloc": {"0xde8ba55fbf277223246b6c661225624b3babb0b2": {"balance": "100000000000000000000000000000000000000000000000"},
		   "0x405edef7ed276a0887887987633d43845cb1b3cb": {"balance": "100000000000000000000000000000000000000000000000"}},
  "coinbase"   : "0x0000000000000000000000000000000000000000",
  "difficulty" : "0x20000",
  "extraData"  : "",
  "gasLimit"   : "0x2fefd8",
  "nonce"      : "0x0000000000000042",
  "mixhash"    : "0x0000000000000000000000000000000000000000000000000000000000000000",
  "parentHash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
  "timestamp"  : "0x00"
}

 

第三步:进入私有区块链console(--rpc是开启服务器,--rpccorsdomain是跨域设置*代表所有)

geth --datadir .  --rpc --rpccorsdomain * console

 最后:私有链搭建成功后目录结构,keystore是账号信息(用go语言写个程序可以转码生成秘钥),geth是区块链的数据!

 

关于geth账号之增删改查请查看这里https://blog.csdn.net/billwzf/article/details/83145706

这篇文章比较详细:http://www.cnblogs.com/WPF0414/p/10046481.html

 

 

启动&停止挖矿

  • 通过miner.start()来启动挖矿
  • 通过miner.stop()来停止挖矿
  • eth.coinbase查看旷工账号
  • miner.setEtherbase(addr)设置为旷工账号

其中start的参数表示挖矿使用的线程数。第一次启动挖矿会先生成挖矿所需的DAG文件,这个过程有点慢,等进度达到100%后,就会开始挖矿,此时屏幕会被挖矿信息刷屏。

矿工账户: 挖到一个区块会奖励5个以太币,挖矿所得的奖励会进入矿工的账户,这个账户叫做coinbase,默认情况下coinbase是本地账户中的第一个账户,通过miner.setEtherbase()可将其他账户设置成coinbase。

getBalance()返回值的单位是wei,wei是以太币的最小单位,1个以太币=10的18次方个wei。要查看有多少个以太币,可以用web3.fromWei()将返回值换算成以太币:

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

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值