如何理解去中心
February 23, 2022
Thoughts
Decentralization
去中心这个词的使用通常出现在这样的场景下,
- 去中心的网络,去中心的互联网,
- 去中心的应用,去中心的金融服务
- 去中心的教育体制,去中心的治理组织,
- Decentralized Web,Web 3.0等等。
看似复杂的问题,通过结合自身的经历,找到问题的本质,理解起来会变得很简单。我们就尝试以这种方式来理解 去中心。
我是一个典型的80后,还没出生的时候,计划生育委员会的人就开始堵家里的门,我的母亲独自躲在离家十多公里的偏僻地方,没有邻居,只有一个破旧的小屋子,父亲隔段时间会去探望,如果太频繁,可能会被发现甚至举报。
几个月后,我出生了,我很幸运,见到了十月不太冷的太阳,但是有多少小“人”没能发出第一次动听的哭声呢?
生长在农村,上学是亲人口中我唯一的出路,那时候我还小不懂什么是出路,只知道考不好可能会挨骂,成绩好其他小朋友就愿意和我玩儿。上的学越来越多,视力越来越差,幸好高考没能把我淘汰,不然我可能上不了大学,玩不了 DOTA 这个游戏。
工作之后,和计算机打交道的时候多,和人打交道的时候少,幸好在大部分时间里我喜欢我的工作。
你看,我的生活很普通,和我们讨论的去中心有什么关系呢?
看上去普通的人生里,其实是对 去中心这一理念 最典型的实践,
- 假设我的父母遵守了计生委每个安排,也许就没有今天的我,这里的计划生育政策就是中心化的,去中心是在明白自己真正需求的同时(我的父母需求就是想要孩子),做出决定,与之周旋对抗,付出代价(我的家庭很多年才能拿出来的罚款)。
- 上学的场景到现在偶尔还会出现在我的噩梦里,比如重新参加考试、从头开始上学(:cry:)。
- 回到正题,上中学的时候我们有个读小说的小团体,内容很杂,好一点的小说比如红楼梦、西游记,不受待见的小说比如寻秦记、缥缈之旅(我们的需求是读课本之外的书了解世界),老师(中心化的权威)不让看,我们就偷偷看,一页页撕下来夹在课本中间。
- 大学是不是就很开放呢?现在回头看,我觉得大学课程内容落后,学生的选择权微弱,部分教师的思想封闭、教书育人的责任心缺位(注意,我并不是说读大学完全没用)。有很多的大学生选择了打游戏,去兼职去实习,不同的方式都打开了对世界的新的理解。
- 现在工作了依然还有很多东西要学,中心化权威的制约还是无处不在,比如很难获得稳定的国际互联网服务,学习资料被恶意审核。国际“互联网”信息服务和英语才是近代300年中国最有效的学习工具,过去没有互联网的时候是靠人出国搬运信息。
- 说说和工作相关的,我换了三个专业(土木、电子、软件)、不小于六份工作,有的工作是实习,时间几个月,有的工作好几年,公司里总是有各种中心化的权威,比如师傅、项目组长、老板。我的需求很简单,干喜欢的事情、自由的干事情,而不是996的加班给别人刷业绩,被早晚高峰堵在路上。在没有找到热爱之前,我不停的学习国外优质的信息,参加各种技术社区活动,投简历面试,经历不同的产品,总结自己的想法、认知和不足。
这是我在生活中的一些小事,我做这些事情潜意识里想要达到的目的是,理解自己和世界,打破限制,获得知识、能力和自由。请回想一下,**你是不是也在有意无意地做着一些事情,想要达到相似的目的呢?**我暂且把为了达成此目的所做的事情称为去中心的实践。
有的人可能觉得这和 不守规则、叛逆、爱折腾 很相似,这样的表述是客人对主人(客观对主观)的评价,忽视了 去中心实践 的一个根本原则,从自身的立场出发,明白自己真正的需求。这样的去中心实践会不会更加导致利己主义呢?我的理解是,真的有人不利己吗?一个不利己的人,怎么可能会利他?深刻长远的利己主义即是利他。
现在我们就来给出 去中心 的一个定义,一个我的理解,欢迎你结合自己的经历添加自己的理解,并且分享给身边的人。
到底什么是去中心?
我们这样来定义它,
一个人从自身的角度,打破权威的限制,触及到更广阔的“天地”(即思想自由和行为自由),这里的“一个人”也可以是具有共同愿景的团体。
那既然,我们已经在追求去中心,并为此付出努力,为什么还要把它放在台面上来讨论。原因很简单,权威不希望被去中心,因为去中心之后把他的利益缩减了。每个人在不同的情景下都可能是权威,比如学校的老师,家里的“一家之主”,公司的老板、项目组长,政府的负责人等等,我们就是这些人,我们会在某个时刻披上权威的外衣,对其他人做出限制,出于善意或者恶意。
我们讨论去中心,是要让更多人意识到它,理解它,当遇到权威限制的时候,明白权威限制的目的,以及如何运用自己的技术、知识在需要的时候打破它。想要打破,通常要“强大的力量”,力量在人的手里,也就是联合具有相同诉求、处于相似处境的人。
如果我们还是像过去一样,对于权威,听之任之,或者只做个人或者小范围的反抗,
- 我们想要获取信息和知识的途径将会变得异常艰难
- 培养独立思考、发表自己的看法、施加个人的影响力将会不被允许
- “人吃人”的社会规则不会有丝毫改变。
我们讨论去中心,是为了揭露社会规则的灰暗地带,给每个人更多的选择,进而改善我们赖以生存的社会规则。
追求去中心、打破权威,首先要明白自己的基本诉求。通过我们对去中心的定义,它有这些关键词 自身、权威限制、广阔天地,我简单概括出了这些基本诉求,
- 关注自己和内在,而不是被外界、他人的看法所支配
- 规则和限制无处不在,这些规则应该对所有人可见,对所有人透明公开;而不是一部分人利用信息的不对称,获取灰色的个人利益,比如
- 项目招标的规则不透明,被人暗箱操作
- 政府的权力部门利用不透明的规则,为自己谋私利、行方便
- 科研、教学的评价规则不透明,导致人浮于事、滥竽充数等等
- 打破限制,并不是鼓励过激、违法的行为,而是需要在具备法理性的前提下进行,要注意的是法律本身也可能被滥用。
- 我们所追求的自由和广阔天地,往往是由很多人经过不懈努力所创造的,我们应该对创新包容,参与其中。
- 任何东西都在变化,当某个东西不再适合某些人,应该允许他们复制这个“东西”,在它的基础上构建新的内容和规则。
实现以上的诉求,靠跟人磨嘴皮子,大概率是没人听的,靠跟人“打架”,大概率会被权威按在地上摩擦。
在这里我想分享一个,以我个人的经历看,大体可行的一种方式来构建一个去中心的世界。
如何构建去中心的世界
“以笔为剑”,这支“笔”,不只是鲁迅的笔,还是无数个用软件改变世界的手。
软件怎么就改变了世界呢?软件除了还没有直接进入我们的脑子,早就渗透到世界的各个角落了,一个更时髦的说法是“Software is eating the world”!食物的生产、制作过程用到的机器包含了软件,交通工具更是如此,其他生活必需品也不例外,随着机器变得更加智能,软件可以做的事情,在将来或许连人也限制不了它。
如果想挖的更深一点,为什么软件会变成了必须品,我的理解是,它可以高效地构建任意的工具,这不是我们的重点,有机会再讨论。
现在就看到我们的主角了,构建去中心的世界,某种程度上就是构建去中心的软件服务。由这些软件所支撑的能够连接人与人的网络,我们称它为去中心网络。
要满足去中心的诉求,组成去中心世界的软件应该具备这些特性或者原则,
- 软件代码开源。代码定义的是规则,代码开源意味着,规则是对所有人公开透明的。透明的规则不仅能提升社会协作的效率,还能较少错误发生的概率。代码开源是否会导致创新不足或者更多的抄袭呢?不会,因为软件(即规则)本身没有价值或者说价值很低,真正有价值的是社区。
- 软件的执行具有确定性,也就是说,当网络接收到了某一个输入,应该总是有一个预期的输出,比如我写了一篇文章,这篇文章在任何情况下都不能被肆意删除,但是其他人可以给文章打标签或者投票,来显示这篇文章是不是违反了某些规定。在这里,文章就是输入,预期的输出是文章不会被删除、但是可以被社区打标签。
- 社区参与治理。社区是由使用软件服务的人组成,软件的调整、升级需要经过社区的同意,治理不合理会被用户抛弃、社区荒废。现有的绝大多数软件的治理主要是由创始团队和资本在主导。治理的过程有很多的挑战,比如 女巫攻击(Sybil attack),开发效率无法保证,社区的参与度低,社区、团队、资本的平衡等等。
- 允许分叉(forkable),当软件演进到不再适合社区的某些人时,原有的社区应当允许他们自由地复制并发布自己修改后的软件,形成新的社区。
- 公开透明的激励措施支持软件开发和网络维护,由社区主导,而不是开发者或者资本,过于依赖某个开发者或者团队,在社区和团队发生冲突时,社区的需求会被轻视;过于依赖资本,更是容易沦为资本的工具。
这些原则覆盖了软件的整个生命周期(开发、维护、升级、停止)和所有参与方(用户、开发者、投资人),坚持和优化这些原则,会诞生出这样的去中心网络(也叫点对点网络),它的价值在于 以用户为中心,公开透明的规则,和公开透明的执行。
去中心网络的技术实现
如果你不是技术出身,不理解这一节,没有关系,它并不影响对全文的理解,可以跳过这一节。
要实现去中心的网络,满足上述的原则,目前已经有的技术,简单列举如下,
- 点对点的通信,采用无需准入的机制来进行网络的维护,从而不依赖某个单一的网络服务提供商,即所有人都可以因为兴趣、荣誉或者利益来为其他人提供该网络的服务。去中心网络不再依赖传统网络所使用的http/https协议,而是在tcp或者udp协议之上引入连接复用机制(如mplex)和安全加密机制(如Noise),还要考虑各种形式的防火墙和NAT。典型的实现有libp2p以及基于QUIC的p2p实现。
- 密码学中的非对称加密技术,即公私钥加密,网络中的用户以及用户拥有的数据由公钥进行唯一地标识,私钥在用户手里,可以解锁用户所有的数据。常用的公私钥算法如 secp256k1,ed25519等。需要指出的是,随着计算能力的提升和新硬件的引入,密码学的安全性随着时间会有所降低,因此应当密切关注密码技术的更新迭代,及时进行安全评估和迭代。
- 数据库,任何软件对于数据的保存都要用到数据库,点对点网络常用的有关系型数据库SQLite,键值对数据库RocksDB,不同于中心化服务所使用的数据库如Postgres、MySQL、Redis、MongoDB等。这些不同的选型是由于点对点网络对数据存储性能的要求更高,并且网络中使用的硬件性能更低。
- 共识算法,由于网络服务的提供方是由很多人和组织共同维护的,需要一定的机制来确保写入数据库的权力不被滥用,这就是共识算法,即选择哪个节点来写入数据库。常用的共识算法比如工作量证明(Proof of Work)、权益证明(Proof of Stake)。
- 分布式哈希表(DHT, Distributed Hash Table),在点对点网络中对数据以键值对形式(key-value pair)进行存储和查找,其中key是存储数据的哈希值,value是数据本身,网络中的每个节点对一部分的键值对进行存储,是否存储某个键值对是由节点与key的相关程度决定的。DHT是最早的、也是目前最高效的点对点数据存储方案。
- 区块链(Blockchain),将数据操作打包成区块,并以链的形式对所有的区块存储在所有节点中,写入当前区块的节点由上述的共识算法决定。这样的链式存储效率极低,链上存储的数据有限,目前链上仅用于存储和交易相关的具有金融属性的数据或者元数据信息。
- 其他技术比如,
- 零知识证明、可信计算环境、多方安全计算等可用来保护数据隐私
- 分片(sharding)、零知识证明可用于对链式存储进行扩容
- 形式化验证保证软件代码的正确性等等。
总的来说,去中心技术是以密码学为基石,通过使用高效的、适用于分布式场景的数据结构对数据进行存储和传输,并经过合理的验证和写入权限管理,形成了对等的网络拓扑结构。
总结
构建去中心世界的形式多种多样,你以为的中心,可能正在以某种形式履行着去中心的责任,你以为的去中心也有可能正在或者已经形成了另外一个中心。技术的进步带来了解决问题的新的思路,但是技术不是万能的,只有让普通人享受到技术所带来的实实在在的好处,我们的社会才会在盘旋中前进。