本文对星云链Nebulas的简介和环境搭建作介绍,后续再添加其他方面相关内容。
1、星云链的简介
-
星云链世界观
星云链Nebulas(也称星云链NAS),是一个为区块链数据提供去中心化搜索框架的开源公有链。作为全球首个区块链搜索引擎,被称之为“区块链世界中的谷歌”。
目前有各种主链上有各种去中心化应用DApp,互不联通互不兼容,用户去寻找新应用非常不方便。就像互联网没有出现搜索引擎之前,人们在网上搜集资料很麻烦。后来出现了雅虎、谷歌等搜索引擎,解决了这个问题。
星云链(NAS)意图构建一个能够量化价值尺度、具备自进化能力,并能促进区块链生态建设的区块链系统,主要包括:定义价值尺度的星云指数 Nebulas Rank(NR) ,支持核心协议和智能合约链上升级的星云原力 Nebulas Force(NF) ,开发者激励协议 Developer Incentive Protocol(DIP) ,贡献度证明共识算法 Proof of Devotion(PoD),去中心化应用的搜索引擎 。通过星云指数Nebulas Rank(NR) 、星云原力 Nebulas Force(NF)、贡献度证明共识算法Proof of Devotion(PoD),去中心化应用搜索引擎四个模块搭建能实现价值尺度量化、具备自进化能力,并促进区块链生态建设的区块链系统。
-
星云链代币NAS
星云币代币为NAS。星云币作为星云链的原生代币,用于支付星云链上的交易手续费和计算服务费。
2017年12月,星云链公开发行代币NAS,总量为1亿枚,目前流通量为3000万枚。已于2017年9月28日完成众筹,众筹价为2美元,目前Nas价格为7.02美元,较之上涨了3.5倍,在所有币种中排名52名。
不同于众多主链的主网集中"六月上线",星云链于2018年3月30日已经上线主网。
-
星云链三大核心技术
1、星云指数
星云指数 Nebulas Rank (NR),核心的排序算法,已开源。以流动性、传播性、互操作性等体现数据互动关系的因素为基础,可以用来衡量地址、智能合约、去中心化应用等对象的影响力。2、自进化能力
星云原力(Nebulas Force)可以为星云链及其应用提供自进化能力,有了NF,开发者可以游刃有余地修改、升级和修复,无需硬分叉,应对变化和风险更加自如。3、原生激励
激励是区块链进化第一原动力。星云激励包括开发者激励协议(Developer Incentive Protocol, DIP)和贡献度证明(Proof of Devotion, PoD)。开发者激励协议构建一个反馈循环,激励开发者研发高质量的去中心化应用。通过贡献度证明,用户可以依照星云指数排名参与记账,从中获得星云币(NAS)。
-
星云链创始人团队
徐义吉,星云链(Nebulas)& 小蚁(AntShares)创始人,前蚂蚁金服区块链平台部负责人,前谷歌反作弊小组成员,同济大学计算机学士。
钟馥百,星云链(Nebulas)联合创始人,前蚂蚁金服区块链平台部架构师,前海豚浏览器高级研发总监、游戏业务负责人,毕业于华中科技大学。
王冠,星云链(Nebulas)和小蚁(NEO)联合创始人,OpenIP&IP圈发起人,毕业于东南大学,区块链行业连续创业者。
2、星云链的安装要求
星云链现阶段只能在Mac和Linux上运行,后续会推出windows版本。
注意:以下开始介绍星云链的环境搭建,均在MacOS上面操作,Linux系统安装请参考官网Github
安装前提条件:
- 安装Homebrew
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
- 安装Go(Go版本号必须>=1.9.2):
# 安装
brew install go
# 配置环境变量
export GOPATH=/path/to/workspace
3、编译星云链
1、下载源码
mkdir -p $GOPATH/src/github.com/nebulasio
cd $GOPATH/src/github.com/nebulasio
# 下载源码
git clone https://github.com/nebulasio/go-nebulas.git
# 进入项目目录
cd go-nebulas
# 切换到最稳定的master分支
git checkout master
终端操作如下:
wenzildeiMac:Study wenzil$ mkdir -p $GOPATH/src/github.com/nebulasio
wenzildeiMac:Study wenzil$ cd $GOPATH/src/github.com/nebulasio
wenzildeiMac:nebulasio wenzil$ git clone https://github.com/nebulasio/go-nebulas.git
Cloning into 'go-nebulas'...
remote: Counting objects: 19448, done.
remote: Compressing objects: 100% (99/99), done.
remote: Total 19448 (delta 73), reused 107 (delta 50), pack-reused 19298
Receiving objects: 100% (19448/19448), 169.79 MiB | 60.00 KiB/s, done.
Resolving deltas: 100% (13666/13666), done.
wenzildeiMac:nebulasio wenzil$ cd go-nebulas
wenzildeiMac:go-nebulas wenzil$ git checkout master
Already on 'master'
Your branch is up-to-date with 'origin/master'.
2、安装rocksdb依赖库
brew install rocksdb
3、安装Go依赖库
在Go-Nebulas中,Go的三方库都通过Dep来做管理,Dep版本号需要>=0.3.1。
brew install dep
brew upgrade dep
4、下载Go第三方库
切换到Go-Nebulas项目根目录,然后使用Dep来下载三方库。
wget http://ory7cn4fx.bkt.clouddn.com/vendor.tar.gz
cd $GOPATH/src/github.com/nebulasio/go-nebulas
tar zxf vendor.tar.gz
终端操作如下:
wenzildeiMac:go-nebulas wenzil$ wget http://ory7cn4fx.bkt.clouddn.com/vendor.tar.gz
--2018-06-05 17:32:18-- http://ory7cn4fx.bkt.clouddn.com/vendor.tar.gz
正在解析主机 ory7cn4fx.bkt.clouddn.com (ory7cn4fx.bkt.clouddn.com)... 14.215.166.109, 61.140.13.201, 14.215.166.199, ...
正在连接 ory7cn4fx.bkt.clouddn.com (ory7cn4fx.bkt.clouddn.com)|14.215.166.109|:80... 已连接。
已发出 HTTP 请求,正在等待回应... 200 OK
长度:19022460 (18M) [application/x-gzip]
正在保存至: “vendor.tar.gz”
vendor.tar.gz 100%[===================>] 18.14M 948KB/s 用时 20s
2018-06-05 17:32:38 (946 KB/s) - 已保存 “vendor.tar.gz” [19022460/19022460])
wenzildeiMac:go-nebulas wenzil$ cd $GOPATH/src/github.com/nebulasio/go-nebulas
wenzildeiMac:go-nebulas wenzil$ tar zxf vendor.tar.gz
如果出现类似如下信息,需要安装"wget":
-bash: wget: command not found
安装"wget"命令:
brew install wget
5、安装Chrome V8依赖库
星云虚拟机目前依赖于Chrome的V8引擎,为了大家使用方便,我们已经为Mac OSX和Linux编译好了V8的动态库。运行如下指令就可以完成安装。
cd $GOPATH/src/github.com/nebulasio/go-nebulas
make deploy-v8
终端操作如下:
wenzildeiMac:go-nebulas wenzil$ cd $GOPATH/src/github.com/nebulasio/go-nebulas
wenzildeiMac:go-nebulas wenzil$ make deploy-v8
install nf/nvm/native-lib/*.dylib /usr/local/lib/
6、编译可执行文件
完成所有上述依赖库的安装后,进入Go-Nebulas根目录编译星云链的可执行文件。
cd $GOPATH/src/github.com/nebulasio/go-nebulas
make build
终端操作如下:
wenzildeiMac:go-nebulas wenzil$ cd $GOPATH/src/github.com/nebulasio/go-nebulas
wenzildeiMac:go-nebulas wenzil$ make deploy-v8
install nf/nvm/native-lib/*.dylib /usr/local/lib/
wenzildeiMac:go-nebulas wenzil$ cd $GOPATH/src/github.com/nebulasio/go-nebulas
wenzildeiMac:go-nebulas wenzil$ make build
cd cmd/neb; go build -ldflags "-X main.version=1.0.1 -X main.commit=a7aaa0aaef2677038562356e1bbdccfb848d2fb4 -X main.branch=master -X main.compileAt=`date +%s`" -o ../../neb-a7aaa0aaef2677038562356e1bbdccfb848d2fb4
cd cmd/crashreporter; go build -ldflags "-X main.version=1.0.1 -X main.commit=a7aaa0aaef2677038562356e1bbdccfb848d2fb4 -X main.branch=master -X main.compileAt=`date +%s`" -o ../../neb-crashreporter
rm -f neb
ln -s neb-a7aaa0aaef2677038562356e1bbdccfb848d2fb4 neb
4、运行星云链
创世区块
在启动一个新的星云链前,我们必须定义创世区块的配置文件。
1、配置创世区块
(可跳过此步,只是查看一下配置文件)
进入到下载的星云链的根目录下,找到"nebulasio/go-nebulas/conf/default"目录下的"genesis.conf"文件,可以按照如下配置内容来修改。
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 ]
},
...
]
终端操作如下:
###打开"genesis.conf"文件所在目录
wenzildeiMac:go-nebulas wenzil$ open $GOPATH/src/github.com/nebulasio/go-nebulas/conf/default
终端执行open命令打开对应文件夹
配置文件
在启动一个星云节点前,需要定义好该节点的配置文件。
进入到下载的星云链的根目录下,找到"nebulasio/go-nebulas/conf/default"目录下的"config.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"
}
}
5、启动星云链
此时启动的星云链是本地的私有链,和官方的测试网和主网没有任何相互关联
启动你的第一个星云节点,命令如下
cd $GOPATH/src/github.com/nebulasio/go-nebulas
./neb -c conf/default/config.conf
启动成功的话,将会看到如下信息,有Started Neblet的日志输出。
启动星云链节点默认情况下,使用配置文件conf/default/config.conf启动的节点不是矿工节点。
接下来,启动你的第一个矿工节点,它的seed节点即我们刚刚启动的第一个节点。
cd $GOPATH/src/github.com/nebulasio/go-nebulas
./neb -c conf/example/miner.conf
在这个节点启动后,你会先看到如下信息,表示当前节点正在找种子节点同步。
当前节点开始寻找种子节点同步等待一会儿,将会看到如下信息,表示当前节点已经连上了seed节点完成了同步。
当前节点已经连上了seed节点完成同步再等待几分钟,你会看到如下信息,表示当前矿工节点挖出了第一个区块。
当前矿工节点挖出了第一个区块每当矿工挖个区块时,星云链节点会将矿工挖到的区块添加到区块链中。
星云链节点添加区块链中提示: 目前的DPoS共识算法,会有21个节点轮流出块。由于我们只启动了21个矿工节点中的一个矿工节点,所以每隔15*21s才出一个块。你可以启动更多的矿工节点,填补的空缺。但是需要注意,多个节点间的端口号不要相互冲突了。
本文章部分内容来源于如下网址,对部分内容作了删改,全部重新运行并截图,如有侵权联系我删除文章。
参考网址:
http://www.qukuaiwang.com.cn/news/1738.html
https://blog.csdn.net/lwbcxc/article/details/79681902
https://github.com/nebulasio/wiki
下一篇
PS:刚入坑的小白,很多不懂,还请各位大佬多赐教,谢谢!
网友评论