作者: 雾月
设想一种公链扩容方案,具有下列特性:
这样的方案确实令人非常兴奋:一方面它在扩容上基本已经做到了极致;另一方面在 Web3 的 mass adoption 上也奠定了很坚实的基础,基本消除了 Web2 与 Web3 使用体验的鸿沟。
不过目前我们似乎想不到有什么方案能做到如此完备,因为主流的讨论与实践确实太少。本文将前瞻性地介绍这种非常优秀和超前的下一代 Web3 计算平台设计范式——存储共识范式 (SCP,Storage-based Consensus Paradigm)。
我们在上面用扩容这个大家非常熟悉的议题作为引子,但实际上 SCP 并不仅限于扩容使用,其设计灵感确实来源于比特币、以太坊等公链的扩容方案与社区讨论。而它的愿景和实际应用是构建新一代的公链或非区块链结构的运算平台。
everPay 是 SCP 的先行者,已经基于 SCP 率先构建了自己的产品,目前 everPay 的主要功能为充值、转账、提现、swap,在此基础上日后几乎可以扩展出任何 Web3 和 Web2 功能。
现在我们通过 everPay 的工作流程来完整地理解存储共识范式。

我们可以看到整套系统他们达成的共识是全部位于链下的,这即存储共识范式的精髓——它抛弃了区块链式的节点之间的共识系统,从而让执行层摆脱繁重的共识交流和确认过程,只需要做好一台服务器的工作即可,从而达到近乎不受限制的 TPS 和经济性。这一点和 Rollup 非常类似,但 SCP 可以说是将 Rollup 这一概念更加抽象和拔高了,将其从一个扩容专属的用例变为了新一代 Web3 计算平台的设计范式。
everPay 的协调者是一台服务器,但这并不意味着协调者可以为所欲为。和 Rollup 的排序器道理类似,在将用户提交的原始数据批量地在 Arweave 上提交后,任何人都可以运行检测者程序对其进行验证,并和协调者返回的状态进行对比。这一点本身是因为状态转换函数(STF)是确定性的函数,输入 —> STF —>输出。只要大家的 STF 相同,输入相同(全部提交至 DA,无法篡改,公开可见),那么得到的输出一定是一样的。
在这种架构下,一个中心化的服务器、数据库并不构成根本的挑战。这也是 SCP 范式另一点精髓,将“中心化”和“单一实体”这两个概念绑定解耦了——一个去中心化的体系里,是完全可以有中心化的组件的,甚至可以是一个核心部件,但这并不影响整体上的去中心化。
由此我们可以喊出一个耸人听闻但又符合逻辑的口号——“下一代区块链不必是区块链”。因为人们发明和使用区块链的初衷是去中心化、账本一致、不可伪造、可溯源等等老生常谈的基本面,所以不论是旧公链的扩容方案还是一条全新的公链,大家都形成了一定的思维定式:我们做的东西必须是一条区块链(由节点交流的共识组成),或者是 Rollup 这种看起来是一条链的方案(只是有区块链的数据结构,但并没有节点交流共识)。但现在来看,基于 SCP 的方案即使它不是区块链,也可以满足中心化、账本一致、不可伪造、可溯源等等一系列需求。
执行层是在整个系统中是至关重要的,它承担了整个系统的吞吐量与运算,也决定了整个系统上可以运行怎样的应用。
理论上执行层中的执行环境可以做成任何形态,可能性是无穷无尽的,具体取决于项目方如何定位自己的项目:
因为用户完全摆脱了区块链形态的钱包,也只与服务器交互,它的用户体验与传统互联网应用是一致的,但同时又是去中心化的。
可以看到上述过程中已经包含了跨链 swap 和账户抽象等类似概念,当然仅仅是类似,我们仅仅是在 SCP 的语境下来理解。尤其是像账户抽象这种概念,对 SCP 来讲天然是不需要的,这个应该说是以太坊遗留的包袱。以太坊社区经过了很多轮的努力,终于推出了 EIP-4337 标准,来解决 Web3 大规模采用的问题之一——账户问题。而且 EIP-4337 仅仅是一个标准,其上的应用实践还有待考验。而在 SCP 架构下本身就不存在账户抽象的概念——你可以随意采用 Web2 标准账户和区块链账户等。从这个角度讲,许多成熟的 Web2 用例不需要重新思考和构建,就可以直接用于 SCP 上。
上面提到了账户系统,敏感的读者应该已经发现 SCP 虽然可以利用 Web2 的账户体系,但原封不动地使用似乎也有问题。
因为这整个系统,是完全透明的!直接使用用户对服务器的交互模型会出现严重问题,导致整个系 n 统毫无安全性可言。我们先回顾下传统的服务器 - 用户模型是如何工作的:
1.账号注册:用户在应用程序的注册页面输入用户名和密码。 为保护用户的密码,服务器收到后会通过哈希函数来处理密码。为增加哈希的复杂性并抵御彩虹表攻击,通常会为每个用户的密码连接一个随机生成的字符串(称为“盐”),一起哈希处理。用户名、盐、哈希被明文存储在服务提供商的数据库中,并不对外公开。但即使如此,也需要做加盐和安全处理,一防内鬼,二防攻击。

2.用户登录:用户在登录表单上输入他们的用户名和密码。系统比对处理后的密码哈希值和数据库中存储的哈希值。如果两个哈希值匹配,表明用户提供了正确的密码,登录进程继续。
3.操作认证:登录验证通过后,系统会为用户创建一个会话。通常情况下,会话信息被存储在服务器上,并且服务器发送一个标识(例如 cookie 或 token)给用户的浏览器或应用。用户在接下来的操作中不再需要重复输入用户名和密码:浏览器或应用会保存标识,并在每个请求中附带标识。
我们再回顾下典型的 Web3 的区块链 - 用户交互体系:
1.账户注册:实际上没有账户注册这一过程,也没有用户名 - 密码体系。账户(地址)不需要注册,天然存在,谁掌握其私钥谁控制该账户。私钥由钱包在本地随机生成,也不涉及联网过程。
2.用户登录:区块链的使用并不需要登录,大部分 dApp 没有登录这个过程,而是连接钱包。有的 dApp 在连接钱包后会要求用户对连接钱包的身份进行签名验证,确保用户真的持有这个钱包的私钥,而不是仅仅是向前端传了个钱包地址。
3.操作认证:用户直接向节点提交签名后的数据,节点验证后会向整个区块链网络广播该交易,满足区块链网络共识后用户的操作即被确认。
两种模式的差异是由对称和非对称导致的。在服务器 - 用户架构中,双方掌握相同的秘密。在区块链 - 用户架构中,只有用户掌握秘密。SCP 的执行层虽然可以不是区块链,但所有的数据又需要同步到公开可见的 DA 层,因此 SCP 所使用的登录、操作的验证方式必须是非对称的。但又因为不想有让用户保管私钥、使用钱包等影响大规模采用的累赘动作和较差体验,在 SCP 上构建的应用使用传统的 ID 密码或者 OAuth 三方认证登录的需求也很强,那么如何结合二者呢?
由于非对称密码学和零知识证明对具有不对称性,我设想了两种可能的方案:
不论使用哪种方式,这样都比传统方式的开发和运算的成本都要高一些,但这也是去中心化所付出的必要代价。当然,项目方如果并不认为做到极致的去中心化是必要的,或者在开发的不同阶段有不同的 milestone,没有这些设计也是可以的,因为去中心化不是非黑即白,而是存在中间的灰色区域。
上面刚才提到的透明的问题,不仅对用户的交互范式造成影响,也会对用户数据造成影响。用户的数据都是直接暴露的。虽然在区块链中不是问题,但这在某些应用中是不太能接受的,所以开发者也可以构建隐私交易系统。
执行层如何收费是另一个值得关注的点。因为向 DA 层提交数据也需要成本,包括自身服务器的运行等。传统区块链向用户收取 gas 费的第一个核心目的是避免用户刷大量重复的交易来破坏交易网络,第二个才是根据 gas 来排序交易。Web2 没有类似的担忧,所以只有对洪水、DDoS 这些基本的概念。
执行层可以自定义各种的收费策略,比如完全免费或部分收费,也可以从其他的行为如 MEV(在排序器中已经非常成熟),市场活动等进行获利。
执行层不具备抗审查性,理论上可以无限制地拒绝用户的交易。在 Rollup 中抗审查性可以由 L1 合约的强制归集功能来保证,而侧链或公链是完整的分布式区块链网络,也难以进行审查。
目前并没有明确的方案来修正这一问题,是 SCP 范式的一个问题。
该层是由松散的节点组成,这些节点并不主动构成任何网络,因此不是共识层,仅仅是用来向外界(如用户)确认当前执行层的状态的。例如,如果你对 everPay 的运行状态有所怀疑,可以下载其检测者客户端,其中会运行与协调者相同的 STF。
不过这和 Rollup 类似,由于数据是批量提交的,执行层给用户返回的状态总是比 DA 层上的更新的。这里面就涉及一个软硬最终性的问题。执行层给用户的是软最终性,因为还没有提交到 DA 层;而共识确认层给用户提供的是硬最终性。用户对此可能不是特别在意,不过对于跨链桥等应用,必须遵循硬最终性。比如,交易所的充值提现系统是不会依赖 Rollup 序列器的瞬时最终性的。
除了能用来确认结果以外,共识确认层还有一点很重要的作用,就是作为执行层的防灾冗余。如果执行层永久罢工、严重作恶,这个时候理论上任意的共识确认层都可以接手执行层的工作,接收用户的请求。如果发生如此严重的情况,社区应该会选择出稳定可靠的节点来作为执行层的服务器。
由于 SCP 并不是 Rollup,所以无法做到像 Rollup 提现结算层同样的不需要人工介入的、完全基于数学和智能合约代码的免信任的提现。它的安全程度是与侧链或跨链桥的跨链机制相同的,需要依赖有权限的观察者为资产放行,我们称为见证人模式。

将见证人桥做的尽可能去中心化,是很多跨链桥研究的议题。篇幅所限这里就不具体展开了。一个设计良好的 SCP 平台,在实践中也必须有信誉良好的去中心化桥的多签合作方,如 everPay 与 MPC 服务提供商 Safeheron 就进行了深度合作。
有人可能会问 SCP 为什么不使用有智能合约的链作为 DA 层?这样可以做出给予合约,完全免信任的结算层。
长远来看,只要克服一些技术困难,如果将 DA 层放到以太坊等有合约的 DA 层上并能构建出相应的用于验证的合约,SCP 也可以获得与 Rollup 相同的结算安全性,而不需要使用多签。
但实践中这未必是最优选择:
1.以太坊并不专门用于数据保存,相对于纯粹的数据存储公链来说价格太高。而对于 SCP 范式来讲,足够低的或者固定的存储成本是至关重要的。
2.证明系统非常难以开发,因为 SCP 中不光可以模拟 EVM,而可以实现任何逻辑。而我们看大像 Optimism 这种团队目前其欺诈证明仍然没有上线,以及 zkEVM 的开发难度,就可以想象在以太坊上想实现各式各样的系统的证明,是难度极高的一件事。
另外更关键的一点是,这个所谓的与 Rollup 相同的结算安全性,也仅仅是对于有智能合约的 DA 层这条链本身来说,比如以太坊,因为原始数据全部是传递到以太坊的,那么你在以太坊上的结算合约才能“引用”到原始的输入数据,来证明最终状态的正确性(注意,不是直接引用而是间接通过哈希或 accumulator 等留下原始 calldata 的状态标记,因为历史交易的 calldata 本身不能被合约引用)。但对于其他链来说,都无法享受到同样的安全性,因为他们上面什么数据也没有。如果要跨去其他链最终还是只能使用见证人模式的跨链桥。
所以 Rollup 这个方案只在特定的视角下有更优秀的结算安全性,也即你将一条链视为你的母链的情况下。SCP 并不是某种公链的扩容方案,而是一种更大的 Web3 计算平台架构,所以也不一定要在某某链中心主义的视角下来施行。将结算层建立在智能合约上,除了母链以外它并不能保障其他链的结算安全,如果你不是专门来给这条链扩容的这就显得完全不合理。
一张图对比 SCP 与其他范式。

SCP 是一种全新的 Web3 计算平台范式,媲美传统的 Web2 交易的应用速度,交易成本可以忽略,在其上可以构建出无限可能的应用,且安全性上与主流方案保持一致。目前 SCP 范式下已经涌现出一批应用如 everPay、PermaSwap、Mind Network 等,基于其优秀的设计理念,非常有希望在本轮和下一轮牛市迎来爆发式的增长。
关于 PermaDAO:Website | Twitter | Telegram | Discord | Medium | Youtube
Web3 正在加速发展,Arweave 作为基础设施将被更多的开发者采用,创造一个全新的、更加丰富多彩的生态系统。 PermaDAO 正是为此而建立起来的共建者社区。所有参与的人都能在这里找到自己的角色来贡献 Arweave 生态,任何关于 Arweave 的提案与任务都可以发布于此,并得到整个社区的支持与回馈。 加入 PermaDAO,建设 Web3!

【免责声明】市场有风险,投资需谨慎。本文不构成投资建议,用户应考虑本文中的任何意见、观点或结论是否符合其特定状况。据此投资,责任自负。
