现在区块链世界还是一样的火爆。 很多中小投资人都还未进场,大家都在跃跃欲试中。
其中有多浮躁.....
所以写点技术文章泼泼水。
什么是公链? 我的定义是公链是一套分布式存储系统。比特币、以太坊等等数字货币背后都有一套公链来作为账本,去记录它们自己货币的使用情况。 这个公链作为分布式存储系统一般要保证以下目标:
数据一旦记录,任何人不可修改 为了实现这个最主要目标,公链一般使用分布式系统,将数据存储于 N 个硬件之上,这样保证了硬件不属于某一个或某几个人。从而避免硬件持有人直接修改原始数据的问题。
数据记录要正确,要可查找。
数据存储要稳定,不能丢失。
公链的开发实际上就是一个分布式存储文件系统的开发,或者说是分布式数据库的开发。 老的几个公链,比特币、以太坊都有性能过低的问题。如果按照一个现有的存储系统来评判,那它们的设计都过于笨拙,所以性能瓶颈很大。 现在公布出的新公链的开发,都是以提高性能为前提。 甚至,对于数据的存储也不再仅限于账本式的数据,而是面向所有的普通文件数据。
这里问题就来了,开发一个分布式存储系统简单吗?
答案肯定是:不简单。
我们现在可以看到的文件系统有: https://zh.wikipedia.org/wiki/%E6%96%87%E4%BB%B6%E7%B3%BB%E7%BB%9F%E5%88%97%E8%A1%A8
数据库系统有: https://en.wikipedia.org/wiki/Database
这些都是公链作为存储系统可以参考的代表。 从上面的链接里,我们可以看到一个长长的列表,这个列表里的项目大都开始 10-30 年以上的时间了。
再说公链:比特币始于 2008 年,以太坊始于 2013 年,可以预见,再开发一个新的公链并不容易。 一个公链就相当于一套底层平台。所以,最后能存活下来的公链应该不超过 3 个。
开发公链的人需要什么?
比特币以及其他的数字货币由于无法抑制价格的波动,毫无疑问的变成了一种投资品。
对比真实的普通货币: 普通货币在现实世界是有国家在背后做支撑,可以调节货币的兑换价格,总体保持货币价格的稳定。但对于比特币这些数字货币来说,它没有这个机制,所以无法保障它的价格平稳,导致了它无法作为货币去使用。 还记得那个当年花了 10000 个比特币买了块披萨的朋友吗?如果是真的,那他应不应该非常后悔呢? 同样,现实世界中的货币,例如委内瑞拉的玻利瓦尔大幅贬值,也失去了作为货币的意义。
当然,如果有很大的比特币持有者做庄,并且他要维持价格稳定,可能可以一定程度改变这一现象。
比特币在设计的时候特别加了生成的限制机制,就是每 10 分钟生成 N 个比特币,并且随着时间的推移,这个 N 值会越来越小。这虽然不会让比特币由于过量发行而贬值,但却造成了比特币的数量不足,所以价格上涨也成为一种必然趋势。
比特币设计的时候,还没有考虑货币交易所。但后来,货币交易所的出现将比特币等数字货币完全带入了投资品的行列。
区块链也就是公链,正常是个分布式系统。从技术角度讲,其性能如果与现有数据库系统相比较,它没有太多优势,甚至可以说是没有优势!
互联网发展了 30 年,整体性能提高了很多倍,现在支撑着至少 40 亿用户的使用。这中间有硬件的原因,但更多的是架构的进化。我们基本将性能方面的架构设计提高到了很高的等级。
区块链在最开始设计的时候,采用的是最没有效率的架构:把所有的数据都平分到所有的客户端,也就是最分布式的结构。这个分布式的架构接近最终极分布式的形态:没有明显的中间节点,所有的节点都是平等的。这样的结构作为存储系统来说,可以预见:效率最低! 再往后,新的公链设计为了提高效率,肯定要将数据集中化存储。但这样的设计,也超不过现有的数据库系统或者文件系统。只能说是向现有的架构设计靠齐而已。
区块链的作为分布式系统的优势在于利用最多的硬件,就是将剩余的硬件资源利用起来。但这样的设计会有网络传输方面的限制。 如果为了追求更高的 TPS,新的公链一定会在一定程度上集中数据到几个大的节点上。回归到现有的普通数据库的设计架构上来。
再科普一下: 分布式系统有优势,在于可以有很大的容量。例如我们的互联网架构,互联网在设计之初,就是一个分布式系统。如 DNS 系统,可以说是全球使用的一套分布式数据库,它容纳了 40 亿人的域名查询。但它存储数据的效率并不高,一般都需要花费 10 分钟以上的时间,才能让存储数据生效。
我们设计架构,一般要考虑三要素:运算,存储,网络。 其实,我们都是从中心化设计开始的,然后慢慢的向分布式架构转移,转移到一定程度,在中心化与分布式之间取得一个平衡点,就是最终的架构。
中心化 ——>> 分布式
中心化设计的优势是:简单,劣势是:性能有上限。 分布式设计的优势是:性能容易扩展,劣势是:设计复杂。 最开始采用中心化设计一般是为了能尽快上线这个应用。 后期如果遇到性能瓶颈,分布式设计一般就要被引入。
整个 Internat 本身可以说就是一个巨大的分布式与中心化相结合的架构。
我们有 N 多数据中心,N 多骨干网络,N 多的客户端。
每个数据中心就相当于一个中心节点,每当我们在某个中心遇到性能的问题时,我们首先会想到的是能否将该问题切割,切割成平均分的小块。 让每个小块独立运行,这就是分布。将原先集中的东西分布下去,从而可以通过添加更多的硬件来获得性能的提升。 举例来说:1 个服务器有多强,也不可能应对 1 千万的用户,那么我们将这 1 个服务器上的应用想办法切割成分布式,这样我们就可以使用 N 个服务器来服务这 1 千万用户。 很简单的道理。 网络也是如此,你的带宽有多高也不可能应对更高的流量需求,那么我们将服务分布式,让多个数据中心来应对,我们就可以解决这个问题。
总之,整个互联网的发展就是这样,集中,然后分布,再集中,再分布。 现在,互联网的架构应对这几十亿的网络用户没有问题,这个是事实证明了的。 所以,对于主流公司来讲,没有技术需求再去开发一个更加分布式的架构,例如区块链系统。 这样做的意义是什么呢?
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.