#contract #fvm #write #macro #user #key-string #mode

fvm-macros

为用户提供宏,以便更方便地编写合约

1 个稳定版本

1.0.0 2023年2月7日

#14 in #fvm

Apache-2.0

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