美文网首页
IPFS七层协议栈之对象层

IPFS七层协议栈之对象层

作者: 建怀 | 来源:发表于2018-09-13 17:00 被阅读0次

IPFS七层协议栈之对象层

对象层(Objects)

  基于分布式哈希表DHT和BitSwap技术,IPFS期望构造一个庞大的点对点系统,用于快速、稳健地存储和分发数据块。IPFS使用Merkle DAG技术构建了一个有向无环图数据结构,用于存储对象数据。这也是Git使用的数据结构,Merkle DAG为IPFS提供了很多有用的属性,包括:

  • 内容可寻址:所有内容由多重哈希校验并唯一标识。
  • 防止篡改:所有内容都通过哈希校验,如果数据被篡改,IPFS网络将能检测到。
  • 重复数据删除:相同内容有相同哈希,只存储一次,对索引对象特别有用。

Merkle DAG的对象结构定义如下:

type IPFSLink struct {
    Name string     //此link的别名
    Hash Multihash  //目标的加密hash
    Size int        //目标总大小
}

type IPFSObject struct {
    links []IPFSLink    //links数组
    data []byte         //不透明内容数据
}

路径

  可以使用API遍历IPFS对象,路径与传统UNIX文件系统中的路径一样,Merkle DAG链接使遍历变得简单,完整路径如下所示:

# format
/ipfs/<hash-of-object>/<name-path-to-object>
# example
/ipfs/XLYkgq61DyaQ8Nhkcqyu7rcnSa7dSHQ16x/foo.txt

当然也支持多哈希指纹的多级路径访问:

/ipfs/<hash-of-foo>/bar/baz
/ipfs/<hash-of-bar>/baz
/ipfs/<hash-of-baz>

本地对象

  IPFS客户端需要一个本地存储器,一个外部系统可以为IPFS管理的对象存储以及检索本地原始数据。存储器的类型根据节点使用案例而已,在大多数情况下,这个存储器只是硬盘空间的一部分(不是被本地的leveldb来管理,就是直接被IPFS客户端管理),在其他的情况下,例如非持久性缓存,存储器就是RAM的一部分。

对象锁定

  希望对某个对象数据进行长期存储的节点可以执行锁定操作。以此保证此对象被保存在了该节点的本地存储器上,同时也可以递归地锁定所有相关的派生对象,这对长期存储完整的对象文件特别有用。

发布对象

  IPFS是全球分布的文件系统,DHT使用内容哈希寻址技术,使发布对象是公平的,安全的,完全分布式的。任何人都可以发布对象,只需要将对象的Key加入到DHT中,并且对象是通过P2P传输的方式加入进去,然后把访问路径给其他的用户。

对象级别的加密

  IPFS具备可以处理数据对象加密的操作,加密对象结构定义如下:

type EncryptedObject struct {
    Object []bytes              //已加密的原始对象数据
    Tag []bytes                 //可选择的加密标识
    type SignedObject struct {
        Object []bytes          //已签名的原始对象数据
        Signature []bytes       //HMAC签名
        PublicKey   []multihash //多重哈希身份键值
    }
}

加密操作改变了对象的哈希值,定义了一个不同新的对象结构,IPFS自动的验证签名机制,用户自定义的私钥加解密数据都为对象数据提供了安全保证。同时,加密数据的链式关系也同样被保护着,因为没有解密密钥就无法遍历整个链式对象结构。

文章借鉴《IPFS与区块链:原理与实战》推荐大家购买正版书籍。

相关文章

  • IPFS七层协议栈之对象层

    IPFS七层协议栈之对象层 对象层(Objects)   基于分布式哈希表DHT和BitSwap技术,IPFS期望...

  • IPFS七层协议栈之文件层

    IPFS七层协议栈之文件层 文件层(Files)   IPFS定义了一组对象,用于在Merkle DAG之上对版本...

  • IPFS七层协议栈之交换层

    IPFS七层协议栈之交换层 交换层(Exchange)   IPFS中BitSwap协议旨在通过对等节点间交换数据...

  • IPFS七层协议栈之命名层

    IPFS协议栈之命名层 命名层(Naming) IPNS:命名以及易变状态   IPFS形成了一个内容可寻址的DA...

  • 网络协议、端口和Socket

    1、网络协议分层 网络层次可划分为五层因特网协议栈和七层因特网协议栈。 1.1 五层因特网协议栈 因特网协议栈共有...

  • IPFS协议栈以及身份层、网络层和路由层

    IPFS协议栈以及身份层、网络层和路由层   与HTTP类似,IPFS是基于TCP/IP的应用层协议,同时作为一个...

  • “100问”教你读懂IPFS【2】

    第7问:IPFS架构是怎么样的? 答:IPFS至少有八层子协议栈,从上至下为身份、网络、路由、交换、对象、文件、命...

  • Socket编程之TCP/IP和OSI参考模型

    TCP/IP协议栈以及OSI参考模型 1.OSI七层模型 2.OSI七层功能 wKiom1SIA_nwv_AgAA...

  • OSI-体系结构

    一 OSI七层模型 OSI七层协议模型以及个模型协议 OSI七层协议模型主要是:应用层(Application)、...

  • Dubbo剖析-Dubbo协议

    一、前言 TCP协议栈中,每层模型都有自己的协议报文格式,TCP协议是网络七层模型中的传输层,在TCP上层是应用层...

网友评论

      本文标题:IPFS七层协议栈之对象层

      本文链接:https://www.haomeiwen.com/subject/fdfggftx.html