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