「金锄矿业」IPFS的技术架构

IPFS有八层子协议栈 , 从低往高分别为身份、网络、路由、交换、对象、文件、命名、应用 , 每个协议栈各司其职 , 又互相搭配 。
身份层和路由层
「金锄矿业」IPFS的技术架构
文章图片
IPFS有八层子协议栈 , 从低往高分别为身份、网络、路由、交换、对象、文件、命名、应用 , 每个协议栈各司其职 , 又互相搭配 。
身份层和路由层
对等节点身份信息的生成以及路由规则是通过Kademlia协议生成制定 , KAD协议实质是构建了一个分布式松散Hash表(distributedhashtable) , 简称DHT , 每个加入这个DHT网络的人都要生成自己的身份信息 , 然后才能通过这个身份信息去负责存储这个网络里的资源信息和其他成员的联系信息 。
【「金锄矿业」IPFS的技术架构】网络层
lib2p可以支持任意传输层协议 。 ICENATtraversal框架整合STUN、TURN和其他类型的NAT协议 , 该框架可以让客户端利用各种NAT方式打通网络 , 从而完成NAT通信 , 这对于IPFS的p2p网络非常重要 。
交换层
类似迅雷、电驴这样的BT工具 , IPFS团队把BitTorrent进行了创新 , 叫作Bitswap , 它增加了信用和帐单体系来激励节点去分享 , 用户在发送给其他节点数据可以增加信用值 , 从其他节点接受数据降低信用值 。 如果用户只去接收数据而不分享数据 , 信用分会越来越低而被其他节点忽略掉 。
对象层和文件层
对象层共同管理IPFS上80%的数据结构 。 大部分数据对象都是以MerkleDAG的结构存在 , 这为内容寻址和数据去重提供了便利 。
文件层是一个新的数据结构 , 和DAG并列 , 采用Git一样的数据结构来支持版本快照 。
命名层
具有自我验证的特性(当其他用户获取该对象时 , 使用指纹公钥进行验签 , 即验证所用的公钥是否与NodeId匹配 , 这验证了用户发布对象的真实性 , 同时也获取到了可变状态) , 并且加入了IPNS这个巧妙的设计来使得加密后的DAG对象名可定义 , 增强可阅读性 。
应用层
IPFS核心价值就在于上面运行的应用程序 , 可以利用它类似CDN的功能 , 在成本很低的带宽下 , 去获得想要的数据 , 从而提升整个应用程序的效率 。