打字猴:1.703875767e+09
1703875767 区块链项目开发指南 [:1703875260]
1703875768 区块链项目开发指南 1.8.4 IPFS
1703875769
1703875770 星际文件存储系统(InterPlanetary File System,IPFS)是一个去中心化的文件系统。IPFS使用分布式哈希表(Distributed Hash Table,DHT)和Merkle有向无环图(Directed Acyclic Graph,DAG)数据结构。它使用类似于BitTorrent(比特流)的协议来决定如何在网络中移动数据。IPFS的一个高级功能是它支持文件版本管理。为了实现文件版本管理,它使用了类似于Git的数据结构。
1703875771
1703875772 尽管被称为去中心化的文件系统,IPFS并不遵循文件系统的主要属性,即在文件系统中,所存储的内容会一直保留到被删除之前。IPFS的工作原理不同——每一个节点并不存储全部文件,存储的是需要的文件。如果一个文件不那么受欢迎,许多节点就没有这个文件,那么该文件很有可能从网络中消失。因此,许多人更喜欢把IPFS称为去中心化的、点对点的文件共享应用。或者可以把IPFS当作完全去中心化的BitTorrent,也就是说,它没有追踪器,但有一些高级功能。
1703875773
1703875774 1.工作原理
1703875775
1703875776 当在IPFS中存储一个文件时,它被分成很多小于256KB的数据块(chunk),并生成每个数据块的哈希。网络中的节点在一个哈希表中存储它们需要的IPFS文件及其哈希。
1703875777
1703875778 IPFS文件有4种类型:blob、list、tree和commit。blob代表一个实际存储在IPFS中的文件的数据块。list代表完整的文件,因为它包含blob列表和其他列表。由于列表可以包含其他列表,因此它帮助网络进行数据压缩。tree(树)代表目录,因为它包含blob列表、列表、其他树和commit。commit文件代表其他文件的版本历史中的快照。由于list、tree和commit与其他IPFS文件有连接,于是形成了一个Merkle DAG。
1703875779
1703875780 所以,用户如果想要从网络中下载文件时,只需要IPFS列表文件的哈希。如果想下载目录,则只需要IPFS树文件的哈希。
1703875781
1703875782 因为每个文件都由一个哈希进行标识,所以文件名不容易记住。如果更新文件,就需要与想下载该文件的所有人分享新的哈希。为了解决这个问题,IPFS使用IPNS功能,允许用自行认证的名字或者人性化的名字指向IPFS文件。
1703875783
1703875784 2.Filecoin
1703875785
1703875786 阻碍IPFS成为去中心化文件系统的主要原因是节点只存储了它们需要的文件。Filecoin(文档币)是一个类似于IPFS的去中心化文件系统,其中有内部货币激励节点存储文件,由此提高文件可用性,并使其更像一个文件系统。
1703875787
1703875788 网络中的节点通过赚取文档币来租用磁盘空间,在存储/检索文件时,需要花费文档币。
1703875789
1703875790 与IPFS技术一样,Filecoin使用区块链数据结构和数据可检索证明(Proof-of-Retrievability,PoR)共识协议。
1703875791
1703875792 在写本书之时,Filecoin仍在开发阶段,因此许多事情尚不明确。
1703875793
1703875794
1703875795
1703875796
1703875797 区块链项目开发指南 [:1703875261]
1703875798 区块链项目开发指南 1.8.5 Namecoin
1703875799
1703875800 Namecoin是一个去中心化的键-值数据库。它也有内部货币,叫作域名币(Namecoin)。Namecoin使用区块链数据结构和工作量证明共识协议。
1703875801
1703875802 在Namecoin中,可以存储数据的键-值对。为了注册键-值对,需要花费域名币。注册之后,需要每35999个区块更新一次,否则与密钥相关的数值将失效。更新也需要花费域名币。不需要更新密钥,也就是说,在注册之后不需要花费任何域名币来存储密钥。
1703875803
1703875804 Namecoin有一个命名空间(namespace)功能,允许用户组织不同种类的密钥。任何人都可以创建命名空间,或者使用现有命名空间组织密钥。
1703875805
1703875806 最受欢迎的命名空间有a(应用特定数据)、d(域名规范)、ds(安全域名)、id(标识)、is(安全标识)、p(产品)等。
1703875807
1703875808 bit域名
1703875809
1703875810 如要访问网站,浏览器应先发现与域名相关的IP地址。这些域名和IP地址映射被存储在DNS服务端中,受大机构控制。因此,域名易于审查。如果网站在做非法勾当,或者导致某些损失,或者出于一些其他原因,大机构通常会关闭域名。
1703875811
1703875812 正因如此,就需要一个去中心化的域名数据库。因为Namecoin就像DNS服务端一样存储键-值数据,所以Namecoin可用于实现去中心化的DNS,而且已经用于该用途。d和ds命名空间包含以.bit结尾的密钥,代表.bit域名。从技术上看,命名空间对于密钥没有任何命名协定,但是Namecoin的所有节点和客户端同意该命名协定。如果想在d和ds命名空间存储非法的密钥,那么客户端会将其滤掉。
1703875813
1703875814 支持.bit域名的浏览器需要查看Namecoin的d和ds命名空间,以发现与.bit域名相关的IP地址。
1703875815
1703875816 d和ds命名空间之间的区别是:ds存储支持TLS的域名,而d存储不支持TLS的域名。我们已经使DNS去中心化了,也可以使发放TLS证书去中心化。
[ 上一页 ]  [ :1.703875767e+09 ]  [ 下一页 ]