ERC-162 ENS 초기 해시 등록기 (Initial ENS Hash Registrar)

Final · 이름·메타데이터 · 2016-10-25 작성

이더리움 이름 서비스(ENS)의 .eth 이름을 봉인 입찰 경매로 배분하는 초기 등록기(registrar)를 정의합니다. 낙찰자는 이더를 담보로 맡기고 이름의 소유자가 됩니다.

왜 필요한가

새 이름공간이 열리면 되팔 목적으로 쓸 만한 이름을 먼저 차지하는 땅따먹기가 벌어지기 쉽습니다. 가치 있는 이름이 실제로는 쓰이지 않은 채 묶이면 이름 서비스의 쓸모 자체가 줄어듭니다. 그런데 어떤 배분 방식이 가장 좋은지는 처음부터 알기 어렵고 모든 문제를 미리 예상해 완벽한 규칙을 설계하려는 시도는 실패할 가능성이 큽니다. 게다가 등록기는 한도 없이 이더를 보관하므로 안전하게 설계되어야 하고 운영에서 배운 교훈을 반영해 교체할 수 있어야 합니다. 이 ERC는 이런 요구에 맞춰 이름공간을 .eth 아래 7자 이상 이름으로 제한하고 비크리 경매(Vickrey auction)로 이름을 배분하며 약 2년 뒤 영구 등록기로 교체하는 것을 전제로 한 초기 등록기를 기술합니다. 2017년 5월 4일 메인넷에 배포된 구현을 그대로 문서화한 표준입니다.

구현해야 하는 것

심층 설명

초기 제한: .eth 한정과 7자 이상

초기 등록기는 약 2년 운영을 전제로 합니다. 그동안 이름공간은 .eth 최상위 도메인(TLD)으로 제한되며 이 제한은 ENS 루트 노드 소유자가 .eth 외의 노드를 초기 등록기에 할당하지 않는 방식으로 강제됩니다. 루트 노드는 멀티시그 컨트랙트로 여러 당사자가 공동 관리해야 합니다. 또한 6자 이하 이름의 등록을 금지합니다. 가장 짧고 대개 가장 가치 있는 이름을 영구 등록기 몫으로 남겨 두면, 필요하다고 판명될 경우 분쟁 해결 절차를 갖춘 뒤에 배분할 수 있기 때문입니다. 단일 TLD는 하나의 이름공간에 집중해 네트워크 효과를 키우고 세 글자 TLD는 기존 DNS에서 익숙한 형태라 .onion의 선례처럼 특수 용도 도메인으로 예약될 가능성을 높입니다.

해시 제출 형식: 라벨의 sha3

등록기에 제출하는 값은 등록하려는 하위 도메인 라벨의 sha3 해시이며 EIP-137의 namehash가 아닙니다. 예를 들어 abcdefg.eth를 등록하려면 sha3('abcdefg')를 제출해야 하고 sha3(sha3(0, 'eth'), 'abcdefg')를 제출하면 안 됩니다. 이름이 해시된 채로 경매와 등록이 진행되기 때문에 등록기 스스로는 글자 수 제한을 검증할 수 없습니다. 그래서 6자 이하 이름이 등록된 경우 invalidateName으로 원문을 신고하면 보상을 주는 방식으로 제한을 보완합니다. 원문은 이렇게 일부러 기능을 제한해 몇 년 안에 등록기를 재구축하도록 강제한다고 밝힙니다.

비크리 경매의 5가지 상태

이름의 경매 수명주기는 다섯 상태로 나뉩니다. Not-yet-available은 출시 직후 아직 경매할 수 없는 상태로, sha3 해시의 최상위 바이트에 따라 0x00은 즉시, 0xFF는 8주 뒤에 열리는 식으로 공개 시점이 분산됩니다. Open이 되면 경매를 시작할 수 있고 Auction 상태에서는 72시간 동안 이더와 함께 sha3(bytes32 hash, address owner, uint value, bytes32 salt) 형태의 봉인 입찰을 제출합니다. Reveal 상태에서는 48시간 동안 입찰 내용을 공개해야 하며 아무도 공개하지 않으면 이름은 Open으로 돌아갑니다. 공개가 끝나면 낙찰자가 확정 트랜잭션을 보내 Owned 상태가 됩니다. 파라미터는 totalAuctionLength 5일, revealPeriod 48시간, launchLength 8주, minPrice 0.01 ether입니다.

증서(Deed)와 환불 일정

등록기 컨트랙트 자체는 잔액을 보관하지 않습니다. 보낸 이더는 모두 별도의 Deed 컨트랙트에 보관되며 봉인 입찰 제출 시 증서가 생성되고 자금이 들어갑니다. 낙찰 입찰의 증서는 이름 소유권의 대가로 계속 보관되고 떨어진 입찰은 환불됩니다. 환불 비율은 사유별로 다릅니다. 유효한 패찰 공개와 경매 기간 후 공개는 입찰자에게 99.5%, 이미 소유된 이름에 대한 유효 입찰 공개는 0.5%, 만료된 봉인 입찰 취소는 취소자에게 0.5%, 무효 이름 신고는 신고자와 소유자에게 각각 50%이며 나머지는 소각됩니다. 2주 5일이 지나도록 봉인된 입찰은 누구나 취소해 소액 보상을 받을 수 있습니다. 등록 1년 뒤에는 소유자가 소유를 포기하고 증서 가치를 돌려받을 수 있습니다.

늦은 공개 차단과 더미 경매

소유된 이름에 대한 입찰 공개의 환불이 0.5%에 그치는 것은 모든 입찰을 제때 공개하도록 만들기 위해서입니다. 늦은 공개가 허용되면 새로운 2위 입찰을 공개하겠다고 위협해 현재 최고 입찰자를 갈취하는 공격이 가능해지기 때문입니다. newBid 설명대로 48시간 공개 기간이 지난 뒤 공개된 입찰의 이더는 소각되어 되찾을 수 없습니다. 한편 startAuctions는 여러 해시의 경매를 한 번에 열 수 있게 해서 실제로는 하나에만 관심이 있어도 더미 해시를 섞어 시작할 수 있습니다. 이는 새 경매마다 무차별로 입찰하는 공격자의 비용을 높입니다. 열렸지만 입찰이 없는 더미 경매는 1주 뒤 닫힙니다.

배포, 업그레이드, 계획된 비활성화

초기 등록기는 생성자에서 ENS 주소를 받으므로 ENS 배포 후에 배포하고 루트 노드를 소유한 멀티시그 계정이 eth 노드의 소유자로 초기 등록기 주소를 설정합니다. 약 2년 뒤에는 영구 등록기로 교체합니다. 영구 등록기를 배포하고 멀티시그가 .eth 노드 소유권을 영구 등록기에 할당하며 기존 해시 소유자는 자신의 증서를 영구 등록기에 직접 등록해야 합니다. 이때 마감일 전 이전을 요구하는 방안과 영구 등록기가 기록이 없을 때 초기 등록기에 조회하는 방안이 검토됩니다. transferRegistrars는 이 등록기가 더 이상 루트 노드의 소유자가 아닐 때 증서를 현재 소유자(새 등록기)로 옮깁니다. 의존을 제한하기 위해 새 경매는 4년 뒤 중단되고 8년 뒤에는 증서에 남은 이더에 접근할 수 없게 됩니다.

이더 담보 모델의 근거

이름을 유지하려면 반복 결제를 해야 하는 익숙한 모델 대신, 이더를 담보로 묶어 두는 방식을 택했습니다. 이 방식이 더 단순하고 초기 등록기를 수익을 남기지 않는 수익 중립 서비스로 만들어 줍니다. 낙찰자가 내는 가격은 비크리 경매 규칙에 따라 2위 입찰가이며 최소 금액은 minPrice 0.01 ether입니다. 담보는 소각되거나 수수료로 걷히는 것이 아니라 증서에 보관되었다가, 1년 이상 보유한 소유자가 이름을 포기하면 되돌려받습니다. 이 표준은 Final 상태로 확정되었고 2017년 5월 4일 메인넷에 배포된 구현을 기술합니다.

ERC 원문 · ← ERCs