以太坊私链与智能合约部署学习(博主修正篇)—— 第二篇

    接上一篇

    本篇描述的是最最基本的命令操作篇。先别高兴,这一篇是在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的使用入门

原文地址:https://www.cnblogs.com/ddcoder/p/7837910.html