文章目录
Arweave 作为存储公链,属于 DA 层设施,和以太坊等公链不同,Arweave并没有用于链上计算的虚拟机,那么如何解决计算问题呢
一、前言
Arweave 作为存储公链,属于 DA 层设施,和以太坊等公链不同,Arweave并没有用于链上计算的虚拟机,那么如何解决计算问题呢?
这就用到了 SCP 模式,这是一种全新的去中心计算框架,区别于现在以太坊为主的公链,SCP 把计算由链上放到了链下,实现了存储和计算的分离。这给区块链扩容和降低 gas 费用打开了广阔的空间,并且通过 Arweave 保证数据一致性和安全,下面让我们探究这种全新模式。
二、SCP概念和理论基础
SCP 即 Storage-based Consensus Paradigm,**基于存储的共识范式,是一种基于 Arweave 的全新的去中心计算框架。**SCP 分离了计算和存储,区块链不进行任何计算仅进行数据存储,所有计算由链下的客户端/服务器执行,生成的状态也由链下客户端/服务器进行保存。
2.1 图灵机纸带
图灵机是计算机世界的理论基石,其处理对象是一条无限长的纸带,并配有一张策略表。图灵纸带被划分为若干格子,格子内是输入数据,策略表是读到格子数据后应得到的输出。我们把纸带各自的内容依次读出输入到策略表,就能计算出一个状态 State。
2.2 SCP原理
SCP 的灵感就来自于图灵机,回归最本真的计算机原理。
区块链也是一条链式结构,我们把区块链看做是一条图灵机纸带,那么区块的交易数据即可看做图灵纸带的输入,而智能合约代码即看做图灵机的策略表。
由于区块链具备可追溯、不可伪造的特性,我们把合约代码和所有输入都放到区块链上,那么在链下任何人执行出的结果(**State)**都是一致的。程序加载来自区块链的确定性参数,最终生成的程序状态也是确定性的。
如上图所示,我们把合约代码存入102区块,输入在103等后面的区块,链下计算程序加载102的可信代码,并将输入参数依次读出,在虚拟机中进行计算,输出的状态也比如具备一致性。任何人都可以运行程序,任何人运行的结果都一致的,达到可信计算的目的。
2.3 为什么 Arweave 适合 SCP
模型理论上可行的,但考虑到存储成本和计算成本,以太坊作等公链显然过于昂贵,会花费大量的gas,并且以太坊等区块链本身就具有计算功能,没必要采用SCP模式。
SCP模式适用于Arweave,因为Arweave 是一条以永久存储为目标的区块链,以极低的价格对数据进行永存,我们可以将存储计算范式以极低的成本进行实践。
在 Arweave 上, 我们可以更专注于让智能合约保持状态, 而 Arweave 就作为图灵机的纸带,在底层记录各个修改状态的交易。
2.4 SCP优点
- 性能无限制
可以进行任意复杂度的计算,计算能力取决于链下机器的性能。(链下计算)
- 极低的共识成本
共识的成本仅包含存储成本,不再包含计算成本。计算成本由链下计算者(应用方)提供。
- 分片能力
SCP是天然的分片结构,数据计算者之需要关心自己应用的数据,无需关心其他数据。
- 组合性
SCP应用程序具备和组合性,多个应用之间组合时加载多个应用的数据即可。
由此可见,采用SCP模式开发的程序,其吞吐量取决于链下计算的机器性能,只要采用合理的设计,几乎可以达到web2应用的速度和吞吐量。更重要的,由于 SCP 是在链下计算,所以 Dapp 运行成本极低。没有以太坊高昂的gas费用、高交易延时,SCP应用可以构造无转账手续费、实时到账的金融级用户体验。
2.5 无开发语言限制
通过 SCP 构建应用给了开发者极高的自由度。由于计算是在链下,我们可以运行任何计算环境,开发者可以使用熟悉的任何语言,无论是 Java、Solidity、Python,只要获得标准化的输入,都可以构建出同样的结果。(需要一致的虚拟机运行环境)
在 Arweave 中,每个应用程序可看做独立的 L1,Arweave 看做 L0 也就是 DA 层,负责数据的可信存储。这里和以太坊等公链不同的是,Arweave 上不存储执行状态 state,只存储合约代码和输入,而这些输入都是经过上传者签名并通过验证的,这就在数据层保证了交易的可信。而执行状态 state在 SCP 应用中自行维护。
2.6 Merge Node
这种结构的问题是用户可以对应用进行 DDoS 攻击,即发送大量无效交易,堵塞客户端的执行。因此我们需要一个角色来进行交易的排序和验证,这类似于 Rollup 中的排序者和验证人。可以对交易进行验证,并批量打包到链上,来提高吞吐率并降低 gas 费用。
因此我们需要一组节点,提前对交易进行排序和上传,这组节点我们称之为 Merge Node,职责类似于以太坊 Rollup 中的 Sequencer。Merge Node 接收交易并进行 Bundle(打包)上传,来自各方的交易均会在 Merge Node 中按照规则进行排序,并且更重要的是,运行环境只认可 Merge Node 上传的交易。
Merge Node 可以通过单节点或者多节点的方式运行。多节点的方式更加去中心化,多个 Merge Node 以 PoS 的形式组成一个网络,节点排序、上传交易获取一定的代币奖励,并且节点需要质押一定代币,如果节点作恶将被惩罚。在该网络中,每个 Bundle 数据包的上传者可以通过 Arweave 的最新区块 Hash 作为种子进行随机选举,保证网络不会被单节点垄断。各 Merge 节点之间只需要共享交易池即可。
2.7 可验证性
上面提到的 Merge Node 将数据 Bundle 并上传到 Arweave 上,任何第三方都可以下载到所有的数据,运行虚拟机并依次执行输入,得到最终的 state 状态。这样就做到了无准许的可验证性,达到去信任化共识。
三、知名项目
3.1 everPay
everPay 是用SCP 模式开发的支付协议,由 everVision 开发,具备区块链的透明和可信特性,同时又具备传统互联网应用的高性能和可用性,可以做到实时转账,无手续费。
everPay 中有三个角色参与协调者(Coordinator),检查者(Detectors)和守望者(Watchmen)。
协调者(Coordinator)
类似上文提到的 Merge Node,负责交易验证和上链。协调者使用单笔实时验证,延时批量上链模式。用户的交易发送到协调者时,服务器会进行实时的计算和验证,更新服务器余额到最新状态。协调者是高可用的后端服务程序,确保交易的顺序和正确性,在数分钟内,协调者将这段时间内的一批交易按照时间的先后顺序打包到区块链上。
检测者(Detectors)
类似上文提到的验证者,everPay 协议的链下智能合约代码会开源,合约代码可以在任何人的机器上运行并且计算 everPay 交易。任何人都可以下载链下智能合约代码成为系统中的检测者,该程序会自动加载 Arweave 上的交易数据,自动计算和验证这些交易。
守望者(Watchmen)
守望者是 everPay 协议中的多签治理成员,在 DAO 中,守望者这个角色非常重要,它需要生成提案和签署提案,提案只有获得了大多数(大于51%)守望者的签署后才能执行。
协议的最终安全性是由 SCP 的客观性以及 Arweave 网络进行保证的,守望者承担了跨链资产锁定的安全职能。守望者生成提案要按照链下智能合约代码进行处理,提案的生成和签署都是自动化的。由于链下智能合约和链上可信数据生成的最终状态唯一,如果有守望者提交了非法的提案,协议也可以自动检测并进行应急处理。
3.2 Smartweave
Smartweave 是构建在Arweave上的去中心合约开发框架。和 SCP 思想类似,Smartweave 也是将合约代码和输入存储到 Arweave 上,并在链下执行,实现了存储和计算的分离。
Smartweave 提出一种惰性执行(lazy-evaluation)的概念,即合约和输入存储到 Arweave 上,只有需要执行的时候才把交易加载并运行。
Smartweave 在 JavaScript 环境中运行,用户只要打开浏览器就可以成为节点,在网页中直接运行 Smartweave 程序。这样可以基于 Arweave 构建一个全去中心的网站,类似Permaweb。把用户推送的内容上传到Arweave,在网页中用graphql进行实时查询,就可以实现一个去中心的内容网站,类似推特 https://now.arweave.net
3.3 Warp
Warp 也是一个基于 SCP 构建的通用智能合约平台,由 RedStone 团队开发。相对于 Smartweave,Warp 具备更强的可用性。Warp 内置了 WASM 合约环境,用户可以使用 JS、Rust 等语言编写合约并快速获取合约执行的结果,速度上可以达到秒级确认。合约的执行也是在去中心化多节点的网络中进行,保证了可信性。
在 Warp 的架构中 Sequencer 用于对交易进行提交和排序,这些交易中包含合约代码和函数输入参数,这些交易通过 Bundlr 打包上传到 Arweave上。然后通过 Gateway 来获取 Arweave 上的交易参数,并输入到执行环境进行计算,输出最终 state。
Warp 中代码执行过程:
- sequencer 对交易进行排序,并签名
- Bundlr 对交易进行打包,以保证交易的完整性和上传可靠性
- 交易上传到 Arweave上,并可以进行查询
- Gateway 加载交易,并且对分叉和非法交易进行处理
- 使用 Warp 提供的 SDK 或者 DRE(Delegated Resolution Environment for Warp Contracts)执行交易