在testrpc環(huán)境下學(xué)習(xí)web3.js的命令

環(huán)境

ubuntu 16.04, 64位

testrpc的安裝過(guò)程可以參考以前的文章。

直接啟動(dòng)testrpc

pony@pony-virtual-machine:~$ testrpc
EthereumJS TestRPC v6.0.3 (ganache-core: 2.0.2)

Available Accounts
==================
(0) 0x20aa72706554abd905de23b86a90985e21c7358d
(1) 0x308efa51779f899ff946b83d1e7ecf16b801c0b3
(2) 0x34389038cd130004f1f580819b0c82df6c6266e7
(3) 0xb4e9e45ff3161c0f7263ceef6ea340d85391980c
(4) 0x036529b97a340a4f60a6017063317c98e2c1e1fd
(5) 0x46bb5ff2dfe6fc43652351cad501eed6766bb92c
(6) 0xab49534cfb489642b0c384f44063a76ea8aa60aa
(7) 0xff2c41eeb85444ced3c279c898ce45b941401119
(8) 0x0aad45abf4efd8108eaf546372ade58941288b60
(9) 0x80ac11a1e69dc37a28e4cefd4310db8e303609e4

Private Keys
==================
(0) ddacdbe2dcc3ebeb89e77193ef4dedbd009d4977151e2f7d39efcdbc420d2d40
(1) 44953cfb0592764e459342f1512a03cd6b8263e8b9c0ac2c3246bb550d953ebc
(2) e8c6467d2af56a9d35793f36a6f6bc48b93d5aa6209c36708b0945e1165cee38
(3) c4b5dc3392b204070598ad78d562a4fc4b8697a3f4d01410d120896cbe229530
(4) f3f4a33807a5653809d056db824f193f9645094bef6328a8b0c3f5638406571b
(5) a2582972fd2f27bb8ed20024b896a67b021c8801081fbd98a13f02058cb74ac8
(6) 411ae9da8a9958e60008cc8fa21b72b1bf820276fd6103e480f2ceb3a88cd4f3
(7) 661687407667b796047ab89156de31b1b10bde43f675f5442bf62f4be2f46042
(8) 81800b1afa6e31c5f0a6483ab0a40be40238e235823555f2b516ce1ecdf72aa7
(9) 54b3412a5c09d659eb81ee0b97e828960ce49b6529d2514089f52f3aa69c44cd

HD Wallet
==================
Mnemonic:      coach fluid lobster stereo enrich rural invest end viable title anxiety priority
Base HD Path:  m/44'/60'/0'/0/{account_index}

Listening on localhost:8545

默認(rèn)啟動(dòng)10個(gè)賬戶(hù),我們接下來(lái)的部分命令會(huì)用到這些賬戶(hù)。


另外開(kāi)啟一個(gè)終端,進(jìn)入到一個(gè)truffle的目錄(如何初始化并配置請(qǐng)參考我以前的文章),輸入truffle console,啟動(dòng)truffle控制臺(tái)。

wei和其它以太坊貨幣單位之間的轉(zhuǎn)換

先看下這些貨幣單位之間的匯率關(guān)系,

單位 價(jià)值 Wei
wei 1 1 wei
Kwei(babbage) 1e3 wei 1,000
Mwei (lovelace) 1e6 wei 1,000,000
Gwei (shannon) 1e9 wei 1,000,000,000
microether (szabo) 1e12 wei 1,000,000,000,000
milliether (finney) 1e15 wei 1,000,000,000,000,000
ether 1e18 wei 1,000,000,000,000,000,000

把wei轉(zhuǎn)成其它以太單位

truffle(development)> web3.fromWei('21000000000000', 'finney');
'0.021'
truffle(development)> web3.fromWei('21000000000000', 'gwei');
'21000'
truffle(development)> web3.fromWei('21000000000000', 'kwei');
'21000000000'
truffle(development)> web3.fromWei('21000000000000', 'ether');
'0.000021'

反過(guò)來(lái),把其它以太單位轉(zhuǎn)換成wei

truffle(development)> web3.toWei('1', 'ether');
'1000000000000000000'
truffle(development)> web3.toWei('1', 'kwei');
'1000'
truffle(development)> web3.toWei('1', 'gwei');
'1000000000'
truffle(development)> web3.toWei('1', 'finney');
'1000000000000000'

查看賬戶(hù)列表和余額

truffle(development)> var address0=web3.eth.accounts[0];
undefined
truffle(development)> console.log(address0.toString(10));
0x20aa72706554abd905de23b86a90985e21c7358d
undefined
truffle(development)> var balance = web3.eth.getBalance(address0);
undefined
truffle(development)> console.log(balance)
BigNumber { s: 1, e: 20, c: [ 1000000 ] }
truffle(development)> console.log(balance.toNumber());
100000000000000000000

這里查詢(xún)第一個(gè)賬戶(hù)的余額,console.log(balance)返回的是nodejs里大數(shù)的表示法,理論上我們不需要關(guān)心s,e,c表示什么意思。我們可以用toNumber方法轉(zhuǎn)換成可讀的表示方法。
這里查詢(xún)到余額是100 ETH(事實(shí)上缺省下所有賬戶(hù)都是這個(gè)余額)。

在兩個(gè)賬戶(hù)之間進(jìn)行以太幣轉(zhuǎn)賬

truffle(development)> acc0 = web3.eth.accounts[0]
'0x20aa72706554abd905de23b86a90985e21c7358d'
truffle(development)> acc1 = web3.eth.accounts[1]
'0x308efa51779f899ff946b83d1e7ecf16b801c0b3'
truffle(development)> amount = web3.toWei(0.01,'ether')
'10000000000000000'
truffle(development)> web3.eth.sendTransaction({from:acc0,to:acc1,value:amount});
'0x066162686579156223f05120724a9bde9c8d8987b69c50bcd7eaad2009cfec6c'

最后返回的是交易的hash值。

轉(zhuǎn)賬完成后看下兩個(gè)賬戶(hù)的余額,

賬戶(hù)0

truffle(development)> var balance = web3.eth.getBalance(acc0);
undefined
truffle(development)> console.log(balance.toNumber());
99989999999999980000
undefined
truffle(development)> web3.fromWei('99989999999999980000','ether')
'99.98999999999998'

賬戶(hù)1

truffle(development)> var balance = web3.eth.getBalance(acc1);
undefined
truffle(development)> console.log(balance.toNumber());
100010000000000000000
undefined
truffle(development)> web3.fromWei('100010000000000000000','ether')
'100.01'
truffle(development)> 

賬戶(hù)0因?yàn)橛行ゞas消耗,所以會(huì)比少一些。

更多命令參考:

https://github.com/ethereum/wiki/wiki/JavaScript-API

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容