본문 바로가기
블록체인/블록체인이란?

ENS(Ethereum Name Service)

by 제이제이_은재 2024. 5. 21.
반응형

 

📔 ENS(Ethereum Name Service)

 

ENS란?

  • 2017년 Nick Johnson이 출시한 Ethereum Name Service
  • 복잡한 영어 + 숫자 블록체인 주소를 사람이 읽을 수 있는 형식으로 변환하는 서비스(0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045→vitalik.eth)
  • DNS 가 그랬던 것처럼 기억하기 쉽기 때문에, ENS는 암호화폐 거래의 접근성을 향상시킴
  • ENS 주소는 ERC-721 토큰 표준을 사용하여 NFT로 발행 → 거래소에서 거래 가능

 

ENS 작동 원리

 

GitHub - ensdomains/ens-contracts: The core contracts of the ENS protocol

The core contracts of the ENS protocol . Contribute to ensdomains/ens-contracts development by creating an account on GitHub.

github.com

ENS Registry

  1. 모든 도메인 및 서브도메인 소유권 정보를 저장하는 스마트 컨트랙트
  2. 도메인 소유자, 확인자, 도메인 아래 모든 레코드의 캐싱 시간을 유지 관리
  3. 주요 인터페이스
    • owner(bytes32 node): 특정 노드(도메인)의 소유자 주소를 반환
    • resolver(bytes32 node): 특정 노드의 resolver 주소를 반환
    • setOwner(bytes32 node, address owner): 노드의 소유자를 변경
    • setResolver(bytes32 node, address resolver): 노드의 resolver를 설정
    • setTTL(bytes32 node, uint64 ttl): 노드의 TTL 값을 설정

Resolver

  1. 사람이 읽을 수 있는 도메인 주소를 기계가 읽을 수 있는 주소로 변환하거나, 기계가 읽을 수 있는 주소를 사람이 읽을 수 있는 주소로 변환하는 역할
  2. 주요 인터페이스
    • addr(bytes32 node): 노드에 매핑된 이더리움 주소를 반환
    • setAddr(bytes32 node, address addr): 노드에 이더리움 주소를 설정
    • text(bytes32 node, string key): 노드에 매핑된 텍스트 레코드를 반환
    • setText(bytes32 node, string key, string value): 노드에 텍스트 레코드를 설정

 

ENS 작동 예시

  1. 도메인 등록: alice.eth 를 등록하기 위해 Alice는 Registrar 에 등록 요청을 한다.
  2. 소유권 설정: 등록이 완료되면, 레지스트리에 alice.eth 도메인의 소유자가 Alice 의 주소로 설정된다.
  3. Resolver 설정: Alice는 Resolver를 설정하여 alice.eth 도메인이 자신의 이더리움 주소 ‘0x1234…’ 로 매핑 되도록 한다.
  4. 도메인 해석: Bob이 alice.eth 로 이더를 송금하려고 . 할 때 ENS 레지스트리에서 ‘alice.eth’ 의 resolver 주소를 가져오고, 해당 resolver에서 이더리움 주소‘0x1234…’ 를 반환한다.
  5. 트랜잭션: Bob의 트랜잭션은 최종적으로 ‘0x1234…’ 주소로 송금된다.

 

도메인 해싱

  1. ENS는 도메인 이름을 해싱하여 저장하는데, 이 때 namehash 알고리즘이 사용
  2. Namehash는 도메인 이름의 계층적 구조를 유지하면서, 도메인 이름을 해시값으로 변환
  3. 계산 과정
    • 초기 값 설정: 빈 문자열의 해시 값은 0x0 으로 시작
    • 도메인 분리: mynam.eth 를 분리하면 [”myname”, “eth”] 가 된다.
    • 레이블 해싱 및 결합: 각 레이블을 오른쪽에서 왼쪽으로 처리하면서 해싱하고 결합
    • 실제 계산 과정 (해시 알고리즘으로 keccak256 을 사용)
      1. eth 레이블의 해시값 계산: keccak256(”eth”)
      2. myname 레이블의 해시값 계산: keccak256(0x0 + keccak256(”eth”))
      3. 최종 도메인 해시값 계산: keccak256(keccak256(0x0 + keccak256(”eth”))+keccak256(”myname”))

Reference

https://plisio.net/ko/blog/what-is-the-ethereum-name-service-ens

https://www.btcc.com/ko-KR/academy/crypto-basics/what-is-ens

반응형

댓글