在NearProtocol中,如何迁移合约状态

2024-02-25

假设有一个用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
}

现在这个合约有一些使用,因此有一些记录tokens存储在链上。 然后我想通过添加一个字段来更新此合​​同Token:

pub struct Token {
   pub owner: AccountId
   pub name: String // For existing ones, this will be set to ""
}

如何在保留现有状态的情况下执行此操作(类似于进行数据库迁移)?


您还可以看到我们创建的一些示例如何使用版本控制。

参见莓果俱乐部:

#[derive(BorshDeserialize, BorshSerialize)]
pub struct AccountVersionAvocado {
    pub account_id: AccountId,
    pub account_index: AccountIndex,
    pub balance: u128,
    pub num_pixels: u32,
    pub claim_timestamp: u64,
}

impl From<AccountVersionAvocado> for Account {
    fn from(account: AccountVersionAvocado) -> Self {
        Self {
            account_id: account.account_id,
            account_index: account.account_index,
            balances: vec![account.balance, 0],
            num_pixels: account.num_pixels,
            claim_timestamp: account.claim_timestamp,
            farming_preference: Berry::Avocado,
        }
    }
}

https://github.com/evgenykuzyakov/berryclub/blob/ad2b37045b14fa72181ab92831fb741a7c40234b/contract-rs/pixel-board/src/account.rs#L19-L39 https://github.com/evgenykuzyakov/berryclub/blob/ad2b37045b14fa72181ab92831fb741a7c40234b/contract-rs/pixel-board/src/account.rs#L19-L39

还有其他的,但一旦我找到它们,我就必须回到这个

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在NearProtocol中,如何迁移合约状态 的相关文章

随机推荐

  • 无法使用 Jersey 服务器加载 JSP 页面

    我的 Web 服务使用 jersey 2 4 无法让主页加载 index jsp 我制作了一个 IndexService POJO 来尝试从那里加载它 但这不起作用 我想只使用主页 而不是使用 IndexService POJO 已到达 P
  • 在Python中从另一个文件导入变量

    我已经声明了一些变量并用一些值初始化它们variables py flag 0 j 1 我想在另一个文件中使用这些值main file py import variables if flag 0 j j 1 但是我收到以下错误 NameEr
  • 如何获取可用 NSFont 系列的列表?

    如何获取可用 NSFont 系列的列表 最好使用 fontName 等效项 NSLog NSFontManager sharedFontManager availableFontFamilies description Gives Abad
  • r dplyr group_by 值折叠并粘贴

    我有一个看起来像这样的数据集 Id Subject Date Vitals Value 10 John 2001 05 29 HeartRate 65 10 John 2001 05 29 HeartRate 68 10 John 2001
  • 在 python 中按第一(或第二,或其他)列对文件进行排序

    这似乎是一个非常基本的问题 但我是Python新手 在花了很长时间尝试自己寻找解决方案之后 我认为是时候询问一些更高级的人了 所以 我有一个文件 样本 ENSMUSG00000098737 95734911 95734973 3 miRNA
  • 当FormArray嵌套在另一个FormArray中时如何获取FormArrayName?

    参考 https angular io docs ts latest api forms index FormArrayName directive html https angular io docs ts latest api form
  • Python:从 Ipywidget 按钮重置 Matplotlib

    在 Jupyter 笔记本中使用 iPyWidgets 和 Matplotlib 时 即使有多个子图以及带有多个滑块的多个变量 也很容易获得实时更新的图形 只需设置一个interact包含激活的绘图函数以及两个滑块变量的构造函数 pylab
  • 如何获取符号链接的绝对路径?

    如何获取符号链接的绝对路径 如果我按照以下方式进行 char buf 100 realpath symlink buf 我不会获得符号链接的绝对路径 但我会获得此符号链接链接到的绝对路径 现在我的问题是 如果我想获取符号链接本身的绝对路径怎
  • 连接两列中具有相同值的两行

    这是我的桌子的打印屏幕图像 我有一个名为 table 的 MySQL 表 当我写下 SELECT FROM table 在 while 循环中 我想获得一次相同的 fikraNo 和 maddeNo 值 但是如果 fikraNo 和 mad
  • 使用 ODBC 连接 SQLite,无需注册数据库

    是否可以在 C 中连接到 SQLite 并使用 ODBC API 而无需在 ODBC 中注册数据库 我有使用 ODBC 与数据库通信的代码 但不想使用 SQLite 进行重写 也不想注册新的 ODBC 连接 您应该能够在不更改任何代码的情况
  • firebase中的数据排序

    我正在存储一个score对于我在 firebase 中的应用程序的每个用户 user name score 我想显示一个排行榜 其中包含前 10 位用户的姓名和分数 并保持实时更新 实现这一目标的最佳方法是什么 查看排行榜示例以了解执行此操
  • 如何获取所有Windows组?

    我写这个是为了获取特定用户所属的组 DirectoryEntry AD new DirectoryEntry WinNT Environment MachineName computer DirectoryEntry user AD Chi
  • 用户控件回发在更新面板中不起作用

    我有一个带有更新面板的母版页
  • 到同一个 Razor 页面的多个路由

    背景 我的 Asp Net Core 3 1 网站中有一个名为 SignupAndApply 的剃刀页面 它实际上是注册身份页面的复制和粘贴 但是 有一些附加字段 允许可选的 applyid 作为路由的一部分传递 如果我传递 applyId
  • 如何将 Angular CLI 升级到最新版本

    这个问题的答案是社区努力 help privileges edit community wiki 编辑现有答案以改进这篇文章 目前不接受新的答案或互动 Using ng version I got 角度 cli 1 0 0 这不是可用的最新
  • 改进您的构建过程

    或者 当一开始就没有太多的构建流程时 实际上建立了一个构建流程 目前 这几乎就是我的团队面临的情况 我们主要进行网络应用程序开发 但目前不进行桌面开发 即使对于我们普通的应用程序 软件部署也是丑陋且笨拙的 而且在我加入这个团队 和公司 的两
  • 是否可以在我的网络应用程序中使用 Google Talk 的音频聊天服务?

    我正在用 PHP 构建一个应用程序 我想知道是否可以在我的 Web 应用程序中使用 Google Talk 的音频聊天服务 是的你可以 Google 将 Google talk 定义为 开放式 IM 服务 以便您可以将自己的客户端应用程序连
  • 在同一端口上运行 Angular 和 ASP.NET Web API

    我目前正在使用 Angular 向运行 ASP NET 的 API 服务器发出 API 调用 但是 对于角度开发 我有一个跨域问题 我使用的是 localhost 在生产版本中 它们都将使用 IIS 在同一域下运行 有没有办法在 ASP N
  • 如何根据某些条件更改 jinja2 条目的颜色? (使用烧瓶)

    我刚刚完成了烧瓶教程 http flask pocoo org docs 0 12 tutorial 逐步创建博客 Web 应用程序 这些条目通过 jinja 模板呈现 ul class entries for entry in entri
  • 在NearProtocol中,如何迁移合约状态

    假设有一个用near sdk rs编写的合约 已部署 其状态定义为 near bindgen derive BorshDeserialize BorshSerialize pub struct NFT pub tokens Unordere