论文部分内容阅读
域名系统(DNS)是互联网上重要的基础设施,负责将域名转换为IP地址,从而方便人们访问互联网。目前的DNS是一种有中心的分布式结构,由互联网名称与数字地址分配机构(ICANN)进行统一调度和管理,ICANN作为中心化的组织完全掌控域名的分配和解析,这存在着严重的权力滥用风险和单点失效风险。另外,目前的DNS还很容易产生缓存污染攻击、消失性风险和致盲性风险等各种问题。区块链是一种可信的分布式数据库,按时间顺序存储数据,并在去中心化的网络中维护该分布式数据库,具有去中心化、安全、可信、不可篡改、共同维护等特点。针对上述DNS存在的问题,结合区块链的特点,本文提出使用区块链技术重构域名服务系统。针对目前域名系统存在的中心化问题,本文详细分析了三种不同类型区块链的特点并采用了联盟链的形式,既可以对顶级域名进行一定程度的管理,又可以让普通节点自由加入来提供完整的域名服务,联盟链的多中心化结构可以有效避免权力滥用风险和单点失效风险。为了让更多的节点加入和更好的提供域名服务,本文设计了三种不同的节点:联盟节点、普通节点、轻节点,其中普通节点和轻节点可以无权限的自由加入。为了解决目前区块链吞吐量不高与域名系统需要高性能之间的矛盾,本文通过结合多链技术和分片协议来从两个方面解决此问题。为了解决区块链结构上扩展性不足的问题,本文使用了多链结构,即一条主链和多条子链,子链与主链维持相同的区块高度,并通过哈希建立链接,通过合法的增加子链实现结构上的可扩展性。针对目前区块链中所有节点竞争同一笔交易导致的吞吐量不足的问题,本文通过引入分片协议将数量众多的普通节点安全、随机的分成多个分片,多个分片并行的对不同子链上的请求进行共识,相比于其他区块链域名系统可以将吞吐量由常量级扩展成线性级别,经实验证明几乎满足O(n/loglogn)的扩展性。由于联盟链中联盟节点经常需要对顶级域上的请求做投票,为了实现投票节点的匿名性和投票过程的公平性,本课题引入了可链接的环签名技术。最后,本文还利用内存型数据库作为热点数据的缓存实现了100,000级别的并发量。综合运用以上技术,本文设计并实现了一个基于区块链技术的安全、可扩展以及高吞吐量的域名服务系统。