美文网首页
以太坊(四)虚拟机常用命令

以太坊(四)虚拟机常用命令

作者: 李孝伟 | 来源:发表于2018-11-12 11:17 被阅读27次
    1. 启动虚拟机私有链
    geth --dev console 2>> geth_dev_log
    或者使用上文的启动脚本
    ./start-dev.sh
    
    1. 查看和添加账户
    >web3.eth.accounts
    ["0xe01692776b02b0af5a32c34da36d1e9d3dccf42d"]
    创建账户 密码123456
    >web3.personal.newAccount("123456")
    "0xa54a3b275caa949019a066b2ccd782af90ada821"
    另一种创建方式:
    >web3.personal.newAccount()
    Passphrase:
    Repeat passphrase:
    "0x948604a754efc85e59b22d2027176353523a023b"
    
    1. 挖矿和停止挖矿
    >miner.start(1)
    null
    返回null也可能是误报,查看下区块高度;(如果很长时间高度仍然未变,尝试设置下矿工账户)
    > eth.blockNumber
    11
    每次挖矿有变化就说明没问题,变化时需要时间的,所以等几秒甚至1分钟?看,这个网络同步等问题导致。
    > miner.stop()
    null
    挖矿可以设置一个账户挖矿
    > eth.coinbase
    "0x10208a0eebc25c7d207948bdb1c3a7395d591d4c"  //查看当前矿工账户
    > miner.setEtherbase(acc1)  //设置矿工账户
    true
    > eth.coinbase
    "0x7f161bad27a2cd07ffc833c3f6b92e2183f1703d" //矿工账户已修改
    
    1. 查看账户余额
    >web3.eth.getBalance("0x10ee74a1c0e28a904f18497b1b2962ca37e9b011")
    315000000000000000000
    可以通过设置昵称来代替这一长串地址
    > web3.eth.accounts
    ["0x10ee74a1c0e28a904f18497b1b2962ca37e9b011"]
    > acc0 = web3.eth.accounts[0]
    "0x10ee74a1c0e28a904f18497b1b2962ca37e9b011"
    > web3.eth.getBalance(acc0)
    320000000000000000000
    单位转换下
    >web3.fromWei(eth.getBalance(acc0))
    320
    
    

    以太币最小的单位是wei(18个0)
    geth console 是一个基于js的客户端,可以定义函数

    >function checkAllBalances() {
         var totalBal = 0;
         for (var acctNum in eth.accounts) {
             var acct = eth.accounts[acctNum];
             var acctBal = web3.fromWei(eth.getBalance(acct), "ether");
             totalBal += parseFloat(acctBal);
             console.log("  eth.accounts[" + acctNum + "]: \t" + acct + " \tbalance: " + acctBal + " ether");
         }
         console.log("  Total balance: " + totalBal + " ether");
     };
    会出现一个
    undefined 
    可能是版本问题,但不影响使用,调用如下:
    > checkAllBalances()
      eth.accounts[0]:      0x10ee74a1c0e28a904f18497b1b2962ca37e9b011      balance: 320 ether
      Total balance: 320 ether
    undefined
    

    如果命令较多,可以保存到一个脚本里,使用命令载入脚本:loadScript('/path/script/here.js')

    5.转账操作

    1)先创建一个账户,查看余额
    > web3.personal.newAccount("123456")
    "0x21952647372ee672c2d7e73eed2d9ee975d27182"
    > acc1 = web3.eth.accounts[1]
    "0x21952647372ee672c2d7e73eed2d9ee975d27182"
    > web3.eth.getBalance(acc1)
    0
    2)转账
    > web3.eth.sendTransaction({from:acc0,to:acc1,value:web3.toWei(3,"ether")})
    Error: authentication needed: password or unlock
        at web3.js:3143:20
        at web3.js:6347:15
        at web3.js:5081:36
        at <anonymous>:1:1
    报错说明被锁了
    解锁:第一个参数是账户,第二个是密码
    > web3.personal.unlockAccount(acc0,"")
    true
    > personal.unlockAccount(acc1,"123456")
    true
    >web3.eth.sendTransaction({from:acc0,to:acc1,value:web3.toWei(3,"ether")})
    "0x059b386124cbf741f0ab4a262f81c03d4333ed2f359536991efab14637d5fedd"
    > eth.getBalance(acc1)
    0
    > eth.getBalance(acc0)
    550000000000000000000
    >
    此时账户没有变化,因为没有矿工在挖矿,没人记账,开启挖矿即可记账。(开始挖坑后也需要等待一段时间才会记账)
    

    相关文章

      网友评论

          本文标题:以太坊(四)虚拟机常用命令

          本文链接:https://www.haomeiwen.com/subject/meuoxqtx.html