Nxt 是目前为止最具创新的点对点网络。它是一个开源的去中心化的区块链平台,使用了股权证明共识机理,已经运行了2年多时间。目前,Nxt所使用的技术也被Ethereum所采用,而Nxt仍保持一贯的低调神秘。
但是Nxt的开发者一直在忙于开发,在最新的发布版本中带来了很多新的功能特征。API文档也进行了扩充,而运行软件依旧需要很小的系统资源。生产区块的“全节点”可以运行在价格为50美金的树莓派Pi 2上。
你所需要的内容如下:
- Raspberry Pi 2
- 8GB+ microSDHC card (推荐Class 6 或更高)
- Micro USB 电源线
- Cat 5 网线 或 USB wifi 适配器
- USB 键盘、显示器+HDMI线
安装系统
我们将使用Linux,因为它可靠、安全并且免费。Raspbian是在树莓派上使用最广泛的Linux系统,支持和维护都很好。最新版本的Raspbian是 “Jessie” (2015-11-21),可以在 RaspberryPi.org上下载。这是专用节点,只能远程登访问,因为我建议使用Jessie Lite ,因为我们不需要window管理器。
有很多方法可以将镜像写入microSDHC卡,安装指导文件包括了Linux, OS X 和Windows.
“很容易就能搞定它…”
系统配置
准备好microSDCH卡之后就可以开始使用树莓派了。将内存卡插入树莓派,插入USB键盘、网线和HDMI连接线,插入电源线。
系统启动后,你就能看到登陆界面了。默认用户名是pi ,默认密码是 raspberry。登陆之后就可以运行下列命令来俺安装最新的系统更新文件:
sudo apt-get update
sudo apt-get upgrade
接着,启动系统配置:
sudo raspi-config
首先将默认密码修改为安全的密码。选择”2 Change User Password” 来设置新密码。
选择 “9 Advanced Options”
因为我们没有使用窗口管理器,我们可以给系统分配一些GPU内存。选择 “A3 Memory Split” 并将值设定为 16。
如果你想用其它电脑通过SSH来访问你的节点,你可以在”A4 SSH”中激活。我强烈推荐强化你的SSH安装。
最后,选择 “1 Expand Filesystem”来重写你的microSDHC卡的部分数据表以使用全部内存。
一旦完成设置,点击ESC退出,重启系统:
sudo reboot
再次登录,检查根系统文件已经扩展:
df -h
根系统文件的大小应该选择接近你的SDHC卡的内存容量。
Filesystem Size Used Avail Use% Mounted on /dev/root 15G 2.2G 13G 14% /
接下来通过编辑交换配置文件来增加交换并重启服务:
sudo nano /etc/dphys-swapfile
修改 CONF_SWAPSIZE并将其设定为 512 或 1024 ,然后保存文件 (CTRL-O, ENTER, CTRL-X).
# set size to absolute value, leaving empty (default) then uses computed value # you most likely don't want this, unless you have an special disk situation CONF_SWAPSIZE=1024
重启swapfile 服务:
sudo service dphys-swapfile restart
网络配置
因为这是一个全节点,你需要允许点对点的网络流量通过你的路由防火墙。每一个网络配置都是不一样的,因此这部分是通用指南。假定你用DHCP连接到路由,你的树莓派应该有一个本地IP地址,否则你将需要配置静态IP地址。显示当前网络配置:
ifconfig eth0
eth0 Link encap:Ethernet HWaddr b1:ff:4a:a4:ff:1b inet addr:192.168.1.10 Bcast:192.168.1.255 Mask:255.255.255.0
inet addr 是你的本地IP, HWaddr 是你的MAC 地址。在你的路由器设置中,找到端口转发设置,并将TCP/UDP端口转向你的树莓派的本地IP地址。如果你没有使用静态IP地址,你应该为MAC地址和本地IP地址设置一个DHCP静态永久租用(又称为DHCP预留)。这样的话树莓派将会有相同的本地IP地址。
安装Java
Nxt 需要Java 8。你可以下载并安装 Oracle JRE, 或者你可以可以安装 OpenJDK JRE:
sudo apt-get install openjdk-8-jre
You love Java.
确认Java是否安装正确以及版本:
java -version
你应该会看到类似这样的输出:
openjdk version "1.8.0_40-internal" OpenJDK Runtime Environment (build 1.8.0_40-internal-b04) OpenJDK Zero VM (build 25.40-b08, interpreted mode)
安装Nxt
从公开代码库下载最新的Nxt版本。你可以使用wget命令来下载。目前可用的最新版本是1.7.4
wget https://bitbucket.org/JeanLucPicard/nxt/downloads/nxt-client-1.7.4.zip
确认安装文件的哈希,验证是否与已发布的签名哈希一致。你也可以验证区块链中的哈希。Jean Luc的Nxt账户是 NXT-X4LF-9A4G-WN9Z-2R322.
sha256sum nxt-client-1.7.4.zip
baf0286983fee3f718ea755dd76f5e9bb3d6a2962560368d513ffc9517d10c9b nxt-client-1.7.4.zip
解压文件创建 “nxt” 目录:
unzip nxt-client-1.7.4.zip
在配置Nxt之前,你需要找出你的公共IP地址。可以通过以下命令进行:
curl ipinfo.io
记下你的公共IP地址,运行以下命令来创建一个新的配置文件:
nano ~/nxt/conf/nxt.properties
配置举例:
nxt.myAddress=12.34.56.78 nxt.apiServerHost=0.0.0.0 nxt.allowedBotHosts=*
如果你能在路由器上将设置端口转发,请将nxt.myAddress设定为你的公共IP地址。否则,请在配置文件中删除这一行。其它的参数,我们已经设定了API来允许从任何地方访问。完成这些设置之后,你应该考虑对你的本地网络或特定IP地址作一些访问限制。参见nxt/conf/nxt-default.properties 。保存配置文件,退出编辑。
编辑启动文件,并优化内存配置:
nano ~/nxt/run.sh
添加参数 -Xmx640m 来将默认的Java堆内存扩展至 640mb:
java -Xmx640m -cp classes:lib/*:conf nxt.Nxt
现在你可以准备启动服务器了。因为这是一次全新的安装,你的节点需要下载整个区块链来与Nxt网络保持同步。这需要的时间会长一些,取决于你的网络速度。
启动&连接
Nxt作为服务器提供API和网页客户端界面。首先,启动服务器:
cd ~/nxt
./run.sh
你应该会看到Nxt服务器启动,并同步网络。当启动完成时,你将会看到以下内容:
2016-01-03 13:43:28 INFO: Nxt server 1.7.4 started successfully. 2016-01-03 13:43:28 INFO: Copyright © 2013-2016 The Nxt Core Developers. 2016-01-03 13:43:28 INFO: Distributed under GPLv2, with ABSOLUTELY NO WARRANTY. 2016-01-03 13:43:28 INFO: Client UI is at http://localhost:7876/index.html
在PC端打开浏览器连接到树莓派本地IP之地的端口7876。
例如; http://192.168.1.10:7876
可以在网址后面加上test来查看交互式的API界面。
例如: http://192.168.1.10:7876/test
恭喜,如果你能访问登陆/test 页面,说明已经安装成功了。按住CTRL+C来停止Nxt服务器。
最后
激活SSL
在安全使用Nxt之前,你应该为节点设置SSL。如果你使用了HTTP,攻击者则可能盗取你的密码。强烈推荐配置一个自我签名的HTTPS证书。我写了一篇简单按照维基百科的指导书写了一篇简单的教程。核心开发者Riker也发布了如何设置SSL的帖子。
安装屏幕
为了更方便地管理你的节点,建议安装屏幕。
sudo apt-get install screen
为了使用屏幕,需要编辑run.sh和命令:
nano ~/nxt/run.sh
screen -mS nxt java -Xmx640m -cp classes:lib/*:conf nxt.Nxt
下次你用run.sh启动服务器时,你将可以通过CTRL-A, CTRL-D来从处理中分离出来。使用以下命令来回到会话中:
screen -r nxt
自动启动
可以设置自动启动Nxt服务器。你需要添加如下命令:
crontab -e
@reboot sleep 30 && cd /home/pi/nxt && ./run.sh
在本例中,Nxt服务器将会在开机30秒后启动。你也可以使用cron来设置其它任务。
如果任何疑问或建议,请访问本博文的论坛帖子。