以太坊域名服務或者用戶使用ENS鏈接鏈上的地址,為用戶提供一個開放式的辦公地址,用戶可以通過可能容易讀懂與智能手機會的方式進行辦公,而無需使用製造商解決方案。導致錯誤的長字符串哈希。
Chainlink 正向著著使用ENS 作為數據饋送考慮到這一點,了解ENS 以及它的工作原理是什麼就很重要。
什麼是ENS?
ENS 是在以太坊和區塊鏈上提供服務、開放式的服務。查找服務ENS 的任務:人類有一個簡單的名稱服務器可以從這個地址到這個地址。它類似於域名,但DNS IP 替換為域名。不是IP地址,而是將區塊鏈地址替換為人類可能的名稱。
在ENS 的特殊情況下,並沒有其他簽名的用戶需要提供ENS。
ENS 使用了可以調用地址的方式。
ENS對Chainlink意味著什麼?
ENS的頂級智能所擁有的這些域名由合約提供管理子域名的註冊規則。在`.eth`頂級中心上,Chainlink與ENS。廣泛合作,提供`data.eth`域名,包含在其中。可識別索引地址,使用Chainlink 的網絡鏈接鏈接鏈上的Chainlink 鏈接機器機器。而不是諸如`0x5f4eC3Df9cbd43714FE2740f5E3616155c5b8419`之類的合約地址。
在Javascript中使用ENS
在支持Web3的Javascript庫中,使用ENS解析域名非常簡單。 web3.js:
var address = ens.getAddress('eth-usd.data.eth');
其他支持ENS的庫可以在ENS文檔中找。
構造節點哈希
當ENS地址在上鍊使用時,會很有趣。
ENS文檔提供了偏差哈希的參考類似的,是使用算法構造的,該算法會獲取域名用的。EIP-137的規範,該算法的偽代碼如下:
def namehash(name): if name == '': return ' ' * 32 else: label, _, remainder = name.partition('.') return sha3(namehash(remainder) + sha3(label))
該名稱被以下為最後幾個組件,然後從一個組件開始,連接。 `eth-usddata.eth`的節點結果將通過步驟創建。
node = ' ' * 32 node = sha3(node + sha3('eth')) node = sha3(node + sha3('data')) node = sha3(node + sha3('eth-usd'))
必須按照人類標準的初衷標準生成任何正確的使用標準。 UTS46進行規範化和驗證。
考慮到該過程的複雜性,推薦將節點哈希傳遞給合同,而不是在鏈上計算它。 eth-ens-namehash這個npm包可以用來操作規範化和哈希計算。
此外,The Graph也有一個提供的API能夠查找有關ENS 域名的數據;`labelhash` 是此信息的特定字段,但也包含更多可用信息。
鏈上解析
定義了ENS地址的節點哈希,就可以使用它來解析鏈上的合約地址。同樣,對解析器很有用,因為今天和這個地址解析器的地址是一樣的。作為我們正在解析的真實性來源。飼料。
在鏈上Solidity 合約中,你需要為ENS 合約和解析器實現幾個接口。
abstract contract ENS { function resolver(bytes32 node) public virtual view returns (Resolver); } abstract contract Resolver { function addr(bytes32 node) public virtual view returns (address); }
當接口這些被定義後,就可以創建一個簡單的解析器把哈希轉換為一個地址。
contract MyContract { // This is the ENS registry address // It is the same address for Mainet, Ropsten, Rinkerby, Gorli and other networks; ENS ens = ENS(0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e); function resolve(bytes32 node) public view returns(address) { Resolver resolver = ens.resolver(node); return resolver.addr(node); } }
總結
Chainlink 使用ENS 數據作為源地址的真實使用。 ENS 刪除了對長地址的使用地址,並選擇確保使用正確的鏈接地址進行源地址。
要了解有關ENS 和Chainlink 的更多信息,可訪問Chainlink 文檔。
訪問chain.link或閱讀docs.chain.link上的文檔可以了解Chainlink的更多信息。要集成討論,請聯繫相關專家。