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

2018-11-12  本文已影响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
>
此时账户没有变化,因为没有矿工在挖矿,没人记账,开启挖矿即可记账。(开始挖坑后也需要等待一段时间才会记账)
上一篇 下一篇

猜你喜欢

热点阅读