在这篇文章中,我将详细介绍导致神秘错误消息的原因"Smart contract panicked: panicked at 'Cannot deserialize the contract state.: Custom { kind: InvalidData, error: "Not all bytes read" }"。
当您部署智能合约并存储信息时,状态将被序列化并存储在磁盘上。当您将另一个智能合约部署到您的帐户并且您更改了重要信息时,就会出现问题。NEAR 运行时将尝试从磁盘读取序列化状态,并使用部署到您帐户的任何智能合约代码加载它。如果它无法弄清楚如何执行此操作,则会输出错误消息Not all bytes read。
有关何时可能发生这种情况的示例,请参阅我们的 DevDocs 中的 NFT 从零到英雄教程的升级合约部分。
要了解最佳实践以及如何避免此类情况,请参阅这篇详细文章。