Gitee + 区块链:基于 IPFS 的去中心化代码托管环境探索
Gitee 团队一直在探索去中心化的存储技术,甚至是建立于区块链上的完全去中心化的存储,以为开发者提供更安全、稳定的代码托管环境,为此我们一直在跟踪和研究两大核心技术问题,一是去中心化的底层存储技术,二是适用的高效共识算法。
一、去中心化的底层存储协议
在底层存储协议方面, Gitee 团队深入研究了 IPFS 协议,同时在探索 IPFS 协议作为底层存储技术在实现去中心化代码托管的落地可行性和优缺点。
IPFS(InterPlanetary File System – 星际文件系统)是一个基于内容哈希寻址的点对点的超媒体分发协议,2014 年开始由 Protocol labs在开源社区下推动发展,目前已经提供了基于 Golang 的开源实现(详情请访问:https://github.com/ipfs/ipfs),站在存储角度,IPFS 具有如下主要特点:
1. 去中心化存储,相对目前的基于 HTTP 的中心化存储网络,去中心化存储可以避免大型中心服务器的单点故障的问题。
2. 基于内容寻址,IPFS 的内容定位不在通过URI的形式,而是通过内容的唯一 hash 进行定位得到内容的存储地址。
3.天然抵抗 DDOS,基于其去中心化和内容寻址的特点,IPFS 网络具备天然抵抗 DDOS 的特性。
4.减少存储冗余,IPFS 会对文件按照一定的尺寸进行拆分,然后对每个分片计算 hash,对于相同 hash 的分片只会存储一份,对于有大量重复文件的场景,这会大大的减少存储的冗余。
5.天然的 CDN,IPFS 是一个基于 p2p 的去中心化网络,任何一个节点均可作为入口节点,再结合其分片存储的功能,这让 IPFS 网络具备天然的内容加速功能。
6. 自动版本管理,IPFS 的实现中默认内置了 Git 的实现,从而实现存储的版本化管理。
IPFS 的特性拓展 Gitee 代码存储的想象空间,近期,我们测试了 IPFS 在文件存储的方面的性能,发现其目前的 Golang 实现版本在私有 IPFS 存储网络的情况下,性能相比目前的基于 S3 协议的对象存储不相上下,大文件存储(大于等于 1G)方面性能比 S3 协议甚至更优,这对我们的存储技术探索之路来说,是值得振奋的消息。
二、共识算法
关于共识算法方面,Gitee 团队研究对比了几个前沿的区块链存储项目,例如:Filecoin, Blockstack, Storj 等,也在测试他们各自的共识算法以便于找到或改进得到更适合 Gitee 去中心化代码托管环境的共识机制。
Gitee 团队持续加大对此方向的研究,包括研发和测试用于代码托管的公链,并持续分享相关的探索成果。
本文系作者 @Gitee 原创发布在 Gitee 官方博客。未经许可,禁止转载。