直接在主目录下创建文件夹(这是在geth环境搭建好的情况下)
vim genesis.json
英文键盘点击i
,复制粘贴下面代码然后–>esc
–>:wq!
强制保存退出
报错:Fatal: Failed to write genesis block: unsupported fork ordering: eip150Block not enabled, but eip155Block enabled at 0
修正:
{
"alloc": {},
"config":{
"chainId":15,
"homesteadBlock":0,
"eip155Block":0,
"eip158Block":0,
"eip150Block":0
},
"nonce":"0x00000000000000042",
"mixhash":"0x0000000000000000000000000000000000000000000000000000000000000000",
"difficulty": "0x02",
"coinbase":"0x0000000000000000000000000000000000000000",
"timestamp": "0x00",
"parentHash":"0x0000000000000000000000000000000000000000000000000000000000000000",
"extraData": "",
"gasLimit":"0x2fefd8"
}
geth --datadir data init genesis.json
这时候可以注意一下,此时当前目录下面会新增出一个data文件,data下面有两个文件夹geth和keystore
geth中保存的是区块链的相关数据
keystore中保存的是该链条中的用户信息
启动私有链:在console中启用私有链,并将日志输出重定向到testEth.log中(如果启动出错就是创世区块genesis.json中有些问题,多了逗号大括号等等)
geth --datadir data --networkid 123 console 2>>testEth.log
–datadir 代表文件夹地址,
打开另一个终端,找到testEth.log的所在目录,执行命令 tail -f geth.log 从而持续的输出以太坊的日志
可以使用两种方式创建用户如下,其中personal.newAccount(“123456”)
中的123456是密码,输出的0x03c5ca63fd13777db295de7fe56be90a7f79ec93是用户帐户hash,这是两个账户
personal.newAccount("123456")
personal.newAccount("123456")
personal.listAccounts
[]
或者eth.accounts
每次记一长串的地址很麻烦,我们可以通过设置变量来acc0,acc1
表示帐户
> acc0 = eth.accounts[0]
"0xfcf6dce6b352f35c15d7245d9354c30cef71a989"
> acc1 = eth.accounts[1]
"0x25890c9e12d90a6e0e3f66eaa9cb21d3a581390e"
> eth.getBalance(acc0)
1.245e+21
> eth.getBalance(acc1)
0
查询账号的余额
eth.getBalance("0xfcf6dce6b352f35c15d7245d9354c30cef71a989")
eth.getBalance(acc0) //获取第一个帐户的资产,以wei为单位
使用这个方法可以查看格式化的以太币
web3.fromWei(web3.eth.getBalance(acc0))
1245
eth.coinbase
会输出默认的挖矿收入帐户,默认为第一个创建的帐户
eth.coinbase
"0xfcf6dce6b352f35c15d7245d9354c30cef71a989"
miner.start()
//开始挖矿,挖矿时间会久一些,请耐心等待,可以通过eth.blockNumber
查看当前块高,或者通过日志查看
miner.stop()
//停止挖矿
会显示空,但是在后台运行,输出信息保存在testEth.log
从帐户0xfcf6dce6b352f35c15d7245d9354c30cef71a989
转3个以太币到0x25890c9e12d90a6e0e3f66eaa9cb21d3a581390e
,如果不指定单位ether,默认转的是wei。
> web3.eth.sendTransaction({from:acc0,to:acc1,value:web3.toWei(3,"ether")})
之所以交易时报错,是因为
这个是以太坊的一个保护机制,每隔一段时间账户就会自动锁定,这个时候任何以太币在账户之间的转换都会被拒绝,除非把该账户解锁.
这个时候我们就需要执行 personal.unlockAccount(acc0)
并输入密码来解锁acc0才可。
交易的hash值
"0xce6b5887f6da6c28dece6958ad636ae5d034e60780c925b1ce5518e1443d8e5b"
解锁后,交易成功,但查询双方余额仍然没有变化,需要再次进行挖矿操作才会变化
还是没有成功
txpool.status
查看交易信息,交易未完成
miner.start(1);admin.sleepBlocks(1);miner.stop()
挖出一个块后自动停止
eth.blockNumber
查看目前已经挖出的区块数量
挖矿卡在Commit new mining work问题
创世区块中的"extraData": "0x777573686f756865"
数据删除"extraData": ""
复制代码 代码如下: % URL="http://news.163.com/special/00011K6L/rss_newstop....
4月11日20:30~22:00通过腾讯会议进行了第二次在线学习讨论我把学习笔记整理一下...
错误描述: 在开发.net项目中,通过microsoft.ACE.oledb读取excel文件信息时,报...
工具:Eclipse,Oracle,smartupload.jar;语言:jsp,Java;数据存储:Oracle。...
Elasticsearch 是通过 Lucene 的倒排索引技术实现比关系型数据库更快的过滤。特...
上篇文章给大家介绍了 Java正则表达式匹配,替换,查找,切割的方法 ,接下来,...
本文实例讲述了Laravel框架源码解析之反射的使用。分享给大家供大家参考,具体如...
项目中用到的一些特殊字符和图标 html代码 XML/HTML Code 复制内容到剪贴板 div ...
正则忽略大小写 – RegexOptions.IgnoreCase 例如: 复制代码 代码如下: Str = R...
DELETEFROMTablesWHEREIDNOTIN(SELECTMin(ID)FROMTablesGROUPBYName) Min的话保...