从数字花园出发,走进以太坊生态
和很多事情一样,开端是凌晨三点的 WhatsApp 聊天。
我在和朋友 Andrew 介绍给博客做的时间线功能:一份个人日志,按条目类型用颜色区分,由我写的 agent 技能自动填充。他说自己也需要类似的东西,我就让他直接拿去用。接着我提到,最近特别享受不断打磨自己的数字花园:想怎么塑造就怎么塑造,没有限制。
他的回复是:“这让我想把你拉进以太坊生态。”
“什么意思?”
“‘花园’这个词在以太坊圈子里很流行,比如‘无限花园’。”
“带我一个!”
就这样,接下来一个小时,我一部分时间和 Andrew 聊,一部分时间和 ChatGPT 聊,一路深挖,试着真正理解以太坊是什么,以及它和一个基于 Markdown 的个人博客有没有关系。
下面是我的收获。
终于理解了的概念
之前我几乎没认真想过以太坊,它只是背景里的“加密货币那些东西”。
真正让我理解的说法是:以太坊是一台共享的全球状态机,代码以确定性的方式执行。 所有与它交互的人都会看到相同结果。没有中央机构控制结果。你无需信任运营者,可以独立验证。
最后这一点,是观念上的关键变化。我目前博客的信任模式是:“相信我,相信作者、服务器或 Git 历史。” 但 Git 历史其实可以重写,时间戳由服务器所有者控制。你信任的是运营者。
基于账本的系统把它翻转过来。验证模式变成:“自己独立验证。” 历史不可篡改,作者身份有密码学证明,顺序由全球共同认可。
区别不在于“可验证还是不可验证”,而在于依赖信任,还是把信任需求降到最低。
账本究竟是什么
我不断听到“账本”,脑中总会浮现会计账簿。其实已经很接近了。
账本是一份随时间只追加、不改写的事件记录。有顺序,有历史,不能悄悄重写。可以想象成银行流水,或者 Git 提交历史,只不过 Git 允许 rebase。
以太坊账本是一条共享、抗篡改的交易与事件时间线。每条记录由钱包签名,经网络验证,并有全球共同认可的顺序。没人能回头改变已经发生的事。
我问更新文章怎么办,Andrew 解释得很好:交易历史与最终状态是分开的。你可以让智能合约按自己想要的方式更新状态,但这些更新的历史无法改变。
“有点像不能重写的 Git 历史,哈哈。” 我说。
“对,我刚好也想这么说,哈哈。” Andrew 回答。
以太坊实际验证什么,又不验证什么
以太坊验证:
- 某个特定钱包签名并提交了一笔交易。
- 交易在当时有效。
- 相应的状态变化确实发生。
- 提交的数据具体是什么。
以太坊不验证:
- 这个钱包是否确实属于你。
- 内容是否真实、真诚。
- 数据意味着什么。
- 任何关于外部现实的事。
账本验证的是某个特定钱包执行了一个动作。作为个人的你与钱包之间的联系,仍然是一项依赖信任的声明。只是你只需公开把钱包与身份关联一次,而不是每篇文章都重新声明。这与现有博客模式有实质区别,但不等于证明了作者身份。
这不是缺陷,而是理解系统实际作用的正确方式:给定一个钱包地址和一笔交易,全世界任何人都可以独立验证它确实发生过、发生的准确时间,以及记录没有被篡改。它的保证范围有限,但非常强。
如何用在博客上
自然的做法是把链上与链下分开。
**链上:**文章标题、slug 或内容哈希、作者钱包地址、时间戳、事件日志。
**链下:**完整的 Markdown 内容、渲染、媒体。
原则是:把锚点放到链上,而不是全文。 把完整博文存在链上,gas 成本很高,永久性又难以管理,技术上也别扭。智能合约并不是为 CMS 设计的。但把内容哈希存到链上,任何人就都能独立验证:内容自登记以来没有变化。
验证流程变为:获取文章 → 计算哈希 → 与链上哈希比较。两者一致,就验证了内容完整性。
同步问题
这里开始成为一个有趣的设计问题。如果博客与区块链记录可能不一致,你就有了两个事实来源。
有三种处理方式:
方案 A:以链为准。 所有文章都必须记录到链上,网站从链上读取。一致性强,但发布阻力大。
方案 B:以网站为准,账本作为辅助。 博客是主系统,链是可选的证明层。灵活、阻力小,但只能部分验证。
方案 C:混合模式,推荐。 引入明确状态:draft、published、verified。在界面里显示:已验证用对勾,尚未记录用波浪号,不匹配用感叹号。
方案 C 的关键是:冲突成为可见的系统状态,而不是隐藏的问题。 不一致时,不假装一切一致,而是承认文章可能先存在于博客、之后才存在于链上,并为这种现实设计。
从 Sepolia 测试网开始
Andrew 建议从 Sepolia 开始,它本质上是以太坊的沙盒版本。机制与主网相同,使用没有真实货币价值的测试 ETH,适合安全地实验。他还说,如果我想再进一步,现在主网也挺便宜;Sepolia ETH 则可以从水龙头免费领取少量。
建议的起点是:使用 Solidity 开发环境 Foundry,编写一个合约并部署到 Sepolia,让 agent 带着我看清实际发生的事情。这就是下一步。
观念上的部分
除了技术细节,这次谈话真正打动我的,是我逐渐形成了自己对以太坊基金会在做什么的理解。协议像是一个以太坊宇宙的底层构造,基金会希望人们在上面建造,以各自的创意为这个宇宙增添内容。这就是“无限花园”的比喻:一片共享的土壤,任何人都能在上面种东西。Andrew 确认我理解对了。
我的博客已经是一座小小的个人数字花园。有意思的问题是,把其中一部分扎根到共享、可验证的一层,会意味着什么。吸引我的不只是永久性本身,而是信任模式变化会如何影响我对发布的理解。
现在的理解是:“我控制并展示自己的历史。”
加入账本后的理解是:“我把自己的历史发布到一个共享、可验证的系统里。”
这里面有些东西,值得慢慢想。
接下来
- 配好 Foundry,把一个玩具合约部署到 Sepolia。
- 写一个最小的
PostRegistry合约,发出包含标题、slug 哈希和作者的PostCreated事件。 - 写一个验证脚本,对比本地文章哈希与链上记录。
- 想清楚
draft → published → verified状态机在博客里实际如何呈现。
我会边做边记录每一步。目标不是把它变成一个 web3 博客,而是通过做一个小而具体的东西,从内部理解这个生态。
后续再写。
感谢 Andrew Morris 带我走进这场凌晨三点的探索。