以太坊私链与智能合约部署学习(博主修正篇)—— 第二篇
接上一篇
本篇描述的是最最基本的命令操作篇。先别高兴,这一篇是在windows下测试完成的。上一篇在ubuntu下布署环境,有可能是虚拟机性能太差,又或者其它未知的原因,第一次挖矿之后,强制exit,之后再进入控制台挖矿无法岂动硬盘灯狂闪,原因未知(因为刚接触,完全懵圈状态,算是一个伏笔,留以后解决)。所以这一篇只能先放在真机win7 64的环境下执行。
知识普及:
geth:是在你的电脑上运行节点的Go语言客户端程序。也就是说,它汇集了整个ethereum账本,并接收新区块。你可以用它的控制台来与ethereum网络进行交互。在C++实现中,geth类型的程序称之为“eth”,Python称之为“pyeth”。我不怎么使用它们,但它们的功能是类似的。
web3:(会在很多例子中看到)是geth最常用命令的Javascript库。
geth下载:http://upyun-assets.ethfans.org/geth/1-7-2/geth-windows-amd64-1.7.2-1db4ecdc.exe
实验流程记录:(这一部分也可以直接参考 http://blog.csdn.net/CHENYUFENG1991/article/details/53458175?locationNum=7&fps=1)
按照第一篇说的方式,初始化创世区块,并进入控制台。
1、查看当前有哪些账户:
eth.accounts
这时会看到一个空数组[],说明当前没有账户存在
2、创建两个账户,密码为123456:
personal.newAccount(‘123456');
personal.newAccount(‘123456')
这时候运行eth.accounts会看到已存在两个账户。
3、把账户赋给两个变量,并分别查看这两个账户的余额信息:
user1=eth.accounts[0]
user2=eth.accounts[1]
eth.getBalance(user1)
eth.getBalance(user2)
这时候可以看到两个账户的余额都为0。
4、挖矿、停止挖矿
miner.start()
miner.stop()
注意:挖矿的结果会存入第一个用户的钱包中。挖矿过程中,先会出现如下信息,大致的意思是正在计算过程中,直到percentage到100时,计算完毕就挖到矿了。
INFO [07-02|17:03:27] Generating DAG in progress epoch=0 percentage=0 elapsed=3.072s
INFO [07-02|17:03:29] Generating DAG in progress epoch=0 percentage=1 elapsed=5.604s
INFO [07-02|17:03:32] Generating DAG in progress epoch=0 percentage=2 elapsed=8.263s
INFO [07-02|17:03:34] Generating DAG in progress epoch=0 percentage=3 elapsed=10.788s
INFO [07-02|17:03:37] Generating DAG in progress epoch=0 percentage=4 elapsed=13.659s
之后,会提示以下信息(说明挖到矿了):
INFO [11-15|10:05:56] block reached canonical chain number=127 hash=dcd6c2…399870
INFO [11-15|10:05:56] Commit new mining work number=133 txs=0 uncles=0 elapsed=0s
INFO [11-15|10:05:56] mined potential block number=132 hash=aaf21e…bbd961
5、查询user1余额:eth.getBalance(user1),可以看到余额了。
6、解锁用户:
personal.unlockAccount(user1,'123456')
personal.unlockAccount(user2,'123456')
解锁用户为了下一步的转账,对于没解锁的用户会提示错误:Error:authentication needed: passwork or unlock
7、转账,从user1的账户中转3个以太币到user2:
eth.sendTransaction({from: user1,to: user2,value: web3.toWei(3,"ether")})
注意:转账成功后,查询user1和user2,会发现余额不变。这时需要执行挖矿miner.start(),余额才会更新。根据资料解释,挖矿的过程是链中所有端相互确认的过程,确认完成后金额才会真实发生转移。
8、切换矿工账号:
miner.setEtherbase(eth.accounts[1])
这一篇文章,就先到这里了。接下来会在ubuntu调通这个流程,并实验智能合约的布署与调用。我们不见不散。
参考资料:
http://8btc.com/thread-23195-1-1.html 以太坊Ethereum常见问题FAQ
http://blog.csdn.net/CHENYUFENG1991/article/details/53458175?locationNum=7&fps=1 以太坊开发--geth的使用入门