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


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

    一、创建账户

    ##查看目前所有账户,返回为空“[]”,表示目前没有任何账户
    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
  • 相关阅读:
    第九周:关于程序的历史
    第八周
    第八周2
    关于bom和dom的概念及用法应用
    关于css中position的两个属性值sticky和fixed的不同
    css颜色表示法
    atan2(x,y)与pow(x,y)
    第9周作业
    第8周作业
    第⑦周作业
  • 原文地址:https://www.cnblogs.com/I-will-be-different/p/15506215.html
Copyright © 2020-2023  润新知