Holochain底层技术——Distributedhashtable(DHT)分布式哈希表

原创
2396 天前
2565

本文作者:米三儿(微信:horror1982)

DHT的全称是Distributed Hash Table,即分布式哈希表技术,是一种分布式的存储方法。这种分布式网络不需要中心节点服务器,而是每个客户端负责一个小范围的路由,并负责存储一小部分数据,从而实现整个DHT网络的寻址和存储。DHT网络还在于关键字最接近的节点上复制备份冗余信息,避免了单一节点失效问题。形象地,我们可以把整个DHT网络想象成一个大城市,那么每个客户端,就好比城市里各个角落的地图碎片,上面绘制了附近区域的地形情况,把这些地图碎片汇总后,整个城市的全貌也就出来了。

简单地说,DHT就是一种分布式的存储和寻址技术。通过DHT数据结构它把KEY 和 VALUE用某种方式对应起来。使用hash()函数把一个KEY值映射到一个index上:hash(KEY) = index。这样就可以把一个KEY值同某个index对应起来。然后把与这个KEY值对应的VALUE存储到index所标记的存储空间中。这样,每次想要查找KEY所对应的VALUE值时,只需要做一次hash()运算就可以找到了。以上就是寻址过程。

目前应用DHT技术的主要应用包括:BitTorrent,Git,Storm Botnet,Freenet, Yacy,IPFS和Holochain。前五种应用都属于传统互联网技术应用,后面两种涉及到目前大热的区块链行业。其中,IPFS(InterPlanetary File System)星际文件系统通过DHT寻址和存储技术,将标的存储信息通过DHT技术存储到分布式的存储介质提供者。目前已经有建立在IPFS上的视频发布网站。

而重点要提到的Holochain也采用了DHT作为全网分布式账本存储和寻址技术。提到账本ledger就不得不提到Blockchain区块链技术,区块链简单说就是分布式记账技术,全网统一一个版本的账本,各个全节点node的账本全网一致,也就是每个参与者都复制一份账本,并通过gossip技术实时更新,那么区块链面临的scaling扩容问题的症结就在于此,全网同步一份相同的账本,有多少个节点就有多少个账本的复本,复本的存储空间和更新所耗费的带宽是对资源的浪费。

Holochain的革新之处在于(没错,我用了革新这个词,岂止于创新)将全网账本分布式的存储在各个参与的节点上,并通过DHT寻址技术保证账本的完整性integrity和可检索性retrievability。也许我还没有说清楚区别的关键所在。Holochain上的账本和Blockchain一样是全网统一一个版本的账本,但这个账本的存储不是每人一份复本,而是只有一份正本,每人存储一部分,每人存储的就是与自己交易和状态转换相关的部分。Holo官方经常说的一句话是在holo上每人都是一条链,没错,每人都存储了自己的交易,也就是自己的链,自己的分账本,但自己的分账本也是全网总账的一部分,通过DHT技术和密码学技术让这些分账不可分割不可篡改。每个节点存储的账本都是唯一的,并且是必要的,相对于Blockchain,极大的降低了复本占用的空间和带宽,同时还保留了区块链的优势(如:不可篡改)。

各位听到这里是不是对Holochain真正的意义有了一些感触?今天先说到这里,下回继续。