从 Web2 到 Web3
从观望、到投机、再到参与
最初我也是作为用户接触到了 Web3,和很多人一样是基于投机的心态,有过收益也交过学费。后来我逐渐意识到,在加密世界我们除了做一个普通用户之外,应该还可以从技术或者业务场景等角度去切入,参与到 Web3 的建设中去。
2021年底,Tencent 在 23周年纪念时给每一位员工空投了一个NFT,当时有很多讨论 Web3 的员工群都非常地活跃。这表明 Web2 的互联网公司内部已经有了一些 Web3 氛围,管理层也都看到了这个业务方向。但是由于各种主观和客观的原因,Web2 互联网公司对 Web3 依然是非常保守的,最终很难在业务层面真正落地——这也是促使我最终离开 Web2 互联网公司的原因之一。
当我内心已经决定all in Web3 的时候,我还是回归到程序员的角色去思考切入点:
首先有些程序员会选择作为科学家进入Web3(类似黑客的定位但不一定是传统的互联网安全技术),因为科学家可以直接利用手中的技能做一些套利相关的事情。但我个人并不想以投机者的身份入场,放弃! 由于 Web3 是基于区块链技术的新一代互联网,所以也需要很多懂技术的布道者。但是叙事能力并不是我的强项,所以这也不是我最好的选择。放弃! 最终我还是务实地选择继续在 Web3 做一名开发者,发挥自己最大的特长和优势。基于我的过往经验和技术栈,以及对纯金融属性项目的抗拒,我加入了一家极具潜力的 Web3 基础设施公司,这就是我和 Chainbase 的故事。
如何打响 Web3 的第一枪
先找到生态位,然后补足技术栈。
开发者进入Web3时,技术层面的专业技能并不是最大的障碍。很多技术栈是一致的或者是相通的,也有非常多的 Web3 开发者社区可以系统性学习。对于很多开发者,难点在于找到自己在 Web3 的生态位。例如个人以科学家或者科技写手入圈(Vitalik最早也是这样入圈的),或者直接加入一个 Web3 项目,无论是 toB 还是 toC。
在这里,我个人更加推荐直接加入一个 Web3 团队,这样才能深度地参与进来。如果你是自己创业或者加入了一家初创公司,那么带着产品参加Web3 Hackathon 是完成冷启动非常不错的方式。它能够让你快速验证产品、并获得早期用户。
当你已经找到了在 Web3 的生态位之后,自然会知道技术层面的专业知识有哪些欠缺,这时再针对性地学习就会非常高效。

Web3 开发者可能会遇到的一些挑战
首先要转变理念,拥抱 Web3 的新范式
“理念”这个词很抽象,我的理解是:“理念”是对于什么该做,什么不该做的一种共识。Web2 开发者进入 Web3 时,遇到的第一个关于理念的挑战,可能是关于中心化与去中心化的取舍问题。
几乎所有的 Web3 信仰者都会强调去中心化是区块链的内核之一。但是作为一款承载用户需求和体验的Web3产品,去中心化是一个必须的标准吗?我认为在不同的场景下,这至少不应该是绝对的标准。例如,一款
绝对去中心化的产品,是否能够达到工业级应用的标准?我认为现阶段是很难的,因为工业级的应用对于产品的效率和稳定性都需要一个明确的承诺,这在去中心化的结构下是很难保证的。另外大多数应用还是需要链下数据的,即便使用预言机等相关技术解决链下数据与智能合约的交互,也很难说这是一个完全去中心化的结构(预言机本身就有中心化的影子)。所以关于 Web3 应用的去中心化,更多的是根据具体场景把握好程度。
类似理念上的挑战还有很多,我建议大家在判断的时候,多关注 Web3 的内核和初心,多做独立思考。当理念真正被转变,你才真正进入了 Web3。
考虑多链生态带来的开发者成本
Web3 应用首先是基于某一条或多条公链开发的,选择公链需要项目方对不同公链的特性和生态都有比较深入的了解。目前公链生态百花齐放,这无疑增加了开发者选择公链的成本(也会增加选定后的开发成本)。
由于区块链不可能三角的存在(即去中心化、安全性、扩展性三者无法同时满足),不同的公链基本上都会选择其中的两个点作为突破的方向,这会导致不同公链的特性也不同。开发者选择公链时,应当考虑产品的应用场景是否与公链的特性匹配。
例如 Optimism(一条layer2公链),它可以支持很高的吞吐量。但是为了安全考虑,Optimism预留了一定数量的最新区块,使之成为可以被挑战的状态。即满足一定的条件下,已经被打包的交易依然可以被打回。这意味着链上资产或者信息的确权会存在一定的延后性。这样的特性对于例如实时支付类的应用场景或许是不适用的。
多链生态一定会长期存在,包括 Web2 很多技术栈的发展历史也可以印证这一点。所以了解多链特性、匹配使用场景对于 Web3 开发者会是一个长期的挑战。
3. 单前端无法满足 Web3 应用的开发需求
单看Dapp的技术实现原理,似乎只需要有一个前端,能够驱使智能合约执行相应逻辑,再将链上数据获取回前端就可以了。但是在实际的开发过程中,很多Web3 应用还是会在系统架构里融入一个服务端。
虽然服务端的存在会被很多人诟病为过于中心化(我们刚才也讨论过绝对中心化的问题),但是由于链上状态存储成本过高、可支持的吞吐量有限,以及考虑用户的体验感(如果每次交互都需要唤醒钱包签名就会让体验感大打折扣)等等——Web3 应用采用部分中心化的设计依然是最佳选择。这类似于在区块链与前端之间增加了一层缓存空间。
由于链上数据结构的特殊性(即链表式结构),链上数据的可读性非常差。Web2 的很多常规操作如对数据的索引、排序、过滤、分页和搜索等都非常难以执行。所以如何更便捷地读取链上数据,也是 Web3 开发者会遇到的一个非常痛的点。
