基本概念
从字面意思理解,去中心化应用即没有中心应用。起初的解释是,任何人都可以作为服务端提供服务,也可以作为客户端扮演用户,数据都是共享的,业务处理逻辑都是统一的。不过这些定义依旧非常模糊,导致去中心化的概念逐步开始演变
我所理解的去中心化应用是类似于比特币一样的系统。这样的系统有一个典型的特征就是,当你把刀架在创始人中本聪脖子上威胁他关闭比特币网络的时候,中本聪只会一脸无奈地告诉你他也做不到。因为想要关闭比特币网络就得关闭全球所有运行比特币节点的机器,运行这些节点机器的群众与中本聪无恩无仇,凭什么要损失自己的利益去拯救一个素未谋面的人呢,即便绝大多数人真的出于人道主义都关闭了机器,那么只要全球还有一台机器没有关闭,那么整个比特币网络依旧能正常运行。这样的系统的死活并不是由一个中心化的人或者集团所能掌控的,这才能称之为去中心化应用。
所以要是你想知道一个应用是不是去中心化的,那么你就试着做一个思想实验:有把刀架在这个应用的(一个或几个)关键决策人物(一般是创始人)的脖子上,冲着他们凶神恶煞的吼一声:关掉应用,否则人头落地!如果这帮人不假思索地回应到:刀下留人,让我想想先。那么这肯定不是去中心化的或者说是创始人的缓兵之计,如果真是去中心化的应用,就根本不可能会想出任何办法的。
但是如果按照上面的定义来判断应用是不是去中心化的,你会发现现在几乎所有的区块链应用都是中心化的。
最典型的场景就是,大多数的应用都会用到云服务厂商提供的服务器,如果创始人全部因为车祸挂了,那么没有人来给这些服务器续费,服务器过期被云厂商回收后,对应的应用几乎都无法正常工作
我把能通过上面那个思想实验的应用称作为 狭义的去中心化应用 ,而现在去中心化应用的概念已经一再改进,只要其中一部分功能是去中心化的,则创始人便会对外宣传他们的整个应用都是去中心化的,我称这类应用为 广义的去中心化应用 。
狭义的去中心化应用
那么现在所谓的去中心化应用有哪些是狭义的呢?这个问题比较深,我分几部分来讲
公链
首先,基于 PoS 共识的公链不是狭义的。以 EOS 为例,把刀架在 21 个出块节点负责人的脖子上可能成本略高,我有个更简单的方案:
创建 21(甚至不需要 21 个,只要 15 个就行了) 个出块节点账户(起初当然是备用出块节点),然后用大量的 EOS 将这 21 个备用节点投票投上 top21 那么就可以任意伪造账单,达到破坏系统的目的。
那么谁能有这么多的 EOS 呢?B1 就有,交易所就有,其实这样的人并不少,尽管他们出于自己的利益考虑不会这么做,但是只要存在理论的可能,就总会诞生实际的需求,这只是一个时间问题。人与人之间的利益博弈显然没有白纸黑字的代码来的可靠和可预期。
其次,就算是基于 PoW 共识的公链,那也不一定就是狭义的。以 BTC 为例,早期的 BTC 可能是狭义的,但是现在的很难说,比较复杂。
现在的 BTC 形成了三大中心:掌控 BTC 代码迭代的 开发中心: Bitcoin Core 开发小组、掌控记账权利的 算力中心:头部矿池、以及掌握大量比特币的 财富中心:BTC 富豪榜的前几名(他们控制着超过 80% 的可流通的 BTC) (这个在我的上一遍文章里有过更深入的讨论,这里不再细说)
以上三大中心,任何一个异常了都会导致整个系统异常,看看现在 BTC 已经分叉了多少次就知道了(除非你认为分叉是区块链的常态)。硬分叉并不是什么好事,总得来说它是对整个社区的破坏和分裂,没有什么是比信仰和共识的崩塌更让人忧虑的了。
DApp
基于狭义的去中心化公链开发的应用也可以同样做成狭义的去中心化应用。(这里我用的词是 也可以 ,意思就是说你也可以做成广义的去中心化的甚至直接就是中心化的。)
我们先假设 ETH 就是一个狭义的去中心化的公链,基于这个假设我们做以下讨论:
ETH 合约一般都会设计有一个 owner 地址,这个相当于是管理这个合约的超级管理员。如果你想将自己的应用做成狭义的去中心化,那么就把这个 owner 地址设置成黑洞地址吧。设置成黑洞地址意味着没有任何人能改变这个合约的运行逻辑。想要关闭这个合约或者不让任何人调用这个合约,那么这个问题就转化成如何关闭 ETH 网络了。所以你把 你这个应用到底是不是去中心化的问题丢给了 ETH 公链是不是去中心化的链 了,这是一个非常聪明的做法,确实是一个让维权人无计可施的“甩锅”策略。
只要 Uniswap-v2 版的 owner 地址设置成黑洞地址,那么这个去中心化的交易平台就成了狭义上的去中心化交易平台了,否则还是会出现一些不可控的变数。(我个人不喜欢无预期的不可控)
那么如果真的把 owner 改成黑洞地址了,那么这个应用就一定是狭义的去中心化的应用了吗?那也不一定 :)
加密猫大家应该都知道吧,我最近突然发现我 N 年前买的猫有一点变化,这个变化引起了我的忧虑。我的猫属性的 hash 字符串一直存在链上确实没有变化,但是网站却修改了这些 hash 的具体含义,比如本来第 1~2 个字节决定猫耳朵的形状(尖的或者圆的等),现在变成了决定猫尾巴的颜色了……
资产本身存在链上确实没有发生任何变化,但是对于资产的解释却变化了。 也就是说 hash 还是那串 hash,但是猫却不是原来那只猫了。造成这个的原因是因为官方虽然失去了更改你资产的内容的权利,但是却掌握了另一个中心:对资产内容的解释权。
结论
人本来就是群居动物,却试图创造一个去中心化的社群。真正的去中心化从来就不存在,将来也不会存在。一句话:最终我们只会变成我们曾经讨厌的样子。