没有功能就可以访问NEAR智能合约中的公共结构文件吗?

问题描述

假设我有以下智能合约(在Rust中):

#[near_bindgen]
#[derive(BorshDeserialize,BorshSerialize)]
pub struct Number {
    pub val: u128,pub decimals: u8
}

是否可以在未为其定义decimals的情况下访问valpub fn

解决方法

TL; DR:不,没有getter函数,您将无法访问状态结构的特定公共字段。

长答案:当使用near-sdk-rs时,状态结构以Borsh序列化格式存储,但这只是在Near-sdk-rs帮助程序上定义的高级包装; NEAR协议不对存储的值(名称,格式或任何其他内容)施加任何约束,它仅为智能合约运行时提供键值存储。如果您想更深入地研究,可以view the raw state of your contract via RPC,并观察到有一个接近“ sdk-rs”为您创建的键“ STATE”,您可以将其与Borsh一起反序列化。