Nebulas-01 星云鏈編譯安裝

Nebulas-01 星云鏈編譯安裝

星云鏈的項(xiàng)目代碼已經(jīng)發(fā)布了幾個(gè)版本,經(jīng)過測試可以在本地運(yùn)行,大家可以下載星云鏈源代碼在本地編譯私有鏈。想了解星云鏈的同學(xué)可以閱讀星云鏈非技術(shù)白皮書。對技術(shù)感興趣的同學(xué)可以看星云鏈技術(shù)白皮書星云鏈Github

星云鏈現(xiàn)階段只能在Mac和Linux上運(yùn)行,后續(xù)會(huì)推出windows版本。

Golang環(huán)境搭建

COMPONENTSVERSIONDESCRIPTION

Golang>= 1.9.2The Go Programming Language

我們會(huì)分別介紹Mac OSX和Linux兩種系統(tǒng)下golang環(huán)境的搭建。

Mac OSX

在Mac OSX里,我們推薦使用Homebrew來安裝Golang.

# 安裝

brew install go

?

# 配置環(huán)境變量

exportGOPATH=/path/to/workspace

提示: 在golang的開發(fā)中,GOPATH是必須的,它指定了我們使用golang開發(fā)的工作空間。所有的源碼都應(yīng)放在GOPATH之下。

Linux

# download

wgethttps://dl.google.com/go/go1.9.3.linux-amd64.tar.gz

?

# extract

tar-C/usr/local-xzfgo1.9.3.linux-amd64.tar.gz

?

# environment variables

exportPATH=$PATH:/usr/local/go/bin

exportGOPATH=/path/to/workspace

編譯星云鏈

下載源碼

可以使用如下指令直接下載最新版本的星云鏈源碼。

# 進(jìn)入工作目錄

mkdir-p$GOPATH/src/github.com/nebulasio

cd$GOPATH/src/github.com/nebulasio

?

# 下載源碼

gitclone https://github.com/nebulasio/go-nebulas.git

?

# 進(jìn)入項(xiàng)目目錄

cdgo-nebulas

?

# 切換到最穩(wěn)定的master分支

gitcheckout master

安裝rocksdb依賴庫

同樣我們會(huì)介紹如何在MAC OSX和Linux正確安裝RocksDB。

Mac OSX

可以直接通過Homebrew安裝,運(yùn)行? brew install rocksdb

Linux

在linux環(huán)境下,由于ubuntu和centos系統(tǒng)的用戶偏多,我們將分別介紹這兩個(gè)主流環(huán)境下RocksDB的安裝。

Ubuntu

首先安裝RocksDB所需依賴庫

apt-get update

apt-get-yinstall build-essential libgflags-dev libsnappy-dev zlib1g-dev libbz2-dev liblz4-dev libzstd-dev

下載源碼并編譯安裝

gitclone https://github.com/facebook/rocksdb.git

cdrocksdb &makeshared_lib &&makeinstall-shared

make shared_lib 有些同學(xué)會(huì)報(bào)錯(cuò),請?jiān)L問https://www.cnblogs.com/shuren/p/3981744.html 基本能解決問題

安裝Go依賴庫

在Go-Nebulas中,Go的三方庫都通過Dep來做管理

Components(-) ? ? ? ?? | ? ? ? ?? Version(-) ? ? ? ? ? | ? ? ? ?? Description(-) ? ? ? ? ?

[Dep](https://github.com/golang/dep) ? ? ? ? ?? | ? ? ? ? ? >= 0.3.1 ? ? ? ?? | ? ? ? ?? Dep is a dependency management tool for Go. ? ? ? ? ?

安裝Dep工具

我們同樣分別介紹Mac OSX和Linux下Dep的安裝方法。

Mac OSX

通過Homebrew直接安裝并升級(jí)Dep

brew install dep

brew upgrade dep

Linux

通過源碼來安裝Dep

cd/usr/local/bin/

wgethttps://github.com/golang/dep/releases/download/v0.3.2/dep-linux-amd64

ln-sdep-linux-amd64 dep

下載Go三方庫

我們切換到Go-Nebulas項(xiàng)目根目錄,然后使用Dep來下載三方庫。

cd$GOPATH/src/github.com/nebulasio/go-nebulas

makedep

有些同學(xué)執(zhí)行 make dep 報(bào)錯(cuò),可直接用下面的方法安裝三方庫,效果一樣。

提示: make dep將會(huì)下載很多依賴庫。在部分地區(qū),這個(gè)過程可能比較耗時(shí)。所以,我們提供了依賴庫的壓縮包vendor.tar.gz??梢允褂孟铝兄噶钔ㄟ^壓縮包來安裝GO依賴庫。

wgethttp://ory7cn4fx.bkt.clouddn.com/vendor.tar.gz

cd$GOPATH/src/github.com/nebulasio/go-nebulas

tar zxf vendor.tar.gz

安裝Chrome V8依賴庫

星云虛擬機(jī)目前依賴于Chrome的V8引擎,為了大家使用方便,我們已經(jīng)為Mac OSX和Linux編譯好了V8的動(dòng)態(tài)庫。運(yùn)行如下指令就可以完成安裝。

cd$GOPATH/src/github.com/nebulasio/go-nebulas

makedeploy-v8

編譯可執(zhí)行文件

完成所有上述依賴庫的安裝后,現(xiàn)在我們可以進(jìn)入Go-Nebulas根目錄編譯星云鏈的可執(zhí)行文件了。

cd$GOPATH/src/github.com/nebulasio/go-nebulas

makebuild

編譯成功后,將會(huì)看到如下信息。


運(yùn)行星云鏈

創(chuàng)世區(qū)塊

在啟動(dòng)一個(gè)新的星云鏈前,我們必須定義創(chuàng)世區(qū)塊的配置文件。

創(chuàng)世區(qū)塊配置

meta {

? # 每條鏈的唯一標(biāo)識(shí)

? # 每個(gè)區(qū)塊和交易只會(huì)屬于一條唯一的鏈,保證安全性

? chain_id: 100

}

?

consensus {

? # 在貢獻(xiàn)度證明(PoD)被充分驗(yàn)證前,星云鏈采用DPoS共識(shí)算法

? # DPoS共識(shí)中,21個(gè)人組成一個(gè)朝代

? # 每隔一段時(shí)間都會(huì)切換朝代,每個(gè)朝代內(nèi),21個(gè)礦工輪流出塊

? # 由于DPoS只是過渡方案,所以暫時(shí)不開放給公眾挖礦,即當(dāng)前版本朝代不會(huì)發(fā)生變更

? dpos {

?? # 初始朝代,包含21個(gè)初始礦工地址

?? dynasty: [

? ?? [ miner address ],

? ?? ...

?? ]

? }

}

?

# 預(yù)分配的代幣

token_distribution [

? {

?? address: [ allocation address ]

?? value: [ amount of allocation tokens ]

? },

? ...

]

可以在根目錄? conf/default/genesis.conf 下,找到一個(gè)完整的創(chuàng)世區(qū)塊配置實(shí)例。

配置文件

在我們啟動(dòng)一個(gè)星云節(jié)點(diǎn)前,我們需要定義好該節(jié)點(diǎn)的配置文件

星云節(jié)點(diǎn)配置文件

# 網(wǎng)絡(luò)配置

network {

? # 對于全網(wǎng)第一個(gè)節(jié)點(diǎn),不需要配置seed

? # 否則,其他節(jié)點(diǎn)啟動(dòng)時(shí)需要配置seed,seed節(jié)點(diǎn)將會(huì)把網(wǎng)絡(luò)中其他節(jié)點(diǎn)的路由信息同步給剛啟動(dòng)的節(jié)點(diǎn)

? # 可以配置多個(gè)seed, ["...", "..."]

? seed: ["/ip4/127.0.0.1/tcp/8680/ipfs/QmP7HDFcYmJL12Ez4ZNVCKjKedfE7f48f1LAkUc3Whz4jP"]

?

? # 節(jié)點(diǎn)監(jiān)聽網(wǎng)絡(luò)消息端口,可以配置多個(gè)

? listen: ["0.0.0.0:8680"]

?

? # 網(wǎng)絡(luò)私鑰,用于確認(rèn)身份節(jié)點(diǎn)

? # private_key: "conf/network/id_ed25519"

}

?

# 鏈配置

chain {

? # 鏈的唯一標(biāo)識(shí)

? chain_id: 100

?

? # 數(shù)據(jù)存儲(chǔ)地址

? datadir: "data.db"

?

? # 賬戶keystore文件存儲(chǔ)地址

? keydir: "keydir"

?

? # 創(chuàng)世區(qū)塊配置

? genesis: "conf/default/genesis.conf"

?

? # 簽名算法,請勿修改

? signature_ciphers: ["ECC_SECP256K1"]

?

? # 礦工地址,礦工的keystore文件需要放置在配置的keydir下

? miner: "n1XkoVVjswb5Gek3rRufqjKNpwrDdsnQ7Hq"

?

? # Coinbase地址,該地址用于接收礦工的挖礦獎(jiǎng)勵(lì),可以和礦工地址一致

? # 該地址的keystore無需暴露,不用放置在配置的keydir下

? coinbase: "n1FF1nz6tarkDVwWQkMnnwFPuPKUaQTdptE"

?

? # 礦工地址的密碼

? passphrase: "passphrase"

}

?

# API配置

rpc {

?? # GRPC服務(wù)端口

?? rpc_listen: ["127.0.0.1:8684"]

?

?? # HTTP服務(wù)端口

?? http_listen: ["127.0.0.1:8685"]

?

?? # 開放的API模塊

?? # API模塊包含所有和用戶私鑰無關(guān)的接口

?? # Admin模塊包含所有和用戶私鑰相關(guān)的接口,需要慎重考慮該模塊的訪問權(quán)限

?? http_module: ["api", "admin"]

}

?

# 日志配置

app {

?? # 日志級(jí)別: 支持[debug, info, warn, error, fatal]

?? log_level: "info"

?

?? # 日志存放位置

?? log_file: "logs"

?

?? # 是否打開crash report服務(wù)

?? enable_crash_report: false

}

?

# 監(jiān)控服務(wù)配置

stats {

?? # 是否打開監(jiān)控服務(wù)

?? enable_metrics: false

?

?? # 監(jiān)控服務(wù)將數(shù)據(jù)上傳到Influxdb

?? # 配置Influxdb的訪問信息

?? influxdb: {

? ? ?? host: "http://localhost:8086"

? ? ?? db: "nebulas"

? ? ?? user: "admin"

? ? ?? password: "admin"

?? }

}

A lot of examples can be found in $GOPATH/src/github.com/nebulasio/go-nebulas/conf/

啟動(dòng)星云鏈

此時(shí)啟動(dòng)的星云鏈?zhǔn)潜镜氐乃接墟?,和官方的測試網(wǎng)和主網(wǎng)沒有任何相互關(guān)聯(lián)

啟動(dòng)你的第一個(gè)星云節(jié)點(diǎn)。

cd$GOPATH/src/github.com/nebulasio/go-nebulas

./neb-cconf/default/config.conf

啟動(dòng)成功的話,將會(huì)看到如下信息,有Started Neblet的日志輸出。


默認(rèn)情況下,使用配置文件conf/default/config.conf啟動(dòng)的節(jié)點(diǎn)不是礦工節(jié)點(diǎn)。

接下來,啟動(dòng)你的第一個(gè)礦工節(jié)點(diǎn),它的seed節(jié)點(diǎn)即我們剛剛啟動(dòng)的第一個(gè)節(jié)點(diǎn)。

cd$GOPATH/src/github.com/nebulasio/go-nebulas

./neb-cconf/example/miner.conf

在這個(gè)節(jié)點(diǎn)啟動(dòng)后,你會(huì)先看到如下信息,表示當(dāng)前節(jié)點(diǎn)正在找種子節(jié)點(diǎn)同步。

等待一會(huì)兒,將會(huì)看到如下信息,表示當(dāng)前節(jié)點(diǎn)已經(jīng)連上了seed節(jié)點(diǎn)完成了同步。


再等待幾分鐘,你會(huì)看到如下信息,表示當(dāng)前礦工節(jié)點(diǎn)挖出了第一個(gè)區(qū)塊。


提示: 目前的DPoS共識(shí)算法,會(huì)有21個(gè)節(jié)點(diǎn)輪流出塊。由于我們只啟動(dòng)了21個(gè)礦工節(jié)點(diǎn)中的一個(gè)礦工節(jié)點(diǎn),所以每隔15*21s才出一個(gè)塊。你可以啟動(dòng)更多的礦工節(jié)點(diǎn),填補(bǔ)的空缺。但是需要注意,多個(gè)節(jié)點(diǎn)間的端口號(hào)不要相互沖突了。

版權(quán)聲明:博客中的文章版權(quán)歸博主所有,未經(jīng)授權(quán),禁止轉(zhuǎn)載,轉(zhuǎn)載請注明出處

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

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

  • 1. 分布式系統(tǒng)核心問題 參考書籍:《區(qū)塊鏈原理、設(shè)計(jì)與應(yīng)用》 一致性問題例子:兩個(gè)不同的電影院買同一種電影票,如...
    molscar閱讀 1,005評論 0 0
  • 來源于楊保華等《區(qū)塊鏈-原理、設(shè)計(jì)與應(yīng)用》 本地編譯安裝部署超級(jí)賬本Fabric網(wǎng)絡(luò)。 超級(jí)賬本Fabric基于G...
    酷酷de熊閱讀 1,243評論 0 6
  • 安裝docker yum -y install dockerdocker version啟用docker官方中國區(qū)...
    莫名FCJ閱讀 1,549評論 0 1
  • Hyperledger Fabric 區(qū)塊鏈多機(jī)部署 本文介紹如何從 Fabric 源碼編譯可執(zhí)行程序,到多機(jī)部署...
    還是小把戲閱讀 4,932評論 1 19
  • 今天早晨大寶7點(diǎn)去校車站點(diǎn)了,二寶睡了,我還有半個(gè)小時(shí)的空余時(shí)間,隨手拿起《聽孩子說勝過說給孩子聽》,讀...
    軒萌媽閱讀 201評論 0 0

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