是戏法是真货?深度解读Filecoin Q1&Q2 Update

北京时间周二午夜,协议实验室公布了Filecoin 2018年第一季度和第二季度的进展(参考链接1),内容包括开发进展,研究进展,路线图,媒体报道和演讲,filecoin与协议实验室两个两个项目IPFS和libp2p的关系等内容。Update描述的Filecoin开发进展比之前详细的多,再结合Q2 Roadmap(参考链接2),心里觉得踏实很多,感觉Filecoin项目还是挺靠谱的。

从Filecoin开发进展开Filecoin架构

图1: Filecoin Development Update

上面是Filecoin的开发进展,这是Filecoin项目第一次涉及到和协议实验室的IPFS和libp2p两个项目的关系。原本这篇文章之前,我心里面Filecoin和二者的关系是这样的。 图2: 我原本想象的Filecoin与IPFS和libp2p

看完这次资料之后,脑补了下面这张图: 图3: 脑补Filecoin与IPFS,Libp2p关系

上图中数字代表开发进展中的数字编号。上图中IPLD是IPFS中的重要组件(见下图),它用于IPFS数据表示和管理,IPFS中默认使用balanced merkledag存储数据。 图4: IPFS Stack

下图是协议实验室js-ipfs团队提供的IPFS核心架构图,可以看到DAG向上通过unixfs提供和*nixz一致的文件和目录管理,对下连接Bitswap(即上图的exchange,节点间数据交换)和blocks service(IPFS节点负责本地存储的接口)。笔者后续可以会写IPFS数据之旅系列文章,心急的小伙伴可以参考 这篇文章:Understanding the IPFS White Paper part 2 (参考链接3) 图5: ipfs core architecture https://github.com/ipfs/js-ipfs#ipfs-core-architecture

上图没有表示的内容有:

Filecoin研究进展

Filecoin研究一直围绕复制证明(Proof of REPlication)进行。在协议实验题500万美元的资助下,今年上半年也的确有5篇PoREP论文(参见公司公众号的解读:深度剖析复制证明论文),目前这方面研究已经转向PoREP的细分领域。 进展同时强调,上面对于PoREP的改进和Filecoin的测试网络是并行进行的,这里面的优化是说的性能优化,我认为言外之意是测试网络上线的时候很有可能不会用到这些性能优化,也就是说刚开始测试矿机需要性能比较强。考虑到Filecoin未来的需求,团队也在如下方面有部分投入:

  1. fully off-chain market orders;
  2. chain compression using proofs;
  3. user-defined file contracts;
  4. scalable consensus. 这次Update和Roadmap多次提到了On-chain和Off-chain的工作。结合之前Filecoin白皮书的Filecoin客户与矿机之前的交互协议(见前文图6),可以有更准确的理解。

libp2p与Filecoin

Other libp2p transports for Filecoin Highlight里面重点提到了Transports。

QUIC

libp2p新增的QUIC准备用在Retrieval Market。QUIC是libp2p的Transport接口(参考链接5)的实现。默认的Transport实现包括TCP,UTP(Micro Transport Protocol)。另一方面,go-ipfs QUIC支持正在合入 add QUIC support (参考链接6)。未来可以使用形如下面的multiaddress通过QUIC访问,”/ip4/0.0.0.0/udp/4001/quic/“,此外社区再讨论要不要支持”/ip4/127.0.0.1/udp/0/quic”,0表示由操作系统分配端口。

Tor

Tor改善了网络通信的匿名和隐私,所以适合用在用在安全和隐私要求比较高的存取文件场景。从2015年开始,社区就开始讨论Tor集成到IPFS,目前有两个思路,一个是OpenBazaar项目的go-onion-transport(参考链接7),需要在系统或浏览器中集成Tor,并打开Tor control port,参见:参考链接8。另一种是IPFS中集成Tor。

使用libp2p的区块链项目

libp2p used by many blockchain application Libp2p有Polkadot, 以太坊,OpenBazaar(项目介绍参见公司公众号文章 :IPFS生态之淘宝篇), Livepeer, Keep Network和Paratii等区块链项目使用。其中Polkadot和以太坊都在最近从以太坊的devp2p迁移到了协议实验室的libp2p,而且Polkadot还是第一个实际使用rust-libp2p的项目(参考链接8),笔者也很吃惊,要知道libp2p的rust开发时间是最短的,但是Rust在移动设备,嵌入式设备和c语言绑定方面有很大优势。又没有go语言的gc问题。想必对于Polkadot要解决区块链互操作性问题有帮助。

IPFS与Filecoin

IPFS和Filecoin这部分说明了什么是IPFS,并解释了二者的关系,但是有意思是的,里面没有提到任何IPFS具体技术。似乎说明IPFS基本满足了Filecoin的需要。有意思的是,IPFS和libp2p两部分都强调了二者对浏览器的支持,笔者猜测Filecoin所有的监控运维能力都通过ipfs和libp2p实现,从浏览器直接通过libp2p协议连接到Filecoin网络。 Some recent IPFS User Highlights

Roadmap / Upcoming Milestones

go-filecoin collaborator & contributor preview (ETA: 2018 Q4)

在今天第四季度,go-filecoin会引入早起社区贡献者。申请表格有如下信息:

go-filecoin v1.0.0 feature freeze (ETA: 2019 Q1/Q2)

2019年第一第二季度go-filecoin v1.0.0版本feature freeze(特性冻结)。此后不能再添加新的特性,在修复所有已知问题之后,会进入Code Freeze(代码冻结)。Code Freeze之后做系统测试,如果没有问题,版本会Release(发布)。

Security Review & Audit (ETA: 2019 Q1/Q2)

1.0.0 release之后会进行严格的安全review和审计。

Launching the Filecoin mainnet (ETA: 2019 Q2/Q3)

主网上线之后,会持续改进网络的扩展性,完善网络工具,建立Filecoin基金会。基金会是开源社区的一种运作方式。例如Linux foundation(Linux基金会),多年来不仅仅支持了Linux社区的发展,还支持了Linux社区其它社区的发展,例如联盟链中常用的基础设施Hyperledger就是Linux基金会的项目。

Filecoin Project Roadmap (2018-Q2)

文中还提到了Filecoin Project Roadmap (2018-Q2) (参考链接2),里面涉及到更多技术细节。文中用绿色表示基本完成,黄色表示正在进行,无颜色是TODO。从中可以看到

你可能感兴趣的文章

区块链与数据存储周报

原创技术文章

参考链接

  1. Filecoin 2018 Q1 & Q2 Update: https://filecoin.io/blog/update-2018-q1-q2/ 
  2. Filecoin Project Roadmap (2018-Q2) : https://docs.google.com/document/d/1cgss-rifFO2iSJgnMmOsD_tPal40MUp1m7crTFQuVYQ/edit?usp=sharing 
  3. Understanding the IPFS White Paper part 2: https://hackernoon.com/understanding-the-ipfs-white-paper-part-2-df40511addbd
  4. smart contract: https://blockgeeks.com/guides/smart-contracts/
  5. Libp2p Transport Interface:https://github.com/libp2p/go-libp2p-transport/blob/master/transport.go#L42
  6. add QUIC support: https://github.com/ipfs/go-ipfs/pull/5350
  7. OpenBazaar/go-onion-transport: https://github.com/OpenBazaar/go-onion-transport
  8. Requirement of OpenBazaar Tor:https://github.com/ipfs/notes/issues/37#issuecomment-307966649
  9. Polkadot PoC-2: https://medium.com/polkadot-network/polkadot-poc-2-is-here-parachains-runtime-upgrades-and-libp2p-networking-7035bb141c25