[Tech#6] ENS를 코드 레벨로 사용하는 방식과 구조에 대해서 알아보자!👀
도깨비 레터(DOKKAEBI LETTER)
2022년 7월 7일(목) W6 도깨비 레터_테크편 줄거리..🔮
지난주,
"Eth-lightWallet 라이브러리를 사용해서 지갑을 만들기!" 에 이어서
이번주, "ENS를 코드 레벨로 사용하는 방식과 구조" 에 대해서 알아 보겠습니다!🙌
안녕하세요, Ovadix 입니다.😎 오늘은 ENS가 무엇인지 그리고 ENS를 코드 레벨로 사용하는 방식에 대해 알아볼께요!🚀
👀 ENS( Ethereum Name Service ) 란?
이름을 통해 오늘날 인터넷 상의 정보에 액세스 하도록 도와주는 도메인 네임 서비스와 유사한 서비스로는, 블록체인 기반의 Web3용으로 이더리움 네임 서비스(ENS)가 있습니다.
이더리움 네임 서비스(ENS)는 이더리움 블록체인 상에 구축됩니다. 이를 이용하면 안전하고 검열 저항적인 비공개 도메인인 .eth 도메인 이름을 구입할 수 있습니다.
요약해보자면 우리가 웹싸이트를 로그인할때
name.com 사용하면 직관적으로 알 수 있는 것처럼, 이더리움 각 주소들에게 사람들이 이해할 수 있는 이름을 사용하게 함으로써 주소를 조금더 직관적으로 사용할 수 있게 만드는 시스템입니다.
따라서 ENS를 사용하면, batman.eth 또는 cinderella.eth 등의 도메인을 구매하여 “0x3bsfjbk234basf8iwerb….” 같은 이더리움 지갑 주소로 연결할 수 있습니다.
ENS는 registry, resolvers 라는 두가지의 중요한 구성요소 를 가지고 있습니다.
ENS registry는 모든 도메인 및 하위 도메인 목록을 유지 관리하고 각각에 대한 세 가지(도메인 소유자, 도메인 확인자, 도메인의 모든 레코드에 대한 캐싱 TTL(Time-to-live) ) 중요한 정보를 저장하는 단일 스마트 계약으로 구성됩니다.
도메인 소유자는 외부 계정(사용자) 또는 스마트 계약일 수 있습니다. 레지스트라는 도메인을 소유하고 계약에 정의된 몇 가지 규칙을 따르는 사용자에게 해당 도메인의 하위 도메인을 발행하는 스마트 계약입니다.
ENS레지스트리의 도메인 소유자는 도메인에 대한 resolver및 TTL설정, 도메인 소유권을 다른 주소로 이전, 하위도메인의 소유권변경을 할 수 있습니다.
ENS registry는 의도적으로 간단하며 이름에서 이를 담당하는 resolver로 매핑하기 위해서만 존재합니다.
Resolver 는 이름을 주소로 변환하는 실제 프로세스를 담당합니다.
위에서 foo.eth가 가르키는 이더리움 주소를 찾으려고 합니다. 먼저, registry에 foo.eth를 담당하는 resolver가 무엇인지 물어봅니다.
그러면 registry에서 resolver address를 return 해줄것이며 우리는 resolver에게 다시한번 주소를 요청할 수 있습니다. 그러면 foo.eth가 가르키는 이더리움 주소를 얻을 수 있습니다.
ENS를 구조적으로 전체를 이해하기에는 어려울 수 있습니다. 이번에는 ENS를 사용하면 얻을 수 있는 이점이나 편리함을 더 생각해 보면 좋을 것 같습니다. 밑에 코드를 이용해서 간단한게 자신이 가지고 있는 ENS를 조회 할 수 있는 방법에 대해서 알아보겠습니다.
#DOKKAEBI LETTER 도깨비 레터 Editor 절찬리 모집중..!🔮
블록체인, Defi, NFT, DAO, Web3.0 등 자신이 관심있는 주제로 자신의 인사이트를 공유하고 싶은 분 이면 누구나 환영합니다!🙌 공유하고 피드백 하면서 함께 성장 해 봐요!🚀
💌E-mail💌: dokkaebi.dao@gmail.com
먼저, dapp을 개발하고 있는 개발자라면 자신의 dapp에 ENS를 사용하고 싶을 수 있습니다. ENS는 많은 라이브러리를 제공해주고 있기 때문에 간단하게 test 해볼 수 있습니다.
// ethereum networkd - ropsten, id:3 // 내가소유하고 있는 ENS -> ovadix.eth // owner -> 0xdb41f06dde2afad8670ad926499ec2d05da433ce
const ENS = require('ethjs-ens') const HttpProvider = require('ethjs-provider-http')
async function setupEns () {
// provider, ens는 라이브러리를 사용하기 위한 설정 / ropsten네트워크는 infura에서 빌려옴.
const provider = new HttpProvider('
https://ropsten.infura.io/v3/ {자기만의 고유 아이디}')
const ens = new ENS({ provider, network: '3' })
const address = await ens.getResolverAddress("ovadix.eth");
const addr = await ens.getOwner("ovadix.eth")
const name = await ens.reverse('0xdb41f06dde2afad8670ad926499ec2d05da433ce')
console.log(address);
console.log(addr);
console.log(name);
}
setupEns();
위와 같이 라이브러리를 이용해서 resolverAddress와 owner의 주소를 가지고 검색해볼수 있습니다. 너무 간단해 보이지만 이 방법을 통해서 유저들이 등록한 ENS를 검증해 볼 수도 있습니다.
ovadix.eth → ownerAddress로 변경할 수 있다면 ownerAddress로 쿼리를 날려서 ovadix.eth를 가져오는 것은 reverse함수를 통해서 가능합니다.
오늘은 ENS가 무엇인지 그리고 코드 레벨로 사용하는 방식과 구조에 대해 생각해 볼 수 있는 시간이 될 것 같습니다. 감사합니다!💕
#Disclaimer
본 자료는 투자 권유 목적으로 작성된 것이 아니라는 점 말씀 드리며, 크립토 및 web3 이해를 돕기 위한 각종 정보 제공 목적으로 작성되었습니다. 본 자료는 DOKKAEBI DAO 멤버에 의해 작성되었으며 무단 도용 및 배포를 금지합니다. 본 자료에 대한 이용 등 기타 문의사항 발생 시, 하단 메일로 전달 주시기 바랍니다.
이번주 도깨비 레터는 어땠나요?
어디가 좋았고😊/어디가 쫌 아쉬웠는지🧐,
아래 버튼을 통해 피드백 주세요!💕
도깨비 레터 Dokkaebi Letter 를 구독하고 이메일로 받아보세요매주 화/수 블록체인, DeFi, NFT, DAO, Web3 얘기를 전해 드려요:D
구독하기