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的使用入门

  • 相关阅读:
    Action直接访问Servlet API
    Struts2与Struts1的对比
    参入github上的开源项目的步骤
    TortoiseSVN中图标的含义
    eclipse 快捷键
    base(function strchr)
    1
    Java 关于路径
    java初阶
    关于C++中计时的方法
  • 原文地址:https://www.cnblogs.com/ddcoder/p/7837910.html
Copyright © 2011-2022 走看看