版本比较

密钥

  • 该行被添加。
  • 该行被删除。
  • 格式已经改变。

...

代码块
languagerust
pub struct ReadSet{
  state:Vec<(AccessPath,Vec<u8>)>,
}
pub struct ReadSetProof{
  //TODO define proof
}

pub struct StateFullTransaction{
  read_set: ReadSet,
  proof: ReadSetProof,
  transaction: SignedUserTransaction,
  //Transaction info is transaction execute result, include new state_root, event_root, etc.
  transaction_info: TransactionInfo,
}

(这里需要一张图来说明状态数,读取集,以及状态证明的工作方式)

富状态交易(StateFullTransaction)本身包含了交易执行的前置状态,是可以自校验的,校验方法的伪代码表达如下:

...

  1. 累加器(Accumulator),在其他项目中叫定序器(Sequencer)或者聚合器(Aggregator)。它主要的功能是给交易排序,并且定期将 Layer2 的交易提交到 Layer1 。Stargate 的 Rollup 方案中,它不仅仅提供排序,同时会将交易哈希进行累加,用于提供交易的顺序证明。累加器同时也要执行交易,并且定时将每个交易执行之后的状态树的根哈希提交到 Layer1。

  2. 状态提供者(State Provider),按照累加器提供的交易顺序,执行交易,给第三方提供状态查询接口。

  3. 交验者(Verifier),执行交易并和累加器提交到 校验者(Verifier),执行交易并与累加器提交到 Layer1 的状态树的根哈希进行比较,如果发现累加器作弊则向 Layer1 提交欺诈证明。

当前 Stargate 的 Rollup 方案属于 Optimistic Rollup 的一种。Optimistic Rollup 方案下,Layer1 并不会校验 Layer2 的每个交易,而是乐观的相信 Layer2 的 Accumulator 节点,直到有校验者提出欺诈证明,这样相当于把计算和状态都迁移到了 Layer2。

考虑到未来可能引入 ZK Rollup 方案,Stargate 的架构上,交易的校验机制设计为一种抽象的方案,可以通过富状态交易的重复执行的方式实现,也可以通过零知识证明的方式实现,可以通过统一的架构适配不同的方案。

Stargate 的 Rollup 方案相对于其他的 Rollup 方案有几个差异点:

  1. 累加器复用 Layer1 的 PoS 共识机制,实现去中心化以及高可用。共识机制以及节点集群,实现去中心化以及高可用。

  2. 通过累加器的顺序证明,以及富状态交易的验证机制,让钱包客户端也具有验证交易的能力,从而承担校验者的能力。

  3. 如果数据可用性也由钱包客户端来保证,则累加器可以只给 通过累加器提供的顺序证明,以及富状态交易的验证机制,让钱包客户端也具有验证交易的能力,从而承担校验者的能力。

  4. 数据可用性由 Layer2 PoS 共识网络以及钱包客户端来保证,累加器可以只给 Layer1 提交 Layer2 交易的哈希,这样 Rollup 可以将吞吐再提升一个量级。

Rollup 依然依赖 Layer1 的全局共识,所以受限于 Layer1 的吞吐能力。它的主要目标是降低 Layer1 的计算成本,将状态维护在链下,通过乐观挑战机制保证安全,给用户可以即时确认交易状态,提供类似互联网应用的体验。同时也为 的计算成本,将状态维护在链下,通过乐观(Optimistic)挑战机制保证安全,可以即时确认 Layer2 的交易状态,给用户提供类似互联网应用的体验,同时也为 Layer3 的扩展方案打好基础。

State Channel

状态通道(State Channel) ,或者叫支付通道(Payment Channel),也是一种比较成熟的扩容方案。它的思路是双方各自抵押一部分资产在链上,然后在链下维护一个两个参与方的局部共识状态,每次变更都需要双方确认。但为了解决单方不合作难题,任何一方都可以单方在链上发起关闭通道的交易,等待一个挑战期后,通道自动解除。Channel),以闪电网络(Lightning Network )为代表,也是一种比较成熟的扩容方案。它的思路是双方各自抵押一部分资产在链上,然后在链下维护一个两个参与方(理论上也可以扩展到多个参与方)的局部共识状态,每次变更都需要双方确认。但为了解决单方不合作难题,任何一方都可以单方在链上发起关闭通道的交易,等待一个挑战期后,通道自动关闭,参与方按最后一次双方确认的状态进行清算。

Stargate 中的 State Channel 方案和其他状态通道有几个差异点:

  1. State Channel 中可以执行合约,这样通道不仅仅用来转账,还可以执行一些复杂的,有状态累计的合约。

  2. 因为它可以执行合约,所以也可以支付任意类型的 Token。Token,以及 NFT。

  3. 构建在 状态通道构建在 Layer2 之上,而不是 Layer1 之上,主要是要依赖 Layer2 的即时确认能力,降低建立通道的成本。

...

  1. 的即时确认能力,降低建立通道的成本以及确认时间。

状态通道之所以没有大规模的应用,关键原因有两个,Layer1 上的状态通道创建成本比较高,等待确认时间比较长。

但如果状态通道在 Layer2 之上,则可以消除这两个难题。这样 Starcoin/Stargate P2P 网络中的任意两个节点,都可以将自己的 P2P 连接升级为状态通道,然后通过状态通道进行数据传输和流式计费。 连接升级为状态通道,然后通过状态通道进行数据传输和流式计费。同时,也为 DAppService 提供了基础设施。

DAppService

基于 Stargate 框架搭建的通过 StateChannel 网络提供付费的 框架搭建的,通过状态通道网络提供付费的 RPC 服务。

DAppService 本身不是去中心化的,但它是在 P2P 网络上的,可以通过 P2P 网络进行服务发现以及远程调用,通过状态通道进行计费。

它相当于 Web2 服务到 Web3 服务的一个桥,任意当前的互联网服务都可以将自己的付费机制变更为流式计费机制,直接接入到 Web3 的 P2P 网络中。

DAppChain

基于 Stargete 框架搭建的,包含一个子共识机制的 框架搭建的,包含子共识机制的 DApp Chain。它的核心逻辑由合约写成,并且注册到 Layer2 中,注册时需要抵押一定数额的链上资产。用户可以将资产从 Layer2 转移到 DAppChain 中,在 DAppChain 中执行合约。它的安全也受 中,注册时需要抵押一定数额的链上资产。它的安全受 Layer2 约束,但因为它是一个局部共识,Layer2 并不知道它的所有交易,所以安全性比 Rollup 方案要低。如果用户遇到欺诈,可向 Layer1 提交欺诈证明,Layer1 Layer2 提交欺诈证明,Layer2 会对 DApp 进行惩罚,但惩罚的上限以 DApp 的注册抵押资产为上限。

...