假设有一个用 Near-sdk-rs 编写的合同,已部署,状态定义为:
#[near_bindgen]
#[derive(BorshDeserialize, BorshSerialize)]
pub struct NFT {
pub tokens: UnorderedMap<TokenId, Token>,
}
#[derive(BorshDeserialize, BorshSerialize)]
pub struct Token {
pub owner: AccountId
}
Run Code Online (Sandbox Code Playgroud)
现在这个合约有一些用途,因此一些记录tokens存储在链上。然后我想通过添加一个字段来更新这个合同Token:
pub struct Token {
pub owner: AccountId
pub name: String // For existing ones, this will be set to ""
}
Run Code Online (Sandbox Code Playgroud)
如何在保留现有状态的情况下执行此操作(类似于执行数据库迁移)?