# Alfis DNS - реєстрація домену в блокчейн

Alfis DNS - децентралізована система доменних імен з реєстром в блокчейн.

Резольвер та клієнтська частина написані на мові Rust.

Для реєстрації домену використовуються наступні зони:

* .anon *
* .btn
* .conf
* .index
* .merch
* .mirror
* .mob
* .screen
* .srv
* .ygg *

 * зарезервовані для адрес мережі Yggdrasil, що виключає випадковий перехід з таких адрес на хости Clearnet.

Для запобігання кіберсквотингу використовується модель PoW і частково - PoS, генерація нових доменів також обмежена добовим інтервалом, а на один персональний ключ можна згенерувати не більше 10 доменів (що насправді має досить спірне підґрунтя).

Тим не менше, система досить зручна для локальних мереж, оскільки дозволяє створити безкоштовний домен на один рік без необхідності реєстрації персональних даних та залежності від центрального серверу. А розмір блокчейну при поточній кількості близько 1000 доменів складає приблизно 7 Мб.

В середньому, на комп'ютері з процесором i5, новий домен генерується від декількох до 12 годин; утім спочатку потрібно згенерувати персональний ключ, до якого потім цей домен буде прив'язаний. До закінчення року, потрібно змайнити домен повторно, використовуючи існуючий ключ, раніше робити це не має сенсу, бо пролонгація рахується від часу створення блоку.

## Встановлення

Встановлення відбувається досить просто, є готові бінарні пакети та репозиторії.

При збірці, з початкового коду, доведеться встановити останню версію rustc що зручно використовуючи пакет rustup.

В іншому, виконується стандартна процедура cargo:

```
git clone https://github.com/Revertron/Alfis.git
cd Alfis
cargo build --release
```

## Налаштування

Запускаючи клієнт з графічною оболонкою, буде автоматично налаштовано резольвер.

Для систем типу Ubuntu, ймовірно доведеться вивільнити зайнятий порт 53.

Утім, графічний інтерфейс зручно використовувати виключно для адміністрування доменів та майнінгу, а сам резольвер розмістити десь на VPS та вказати до нього конфігурацію:

### В системах з systemd-resolved

```
#/etc/systemd/resolved.conf
[Resolve]
DNS=IP
Domains=~.
```

Після змін, потрібно оновити кеш командою:

```
systemctl restart systemd-resolved
```

### В системах без systemd

```
#/etc/resolv.conf
nameserver xx.xx.xx.xx
```

### FireFox

Браузер нічого не знає про діапазон імен Alfis DNS, тому при введені таких адрес, буде відправляти користувача в пошук.

Щоб виправити це, потрібно додати в about:config, наприклад для зони .ygg - наступну опцію:

```
browser.fixup.domainsuffixwhitelist.ygg = true
```

## Особистий досвід

* Alfis DNS хоч і працює з типовими адресами, але вимагає наявності встановленого або підключеного вузла для клієнтів. З цієї ж причини виникає і проблема сертифікації, наприклад засобами Certbot / Let's Encrypt.
* В намірах зменшити розмір блокчейну, автор явно перегнув із захистом від зловживань сквотерами, від чого іноді доводиться чекати випадкові вузли, що підпишуть блок. А сама модель захисту явно грає на руку тим, хто в сквотингу зацікавлені (володіючи відповідним обчислювальним ресурсом). Під час останнього такого "зависання" частина користувачів була обурена бездіяльністю автора у відповідь на повторний інцидент і вірогідно відмовилась від цього і до того непопулярного рішення.
* Внутрішньої монети блокчейн немає, утім потенційно може мати деякий економічний потенціал з використанням бартеру (засобами трансферу)
* Наразі проєкт варто сприймати виключно як експериментальну альтернативу централізованим сервісам для ентузіастів, який фактично виконує ту само роль, що й /etc/hosts

## Посилання

=> https://github.com/Revertron/Alfis Репозиторій проєкту на GitHub
=> https://viewer.alfis.name Неофіційний експлорер