本篇文章給大家分享的是有關(guān)如何搭建linux及ubuntu以太坊私有鏈開發(fā)環(huán)境,小編覺得挺實(shí)用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。
創(chuàng)新互聯(lián)堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:網(wǎng)站建設(shè)、成都網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時代的象山網(wǎng)站設(shè)計(jì)、移動媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!
在終端中執(zhí)行以下命令,確定是32位架構(gòu)還是64位架構(gòu):
~$ uname –p x86_64
如果你看到輸出x86_64,那么就是64位系統(tǒng),否則是32位。
確保你安裝了下載工具wget:
~$ wget –V GNU Wget 1.17.1 built on linux-gnu
如果還沒有安裝wget,使用apt-get來安裝
~$ sudo apt-get install wget
##2.1 安裝Node.js 首先根據(jù)你的ubuntu是32位還是64位,分別下載不同的預(yù)編譯版本,我們使用官方長期支持的8.10.0LTS版本: 64位:~$ wget https://nodejs.org/dist/v8.10.0/node-v8.10.0-linux-x64.tar.gz
32位:~$ wget https://nodejs.org/dist/v8.10.0/node-v8.10.0-linux-x86.tar.gz
然后解壓到當(dāng)前目錄,以64位為例:
~$ tar zxvf node-v8.10.0-linux-x64.tar.gz
然后接下來修改.bashrc來設(shè)置相關(guān)的環(huán)境變量:
~$ echo "export NODE_HOME=$HOME/node-v8.10.0-linux-x64" >> .bashrc ~$ echo "export NODE_PATH=$NODE_HOME/lib/node_modules" >> .bashrc ~$ echo "export PATH=$NODE_HOME/bin:$PATH" >> .bashrc
最后重新載入.bashrc(或者重新登陸)來使node生效:
~$ source .bashrc
現(xiàn)在,你可以使用node了:
~$ node –v v8.10.0
##2.2 安裝Geth 在終端執(zhí)行以下命令:
~$ wget https://gethstore.blob.core.windows.net/builds/geth-linux-amd64-1.8.3-329ac18e.tar.gz ~$ mv get-linux-amd64-1.8.3-329ac18e geth ~$ echo export PATH=$HOME/geth:$PATH >> .bashrc ~$ soure .bashrc
安裝完畢后,執(zhí)行命令驗(yàn)證安裝成功:
~$ geth version Geth Version: 1.8.3-stable
~$ npm install –g solc
安裝完畢后,執(zhí)行命令驗(yàn)證安裝成功
~$ solcjs –version 0.40.2+commit.3155dd80.Emscripten.clang
~$ npm install –g web3@0.20.2
安裝驗(yàn)證:
~$ node –p 'require("web3")' {[Function: Web3] providers:{…}}
執(zhí)行以下命令安裝truffle開發(fā)框架:
~$ npm install –g truffle
驗(yàn)證安裝:
~$ truffle version Truffle v4.1.3 (core 4.1.3)
執(zhí)行以下命令安裝webpack:
~$ npm install –g webpack@3.11.0
驗(yàn)證安裝
~$ webpack –v 3.11.0
創(chuàng)建一個節(jié)點(diǎn)目錄node1,并在其中創(chuàng)建私鏈的創(chuàng)世塊配置文件:
~$ mkdir node1 ~$ cd node1 ~/node1$ touch private.json
然后編輯內(nèi)容如下:
{ "config": { "chainId": 7878, "homesteadBlock": 0, "eip155Block": 0, "eip158Block": 0 }, "difficulty": "200", "gasLimit": "2100000", "alloc": { "7df9a875a174b3bc565e6424a0050ebc1b2d1d82": { "balance": "300000" }, "f41c74c9ae680c1aa78f42e5647a62f353b7bdde": { "balance": "400000" } } }
config.chainId:用來聲明以太坊網(wǎng)絡(luò)編號,選擇一個大于10的數(shù)字即可。
difficulty:用來聲明挖礦難度,越小的值難度越低,也就能更快速地出塊。
執(zhí)行g(shù)eth的init命令初始化私鏈節(jié)點(diǎn):
~/node1$ geth --datadir ./data init private.json
這會在當(dāng)前目錄下創(chuàng)建data目錄,用來保存區(qū)塊數(shù)據(jù)及賬戶信息:
~/node1$ ls data private.json
可以上述命令寫到一個腳本init.sh里,這樣避免每次都輸入那么多記不住的東西:
~/node1$ touch init.sh ~node1$ chmod +x init.sh
編輯內(nèi)容如下:
#!/bin/bash geth --datadir ./data init private.json
在部署下一個節(jié)點(diǎn)時,就可以直接執(zhí)行這個腳本進(jìn)行初始化了。例如,在另一臺機(jī)器上:
~/node1$ ./init.sh
從指定的私鏈數(shù)據(jù)目錄啟動并設(shè)定一個不同的網(wǎng)絡(luò)編號來啟動節(jié)點(diǎn):
~/node1$ geth --rpc --datadir ./data --networkid 7878 console
同樣,你可以用一個腳本console.sh來簡化啟動節(jié)點(diǎn)時的輸入:
~/node1$ touch console.sh ~/node1$ chmod +x console.sh
編輯內(nèi)容如下:
#!/bin/bash geth --rpc \ --rpcaddr 0.0.0.0 \ --rpccorsdomain "*" \ --datadir ./data \ --networkid 7878 \ console
rpcaddr:用來聲明節(jié)點(diǎn)RPC API的監(jiān)聽地址,設(shè)為0.0.0.0就可以從其他機(jī)器訪問API了;
rpccorsdomain:用于解決web3從瀏覽器中跨域調(diào)用的安全限制問題。 以后啟動節(jié)點(diǎn),只要直接執(zhí)行這個腳本即可:
~/node1$ ./console.sh
在geth控制臺,使用eth對象的accounts屬性查看目前的賬戶列表:
> eth.accounts []
因?yàn)槲覀冞€沒有創(chuàng)建賬戶,所以這個列表還是空的。
在geth控制臺,使用personal對象的newAccount()方法創(chuàng)建一個新賬戶,參數(shù)為你自己選擇的密碼:
> personal.newAccount('78787878') 0xd8bcf1324d566cbec5d3b67e6e14485b06a41d49
輸出就是新創(chuàng)建的賬戶地址(公鑰),你的輸出不會和上面的示例相同。geth會保存到數(shù)據(jù)目錄下的keystore文件中。密碼要自己記住,以后還需要用到。
在geth控制臺,使用personal對象的getBalance()方法獲取指定賬戶的余額,參數(shù)為賬戶地址:
> eth.getBalance(eth.accounts[0]) 0
或者直接輸入賬戶地址:
> eth.getBalance('0xd8bcf1324d566cbec5d3b67e6e14485b06a41d49') 0
新創(chuàng)建的賬戶,余額果然為0。
沒錢的賬戶什么也干不了,需要挖礦來掙點(diǎn)錢。 在geth控制臺執(zhí)行miner對象的start()方法來啟動挖礦:
> miner.start(1)
等幾分鐘以后,檢查賬戶余額:
> eth.getBalance(eth.accounts[0]) 2.695e+21
錢不少了,2695ETH了,目前市值將近500萬人民幣了,哈。 執(zhí)行miner對象的stop()方法停止挖礦:
> miner.stop()
在部署合約時需要一個解鎖的賬戶。在geth控制臺使用personal對象的unlockAccount()方法來解鎖指定的賬戶,參數(shù)為賬戶地址和賬戶密碼(在創(chuàng)建賬戶時指定的那個密碼):
> eth.unlockAccount(eth.accounts[0],'78787878') true
執(zhí)行以下命令創(chuàng)建項(xiàng)目目錄并進(jìn)入該目錄:
~$ mkdir demo ~$ cd demo
然后用webpack模版初始化項(xiàng)目骨架結(jié)構(gòu):
~/demo$ truffle unbox webpack Downloading… Unpacking… Setting up… Unbox successful. Sweet!
執(zhí)行以下命令安裝nmp包:
~/demo$ npm install
truffle.js中,修改port為8545,因?yàn)間eth默認(rèn)在8545端口監(jiān)聽:
module.exports = { networks:{ development: { … port: 8545 … } } }
在 另一個終端,執(zhí)行以下命令啟動節(jié)點(diǎn)軟件,以便部署合約并執(zhí)行交易:
~$ cd node1 ~/node1$ ./console.sh >
注意:為了在節(jié)點(diǎn)上部署合約,別忘了啟動geth后先解鎖賬戶:
> personal.unlockAcount(eth.accounts[0],'78787878') true
執(zhí)行以下命令編譯項(xiàng)目合約:
~/demo$ truffle compile
執(zhí)行以下命令來部署合約:
~/demo$ truffle migrate
如果你之前忘了在geth控制臺解鎖賬戶,會看到如下錯誤,參考前面說明進(jìn)行解鎖即可:
Error: authentication needed: password or unlock
如果已經(jīng)正確地解鎖了賬戶,你會看到部署過程停止在如下狀態(tài):
Replacing Migrations… … 0x3088762a5bc9…
這是因?yàn)閠ruffle在等待部署交易提交,但是我們在私鏈中還沒有啟動挖礦。 現(xiàn)在切換回geth終端窗口,查看交易池的狀態(tài):
> txpool.status { pending:1, queued:0 }
果然有一個掛起的交易!啟動挖礦就是了:
> miner.start(1)
稍等小會兒,再查看交易池的狀態(tài):
> txpool.status { pending:0, queued:0 }
交易已經(jīng)成功提交了。我們可以停止挖礦了,因?yàn)樗糃PU了:
> miner.stop()
現(xiàn)在切換回truffle那個終端,部署過程也正確地執(zhí)行完了。
執(zhí)行以下命令來啟動DApp:
~/demo$ npm run dev
在瀏覽器里訪問http://localhost:8080即可。 如果你希望從別的機(jī)器也可以訪問你的DApp應(yīng)用,修改一下package.json:
{ scripts:{ "dev": "webpack-dev-server –-host 0.0.0.0" } }
以上就是如何搭建linux及ubuntu以太坊私有鏈開發(fā)環(huán)境,小編相信有部分知識點(diǎn)可能是我們?nèi)粘9ぷ鲿姷交蛴玫降?。希望你能通過這篇文章學(xué)到更多知識。更多詳情敬請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。
本文標(biāo)題:如何搭建linux及ubuntu以太坊私有鏈開發(fā)環(huán)境
本文地址:http://muchs.cn/article46/gedphg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信小程序、App設(shè)計(jì)、虛擬主機(jī)、動態(tài)網(wǎng)站、企業(yè)網(wǎng)站制作、企業(yè)建站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)