Что такое ZCash Names?
Кратко
ZCash Names — это протокол имён для ZCash, работающий в блокчейне и построенный на приватных memo. Он позволяет регистрировать понятные человеку имена вроде richard.zcash и сопоставлять их с адресами ZCash. Корректность каждой регистрации подтверждается доказательством с нулевым разглашением (Zero-Knowledge Proof).
Проблема
Адреса ZCash слишком длинные. Выглядят они так:
u1zk30kje24v9n08lxq6ja9lfd8q3q54g7uawra7hwa05k4r56nkzzu62cy2apdungu4ehws95vjflw2lakt62j5wynwcje6t6yjcg9v5sp7r7048lgsprukv8r70pmpsk4tsqrqy58aglywh23grvs7kq75zk4c3zy57267u34vecm35yuexkrsmzphcu2dzph4r8rk0h0rlh5su7yhs
Решение
Имя регистрируется одной транзакцией ZCash. Индексатор следит за блокчейном, проверяет каждую регистрацию и строит реестр. Затем генератор доказательств с нулевым разглашением создаёт математическое доказательство того, что все регистрации корректны.
Любой может разрешить richard.zcash и получить адрес Ричарда. Любой может проверить доказательство. Доверие не требуется.
Правила имён
| Правило | Значение |
|---|---|
| Допустимые символы | 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 нулевых байта, корень пустого реестра |
| Блок развёртывания контракта | 114326974 |
| Транзакция развёртывания | 0x9a4b9a22…e6a5bd6c |
Начальный корень состоит из одних нулей потому, что в компактном разрежённом дереве Меркла
пустое поддерево на любой высоте — это 32 нулевых байта. Значит, пустой реестр хешируется
в ноль, и именно с этим значением был развёрнут контракт. Любой, кто воспроизводит историю
с блока 3438108, приходит к тому же начальному состоянию, и подсказывать ему не нужно.
С этими значениями вы можете просканировать ZCash начиная с начального блока, расшифровать
все команды и платежи, когда-либо полученные сервисом, воспроизвести их через
индексатор с открытым исходным кодом,
самостоятельно вычислить корень состояния и сверить его с контрактом вызовом
isRootValid(bytes32) — см. Проверка доказательств. Если бы
регистратор когда-нибудь скрыл, переставил или выдумал операцию, ваш корень отличался бы от
записанного в блокчейне.
Индексатор поставляется с собственным API разрешения имён, так что вам никогда не придётся зависеть от публичной точки доступа — в том числе от нашей.
Проверьте эти значения, прежде чем на них полагаться
Сверьте адрес, ключ просмотра и адрес контракта с репозиторием на GitHub и с самим приложением; контракт и транзакцию его развёртывания можно также прочитать напрямую в BscScan. Сайт документации — именно то, что злоумышленник захотел бы подменить.
Ссылки
| Ресурс | Адрес |
|---|---|
| Приложение | zcashnames.co/app |
| Приложение в Tor | zns42gxtnultmfkuxu3ypawozpn4asbkqpqzlmlrp72u3nbggvn2c2ad.onion/app |
| Индексатор в Tor | indexer.zns42gxtnultmfkuxu3ypawozpn4asbkqpqzlmlrp72u3nbggvn2c2ad.onion |
| GitHub | github.com/ZCashNames |
| API | Перейти на страницу |
| Документация | docs.zcashnames.co |