当使用命令“near-vm”执行汇编脚本智能合约方法的模拟测试时会出现问题,该方法接受 i32、u32、i64、u64 等类型数字的输入。返回以下错误“FunctionCallError”:“WasmUnknownError”。
如何重现:
- git 克隆https://github.com/Learn-NEAR/starter--near-sdk-as
- 构建 (
yarn
) 和运行测试 (yarn test
)。一切都应该运作良好 - 现在添加简单的公共方法来添加到数字
src/simple/assembly/index.ts
export function add(a: i32, b: i32): i32 {
return a + b;
}
- (可选)你也可以添加相应的单元测试
src/simple/__tests__/index.unit.spec.ts
,它会成功通过
it("should return the sum of two integers", () => {
const sum = add(1, 2);
expect(sum).toBe(3);
})
- 现在使用near-vm运行模拟测试时出现问题
yarn near-vm --wasm-file build/debug/simple.wasm --method-name add --input '{"a": 1, "b": :2}
然后你得到 "FunctionCallError":"WasmUnknownError"
{"outcome"{"balance":"10000000000000000000000000",
"storage_usage":100,"return_data":"None","burnt_gas":39848843793,"used_gas":39848843793,"logs":[]},
"err":{"FunctionCallError":"WasmUnknownError"},"receipts":[],"state":{}}
请注意,当方法参数为字符串时,不会出现此问题。