You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

NEAR Rust智能合约调用view方法返回Borsh反序列化错误求助

错误根因

你遇到的Cannot deserialize value with Borsh错误是NEAR虚拟机执行合约view方法时,无法将链上存储的二进制数据/前端传入的参数,按合约声明的Borsh序列化规则完成反序列化导致的,针对你要返回Vec<u128>的场景,常见问题和修复方案如下:

常见问题&修复方案

  • 合约侧类型定义不匹配
    1. 确认合约中对应view方法声明的返回值类型确实为Vec<u128>,排查是否误写为其他类型:比如Vec<u64>、自定义封装的U128类型(非原生u128的序列化规则不同),或者返回值实际是带其他字段的结构体
    2. 如果合约最近做过升级,确认升级前后对应存储位置的类型定义没有变动,旧数据和新类型的序列化规则不兼容也会触发该错误
  • 前端调用侧参数错误
    1. 如果该view方法需要入参,确认你传入的参数符合合约要求的类型:u128类型的入参必须转成字符串传入,不能直接传Number类型,否则会触发溢出导致序列化错误
    2. 如果你是手动用Borsh反序列化返回值,确认你写的schema中对应返回值的类型定义为Array(u128),不要写错类型
  • 快速排查方法
    可以先用near-cli调用同一个view方法验证问题归属,命令参考:
    near view <你的合约地址> <调用的方法名> '{"参数名":"参数值"}' --networkId <mainnet/testnet>
    如果cli调用也报相同错误,问题出在合约侧;如果cli能正常返回结果,问题出在前端的调用参数或者类型声明配置。

内容的提问来源于stack exchange,提问作者Dorian Crutcher

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.12 16:45:02