SICP 的启发 2:无常

昨天的 代码 还让我意识到了一个重要的东西,那就是无常

在那个程序中,我本以为数据是存在某个地方的实体,但在深入研究后,发现其实数据是一个过程。唯一的数据就是用户输入的那个数据,这个输入会引发一系列的过程。

这让我意识到,整个世界也可能就是这样一个程序:一个过程,其中不存在存储。当我们想象这个世界的源代码时,我们往往会认为数据存储在某个地方,但实际上并没有。

整个世界就像一根正在燃烧的导火线或者一支正在飞行的箭,最初可能只是有人输入了一个 “1”,触发了这个过程,然后一直持续到现在。

所以,只有无常是永恒存在的,因为整个世界只是一个不断进行的过程,没有存储。

SICP 的启发 1:空

1

之前我听过一个 80 年代的计算机课程,叫 SICP(计算机程序的构造和解释),很牛逼。

其中印象最深的一节课是关于数据抽象 (abstraction) 的,一个我觉得挺复杂的问题,他仅仅是做了几层抽象的表示,问题就被解决了。我当时大为诧异,因为并没看到真正的“解决过程”。

今天我把 那节课 重听了一遍,听到了一个之前没注意的东西。

他说 Lisp 中有一个基本的数据结构,叫做 CONS,它是由两个数据组成的一种结构,后续所有的抽象都是在这个基础上搭建的。

结果,到了这节课最后,他讲了个惊人的东西。

他说,我骗了你们,其实 Lisp 中并没有 CONS 这种结构,是我构造出来的。但当你们知道它是怎么被构造出来的,你们可能会被吓尿,因为它是从 “空” 中构造出来的

然后他展示了 CONS 的内部代码,只有三行,卧槽,你以为它内部是一个实体,其实并不是,它只是个过程!而且是一个看似没有意义的过程。

(define (cons a b)
  (lambda (pick) 
    (cond ((= pick 1) a)
          ((= pick 2) b))))

类似于,“这个人叫路遥”,你以为 “这个人” 是个实体,结果你查看它的源代码,发现它的源代码上写着:“叫路遥”。

他说他知道大家肯定会懵逼,所以就谎称有一种基础结构存在,让大家容易接受。但其实并不存在——

“很多人以为过程是一个行为,其实过程本身就是实体”

2

这节课还教了一个非常有趣的思维方法,叫做 “wishful thinking”,它是抽象(abstraction)的精髓之一。

它的意思是,当你想要设计一个东西时,可以先假设它已经存在了,比如想象成一朵云。然后你用这朵想象出来的云,来设计其他事物和它的交互方式。

一旦你定义了它和其他事物的交互,这个东西本身的设计也就差不多完成了,因为这些交互已经定义了它的本质。

换句话说,“一个事物的定义,取决于你和它交互的方式,而不是它的内部构造。”

3

聊起这个,我的朋友 Maomao 告诉我,胡塞尔就是这个观点,你无法知道世界上其他人是不是 NPC。即对你来说,唯一的实体是你和其他客体的关系。你只能知道关系,不能知道客体。

他这个观点之前一直被主流哲学界嘲笑,觉得你瞎搞,直到近代才被人理解。

4

当哲学家说这话的时候,别人可能觉得他故弄玄虚;但当你看到程序员写出这样的代码,然后正常 work,一切运行完好的时候,就很震惊。

比如,有一个粒子,它和世界唯一的互动方式是,有人去测量它,它长 1 纳米。

那么当你翻开它的源代码,它源代码很可能只有一行:

“当有人测量我的时候,我就告诉他老子的长度是 1 纳米。”

作为一个程序员,你看到这样的代码,会觉得,草,这么不负责任的代码,怎么可能构建出其他复杂的事物。

但实际上,它真的可以。

“建立数据抽象并不需要数据,过程可以完成所有事情。”

佛教说“五蕴皆空”,今天这个事情很大地加深了我对 “空” 的理解,原来真的可以在空上建立东西。

和俞昊然探讨“问题”

我说,我感觉对问题的定义越清晰,最后的方案就越简单。

他说:

“因为后续要做设计,那设计就有两步,第一步是尽可能多的探索解空间,找各种各样可能的方案,还有一步就是从所有找到的方案中间做选择。”

“而问题定义的清楚,实际上是把解空间给定义清楚了,知道边界在哪儿,这样子的话,我们会探索出来一些奇奇怪怪的东西。”

“问题定义不清楚的话,往往你会把一些明明没必要去讨论的问题拿出来讨论,把一些不是解的解放到了未来的选择中间去,这样子的话效率就会很低。”

“那如果问题拆解的好,也就是说,从本身的问题到各个子问题都定义清楚,那最终在这个把解拿出来的过程中间,每一个层次上的方案都是相对来说目标清晰,选择合理,那可能就是你说的简单。”

对问题的定义越清晰,最后的方案越简单。

Hayden 的启发

朋友给我发了一个故事。作者讲述了他在 2018 年帮助 Hayden Adams,却错失投资机会的委屈故事。

这个故事真正有趣的点在于,让我看到了早期 Uniswap 的真实状态,给了我许多启发。

1

比如,我之前以为 Uniswap 一开始就被以太坊基金会资助了,相当于含着金钥匙出生。但现在发现事实并非如此,Hayden 是完全靠自己的努力推进这个项目的,直到后来项目逐渐走上正轨,才有以太坊基金会和 Paradigm 参与进来。

在此之前,Hayden 一再地花光钱,甚至在考虑是否要发行代币或者进行众筹。

不只是团队人很少,就连相信这个项目的人也寥寥无几,作者说自己是除了 Hayden 外唯一一个真正相信 Uniswap 的人。

2

同样的,可以看到他对于自己的项目真的非常执着。

当时 AMM 的概念并不新鲜,但 Hayden 看到一个关键:我们需要激励流动性,而且要简单到极致。

作者说每次你遇到 Hayden,他肯定都是在跟你讲 Uniswap,他真的跟成百上千个人解释过这个交易系统

3

作者在 18 年发过一张聚会的照片,说找找 builder 在哪里。

结果我一看,别人都在 social,只有 hayden 一个人坐在沙发上写代码。其他照片也是,他要么在电脑前工作,要么就是在白板前讲东西。

4

我还注意到一句话,作者说他们有争论过,是做 “纯协议” 还是 “带一个 UI 界面”

I debated the strategy of protocol-only vs. controlling an interface.

这让我一下子两眼放光,因为我也常琢磨这个问题。这让我很欣慰,或许很多困扰我的问题都没有一个理所当然的答案。

计算和存储的桥梁

我前一阵发了个推,说如果“计算”在 Ethereum,“存储”在 Arweave 或 IPFS,那中间少了点东西让它们彼此访问。但不知道为什么,从来没人讨论,也没人做这一块。

我发的时候,脑海中还没有具体的使用场景,结果没过几天,就看到 Paradigm 的 t11s 发推问大家有没有这样的东西。

网友问他要派什么用场?

他说,他在做一个自己的 Rollup,有 >50MB 的中间数据要存且要确保可访问,需要在合约层面验证这个数据哈希存在于 Arweave / IPFS 上

看吧,就这么简单一个事儿,现在居然是办不到的,你敢信……

我相信这样的需求会越来越多。我们今天既没有人做、也没有人讨论这个事情,只是说明行业还处在一个非常原始的状态。

送分题

有一年我看 唐彬森 的访谈,他在公司里管一类机会叫“送分题”。以前做互联网,别人卡顿,你做个不卡顿的,送分题。现在做饮料,看配料表能不能比别人好,用别人不敢用的好原料,送分题。

最近搬到新家后,我发现许多昂贵的、高级的、智能的电器设备,我爸妈都不会用。把这些东西做得老人小孩都会用(像曾经一样),可能也是个送分题。

(P.S. 这篇原本被我删掉了,因为说“把电器做好用”是送分题,有站着说话不腰疼的嫌疑。但后来我还是决定留在这里,因为我意识到,困难的送分题也是送分题,难道唐彬森说的这些送分题不困难吗。所谓送分题,只是解题思路简单,但不是谁都能解出来,没有经年累月的付出,也是拿不到那个分的。)

解决“问题”

很碰巧地,拉屎时看了 Youtube 给我推的 iMac, MacBook Air, iPod 的发布会,我发现了一个共同点。

他要发布的产品都会在比较后面才拿出来,那前面都在讲什么呢?讲问题

  • iMac 发布前讲显示糟糕、性能低下、样式笨重的传统 PC;

  • MacBook Air 发布前讲 Sony 的做了很多妥协且并不轻薄的轻薄本;

  • iPod 发布前讲市面上的 CD 机、mp3 的容量问题;

  • iPhone 发布前则在讲并不 smart 的 smartphone,以及交互方式等一大堆问题。

这些问题实际上都是用户的问题,随着发布的产品,通常在这些问题上都会有质的飞跃。台下观众感到兴奋,不是因为这个东西有多炫酷,或者某个性能多极致,而是因为真实存在的问题被解决了

这也是苹果的精髓所在,我是这么认为的。

(当我想起老罗时,我常怀疑他对此的理解有偏差。)

Uniswap 的启发

起初,我考古读到了这篇文章,当时很热门:

What Explains the Rise of AMMs

他从几个角度去解释 AMM 的崛起,比如 gas 低、抗监管、提供流动性方便、LP 激励……

然后我就很好奇,我想看看 Uni 创始人是怎么说的,毕竟他从头到尾经历了整个过程。

于是我搜到了这篇,是彭博社对他的一个访谈

Hayden Adams Explains Uniswap and the Rise of Defi

很有意思,他对此的解释,跟前面那人完全不一样,而且非常简单好懂。

他觉得 Uni 起来的重点是满足了长尾市场。传统做市商不会给小资产做市,AMM 的好处是不需要做市商,所以解放了长尾资产。

他还打了超级有趣的比方,我头一次听到这种说法。他说用户可以很容易地创建交易对,这有点像 UGC 内容,就像 Netflix 和 Youtube 的差别,在 Youtube 上用户自己生成内容,而 Uniswap 对流动性做了同样的事情

这件事还有一个更有意思的地方,就是一开始他好像不是这样想的。

他不是想:“长尾资产需要交易,AMM 可以完美解决他们的需求,比 orderbook 好多了”。

并不是。我听过他前年的访谈,当时他说:

“以太坊吸引我的点是不需要信任、不会被下线、不需要许可。但是当时所有的项目,比如 EtherDelta,都没有这些属性。所以我开始思考,如果能在以太坊上构建拥有这些属性的项目,会是什么样子。”

我觉得这个差别中有很深刻的意义,但我说不清楚。后来我和李阳讨论这个现象,他觉得可能可以用这样的方式描述:最开始做工具的人对 a 非常着迷,但真正引爆点是 a 所带来的 b

我同意,就是最开始吸引园丁的是那个土壤,而最终吸引游客的是在那个土壤上生长的花朵。没有那个土壤,就没有那个花朵。

Lens Protocol 做得太烂了,真想有人一起吐槽一下。

它就是把整个社交网络的模型,搬到了智能合约里。

有点像当年 EtherDelta / IDEX 对于交易所做的事情,就是所有逻辑,这边重现了一遍。

某种程度上意味着他们或许不知道自己在解决什么问题。

当我们谈论牛身上哪个部位最好吃的时候,我们在谈论一个理所当然的事情。我很好奇,当视角翻转过来,人们会是什么感受。

我们可以构想一个故事,有一个比人类更高级的生物,他们一家其乐融融地品尝着人肉 —— 因为这是他们合家团圆、充满爱的重要节日,只听他们聊着:

“孩子们,这是人背部的肌肉,比较嫰,别浪费了”

“这个人的脂肪偏多一点,所以我多烤了一会,现在比较脆”

“现在人肉涨价了,连人头都挺贵呢”

“我不喜欢啃手指,啃半天都没多少肉”

“孩子,这个眼睛其实也能吃,会补眼哦”,孩子:“我不吃我不吃,这是个戴眼镜的人,视力差的很”

……

这些温馨的对话让旁边笼子里的人类瑟瑟发抖,尽管他什么也听不懂。

💩💩💩💩💩💩💩💩💩💩

为避免我的博客太严肃太正经,我应该定期发一些没有意义甚至羞耻的东西,来时刻提醒自己:我就 tm 瞎写写。

但很遗憾的是,有了这一段说明,本篇又有意义了,草。

一个微不足道的细节

考你一个问题:如果 Mirror 挂了,你还能用它吗?

答案是:不能

能读,但是不能写。

所以我觉得它不是很 protocol,还是更像应用一点,而 Uniswap 就哪怕网站挂了也不影响使用。

之所以想到这个,是因为我早上在想另一个小问题:内容要不要存储 “发布时间”?

目前往 Arweave 存内容的协议像 Mirror 之类,都是在存一个 json,里面包含一个时间字段:

mirror_json

但这个时间我觉得是没用的。

一方面,AR 的区块本身有 timestamp。

另一方面,如果这个协议是无门槛,谁都能用的,那就无法确保这个时间真的是发布时间,我可以乱写一个时间。

所以这个时间字段实际上是没有意义的。 除非所有内容都发布自你自己的网页客户端,就像 Mirror。

这是个微不足道的小细节,但我发现深入想下来,就会意识到很多东西。

最终设计成 protocol 还是 app,许多决定可能是不一样的。

(P.S. 后来我意识到,这个字段也并非没有意义,比如当你把博客迁移到 Mirror,每篇文章都有个写作日期,这种情况下还是需要一个时间,也不能只看区块的 timestamp……)

Vitalik 又讲了个 很好笑的东西

他说纽约一些 club 需要很贵的无聊猿作为入场券。但如果是他来搞的话,他希望早上 4 点开门,而不是 4 点关门,因为能够这么早起的人通常挺有趣的。而且,他还会把买了 3 万刀以上猴子的人排除出去。这基本上和目前的做法是完全相反的。

随后他说了一句非常精辟的话,值得我用粗体标出来:

如果你有一批人(除了利用别人的问题发财以外)他们自身没有什么问题需要 crypto 来解决,那么你是没法建立好的文化的。

今天看到一段话,挺有意思的。

说一个品牌,想要告诉用户自己产品为什么这么便宜又好用,是需要花很大力气去营销,用户才愿意相信的。

否则不管是什么样的品牌,消费者都会觉得只有达到某个价位,才是符合自身人群定位的品牌,才会愿意多看一眼。

便宜是很难的。

Books 2022

2022 年读的书,对一些我觉得比较有趣的做了标记。

继续阅读 →

一个判断公链的简单指标

一个公链生态好不好,取决于上面的 App;而 App 好不好,取决于上面开发者的质量。而开发者的质量,我有个很简单的指标来判断,那就是:

看这个生态里,有多少原创、有趣、但不赚钱的 App。

赚钱的 App 当然谁都愿意做,方法多得是,随便 fork 一个项目就可以赚钱。但不赚钱的 App,至少说明在你的价值观里,有一些东西比钱重要。

原创、有趣,则说明了开发者的能力,牛逼的开发者喜欢捣鼓新东西、捣鼓有趣的东西。那种靠山寨捞钱的事情,好的开发者通常不干。

所以,你看如果一个生态里,如果有很多原创、有趣、不赚钱的 App,你就知道,这里活跃着一群有能力、有热情、价值观一致的开发者们。

反之亦 …

继续阅读 →

下一代的空投

1

上半年我获得了 COW / HOP / OP 三个项目的空投,有意思的是,这几个空投都遇到了一个相同的现象:羊毛党极不满意

中文频道往往是羊毛党重灾区,空投前总是骂声一片,比如你常能看到这种:

“我刷了 50 个地址,花了那么多 gas 费,你们项目居然就给这么点币,骗子项目!”

或是这种:

“我带领社群两百人过来撸毛,你最后却不发给我们,这种项目,死了算了!”

我的内心反应通常是:WTF is wrong with you?

2

大部分人都不理解项目为什么要空投,奖励用户?回馈社区?都不是。去年 ENS 的 Brantly 在访谈中说了这么一句话:

“我们不是在奖励用户,也不是在回馈社 …

继续阅读 →

如果孙中山是一个智能合约

这几周老是接到各种商标代理的电话骚扰,说我之前的一个商标被提起了撤销,要我赶紧付钱请他们答辩。这让我想到一个非常有趣的问题:

如果是在链上,会发生什么呢?

比如说你部署了个叫 Uniswap 的合约,贼流行,用的人很多。然后突然有人站出来说:

不行,Uniswap 是我们五年前就注册的商标,你不能用。

搞笑的地方就是,你奈我何呢,甚至于,我自己也没办法,难道我让以太坊回滚、fork吗?

以前传统的世界里,一切事物背后都有一个实体,我总能找到你的公司、公司的法人、公司的服务器机房,它们都受到约束,我可以罚你的款、抓你的人、关你的机器。

区块链头一次创造了一种,一个东西在运行,但找不到它背后的实体的状况。零成本运行,无法被修改,也无法被关闭,这使得它实际上不受法律约束。

比如,你创造了一个叫做 Disney 的合约,大家都爱用。而 Disney 公司最喜欢发律师函了,可是这次他要发给谁?他找不到人发。

再比如,一个合约要是每天都在违法,那法院要怎么判决?取缔这个合约吗,取缔不了;抓人吗,它背后并没有人。

我前一段时间在读一本讲辛亥革命的书,清朝一直想要刺杀孙中山,拘禁他,找他麻烦。

你看,他们也就是欺负孙中山是个人类。

如果孙中山是个合约呢?

孙中山平时干的那些事儿,主要是募资,还有协调组织人事,合约不是一样能干,而且干得更好。清朝要怎么办?抓谁?不知道,完全束手无策。

我想我们整个社会制度,还没有准备好接受一种人类以外的实体。社会要适应它可能还有一个漫长的过程,这期间大概会出现非常多的冲突、Bug、机遇。

公共物品小故事四则

‌ Vitalik 经常聊公共物品。

因为以太坊生态里就有很多公共物品,比如开源客户端、协议研究、文档、社区贡献的库等等,这些东西对每个人都有好处,但不赚钱,所以怎么帮它们搞到钱?这是一个很难的问题。

我听了 Vitalik 过去几年的分享,有几个挺有意思的小故事。

1

他说,在维护 “公链安全 “这一公共物品上,问题已经被解决得很好了。矿工们挖矿,得到报酬,同时又维护了公链的安全。那么这个方法能不能推及其他公共物品呢?

结果还真有。

ZCash 有一个尝试,就是把每次区块奖励的 20% 自动给到一个 ZCash 基金会地址来支持开发。

BitcoinCash 也做过类似的尝试,一个软分叉,要 …

继续阅读 →