比特币网络是一群比赛做题的同学

比特币网络是一群比赛做题的同学你和全年级同学坐在一起比赛做奥数题,校长中本聪规定:最先做出来的同学有奖,但去中心化的学校没有老师,你做出来后只要让邻座同学验证,验证对了邻座再去告诉其他同学。

聪明的你秒出答案,并且告诉前后左右的同学,他们验证后再去一传十、十传百,十分钟后全年级都向你竖大拇指,认你这个学霸。

中本校长看到这阵势,赶紧抛给你12.5个币作为奖励,并把你的精彩答案给全年级人手发一份,接下来所有同学必须在你这道题的基础上再解下一题,否则就拿不到奖励。

以上就是比特币的挖矿奖励模型。为解题付出的辛苦相当于工作量证明,全年级坐在一起竞赛的风景照相当于比特币网络。

一、什么是比特币网络?

比特币网络(Bitcoin Network)指交易信息能广播到的所有节点。

节点分两类:普通钱包和矿工,普通钱包只报告或验证交易,属于普通用户。而矿工则负责记账和做工作量证明,是专业的账本维护者。

如果你是矿工,做牛做马做出的难题可不能藏着掖着,必须第一时间向全网广播,否则奖金就属于别人。

网络中其他矿工收到你的广播后,只验证三项内容:

1、所有交易输入是否都≥交易输出?

2、所有交易是否都从未发生?

3、用你的随机数哈希区块,哈希值前缀是否有足够多的“0”?

如果全部OK,其他节点才会认你的账。认账不是光靠嘴说,而是把之后的账全记在你区块之后,于是这些区块就像珍珠一样越接越长,形成珍珠项链(区块链)。矿工必须跟着最长的链记账,否则没有奖励。

中本聪在白皮书里说:

New transaction broadcasts do not necessarily need to reach all nodes. As long as they reach many nodes, they will get into a block before long. Block broadcasts are also tolerant of dropped messages.

新交易要广播,无需抵达全部的节点,只要抵达足够多的节点即可,他们将很快被整合进一个区块中。同时,区块广播对被丢弃的信息有容错能力。

中本聪都帮我们设计好了:如果一个节点没有收到某特定区块,该节点将会发现自己缺失了某个区块,可以提出请求,自行下载该区块。

这就是比特币的网络广播机制,看起来平静安宁,但只要把镜头往前一推,就能看到波涛汹涌。

二、典型的攻击方式

你虽然是个学霸,但如果被一帮爱捣乱的学渣环绕,即使你很快做出了题目,校长也不会给你奖励,因为学渣不会帮你传播答案,他们是恶意节点,把你孤立于网络之外。

如果你是矿工,一旦被恶意节点包围,即使算出了工作量证明也广播不出去,那你就白白损耗了CPU资源和电力,没有奖励,入不敷出。

你可能以为互联网条条大路通罗马,总能杀出一条血路。但你可能需要装备一个概念:路由攻击(Routing Attacks)。

什么是路由攻击?

“路由”一词是个舶来品,原文是 route [ ru: t ]。中文里没有对应的概念,所以很难翻译,英英词典解释:

[名词] a way or course taken in getting from a starting point to a destination.

从起点到终点所采取的方式或路线。

[动词] send or direct along a specified course.

发送或指向指定的路线。

如果译成“路线”明显欠妥,因为漏了“方向”之义,后来译成“路由”,乍听奇怪,实则经典。

路:线路、道路,寓意连接和传递;

由:来由、去向,代表方向和选择;

短短两个字,不单有道路而且有方向,既能当名词也能作动词。其实,直到路由器普及后,我们才对“路由”二字习以为常,然后忘记了它原本的含义。

解释完“路由”,我们来看“路由攻击”。

任何区块信息从起点通往目标节点都在走迷宫,迷宫里的每个节点都是一个指示牌。路由攻击就是故意指错路,让数据包绕晕在迷宫里,最终消失在网络中。

比特币网络是一群比赛做题的同学

比如,我在上海带个包裹去北京,本来应该先到南京再折往北京,但当我走到南京时,有人对运输系统进行攻击。攻击者在南京树块牌子告诉我:北京应该向南朝深圳方向走,到了深圳那人又插了一块告示牌告诉我:去北京应该先到上海。

于是我就只能在上海、南京和深圳之间转圈子,永远到不了北京。而北京永远收不到上海的包裹,它被分割攻击了。

分割攻击是钻边界网关协议(BGP:Border Gateway Protocol)的漏洞——IP地址清单不加密、可随便改。这就好比从上海发来的包裹都有相同的IP地址前缀,攻击者根据前缀把这些包裹都引向深圳,让他们都去不了北京,所以又称BGP劫持。

更要命是延迟攻击:可以不留痕迹地拦截比特币节点的网络流量,延迟区块更新20分钟。比特币系统一般每10分钟就能出一个区块,延迟20分钟相当于阉割了矿工通过挖矿获利的能力;而普通钱包节点将无法及时更新区块,可能面临双重支付风险。

以上两种攻击导致大量比特币的交易流量被劫持,事实上每月都会发生数千次路由攻击,影响30,000个IP前缀。

可比特币是一个去中心化网络,难道不是应该像流水一样刀切不断吗?这么脆弱的原因只有一个:节点分布不均匀。

三、去中心化系统的中心化之痛

任何用户都能成为比特币网络中的节点,但这些节点并不像芝麻一样均匀地撒在地球表面,而是有的地方十万平方公里之内不见一粒黑点,而有的地方芝麻却堆成了山。

13家互联网服务提供商(占比不足3‰)托管着整个比特币网络30%的节点(下图左,互联网服务提供商简称ISP,Internet Service Provider,全球有5000家,中国有电信、移动和联通)。打蛇还要打七寸,打比特币只要攻击三大ISP就能对这个9岁孩子造成伤害——这是全球最大去中心化网络的中心化之痛,但也是成长的烦恼,人家快到青春期了,马上就发育给你看。

结语

BGP劫持是攻击比特币网络的基本方式,它会在形成一个黑洞,所有信息都流不进去,降低网络效率。

黑洞一多就会形成茧房,每个茧房里大家都埋头挖着自己的币,直到有一天世界通透,那些只顾埋头挖币却忘记抬头看路的人,发现外面的世界居然有一条更长的链,而原本的挖矿奖励瞬间消失,他们将是怎样的心情?

这也许就是我们的真实世界——不断被路由攻击,但却毫不自知。


分享到:


相關文章: