Skip to main content

Spaces 介绍

Space 概念

Conflux 网络在 v2.0(Hydra) 升级中通过 CIP-90 引入了一个全新的空间 - eSpace, 该空间是一个接口上完全兼容以太坊的独立空间独立链,实现了 RPCEVM 层面的完全兼容。而原有的链保持不变且不受影响,被命名为 CoreSpace

空间是一个逻辑上的概念,用于将以太坊格式交易Conflux TX 隔离与区分。两个空间是逻辑上相互独立互不影响的。

也可以把 Core 和 eSpace 理解为两条单独的链,而 eSpace 是 Core 的子链。类似于 Avalanche 的三链架构。

又或者可以参照操作系统虚拟化技术的概念,把 eSpace 理解为在原有网络之上虚拟出来的一条以太坊链

为什么要引入 eSpace

Conflux 通过创新性的树图共识,实现了一个高性能的完全去中心化的公链。Conflux 网络的交易手续费极低,相比于以太坊等网络几乎可以认为免费。但由于网络上线时间较晚,基础设施和工具不完善。为了降低项目和用户的迁移成本,且让用户享受到 Conflux 低手续费,高 TPS 等优势,引入了 eSpace。

通过实现接口上的完全兼容,以太坊的智能合约和应用不做任何修改,可直接部署至 eSpace;以太坊的开发工具,SDK,钱包,服务等可直接在 eSpace 使用;用户也不需要学习新的知识,使用原有工具直接上手。

两个 Space 的关系

CoreSpace 和 eSpace 是逻辑上独立的两个空间,有各自的交易,账户状态,合约,两者互不影响:

  • 与 Core 空间交互,需要使用 Conflux 原有的钱包(Fluent), SDK(*-conflux-sdk), 开发工具(chainIDE, conflux-truffle)。
  • 与 eSpace 交互则可直接使用以太坊现有生态工具和产品,比如 Metamask, truffle, hardhat, ethers.js 等(将工具的 RPC 网络设置为 Conflux eSpace RPC 即可)。

底层数据存储上,两个空间复用了同一个数据账本(链),一个数据区块可能会同时包含两个 Space 的交易,只是在交易执行时按照交易类型进行区分,各自只会对本空间内的账户状态产生影响。

Space 间如何通信

引入 eSpace 全新空间(链)的时候,并没有引入新的 Token,在 eSpace 中仍然需要使用 CFX 来支付交易手续费和价值转移。通过新引入的 CrossSpaceCall 内置合约可实现 CFX 在两个空间互跨。

映射地址 (Mirror Address)

每个 Core 空间的账户在 eSpace 会存在一个对应的账户,我们称之为 Mirror Address, 但反之 eSpace 的账户在 Core 则没有。Core 账户在 eSpace 的映射地址是通过固定的规则计算出来的,具体步骤为:

  1. Base32 地址进行 decode 操作,得到 Buffer 格式的地址 payload
  2. 将 payload 进行 keccak 计算,并取最后 20 个字节
  3. 将上一步得到的地址进行 hex 编码即是在 eSpace 的映射地址

Conflux 各 SDK 均提供了计算 base32 地址映射地址的方法:

> const { address } = require('js-conflux-sdk')
undefined
> address.cfxMappedEVMSpaceAddress('cfx:aamgvyzht7h1zxdghb9ee9w26wrz8rd3gj837392dp')
'0x62954816cE133B41Ab888e1b68b62549DE2f32e0'
>

注意:不要把 base32 地址 decode 之后的 hex 地址,直接作为 eSpace 映射地址使用,该操作是错误的,会导致资金丢失

CrossSpaceCall 内置合约

CrossSpaceCall 是位于 Core 空间的一个内置合约,其 hex40 格式地址为 0x0888000000000000000000000000000000000006 该合约的具体接口可参看它的接口文档

CrossSpaceCall 内置合约主要提供如下几个功能:

  1. CFX 在两个空间互跨
  2. Core 空间发起交易,在 eSpace 部署创建合约
  3. 在 Core 空间调用 eSpace 的合约方法

CFX 的空间互跨是同步的,在一笔交易内即可完成,相较于跨链要更加简单,安全,快速。ConfluxHub CrossSpace app 即是基于此内置合约开发的一款 CFX, ERC20 空间互跨应用,使用非常简单。

CrossSpaceCall 内置合约详情可参看单独的介绍

开发者如何选择

Conflux Core 空间,是原生空间,支持合约代付网络空间更大(TPS更高),但需要使用独有的 Base32 地址,RPC, SDK 等。因此如果你想开发一个全新的项目,可以选择 Core 空间,项目的用户可以免 gas 费与项目交互。

如果是一个以太坊项目想利用 Conflux 的高性能,低收费特性,降低用户成本,可选择 eSpace;项目可直接部署,无须做任何修改。如果开发者是一名熟练的以太坊工程师,也可直接选择 eSpace,使用熟悉的工具,SDK 快速上手。

参考