NKN 생태계의 리졸버 소개

Dan
NKN-Korea
Published in
4 min readJul 21, 2023

편집자 주: 이 글은 개발자를 위한 글이며, NKN의 유니버설 커뮤니케이션 서비스에 대한 일반적인 정보는 여기를 참조하세요.

예를 들어, 사람들은 종종 NKN 블록체인 외부에서 NKN이 무엇을 할 수 있는지에 대해 질문합니다:

  • 두 이더리움 주소 간의 실시간 통신을 위해 NKN을 사용할 수 있나요?
  • 이더리움과 비트코인처럼 서로 다른 블록체인 주소 간의 통신을 위해 NKN을 사용할 수 있나요?
  • NKN을 사용하여 web2 주소(예: 도메인, 이메일 주소)와 web3 주소(예: 이더리움 주소, ENS) 간의 통신을 할 수 있나요?

이제 대답은 ‘예’입니다.

NKN 주소만으로는 충분하지 않습니다.

NKN은 탈중앙화 통신을 위한 네트워크 계층으로, NKN 주소의 역할은 TCP/IP의 IP 주소와 유사합니다. NKN 메시지를 보낼 때 수신자의 NKN 주소를 알아야 합니다. NKN 주소는 지리적 위치와 무관하고 종단 간 암호화에 친화적인 등 IP 주소에 비해 장점이 있지만, 대부분의 사람들이 기억하거나 인식하지 못하는 기계 친화적인 주소라는 한 가지 공통점이 있습니다. 많은 시나리오에서 사람들은 메시지를 수신할 때 NKN 주소를 직접 사용하지 않습니다. 몇 가지 일반적인 예를 들어보겠습니다:

  • 사용자가 이미 잘 알려진 이더리움 주소를 가지고 있으며, 이를 자신의 신원으로 사용하고자 합니다.
  • 사용자가 ENS를 등록하고 공개적으로 자신의 주소를 사람이 읽을 수 있도록 사용하고자 합니다.

이를 가능하게 하려면 NKN이 아닌 주소를 사용해 NKN 메시지를 수신할 수 있는 프로토콜이 필요합니다.

리졸버

리졸버는 기본적으로 비NKN 주소를 NKN 주소로 변환할 수 있는 NKN SDK의 플러그인입니다. 리졸버가 확인하는 주소는 지도 정보가 포함된 데이터 소스만 있다면 이더리움 주소부터 하위 도메인이나 이메일 주소까지 무엇이든 될 수 있습니다. 데이터 소스는 사용자가 동일한 프로토콜을 따르는 한 스마트 컨트랙트처럼 탈중앙화될 수도 있고 데이터베이스처럼 중앙화될 수도 있습니다. 확인할 주소를 제어하는 사용자는 일회성 설정 프로세스로 데이터 소스에 자신의 NKN 주소를 저장해야 합니다.

저희가 구현한 몇 가지 리졸버는 다음과 같습니다:

  • eth-resolver-go는 스마트 컨트랙트를 통해 이더리움 호환 주소 또는 ENS를 NKN 주소에 매핑합니다.
  • dns-resolver-go는 foo.com과 같은 (하위) 도메인이나 user@foo.com 같은 이메일 주소를 DNS TXT 레코드를 통해 NKN 주소로 매핑합니다.

개발자는 NKN SDK를 사용할 때 사용할 레졸버를 선택할 수 있습니다. 또한 프로토콜 https://docs.nkn.org/docs/nkn-sdk-resolver 을 따르는 한 자체 리졸버를 작성할 수도 있습니다.

개발자 예시

한 개발자가 사용자가 NKN 주소를 사용하여 서로 채팅할 수 있는 앱을 만들었다고 가정해 봅시다. 이제 그는 이더리움/ENS 주소와 이메일 주소도 지원하여 사용자가 0x...user@foo.com과 같은 기존 주소를 사용하여 채팅할 수 있도록 하고자 합니다. 그는 다음과 같이 변경해야 합니다:

  • 이더리움/ENS 주소를 사용하고자 하는 사용자에게 스마트 컨트랙트를 통해 주소 맵을 설정하도록 지시합니다. 메타마스크 사용자는 https://ethnkn.nkn.org/ 에서 몇 번의 클릭만으로 이 작업을 수행할 수 있습니다.
  • 하위 도메인 또는 이메일 주소를 사용하려는 사용자에게 https://github.com/nknorg/dns-resolver-go 의 형식에 따라 DNS TXT 레코드를 추가하여 주소 맵을 설정하도록 안내합니다.
  • NKN 멀티클라이언트를 생성할 때, 설정에서 ethResolver와 dnsResolver를 확인자로 전달합니다(예: https://github.com/nknorg/eth-resolver-go).

이것만 하면 작동합니다. 이제 사용자는 0x...와 같은 기존 이더리움/ENS 주소와 user@foo.com와 같은 하위 도메인/이메일 주소를 사용하여 메시지를 주고받을 수 있습니다.

--

--