区块链开发学习第二章:以太坊私有链创建账户与挖矿、转账

上文讲到怎么搭建以太坊私有链以及初始化、启动,本文记录下创建账户与多节点挖矿的过程

一、创建账户

##查看目前所有账户,返回为空“[]”,表示目前没有任何账户
eth.accounts

##创建账户,会要求输入以及确认密码
personal.newAccount()

##或者直接通过此命令创建账户,123456即密码
personal.newAccount('123456')

可能有人会疑问,以太坊的账户不都是公私钥么,创建账户时输入的密码是做什么的。确实每个账户都由一公私钥组成的,上面生成的账户地址是由公钥衍生而来,取公钥的最后20个字节,公私钥都在keystore的json文件里面,而里面最关键的私钥就是用我们创建账户时输入的密码加密生成的。

上面的操作可以看到生成了两个账户,在上文中说过的data目录中会出现keystore目录,里面即为我们刚才创建的两个账户,文件名即为账户地址

二、挖矿

创建完账户,每个账户里面都没有eth,所以需要开启挖矿

##查看账户余额,结果理所当然为0
eth.getBalance(eth.accounts[0])
0

##查看挖矿账户,默认挖到的eth是存在eth.coinbase账户中的,也就是第一个账户
eth.coinbase
"0x229ea411d368c97b008c7bc19b01fdd813163701"

##如果想要把挖到的矿存入其他账户,可以使用以下命令,我自己还是默认的第一个账户
miner.setEtherbase(eth.accounts[1])
true

##使用miner.start()命令开启挖矿
miner.start()

我这边执行完miner.start()后是直接返回的null,这里我查了下,有的说是没有执行miner.setEtherbase(eth.accounts[0])设置账户,正常默认就是第一个账户,而且我执行了这个也还是null。也还有人说是节点误报,miner.start()命令已经执行成功,只不过节点返回null。我试了下eth.blockNumber查看区块高度,确实是增加了,说明我的符合这种情况,开启挖矿时,通过tail -f geth.log命令查看上文中的日志文件,能看到正在挖矿的

 随后查看第一个账户余额

eth.getBalance('0x229ea411d368c97b008c7bc19b01fdd813163701')
828000000000000000000

发现了好多零,此时不能被这个数字吓到,这里默认显示的以 wei 为单位的,而 1 ether = 10^18 wei,所以我们转换一下单位

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

其实就是828个ether

至于上面的返回null的问题,很多人说是geth版本更新后 --dev模式下新增了参数问题,需要在启动时在后面添加–dev.period 1  具体的我就没试了,反正是为了自己测试用账户有币就行了

结束挖矿使用miner.stop()

三、转账

转账前要先解锁账户

personal.unlockAccount(eth.accounts[0])
Unlock account 0x229ea411d368c97b008c7bc19b01fdd813163701

转8个ether给账户2

eth.sendTransaction({from:eth.accounts[0],to:eth.accounts[1],value:web3.toWei(8,'ether')})
"0xaa93ea1ed3ba359090af15ea678b93493f0c5c4310d7ef6b9c3ca80a27b82088"

但是此时账户2里面还是没有ether的

eth.getBalance(eth.accounts[1])
0

因为转账还没被确认,需要开启挖矿等待确认

##通过查看txpool来验证
txpool.status { pending:
1, queued: 0 }

其中有一条pending的交易,pending表示已提交但还未被处理的交易

##开启挖矿
miner.start()
##几秒后停止挖矿
miner.stop()
##查看账户2余额
eth.getBalance(eth.accounts[1])
8000000000000000000
原文地址:https://www.cnblogs.com/I-will-be-different/p/15506215.html