要说什么人有钱,当然是中国大妈,永远在屯黄金,为什么大妈们如此有钱,每一个爱屯黄金的大妈的身后,都有一个爱挖矿的大叔。什么是挖矿?挖矿需要了解哪些知识?下面讲给大家讲解IPFS挖矿的重要部分IPFS。
IPFS对象通常由Base58编码的散列引用。例如,我们来看看使用IPFS命令。
例如,让我们使用IPFS命令行工具来查看使用散列QmarHSr9aSNaPSR6G9KFPbuLV9aEqJfTk1y9B8pdwqK4Rq的IPFS对象:
在上面的例子中,前面两个字节的十六进制数是1220,其中12表示这是SHA256哈希函数,而20是哈希的长度(以字节为单位) - 32个字节。
数据和已命名的链接为IPFS对象的集合提供了一个Merkle DAG - DAG(指向无环图)的结构,Merkle表示这是一个使用加密哈希来加密内容的加密认证的数据结构。
为了可视化图形结构,我们将通过节点中的数据以图形形象化IPFS对象,并且链接将图形边缘定向到其他IPFS对象,其中链接的名称是图形边缘上的标签。上面的例子可视化如下:
现在我们将给出可以由IPFS对象表示的各种数据结构的示例。
文件系统
IPFS可以轻松地表示由文件和目录组成的文件系统
小文件
一个小文件(<256 kB)由一个IPFS对象来表示,其中数据是文件内容(加上一个小的页眉和页脚)并且没有链接,即链接数组是空的。请注意,文件名不是IPFS对象的一部分,因此具有不同名称和相同内容的两个文件将具有相同的IPFS对象表示形式,并因此具有相同的散列。
我们可以使用命令ipfs add将一个小文件添加到IPFS:
我们可以使用ipfs cat查看上述IPFS对象的文件内容:
用ipfs对象查看底层结构get yield:
我们将这个文件可视化如下:
大文件
大文件(> 256 kB)由指向<256 kB的文件块的链接列表表示,并且只有极小的数据说明此对象表示大文件。 文件块的链接具有空字符串作为名称。
目录结构
目录由代表文件或其他目录的IPFS对象的链接列表表示。 链接的名称是文件和目录的名称。 例如,考虑目录test_dir的以下目录结构:
文件hello.txt和my_file.txt都包含字符串Hello World!\ n。 文件testing.txt包含字符串Testing 123 \ n。
将此目录结构表示为IPFS对象时,它看起来像这样:
注意包含Hello World!\ n的文件的自动重复数据删除,此文件中的数据只存储在IPFS中的一个逻辑位置(由其哈希寻址)。
IPFS命令行工具可以无缝地跟踪目录链接名称来遍历文件系统:
版本化的文件系统
IPFS可以表示Git使用的数据结构,以允许版本化的文件系统。 Git提交对象在Git Book中有描述。 IPFS Commit对象的结构在撰写本文时尚未完全明确,讨论正在进行中。
Commit对象的主要属性是它有一个或多个带有名称parent0,parent1等指向前一条的链接,和一个连接名称目标(这就是所谓的树在git)指向文件系统结构被提交。
我们作为一个例子,我们以前的文件系统的目录结构,以及两个承诺:第一个承诺是原来的结构,并在第二承诺我们更新文件my_file.txt。
注意这里我们有自动重复数据删除,因此在第二新对象将是主目录,该目录我的_你和更新的文件我_ file.txt。
blockchains
这是最令人兴奋的情况下使用规一。在过去的一个blockchain块总是与哈希从后来的自然的DAG结构。更先进的blockchains像伊斯利恩Blockchain也有相关状态数据库具有帕特丽夏梅克尔树的结构,也可以模拟使用规对象。
我们假设一个简单的blockchain每个块包含以下数据模型:
一系列的交易对象
一个链接到前一个块
一个国家的树/哈希数据库
该blockchain可以模拟在规如下:
我们的重复数据删除的增益将状态数据库规 - 两块只有国家项目已经改变,需要显式地存储。
这里有一个有趣的点之间的数据存储在blockchain散列和存储在blockchain数据的差异。在伊斯利恩平台相关国家数据库的数据存储付出相当大的费用,为了减少国家数据库膨胀(“blockchain膨胀”)。因此,这是一个常见的设计模式。
如果与它相关联的状态数据库blockchain已经规在储存杂凑在blockchain在blockchain数据存储变得有些模糊的区别表示,在这种情况下,如果有人储存在blockchain的IPFS链接我们可以无缝地点击这个链接访问数据,如果数据被存储在blockchain本身。
我们仍然可以区分链断链数据存储,但是。我们通过看什么矿工需要的过程创建一个新的块时。在当前的伊斯利恩网络矿工需要交易的过程中,将更新状态数据库。为此他们需要为了获得充分的状态数据库能够更新它。
因此在blockchain状态数据库代表规我们仍需要标签数据作为“链”或“断链”。“链”的数据会保留在本地矿工为了我的需要,而这个数据会被交易的直接影响。“断链”的数据会被更新的用户不需要感动的矿工。