8个版本 (5个重大变更)
0.6.1 | 2024年8月13日 |
---|---|
0.6.0 | 2024年6月27日 |
0.5.0 | 2024年4月15日 |
0.4.0 | 2024年4月3日 |
0.1.1 | 2024年1月15日 |
#147 在 异步
19,309 每月下载量
用于 6 个crate(4个直接使用)
48KB
980 行
Blockstore
能够按CID索引任意数据的IPLD blockstore。
use blockstore::{Blockstore, InMemoryBlockstore};
use blockstore::block::{Block, CidError};
use cid::Cid;
use multihash_codetable::{Code, MultihashDigest};
const RAW_CODEC: u64 = 0x55;
struct RawBlock(Vec<u8>);
impl Block<64> for RawBlock {
fn cid(&self) -> Result<Cid, CidError> {
let hash = Code::Sha2_256.digest(&self.0);
Ok(Cid::new_v1(RAW_CODEC, hash))
}
fn data(&self) -> &[u8] {
self.0.as_ref()
}
}
async fn put_and_get() {
let block = RawBlock(vec![0xde, 0xad]);
let cid = block.cid().unwrap();
let blockstore = InMemoryBlockstore::<64>::new();
blockstore.put(block).await.unwrap();
let block = blockstore.get(&cid).await.unwrap();
assert_eq!(block, Some(vec![0xde, 0xad]));
}
tokio::runtime::Builder::new_current_thread()
.enable_all()
.build()
.unwrap()
.block_on(put_and_get());
贡献
我们欢迎贡献!请fork仓库并提交pull request。
许可协议
Blockstore采用Apache 2.0许可协议。有关更多详细信息,请参阅LICENSE文件。
关于Eiger
我们是工程师。我们通过构建底层实现和核心组件为各种生态系统做出贡献。
请联系我们[email protected],关注我们X/Twitter
依赖关系
~2–10MB
~98K SLoC