테크 #백서리뷰#기술분석#이더리움#tech
너의 ‘이더리움’ 이름은?
ENS 등록, IPFS 호스팅 등 고급 기능 사용기
ENS코어 개발자, “ENS, 여러 암호화폐를 지원하는 네임 서비스로 확장할 것”
강민승
등록일: 2019-08-22  수정일: 2019-08-23


“인터넷 사용자는 디앱(dApp)에 현재 친숙할 수가 없다. 디앱을 사용하려면 일단 자신의 블록체인 계정 주소를 기억해야 하지만 사실상 어렵고 다른사람에게 주소를 알려주기도 어려운 한계가 있기 때문이다. 때문에 디앱이 널리 사용되려면 무엇보다도 사용자의 이더리움 계정을 기억하기 쉬워야 한다. 이더리움네임서비스(ENS)는 복잡한 영문숫자 주소를 간단한 ENS 도메인으로 갈음해 디앱, 특히 이더리움 송금 서비스에서 사용성을 크게 개선한다.”



브랜틀리 밀리건 ENS 코어개발자(사진)는 ENS를 통해 사용자경험(UX)를 개선한 효과를 강조하며 지난 5월 이드콘에서 이같이 말했다. ENS란 영문과 숫자가 혼합된 42글자의 이더리움 계정 주소, 예를 들어 0x40816599De38f53f8E269a2005bbdF13E1C4be6e를 dstreetmedia.eth와 같은 간단한 주소로 매핑하는 서비스로 DNS와 유사하다. DNS는 인터넷 통신에서 210.89.160.88 등으로 표현되는 IP를 사람이 읽기 쉬운 naver.com 등의 도메인으로 변경해주는 서비스를 말한다. 40글자가 넘는 이더리움 주소, 기억 쉽게 바꿀 수 있는 ENS ENS가 집중하고 있는 부분은 이더리움에서 사용하는 주소를 사람이 읽고 기억하기 쉬운 문자 형태로 변환하는 과정이다. 일반적으로 이더리움 디앱을 사용하려면 사용자는 필연적으로 자신의 계정 주소를 숙지하고 있어야 한다. 하지만 사용자의 주소는 42글자의 영문자와 숫자로 이뤄져 있어 기억하기 어렵고 관리하기도 현실적으로 쉽지 않은 한계가 따른다. 이같이 긴 주소는 보안상으로도 취약하다. 실제로 사용자는 지불과정에서 긴 주소를 복사하고 붙여넣기를 하는 경우가 많은데 중간에서 받는사람 주소를 교묘하게 바꿔치는 해커의 크립토재킹 등 사이버 공격도 발생하기 때문이다. 복잡하고 긴 이더리움 계정 주소에서 오는 사용자의 통점을 해결하고자 기억하기 쉬운 형태로 이더리움의 주소를 관리하는 ENS가 재작년 등장했다. ENS를 사용하면 0x4081...6e 처럼 긴 주소를 사용자가 기억할 필요가 없다. 원래의 주소와 alice.eth 등으로 표현되는 이더리움 이름이 매칭되기 때문이다. 사용자는 alice.eth를 송금 주소창에 넣고 지불을 직접 수행할 수 있어 송금이 매우 간단해진다. ENS와 호환되는 브라우저와 지갑도 늘고 있는 추세다. 현재 ENS는 마이이더월릿, 마이크립토와 같은 암호화폐 지갑과 모바일 웹 브라우저인 오페라 터치에서 지원된다. 또 크롬 웹 브라우저에서 메타마스크 확장 프로그램을 설치해 쓸수도 있다. 이같은 지갑에서는 받는 사람 주소에 이더리움 계정 주소를 입력할 필요없이 ENS 이름을 입력하면 손쉽게 송금할 수 있다.

ENS 작동방식

ENS의 소스코드는 ENS 깃허브에 공개돼 있다. 이더리움에서 주소를 기억하기 쉽도록 관리하는 서비스는 ENS가 처음은 아니다. 고이더리움(geth)의 초기 버전에도 ENS와 유사한 네임 레지스트리가 탑재된 바 있으나 지금은 사용되지 않고 있다. ENS의 구체적인 작동 방식을 살펴보기 앞서 ENS에서 사용하는 용어와 개념을 숙지할 필요가 있다. ENS에서는 alice.eth와 같이 점으로 구분해 적은 주소를 이더리움 이름이라고 부른다. 또 ENS에 이름을 등록하는 사용자를 레지스트란트라고 부른다. ENS를 등록하는 행위를 레지스트레이션이라고 부른다. ENS에서 레지스트란트는 이름의 소유권을 다른 사람에게 전송하거나 이더리움 도메인 이름을 새로 갱신하는 등 여러 권한을 갖는다. 이더리움 도메인 이름은 서브도메인을 통해 확장할 수 있다. ENS에서 서브도메인은 왼쪽에 적는다. 한편 점으로 구분된 이더리움 이름의 한 조각을 라벨이라고 부른다. 라벨은 이더리움 이름에 고유값을 매기기 위해 존재한다. 라벨에서 추출한 고유의 해시값을 라벨해시라고 한다. ENS에서 라벨해시는 내부적으로 SHA-3 해시함수의 한 종류인 케칵(keccak)을 통해 추출한다. payment.alice.eth같이 서브도메인을 포함하는 하나의 완성된 주소는 고유한 해시값을 지닌다. ENS에서는 이를 노드라고 부른다. 노드 값은 해당 이더리움 이름에 사용된 모든 라벨해시를 모두 더해서 측정한다. 이렇게 계산된 노드는 이더리움 이름을 내부에서 식별하는 값으로 사용된다. ENS는 별도의 외부 프로그램없이 오로지 디앱 자체로 작동한다. 실제로 ENS는 레지스트리, 레지스타, 리졸버 등 스마트 컨트랙트로 구성돼 있다. 먼저 ENS 코어 부분을 담당하는 컨트랙트를 레지스트리 컨트랙트라고 한다. 레지스트리는 노드를 토대로 이더리움 도메인 이름과 계정 주소를 연결하고 유지하는 역할을 담당한다. 레지스타는 서브도메인을 등록하는 컨트랙트를 말한다. 레지스타 컨트랙트는 이더리움 도메인의 소유권, 만료일자 등 부가적인 데이터도 기록한다. 한편 사용자가 직접 커스텀 제작한 레지스타를 ENS에 사용할 수도 있다. 리졸버는 alice.eth 등의 이더리움 이름을 사용자 이더리움 주소와 실질적으로 매핑하는 컨트랙트를 말한다. 리졸버를 효과적으로 사용하면 이더리움 계좌 주소 뿐만 아니라 IPFS 등 외부 컨텐츠도 ENS와 연결할 수도 있어 쓰임새가 넓어진다. 때문에 ENS에서는 무엇보다도 리졸버 컨트랙트의 역할이 중요하다. ENS는 기본적으로 공개형 리졸버를 사용자가 쓸 수 있도록 자체적으로 지원해 이더리움 계정과 이더리움 도메인네임을 연결하고 있다.


[캡션: ENS 아키텍쳐, 출처=ENS 홈페이지]


ENS는 송금 등 사용자의 요청에 따라 스마트 컨트랙트를 호출하는 단순한 로직으로 구현돼 있다. 한 마디로 말하자면 이더리움 도메인은 레지스트리를 통해 등록하고 도메인 네임을 처리하는 요청은 리졸버를 통해 이뤄진다.


그림에서 보면 사용자가 작성한 코드나 ENS 매니저가 레지스트리 컨트랙트에 이름을 등록하는 과정이 나타나 있다. ENS를 사용하는 첫 절차는 ENS 레지스트리에 foo.eth라는 이름을 등록하고 사용할 리졸버 컨트랙트(주소 0x1234)를 설정하는 작업이다. 한편 리졸버 컨트랙트는 여럿이 존재하고 특정 리졸버 컨트랙트를 등록해 사용할 수도 있다.


다음으로는 원래의 주소(0x2345)와 foo.eth라는 이더리움 도메인을 연결하는 작업이 필요하다. 이는 리졸버 컨트랙트에서 수행할 수 있다. foo.eth와 0x2345 주소가 연결되면 사용자는 0x2345로 시작하는 주소대신 foo.eth와 같은 주소를 사용해서 이더리움을 송금하거나 받을 수 있게 된다. 기계적인 주소와 사람이 읽기 쉬운 주소가 연동되는 셈이다.


ENS에도 관리자가 존재한다. ENS의 관리자 계정은 다중서명(멀티시그) 계정들로 구성돼 있다. ENS 권한의 소유권은 멀티시그를 통해 분산돼 관리하는데 이로써 ENS는 정책상 탈중앙화를 이루고 있다. ENS 멀티시그 계정의 키를 보유한 키홀더는 총 7명으로 여러 국가에 나눠져있고 그중 4명이 승인하면 .eth 뿐만 아니라 .abc등 새로운 형태의 이더리움 최상위레벨도메인(TLD)도 만들어 낼 수 있다.


ENS에 이더리움 개인 주소를 등록하는 방법

ENS 도메인은 홈페이지를 통해 현재 구매할 수 있다. 얼마전까지만 해도 ENS를 구매하는 방법은 경매를 통해 입찰하고 결제하는 방식이 유일했는데 이제는 이더리움 지갑이 있는 누구나 ENS를 구매할 수 있도록 최근 업데이트 됐다.


먼저 메타마스크를 설치하고 ENS에 접속해 원하는 도메인 이름이 다른 사람과 겹치지 않는지 검색해 확인한다. 사진에서 dstreetmedia라는 이름을 검색했다.


해당 이더리움 도메인 네임을 사용하는 사람이 없으면 해당 도메인을 바로 구매할 수 있다. 일반적으로 도메인은 연간 5달러(한화 6000원)의 유지비가 발생하며 선결제가 필요하다. ENS 이름을 사용할 기간의 제한은 없다.



리퀘스트 버튼을 누르면 이더리움 네임을 구매하는 트랜잭션이 전송되며 처리에는 시간이 다소 걸린다.



한편 메타마스크에서 트랜잭션의 수수료를 높게 설정하면 트랜잭션이 빠르게 접수된다. 수수료를 적게 설정하면 10분 정도 걸리지만 수수료를 평균 이상으로 올릴 경우 하나의 요청은 대부분 30초 내로 승인돼 빠른 진행을 할 수 있다. 이더리움 이름이 확정되기 위해서는 지불 후 몇 분의 시간이 더 소요된다.


ENS를 구매했다고 끝이 아니다. 이더리움 주소와 실제로 연계하려면 리졸버를 설정해야 한다. 이는 도메인 네임에서 발생한 요청을 처리할 컨트랙트를 할당하는 작업이다. 리졸버는 기본값으로 0x000000으로 설정돼 있다. 이 값을 공개형 리졸버로 교체하는 작업은 어렵지 않다. ENS에서 바로 사용할 수 있는 공개형 리졸버를 자동으로 나타내주기 때문이다. 리졸버를 사용자가 직접 코드로 작성한 컨트랙트로 사용할 수도 있다.



기본값으로 설정된 0x00000..0000000 리졸버를 공개형 리졸버로 교체했다. 리졸버를 설정하면 이더리움 네임을 주소와 매칭하는 작업이 끝난다. ENS를 실질적으로 이제 사용할 수 있다.



대다수 지갑들이 ENS를 현재 지원하고 있어 송금을 원하는 경우 어렵지 않게 ENS 주소를 입력해 이더리움을 송금할 수 있다. 메타마스크에서 받는사람 주소에 dstreetmedia.eth를 입력하면 자동으로 원래 주소를 연결해준다. 사진은 0.1이더를 dstreetmedia.eth로 송금하는 모습. 이제는 누구나 복잡한 주소없이도 dstreetmedia.eth에 이더를 기부할 수 있게 됐다. 많은 기부 부탁드립니다. 꾸벅


한편 ENS에서는 서브 도메인을 설정할 수도 있다. 서브도메인은 tech.dstreetmedia.eth 이런식으로 왼쪽으로 확장해나가는 구조다. 서브도메인을 추가하는 작업은 내부적으로는 레지스타 컨트랙트를 통해 처리된다. 서브도메인을 등록하는데는 수수료 이외의 별도의 요금은 들지 않는다. 사진은 결제 후 tech.dstreetmedia.eth라는 이더리움 도메인의 서브도메인을 획득한 모습.



IPFS + ENS, 웹 컨텐츠를 호스팅하는 심플한 방법

인터플래너터리파일시스템(IPFS)는 분산파일시스템으로 서버-클라이언트 식의 중앙화된 방식이 아닌 모든 노드가 연결된 분산화된 웹에서 파일을 업로드하고 다운로드하는 파일 시스템을 말한다. IPFS에 등록된 컨텐츠는 IPFS 해시를 통해 접근해야 하는데 해시값은 길고 난해하기에 주소를 기억하기가 쉽지 않다. 반면 IPFS로 작성된 디앱이나 컨텐츠의 주소를 ENS로 간결하게 표현해 접근하면 손쉽게 연결할 수 있다. 즉 IPFS 해시값을 ENS에 등록하면 IPFS 컨텐츠에도 접근이 손쉬워지는 효과가 있다. 


dstreetmedia.eth라는 ENS 도메인을 메타마스크 확장프로그램이 설치된 크롬 웹 브라우저에 입력하면 IPFS에 올린 웹페이지를 볼 수 있도록 구현해보았다. 여기서 ENS는 IPFS에 배포된 웹 페이지를 호스팅하고 컨텐츠 해시를 간결화하는 역할을 수행하게 된다. 먼저 웹페이지를 표시하기 위해 index.html 파일을 다음과 같이 간단히 작성했다.


IPFS 해시를 얻는 방법도 어렵지 않다. 이를 위해 IPFS 데몬을 구동하고 있는 상황에서 ipfs add -r 명령어와 함께 index.html이 담긴 디렉토리를 입력한다. index.html을 IPFS에 배포하면 파일의 해시값이 나타난다.


맨 마지막에 등장한 added 해시값 이후로 등장하는 해시 문자열은 사이트 시드라고 불린다. 사이트 시드는 실제로 ENS 도메인의 컨텐츠로 등록하는 값으로 사용된다. 사이트 시드로 QmUuCF7psboMm7zRBBYT3jbLnzCcDLyvXBnq31ntMQMY9c를 얻었다. 이를 웹에서 보려면 ...ipfs/QmUuCF7psboMm7zRBBYT3jbLnzCcDLyvXBnq31ntMQMY9c처럼 IPFS의 게이트웨이 주소에 컨텐츠 해시값을 붙여넣어야 한다. 하지만 매번 컨텐츠를 보려고 IPFS 해시값을 기억해야 한다면 사용자에게 접근성이 떨어지게 된다.

동일한 컨텐츠에 ENS를 사용하면 더 쉽게 접근할 수 있다. 즉 IPFS 컨텐츠의 접근성도 ENS를 통해 크게 향상시킬 수 있다. ENS를 사용하면 IPFS 컨텐츠에도 도메인을 얼마든지 할당할 수 있다. ENS 매니저 홈페이지의 리졸버 메뉴에서 레코드 란에 IPFS 컨텐츠를 추가하기만 하면 된다. IPFS 해시를 ENS에 추가하는 과정에는 0.05달러(한화 60원) 수준의 수수료가 든다.


ENS의 리졸버에 IPFS 해시 레코드를 추가하면 크롬 브라우저 등 지갑 인터페이스가 있는 브라우저에서 컨텐츠를 바로 볼 수 있다. 사진은 dstreetmedia.eth 도메인의 레코드 란에 IPFS 해시 컨텐츠를 삽입한 모습이다. 실제로 크롬 브라우저, 오페라 브라우저 등에서 ENS 주소를 바로 입력하면 위에 작성한 웹컨텐츠를 볼 수 있다. 암호화폐 송금 주소, 인터넷 페이지 주소가 동시에 가능한 이유는 리졸버의 특징에 있다. ENS 리졸버는 암호화폐를 송수신하는 요청, 컨텐츠 렌더링 요청 등에서 이더리움 계좌 주소를 연결하기도 하고 IPFS 해시를 연결하는 역할을 모두 수행하기 때문이다. 한편 IPFS에 배포된 디앱도 이와 마찬가지로 ENS에 등록하면 브라우저에서 손쉽게 접속할 수 있게 된다.


사진은 브라우저 주소창에 dstreetmedia.eth를 입력한 결과화면이다. dstreetmedia.eth로 접속하면 메타마스크가 ENS를 경유해 IPFS 컨텐츠가 있는 곳으로 이동해 결과값을 브라우저에 보여준다. 브라우저는 index.html에서 작성한 컨텐츠를 모두 렌더링해 보여주고 있다.


http://dstreetmedia.eth를 입력하면 곧 IPFS로 호스팅 되는 웹 페이지로 이동한다.
ENS, 다른 암호화폐와 DNS로 확장된다
ENS는 이모지를 도메인에 넣어 사용할 수 있도록 최근 업데이트 됐다. ENS는 현재 일곱 글자 이상의 단어만 지원하고 있지만 앞으로 6글자 이하의 도메인도 지원할 예정이다. 이를 위해 ENS는 이번달 25일까지 3~6글자 이더리움 도메인의 예약을 사용자로부터 받고 있다. 현재의 ENS가 제공하는 퍼블릭 리졸버는 이더리움 계정 주소만 오직 지원하고 있지만 앞으로는 라이트코인, 모네로, 대시 등 여러 암호화폐를 지원할 예정이다. ENS 서비스를 통해 라이트코인 등 암호화폐 여럿을 주소를 등록하고 코인을 주고받을 수 있게 된다.
밀리건 코어개발자는 “ENS에서는 DNS와 ENS를 결합하는 제품을 현재 개발하고 있다. 올해말이면 .com, .org등의 도메인과 이더리움 주소를 엮어 송금 등의 서비스에 사용될 수 있을 것”이라고 말했다. 그는 이어 “기존 도메인을 ENS에 연결하는 작업은 기술적으로 어렵지 않기에 앞으로 기존에 존재하는 1200개 이상의 DNS 도메인을 통해 암호화폐를 송금할 수 있게 될 것”이라고 덧붙였다. [강민승 기자]


D.VIP 3기 인플루언서/CM반
북마크
좋아요 : 2
공유
https://dstreet.io/news/view-detail?id=N20190822162938240368
URL복사
댓글 0
댓글쓰기
댓글 쓰기
D.VIP 3기 업계 입문반