# web3, 文明的出路

By [Untitled](https://paragraph.com/@0xeccad75bb404803a15a94058400c6aed8311c8d3) · 2022-03-14

---

自从breathe in web3，遇到问题了总不免想，去中心化可以解决这个问题吗？这或许有点“拿着锤子找钉子”的刻意，但近期的天灾人祸，让我愈发觉得web3应该发挥更大作用，成为文明的一种出路。

![](https://storage.googleapis.com/papyrus_images/913df0c9fa91a50ec3a5fdad27a73d37f65c1c2f8f864807b43a09456718ddec.jpg)

1.  **从一场战争说起。** “2022年的2月，俄罗斯入侵乌克兰，俄罗斯联邦总统普京下令……” 未来历史书的大事年表里，应该会有这么一条记录。不知道未来的学生在历史考试时会如何分析，他们是否能理解战争双方的动机，或者能否从更深远的角度给出我们这些“局内人”暂时get不到的看法……不过，这些不是本文想要探讨的，本文将从一些战争的side effect谈起。 想象你是一个俄罗斯人，一觉醒来你就会惊奇的发现自己账户里的美元、欧元、英镑、日元都被冻结；而打开手机后，你会更惊奇的发现许多应用程序检测到你的俄罗斯IP就直接拒绝服务；紧接着你打开电脑想要工作，发现居然有黑客侵入了你们公司的数据系统，并威胁到如果俄罗斯不停战就不会归还。 站在这个俄罗斯人的角度上看，他何其无辜和憋屈。普京打仗不是他选的，他甚至还参加过反战游行，而普京打完仗之后可能的利益他几乎也享受不到。为什么需要他来承担这些后果？这合理吗？ 首先我要给出我的答案：这合理的。 为什么呢？因为拥有“俄罗斯人”这个身份意味着你与政府签订了一个协议，你将自己的一部分权限移交给了“俄罗斯政府”这个整体，它将作为代理，帮你做一些事情。例如：发动战争、与别国签订条约、提供公共基础设施、提供公共安全服务…… 你或许会说，我什么时候签过这个协议了？ 是的，你的确签过，在你出生获得俄罗斯身份的那一刻，你就默认签署了这个协议，尽管当时的你还完全无法理解这一切。 双方表面上达成了协议，但是一方不理解协议发生了什么，这合理吗？ 对，这不合理。
    
2.  **谁在篡改我的状态？** 在成为区块链开发者之前，我从来没有意识到状态的更改是一件如此核心而敏感的事情。区块链的所有攻击，几乎都和状态管理不善有关。这要求区块链开发者必须有极高地职业敏感性：在自己的代码与外界交互时，一定要明确自己的接口开得有多大、多深，自己的状态能否被更改、怎样被更改、可以被改到什么程度。因为一旦你开了不想开的接口，他人就可以更改你的状态，你就会蒙受损失。相比于封闭的web2，web3的开源性质使得这类错误的代价高得难以承受，一招不慎，损失的就是用户的真金白银。 这样讲比较抽象，为了方便大家理解，在此引入区块链开发者耳熟能详的DAO Hack ——Reentrancy Attack。故事发生在2016年，V神牵头组建了一个DAO来支持以太坊基础设施的建设。但是DAO中的取款代码犯了一个错误：它在用户取款之后才更新账户的金额状态。“用户取款”就是一个对外的接口，在这一行代码中，DAO合约会调用目标账户的“收款”功能。当目标账户是一个合约时，它就可以在“收款”功能中增加新的逻辑，重新调用DAO合约，再进行一次“收款”，如此循环往复，直到掏空DAO合约的资金为止。 这次攻击偷走了在当时价值$150,000,000 的ether。以太坊也就此分叉，代币从ETC变成ETH。这一次教训使整个区块链开发社区都理解了状态管理的重要性（好吧，不排除有些人还没理解），尽管学费有点贵。 好的，你可能会问，区块链开发的状态管理，和上一部分的俄罗斯人的遭遇有什么关系呢？ 有关系！俄罗斯人和政府签订的协议，就是典型的状态管理失败的案例。 这就像开了一个无限大、无限深的接口，当国家进入“战时”的时候，它就自动开启，你的资金状态、社交状态、工作状态、健康状态被一波又一波的攻击者篡改。而你，直到“战时”之前，都意识不到自己居然开过这样的接口，允许政府、中心化互联网公司、黑客来如此随意地更改自己的状态！ 这合理吗？ 这显然不合理。 那么，这不合理在哪儿呢？或者说，要改变这个不合理的情况，谁需要做出改变？ 每当这时，人们会归咎于命运的不公、个体的渺小、引战者的罪恶、极权者的暴戾……ok, ok, fine, 这些都没有说错，但是这些不是我们今天的重点，也没有触及问题的实质。 改变这个情况，很简单啊，own your own state！ 这时候，你可能会说，这听起来很难啊，个体如何与政府、大公司抗衡呢，个体无法完全脱离社会啊。 对，我知道这很难，但是这不是没有可能，而当下，就是做出改变的关键时点。 以太坊花1.5亿美元理解了状态管理的重要性。而除了俄乌战争，整个人类文明还要付出多少代价才能理解？
    
3.  **Seek for better explanations** 继续说回以太坊攻击，在那次攻击之后，开发者要如何尽量减少reentrancy的威胁呢？ 业内普遍有2种做法。一是Checks-effects-interactions pattern，即先更改状态再与外界进行交互；二是Mutex，即给转账这个接口上一个锁，攻击者想要reentrance时就会发现这个接口已经锁起来了，只有等到转账彻底完成时，才会解锁。 这两个解决方案的核心都是：细化对取款功能的解释。第一个解决方案意识到，用户取款表面上是一件事，但是细化成逻辑时它其实是3件事：check用户是否有足够金额取款；改变用户的余额；转账给用户。且这3件事的顺序是不能更改的。第二个解决方案意识到，让用户来取款不是打开取款接口这么简单，还要保证用户在调用取款接口的时候真的只是在取款，而没有做别的事情。 解决问题的实质，是对事件本身寻求一种更好的解释，这个更好的解释会纠正之前的错误，涵盖之前忽略的侧面，对事件有更深更广的理解。 让我们说回own your own state。 政府和公司的诞生无疑都是文明的一种进步。它们使得资源被更好地调度，产生更好的社会效益和经济效益。但是，如果把政府、公司、个体之间的交互简化为代码逻辑的交互，更加抽象地分析，你就会发现，个体的接口设计实在是太粗糙了：随手点的“同意”就将自己每分每秒的GPS定位加浏览记录、消费记录打包送给了机构，但用户的本意可能只是“我同意安装这款软件了！”；将资金放在某个交易所，用户的本意是使用“交易”这个功能，而不是把所有资金拱手交给交易所，并且被随意冻结。 与粗糙的个体接口相对应的，是精致封装的机构逻辑。只需要花言巧语和免费服务做诱饵，用户便会把自己状态的读、写权限悉数让出，机构逻辑便可以轻松地攻城略地。 表面上，个体掌控自己的人生状态，拥有所有权，寻求机构做事务上的代理。事实上，机构掌控无数个体的状态，真正拥有所有权，奴役个体为自己牟利。 是时候重新设计个体的接口，重新解释个体和机构的交互了。
    
4.  **Lack of granularity** 当你每条原始搜索数据的价值只值1美分不到时，谷歌当然可以选择替你收下它； 当知道80%的用户不会在同一天出金时，币安当然可以用80%的代币去投个票赚点激励； 当只需要外卖打折券就能让你介绍新用户，美团当然可以保留新用户带来的增长价值； 当简单处理你的浏览记录就能看出你的政治倾向，脸书(Meta)当然可以把它打包卖给剑桥分析…… 个体只会得到那些不具有增长价值的、一次性的东西——免费服务、打折券、甚至是现金。而机构，可以hold the upside，因为它们拿到了具有增长价值的、长期有用的东西——所有权。 好的，我又要问那个问题了：这合理吗？ 这次我的答案是：曾经它是合理的，但是当它的替代方案出现的时候，它就变得很不合理了。 很显然，个体被不公平对待了。机构的成功扩张离不开每一个个体的参与和贡献，但是个体获得的回报却微乎其微。 那么，为什么会这样？是什么导致了这个情况？ 我的答案是，机构逻辑和个体接口的缺陷——lack of granularity。 用户接口应该升级，对与外界交互的各种情况做出更加详尽的解释，划定清楚自己权、责、利的界限；机构与用户交互的逻辑应该有根本改变，机构将无法截留属于用户的收益，机构更改用户状态的逻辑应该是公开的、可以被验证的。 但是我要补充，lack of granularity不是机构的原罪。 因为在原有的知识、技术水平下，用户想要与机构交互，使用各种功能强大的接口：交易、搜索、支付……除了拱手让出自己的所有权（身份权限、资金权限、数据权限……）之外，没有其他办法。所以理所应当地，中心化机构不断收集用户所有权，不断发展壮大。机构从为用户服务逐渐演化成奴役用户为其服务，有人觉得这不对，但似乎也没有一个好的解决方案，直到web3出现。
    
5.  **脱离“人治”的知识**
    
    把人生想象成打一场游戏，如果我想让那些特别会打游戏的人来帮我完成一些任务，我自然是要把操作手柄交给他了，而那个人要完成我交付给它的任务，就不可避免地要了解我的基础情况：技能、装备、战绩……在让那个人帮我打游戏的时候，我就接受了所有权出让的事实，这没什么问题。 对，但是现在你有了一种更好的选择，帮你打游戏的，从“特别会打游戏的人”变成了“特别会打游戏的机器”。在你使用机器帮你打游戏的时候，你可以确定它的每一个操作步骤都只是在帮你打游戏，没有在做其他事情。 第一种“会打游戏的人”就是web2服务，第二种“会打游戏的机器”就是web3服务。显然，使用web3服务是不会出让所有权的，一切都还在个体的掌控之中。 这时，你或许会产生疑问：怎么保证机器背后不是人在操纵？个体如何确定机器的每一个操作步骤都是在打游戏，而不会被别有用心者篡改？ 没错，web3赋予了每一个个体这样的superpower，解决了“被人操纵”和“被人篡改”这两个问题。 这是因为，web3技术是独立于人存在的、脱离“人治”的知识。 以哈希算法为主的加密算法解决了“被人篡改”的问题。其有以下几条重要性质： 1） 任意输入都可以得到一个固定长度输出。 2） 微小的输入改动会引起输出显著的变化。 3） 从输出无法推断输入，有多少输出都不行。 4） 不需要知道输入内容就可以对输出的可靠性进行验证。 5） 验证是一套通用规则，对任何通用计算机都是平等的，这既包括具有图灵完整性的计算机，也包括接受过逻辑思维训练的人脑。 而PoW、PoS、PBFT等运作机制解决了“被人操纵”的问题。它们虽然执行细节有所差异，但是都有一个重要性质：每一个操作步骤都是由分布在世界上的某几十台电脑进行操作和验证，某几千万台电脑进行同步。执行某个操作的概率由数学保证，在执行操作之前，没有任何一台电脑知道自己将获得执行操作的能力。 所以，经过加密算法保护的信息可以跨越半个地球被某个计算机执行，并广播给整个网络。用户可以轻易地验证自己的操作被正确执行了，而不需要关心执行操作的是谁。 这听起来就像魔法，个体似乎不需要牺牲任何东西就拿回了自己的所有权。 不过，更大的魔法在后面。我们将看到，那些脱离“人治”的知识就如脱缰野马，开拓自己的一片天地。
    
6.  **走向进化之路** 关于web3和进化，可以查看我之前写过的一篇[《加密经济，生命游戏的觉醒》](https://mirror.xyz/0xeCCaD75BB404803a15A94058400C6Aed8311C8d3/80e4hRuh5AIMhp5kgWc8Nb4a8jK-2nxXn3N9cyAHmck)。在这里我将更进一步探讨web3和进化的关系。 回望知识传播的历史，语言打破了人与人传播的限制，纸、笔、印刷术打破了古人与后人传播的限制，信息通讯技术打破了地理位置的限制。表面上看，知识传播的路径已经完善了，时、空限制都不存在了，web3还能做些什么呢？ 答案是：web3赋予知识前所未有的广阔的进化时空，知识对特定环境的依附性大大降低，走上了不可停止的进化之路。 这或许是连区块链技术发明者都没有料到的一个衍生效果。 引用理查德.道金斯在《自私的基因》中对meme的定义。其实meme的传播和基因的传播具有很大的相似性。meme进化的场地是人的大脑，而“表达&理解“的过程就是meme繁衍的过程。meme如基因一样会有变异和环境筛选，人在理解过程中对于meme的不同解释就是meme的变异，那些存活下来的变异就是创新。除此之外，meme和基因一样都是适应性的表达。例如，牛顿力学定律就是适应性极佳的meme，它广泛传播于许多人脑之中；而吃草有利于医治感冒就是适应性差的meme，只传播于极少数人脑之中。 广义上说，所有的meme都是“知识“，因为它们本质上都是人对于事物的某种”理解“。在过去，知识只能在封闭的、有限的场所进行变异和进化，因为中心化机构提供的”人治“交互规则让知识难以自由流动。在各式各样的环境中，类似的轮子被发明，相似的meme被筛选。而在无许可的、去审查的、去中心化的web3，知识得以自由流动，在无数人脑中进行传播、变异、筛选。优秀的meme可以成为每一个知识的组成部分，无需重新发明轮子，Uniswap协议的广泛使用就是典型例子。 web3给了知识脱离“人脑“的一片栖息地，meme以逻辑表达的形式存储在链上，任何一个试图理解它们的人都为它们的传播提供新的进化场所。知识，就此走上不可停止的进化之路。
    
7.  **文明的出路** 回到开头的问题，web3将如何发挥作用，成为文明的出路？ 答案就蕴藏在文中提到的web3的种种superpower中。总结来说，web3将让ownership重回个体掌控之中，使这个世界对个体更加公平合理；web3将使知识创造走向前所未有的加速进化阶段，这大概率是促进文明进步的。 最后，以我很喜欢的物理学家David.Deutsch的话结尾：
    
    > “All evils are due to lack of knowledge. Rational optimism is the way out.”
    
    与君共勉。

---

*Originally published on [Untitled](https://paragraph.com/@0xeccad75bb404803a15a94058400c6aed8311c8d3/web3)*
