欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

如何搭建linux及ubuntu以太坊私有鏈開(kāi)發(fā)環(huán)境

本篇文章給大家分享的是有關(guān)如何搭建linux及ubuntu以太坊私有鏈開(kāi)發(fā)環(huán)境,小編覺(jué)得挺實(shí)用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話(huà)不多說(shuō),跟著小編一起來(lái)看看吧。

創(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ù),滿(mǎn)足客戶(hù)于互聯(lián)網(wǎng)時(shí)代的象山網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!

一、安裝前的準(zhǔn)備

1.1 查看當(dāng)前CPU架構(gòu)

在終端中執(zhí)行以下命令,確定是32位架構(gòu)還是64位架構(gòu):

~$ uname –p
x86_64

如果你看到輸出x86_64,那么就是64位系統(tǒng),否則是32位。

1.2下載工具

確保你安裝了下載工具wget:

~$ wget –V
GNU Wget 1.17.1 built on linux-gnu

如果還沒(méi)有安裝wget,使用apt-get來(lái)安裝

~$ sudo apt-get install wget

如何搭建linux及ubuntu以太坊私有鏈開(kāi)發(fā)環(huán)境

二、安裝DApp開(kāi)發(fā)環(huán)境

##2.1 安裝Node.js 首先根據(jù)你的ubuntu是32位還是64位,分別下載不同的預(yù)編譯版本,我們使用官方長(zhǎng)期支持的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

然后接下來(lái)修改.bashrc來(lái)設(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(或者重新登陸)來(lái)使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

2.3 安裝solidity編譯器

~$ npm install –g solc

安裝完畢后,執(zhí)行命令驗(yàn)證安裝成功

~$ solcjs –version
0.40.2+commit.3155dd80.Emscripten.clang

2.4安裝web3

~$ npm install –g web3@0.20.2

安裝驗(yàn)證:

~$ node –p 'require("web3")'
{[Function: Web3]
  providers:{…}}

2.5安裝truffle框架

執(zhí)行以下命令安裝truffle開(kāi)發(fā)框架:

~$ npm install –g truffle

驗(yàn)證安裝:

~$ truffle version
Truffle v4.1.3 (core 4.1.3)

2.6安裝webpack

執(zhí)行以下命令安裝webpack:

~$ npm install –g webpack@3.11.0

驗(yàn)證安裝

~$ webpack –v
3.11.0

三、運(yùn)行私鏈節(jié)點(diǎn)

3.1創(chuàng)世塊配置

創(chuàng)建一個(gè)節(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:用來(lái)聲明以太坊網(wǎng)絡(luò)編號(hào),選擇一個(gè)大于10的數(shù)字即可。

  • difficulty:用來(lái)聲明挖礦難度,越小的值難度越低,也就能更快速地出塊。

3.2初始化私鏈節(jié)點(diǎn)

執(zhí)行g(shù)eth的init命令初始化私鏈節(jié)點(diǎn):

~/node1$ geth --datadir ./data init private.json

這會(huì)在當(dāng)前目錄下創(chuàng)建data目錄,用來(lái)保存區(qū)塊數(shù)據(jù)及賬戶(hù)信息:

~/node1$ ls
data private.json

可以上述命令寫(xiě)到一個(gè)腳本init.sh里,這樣避免每次都輸入那么多記不住的東西:

~/node1$ touch init.sh
~node1$ chmod +x init.sh

編輯內(nèi)容如下:

#!/bin/bash
geth --datadir ./data init private.json

在部署下一個(gè)節(jié)點(diǎn)時(shí),就可以直接執(zhí)行這個(gè)腳本進(jìn)行初始化了。例如,在另一臺(tái)機(jī)器上:

~/node1$ ./init.sh

3.3啟動(dòng)私鏈節(jié)點(diǎn)

從指定的私鏈數(shù)據(jù)目錄啟動(dòng)并設(shè)定一個(gè)不同的網(wǎng)絡(luò)編號(hào)來(lái)啟動(dòng)節(jié)點(diǎn):

~/node1$ geth --rpc --datadir ./data --networkid 7878 console

同樣,你可以用一個(gè)腳本console.sh來(lái)簡(jiǎn)化啟動(dòng)節(jié)點(diǎn)時(shí)的輸入:

~/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:用來(lái)聲明節(jié)點(diǎn)RPC API的監(jiān)聽(tīng)地址,設(shè)為0.0.0.0就可以從其他機(jī)器訪(fǎng)問(wèn)API了;

  • rpccorsdomain:用于解決web3從瀏覽器中跨域調(diào)用的安全限制問(wèn)題。 以后啟動(dòng)節(jié)點(diǎn),只要直接執(zhí)行這個(gè)腳本即可:

~/node1$ ./console.sh

3.4 賬戶(hù)管理

3.4.1 查看賬戶(hù)列表

在geth控制臺(tái),使用eth對(duì)象的accounts屬性查看目前的賬戶(hù)列表:

> eth.accounts
[]

因?yàn)槲覀冞€沒(méi)有創(chuàng)建賬戶(hù),所以這個(gè)列表還是空的。

3.4.2創(chuàng)建新賬戶(hù)

在geth控制臺(tái),使用personal對(duì)象的newAccount()方法創(chuàng)建一個(gè)新賬戶(hù),參數(shù)為你自己選擇的密碼:

> personal.newAccount('78787878')
0xd8bcf1324d566cbec5d3b67e6e14485b06a41d49

輸出就是新創(chuàng)建的賬戶(hù)地址(公鑰),你的輸出不會(huì)和上面的示例相同。geth會(huì)保存到數(shù)據(jù)目錄下的keystore文件中。密碼要自己記住,以后還需要用到。

3.4.3查詢(xún)賬戶(hù)余額

在geth控制臺(tái),使用personal對(duì)象的getBalance()方法獲取指定賬戶(hù)的余額,參數(shù)為賬戶(hù)地址:

> eth.getBalance(eth.accounts[0])
0

或者直接輸入賬戶(hù)地址:

> eth.getBalance('0xd8bcf1324d566cbec5d3b67e6e14485b06a41d49')
0

新創(chuàng)建的賬戶(hù),余額果然為0。

3.4.4挖礦

沒(méi)錢(qián)的賬戶(hù)什么也干不了,需要挖礦來(lái)掙點(diǎn)錢(qián)。 在geth控制臺(tái)執(zhí)行miner對(duì)象的start()方法來(lái)啟動(dòng)挖礦:

> miner.start(1)

等幾分鐘以后,檢查賬戶(hù)余額:

> eth.getBalance(eth.accounts[0])
2.695e+21

錢(qián)不少了,2695ETH了,目前市值將近500萬(wàn)人民幣了,哈。 執(zhí)行miner對(duì)象的stop()方法停止挖礦:

> miner.stop()

3.4.5解鎖賬戶(hù)

在部署合約時(shí)需要一個(gè)解鎖的賬戶(hù)。在geth控制臺(tái)使用personal對(duì)象的unlockAccount()方法來(lái)解鎖指定的賬戶(hù),參數(shù)為賬戶(hù)地址和賬戶(hù)密碼(在創(chuàng)建賬戶(hù)時(shí)指定的那個(gè)密碼):

> eth.unlockAccount(eth.accounts[0],'78787878')
true

四、構(gòu)建示例項(xiàng)目

4.1 新建DApp項(xiàng)目

執(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!

4.2 安裝項(xiàng)目依賴(lài)的NPM包

執(zhí)行以下命令安裝nmp包:

~/demo$ npm install

4.3 修改truffle配置

truffle.js中,修改port為8545,因?yàn)間eth默認(rèn)在8545端口監(jiān)聽(tīng):

module.exports = {
  networks:{
    development: {
      …
      port: 8545
      …
    }
  }
}

4.4 啟動(dòng)節(jié)點(diǎn)

在 另一個(gè)終端,執(zhí)行以下命令啟動(dòng)節(jié)點(diǎn)軟件,以便部署合約并執(zhí)行交易:

~$ cd node1
~/node1$ ./console.sh
>

注意:為了在節(jié)點(diǎn)上部署合約,別忘了啟動(dòng)geth后先解鎖賬戶(hù):

> personal.unlockAcount(eth.accounts[0],'78787878')
true

4.5 編譯合約

執(zhí)行以下命令編譯項(xiàng)目合約:

~/demo$ truffle compile

4.6 部署合約

執(zhí)行以下命令來(lái)部署合約:

~/demo$ truffle migrate

如果你之前忘了在geth控制臺(tái)解鎖賬戶(hù),會(huì)看到如下錯(cuò)誤,參考前面說(shuō)明進(jìn)行解鎖即可:

Error: authentication needed: password or unlock

如果已經(jīng)正確地解鎖了賬戶(hù),你會(huì)看到部署過(guò)程停止在如下?tīng)顟B(tài):

Replacing Migrations…
… 0x3088762a5bc9…

這是因?yàn)閠ruffle在等待部署交易提交,但是我們?cè)谒芥溨羞€沒(méi)有啟動(dòng)挖礦。 現(xiàn)在切換回geth終端窗口,查看交易池的狀態(tài):

> txpool.status
{
  pending:1,
  queued:0
}

果然有一個(gè)掛起的交易!啟動(dòng)挖礦就是了:

> miner.start(1)

稍等小會(huì)兒,再查看交易池的狀態(tài):

> txpool.status
{
  pending:0,
  queued:0
}

交易已經(jīng)成功提交了。我們可以停止挖礦了,因?yàn)樗糃PU了:

> miner.stop()

現(xiàn)在切換回truffle那個(gè)終端,部署過(guò)程也正確地執(zhí)行完了。

4.7 啟動(dòng)DApp

執(zhí)行以下命令來(lái)啟動(dòng)DApp:

~/demo$ npm run dev

在瀏覽器里訪(fǎng)問(wèn)http://localhost:8080即可。 如果你希望從別的機(jī)器也可以訪(fǎng)問(wèn)你的DApp應(yīng)用,修改一下package.json:

{
  scripts:{
    "dev": "webpack-dev-server –-host 0.0.0.0"
  }
}

以上就是如何搭建linux及ubuntu以太坊私有鏈開(kāi)發(fā)環(huán)境,小編相信有部分知識(shí)點(diǎn)可能是我們?nèi)粘9ぷ鲿?huì)見(jiàn)到或用到的。希望你能通過(guò)這篇文章學(xué)到更多知識(shí)。更多詳情敬請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。

本文標(biāo)題:如何搭建linux及ubuntu以太坊私有鏈開(kāi)發(fā)環(huán)境
本文地址:http://chinadenli.net/article46/gedphg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信小程序、App設(shè)計(jì)、虛擬主機(jī)動(dòng)態(tài)網(wǎng)站、企業(yè)網(wǎng)站制作企業(yè)建站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

網(wǎng)站建設(shè)網(wǎng)站維護(hù)公司