blockstackblockstack-Trans

naming-Overview-Blockstack Namin

2019-07-31  本文已影响8人  空乱木

本文档概述了blockstack命名服务的工作原理。本节向您介绍BNS,并解释以下概念:

什么是BNS
命名服务背后的动机
BNS的组织

(blockstack核心)存储库是blockstack命名服务的参考实现。

什么是BNS

blockstack命名服务(BNS)是一个网络系统,它将名称绑定到离线状态,而不依赖于任何中心点的控制。它通过在一个公共区块链(比如比特币)中嵌入一个控制平面消息日志来做到这一点。

每个BNS对等点通过索引这些特别设计的事务来确定每个名称的状态。在此过程中,每个对等点独立计算相同的全局名称状态。

BNS中的名称有三个属性:

在内部,BNS节点实现一个复制的名称数据库。每个BNS节点保持自己与世界上所有其他节点的同步,因此在一个BNS节点上的查询在其他节点上是相同的。BNS节点允许名称的所有者将最多40Kb的链下状态绑定到其名称,该名称将通过Atlas网络复制到所有BNS节点。

BNS节点从底层区块链中提取名称数据库日志(Blockstack Core目前使用比特币,过去使用过Namecoin)。BNS使用区块链为系统建立一个共享的“ground truth”:只要两个节点具有相同的区块链视图,它们就会建立相同的数据库。

对于开发人员来说,最大的结论是在BNS中,读取名称状态又快又便宜,但是写入名称状态又慢又昂贵。这是因为注册和修改名称需要将一个或多个事务发送到底层区块链,而BNS节点在充分确认之前不会处理它们。用户和开发者需要购买和使用必要的加密货币(即比特币)来发送BNS交易。

命名服务背后的动机

我们在日常生活中依赖于命名系统,它们在许多不同的应用程序中扮演着重要的角色。例如,当你在社交媒体上查找朋友时,你使用平台的命名服务将他们的名字解析为他们的个人资料。当您查找网站时,您使用域名服务将主机名解析为其主机的IP地址。签出Git分支时,使用Git客户机将分支名称解析为提交散列。当您在密钥服务器上查找某人的PGP密钥时,您将他们的密钥ID解析为他们的公钥。

关于名字,我们希望什么是真实的?在BNS中,名称是全局惟一的,名称是有意义的,并且名称是强拥有的。但是,如果您查看这些示例,您会发现它们每个都只能保证其中两个属性。这限制了它们的用处。

问题:客户必须相信系统能够正确地选择给定名称的解析结果。这包括相信只有系统管理员才能进行这些更改。

问题:由于名称可以引用冲突状态,开发人员必须找到其他机制来解决歧义。在Git的情况下,用户必须手动干预。

问题:这些名称对大多数用户来说很难记住,因为它们不包含与在系统中使用有关的语义信息。

BNS名称具有所有这三个属性,并且没有这些问题。这使得它成为构建各种网络应用程序的强大工具。使用BNS,我们可以做以下和更多:

BNS的组织

BNS名称被组织成一个全局名称层次结构。这个层次结构中有三个不同的层与命名有关:

下面给出了一个特征比较矩阵,总结了这些命名对象之间的相似点和不同点:

功能 命名空间 BNS names BNS Subdomains
全局唯一 X X X
人们可以理解的 X X X
由私钥拥有 X X
任何人都可以创建 X X [1]
所有者可以更新 X [1]
状态保存在链上 X X
状态保存在下 X X
由共识规则控制行为 X X
可能有一个有效期 X

[1]需要BNS名称所有者的合作来广播其事务

上一篇 下一篇

猜你喜欢

热点阅读