文档章节

NNS域名系统之域名竞拍

暖冰
 暖冰
发布于 07/16 04:01
字数 1763
阅读 27
收藏 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

© 著作权归作者所有

共有 人打赏支持
暖冰
粉丝 40
博文 123
码字总数 114094
作品 1
长沙
程序员
加载中

评论(1)

youzida
youzida
在初春也肯能冻死
中移动正式启用10086.cn域名

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

红薯
2010/06/07
923
6
又拍云 WordPress 远程附件上传插件【升级版】

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

yvette233
2017/03/06
365
3
拍旁轻博客发布 1.0 beta 版本

v1.0beta版本 身旁网(shenpang.cc):是国内重要的轻博客网站,以兴趣与爱好,分享与成长的轻博客,轻社区。 拍旁网(paipang.com):以身旁网为基础而形成的一个技术支持网站。 1.七大发表功能...

升明
2011/12/03
4.4K
3
谷歌已开放 ".app" 顶级域名注册:需要 HTTPS 加密

2015 年 2 月 25 日,Google 豪掷 2500 万美元,打败了 12 家竞争公司从 ICANN 手中拍得了顶级域名 .app,一举创下域名的最高交易记录。.app 是诸多站长非常渴望拥有的域名后缀,因为它可以和...

局长
05/02
0
0
竞拍功能,如何实现时间结束向中标人推送中标消息

我现在用java开发一个竞拍的功能,如何实现时间结束之后给中标人推送一条中标消息,然后用户在个人中心的消息模块可以查看中标记录。竞拍不像抢购直接抢到就可以下单然后支付,竞拍人竞拍后可...

vast_yan
2015/08/22
188
2

没有更多内容

加载失败,请刷新页面

加载更多

创建第一个react项目

sudo npm i -g create-react-app@1.5.2 create-react-app react-app cd react-apprm -rf package-lock.jsonrm -rf node_modules #主要是为了避免报错npm installnpm start......

lilugirl
48分钟前
1
0
在浏览器中进行深度学习:TensorFlow.js (八)生成对抗网络 (GAN)

Generative Adversarial Network 是深度学习中非常有趣的一种方法。GAN最早源自Ian Goodfellow的这篇论文。LeCun对GAN给出了极高的评价: “There are many interesting recent development...

naughty
今天
0
0
搬瓦工镜像站bwh1.net被DNS污染,国内打不开搬瓦工官网

今天下午(2018年10月17日),继搬瓦工主域名bandwagonhost.com被污染后,这个国内的镜像地址bwh1.net也被墙了。那么目前应该怎么访问搬瓦工官网呢? 消息来源:搬瓦工优惠网->搬瓦工镜像站b...

flyzy2005
今天
2
0
SpringBoot自动配置

本篇介绍下,如何通过springboot的自动配置,将公司项目内的依赖jar,不需要扫描路径,依赖jar的情况下,就能将jar内配置了@configuration注解的类,创建到IOC里面 介绍下开发环境 JDK版本1.8 spr...

贺小五
今天
3
0
命令行新建Maven多项目

参考地址 # DgroupId 可以理解为包名# DartifactId 可以理解为项目名mvn archetype:generate -DgroupId=cn.modfun -DartifactId=scaffold -DarchetypeArtifactId=maven-archetype-quickst......

阿白
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部