VecMapper `extend_from_slice` - testnet 和 devnet 之间的差异

VecMapper `extend_from_slice` - differences between testnet and devnet

我发现 testnet 和 devnet 在 VecMapper 上的 extend_from_slice 如何工作方面存在一些差异。它在 devnet 上工作正常,但同一 SC 中的相同 endpoint/function 在 testnet 上中断。我想知道为什么。

这是失败的函数https://github.com/juliancwirko/elven-nft-minter-sc/blob/main/src/lib.rs#L273

奇怪的是,在测试网上,它只在传递的值大于 64 时中断。

以下是相同智能合约、相同代码、相同端点和发送数据的结果:

适用于这两种环境的是不使用 extend_from_slice 而是直接推送到 VecMapper,它消耗大量气体,是两倍多。

错误数据:

以下是一个小组的回复,该小组也提出了这个问题:

There are some limitations regarding Rust's dynamic allocation, which can cause some sc calls to fail. We recommend using managed types instead, which only allocate memory inside the VM, or use static buffers