题图为友人所书“对韭当割”,乃有感于币圈现状所作。不过,本文并非展示骂街艺术,而是一篇技术文章,请对诈骗以外有兴趣的朋友们耐心读完。
作为一个焦虑而躁动的中国人,您对ICO这个词儿一定不陌生。在万物复苏、野猫叫春的季节里,我抱着有枣没枣打三杆子的科学态度,了解了一下这个圈子,结果险些把眼睛看肿了:
如此香艳画风,两位数以上智商的朋友们都能明辨:这些人要是跟技术有一毛钱关系,那海带就得算海鲜。当然,跟技术无关,不代表不能浑水摸鱼挣大钱。实际上,去年我身边几个朋友,都因较早踏上了ICO这艘船而暴富,有人一年就挣出了一斤房本儿。这也印证了我们在《年入几百万那些人,真的是靠运气么?》一文中的观点:不要拒绝旁氏骗局,但是一定要早上船。倘若像今年这样,连小区足疗师都在大谈参与了一个波兰总理站台的区块链项目,那就离倒霉不远了。
关于怎么赚钱,请大家关注此领域的一些传销专家,比如说那谁和那谁。作为一个严肃的负媒体,我们还是要谈谈技术的!不管有多少牛鬼蛇神,我始终不曾怀疑,以比特币为代表的区块链技术,在探索改造生产关系的技术方面取得了重大进展。
什么是改造生产关系的技术呢?有争议的例子,是黑市交易:目前比特币和门罗币支持了大部分黑市交易,而黑市交易占世界总交易的一成以上,你还能说比特币缺乏经济基础么?正面的例子,是打车:初,人们对政府垄断的出租市场不满,欢呼于网约车的崛起。可是滴滴在横扫市场以后,自己也变成了恶龙。如果有一个去中心化的管理平台,像比特币那样价格公开透明,可以追溯,并且无人能轻易篡改规则,这才是共享经济的终极理想。
目前区块链的技术水准还处在刀耕火种阶段,面对人类大量的畅想应用是有心无力的!
向未来看,区块链的革命性场景很多;在当下看,区块链落地的应用很少。这并不矛盾,因为,就拿支付来说,为什么在日常支付领域,没有看到人们用比特币的迹象呢?有人说是因为监管,我觉得不然——至少日本政府就曾明确支持用比特币支付的。用不起来的原因,大家看下面这张图就清楚了:
这是前两个月,比特币和以太坊两种主要加密货币的单次交易费走势。高峰时一次交易就要好几美金!试问,您愿意买一杯星巴克付十块钱交易费么?显然,这是虚拟货币用于日常支付的根本障碍——就是G20首脑都提倡用比特币逛菜市场,也不会有人用。
由于交易费用是动态市场定价的,高成本的本质原因是系统支持的每秒交易速度(Transaction per Second, TPS)太低。
目前比特币的TPS是7,以太坊也只有15。因此,在大量交易产生时,会迅速抬高手续费。拿上图中以太坊连续两周的交易费爆棚来说,就是“Fomo3D”这个热点游戏上线造成的,而以太坊上所有DAPP的总日活,目前才不过几万。不过,这样的速度和手续费,对于黑市的大宗交易来说是完全可行的。
交易速度和费用的问题不解决,V神的智能合约体系只能是春秋大梦,以太坊也不过是一个精致的玩具。
理想很美好,现实很骨感。在这样的基础设施下,大多数ICO项目在一通乱吹之后,除了官网什么也做不了。当然,大多数发币者本来就知道自己什么也做不了,不过就是为了敛一把财,把这些定性为诈骗,一点都不过分。您瞧瞧下面的割韭菜曲线,多么销魂!
其实,要判断一次ICO是不是诈骗,或者一个区块链项目是否有价值,有两个标准可以参考:
1. 该项目要求的TPS和交易费用,是否在目前可行的范围内?
2. 该项目是否真的进行了去中心化生产关系改造?
看第1点,目前几乎所有的游戏、广告、去中心化交易所相关的ICO,都是空气币;看第2点,大多数巨头主导的区块链项目都是扯淡,而国内的几个主要公链,如果您了解原来它们的超级节点都是项目方自行维护的话,也就知道这些项目的成色如何了。
那么,比特币为什么TPS这么低呢?这要从区块链解决的问题说起。区块链的产品目标,就是要建立一个去中心化的账本。所谓账本,就是一组陆续发生的交易记录,如下面的例子:
A---(10元)-->B; A---(5元)-->C; B---(10元)-->D
注意,帐本中的某些记录,如第一条和最后一条,是存在序关系的。前面一个没确认的话,后面的也进行不了。如果采用中心式服务,那么序的组织非常简单;可是,要提供一个去中心化解决方案,问题就复杂了。
显然,去中心化记账的关键,就是要由全网节点共同完成这样一个序的组织。由于每个节点收到的交易顺序可能相去甚远,大家伙鸡一嘴鸭一嘴地验证和排序,效率会低得令人发指。最好是有一个令牌,谁抢到了就整理一批交易,把结果提交到账本上(也就是以P2P的方式通知其他所有人),再由下一个抢到令牌的人继续整理下一批。
上面这个过程,涵盖了区块链的两个核心概念:
每次整理的一批交易,就称为一个区块。
1.区块越大,效率越高,不过区块太大了,传输失败比率就大大上升,所以区块的大小要在一个合理的范围内;
抢令牌的规则,就是共识机制。
2.目前流行的共识机制,有工作证明(Proof of Work,POW)和权益证明(Proof of Stake,POS)等两种。前者是谁干的活多,抢到令牌的机会就大;后者是谁的钱多,抢到令牌的机会就大。
分叉的不同区块,总会有一个被最终共识后的账本抛弃,这称为“孤块”。
在POW共识机制中,大家都努力解一道数学题,谁解出来就抢到了打包的令牌,这个过程就是上图中的“挖矿”。当然,会有一定的概率,不同节点在较短时间差内都解出了此题,这样他们都会把自己的打包结果提交网络,这就造成了分叉。
下面我们就来计算一下,以POW为共识算法的去中心化账本,交易速度可以达到多高。此系统的第一个约束,是不能有太多的孤块:因为孤块是无效的,这浪费了算力,影响了矿工收入,最终会极大影响整个生态的稳定性。我们可以给定一个较宽松的上限,比如说,如果要求孤块率S不超过20%,如何估算TPS呢?
如果用D表示区块传输延迟,T表示挖矿时间,那么孤块率可以用D / T来计算。经验表明,在区块不太大的情况下,延迟D与区块大小是近似线性关系,大约每KB是8ms(比特币区块大小1.5MB,延迟是12s),因此,令P表示TPS,假设每笔交易的大小是0.5KB,则有D = T * P * 4ms。于是,我们有下面的约束:
T * P * 4ms / T <= 20% (1)
在孤块率的要求下,POW的TPS不能超过50!
很容易得到,
悲催了,对孤块率的要求,使POW共识的TPS只能到几十!那么是否还有别的约束呢?很容易想到的是网络带宽的限制。假设节点网络带宽是10Mb,此约束可以表达为:
P * 0.5KB * (1 + D / T) <= 10Mb (2)
被带宽约束限制的TPS,大约是675,远大于50!
可以验算,(当然,这个解对应的区块过大,已经不准确了。)
由于有孤块率的限制,带宽是远没有用足的,另外,除了抢令牌以外的交易验证算力,也远非饱和。
也就是说,算力巨大,效率低下,这正是POW共识算法饱受诟病的主要原因。于是,社区开始探索牺牲一定的去中心化和安全性,换来更高效率的方案,比如DPOS、PBFT等等。目前,POS的成熟产品还没有见到,DPOS则离去中心化的主题甚远,我们还是要多问一句,POW的速度真的无法提高了么?
把交易分到多条链上,
出路么,自然是有的!大家一致的思路,就是例如以太坊正在进行的Sharding项目。假设有C条链并行打包交易,那么约束(1)左右都将乘以C,单链的TPS约束不变;而约束(2)是左边乘以C,相当于变紧了,不过仍然不会影响到整体解。只要C不是太大,整体TPS就变成原来的C倍。
让每个节点永远只保留部分链,这称为scalable。
还有一个研究热点,就是要找到一种结构,如过每个节点只需保留C / N条链的话,约束(2)就又被松弛了下来,在这样的情况下,我们用P' = C * P表示系统总TPS,那么上文的两个约束成为:
T * P' * 4ms / T <= C * 20%
P' * 0.5KB * (1 + D / T) <= N * 10Mb
这样一来,总的TPS是可以被大大提升的!
不过,这两项技术都谈何容易!分链,就需要处理跨链交易,还要兼容智能合约,目前以太坊的Sharding项目基本上一筹莫展;Scalable的方案,更是需要找到巧妙的分链方法,目前业界也是束手无策。
很多复杂的问题,都有个简单的答案。偶然的机会,最近我结识了一位瑞士的大神W,这家伙读了两个博士,分别师从于数论和分布式计算泰斗,最牛的是,两个博士他都主动退学了!!博士期间,他发明了一项“线性时间复杂度拜占庭算法”,被以太坊创始人V神约去当面交流。从那次交流,他了解到以太坊正在进行的Sharding项目,大为感兴趣,于是开始研究此问题。
将POW的TPS提升至过万,交易费用降低至不到1美分,而这些参数都是可以与的VISA中心化支付系统相比较的。
就在两个多月前,W发现了scalable和跨链交易的巧妙方案,我看了文章,确实令人拍案叫绝。从理论分析,和已经实现的demo来看,这一新方法在不使用任何侧链和半中心化改造的前提下(后续可以叠加使用这些技术,进一步提高性能),可以我相信,这应该是区块链远离诈骗,打造有价值应用的一个契机。需要说明,W是一个醉心于解决问题的技术专家,并非币圈人士,也并无ICO计划,有这方面问题的就不必在后台留言了。
而我,也像沼泽中挣扎的人抓住了岸边的树枝,开始向他学习此领域除了诈骗和传销以外的技术,上面的内容,算是我的一点学习心得。那位说,W究竟用了什么巧妙方法,解决了POW的交易速度和费用难题呢?这篇文章再写下去就太长了,咱们还是下回分解吧!