rust - NEAR 智能合约生锈错误:“无法使用 Borsh 反序列化值”
问题描述
我正在尝试调用视图方法来检索 u128 值的 Vec,结果出现此错误我不知道该怎么做有人可以帮助我吗?
{
"block_hash": "76auef76bmvvKT6kVZabiCrrHeTzoBP2vxGZGqaBjDc1",
"block_height": 54564995,
"error": "wasm execution failed with error: FunctionCallError(HostError(GuestPanic { panic_msg: \"Cannot deserialize value with Borsh\" }))",
"logs": []
}
at JsonRpcProvider.query (json-rpc-provider.js:116)
at async ConnectedWalletAccount.viewFunction (account.js:356)
at async <anonymous>:1:1
TypedError @ errors.js:18
query @ json-rpc-provider.js:116
谢谢您的帮助!
解决方案
我的疯狂猜测是,您重新部署了一份合约,在其中更改了状态结构的结构(标有 的结构#[near_bindgen]
)。因此,当您调用任何方法时,它都无法将现有状态反序列化为新结构。如果是这种情况,您有几个选择:
- 擦除并从头开始(使用新帐户或删除/创建现有帐户)
- 实现状态迁移:在 NearProtocol 中,如何迁移合约状态
推荐阅读
- ios - 如何阅读符号化的崩溃日志?
- javascript - 上传前压缩文件
- javascript - 如何在 CSS 样式中使用 JavaScript 变量?
- java - 按字段的字段比较两个对象
- javascript - 修改整个目录以使用 camelCase 命名约定
- sql - 如何以百分比形式显示列中的值并在 oracle sqldeveloper 中添加 % 符号?
- java - 如何使用 Java RandomAccessFile 从文件中正确读取字节?
- dotnetnuke - 2sxc 在同一模块的 2 个实例之间使用相同的数据集,但每个实例的应用程序设置不同
- docker - docker-compose 中的“图像”标签是什么意思?
- c++ - 如果发现任何重复项,如何创建修改的文件