Nebulas-01 星云链编译安装

Nebulas-01 星云链编译安装

星云链的项目代码已经发布了几个版本,经过测试可以在本地运行,大家可以下载星云链源代码在本地编译私有链。想了解星云链的同学可以阅读星云链非技术白皮书。对技术感兴趣的同学可以看星云链技术白皮书星云链Github

星云链现阶段只能在Mac和Linux上运行,后续会推出windows版本。

Golang环境搭建

COMPONENTSVERSIONDESCRIPTION

Golang>= 1.9.2The Go Programming Language

我们会分别介绍Mac OSX和Linux两种系统下golang环境的搭建。

Mac OSX

在Mac OSX里,我们推荐使用Homebrew来安装Golang.

# 安装

brew install go

# 配置环境变量

exportGOPATH=/path/to/workspace

提示: 在golang的开发中,GOPATH是必须的,它指定了我们使用golang开发的工作空间。所有的源码都应放在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

编译星云链

下载源码

可以使用如下指令直接下载最新版本的星云链源码。

# 进入工作目录

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

cd$GOPATH/src/github.com/nebulasio

# 下载源码

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

# 进入项目目录

cdgo-nebulas

# 切换到最稳定的master分支

gitcheckout master

安装rocksdb依赖库

同样我们会介绍如何在MAC OSX和Linux正确安装RocksDB。

Mac OSX

可以直接通过Homebrew安装,运行  brew install rocksdb

Linux

在linux环境下,由于ubuntu和centos系统的用户偏多,我们将分别介绍这两个主流环境下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 有些同学会报错,请访问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直接安装并升级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项目根目录,然后使用Dep来下载三方库。

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

makedep

有些同学执行 make dep 报错,可直接用下面的方法安装三方库,效果一样。

提示: make dep将会下载很多依赖库。在部分地区,这个过程可能比较耗时。所以,我们提供了依赖库的压缩包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依赖库

星云虚拟机目前依赖于Chrome的V8引擎,为了大家使用方便,我们已经为Mac OSX和Linux编译好了V8的动态库。运行如下指令就可以完成安装。

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

makedeploy-v8

编译可执行文件

完成所有上述依赖库的安装后,现在我们可以进入Go-Nebulas根目录编译星云链的可执行文件了。

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

makebuild

编译成功后,将会看到如下信息。


运行星云链

创世区块

在启动一个新的星云链前,我们必须定义创世区块的配置文件。

创世区块配置

meta {

  # 每条链的唯一标识

  # 每个区块和交易只会属于一条唯一的链,保证安全性

  chain_id: 100

}

consensus {

  # 在贡献度证明(PoD)被充分验证前,星云链采用DPoS共识算法

  # DPoS共识中,21个人组成一个朝代

  # 每隔一段时间都会切换朝代,每个朝代内,21个矿工轮流出块

  # 由于DPoS只是过渡方案,所以暂时不开放给公众挖矿,即当前版本朝代不会发生变更

  dpos {

   # 初始朝代,包含21个初始矿工地址

   dynasty: [

     [ miner address ],

     ...

   ]

  }

}

# 预分配的代币

token_distribution [

  {

   address: [ allocation address ]

   value: [ amount of allocation tokens ]

  },

  ...

]

可以在根目录  conf/default/genesis.conf 下,找到一个完整的创世区块配置实例。

配置文件

在我们启动一个星云节点前,我们需要定义好该节点的配置文件

星云节点配置文件

# 网络配置

network {

  # 对于全网第一个节点,不需要配置seed

  # 否则,其他节点启动时需要配置seed,seed节点将会把网络中其他节点的路由信息同步给刚启动的节点

  # 可以配置多个seed, ["...", "..."]

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

  # 节点监听网络消息端口,可以配置多个

  listen: ["0.0.0.0:8680"]

  # 网络私钥,用于确认身份节点

  # private_key: "conf/network/id_ed25519"

}

# 链配置

chain {

  # 链的唯一标识

  chain_id: 100

  # 数据存储地址

  datadir: "data.db"

  # 账户keystore文件存储地址

  keydir: "keydir"

  # 创世区块配置

  genesis: "conf/default/genesis.conf"

  # 签名算法,请勿修改

  signature_ciphers: ["ECC_SECP256K1"]

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

  miner: "n1XkoVVjswb5Gek3rRufqjKNpwrDdsnQ7Hq"

  # Coinbase地址,该地址用于接收矿工的挖矿奖励,可以和矿工地址一致

  # 该地址的keystore无需暴露,不用放置在配置的keydir下

  coinbase: "n1FF1nz6tarkDVwWQkMnnwFPuPKUaQTdptE"

  # 矿工地址的密码

  passphrase: "passphrase"

}

# API配置

rpc {

   # GRPC服务端口

   rpc_listen: ["127.0.0.1:8684"]

   # HTTP服务端口

   http_listen: ["127.0.0.1:8685"]

   # 开放的API模块

   # API模块包含所有和用户私钥无关的接口

   # Admin模块包含所有和用户私钥相关的接口,需要慎重考虑该模块的访问权限

   http_module: ["api", "admin"]

}

# 日志配置

app {

   # 日志级别: 支持[debug, info, warn, error, fatal]

   log_level: "info"

   # 日志存放位置

   log_file: "logs"

   # 是否打开crash report服务

   enable_crash_report: false

}

# 监控服务配置

stats {

   # 是否打开监控服务

   enable_metrics: false

   # 监控服务将数据上传到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/

启动星云链

此时启动的星云链是本地的私有链,和官方的测试网和主网没有任何相互关联

启动你的第一个星云节点。

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

./neb-cconf/default/config.conf

启动成功的话,将会看到如下信息,有Started Neblet的日志输出。


默认情况下,使用配置文件conf/default/config.conf启动的节点不是矿工节点。

接下来,启动你的第一个矿工节点,它的seed节点即我们刚刚启动的第一个节点。

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

./neb-cconf/example/miner.conf

在这个节点启动后,你会先看到如下信息,表示当前节点正在找种子节点同步。

等待一会儿,将会看到如下信息,表示当前节点已经连上了seed节点完成了同步。


再等待几分钟,你会看到如下信息,表示当前矿工节点挖出了第一个区块。


提示: 目前的DPoS共识算法,会有21个节点轮流出块。由于我们只启动了21个矿工节点中的一个矿工节点,所以每隔15*21s才出一个块。你可以启动更多的矿工节点,填补的空缺。但是需要注意,多个节点间的端口号不要相互冲突了。

版权声明:博客中的文章版权归博主所有,未经授权,禁止转载,转载请注明出处

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,117评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,328评论 1 293
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,839评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,007评论 0 206
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,384评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,629评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,880评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,593评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,313评论 1 243
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,575评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,066评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,392评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,052评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,082评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,844评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,662评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,575评论 2 270

推荐阅读更多精彩内容

  • 1. 分布式系统核心问题 参考书籍:《区块链原理、设计与应用》 一致性问题例子:两个不同的电影院买同一种电影票,如...
    molscar阅读 874评论 0 0
  • 来源于杨保华等《区块链-原理、设计与应用》 本地编译安装部署超级账本Fabric网络。 超级账本Fabric基于G...
    酷酷de熊阅读 1,136评论 0 6
  • 安装docker yum -y install dockerdocker version启用docker官方中国区...
    莫名FCJ阅读 1,413评论 0 1
  • Hyperledger Fabric 区块链多机部署 本文介绍如何从 Fabric 源码编译可执行程序,到多机部署...
    还是小把戏阅读 4,665评论 1 19
  • 今天早晨大宝7点去校车站点了,二宝睡了,我还有半个小时的空余时间,随手拿起《听孩子说胜过说给孩子听》,读...
    轩萌妈阅读 136评论 0 0