zoukankan      html  css  js  c++  java
  • 以太坊私链与智能合约部署学习(博主修正篇)—— 第二篇

        接上一篇

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

  • 相关阅读:
    grunt in webstorm
    10+ Best Responsive HTML5 AngularJS Templates
    响应式布局
    responsive grid
    responsive layout
    js event bubble and capturing
    Understanding Service Types
    To add private variable to this Javascript literal object
    Centering HTML elements larger than their parents
    java5 新特性
  • 原文地址:https://www.cnblogs.com/ddcoder/p/7837910.html
Copyright © 2011-2022 走看看