Skip to main content

Week5 - 8.1

Day1

Conflux Core Space 地址格式有哪些?

Conflux Core Space 地址格式有哪些?

Conflux Core Space 地址格式有两种

  1. Hex格式, 与以太坊格式类似,不同的是用户地址首字符置为1,合约地址首字符置为8; 例:0x1defad05b632ba2cef7ea20731021657e20a7596
  2. Base32格式,对Hex格式地址进行 base32 编码且附加地址属性描述; 例:CFX:TYPE.USER:AAKPBX01FZM1XP89CB7URF6YVYXH3GGX5E9HZ07B38

参考

Day2

Base32格式由哪几部分组成,为什么推荐使用Base32格式?

Base32 地址格式由哪几部分组成

Base32 编码是什么

Base32 编码指将 每5bit数值 编码为一个Base32字符;如将`0b00000"(对应16进制表示"0x00")编码为"a"

所有编码对应关系为 0x00~0x1f <==> abcdefghjkmnprstuvwxyz0123456789

Base32 格式地址包含哪几部分

  1. Network-prefix : 标识网络类型,cfx表示主网,cfxtest表示测试网
  2. Address type : 地址类型TYPE.XXX,包括用户地址、合约地址、内置合约地址、未知地址类型
  3. Payload : 对 Hex格式地址前面加一个全零字节的值进行base32编码的结果
  4. Checksum : 校验位,尾部8个字符,用于校验地址的正确性

示例如下:

CFX:TYPE.USER:AAKPBX01FZM1XP89CB7URF6YVYXH3GGX5E9HZ07B38
|   |        |                                  |--- Checksum
|   |        |--- Payload
|   |--- 地址类型
|--- 网络标识

Base32 地址格式比Hex地址格式增加了网络类型和地址类型信息,增强了辨识度

Base32 格式地址与 Hex 格式地址可以互相转换

为什么推荐使用 Base32格式?

由于Hex格式的地址与以太坊地址首字符不同可能导致在用户转账时误将以太坊格式当做conflux地址使用,导致转账或跨链时将代币转到错误的地址造成财产损失,所以推荐使用Base32地址,而同样为了避免该问题,官方主流钱包Fluent及大多社区钱包也不支持使用Hex地址格式转账。

参考

Day3

eSpace 地址

Conflux 从 v2.0 开始引入了一个全新的网络空间 eSpace (原空间被命名为 Core Space),该空间实现了以太坊的完全兼容,允许用户和开发者,直接使用以太坊生态的钱包和工具跟该空间交互。即eSpace的地址生成方式、地址格式、以及助记词derive path都是与以太坊完全一致的。

所以可以使用 Metamask 作为 eSpace 的钱包。

地址生成规则: espce地址生成原理

详情参见

Day4

Core Space 账号在 eSpace 的映射地址

Core Space 账号在 eSpace 的映射地址属于eSpace的用户地址类型

计算规则如下

  1. 将 Core Space 的 base32 地址 decode 为 bytes 类型
  2. 对 bytes 进行 keccak 哈希计算
  3. 取哈希结果的后 20 bytes,转换为 hex 格式

映射地址是为了两个空间资产跨链设计的概念,使用内置合约 CrossSpaceCall 可以转移eSpace映射地址资产到指定地址从而实现资产跨链,同时该内置合约也支持调用eSpace合约。

参考

Day5

Core Space 内置合约有哪些

Conflux 引入内置合约用于更好的系统维护和链上治理。现在 Conflux core space 有 6 个内置合约:主网上线时就有AdminControlSponsorWhitelistControlStaking合约,在 v2 硬分叉时又增加了 ConfluxContext, PoSRegister, ConfluxContext。 这些函数只能通过CALLSTATICCALL操作调用。使用操作 CALLCODEDELEGATECALL 与内部合约交互会触发错误。

他们的Hex格式地址为:

  1. AdminControl: 0x0888000000000000000000000000000000000000
  2. SponsorWhitelistControl: 0x0888000000000000000000000000000000000001
  3. Staking: 0x0888000000000000000000000000000000000002
  4. ConfluxContext: 0x0888000000000000000000000000000000000004
  5. PoSRegister: 0x0888000000000000000000000000000000000005
  6. CrossSpaceCall: 0x0888000000000000000000000000000000000006

参考