我对 Hello Base 的反馈
加密货币的语言障碍
如今,技术人员之间存在着一道不幸的语言障碍。
加密货币爱好者对生态系统以及当下加密世界中发生的事情感到兴奋。他们试图吸引新人加入,但他们常常深陷于自己的加密圈子,以至于很难向圈外人解释任何与加密相关的内容。
我觉得自己是弥合这一语言鸿沟的合适人选,因为我了解加密货币的基本原理,但已有大约七年没有密切关注任何与加密相关的内容了。
Base 本应是那座桥梁
一年前,我在 《Into the Bytecode》一期对 Jesse Pollak(杰西·波拉克)的采访中听到他的分享。他对 Coinbase 正在开发的一项名为 Base 的新技术感到兴奋。
Base 本应吸引那些刚接触加密货币世界的开发者,并让他们能够轻松地在该生态系统中开始构建。
我开始探索 Base,发现它和其他大多数加密货币项目一样,也存在同样的语言障碍。我发现官方文档很难读懂,而且它似乎假定读者对 Ethereum 区块链有着深入的理解。
杰西·波拉克曾几次回应我的反馈,说这有助于理解圈外人的视角,但随后他又继续做着和以前完全一样的事情,所以我对再给他反馈失去了兴趣。
我再次被召唤
本周,Steve Simkins(史蒂夫·西姆金斯) 在 Twitter 上 @了我,分享了他制作的一个 Base 入门介绍:
我打算再尝试一次 Base,并以非加密圈内人的身份,分享我对其宣传话术的看法。
我喜欢 Hello Base 的地方
提供了清晰的前进路径
官方 Base 文档在“入门”文档中就立刻给新开发者呈现了一个令人眼花缭乱的路径迷宫。
Hello Base 为读者提供了一个从头到尾的清晰流程。他们不必在多个学习路径中做出选择才能入门。只有一条单一的学习轨道,消除了选择学习路径的复杂性。
让你在浏览器中完成整个教程
Hello Base 在简化 hello world 示例方面做得很好。读者无需安装任何工具或学习复杂的技术栈,就可以直接在浏览器中尝试所有内容。
解释了其中的术语
我对官方 Base 入门文档的一个批评是,它随意使用了大量会让新人感到困惑的行话。
Hello Base 很好地识别了新人无法理解的概念,并在一开始就加以解释。它简洁地说明了 Base 试图在加密货币生态系统中解决的问题。
我认为 Hello Base 可以改进的地方
更早地呈现价值
我认为 Hello Base 和许多其他 Base 文档一样存在类似的问题,即假定读者已经对 Base 感到兴奋。
现实是,99% 的读者根本不在乎 Base,如果你不给出一个令人信服的理由让他们留下来,他们会在几秒钟内就关闭标签页。
第一段就应该向读者解释他们为什么应该关心 Base,以及为什么应该继续读下去。
目前的第一段是这样的:
如果你是一名开发者,从未接触过区块链或对此知之甚少,那么你来对地方了。只需短短几分钟,你就能了解基础知识,并看到如何在 Base 上开始构建——Base 是一个旨在让下一代开发者 onchain(上链) 的 blockchain(区块链)。
如果我是一名非区块链开发者,读到这段话,Base 能给我带来什么?我为什么要学习 Base 而不是其他任何区块链技术?我为什么要学习 Base 而不是 web2 技术?
将 Hello Base 的介绍与 Ruby on Rails 的介绍对比一下:
化繁为简,应对现代 Web 应用的复杂性。
只需学习入门所需的内容,然后在实践中不断进阶。Ruby on Rails 能让你从 HELLO WORLD 一路扩展到 IPO。
Rails 的宣传很有吸引力。它表明它会让起步变得简单,而且我可以用同一套工具实现大规模扩展。
我很希望看到一个 Base 入门介绍能在一开始就回答这个问题:
- 今天在 Base 上我能做什么而用其他任何技术都做不到?
杰西·波拉克曾举过一些可以在 Base 上构建的应用的例子,在我看来,这些例子极其缺乏吸引力。它并不是实现身份验证或发送支付的最简单方式,所以我们不应该假装它是。
如果我是一名 web2 开发者,为什么我要在 Base 上构建,而不是选择其他任何可用的技术栈?
Hello Base 不必证明它是适合所有人的最佳解决方案。即使它现在很小众也没关系(例如,如果你无法使用传统银行服务,它是一种接受付款的方式),但需要有一个引人入胜的用例来吸引人们。
精简到有趣的部分
我很希望看到教程能立刻进入有趣的内容。我理解 Hello Base 想解释基础知识,但这应该在向读者展示一些酷炫的东西之后再进行。
如果我阅读 Python 教程,它不会先从有类型与无类型语言的历史讲起,然后再大肆宣扬内存安全的优点。它只会直接展示如何打印“hello world”。
“hello, world!”之所以成为经典的编程示例,是因为它出现在 Kerninghan and Richie(克尼汉和里奇)所著的 The C Programming Language(《C程序设计语言》)第 1 章第 1 页(K&R)中。当时其他编程书籍都是从变量和类型的基础知识开始讲起,而《C程序设计语言》则直奔示例。
我们能做得比 hello world 更好吗?
与上述几点有些相关,我经常看到 Base / Ethereum 的示例展示了一种比用 web2 技术实现同样功能更复杂的方式。
也许对于第一个示例,只能如此,但我们能否展示一些更酷的东西,来利用 Base 的独特性质?
如果读者本身对为了存数据而把数据存储在区块链上并不感到兴奋,那么在 Base 上有什么令人兴奋的事情是可以轻松做到,而用 web2 技术却很难或不可能实现的?
我能否将内容设为付费墙而无需向 Gumroad 支付 13% 的抽成?我能否创建一个简单的方式让粉丝给我按月捐款而无需获得 Patreon 的批准?
减少行话
尽管 Hello Base 解释了大部分术语,但仍有许多实际上并未定义(例如,“gas(燃料费)”、“optimistic rollups(乐观汇总)”)。
但即便你定义了所有内容,读者也无法通过快速浏览来了解教程的大意,因为读到一半时,我们基本上就是在说另一种语言。
以下是教程进行到 30% 时的一段摘录。我已将非加密开发者不熟悉的术语加粗:
这些 rollups 的另一个巨大优势是它们保持 EVM compatible(EVM 兼容),这意味着你为 Ethereum 编写的代码可以 deployed to an L2(部署到 L2) 而无需任何额外工作。
我们真的需要这些解释吗?如果我正在跟随一个教程,我只想看到技术实际运行的效果。我不需要了解历史。对于我需要理解的任何概念,一个简化的解释就足够了。
坦诚面对 Base 的挑战
我对 Base 宣传话术最大的不满之一是,他们一直在重复这样的口号:“这是开发者构建新 Web 应用最简单的方式!它是无需许可的,所以任何人都可以在任何地方构建!”
然后你尝试开始构建时,他们却说:“哦,顺便说一下,你需要一个 Coinbase 账户*,而且 Coinbase 需要对你进行全身扫描来验证你的身份。还有,除非你采取这些笨拙的变通方法,否则你的应用无法存储超过几千字节的持久数据。还有,除非你采取这些笨拙的变通方法,否则部署后你永远无法修改你的应用。”
* 我知道使用 Base 并不真的需要 Coinbase 账户,但所有教程都走了这条路,却没有提供其他替代方案。
Base 目前还有一些粗糙之处,让入门变得困难。我认为教程应该对这些问题坦诚相告,而不是在中途让开发者措手不及,或假装这些痛点不存在:
- 即使只是想尝试一下 Base,你也需要花钱。
- 把钱弄到链上很麻烦(即使在 testnet(测试网) 上也是如此,因为 testnet faucets(测试网水龙头)会让你历经繁琐的步骤)。
- 你无法像在 web2 中那样正常地修改应用。
- 你无法像在 web2 中那样简单地存储数据。
- 似乎仅仅为了进行基础开发,你就必须与许多不同的参与方打交道(OnChainKit、Hardhat、Coinbase、Solidity)。
- 这可能并不准确,但这是我目前随手探索后的感受。
摆脱对 Coinbase 的依赖
我确信必须使用 Coinbase 肯定有其充分的理由,但如果读者必须创建一个 Coinbase 钱包,真的会严重拖慢教程的进度。
实际上,我一度很抗拒去尝试这个教程,因为我以为需要进行真正的 Coinbase 验证(几年前 Coinbase 因奇怪的原因锁定了我的账户)。
后来发现只需用 passkey(通行密钥)就能创建钱包,我才松了一口气,但或许可以把这一点说得更清楚一些,以免读者以为必须走完整个账户设置流程。
但我更希望这种摩擦能完全消失。比起为了将一个“hello world” smart contract(智能合约)发布到 Base testnet 而让我历经繁琐步骤的教程,我更喜欢一个无摩擦且虚拟的教程(即并不真正发布到区块链)。
mess with dns 这一由 Julia Evans(朱莉娅·埃文斯) 制作的教程就是一个很好的例子,这个教程需要复杂的基础设施(一个 DNS 服务器),但作者将复杂的部分抽象掉了,让读者可以在单个 Web 应用中完成所有操作。
在 Firefox 上测试
我能够跟随教程进行到“Read Contract”这一步,然后在“Read Contract”时就完全无法继续了。我使用的是 Win10 上的 Firefox:
随机一篇博客