Luyao Zhang


2024-02-06

关于抽象

Uncle Bob 说:

函数的参数越少越好,最好的函数是那些没有参数的函数。

我自己也常有类似的感觉,只是一直没去想为什么。直到最近,我偶然翻到了 Uncle Bob 的书,一句话让我豁然开朗:

函数和参数处在不同的抽象层级上。

我觉得这很好地阐述了函数的精髓,即一种抽象。想像一下,购买一个产品,不是开箱即用,而是要阅读大量说明书,理解其原理,对它进行繁琐的配置,这显然是不人性的。好的产品和好的函数一样,它们是完整的抽象,并不迫使用户去理解内部细节。


上周,和朋友聊起我的一堆新协议。其中有两个协议,功能不同,面向的用户也不同,但代码非常相似,有超过 90% 的代码是重复的。

我们讨论是否应该将这两个协议合并。起初,他第一反应是当然要合并。但深入讨论后我们都意识到,合并实际上会引入更多问题。

从用户的角度来看,是应该要分开的,否则会产生认知上的负担。跟使用者的认知负担相比,代码层面的重复是完全可以接受的

这和函数参数是同一个道理。


同样,协议与应用的关系也是如此。

有些协议因为抽象层次低,所以非常灵活。对于了解它的人来说,它可太牛逼了,能干 A,能干 B,能干 C…… 啥都能干。但对于普通旁观者而言,因为它抽象层次低,很灵活,所以反而很难理解它究竟是什么

这个时候,上层的应用就变得非常重要。因为应用提供了更高层次的抽象,是更好理解的——它就是用来干某件事的,其他的干不了。

如果到了应用这一层,还是很灵活,很多功能,不无脑,那就有问题了。


写这篇文章的过程中,我逐渐意识到,这个抽象问题实际上是更为广泛的存在,比如在信息的传播中。

对于信息或知识的传递,基础而本质的内容往往较难传达。它们似乎无处不在,却又难以捉摸。因此,人们通过一层又一层的抽象来解释这些概念,最终产生了我们熟知的畅销书、短视频、标语和小白科普文章。

“懂的人” 觉得,这些东西太肤浅太不严谨了,让人们越来越傻;但对于大众来说,这就跟好用的产品一样,是更友好更易于理解的。细节的损失,甚至部分曲解,并不是一种缺陷,而是必要的,因为这就是抽象的意义


2024-02-01

有时候写代码会经历这样一种感觉:刚开始觉得一个库怎么这么垃圾,然后用着用着,逐渐发现它的许多做法是有原因的,那是它细心、周到、关怀的地方。

我觉得人生也是这样,一开始你觉得一些人很糟糕,但当有一天你成为他的时候,你意识到他的行为都是有原因的,而且是好的原因。

那些“傻逼”和“坏蛋”,要么是过去的我们,要么是未来的我们。如果有一天我们很幸运地有机会“成为每一个人”,很可能会发现既不存在傻逼,也不存在坏人,存在的只有不理解。

以前我常常很冲动地想要摧毁一些不好的东西,但这些年不知是不是年纪变大了,开始越来越理解别人。1

世界就像一场 show,上面有三个演员:昨天的你,今天的你,和明天的你。只是他们互相认不出来。你一边看着“昨天的你”,说傻逼。一边又看着“明天的你”,说坏蛋。可是他们都是你。

你们都在台上,是这场 show 的精髓。2


  1. 尽管如此,我还是非常享受和朋友一起吐槽傻逼的事物,那很爽。我甚至怀疑这就是朋友的意义。 ↩︎

  2. 这个问题或许是没完没了的。不理解是因为缺少信息,而缺少信息,正是这场 show 精彩的关键。如果你去看一部电影,但你完全清楚所有的剧情,那就没啥意思了。如果人人都理解彼此,那就不存在正义和邪恶,那世界会变得很无聊。佛教说“不二”,是说去除二元对立,也是这个意思。但如果人人都这么整,那就太没意思了。有的人忙着做“坏人”,有的人忙着消灭“坏人”,有的人倡导大家理解彼此,我觉得这种平衡蛮好的,很自然,很精彩。 ↩︎


2024-01-30

每天最大的烦恼变成了无人分享我的激动。


2024-01-28

时间本身就是最好的相册,不需要记忆。


2024-01-27

所有以邀请制启动的 crypto 协议,都是业余选手。能够使用邀请制,说明这个协议的设计有缺陷,或者它在解决一个不属于它要解决的问题。


2024-01-26

移除“不装逼”过滤器

有时候我和女朋友说一些我在工作上的真实想法,她会说:

“你说的是对的,但如果别人听到,可能只会觉得你是个自大的笨蛋”

所以我一般不说那些话。而且加密圈子对于装逼的人似乎有某种诅咒,谁装逼谁破产。

但我后来发现,即使我很低调地说话,别人也会说我装逼。有次我说 bodhi 上那些“垃圾内容”并不垃圾,判断它垃不垃圾不是 bodhi 的工作,就这都有人说我装逼。

要考虑这些是很累的。我决定永远移除这个过滤器,学习赤裸地、真实地表达我所有的想法,并接受任何人说我装逼或傻逼。

以下是我在工作上的一些真实、朴素的想法:

  1. Bodhi 是以太坊诞生以来到目前为止,最难设计且最重要的协议,没有之一。如果你不理解这一点,说明你要学习的还有很多。

  2. 大部分协议都非常垃圾,不管它有多有名。如果一个程序员花了一个礼拜学习 Solidity,却还看不懂你的协议,那你已经 fucked up 了。

  3. 发布 Bodhi 前我觉得它能真正解决公共物品募资问题的机率大约是 30%,但之后我的许多疑问被验证了,现在我觉得是这个机率是 60%。

  4. Bodhi 有一定机率(比如 1%)会成为人类历史上最快达到万亿规模的经济体。

  5. 虽然 ERC1155 设计得很烂,但它可能会取代 ERC20 成为最主要的资产标准。或许 Bodhi 会成为最大的交易所,但这和它要解决的问题相比,根本不重要。

  6. 人们尚未理解公共物品募资问题的重要性,以及它对社会的影响,我也懒得谈它,不仅人们听不懂,还会给我惹来麻烦。

  7. 有瑕疵的理论下的实干,比完美的理论更重要(这恰是列宁和托洛茨基的区别),这同样适用于 crypto,我们今天所有的方案都是有瑕疵的,但不影响我们前进。

  8. Bodhi 的死掉是可以接受的(当然)。

  9. 我最喜欢的链是 Gnosis Chain,比任何一家 L2 都要优秀(得多)。Bodhi 没有部署在上面,只是因为它的原生代币是 xDAI,很麻烦。

  10. 简单比正确重要。为了正确而牺牲简单是很愚蠢(和很菜)的。

这些可能都是错的,但表达出来让我快乐。


P.S. 朋友读完后建议我把最后一句改成:老子说啥都对。


2024-01-22

关于文档

文档的重点可能不是帮开发者解决问题,而是让开发者有机会玩一下。

很多文档都特别复杂,他们似乎都假定开发者的状态是:

“我已经下定决心要在你这里创业做我的下一个十亿美金项目了,我需要了解你的一切。”

但事实上他们的状态可能更像是:

“我不知道你是啥,但我愿意花上我宝贵的一分钟,看看你有什么好玩的。”

如果他玩了觉得有点意思,那他或许某天想起你时,会再多玩一下下。

开发者和普通用户很可能没有本质区别,他们都要玩点什么,唯一的差别是他们可以通过代码来玩。

我认为有 20 个不同的独立开发者愿意在他们宝贵的周末分别在你上面瞎搞点什么,很可能比一家有 VC 投资的 20 人团队决定在你这里认真做点什么,更有价值。


2024-01-20

为什么如今大家写文章都要放头图呢,绞尽脑汁找一个跟文章没啥关系的风景图片,那不是给写文章增添门槛吗?


2024-01-20

万物都有它自己的道路。

女友编了一个故事,我觉得很有禅意:

大师会从广州去北京。

但今天我们人在上海想去北京,于是大师说,我们得先去广州才能去北京。

因为他只认得从广州去北京的路,在上海他就不会去了。


2024-01-18

我觉得对于任何一个问题,通常有两种解决方法,一种是解决它,另一个是不解决它(即意识到它可以被忽略)

这两种解决方法是同等困难的。甚至后者要更难一点,因为除非对问题有深刻的理解, 否则人们意识不到这个选项存在。


2024-01-12

我今年的课题是,修习宇宙中最强大的能力:compassion。


2024-01-12

前一阵听到一首歌 Om Gam Ganapataye Namaha,是关于印度神话中的象头神 Ganesha 的。

我不确定是不是我听错了,朋友告诉我说,Ganesha 帮助别人的方式是:compassion(共情)

这让我大为震撼。

因为我意识到,这很可能是一个人帮助另一个人的唯一方式,其他所有的方式都会创造更多的问题。


2024-01-07

看到,摸到,用到,和赚到

偶然看到别人发了的一张他们协议的原理示意图,然后我点进他们官方账号去看,发现也都是这类资料,并没有我实际可以用的地方。

那一瞬间,我忽然意识到,即便是作为开发者的我,也需要看到、摸到、用到这个东西,才能感受到它到底是个什么,否则我会直接关掉,心里的潜台词似乎是:“好吧,好像是个很厉害的东西,但跟我没啥关系,再说吧“。

我的意思是,在早期,一个简单的、用户可以直接上手的东西,对于认识这个东西很重要。

Uniswap 早期 有考虑过是只做一个纯协议,还是带一个网页 UI。最后选择做了网页 UI,就是我们现在看到的那个。

我也考虑过这个问题。我觉得后来 Bodhi 发布后能有很多人用,一部分要归功于它的交互很好上手,无论是交易,还是发布内容,操作都比较简单。用户不需要理解金融知识,也能明白发生了什么。

至于前一阵,很多开发者都不理解为什么 Bodhi 上还能做其他应用,也是类似的原因,他们没有直观地看到,所以不会感受到。我得做出来些什么东西,他们能直观地看到、摸到、用到,甚至赚到,才能更深地体会到。


2024-01-05

穷举是最好的算法。


2024-01-05

流量有可能被 tokenize 吗?(可是流量到底是什么东西呢?)


2024-01-04

为什么以太坊会有 Consensys?

为什么以太坊会有 Remix IDE?

为什么以太坊会有 Solidity?

这些事物都很特别,只是大家对它们已经习以为常,忽略了它们的出现有多么特别这件事。


2024-01-04

当你不知道哪个产品好时,问小白用户,他们的回答准没错。

当你不知道哪个语言好时,问初级开发者,他们的回答准没错。


2024-01-01

这两天聊了一些 Bodhi 上的开发者,收获很大。

我很震惊的是,即使是这样一群很聪明的人,他们也无法理解为什么 Bodhi 上可以做出很复杂的应用,他们对于 Bodhi 潜力的认识可能还不到其百分之一。

这倒是坚定了我亲自来做第一个应用的想法。


2024-01-01

细菌为何如此简单

简单是细菌的必杀技。

基因越短的细菌,复制的速度越快,会更快地占领种群。

它们对于简单的掌握,远超过大部分人的理解。

1

当你具备了一个特性,暂时不用,但未来会救你的命,你会选择保留它,还是丢弃它?

细菌的答案是,毫不犹豫地丢弃它

当环境中没有抗生素时,它们会立刻丢弃相关的抵抗基因,来保持基因精简,换取更快一点的复制速度。

我的朋友 Maomao 对此的总结是:没有“万一”,一旦“万一”,你就慢了。

2

这种丢弃,和它的横向获取基因的机制是配套的。

细菌有一种很有趣的从别人身上获取基因的能力。只要一个菌群中,有一个适应环境的基因,它会马上被复制到大家身上。

3

这两种特性,都和 crypto 协议很像。

一个协议只需要做最少的事情,但组合在一起,可以很有威力。

它比一个大而全的 App 更有生命力。我们今天所熟悉的那些大而全的 App,不过是原始的初代大细胞而已。

理解细菌的简单是理解其他复杂生物的前提,复杂的生物并不是真的复杂,它们是对简单事物的另一种组织方式。


2023-12-31

如果歌曲太复杂,大家就没法一起唱了。