干货| Blockstream同步卫星配置教程

作者:Medium大神@notgrubles
翻译:grubles
发布时间:2019年6月28日
微信公众号:加密共识

去年 12 月,Blockstream向太空发射了第五颗比特币同步卫星,目前卫星信号几乎已覆盖除了格陵兰岛和南极洲之外的全球所有国家和地区,现在你无需联网即可同步比特币区块数据。
为什么要发射卫星
比特币区块链实际上是一个账本,所以需要将全部交易信息包含在账本内,从而体现每个比特币的所有权。账本需要在节点之间相互广播,以达到分布式备份账本的目的,这是比特币的关键特征。目前,节点广播几乎完全依赖互联网,这给比特币带来了潜在的「单点故障」问题,降低了整个网络的稳健性和安全性。例如,海底光缆出现故障,或受政策影响的针对性断网都可能导致大范围的网络断连,从而影响该地区比特币节点的同步,损害比特币的可用性。同步卫星的出现,减少了比特币对互联网的依赖,使节点同步可以通过接收卫星信号的形式完成。只需要一个卫星天线和一个接收器,就可以接收从卫星传来的区块数据,保持节点同步。同时,这也降低了运行节点的成本,在某些欠发达地区,网络连接费用高昂,使用卫星同步区块数据可以省下网费,让更多人有机会运行节点,从而提高比特币的覆盖率
国外早有大神自制了卫星接收节点,本文将其整理成简略教程,供大家参考。
硬件部分
所需硬件:
1. 装有Linux的电脑,本教程用的是Fedora 26。选择Fedora是因为它免费,而且与所需软件兼容,用户基数也比较大。此外,需要有i5或相似性能的处理器。卫星接收软件也可以在树莓派或类似的设备上运行。如果使用Ubuntu或其他Debian系统,可直接添加PPA然后使用命令

apt install satellite2. 足够的储存空间(截止到2019年6月,全节点体积为235GB)

3. 至少46cm的卫星盘
4. 软件无线电装置(SDR)
5. 线性极化装置(PLL锁相的LNB高频头)
6. 高频头支架
7. 高频头电源
8. 同轴电缆
9. 适配SMA同轴电缆的F型连接器
10. 螺丝刀和钳子
11. 一个卫星三脚架(可选)

其他要求:
1. 卫星校准APP或罗盘2. 还有耐心和探索心!
组装硬件:
首先调节三脚架高低

然后将卫星盘连接到三脚架上,并调节方位和高低

然后将高频头安装到高频头支架上

如果一切顺利,你的卫星天线应该是这样的
连接线缆:
使用F转接头将SDR连接到高频头电源上,然后使用同轴电缆将高频头也连接到电源上。连接前需要确认电源与SDR是匹配的,否则错误的电源将损坏SDR。
软件部分
所需软件:
Blockstream为所需软件提供了预建的二进制文件。1. Fedora 26 .iso 镜像文件
2. GNURadio 3.7.10以上版本 (Fedora 26 在软件库中内置了)
4. gr-osmosdr (Fedora库中内置)
5. 比特币高速中继引擎 Bitcoin FIBRE
其他相关软件:
1. 一颗想要学习的心!2. 掌握中阶Linux命令
安装Fedora
1. 安装Fodora有很多相关的安装教程,请自行搜索。注意安装过程中需要使用管理员身份2. 升级Fedora:
打开「终端」。点击屏幕左上角的「Activities」,输入「terminal」,点击图标打开「终端」。

使用dnf升级
打开「终端」后,输入

sudo dnf update
回车输入密码,密码是安装时设置的。然后可以看到待更新列表,输入y,回车。


升级结束后,重启。

安装GUNradio、gr-osmosdr和其他软件:
在「终端」中,输入

sudo dnf install gnuradio gnuradio-devel gr-osmosdr
回车后屏幕出现Is this ok [y/N],输入y,回车。


完成后,将Blockstream Satellite在Github的库克隆到本地,创建一个项目。

创建Blockstream卫星接收器:
首先要创建卫星接收器,输入如下命令:
$ sudo dnf groupinstall “C Development Tools and Libraries”
$ sudo dnf install cppunit-devel swig
安装好后开始克隆Github库
$ git clone https://github.com/Blockstream/satellite
去刚才克隆好的文件夹
$ cd satellite/
现在我们已经准备好所有gr-framer GNUradio模组需要的软件了,开始执行安装脚本:
$ ./install_gr_framers.sh
输入密码


创建 gr-framers
恭喜,你已经安装了gr-framers GNUradio!
现在开始执行Blockstream GNUradio安装脚本:

$ ./install_mods.sh

创建Blockstream模组

现在已经安装好Blockstream模组了。
我们需要设置PYTHONPATH和LD_LIBRARY_PATH,来让接收器正常工作:

$ echo “export PYTHONPATH=/usr/local/lib64/python2.7/site-packages” >> ~/.profile

$ echo “export LD_LIBRARY_PATH=/usr/local/lib64” >> ~/.profile

$ source ~/.profile

到这里,所有关于GNUradio的设置都已经完成了!

创建Bitcoin FIBRE:
安装相关软件:

$ sudo dnf install openssl-devel libevent-devel libdb4-devel libdb4-cxx-devel

安装 FIBRE 相关软件

现在,克隆FIBRE库:

$ git clone https://github.com/bitcoinfibre/bitcoinfibre然后去克隆的文件夹:

$ cd bitcoinfibre/开始创建:

$ ./autogen.sh

$ ./configure

现在创建FIBRE

$ make(此处可以添加 -jn来加速编译,其中n是cpu核心数。如果你是四核处理器,就输入命令 make -j4)


已完成创建
完成后,开始安装:

$ sudo make install

FIBRE安装好了

FIBRE已经安装好了!你现在可以开始同步,或者将已经同步好的节点复制过来。

对齐卫星盘
到此为止,你已经准备好前期工作,下面开始对齐卫星盘。
所需准备:
1. 一个开阔的空间2. 确定你高频头的LO频率,通常写在包装盒上。
3. 校准软件(可选)
确定要对齐的卫星:
Blockstream目前有5颗卫星,确定你所在地区被哪一颗所覆盖。可在Blockstram官网查询:
https://blockstream.com/satellite/#satellite_network-coverage
本文选择的是Galaxy 18卫星。
官网也有对齐工具,你可以输入你的地址或经纬度,它会告诉你如何调整天线的高度、方位和极性。
对齐工具:https://blockstream.com/satellite/#satellite-resources
确定摆放地点:
为了得到一个Galaxy 18大概的可视化方位,我用了SatellitePointer这个App。

确保在视线的30度之内没有建筑、树、或其他遮挡物。理想的视线是这样的:

视线越好,你接收的信号也就越好。
设置卫星盘高度:
当你已经确定好卫星盘的摆放地点,你可以开始设置方位和高度。

信号质量与高度角密切相关,所以把高度角调节得越准确越好。
当你觉得高度已经调好了,就可以开始设置高频头的方位了。
设置高频头方位
设置高频头极性有点难办。我用了SatellitePointer这个App来帮助设置。我把手机的顶边贴近高频头底部的平边(图中红线处),然后看App中的指示:
虽然高频头上也有角度器,但是我觉得App更方便。
使用Blockstream卫星接收器微调
在启动接收器之前,你需要确定卫星的频率,并将其输入rx_gui.py文件。之前的教程里已经说过如何查询频率了。我使用的Galaxy 18卫星的频率是12022.85 MHz。要计算输入到rx_gui.py的频率,需要用卫星频率减去你高频头的LO频率。本文使用的高频头LO频率为10750 MHz,因此最后的结果是1272.85 MHz。
需要将MHz转化为Hz,最后结果是1272850000 Hz。
现在你可以将频率和增益(设为40即可)写入文件中,然后运行。

python rx_gui.py –freq 1272850000 –gain 40

rx_gui.py文件在Blockstream库的satellite/grc文件夹中。

接收器图形界面:
当你运行rx_gui.py时,会弹出一个窗口。我们需要用到FLL In这个选项卡。

图形显示波动很大,刷新很快。要解决这个问题,你可以设置一下average参数,设为15即可。

缓慢地左右旋转卫星盘,观察FLL In的变化。我同样用了之前的App来帮助寻找方位。

如果你成功了,你会看到如下所示的图表。

现在你需要调整方位(左右)、高度(上下)和高频头的极性,来让信号更好。最后会得到如下所示的图表。

要确认你的信号是好的,你可以到Abs PMF Out选项卡,看一下有没有峰值。

你也可以到Costas Sym Out选项卡去看散点图。

最后,「终端」会显示:
#### Frame synchronization acquired ####
恭喜!你成功对齐了卫星盘!
运行FIBRE:
输入指令:

$ bitcoind -fecreaddevice=/tmp/async_rx

可以在debug.log文件中看到有没有成功接收区块,如果你看到如下的信息:

2017–09–17 20:41:39 UDP: Got full header and shorttxids from [::]:22017–09–17 20:41:42 UDP: Initialized block 0000000000000000008961eb7ce04e56c0d6dec5b6e92a3e4298b7614d762f83 with 0/867 mempool-provided chunks (or more)

那么就已经成功了!
现在,你可以断网,试着只通过卫星来接收区块。
最后,感谢Medium大神@notgrubles提供的详细教程。有需要的同学可以去Medium粉他:https://medium.com/@notgrubles

相关文章:

发表评论