Serialization NEAR是否同时需要序列化和BorshSerialize?

Serialization NEAR是否同时需要序列化和BorshSerialize?,serialization,rust,nearprotocol,Serialization,Rust,Nearprotocol,在Rust中编写接近智能合约时,我的编译器似乎要求通过API发送的对象具有Serialize特性,而存储在区块链中的对象具有BorshSerialize和BorshDeserialize。真的是这样吗,还是我做错了什么?我本以为BorshSerialize将提供Serialize,并且您可以使用一个库来实现这两个目的 我本以为BorshSerialize会提供Serialize 事实并非如此BorshSerialize是特定于的,而Serialize来自,两者都不表示另一个。返回类型需要序列化的

在Rust中编写接近智能合约时,我的编译器似乎要求通过API发送的对象具有
Serialize
特性,而存储在区块链中的对象具有
BorshSerialize
BorshDeserialize
。真的是这样吗,还是我做错了什么?我本以为
BorshSerialize
将提供
Serialize
,并且您可以使用一个库来实现这两个目的

我本以为BorshSerialize会提供Serialize


事实并非如此
BorshSerialize
是特定于的,而
Serialize
来自,两者都不表示另一个。返回类型需要序列化的原因是,我们希望将其序列化为json,以便在前端轻松处理。

您的观察是正确的
Serialize
是serde::Serialize,serde_json为您提供serde Serialize
BorshsSerailize
是一种序列化格式,由NEAR实现,常用于在链上存储数据。根据您的用例,您可能希望同时使用它们或单独使用它们。分别:创建存储在只有
BorshSerialize
的链上的“模型”,创建通过只有
Serialize
的API返回的“视图”澄清一下,Borsh没有实现serde Serialize的原因是因为这会阻碍其性能并显著增加代码大小,这会影响已编译合同的大小。