最近在研究區(qū)塊鏈钠糊,看了不少文檔挟秤,但是具體實(shí)操一點(diǎn)也不懂,看的也比較亂抄伍,想系統(tǒng)的學(xué)習(xí)一下艘刚,于是參考汪曉明老師的《明說(shuō)》 教程,把自己的學(xué)習(xí)過(guò)程記錄下來(lái)截珍,方便自己也方便他人攀甚。
今天先把以太坊的開(kāi)發(fā)環(huán)境搭建起來(lái)箩朴。
首先需要安裝以太坊客戶端,可以參考github的安裝命令秋度,里面各個(gè)系統(tǒng)的安裝命令都包含了炸庞,我采用的是Ubuntu的版本,原因看網(wǎng)上說(shuō)Windows不穩(wěn)定荚斯,會(huì)有莫名其妙的bug埠居,Mac和Linux都可以。Ubuntu的命令如下:
sudo apt-get install software-properties-common
sudo add-apt-repository -y ppa:ethereum/ethereum
sudo apt-get update
sudo apt-get install ethereum
安裝成功后輸入geth version
可以查看當(dāng)前版本信息事期,我采用的版本是1.7.3-stable拐格。
我們可以用
geth account list
查看當(dāng)前的賬戶信息,發(fā)現(xiàn)是空的刑赶,后面再創(chuàng)建捏浊。下面我們先開(kāi)啟以太坊服務(wù)器,目前我們?cè)陂_(kāi)發(fā)環(huán)境進(jìn)行測(cè)試撞叨,如下命令:
geth --datadir "~/Study/ethdev2/" --dev console 2>> file_to_log_output
--datadir
就是指定數(shù)據(jù)目錄金踪,防止開(kāi)發(fā)鏈和公有鏈數(shù)據(jù)混淆,后面則是跟的文件夾路徑牵敷。--dev
則是指定當(dāng)前環(huán)境為開(kāi)發(fā)環(huán)境胡岔。console 2>> file_to_log_output
為開(kāi)啟js控制臺(tái),并且把log信息輸出到文件file_to_log_output
枷餐。~
后續(xù)用到的命令如下:
personal.newAccount('xxx')
創(chuàng)建一個(gè)新賬戶靶瘸,xxx為賬戶密碼。eth.accounts
查看所有賬戶毛肋。user0 = eth.accounts[0]
將user0指向0號(hào)賬戶怨咪。eth.getBalance(user0)
查看user0的賬戶余額。命令調(diào)用如下圖所示:
原來(lái)我的系統(tǒng)中存在兩個(gè)賬戶润匙,然后我又新建了一個(gè)賬戶變?yōu)榱巳齻€(gè)賬戶诗眨,并且可以看到賬戶0和賬戶1都是有錢(qián)的,賬戶2沒(méi)有錢(qián)孕讳,后續(xù)我們可以往賬戶中進(jìn)行轉(zhuǎn)賬匠楚。
同樣的我們可以在外部控制臺(tái)查看我們的開(kāi)發(fā)環(huán)境賬戶情況,采用命令:
geth --dev account list --datadir "~/Study/ethdev2/"
這個(gè)地方有個(gè)問(wèn)題厂财,在汪曉明的教程以及網(wǎng)上的資料中芋簿,
--datadir “~/Study/ethdev2/”
這部分是不需要的,但是不知道是不是版本更新的原因璃饱,如果不加數(shù)據(jù)路徑的話与斤,是不能正確查找到賬戶信息的,這個(gè)問(wèn)題我糾結(jié)了好久。另外一個(gè)問(wèn)題是關(guān)于--dev
需不需要加上幽告,去掉的話``也可以得出正確的結(jié)果梅鹦,就是少了Using developer account
這句話裆甩,但是可以正確顯示賬戶信息冗锁。如下所示:現(xiàn)在我們賬戶user2的余額是0,我們讓user0來(lái)給user2轉(zhuǎn)賬5個(gè)以太幣嗤栓,命令如下:
eth.sendTransaction({from: user0, to: user2, value: web3.toWei(5, "ether")})
如果提示Error: authentication needed: password or unlock
需要對(duì)賬戶解鎖冻河,調(diào)用
personal.unlockAccount("account", "passwd")
對(duì)應(yīng)的賬戶密碼填好再進(jìn)行交易。
運(yùn)行成功后我們發(fā)現(xiàn)user2的金額并沒(méi)有增長(zhǎng)茉帅,因?yàn)槲覀儧](méi)有挖礦叨叙,現(xiàn)在開(kāi)啟挖礦:
miner.start()
可以從日志里面看到挖礦成功并且調(diào)用eth.blockNumber
可以看到區(qū)塊數(shù)增長(zhǎng)了。如下所示:
ps:原來(lái)我的user1賬戶有3個(gè)以太幣堪澎,現(xiàn)在變成了4個(gè)擂错,user2中原來(lái)有5個(gè),現(xiàn)在少于四個(gè)樱蛤,因?yàn)橥诘V的時(shí)候會(huì)消耗燃料钮呀,后續(xù)再說(shuō)。
miner.stop()
關(guān)閉挖礦昨凡。有個(gè)重要的事情忘了說(shuō)爽醋,miner.start()
的時(shí)候,控制臺(tái)會(huì)返回null便脊,但其實(shí)已經(jīng)開(kāi)啟了挖礦蚂四,在dev環(huán)境確實(shí)顯示null,但私有鏈會(huì)顯示true哪痰,原因不詳遂赠。
打完收工。