传统的文件系统是操作系统的一部分,一般是在内核里面实现的。区块链系统都运行在用户态,如何把区块链变成一块存储盘呢?这就要用到Fuse(Filesystem in Userspace)了,简单来说它是一个用户态文件系统框架,只要你的程序实现了open、read、write等等一系列接口,就可以虚拟出一个文件系统。
一个简单而大胆的想法,就是用文件的名字作为key,然后把文件的内容作为value,借助智能合约存储到���块链上,比如put_object(“/mydir/1.txt”, “a long story”)。读取该文件,就是调用get_object(“/mydir/1.txt”)。列出目录,就是通过new_iterator(“/mydir”)循环遍历迭代器,拿到所有该前缀的文件名。说干就干,马上写出一个超级链合约,实现我们这个文件系统的内核。
最后,重点看看这个文件系统和传统文件系统不同的地方:可追溯。首先,产生一个文件,里面写上“Hello World”,然后,再次在这个文件后面追加一行:”I will be back”。这个可追溯文件系统支持用户在文件名后面加个版本号,比如@1表示最新的版本,@2表示倒数第二个版本。可追溯的效果如下图: