1 个稳定版本
1.0.0 | 2022年7月28日 |
---|
#6 in #estimating
11KB
218 行
简单的存储气表
一个简单的CosmWasm存储气表,用于估算从kv存储中的气使用量。
使用方法
单元测试
使用MemoryStorageWithGas
代替MemoryStorage
或MockStorage
。
// let mut storage = MockStorage::new();
let mut storage = MemoryStorageWithGas::new();
let map = Map::<u64, Vec<u8>>::new("0");
let data = b"hello";
map.save(&mut storage, 0, &data.to_vec())?;
let gas = storage.last_gas_used();
assert_eq!(gas, 2960);
多测试
使用cw_multi_test::App
代替MemoryStorage
或MockStorage
。
由于cosmwasm_std::Storage
特质的性质,我们不能直接将dyn Storage
向下转换为MemoryStorage
。
因此,我们通过指针将存储作为特质对象传递,并通过该指针访问气日志。
let storage = MemoryStorageWithGas::new();
AppBuilder::new()
.with_storage(&storage) // <- ref ptr here
.build(|r, _, storage| {
r.bank
.init_balance(
storage,
&Addr::unchecked("admin"),
vec![Coin::new(100, "uluna")],
)
.unwrap();
});
let gas = storage.last_gas_used();
assert_eq!(gas, 3650);
依赖关系
~4.5–6MB
~130K SLoC