ZCash Names란?
요약
ZCash Names는 체인 위에서 동작하며 비공개 메모(memo)를 기반으로 하는 ZCash 이름 프로토콜입니다. richard.zcash 같은 사람이 읽기 쉬운 이름을 등록하고 이를 ZCash 주소에 연결할 수 있게 해줍니다. 모든 등록의 정확성은 영지식 증명(Zero-Knowledge Proof)으로 보장됩니다.
문제
ZCash 주소는 너무 깁니다. 이렇게 생겼습니다:
u1zk30kje24v9n08lxq6ja9lfd8q3q54g7uawra7hwa05k4r56nkzzu62cy2apdungu4ehws95vjflw2lakt62j5wynwcje6t6yjcg9v5sp7r7048lgsprukv8r70pmpsk4tsqrqy58aglywh23grvs7kq75zk4c3zy57267u34vecm35yuexkrsmzphcu2dzph4r8rk0h0rlh5su7yhs
해결책
ZCash 트랜잭션 한 건만 보내면 이름을 등록할 수 있습니다. 인덱서가 블록체인을 관찰하며 각 등록을 검증하고 이름 대장을 구축합니다. 그다음 영지식 증명 생성기가 모든 등록이 올바르다는 수학적 증명을 만들어 냅니다.
누구나 richard.zcash를 해석해 Richard의 주소를 얻을 수 있습니다. 누구나 그 증명을 검증할 수 있습니다. 신뢰는 필요 없습니다.
이름 규칙
| 규칙 | 값 |
|---|---|
| 허용 문자 | a-z, 0-9, 하이픈 |
| 길이 | 1 - 64자 |
| 대소문자 | 구분하지 않음(소문자로 저장) |
| 하이픈 | 맨 앞, 맨 뒤, 연속 사용 불가 |
| 최상위 영역 | .zcash, .zec, .private, .secure, .safe |
등록 요금
이름 등록 참조
| 이름 길이 | 요금 |
|---|---|
| 1자 | 5.5 ZEC |
| 2자 | 4 ZEC |
| 3자 | 2.45 ZEC |
| 4자 | 1.2 ZEC |
| 5자 | 0.65 ZEC |
| 6자 | 0.35 ZEC |
| 7자 이상 | 0.15 ZEC |
변경 요금
| 이름 길이 | 요금 |
|---|---|
| 1자 | 0.006 ZEC |
| 2자 | 0.004 ZEC |
| 3자 | 0.002 ZEC |
| 4자 | 0.0011 ZEC |
| 5자 | 0.0008 ZEC |
| 6자 | 0.0005 ZEC |
| 7자 이상 | 0.00025 ZEC |
레지스트라
레지스트라의 프로토콜 주소, 열람 키, 그리고 앵커 컨트랙트는 셋 모두 공개되어 있습니다. 이는 의도된 것입니다. 열람 키는 누구나 허가를 구하지 않고 서비스를 감사할 수 있게 해주고, 컨트랙트는 자신이 계산한 결과를 대조하는 기준이 됩니다.
프로토콜 주소 — 모든 명령은 이곳으로 보냅니다:
u1nlded5cat3n9r4m0tpxr5a7sy3emccvaun7n4x9w848qa7ncl4eg5v2zyat4kevaa4fwfq0unwj3vnczfax3s9rutma43dckgqss8qrg
열람 키 — 그 주소가 지금까지 받은 모든 것을 복호화합니다:
uview1uxy3j27qhwkh8peq8k6g0vldalgqm4lyfxwuc2r95jelk458gmx6elc4e92t9g75x655vd7nxrtv3gllvajt3n8v0x36224ma3hrtvvtps7ejxysx8puelggt86vfuslxvdvjq7a778chqtcg626lcsr0ht26v3wgyfu5u04sn2qsle9k7faakg479tqf
앵커 컨트랙트 — 모든 상태 루트가 게시되는 곳, BNB Smart Chain(chain ID 56):
0x6c01003716b0a74933325be1baf34fe34cf3e0d3
기록을 재생하려면 알려진 지점에서 출발해야 하므로, 체인의 양 끝도 함께 고정되어 있습니다. 독립 인덱서가 출발점으로 삼는 체크포인트는 다음과 같습니다:
| 체크포인트 | 값 |
|---|---|
| ZCash 시작 블록 | 3438108 — 프로토콜 지갑의 생성 시점; 그 이전에는 어떤 서비스 트랜잭션도 존재할 수 없습니다 |
| 초기 상태 루트 | 0x0000…0000 — 32개의 0 바이트, 빈 대장의 루트 |
| 컨트랙트 배포 블록 | 114326974 |
| 배포 트랜잭션 | 0x9a4b9a22…e6a5bd6c |
초기 루트가 모두 0인 이유는 압축 희소 머클 트리에서 빈 서브트리가 어느 높이에서든 32개의 0 바이트이기
때문입니다. 즉 빈 대장은 0으로 해시되며, 컨트랙트는 바로 이 값으로 배포되었습니다. 블록 3438108부터
재생하는 사람은 누구든 별도의 안내 없이도 동일한 초기 상태에 도달합니다.
이 값들이 있으면 시작 블록부터 ZCash를 스캔하고, 서비스가 지금까지 받은 모든 명령과 결제를 복호화하고,
오픈소스 인덱서로 재생하고, 상태 루트를 직접
계산한 뒤 isRootValid(bytes32)로 컨트랙트와 대조할 수 있습니다 — 증명 검증
참조. 레지스트라가 어떤 작업을 검열하거나 순서를 바꾸거나 지어냈다면, 당신이 계산한 루트는 체인에 기록된
것과 달라집니다.
인덱서에는 자체 해석 API가 포함되어 있어, 공개 엔드포인트에 — 저희 것을 포함해 — 의존할 필요가 전혀 없습니다.
이 값들에 의존하기 전에 반드시 대조하세요
주소, 열람 키, 컨트랙트 주소를 GitHub 저장소 및 애플리케이션 자체와 대조해 보세요. 컨트랙트와 그 배포 트랜잭션은 BscScan에서 직접 확인할 수도 있습니다. 문서 사이트야말로 공격자가 가장 바꾸고 싶어 하는 대상입니다.