一、升级概述
本文详细说明从Starcoin-Framework 1.0升级到2.0版本的完整流程。
二、主要升级步骤
1. Framework代码升级
将Framework从1.0版本升级至2.0版本,主要通过在新Genesis上执行applyset实现数据同步:
2. 资产映射实现
分两期进行资产迁移:
第一期:Token资产映射
用户数据获取 YSG
Token信息读取 (0x1::Account::Balance<Type>) YSG
Token注册者映射
TokenInfo
MintCapability
BurnCapability
Token持有者映射 (0x1::Token::Token<Type>)
信息写入实现 Bob
fn migration_legacy_token_info_to_register( address: AccountAddress, token_struct_tag: StructTag ) -> Changeset { ... } fn migration_legacy_token_to_fungible_asset( address: AccountAddress, token_struct_tag: StructTag ) -> Changeset { ... } // upgrade ... // apply changeset ... let change_set = migration_legacy_token_info_to_register(); storage.apply(change_set);
第二期:NFT资产映射
待实现
3. 生态项目适配
后续需要完成的项目改造:
Swap系统
Bridge系统
三、Token 映射
实际步骤
Starcoin 1.0 Token映射前准备工作:全面审查当前Starcoin 1.0 STC,其分布状态主要分布位置包括:
国库(0x1/Treasury::balance)
用户钱包(<useraddress>/0x1/Account/Balance/Token/STC)
DeFi生态系统(Swap、Bridge、借贷等项目)
映射执行流程:
建立新的数据结构
从初始化池中分配Token
确保准确分配到最终用户和智能合约
初始池子设计说明:
池子容量等同于Starcoin 1.0的STC总铸造量
Genesis阶段将Token存入0x1::asset_mapping待分配映射池
通过映射函数实现最终分配
这种结构化设计确保了Token迁移过程的透明性和准确性,同时为后续的映射操作提供了清晰的执行路径。
映射表
源路径 | 目标路径 | 描述 |
---|---|---|
0x1/Treasury::balance | 0x | 国库的额度 |
… |