naming-How to use BNS-Choose a n
FROM : https://docs.blockstack.org/core/naming/pickname.html
本节解释如何选择和创建名称空间,它包含以下部分:
名称空间的预期用途
列出所有存在的名称空间(引用)。
列出名称空间(引用)中的所有名称。
获取注册名称空间(引用)的成本。
获取当前共识散列(引用)。
创建一个命名空间
名称空间的预期用途
其目的是每个应用程序都可以为自己的目的创建自己的BNS命名空间。应用程序可以对以下内容使用命名空间:
-
给用户一个SSO系统,其中每个用户在一个用户名下注册他们的公钥。例如,blockstack应用程序使用.id名称空间中的名称来实现这一点。
-
提供订阅服务,其中每个名称都是为用户订阅提供服务的第三方。例如,.podcast中的名称指向DotPodcast应用程序的用户可以订阅的播客。
-
实现软件许可证,其中每个名称对应一个访问密钥。与传统的访问密钥不同,以名称实现的访问密钥可以独立销售和交易。授权费用(作为名称注册支付)将由开发人员设置并发送到开发人员控制的区块链地址。
命名空间中的名称可以满足开发人员的任何需求。在创建命名空间后,开发者可以在一年内收取注册费用,这不仅激励了开发者让用户参与到应用程序中来,还让他们能够衡量经济活动。
开发人员可以使用BNS API查询单个命名空间并在其中查找名称。
列出所有存在的命名空间(引用)。
$ curl https://core.blockstack.org/v1/namespaces
[
"id",
"helloworld",
"podcast"
]
列出命名空间(引用)中的所有名称。
$ curl https://core.blockstack.org/v1/namespaces/id/names?page=0
[
"0.id",
"0000.id",
"000000.id",
"000001.id",
"00000111111.id",
"000002.id",
"000007.id",
"0011sro.id",
"007_007.id",
"00n3w5.id",
"00r4zr.id",
"00w1k1.id",
"0101010.id",
"01jack.id",
"06nenglish.id",
"08.id",
"0cool_f.id",
"0dadj1an.id",
"0nelove.id",
"0nename.id"
...
]
每个页面返回一批100个名称。
获取注册命名空间(引用)的成本。
$ curl https://core.blockstack.org/v1/prices/namespaces/test
{
"satoshis": 40000000
}
如果您想注册命名空间,请参阅命名空间创建部分。
获取当前共识散列(引用)。
$ curl -sL https://core.blockstack.org/v1/blockchains/bitcoin/consensus
{
"consensus_hash": "98adf31989bd937576aa190cc9f5fa3a"
}
创建NAMESPACE_PREORDER事务需要一个最近的共识散列。引用BNS客户端自动执行此操作。有关如何使用协商一致散列构造事务的详细信息,请参阅事务格式文档。
创建一个命名空间
创建命名空间有四个步骤:
1.发送NAMESPACE_PREORDER事务(实例)。这是第一步。这将用BNS节点注册名称空间的咸散列,并燃烧必要数量的加密货币。此外,它还向BNS节点证明,用户通过在事务中包含最近的共识散列,已经遵守了BNS一致规则(有关详细信息,请参阅BNS fork一节)。
2.发送NAMESPACE_REVEAL事务(实例)。这是第二步。这将显示salt和命名空间ID(将其与NAMESPACE_PREORDER配对),它将显示命名空间中的名称在过期之前或必须更新之前的持续时间,并为名称空间设置price函数,该函数确定命名空间的名称有多便宜或多昂贵。price函数接受此命名空间中的名称作为输入,并输出名称将花费的加密货币数量(即通过检查名称的长度,以及它是否有元音或非字母表字符)。命名空间创建者可以通过设置命名空间创建者地址来收取命名空间存在第一年的注册费用。
3.使用NAME_IMPORT事务为命名空间播下种子(实例)。一旦显示了命名空间,用户就可以选择用一组名称填充它。每个导入的名称都有一个所有者和一些off-chain状态。这一步是option - namespace创建者不需要导入名称。
4.发送NAMESPACE_READY事务(实例)。这是这个过程的最后一步。它启动命名空间,使其对公众可用。一旦名称空间就绪,任何人都可以在其中注册一个名称,只要他们支付了适当数量的加密货币(根据步骤2中显示的price函数)。
NAMESPACE_PREORDER/NAMESPACE_REVEAL配对的原因是为了防止出现争用。BNS共识规则要求NAMESPACE_REVEAL与在过去24小时内发送的以前的NAMESPACE_PREORDER匹配。如果它不这样做,那么恶意的参与者就可以监视区块链网络,并与受害者争用一个命名空间。
命名空间是在先到先得的基础上创建的。如果两个人试图创建相同的命名空间,成功确认NAMESPACE_PREORDER和NAMESPACE_REVEAL的人将获胜。在NAMESPACE_PREORDER中消耗的费用以两种方式使用。
一旦用户发出NAMESPACE_PREORDER和NAMESPACE_REVEAL,他们必须在一年之前发送NAMESPACE_READY事务。如果它们不这样做,那么它们创建的命名空间就会消失(以及它们导入的所有名称)。
希望创建自己的命名空间的开发人员应该阅读命名空间创建部分文档。强烈建议开发人员在创建自己的空间之前请求单独的支持,因为涉及大量加密货币。