Bitcoin SV 我是如何在中国加入比特币扩容测试网络的

wer5lcy · 2019年05月05日 · 最后由 aaron67 回复于 2019年05月09日 · 407 次阅读
本帖已被设为精华帖!

为什么参与

The existing Visa credit card network processes about 15 million Internet purchases per day worldwide. Bitcoin can already scale much larger than that with existing hardware for a fraction of the cost. It never really hits a scale ceiling. If you’re interested, I can go over the ways it would cope with extreme size.

——Satoshi Reply to Mike Hearn April 12, 2009

比特币不是法币,没有国家暴力机器的支持;它是一种货(商品)币(金钱),比特币的价值来自于它的使用价值,而这种使用价值来源于比特币是一份无可更改、永久可追溯的全球统一账本。如果要实现中本聪愿景,比特币网络的交易承载能力必须以超过摩尔定律的速度发展,在20年内迅速扩容到承载全球交易的水平。

此外,设计好的经济系统规定挖矿奖励的比特币每四年减半,要求币价不变且矿工不减少收入的情况下,网络必须有能力承载足够多的交易,使得减少的区块奖励全部转化为交易手续费。在不到360天后,区块奖励将减少6.25个币,按照1sat/byte的手续费水平,换算恰好为1GB=10Bitcoin,对应625MB的区块容量。若网络承载能力达不到此规模,则会出现以下结果:

  1. 矿工被迫减少收入——矿工是利润非常微薄的行业,平均净利润率仅维持在3%~5%,些许收入降低将导致大量矿工退场,停机而未销毁的SHA256算力,以及网络连通性的降低会降低比特币的安全性。
  2. 矿工不想减少收入——会有以下几种油腻的结果及其组合发生:
    1. “减半行情”,即矿工联手市场操纵者操纵价格使其翻倍。
    2. 手续费大幅提高,如增加至10sat/byte,则区块容量需62.5M。
    3. 确认速度大幅放缓,手续费较低的交易需要等待多个区块后才能被打包。

以上任一结果均导致比特币网络的可用性,即比特币账本的价值,遭到严重遏制。

360天之后,BTC不操纵价格,则手续费需增至625sat/byte,平均一笔1kB体积的交易手续费将超过200元人民币,交易无法为继;如进行市场操纵,7000亿市值且充满深度套牢盘的BTC可不是几个亿就能拉得动,BTC上共计60EHash算力将100%面临经济损失。由于BTC难度调整周期为14天,减半14日内的算力流失将大幅降低出块速度,网络拥堵加剧,导致其很难活过下一轮减半。

BCH-ABC阵营可能三个手段都用,但维持32MB的容量,靠个人用户逐渐填充区块,至多承载BTC+ETH转来的14TPS,约16M,故结果可能是价格翻倍+手续费1sat/byte,每笔交易手续费1毛,仅限补偿BCH现有2EHash算力部分的经济损失。

不要指望nChain操纵价格。SV阵营决定提高区块容量,宣布在7月提高至2GB,2020年2月将上限完全交给矿工。GB级区块,会有企业用户开始试水,乐观估计2GB用满,矿工收入将达到当前的2.14倍。SV链上目前有1EHash,该用量仅可满足来自外部的1.14EHash;因2018分岔前SV阵营共有>3.6EHash,SV矿工同样进入负现金流。

比特币是风险投资!在以上事实和推演的情况下,如果比特币网络承载能力不能在减半来临前达到GB级别,则整个比特币项目会全部失败。要保证所有SHA256d矿工现金流不受损失,需要交易手续费收入达到目前60倍,约合750G;配合币价拉10倍,也需要>70G;拉100倍,还要7G。减半之日一定会有人流血!

作为一个小黄豆规模的个人投资者,由于一手信息的匮乏,我决定切身投入对网络承载能力进行具体的观察,以确保正确判断局势。希望SHA256d矿工、开发者和志同道合的朋友能够一起加入。

什么是比特币扩容测试网络

参考 https://bitcoinscaling.io 或联系 [email protected]

比特币扩容测试网络 (Bitcoin Scaling Test Network, STN) 是一个专门用于测试更大区块的比特币SV测试网络,是既比特币主网(mainnet)、公共测试网络(testnet)、本地测试网络(regtest)之后的第四个持续性网络。

它已经包括在最新版的Bitcoin SV节点软件中,可以在bitcoin.conf中使用stn=1替换原有公共测试网络的testnet=1或本地测试网络regtest=1进入。

扩容测试网络的实施是为了减少在公共测试网络(testnet)中进行扩容测试对原有公共测试网络用户的冲击,并使得testnet网络成为在比特币SV之上搭建之应用程序的测试网络,同时保证这些应用的测试无需大幅升级硬件。

比特币作为BCH和BSV已经在2018年9月和11月分别进行了两轮主网压力测试,测试结果可以到 https://stresstestbitcoin.cash/ 查阅。在2018年11月,我配置的BitcoinUnlimited个人节点的TPS峰值可达800,略小于交易发送峰值1000TPS,此时i5 6300HQ 4核2.7G达到90%占用,节点软件内存使用约8GB(启用并行签名验证),网络连接共40个,有25个输出和15个输入,消耗上行带宽50Mbit/s、下行带宽30Mbit/s左右。BU特有的GetMiningTemplate输出过程(根据TXID生成MerkleTree、BlockHeader,减少向矿机控制器的数据传输量)需要超过10秒。按此规模,连续64~128MB区块、全部由小交易(不带有op_return)组成时,一般配置的4核、8G内存的云服务器达到承载力峰值。

STN测试网络建立后,已进行多轮更高规模的压力测试,包括:连续64MB、全部小交易超过24h;连续128MB、全部小交易超过24h;连续128M、变规模数据储存交易(带有不同尺寸op_return data),持续进行。

STN测试网络的节点还很少,查阅 https://stn.whatsonchain.com/peers 可知,目前共有约10个网络节点和35个Satoshi Shotgun节点;以我的测试结果,这些节点中我使用addnode添加并可以连上、同步区块链的只有四个,且暂时没有来自中国大陆的IP地址。

在中国加入STN的困难有哪些

综上,比特币的进一步扩容测试网络对参与人的计算机配置、网络连接性能都提出了更高的要求。若按线性比例估算,则当区块尺寸达到512MB且均为小交易时,需要16核心的计算机、32G内存以上,并超过200Mbit/s的网络带宽,当区块尺寸进一步增加至2GB,需要48核心、128G内存和1Gbit/s的带宽。计算机性能要求超越主流家用PC,需要使用多路服务器;网络带宽超越家用宽带上限(除了上海)。

然而,由于中国公有云、骨干网络和出境网络的发展仍处于初级阶段,在中国尝试运营STN节点会遇到一些欧美个体矿工或测试者不会遇到的问题:

  • 公有云租赁成本奇高。以腾讯云、包1年使用为例,32线程、64G内存弹性服务器的费用为61440元,数据盘包年价格5.76元/GB,对应2T磁盘、裁剪区块链,需要11520元。仅1年的硬件成本便足以买下更多的实体硬件,并包含IDC机房托管费用——故比特币网络发展后,矿工一定自建机房、放弃公有云。
  • 公有云上的带宽奇贵。仍以腾讯云为例,由于比特币网络大多数网络数据来源于境外,无法使用CDN加速等廉价流量,使用公共带宽按量计费0.8元/GB,网络节点稍多的话2G区块持续运行一天的网费就超过1000元。

当主网具有如此大规模的时候,手续费带来的经济激励将使运营成本变成九牛一毛;而作为没有法币价格的测试网络,则更需要精简开支,如使用廉价旧硬件组建服务器,并利用家用网络,此时会遇到更多的问题。

  • 带宽上限不足。至2019年1月,中国大陆地区仅有上海市率先完成千兆家用宽带的普及,年费约3000元,其他城市普及产品最大带宽仅100~200Mbit/s,可能会提高孤块率。
  • 上下行带宽不对等。中国家用宽带,存在严重的上下行带宽不对等现状,2019年1月1日起生效的《公众固定宽带接入业务上下行速率配置要求》YD/T 3328-2018规定了上行速率只要达到30MBit/s就一概达标。现实中,上海电信千兆宽带的实际接入速率为1000M下行100M上行,每月超过1T流量后降为300M下行、30M上行;其他城市上行带宽一般不超过30Mbit/s。
  • 骨干网出口带宽不足。上海电信千兆宽带,晚高峰时连接未经链路优化的境外IP地址,下行带宽仅有200kb左右;工作时间勉强可达20Mbps,仅在01:00~07:00左右可以达到接入速率。中国联通和中国移动的家用宽带情况稍微轻一点,但也远远达不到签约接入速率。
  • 丢包与延迟。由于以上原因组合,虽然比特币网络协议不属于国家防火墙的过滤范畴,当出口带宽拥堵时,家用网络的出口丢包率和延迟会显著增加。
  • 动态IP甚至无公网IP。IPv4地址数量受限,导致家用宽带和较低等级的企业专线均不附赠固定IP地址,甚至有些网络处于NAT的内网IP段下。
  • 初始区块链下载超时。比特币节点软件首次启动时会进行区块链的下载,即IBD过程Initial Block Download (参阅CoreCoin Wiki),此过程首先同步区块头,后按每个节点16个块的方式请求区块,此过程对每个节点提出20分钟/块的超时请求。由于它仅向单一节点请求某一批区块,当此节点连接速度不佳,且网络规模过小无其他节点可以用时,节点软件会进入请求-超时-断开-重连-请求同一批区块-超时的死循环。我认为节点软件的IBD过程逻辑有必要进行优化,但这不在本文的主要讨论范围。

作为个人阶段最后的折腾,我找出了一条能够较低成本迅速跟进STN的硬件和网络配置方法,下面是教程。

如何建立你的节点

本方案简单地分为两步。

  1. 在境外设置虚拟私人服务器,作为高速“路由”出口。选择美国/香港/新加坡的CN2 GIA节点均可。
  2. 将节点软件建立在境内的高配置物理服务器上。通过SSH远程转发请求。

1.在境外设置虚拟私人服务器(Virtual Private Server)

这一步的目的是建立一个可以全天满速率连接的境外“路由”,作为BSV节点软件的对外出口。

参考 https://wzfou.com/cn2-gia-vps/https://www.bwgyhw.cn/bandwagonhost-all-plans/

中国电信有 4 个 IPT 产品,包括CHINANET 163 骨干网、美洲电信 AS36678、电信 CN2 GT和电信 CN2 GIA。后三者的速度和延迟要远好于家用宽带连接境外节点使用的Chinanet163网络。

CN2 英文Chinatelecom Next Carrier Network,中文为中国电信下一代承载网,缩写为CNCN或者CN2。

CN2 GT GT即Global Transit,省级出口为202.97节点,在跨境时才进入CN2骨干网,出国/国际跨境节点为59.43开头。线路总体情况良好,负载较中等,因此可以保证良好的速度和延迟。省级/出国节点为202.97开头,国际骨干节点有59.43开头的CN2节点。在CN2等级低,好于163骨干网。

CN2 GIA GIA即Global Internet Access,等级最高,在速度和延迟上有极好的体验。在部署有CN2节点的省份就近接入该省的省级CN2节点,在暂未部署CN2节点的省份则就近接入部署有CN2节点的省份的CN2节点。

比较便宜的CN2 GIA线路的虚拟私人服务器运营商主要是Bandwagon Host,也有Tripod cloud等等,我们这里就选用BWH设在美国西海岸的机房,套餐年费是120美金,附赠6.25美金的优惠券,名气大、付费可以用支付宝微信,比较方便。每月1TB流量暂时就够了,等到2GB区块的需要更多流量的时候可以线上无缝升级。

套餐名 CPU 内存 SSD 流量 带宽 年费 购买链接
CN2 GIA ECOMMERCE 2核 1 GB 20 GB 1000 GB 2.5 Gbps $119.99 立即购买
CN2 GIA ECOMMERCE 3核 2 GB 40 GB 2000 GB 2.5 Gbps $229.99 立即购买

结算的时候输入优惠码 BWH26FXH3HIQ 获得6.25%的折扣。

如果完全不懂英文,注册和结算的过程看这里,https://www.bwgyhw.cn/bandwagonhost-deploy-new/ (这些超链接中都含有推广码,移除推广码并不能获得额外的优惠…)

结算之后,服务会将一系列信息发送到你的邮箱,虚拟主机默认配置为CentOS7操作系统并开机。例如,邮件里写明计算机名special-byte-1.localdomainIP地址173.242.123.123随机生成的Root密钥JNoP1SJLrTLFSSH端口29123。记录下这几个信息,待会用;远程主机不需要做任何额外处理。

2.在中国境内搭建你的服务器

接下来,我们搭建在国内的高配置服务器,用以运行节点软件和外围服务。

我购买了一台2013年出厂的Dell R720XD机架式服务器,规格为2U,有14个3.5寸硬盘槽。整机各个部件均为退役产品,以获得最低的搭建成本。预计本机可以坚持到2G区块、塞满小交易连续运行。具体的配置如下表,在这里买的→ https://pudongfuwuqi.taobao.com

组件 规格 价格
机箱和主板 Dell R720XD 1499
CPU Intel E5-2660 v2,两颗,共20核心40线程,2.6G 720*2
内存 海力士,DDR3 1600 ECC REG,单条16G,共10条 150*10
SSD Intel S3500 单块600G,共1块(SSD推荐买新的!)RAID0装系统 600
HDD HGST HUS724040ALS640,3.5寸6Gb SAS 7200转,单块4T,共6块,RAID6阵列防止两块同时故障 400*6
附件 Dell H710P 阵列卡、双80PLUS铂金电源、配齐前面板12个硬盘托架 -
合计 8525

即使算上托管费用,该配置也仅为租腾讯云/阿里云/亚马逊在国内主机的三个月租金。

宿主系统任意,我选用了Windows Server 2016 Datacenter(带桌面体验),管理起来比较方便,虚拟机使用Hyper-V生成,安装Ubuntu 18.04 LTS Server版。

用于运行STN的虚拟机配置中,硬盘不要小于2T,最大占用主机CPU 90%,内存我暂时配置了48GB,用完再说。注意,Hyper-V提供“内存缓冲区”选项,请保留100%以上,以免bitcoind验证大区块时内存占用突然升高、宿主系统内存分配不及时而被结束进程。

3.安装并配置节点软件

具体过程参考 https://bitcoinscaling.io/getting-started

在运行STN的虚拟机中依次执行以下命令

wget http://download.bitcoinsv.io/bitcoinsv/0.1.1/bitcoin-sv-0.1.1-x86_64-linux-gnu.tar.gz
tar -xf bitcoin-sv-0.1.1-x86_64-linux-gnu.tar.gz
cd
mkdir .bitcoin  
touch .bitcoin/bitcoin.conf
echo "stn=1" >> .bitcoin/bitcoin.conf

我们采用SSH方案连接远程主机,因此你还需要在虚拟机上进行以下设置。让SV节点软件使用本地代理。7070端口是是本地未被占用的端口,可以自己选择其他端口,最好大于1000。

echo "proxy=127.0.0.1:7070" >> .bitcoin/bitcoin.conf

如果需要进一步编辑bitcoin.conf配置文件,如调整DataCarrierSize、添加其他节点IP等等,可以使用Ubuntu内置的文本编辑软件nano完成。

nano .bitcoin/bitcoin.conf

4.连接和启动

接下来我们把本地STN虚拟机和远端的VPS连起来。参考https://www.igfw.net/archives/7174

在本地机器的终端执行命令:

ssh -qTfnN -D 7070 [email protected] -p 29123

然后输入密码JNoP1SJLrTLF实现连接,注意Ubuntu系统中输入密码的过程屏幕上没有字符显示***。7070端口为第三步中选用的端口,最后一个端口号29123是远程主机的SSH端口。

这些参数的意思是:

-q :- be very quite, we are acting only as a tunnel. -T :- Do not allocate a pseudo tty, we are only acting a tunnel. -f :- move the ssh process to background, as we don’t want to interact with this ssh session directly. -N :- Do not execute remote command. -n :- redirect standard input to /dev/null. -p : Select a specified port.

这样就连接好了,接下来启动Bitcoin SV节点软件,让它开始同步区块链。

./bitcoin-sv-0.1.1/bin/bitcoind -daemon

可以使用bitcoin-cli查看节点的运行情况,其他操作命令,可参考Bitcoin Core软件的Wiki或执行命令bitcoin-cli help获取。

./bitcoin-sv-0.1.1/bin/bitcoin-cli getinfo

同步完成的节点查询结果如下:

退出Bitcoin SV节点软件的命令为:

./bitcoin-sv-0.1.1/bin/bitcoin-cli stop

如果STN所在的系统关机并重新启动,需从本步骤ssh命令开始重新执行。

还有什么可以做

在上述事情做完之后,一个节点已经开始运行了,但是还有这些事情可以做。

  • 加固服务器安全性(设置用户组和访问权限、更改默认密码)
  • 设置服务器宿主系统、虚拟机的远程连接(Remote Desktop/SSH)
  • 设置各项自动启动
  • 设置各项自动报警
  • 使用CPU在STN上挖矿(https://bitcoinscaling.io/stn-mining,获得测试币)
  • 运行外围服务,如ElectrumX、Bitdb、Planaria等(Planaria设置方法参考https://zhuanlan.zhihu.com/p/64697171

这些步骤非本人专精,本文抛砖引玉,期待他人斧正。

题外话

希望更多参与者快一点加入,哪怕扩容地慢了,比特币项目也即将失败。

区块链技术将彻底沦为骗子赌场的游乐园,然后全球政府介入,连技术带炒作统统消灭。

那样,人类再次错失建立长久稳定的诚实货币的契机。

中本聪已经气的从棺材板里跳出来了!

(wer5lcy,2019年5月5日,上海嘉定)

共收到 4 条回复
aaron67 将本帖设为了精华贴 05月05日 20:06

搞错了一个小数点,赶紧改过来……

wer5lcy 回复

自带英文翻译可以说是非常强势了

@wer5lcy 我帮你把图加上了 上传图片暂时好像遇到点问题 FYI

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册