IPFS基础篇之dags、objects、blocks

A peer-to-peer hypermedia protocol
to make the web faster, safer, and more open.

文章参照官网例子

Blocks理解

观察ipfs add 命令会看到这样一个描述

Adds contents of <path> to ipfs. Use -r to add directories.
Note that directories are added recursively, to form the ipfs
MerkleDAG.

add 命令将文件或者目录加入到ipfs中,形成了一个Merke DAG(directed acyclic graph),它遵循unixfs 的数据格式(protobuf),格式内容如下:

message Data {
    enum DataType {
        Raw = 0;
        Directory = 1;
        File = 2;
        Metadata = 3;
        Symlink = 4;
        HAMTShard = 5;
    }

    required DataType Type = 1;
    optional bytes Data = 2;
    optional uint64 filesize = 3;
    repeated uint64 blocksizes = 4;

    optional uint64 hashType = 5;
    optional uint64 fanout = 6;
}

当文件的内容超过256k或者add的是一个目录时,文件将会被拆分成block存储,并使用link nodes重排列成类似tree的一种结构。add命令返回的hash值其实是形成的DAG的root的hash值。当使用ipfs ls命令查看该hash值时,可以看到它包含的block。

举例说明:

  1. 生成文件
> dd if=/dev/zero of=test bs=258k count=1
1+0 records in
1+0 records out
264192 bytes transferred in 0.000474 secs (557395152 bytes/sec)

这将会生成一个名称为test,大小为258k的文件

  1. 添加到ipfs
> ipfs add test
added QmbZHydHNsDVdQJ5hYbCGAJCUPLF8vLdQDgSdxgHNjVKNY test
  1. 查看
> ipfs ls QmbZHydHNsDVdQJ5hYbCGAJCUPLF8vLdQDgSdxgHNjVKNY
QmRk1rduJvo5DfEYAaLobS2za9tDszk35hzaNSDCJ74DA7 262158
Qmcpc1Kk8Hhj3rVSnZGSrxzP4Fcp48cEARxMXxkHryUNJw 2059

可以看到,该文件被拆分成两个block,并且给出了两个块分别的大小

Block如何操作

最好是别使用ipfs cat查看block对应的hash值 (:oops),因为这会在你的控制台打印出一堆二进制数据。。
可以使用stat查看每个hash值对应block的大小,该大小不会包含子块的

> ipfs block stat QmbZHydHNsDVdQJ5hYbCGAJCUPLF8vLdQDgSdxgHNjVKNY
Key: QmbZHydHNsDVdQJ5hYbCGAJCUPLF8vLdQDgSdxgHNjVKNY
Size: 102

Blocks 与 Objects

在IPFS中,所谓的block指的是一块单独的数据单元,通过hash值引用。block可以是任何数据的排序,数据的组成顺序与其无关。而对于object来说,它指的是遵循了Merke DAG protobuf 数据格式的block,它是可以通过ipfs object 命令反序列化以及重组成的。任何给定的hash代表的是一个object或者block

创建一个block

创建自己的block非常简单,使用命令

> echo "block test " | ipfs block put 
QmWJiHNL2Lu1nMQW61cwhweBaEpCoiETbL53CjxEyZsHov
> ipfs block get QmWJiHNL2Lu1nMQW61cwhweBaEpCoiETbL53CjxEyZsHov
block test

要注意的是,自己创建block不能用ipfs cat命令查看,因为ipfs cat查看的是基于unixfs data 格式的数据

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • IPFS - Content Addressed, Versioned, P2P File System (dra...
    wade_van阅读 3,266评论 5 14
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,665评论 19 139
  • 有记者问姚明,你会支持女儿当篮球运动员么?姚明说:“现在孩子还太小,不过我觉得她需要参加体育运动,这是性格教育中的...
    收获幸福的半亩地阅读 2,147评论 4 2
  • 在一次非自主意愿的旅行中,我见到了阳阳。 阳阳曾得过自闭症,不愿和人说话,一度用方方正正、像副枷锁似的Ipad把自...
    繁顾阅读 439评论 0 1
  • 大学的末尾和朋友们去了一次九寨沟,回来的路上路过汶川,在都汶高速的路上突然想起了直面的意义,生活中的很多解决方法可...
    风中信阅读 270评论 0 0

友情链接更多精彩内容