NNS(NEO Name Service)是Neo的域名服務,是一個基于Neo區(qū)塊鏈的分布式、開源和可擴展的域名系統(tǒng)。 旨在將錢包地址、智能合約Hash等人類難以記憶的無規(guī)則的字符串用單詞短語簡寫等代替。我們首先提供以”.neo”結(jié)尾的域名服務。
通過域名服務,人們再也不用記憶看不懂的地址和Hash,只要知道一個單詞或一個短語就能進行轉(zhuǎn)賬、調(diào)用合約。
NNS可以將域名解析到各種目標。最容易聯(lián)想到的是Neo的賬戶(Address),或者智能合約地址(ScriptHash)。 我們預留了足夠的擴展性,可以在不更新合約的情況下支持更多的解析目標協(xié)議。
NNS 的使用場景
別名服務的最主要使用場景在于別名轉(zhuǎn)賬,尤其是那些需要公開自己轉(zhuǎn)賬地址并且不常更換地址的賬戶,例如在ICO時, 項目方需要在官網(wǎng)提前公開自己官方賬戶地址,如果黑客篡改了ICO賬戶地址,投資人將很難發(fā)現(xiàn)。但是如果項目方提前公布一個簡短易記的地址別名, 由于簡短的有意義的詞組很難被篡改,因此可以防止黑客的惡意攻擊,避免不必要的損失。
一個別名要指向什么樣的資源,是可以靈活擴展的,只需要實現(xiàn)相應的解析器即可。除了可以指向一個賬戶地址外,也可以指向一個合約地址,進而可以實現(xiàn)別名和智能合約交互。
區(qū)塊鏈作為下一代互聯(lián)網(wǎng)的基礎(chǔ)設(shè)施,未來會有越來越多的服務基于區(qū)塊鏈進行構(gòu)建,例如去中心化云存儲服務。云存儲中的文件尋址是通過文件哈希值唯一標識實現(xiàn)的, 我們可以為哈希值取一個容易理解別名例如文件名,然后將別名映射到文件哈希,從而實現(xiàn)文件精準尋址,因此別名服務未來可以和NEO上的去中心化文件存儲NEOFS結(jié)合使用。 隨著構(gòu)建在NEO上服務越來越多,NNS將逐步拓展以為去中心化消息通信、郵件服務等提供解析服務。
NNS 和 ENS 的關(guān)系
NNS和ENS具有相同的目標,都是為了提升區(qū)塊鏈的易用性,但是基于不同的區(qū)塊鏈平臺實現(xiàn),服務于不同的區(qū)塊鏈平臺。NNS在做系統(tǒng)設(shè)計時參考借鑒了ENS的系統(tǒng)設(shè)計, 在此對他們表示感謝,同時我們也針對NEO平臺做出了很多創(chuàng)新設(shè)計,例如將所有者合約從注冊器模塊中拆分出來以實現(xiàn)更靈活的所有權(quán)控制,在解析方式上, 分為了快速解析和完整解析兩種方式,在經(jīng)濟模型上引入了一種新型的智能代幣,以實現(xiàn)系統(tǒng)費用的高效循環(huán)。
NNS 系統(tǒng)設(shè)計概述
NNS 系統(tǒng)功能
NNS系統(tǒng)有兩個作用 一是將beautiful.neo 等人類可讀的名稱解析為機器使用的標識符,如Neo的地址等。 二是為域名提供描述性數(shù)據(jù),比如whois,合約接口描述等。
NNS 和 DNS的目標類似,但是基于區(qū)塊鏈架構(gòu)設(shè)計,是去中心化的,服務于區(qū)塊鏈網(wǎng)絡。NNS使用和DNS一樣用點(。)分割的域名稱系統(tǒng),域的所有者對隸屬于他的子域名有完全的分配權(quán)利。
.neo .gas 這樣的根域名由一個稱為(注冊器Registry)的智能合約管理。一個注冊器管理一個根域名,并設(shè)定取得其下一級域名所有權(quán)的規(guī)則。任何人均可遵照對應的注冊器設(shè)定的規(guī)則取得下一級域名的所有權(quán)。
NNS 系統(tǒng)架構(gòu)
NNS有四個系統(tǒng)組件
·頂級域名合約(域名根是管理根域名的腳本)
·所有者(所有者可以是一個個人賬戶address,也可以是一個智能合約)
·注冊機(專門負責給一個域名的子域名分配所有者的智能合約,根域名也會指定一個根域名的注冊機)
·解析器(負責解析一個域名或者他的子域名)
頂級域名合約
域名根是一個根域名 比如.test 所有信息的管理者。 無論二級域名 aa.test 還是 三級域名 bbb.aa.test,他們的所有者都保存在域名根之中。 域名根以字典的形式保存如下數(shù)據(jù):
·域名的所有者(owner)
·域名的注冊器(register)
·域名的解析器(resolver)
·域名的TTL(域名到期時間)
所有者
域名的所有者可以是一個賬戶地址或者一個智能合約。(ens的設(shè)計是擁有域名的智能合約叫做注冊器,實際上注冊器只是owner的一個特例, 我們將域名的所有者和注冊器分開了,這個系統(tǒng)會變得更加清晰) 域名的所有者(owner)可以:
·將域名的所有權(quán)轉(zhuǎn)移到另一個地址
·更改注冊器,最常見域名注冊器為“管理員手動分配子域名”
·更改解析器
允許所有者是一個智能合約,可以提供多種多樣的所有權(quán)模式
·比如雙人共有域名,要兩人簽名才可以轉(zhuǎn)讓域名或者更改注冊器
·比如多人共有域名,超過50%人簽名才可以轉(zhuǎn)讓域名或者更改注冊器
如果域名的所有者是一個賬戶地址,那么用戶可以調(diào)用注冊器的接口管理二級域名。
注冊器
(ens的設(shè)計是擁有域名的智能合約叫做注冊器,實際上注冊器只是owner的一個特例, 我們將域名的所有者和注冊器分開了,這個系統(tǒng)會變得更加清晰。 大部分用戶并不會去賣自己的二級域名,所以大部分用戶無需配置注冊器,配置解析器即可)。
注冊器專門負責將一個域名的子域名重新分配給其他所有者。 注冊器會調(diào)用域名根腳本進行操作。 域名根會檢查注冊器是否有權(quán)限操作此域名。 注冊器有兩個功能:
·將一個域名的子域名重新分配給其他所有者。
·查詢一個子域名的擁有者是否合法,因為存在三級域名賣掉了,然后二級域名轉(zhuǎn)讓給別人這種情況。
所以在做完整解析的情況下,解析過程會詢問注冊器,他的下級域名是不是分配給了指定的所有者,如果沒有,則此解析無效。
注冊器是一個智能合約,可以有不同種類的注冊器:
·先到先得注冊器,大家可以自由搶域名。測試網(wǎng).test后綴域名將采用先到先得注冊方式。
·管理員手動分配注冊器,由一個管理員來設(shè)置將子域名的所有權(quán)如何處理。通常情況下,個人持有的二級域名會通過手動方式分配子域名。
·拍賣注冊器。測試網(wǎng).neo后綴的域名及主網(wǎng).neo后綴域名都會通過抵押拍賣的方式注冊。
解析器
NNS最主要的功能,就是完成從域名到解析器的映射。 解析器是一個智能合約,他來完成實際將名字翻譯成地址的實際過程。 只要遵循NNS解析器規(guī)范的智能合約就可以被配置為解析器。NNS會提供通用的解析器。
如果要增加新的協(xié)議類型,在對現(xiàn)有NNS規(guī)范沒有顛覆性改變的情況下,都可以不需改動NNS系統(tǒng),直接配置實現(xiàn)。
解析規(guī)則
域名的存儲
NS中存儲的域名為32字節(jié)散列值,而不是域名原文的文本。這有幾個設(shè)計原因:
·處理過程統(tǒng)一,允許任意長度的域名。
·一定程度保留了域名的隱私。
·將域名轉(zhuǎn)換為散列的算法稱為NameHash,我們將在其他的文檔資料中對他進行解釋。 NameHash的定義方式為遞歸式。
比如aaa.neo 對應
hashA = hash256(hash256(“neo”) + “aaa”)
bbb.aaa.neo對應
hashB = hash256(hashA + “bbb”)
那么 ccc.bbb.aaa.neo 對應
HashC = hash256(hashB+“ccc”)
這樣的定義方式讓我們可以將所有層次的域名,一級,二級到無數(shù)級,都扁平化的保存在一個Map《hash256, 解析器》 的數(shù)據(jù)結(jié)構(gòu)中。
這正是注冊器保存域名解析的方法,這個遞歸計算NameHash的方式,可以用一個函數(shù)表達:
Hash = NameHash(“xxx.xxx.xxx…”);
解析過程
用戶調(diào)用根域名的解析函數(shù)進行解析,根域名提供完整和快速兩種解析方式??筛鶕?jù)需要調(diào)用,也可以直接查詢解析器,自行調(diào)用。
快速解析方式
快速方式域名根直接查表完整域名的解析器,如果沒有,查詢父域名的解析器。然后調(diào)用解析器解析。 快速方式運算次數(shù)少,但可能存在一個漏洞,即為三級域名賣給了別人,解析器存在,但是二級域名已經(jīng)轉(zhuǎn)讓的情況。 此時依然可以正常解析
完整解析方式
完整方式,域名根將從根域名開始,逐層檢查所有權(quán)和TTL,如果不符合將失敗。 運算次數(shù)較多,與域名級數(shù)線性增長。
NNS經(jīng)濟模型
在NNS的經(jīng)濟模型里引入兩中代幣,一種是NNC,屬于UTXO資產(chǎn)類型,總發(fā)行量10億枚。另一種是SGAS,屬于NEP5代幣,與NEOGAS進行1:1綁定,支持雙向兌換。
NNS根域名通過NNC持有者投票啟動,投票分為兩種模式,一種是管理員啟動根域名投票,3天內(nèi)反對票少于30%則根域名啟動,一種是任何NNC持有者啟動域名投票,3天內(nèi)贊成票超過50%則根域名啟動,無論哪種方式,投票者或不投票者都是博弈的參與者,域名注冊GAS會再分配給NNC持有者。
在NNS系統(tǒng)中,所有拍賣域名收取的手續(xù)費會進入獎池系統(tǒng)進行重新分配,針對用戶持有的NNC的數(shù)量,分配相應比例的SGAS。
NNC股權(quán)證明代幣
NNC是NNS系統(tǒng)引入的一種股權(quán)證明代幣。NNS為了實現(xiàn)系統(tǒng)的可持續(xù)性,引入了手續(xù)費再分配系統(tǒng), 所有域名拍賣收取的手續(xù)費將完全再分配給NNC的持有者。
NNC的初始發(fā)放為空投的形式,接收NNC空投需要用戶持有NEO??胀栋凑誑EO持有量1:0.1進行發(fā)放。
除了空頭外,在NNS系統(tǒng)上線后,用戶注冊新的域名也將獲得一定數(shù)量的NNC作為獎勵,NNS理事會將會拿出總共10%的NNC來激勵用戶注冊域名。
SGAS燃料代幣
為了方便GAS在應用合約中的使用,NNS發(fā)行了一種基于NEP5的代幣,總量一億枚,與NEO的GAS燃料幣進行1:1綁定,支持雙向兌換。
兌換SGAS使用的GAS將會保存在SGAS合約的賬戶中,NNS不會轉(zhuǎn)移或者使用這些GAS,因此可以保證只要用戶持有SGAS,一定可以兌換到等量的GAS。
在NNS系統(tǒng)中,SGAS主要有以下功能:
·與GAS雙向兌換。
·向注冊器充值/提款。
·參與域名競拍。
·競拍手續(xù)費支付。
除了在NNS系統(tǒng)內(nèi)使用之外,由于SGAS本身是發(fā)布在主網(wǎng)上的NEP5代幣系統(tǒng),因此所有的合約應用也都可以使用這個SGAS合約來進行便捷的合約內(nèi)GAS操作。
獎金池
用戶在域名競拍時,NNS將會產(chǎn)生SGAS的收入,主要來源有兩個:
·用戶拍賣款。如果用戶拍賣得到域名所有權(quán),那么將收取用戶全部的競拍款作為手續(xù)費。
·流拍用戶的拍賣手續(xù)費。對于參與競拍,但是沒有拍得域名的用戶,收取出價的5%作為手續(xù)費。
所有的手續(xù)費收入將會轉(zhuǎn)入獎池中,在獎池中,所有持有NNC的用戶可以根據(jù)自己持有的NNC按比例領(lǐng)取SGAS。
獎金池將以中心化形式進行。
總結(jié)
NNS項目是一個完全構(gòu)建在NEO區(qū)塊鏈上的一個智能合約協(xié)議層應用,是一個真正意義上的區(qū)塊鏈落地應用。 NNS的所有服務都是由智能合約提供的,是分布式并且靈活可擴展的,不存在中心化風險。
NNS是一次NEO智能合約體系的大規(guī)模應用,為了實現(xiàn)解析器的靈活可擴展,我們應用了最新的NEP4動態(tài)調(diào)用,在經(jīng)濟模型中,我們會設(shè)計Vickrey拍賣合約和荷蘭式拍賣合約, 為了實現(xiàn)系統(tǒng)費用更易重新分配,我們擴展了NEP5代幣標準,增加了幣天的概念,從而實現(xiàn)無需鎖定代幣就可以實現(xiàn)系統(tǒng)收入的重新分配,將應用代幣和股權(quán)融合成一個代幣。
域名服務能夠提升區(qū)塊鏈的易用性,并且具有豐富的使用場景,會形成圍繞域名的生態(tài)系統(tǒng)。 未來,我們會和NEO生態(tài)的客戶端合作,讓所有的NEO錢包支持通過別名轉(zhuǎn)賬,我們也會探索一些新的使用場景,例如和寵物游戲合作,通過NNS為寵物起一個昵稱。 未來,隨著NEO生態(tài)的應用越來越多,NNS的域名也會越來越有價值。
評論
查看更多