스마트 계약 이름 지정
페이지 마지막 업데이트됨: 2025년 9월 9일
스마트 계약은 이더리움 탈중앙화 인프라의 핵심으로, 자율적인 애플리케이션과 프로토콜을 가능하게 합니다. 하지만 계약 기능이 발전함에도 불구하고 사용자와 개발자는 여전히 원시 16진수 주소에 의존하여 이러한 계약을 식별하고 참조합니다.
Ethereum Name Service(ENS) (opens in a new tab)로 스마트 계약에 이름을 지정하면 16진수 계약 주소를 제거하여 사용자 경험을 개선하고 주소 포이즈닝 및 스푸핑 공격과 같은 공격의 위험을 줄일 수 있습니다. 이 가이드에서는 스마트 계약 이름 지정이 중요한 이유, 구현 방법, 그리고 Enscribe (opens in a new tab)와 같이 프로세스를 간소화하고 개발자가 이 관행을 채택하는 데 도움이 되는 도구에 대해 설명합니다.
스마트 계약에 이름을 지정하는 이유는 무엇일까요?
사람이 읽을 수 있는 식별자
개발자와 사용자는 0x8f8e...f9e3과 같이 불투명한 계약 주소와 상호작용하는 대신 v2.myapp.eth와 같이 사람이 읽을 수 있는 이름을 사용할 수 있습니다. 이는 스마트 계약 상호작용을 간소화합니다.
이는 이더리움 주소에 대한 탈중앙화 이름 지정 서비스를 제공하는 Ethereum Name Service (opens in a new tab)를 통해 가능합니다. 이는 인터넷 사용자가 104.18.176.152와 같은 IP 주소 대신 ethereum.org와 같은 이름을 사용하여 네트워크 주소에 접속할 수 있도록 하는 도메인 이름 서비스(DNS)와 유사합니다.
향상된 보안 및 신뢰
이름이 지정된 계약은 잘못된 주소로의 의도치 않은 거래를 줄이는 데 도움이 됩니다. 또한 사용자가 특정 앱 또는 브랜드와 연결된 계약을 식별하는 데 도움이 됩니다. 이는 특히 uniswap.eth와 같이 잘 알려진 상위 도메인에 이름이 연결된 경우 평판 신뢰도를 한층 더 높여줍니다.
이더리움 주소는 42자 길이이므로 사용자가 몇 글자만 수정된 주소의 작은 변화를 식별하기가 매우 어렵습니다. 예를 들어, 0x58068646C148E313CB414E85d2Fe89dDc3426870과 같은 주소는 일반적으로 지갑과 같은 사용자용 애플리케이션에서 0x580...870으로 잘립니다. 사용자는 몇 글자가 변경된 악의적인 주소를 알아차리기 어렵습니다.
이러한 유형의 기술은 주소 스푸핑 및 포이즈닝 공격에 사용되며, 사용자는 올바른 주소와 상호작용하거나 자금을 보내고 있다고 믿게 되지만 실제로는 해당 주소가 올바른 주소와 유사할 뿐 동일하지는 않습니다.
지갑과 계약에 대한 ENS 이름은 이러한 유형의 공격으로부터 보호합니다. DNS 스푸핑 공격과 마찬가지로 ENS 스푸핑 공격도 발생할 수 있지만, 사용자는 16진수 주소의 작은 수정보다 ENS 이름의 오타를 더 쉽게 알아차릴 수 있습니다.
지갑 및 탐색기를 위한 더 나은 UX
스마트 계약이 ENS 이름으로 구성된 경우 지갑 및 블록체인 탐색기와 같은 앱에서 16진수 주소 대신 스마트 계약에 대한 ENS 이름을 표시할 수 있습니다. 이는 사용자에게 상당한 사용자 경험(UX) 향상을 제공합니다.
예를 들어, Uniswap과 같은 앱과 상호작용할 때 사용자는 일반적으로 상호작용하는 앱이 uniswap.org 웹사이트에서 호스팅된다는 것을 알 수 있지만, Uniswap이 스마트 계약에 ENS 이름을 지정하지 않은 경우 16진수 계약 주소가 표시됩니다. 계약에 이름이 지정된 경우 대신 훨씬 더 유용한 v4.contracts.uniswap.eth를 볼 수 있습니다.
배포 시점의 이름 지정 vs. 배포 후 이름 지정
스마트 계약에 이름을 지정할 수 있는 시점은 두 가지입니다.
- 배포 시점: 계약이 배포될 때 ENS 이름을 할당합니다.
- 배포 후: 기존 계약 주소를 새로운 ENS 이름에 매핑합니다.
두 가지 접근 방식 모두 ENS 레코드를 생성하고 설정할 수 있도록 ENS 도메인에 대한 소유자 또는 관리자 액세스 권한이 있어야 합니다.
계약에 대한 ENS 이름 지정 작동 방식
ENS 이름은 온체인에 저장되며 ENS 확인자를 통해 이더리움 주소로 확인됩니다. 스마트 계약에 이름을 지정하려면:
- 상위 ENS 도메인(예:
myapp.eth)을 등록하거나 제어합니다. - 하위 도메인(예:
v1.myapp.eth)을 생성합니다. - 하위 도메인의
address레코드를 계약 주소로 설정합니다. - 계약의 역방향 레코드를 ENS로 설정하여 주소를 통해 이름을 찾을 수 있도록 합니다.
ENS 이름은 계층적이며 무제한의 하위 이름을 지원합니다. 이러한 레코드를 설정하려면 일반적으로 ENS 레지스트리 및 공용 확인자 계약과 상호작용해야 합니다.
계약 이름 지정을 위한 도구
스마트 계약에 이름을 지정하는 데는 두 가지 접근 방식이 있습니다. 몇 가지 수동 단계를 거쳐 ENS 앱 (opens in a new tab)을 사용하거나 Enscribe (opens in a new tab)를 사용하는 방법이 있습니다. 이에 대한 내용은 아래에 설명되어 있습니다.
수동 ENS 설정
ENS 앱 (opens in a new tab)을 사용하여 개발자는 수동으로 하위 이름을 생성하고 정방향 주소 레코드를 설정할 수 있습니다. 그러나 ENS 앱을 통해 이름에 대한 역방향 레코드를 설정하여 스마트 계약의 기본 이름을 설정할 수는 없습니다. ENS 문서 (opens in a new tab)에 설명된 수동 단계를 수행해야 합니다.
Enscribe
Enscribe (opens in a new tab)는 ENS를 사용하여 스마트 계약 이름 지정을 간소화하고 스마트 계약에 대한 사용자 신뢰를 향상시킵니다. 다음과 같은 기능을 제공합니다.
- 원자적 배포 및 이름 지정: 새 계약을 배포할 때 ENS 이름을 할당합니다.
- 배포 후 이름 지정: 이미 배포된 계약에 이름을 연결합니다.
- 멀티체인 지원: ENS가 지원되는 이더리움 및 L2 네트워크에서 작동합니다.
- 계약 검증 데이터: 여러 소스에서 가져온 계약 검증 데이터를 포함하여 사용자의 신뢰를 높입니다.
Enscribe는 사용자가 제공한 ENS 이름 또는 사용자가 ENS 이름이 없는 경우 자체 도메인을 지원합니다.
Enscribe 앱 (opens in a new tab)에 접속하여 스마트 계약의 이름을 지정하고 볼 수 있습니다.
모범 사례
v1.myapp.eth와 같이 명확하고 버전이 지정된 이름 사용: 계약 업그레이드를 투명하게 만듭니다.- 역방향 레코드 설정: 계약을 ENS 이름에 연결하여 지갑 및 블록체인 탐색기와 같은 앱에서 가시성을 확보합니다.
- 만료일 면밀히 모니터링: 의도치 않은 소유권 변경을 방지하려면 만료일을 면밀히 모니터링하세요.
- 계약 소스 확인: 사용자가 이름이 지정된 계약이 예상대로 작동하는지 신뢰할 수 있도록 계약 소스를 확인하세요.
위험
스마트 계약의 이름을 지정하면 이더리움 사용자에게 상당한 이점을 제공하지만, ENS 도메인 소유자는 관리에 주의를 기울여야 합니다. 주요 위험은 다음과 같습니다.
- 만료: DNS 이름과 마찬가지로 ENS 이름 등록은 유한한 기간 동안만 유효합니다. 따라서 소유자는 도메인 만료일을 모니터링하고 만료일보다 훨씬 전에 갱신하는 것이 중요합니다. ENS 앱과 Enscribe 모두 만료가 다가올 때 도메인 소유자에게 시각적 표시기를 제공합니다.
- 소유권 변경: ENS 레코드는 이더리움에서 NFT로 표시되며, 특정
.eth도메인의 소유자는 관련 NFT를 소유하게 됩니다. 따라서 다른 계정이 이 NFT의 소유권을 갖게 되면 새 소유자는 자신의 재량에 따라 모든 ENS 레코드를 수정할 수 있습니다.
이러한 위험을 완화하려면 .eth 2단계 도메인(2LD)의 소유자 계정을 다중 서명 지갑을 통해 보호하고 하위 도메인을 생성하여 계약 이름 지정을 관리해야 합니다. 그렇게 하면 하위 도메인 수준에서 우발적이거나 악의적인 소유권 변경이 발생하더라도 2LD 소유자가 이를 무효화할 수 있습니다.
계약 이름 지정의 미래
계약 이름 지정은 웹에서 도메인 이름이 IP 주소를 대체한 것과 유사하게 디앱 개발의 모범 사례가 되고 있습니다. 지갑, 탐색기, 대시보드와 같은 더 많은 인프라가 계약에 대한 ENS 확인 기능을 통합함에 따라, 이름이 지정된 계약은 생태계 전반의 안전성을 개선하고 오류를 줄일 것입니다.
스마트 계약을 더 쉽게 인식하고 추론할 수 있도록 함으로써, 이름 지정은 이더리움의 사용자와 앱 간의 간극을 메워 사용자의 안전과 UX를 모두 향상시키는 데 도움이 됩니다.