IPFS如何存储小文件(小于1KB)

How does IPFS store small files (less than 1KB)

白皮书指出:

Small values (equal to or less than 1KB) are stored directly on the DHT. For values larger, the DHT stores references, which are the NodeIds of peers who can serve the block.

“直接存储”是什么意思?

是否意味着它只是存储在本地还是广播给所有对等方?

DHT 有点像 phone 目录。如果您知道内容 ID(多重哈希),DHT 允许您找到存储实际内容的对等点。

这个“phone 目录”太大了,任何一个节点都无法容纳它的全部。这就是为什么它是分布式的原因之一——每个对等点实际上只持有目录的一小部分。还有一些冗余,因此当单个对等点离线时全局目录不会丢失信息。

当一些内容被添加到网络中时,分布式目录的一些块会更新其 ID 和持有它的对等点的地址。当您稍后想要通过 ID 查找该内容时,您首先必须找到存储正确 DHT 块的对等点,它会告诉您可以在哪里下载实际内容。

但是,如果内容太小以至于可以放入目录中的单个“行”(1 KB),则它会直接存储在目录块中。当您查找该内容时,存储 ids 目录条目的对等点可以直接提供它,而不是将您指向另一个对等点。

因此,只有当内容小于某个阈值时,它才真正被“广播”给一些同行(但不是全部)。如果内容大于该内容,则仅广播找到它的信息。