27

这个问题可以进入比特币论坛,但我试图从编程的角度理解。

有一些用于分布式存储的技术,比如分布式哈希表(比如 kademlia 或类似的)。比特币区块链与分布式哈希表有何不同?或者可能是分布式哈希表技术支撑比特币区块链?或者,为什么比特币区块链比 DHT 被誉为如此突破?

4

2 回答 2

49

分布式哈希表

DHT 只是分布在网络中的多个节点上的键值存储。密钥通过确定性算法分布在节点之间。每个节点负责哈希表的一部分。

路由算法允许在不知道网络的每个节点的情况下在哈希表中执行请求。

例如,在Chord DHT(相对简单的 DHT 实现)中,每个节点都分配有一个标识符,并负责更接近其标识符的键。

假设有 4 个节点具有标识符:2a6c、7811、a20f、e9c3 标识符为 2c92 的数据将存储在节点 2a6c 上。

现在想象一下,您只知道节点 7811,并且您正在寻找标识符为 eabc 的数据。

您向节点 7811 询问数据 eabc。7811 没有它,所以它要求节点 e9c3 将其发送到节点 7811,节点 7811 将其发回给您。

一个聪明的算法允许在 O(log(N)) 跳转中找到数据。无需存储网络的整个路由表(每个节点的地址)。基本上你问最近的节点到你知道的数据标识符,它本身询问它知道的最近的节点,依此类推,减少每一步跳转的大小。

DHT 具有很强的可扩展性,因为数据在节点之间均匀分布,并且查找时间通常以 O(log(N)) 增长。

区块链

区块链也是一种分布式数据结构,但其用途完全不同。

将其视为历史或分类帐。目的是存储不断增长的记录列表,而不会被篡改和修改。

它主要用于比特币货币系统中,用于跟踪交易。它的防篡改特性让每个人都可以通过了解账户的交易历史来了解账户的确切余额。

在区块链中,网络的每个节点都存储完整的数据。因此,它与 DHT 中数据在节点之间划分的想法绝对不同。区块链中的每个新条目都必须通过称为挖掘的过程进行验证,其详细信息超出了此答案的范围,但此过程可确保数据的共识

这两种结构都是分布式数据结构,但用途不同。DHT 旨在提供一种有效的(在查找时间和存储空间方面)结构来划分网络上的数据,而区块链旨在提供一种防篡改的数据结构。

于 2016-04-05T15:13:44.123 回答
0

在计算中,哈希表(hash map)是一种实现关联数组抽象数据类型的数据结构,一种可以将键映射到值的结构。哈希表使用哈希函数来计算存储桶或槽数组的索引,从中可以找到所需的值。但区块链是一种数字账本,其中以比特币或其他加密货币进行的交易按时间顺序公开记录。

于 2018-03-31T10:06:51.667 回答