---
title: "스마트 컨트랙트 이름 지정"
description: "ENS를 사용하여 이더리움 스마트 컨트랙트의 이름을 지정하는 모범 사례"
lang: ko
---

스마트 컨트랙트는 이더리움의 탈중앙화된 인프라의 초석으로, 자율적인 애플리케이션과 프로토콜을 가능하게 합니다. 하지만 컨트랙트의 기능이 발전함에도 불구하고, 사용자와 개발자는 여전히 이러한 컨트랙트를 식별하고 참조하기 위해 원시 16진수 주소에 의존하고 있습니다.

[이더리움 네임 서비스(ENS)](https://ens.domains/)를 사용하여 스마트 컨트랙트의 이름을 지정하면 16진수 컨트랙트 주소를 제거하여 사용자 경험을 향상시키고, 주소 포이즈닝(address poisoning) 및 스푸핑(spoofing) 공격과 같은 위험을 줄일 수 있습니다. 이 가이드에서는 스마트 컨트랙트 이름 지정이 중요한 이유, 구현 방법, 그리고 이 과정을 간소화하고 개발자가 이 관행을 채택하도록 돕는 [Enscribe](https://www.enscribe.xyz)와 같은 사용 가능한 도구에 대해 설명합니다.

## 스마트 컨트랙트에 이름을 지정하는 이유는 무엇인가요? {#why-name-contracts}

### 사람이 읽을 수 있는 식별자 {#human-readable-identifiers}

개발자와 사용자는 `0x8f8e...f9e3`와 같은 불투명한 컨트랙트 주소와 상호작용하는 대신, `v2.myapp.eth`와 같이 사람이 읽을 수 있는 이름을 사용할 수 있습니다. 이는 스마트 컨트랙트 상호작용을 단순화합니다.

이는 이더리움 주소에 대한 탈중앙화된 이름 지정 서비스를 제공하는 [이더리움 네임 서비스](https://ens.domains/)를 통해 가능해집니다. 이는 도메인 네임 서비스(DNS)가 인터넷 사용자로 하여금 `104.18.176.152`와 같은 IP 주소 대신 ethereum.org와 같은 이름을 사용하여 네트워크 주소에 접근할 수 있게 해주는 것과 유사합니다.

### 향상된 보안 및 신뢰 {#improved-security-and-trust}

이름이 지정된 컨트랙트는 잘못된 주소로의 우발적인 트랜잭션을 줄이는 데 도움이 됩니다. 또한 사용자가 특정 앱이나 브랜드에 연결된 컨트랙트를 식별하는 데 도움을 줍니다. 이는 특히 `uniswap.eth`와 같이 잘 알려진 상위 도메인에 이름이 연결되어 있을 때 평판에 기반한 신뢰 계층을 추가합니다.

이더리움 주소는 42자의 길이를 가지기 때문에, 사용자가 몇 개의 문자가 수정된 주소의 작은 변화를 식별하기는 매우 어렵습니다. 예를 들어 `0x58068646C148E313CB414E85d2Fe89dDc3426870`와 같은 주소는 지갑과 같은 사용자 대면 애플리케이션에 의해 일반적으로 `0x580...870`로 잘려서 표시됩니다. 사용자는 몇 개의 문자가 변경된 악의적인 주소를 알아차리기 어렵습니다.

이러한 유형의 기술은 주소 스푸핑 및 포이즈닝 공격에서 사용되며, 사용자는 올바른 주소와 상호작용하거나 자금을 보내고 있다고 믿게 되지만 실제로는 그 주소가 올바른 주소와 비슷하게 생겼을 뿐 동일하지 않은 경우입니다.

지갑 및 컨트랙트에 대한 ENS 이름은 이러한 유형의 공격으로부터 보호합니다. DNS 스푸핑 공격과 마찬가지로 ENS 스푸핑 공격도 발생할 수 있지만, 사용자는 16진수 주소의 작은 수정보다 ENS 이름의 철자 오류를 알아차릴 가능성이 훨씬 높습니다.

### 지갑 및 탐색기를 위한 더 나은 UX {#better-ux}

스마트 컨트랙트가 ENS 이름으로 구성된 경우, 지갑 및 블록체인 탐색기와 같은 앱에서 스마트 컨트랙트에 대해 16진수 주소 대신 ENS 이름을 표시할 수 있습니다. 이는 사용자에게 상당한 사용자 경험(UX) 향상을 제공합니다.

예를 들어, 유니스왑과 같은 앱과 상호작용할 때 사용자는 일반적으로 상호작용 중인 앱이 `uniswap.org` 웹사이트에 호스팅되어 있음을 보게 되지만, 유니스왑이 스마트 컨트랙트에 ENS로 이름을 지정하지 않았다면 16진수 컨트랙트 주소가 표시될 것입니다. 컨트랙트에 이름이 지정되어 있다면, 대신 훨씬 더 유용한 `v4.contracts.uniswap.eth`를 볼 수 있습니다.

## 배포 시 이름 지정 vs. 배포 후 이름 지정 {#when-to-name}

스마트 컨트랙트에 이름을 지정할 수 있는 시점은 두 가지가 있습니다:

- **배포 시**: 컨트랙트가 배포될 때 ENS 이름을 할당합니다.
- **배포 후**: 기존 컨트랙트 주소를 새로운 ENS 이름에 매핑합니다.

두 접근 방식 모두 ENS 레코드를 생성하고 설정할 수 있도록 ENS 도메인에 대한 소유자 또는 관리자 권한을 가지고 있어야 합니다.

## 컨트랙트에 대한 ENS 이름 지정 작동 방식 {#how-ens-naming-works}

ENS 이름은 온체인에 저장되며 ENS 리졸버(resolver)를 통해 이더리움 주소로 확인(resolve)됩니다. 스마트 컨트랙트의 이름을 지정하려면:

1. 상위 ENS 도메인을 등록하거나 제어합니다(예: `myapp.eth`).
2. 하위 도메인을 생성합니다(예: `v1.myapp.eth`).
3. 하위 도메인의 `address` 레코드를 컨트랙트 주소로 설정합니다.
4. 주소를 통해 이름을 찾을 수 있도록 컨트랙트의 역방향 레코드(reverse record)를 ENS에 설정합니다.

ENS 이름은 계층적이며 무제한의 하위 이름을 지원합니다. 이러한 레코드를 설정하는 것은 일반적으로 ENS 레지스트리 및 퍼블릭 리졸버 컨트랙트와 상호작용하는 것을 포함합니다.

## 컨트랙트 이름 지정 도구 {#tools}

스마트 컨트랙트의 이름을 지정하는 데는 두 가지 접근 방식이 있습니다. 몇 가지 수동 단계를 거쳐 [ENS 앱](https://app.ens.domains)을 사용하거나, [Enscribe](https://www.enscribe.xyz)를 사용하는 것입니다. 이에 대한 개요는 아래와 같습니다.

### 수동 ENS 설정 {#manual-ens-setup}

개발자는 [ENS 앱](https://app.ens.domains/)을 사용하여 수동으로 하위 이름을 생성하고 정방향 주소 레코드를 설정할 수 있습니다. 그러나 ENS 앱을 통해 이름에 대한 역방향 레코드를 설정하여 스마트 컨트랙트의 기본 이름을 설정할 수는 없습니다. [ENS 문서](https://docs.ens.domains/web/naming-contracts/)에서 다루는 수동 단계를 수행해야 합니다.

### Enscribe {#enscribe}

[Enscribe](https://www.enscribe.xyz)는 ENS를 사용한 스마트 컨트랙트 이름 지정을 간소화하고, 스마트 컨트랙트에 대한 사용자의 신뢰를 높입니다. 다음을 제공합니다:

- **원자적 배포 및 이름 지정**: 새로운 컨트랙트를 배포할 때 ENS 이름을 할당합니다.
- **배포 후 이름 지정**: 이미 배포된 컨트랙트에 이름을 연결합니다.
- **다중 체인 지원**: ENS가 지원되는 이더리움 및 레이어 2 (l2) 네트워크 전반에서 작동합니다.
- **컨트랙트 검증 데이터**: 사용자의 신뢰를 높이기 위해 여러 출처에서 가져온 컨트랙트 검증 데이터를 포함합니다.

Enscribe는 사용자가 제공한 ENS 이름을 지원하거나, 사용자에게 ENS 이름이 없는 경우 자체 도메인을 지원합니다.

[Enscribe 앱](https://app.enscribe.xyz)에 접속하여 스마트 컨트랙트의 이름을 지정하고 조회할 수 있습니다.

## 모범 사례 {#best-practices}

- 컨트랙트 업그레이드를 투명하게 만들기 위해 `v1.myapp.eth`와 같이 **명확하고 버전이 지정된 이름을 사용하세요**.
- 지갑 및 블록체인 탐색기와 같은 앱에서 가시성을 확보할 수 있도록 컨트랙트를 ENS 이름에 연결하는 **역방향 레코드를 설정하세요**.
- 소유권의 우발적인 변경을 방지하려면 **만료일을 면밀히 모니터링하세요**.
- 사용자가 이름이 지정된 컨트랙트가 예상대로 작동한다고 신뢰할 수 있도록 **컨트랙트 소스를 검증하세요**.

## 위험 {#risks}

스마트 컨트랙트에 이름을 지정하는 것은 이더리움 사용자에게 상당한 이점을 제공하지만, ENS 도메인 소유자는 관리에 있어 각별한 주의를 기울여야 합니다. 주요 위험은 다음과 같습니다:

- **만료**: DNS 이름과 마찬가지로 ENS 이름 등록은 기간이 한정되어 있습니다. 따라서 소유자가 도메인 만료일을 모니터링하고 만료되기 훨씬 전에 갱신하는 것이 중요합니다. ENS 앱과 Enscribe 모두 만료일이 다가올 때 도메인 소유자에게 시각적 표시기를 제공합니다.
- **소유권 변경**: ENS 레코드는 이더리움에서 NFT로 표시되며, 특정 `.eth` 도메인의 소유자는 관련 NFT를 소유하게 됩니다. 따라서 다른 계정이 이 NFT의 소유권을 갖게 되면, 새로운 소유자는 자신이 원하는 대로 ENS 레코드를 수정할 수 있습니다.

이러한 위험을 완화하려면 `.eth` 2단계 도메인(2LD)의 소유자 계정을 다중 서명(multi-sig) 지갑을 통해 보호하고, 컨트랙트 이름 지정을 관리하기 위한 하위 도메인을 생성해야 합니다. 그렇게 하면 하위 도메인 수준에서 우발적이거나 악의적인 소유권 변경이 발생하더라도 2LD 소유자가 이를 무효화할 수 있습니다.

## 컨트랙트 이름 지정의 미래 {#future}

웹에서 도메인 이름이 IP 주소를 대체한 것과 유사하게, 컨트랙트 이름 지정은 탈중앙화 애플리케이션 (dapp) 개발의 모범 사례가 되고 있습니다. 지갑, 탐색기, 대시보드와 같은 더 많은 인프라가 컨트랙트에 대한 ENS 확인(resolution)을 통합함에 따라, 이름이 지정된 컨트랙트는 생태계 전반에 걸쳐 안전성을 향상시키고 오류를 줄일 것입니다.

스마트 컨트랙트를 더 쉽게 인식하고 이해할 수 있게 함으로써, 이름 지정은 이더리움의 사용자와 앱 사이의 간극을 좁히는 데 도움을 주며 사용자의 안전성과 UX를 모두 향상시킵니다.

## 더 읽어보기 {#further-reading}

- [ENS로 스마트 컨트랙트 이름 지정하기](https://docs.ens.domains/web/naming-contracts/)
- [Enscribe로 스마트 컨트랙트 이름 지정하기](https://www.enscribe.xyz/docs)