存储
这是您用Cairo能写的最简短的合约:
#[starknet::contract]
mod Contract {
#[storage]
struct Storage {}
}
存储是一个结构体,用 #[storage]
标注。每个合约必须有且仅有一个存储空间。
它是一个键值存储空间,其中每个键都将映射到合约存储空间的存储地址。
您可以在合约中定义 [存储变量](./variables.md#storage-variables),然后使用它们来存储和检索数据。
#[starknet::contract]
mod Contract {
#[storage]
struct Storage {
a: u128,
b: u8,
c: u256
}
}
实际上,这两个合约的底层 sierra 程序是一样的。 从编译器的角度来看,存储变量在使用之前是不存在的。
您还可以阅读有关 存储自定义类型 的内容。