1 个稳定版本
1.0.0 | 2023年2月7日 |
---|
#14 in #fvm
160KB
3K SLoC
提供编写fvm合约所需的宏
基本用法
宏可以在合约中使用,以简化合约准备过程,如下所示
use fvm_macros::contract;
use fvm_macros::storage;
use fvm_std::collections::hyper_map::HyperMap;
#[storage]
pub struct SetHash {
map: HyperMap<String, String>,
}
#[contract]
impl SetHash {
fn new() -> Self {
Self { map: HyperMap::new() }
}
pub fn set_hash(&mut self, key: String, value: String) {
self.map.insert(key, value);
}
pub fn get_hash(&mut self, key: String) -> &String {
self.map.get(&key).unwrap()
}
}
合约模式
现在编写合约有两种模式
- 正常模式
正常模式的合约受限于数据存储格式,用户可以更方便地编写合约。用户可以使用所有宏,除了 advanced_contract
。
- 高级模式
高级模式的合约不受数据存储格式的限制,并且必须通过 'fvm-std' 和 'fvm-macros' 库打开高级功能才能使用此模式。在此模式下运行的合约执行速度比正常模式下的合约快。
依赖项
~6.5MB
~117K SLoC