1. 概述
IPLD(Inter Planetary Linked Data)在IPFS起着非常重要的作用,其概念性的介绍可以参考Protocol Labs的项目官方网站。本文主要介绍如何集成一个类似新区块链项目的数据块到IPFS系统中,从而实现区块数据在IPFS系统的存储、解析等功能。
目前IPFS有go和Javascript等多种语言的实现方式,本文主要从go语言的代码系统来介绍。在go语言的IPFS系统中除了内部已经实现了JSON、RAW、CBOR以及Protobuf格式的数据存储外,同时也提供一个Plugin的方式来支持、实现新的IPLD 数据格式的扩展与支持,新的数据格式通过一个Plugin来实现IPLD所要求的接口即可完成集成。由于这个Plugin是基于go语言的插件(把go语言实现代码转换成动态库文件,比如linux的so文件)机制来实现的,其存在windows系统中不支持的限制。
2. 实践
2.1 IPFS plugin加载介绍
在IPFS daemon启动过程中会调用一个makeExecutor的函数,该函数的一个主要工作就是加载和初始化IPFS的plugins,IPFS的插件缺省是存放home目录(以linux为例)的.ipfs/plugins中。代码参考如下:
在LoadPlugins这个函数中完成了plugin的加载和初始化工作&