×
  • 澳门新莆京娱乐网站
  • 问卷调查
  • 问卷调查系统
  • 区块链
  • 大数据
  • 数据中心
  • 创建问卷
问卷调查系统工具软件推荐
区块链

PNS(Polkadot Name Service)建立在 Polkadot 上的域名系


除了基本的域名理会处事,PNS还提供了安详靠得住的域名注册、拍卖、转让以及生意业务等成果。


可以看到在上面详细的要领中我们利用 env.emit 触发的一些事件,所以我们还需要界说这些事件:


    use ink_core::env;


    impl SimplePns {


        fn get_address_or_none(&self, name: Hash) -> AccountId {


            env.emit(SetAddress {


        env::test::set_caller::<Types>(bob);


所以在 PNS 的域名法则里我们只答允这些字符:.abcdefghijklmnopqrstuvwxyz1234567890。固然这样会有不尊重少数语言的嫌疑,可是为了外貌意义上的政治正确而增加用户的资产风险显然是个越发错误的抉择。

然后凭据下图输入相应的数值,点击陈设:

eth-ens-namehash 这个 javascript 库提供了 hash 和 normalize 要领,对域名举办前置处理惩罚,利用 UTS46来对域名举办尺度化处理惩罚固然支持utf-8 编码的字符,可是同时也导致了一些垂纶域名可以注册乐成。譬喻 faceboоk.eth 和 facebook.eth 看起来好像是两个同样的字符串,可是却都可以在 ENS 上注册乐成,这是因为第一个 facebook 中的第二个 ο 是其实希腊字母 Ομικρον ,只是看起来一样而已,而假如答允这样的环境继承产生的话,那么在现代互联网中多如牛毛的『同形异义字』的垂纶域名进攻在区块链中依然无法幸免。


陈设合约


        /// check whether name is exist


        assert_eq!(contract.get_address(name), bob);


· 英式拍卖,以一年期租用用度为起拍价,无保存价

            });


            env.println(&format!(“transfer caller: {:?}, owner: {:?}”, caller, owner));

        default_address: storage::Value<AccountId>,


1. Bob 没有实时完成购置操纵,域名被其他人买了


        pub(external) fn is_name_exist(&self, name: Hash) -> bool {

假如域名拥有者差异意 Alice 的请求,那么无需任何操纵,两周之后该请求会自行动废,并返还 Alice 的担保金。


        let alice = AccountId::from([0x1; 32]);


利用呼吁 cargo contract build 编译合约,并利用呼吁 cargo +nightly build –features ink-generate-abi 编译 ABI。


                return false

        assert_eq!(contract.set_address(name, bob), true);


            env.println(&format!(“set_address caller: {:?}, owner: {:?}”, caller, owner));


Alice 想要卖掉本身的域名,只需要向『署理生意业务合约』提交一笔包括生意业务价值、佣金费率(佣金费率抉择了你在 PNS 生意业务系统中的展示优先级)和时效的生意业务就可以了,生意业务乐成之后该域名会自动进入『署理生意业务系统』中,而在时效逾期之后该域名则会分开『署理生意业务系统』并返回到 Alice 的归属权下。在时效期内任何愿意购置该域名的用户只需要购置并付出『署理生意业务合约』中标明的价值就可以得到该域名。


在此之前,发起先阅读 ink 相关的教程。


1. 变动映射地点

        new_address: AccountId,


        /// Transfer owner to another address

而对比于 DNS,PNS 由于直接架构在 Polkadot 上,因此天然的拥有去中心化的特点,所以传统的进攻根域名处事器的要领自然无法奏效。


    fn set_address_works() {

                old_owner: old_owner,


拍卖时长


            env.emit(Register {

        // caller is not owner, set_address will be failed


            let old_address = self.name_to_address.insert(name, address);


        }


        let bob = AccountId::from([0x2; 32]);


            let caller = env.caller();


    }


4. 可选:默认绑定生意业务地点,可变动绑定地点

· 拍卖系统按期放出一部门短域名举办竞拍,在规按期限内,首次出价最高的用户将会得到域名。


    }

        let mut contract = SimplePns::deploy_mock();


        assert_eq!(contract.get_address(name), bob);


域名打点


        from: AccountId,


        let bob: AccountId = AccountId::from([0x2; 32]);


        /// Set address for specific name


将 “google.com” 翻译成谷歌主机 ip 的处事就是 DNS(Domain Name Service),而今朝全球的 IPV4 根域名处事器只有13台,个中9台在美国,2台在欧洲,1台在亚洲,如此中心化的漫衍也导致了互联网上有一个说法:进攻整个因特网最有力、最直接,也是最致命的要领恐怕就是进攻根域名处事器了。


        /// Returns an AccountId or default 0x00*32 if it is not set.


            return true


    /// Implement some private methods


                from: caller,


        assert_eq!(contract.register(name), true);


乐成启动之后,我们在 contracts 页面上传相应的文件。


                return false


            *owner


            return true


4. renew

#[cfg(all(test, feature = “test-env”))]


        assert_eq!(contract.transfer(name, bob), true);

    }


        name: Hash,


            let old_owner = self.name_to_owner.insert(name, to);


        let alice = AccountId::from([0x1; 32]);


            if self.is_name_exist_impl(name) {


                name: name,


        }


        pub(external) fn set_address(&mut self, name: Hash, address: AccountId) -> bool {


初始化合约


在注册可能购置域名乐成之后,还需要配置一些根基信息才气更好的利用


        from: AccountId,


            *address


        }

        pub(external) fn register(&mut self, name: Hash) -> bool {


在险些所有的区块链应用中城市强调譬喻去中心化、匿名、安详等要害字,可是对付真正需要交互的区块链应用来说,匿名或者并不是一个值得称道的点。好比在域名的转让进程中,不行能第一次出价就可以或许让两边都满足,那么互相的讨价还价就显得很有须要了。在智能合约里讨价还价技能上确实是可行的,可是实际上是一种为了区块链而区块链的挥霍资源且延长时间的行为。因此假如我们可以将用户的接洽方法(Email)作为域名的一个属性(假如可以或许切实的对用户提供便利,那么用户大概并不介怀填写本身的电子邮箱),那么毫无关联的两个用户完全可以通过更高效的方法完成域名价值简直定,然后再通过 PNS 提供的『署理生意业务合约』来安详的完成域名生意业务,这样既分身用户体验又确保生意业务安详性的交互方法或者越发切合大部门用户的真实需求。


            let caller: AccountId = env.caller();


}

        }

· 短域名(3-6个字符,需要拍卖,示例:chainx.dot)


        let mut contract = SimplePns::deploy_mock();


挪用 register 函数:


实现域名操纵要领


            });

简介

2. 选择域名时效(默认1年有效期,可续期,租用用度和租用市场相关,大于3年可给以必然优惠)
        /// Returns an AccountId or default 0x00*32 if it is not set.

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。

人已赞赏
区块链

以太坊2.0的跨分片:它会影响DeFi的可组合性吗?

2019-10-10 0:00:00

区块链

比特币现金SLP黑客马拉松第一名First Place团队和

2019-10-12 0:00:00

问卷调查系统工具软件推荐
0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
有新消息 消息中心
搜索
XML 地图 | Sitemap 地图