文档章节

NNS域名系统之域名竞拍

暖冰
 暖冰
发布于 07/16 04:01
字数 1763
阅读 31
收藏 0
heX

0x00 前言

其实在官方文档中已经对域名竞拍的过程有详细的描述,感兴趣的可以移步http://doc.neons.name/zh_CN/latest/nns_protocol.html#id30 此处查阅。

我这里主要对轻钱包开发中会用到的一些功能和接口进行介绍。文末有我对区块链域名系统不成熟的见解,欢迎围观批评并指正。

0x01 域名查询

如果想要竞拍一个域名,那就要先知道这个域名是不是可用的,是不是已经被别人注册走了或者正在竞拍的过程中。

查询域名需要调用NNS系统的getOwnerInfo指令,通过向NNS的域名中心发送该指令,并发送域名的哈希值,域名中心将向其根域名的注册器请求该域名的注册信息。

let data = Common.buildScript(
            scriptaddress, 
            "getOwnerInfo",
            ["(hex256)" + domain.toString()]
          );

返回的信息包括域名拥有者,注册器地址,解析器地址和域名的有效期。域名如果已过期,拥有者可以进行续费或者别的用户申请重新开拍。

0x03 充值注册器

用户持有的SGAS无法直接参与域名的竞拍,需要提前将SGAS充值入域名注册器作为竞拍的燃料,之后用户每次进行竞拍,都会直接从用户的竞拍燃料中进行扣取。当然这部分燃料费用户是可以通过getmoneyback命令随时转出的。

let data = Common.buildScript(
        NNS.root.register,
        "getmoneyback",
        ["(addr)" + Wallet.account.address, "(int)" + transcount]
    )

充值的方式是首先调用SGAS的transfer方法,然后调用注册器的setsetmoneyin方法来标记转入操作。 交易构造方法如下:

sb.EmitParamJson([
        "(addr)" + Wallet.account.address,//from
        "(addr)" + addressto,//to
        "(int)" + intv//value
    ]);//参数倒序入
    sb.EmitPushString("transfer");//参数倒序入
    sb.EmitAppCall(DAPP_SGAS);//nep5脚本

    ////这个方法是为了在同一笔交易中转账并充值
    ////当然你也可以分为两笔交易
    ////插入下述两条语句,能得到txid
    sb.EmitSysCall("System.ExecutionEngine.GetScriptContainer");
    sb.EmitSysCall("Neo.Transaction.GetHash");
    //把TXID包进Array里
    sb.EmitPushNumber(Neo.BigInteger.fromString("1"));
    sb.Emit(ThinNeo.OpCode.PACK);
    sb.EmitPushString("setmoneyin");
    sb.EmitAppCall(NNS.root.register);

0x02 竞拍

对于没有被分配或者已经过期的域名,用户可以调用wantbuy指令申请进行拍卖。

拍卖将分为三个阶段:确定期,随机期,竞拍结束。

竞拍流程

在确定期,用户可以通过调用addPrice命令出价竞拍,还可以进行加价以争夺域名所有权。

	 let data = Common.buildScript(
        NNS.root.register,
        "addPrice",
        [
            "(hex160)" + who.toString(),  //用户账户脚本哈希
            "(hex256)" + info.id.toString(), //竞拍id
            "(int)" + amount //加价金额
          ]
    );

为了避免出现恶意竞拍(在竞拍最后期限进行少量加价以夺取所有权),在确定期后,域名还会进入一段随机期,在随机期里,域名竞拍将不定时结束,时间越长,结束的概率越大,以此鼓励用户尽早参与对域名的竞拍。

0x03 结束竞拍

在随机期结束之后,无法再对域名进行加价。竞拍结束,参与竞拍的用户可以调用endSelling指令来结束竞拍,对于域名竞拍的拍的者,会收取所有的竞拍费用,对于其他参与者,则会返回90%的竞拍费用。所有竞拍所得又会以分红的形式全部分发给NNC的持有者。

	let script = Common.buildScript(
        NNS.root.register,
        "endSelling",
        [
            "(hex160)" + who.toString(),
            "(hex256)" + id
        ]
    );

0x04 竞拍查询

每个竞拍都会生成唯一的竞拍id,用户通过这个竞拍id就可以查询到域名竞拍的详情。查询竞拍详情调用的注册器方法是 getSellingDomain。这个命令接收两个参数,第一个是用户的地址,第二个就是竞拍的id。

	let script = Common.buildScript(
        NNS.root.register,
        "getSellingDomain",
        [
            "(hex160)" + who.toString(), //用户账户 脚本哈希
            "(hex256)" + id//竞拍id
        ]
    );

0x05 后记

在写NNS系统原理之后,我想谈谈自己对区块链的域名系统前景的一些思考。其实从大环境来看,先行者ENS走的并不是很顺利,虽然刚刚推出的时候风靡一时,但是随着时间的流失,其热度慢慢已经冷却下来,甚至走向了冰封。天价域名的新闻不再出现,甚至ENS本身也几乎不再被社区提及,纵观个各大交易所,支持ENS的更是没有几家。基于区块链的域名系统整体来说给人一种凉凉的感觉。

我们首先来看现在各种加密货币的主要使用场景,无论是之前的ICO还是现在的交易所挖矿,几乎都不是区块链本身在使能。我们希望中的区块链是承载各种数据记录并使其不可串改。希望中的公链是支撑各种项目应用落地。希望中的代币是推动应用运行的燃料。但是现实是几乎所有的项目在主流币民手里都只是投资的工具,而不是应用的工具。

我不想说哪个更好哪个更坏,每个人都拥有自己手中的加密货币的绝对支配权,想干嘛都无所谓。但是作为投资工具的话,用户的币主要还是在中心化交易所和自己的冷钱包之间进行转换,其所需要交互的地址有限,在这种情况下,区块链域名存在的重要性并不高。这也是现在域名系统很少有人用的主要原因,本来就没几个地址,多转几次帐就记个差不多了。就像上世纪七十年代的网络系统,翻来覆去就那么几个ip,构建一个全球范围内的域名系统实在没必要。

但是区块链不会永远是炒作工具,随着区块链的发展,一定会不断的出现优秀的区块链应用来丰富区块链的场景和生态(比如NEL在支持的区块链游戏开发)。而且这个过程一定是加速进行的,作为web3.0,区块链也一定会走出互联网式的发展轨迹,专业的区块链硬件与算法会不停的被设计和研发,共识的周期会越来越短,于是区块链的适用场景越来越丰富,渐渐融入到我们的生活,而不仅仅是中心化的交易所。

谁都知道google.com,可是谁能说出来google众多ip中的任何一个呢?ipv4且不行,到ipv6呢?那比ipv6更复杂的区块链账户地址呢?

所以,现在根本不是域名系统的寒冬,而是域名系统的初春。

PS:文中代码来自NEL赵奔同学的nel-wallet-vue: https://github.com/NewEconoLab/nel-wallet-vue

© 著作权归作者所有

共有 人打赏支持
暖冰
粉丝 46
博文 124
码字总数 116697
作品 1
长沙
程序员
私信 提问
加载中

评论(1)

youzida
youzida
在初春也肯能冻死
NEO区块链公开课(5):NNS系统设计与实现

NEO区块链公开课是NGD(NEO Global Development )、NEL(NewEconoLab)、InnoSpace创新院共同发起的区块链技术学习专场活动。旨在满足广大开发者对NEO区块链技术的入门、进阶以及技能提升需求...

NEO爱好者
10/11
0
0
【进击的EOS】如何获得一个高逼格的EOS短账户?

在上期的文章里,分别介绍了麦子钱包和Starteos钱包的EOS账户竞拍方式。 麦子钱包中直接对应的是EOS主网短账户的竞拍,根据规则,每天只会产生一个成交的账户,成交价格一般是天价—5位数的柚...

爆炸的kk
11/16
0
0
中移动正式启用10086.cn域名

编者:中移动的域名从来都是最糟糕的,N长的域名,不知道让用户怎么记,以为中国网民英语都很好? 6月7日消息,中移动近日正式启用10086.cn域名,与chinamobile.com一起指向集团官网。 据了解...

红薯
2010/06/07
943
6
ShareSDK收购Mob.com 全面转型移动开发者服务平台

在本周的国内域名交易中,mm.com、boy.com及mob.com等极品域名被重金购回国,也让域名投资者们惊叹不已。除了上述被国内的“土豪”们重金购回的极品域名外,tt.cn、hn.com等两个精品2字母域名...

tanzhaozhao
2014/07/01
1
0
又拍云 WordPress 远程附件上传插件【升级版】

又拍云以 CDN 为核心业务,另外提供云存储、云处理、云安全、流量营销等服务,有开放且可扩展的API,以及开放的SDK和第三方插件,还针对开发者启动了 又拍云联盟 活动,可以每月获取免费空间...

yvette233
2017/03/06
436
3

没有更多内容

加载失败,请刷新页面

加载更多

GROUP BY GROUPING SETS

GROUPING SETS 子句是 SELECT 语句的 GROUP BY 子句的扩展。通过 GROUPING SETS 子句,您可采用多种方式对结果分组,而不必使用多个 SELECT 语句来实现这一目的。这就意味着,能够减少响应时...

hblt-j
8分钟前
0
0
selenium之表格的定位

真的勇士, 敢于直面惨淡的warning、 敢于正视淋漓的error 目录 被测试网页的HTML代码 1.遍历表格所有单元格 2.定位表格中的某个元素 3.定位表格中的子元素 总结 浏览器网页常常会包含各类表...

程序猿拿Q
13分钟前
0
0
adb命令启动展讯平台工厂模式

adb命令启动展讯工厂模式: adb shell am start com.sprd.engineermode/com.sprd.engineermode.EngineerModeActivity...

东街小霸王
13分钟前
0
0
mtu值怎样设置才网速最快

一、什么是 MTU 值 1 从字面上来说,MTU 是英文 Maximum Transmission Unit 的缩写,即最大传输单元,它的单位是字节。 在我们常用的以太网中,MTU 一般是 1500,而无线路由器默认一般是 14...

Clarence_D
32分钟前
1
0
McAfee阻止邮件发送功能

自己写的邮件发送功能,在本地机器上可以发送,但是放到服务器上面之后就不能发送了,捕获到的异常是“以一个访问权限不允许的方式做了一个访问套接字的尝试”,找了很久,终于发现是被McAfe...

壹峰
36分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部