# twister - децентралізована платформа мікроблогів

twister (твістер, пишеться саме в нижньому регістрі) - це альтернативна пірингова платформа мікроблогів, створена на базі технологій BitTorrent і Bitcoin у 2013 році @miguelfreitas (https://github.com/miguelfreitas) як альтернатива колишньому централізованому сервісу twitter.com

У 2020 році, розробник платформи припинив (http://twister.net.co/archives/617) її супровід, але оскільки мережа є децентралізованою, вона все ще продовжує функціонувати у своєму первинному стані, хоча кількість користувачів значно знизилась і наразі мережа близька до колапсу.

Дана стаття носить історично-інформаційний характер, і створена більше для зацікавлених у децентралізованих мережах користувачів з базовим досвідом програмування мовою C++ та адміністрування Linux, а ніж рядових споживачів сучасного контенту. Також нижче я не описуватиму весь досвід, оскільки наразі працюю над книгою (https://twisterarmy.github.io/book/) у форматі документації mdBook (англійською мовою), яку планую також в релізі перекласти українською.

## Принцип роботи

Як згадувалось вище, ядро twister (twister-core) по своїй суті є форком bitcoin-core з видаленням фактору цифрової валюти як такої, а блокчейн приведено до моделі схожої з Namecoin - де користувачі зберігають свої дані, замість платіжних транзакцій. Оскільки мережа twister не має власної валюти, мотивація майнингу передбачала рекламні повідомлення у якості "нагороди". Окрім рекламних повідомлень майнерів, блокчейн зберігає мета дані DHT контенту користувачів у часовому порядку та прийняті майнерами запити на їх реєстрацію з рою (swarm).

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

## Випробовування часом

Звісно, десять років - це не той термін, по якому можна робити висновки, хоча у просторі ІТ й цього часу буває достатньо: у зв'язку зі своєю не прибутковістю та не спекулятивністю, майнинг від самого початку відбувався силами ентузіастів а рекламні повідомлення - містили пусті за змістом дублікати тексту, лише задля підтримки цієї мережі небайдужими користувачами.

Більшість критики була об'єктивною ще від релізу цієї платформи:

* відсутність анонімізації, що ставило під сумнів можливість використання цієї платформи у країнах з цензурою без додаткових обгорток;
* низький рівень стійкості до спам атак на мережу - у зв'язку з цим був різкий пік сквотингу юзернеймів, з подальшими намаганнями виправити вразливість на швидкоруч; оскільки атака була здійснена невідомим користувачем, лише задля тестів, ймовірно вона була зупинена лише ним самим а не вирішенням фундаментальних недоліків архітектури;
* повідомлення користувачів зберігаються у DHT, щоб зробити блокчейн мінімально "легким" з іншого боку, багато контенту просто втрачено з часом, оскільки блокчейн містить лише мета дані (info-hash) і щоб повідомлення зберігалось на іншому пірі, цей пір (користувач) повинен бути підписаним фоловером.

В ті роки, мав місце певний "бум" децентралізованих рішень, зокрема з'являлись і такі проєкти як OpenBazaar та ZeroNet. Останній, окрім мікроблогінгу, дозволяв хостити свої веб-сторінки у децентралізованому форматі (по типу того, як це було згодом реалізовано в IPFS). Деякі користувачі перебрались на ZN, інші віддавали перевагу більш захищеним платформам накшталт RetroShare.

У свій час, я теж переключився на інші заняття та коли повернувся - помітив що з усього рою, лишилась буквально пара користувачів. Ще через декілька років, вже не вдавалось під'єднатись, оскільки майже всі сервісні DNS були офлайн.

## Як спробувати

Наразі, мабуть з великим запізненням, спільнотою розробляється пакунок Flatpak, мабуть це самий простий спосіб запустити twister в сандбокс-режимі, щоб просто подивитись що це таке. Варто зауважити, що при користуванні Flatpak, клієнт падатиме при спробі запустити функцію майнингу, все інше наче працює добре.

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

Наразі є дві опції встановлення: офіційний twister-core (https://github.com/miguelfreitas/twister-core) та twister-core від спільноти (https://github.com/twisterarmy/twister-core). Різниця полягає лише в тому, що останній має додаткові DNS вузли для ініціалізації та підтримку IPv6, тобто є більш конективним. Замініть адресу репозиторію у прикладі нижче - вашим вибором!

### Системні залежності

Debian / Ubuntu

``` bash
sudo apt install git autoconf automake build-essential libtool\
                 libboost-all-dev libssl-dev libdb++-dev libminiupnpc-dev
```

Fedora

``` bash
sudo dnf install git autoconf automake libtool make\
                 boost-devel openssl-devel libdb-cxx-devel miniupnpc-devel
```

### Збірка

Даний приклад підходить для встановлення на localhost, при використанні архітектури amd64, тому кроки спрощено.

1. Ядро twister-core

``` bash
git clone https://github.com/twisterarmy/twister-core.git
cd twister-core
./autotool.sh
./configure
make
```

2. Клієнт: застосунок не має GUI, тому ставимо twister-html (Web-UI)

``` bash
mkdir ~/.twister
echo -e "rpcuser=user\nrpcpassword=pwd\nrpcallowip=127.0.0.1" > ~/.twister/twister.conf
chmod 600 ~/.twister/twister.conf
git clone https://github.com/twisterarmy/twister-html.git ~/.twister/html
```
* для локального запуску вузла, складні логін/пароль не потрібні

3. Запуск

``` bash
./twisterd
```
* відкриваємо у браузері http://127.0.0.1:28332
* вказуємо стандартні `user` і `pwd` - це спадкова реалізація оригінального Bitcoin RPC API
* далі з'являється діалог вітання із запрошенням перейти на сторінку мережі, де відбуватиметься завантаження блокчейну

### Користування

Коли завантажиться блокчейн, можна спробувати зареєструвати вільний юзернейм (який буде записано в кінець цього ж блокчейну, тобто коли будь який майнер отримає ваш запит і включить його до блоку). Після створення юзера, зберігаємо згенерований приватний ключ, він знадобиться тільки для доступу до акаунту з іншого пристрою або для подальшого бекапу.

Реєстрація займатиме деякий час. Також, з урахуванням поточного онлайну, деякий час (пара хвилин або навіть годин чи днів) може зайняти ініціалізація DHT процесів, тримайте це діло увімкненим допоки на сторінці мережі не засвітиться зелений індикатор.

У списку останніх користувачів, спробуйте знайти активного та щось йому написати. Або напишіть у свою стрічку вітання.

## Перспективи

Не стану давати оцінку суб'єктивним поглядом на подальші перспективи цього проєкту, оскільки мережа twister є повністю децентралізованою і жодним чином не залежить від моїх висновків. Особисто, мені - вона подобається, на відміну від централізованих сервісів, у тому числі Fediverse, де по суті інстанси є такими само сервер-орієнтованими платформами, але з більш сучасним форматом агрегації (ActivityPub замість RSS).

Дана мережа обіцяла колапсувати ще п'ять років тому: деякі юзери раз на рік надсилають свій меседж про існування і зникають ще на стільки само. Тим не менше, вона існує у власному вимірі, і коли всі монітори пишуть офлайн, через деякий час виявляється що до неї ще можна під'єднатись.

Якщо вам подобаються різні екзотичні проєкти по типу twister, та ви бажаєте підтримати дану пірингову мережу - доєднуйтесь до користування, щоб продовжити її функціонування - мабуть, в тому і суть роботи по справжньому не залежних соціальних платформ!

## Посилання

=> http://twister.net.co/ Офіційний сайт
=> https://twisterarmy.github.io/ Сайт спільноти
=> https://twisterarmy.github.io/network Публічні піри онлайн
=> https://twisterarmy.github.io/book/ The twister P2P Book