В последние недели меня очень увлекла социальная сеть Nostr. Пробегусь сейчас по ней в этом посту, чтобы рассказать читателям про неё и про её уникальные свойства.
Nostr – это независимая ни от кого сеть, построенная по правилам децентрализации, как биткойн. В ней нет цензуры (хотя есть возможность блокировки самими пользователями и система предупреждения других участников сети, но это не обязательные функции к исполнению). Нет организации, которая бы контролировала сеть. У неё нет единой точки отказа. В ней нет рекламы. Она очень похожа по функциональности на Twitter, но уже превосходит его по многим параметрам, хотя активно использоваться эта сеть стала в Декабре 2022-го года. Итак, давайте начнём по порядку.
Как выглядит всё на практике? Вам достаточно поставить приложение клиент для Android или iPhone. Эти приложения пишутся разными энтузиастами и не принадлежат к одной компании. Для Android я очень рекомендую приложение Amethyst, причём ставить его лучше сразу с сайта Github, прямо от разработчика, скачивая напрямую APK файл. Дело в том, что приложение сейчас активно развивается – порой несколько версий в день. Скорость разработки настолько высокая, что версия в Google Play сильно запаздывает. Кстати, если вы вдруг ставили приложение Amethyst из Google Play, то чтобы перейти на версию от разработчика прямо с первоисточника (Github) – надо прежнее приложение удалить.
Для iPhone все используют приложение Damus. Но я не пользуюсь iPhone, поэтому далее буду упоминать про Amethyst.
Вообще, можно сеть Nostr читать прямо через веб-сайты. Более того, технология такова, что позволяет читать новости прямо от “первого лица” – то есть вводится публичный ключ какого либо пользователя и читается “его” лента – пример ленты Эдварда Сноудена (для просмотра нужно дать время броузеру, чтобы он скачал информацию с релеев – подождите первый раз несколько минут). Но нельзя ничего написать от имени того пользователя, так как у вас нет его “приватного ключа”.
Вот тут мы подошли к самому первому – к ключам. Сеть Nostr не имеет обычных аккаунтов, к которым привыкли многие пользватели Twitter или Facebook, например. Там нет регистрации и емейлов. Всё даже гораздо проще, если вы уже работали с биткойном. Акккаунт в сети Nostr – это “публичный ключ”, который криптографически связан с “закрытым ключом” (другие названия – “приватный” или “секретный”). Регистрация, как таковая делается любым приложением Nostr – вы кликаете “Создать ключ” и приложение, примерно как это делается много раз киданием кубиков в обычной жизни, генерирует очень длинное, случайное число. Это будет ваш закрытый ключ. Он представляется как строчка, начинающаяся на “nsec1….”. Эту строчку вам надо как либо надёжно сохранить и никому не раскрывать (например сохранить в менеджере паролей, либо отослать самому себе на свой email). Из этой строчки приложение математическим способом и с применением криптографии получает публичный ключ, который связан с вашим секретным ключом. Этот публичный ключ – строка “npub1…” и будет вашим аккаунтом. После этого вся сеть Nostr будет транслировать и принимать любые события от вашего аккаунта (публичного ключа) только тогда, когда они подписаны вашим секретным ключом. Но не торопитесь морщится и отварачиваться! Протокол Nostr имеет механизмы связывания таких трудночитаемых и непонятных строчек с вашим именем или никнеймом. Как только вы создадите аккаунт, вы можете в разделе Профайл сразу указать URL-адрес своего аватара (в отличии от Twitter, где фотки аватара загружаются автоматически и хранятся на серверах Twitter, вам нужно сделать дополнительный шаг – разместить аватар на каком либо сервере – например на бесплатном, например на Nostr.Build, указать никнейм и другие опциональные данные. Что самое интересное – уже во всю используются и существуют способы получения “синей галочки” (термин из Twitter) – то есть вы можете закрепить свой трудоночитаемый публичный ключ за адресом своего блога, или получить email-подобный адрес на публичном сервисе, который аутентифицирует и подтверждает аккаунты Nostr с аккаунтами, например, Twitter. Вообщем, другими словами, если вы желаете быть не анонимным – у вас есть все для этого возможности!
Итак, вы создали аккунт, а точнее просто создали пару ключей, прописали в любой программе Nostr свой Nickname, добавили аватарку. После этого программа посылает в сеть Nostr эти метаданные в сеть, подписав их вашим публичным ключом. И после этого сеть Nostr будет показывать всем ваш аккаунт в таком же привычном виде, как вы видели это, например, в Twitter или Instagram.
Затем начинается самое интересное. После этого вам лучше всего подписаться на несколько других пользователей. В терминах Amethyst это называется “Follows” – список тех пользователей, на которых подписаны вы (подписки). Если кто-то подписывается на вас, то их вы увидите в разделе “Followers” (ваши подписчики).
После подписки вы начнёте видеть все их сообщения в своей домашней ленте (значок “Домик”). Но ещё немаловажно – если вы нинакого не подписались – не беда! В сети есть такое понятие – “Global” – это глобальная лента (или “фид”).
Тут настала пора описать, что такое релей. Поскольку у сети нет организации, которая ей управляет, возникает вопрос – а где хранятся сообщения и откуда они приходят? Кому-то в голову может придти название “блокчейн”. Но здесь не место для хайпа и раскидывания “модными терминами”! Здесь всё проще и эффеективнее. Есть релеи – это сервера Nostr, запущенные энтузиастами. Каждый релей – это “хранилище” поступающих в него криптографически-подписанных аккаунтами Nostr мини-блоков информации (“события”). В этих блоках – посты, события, какие либо изменения метаинформации, например, аватарки у себя, подписки на кого либо и тому подобное. И к этим релеям подключаются приложения пользователей и получают с них все эти события. За каждым релеем стоит какой либо человек. Чисто технически – любой владелец волен делать со своим релеем, что хочет, как и с сообщениями, в него поступающими. То есть чисто технически – каждый релей может фильтровать сообщения, цензурировать и прочее. Но что он не сможет сделать – подделать содержание сообщений или подделать отправителя или получателя, а также не может диктовать правила другим релееям. Также, релеи могут транслировать все эти события другим релеям. А всё потому, что все сообщения защищаются цифровой подписью на основе приватного ключа. То есть, если вы напишите в сеть своё сообщение, то релеи не смогут в него что-то вставить своё. Всё, что они смогут – максимум не послать это сообщение другим пользователям или релеям. По этой причине, программы Nostr поключаются сразу к десятку разных из них. Вы всегда можете изменить их список у себя в приложении, а можете даже запустить свой. И что самое главное – в своём профиле вы указываете (если точнее – за вас это делает ваше приложении Nostr) список релеев, откуда вы получаете информации, или куда пишите, – и это будет известно программам других пользователей! Это как примерно иметь визитку, где написано 10 адресов, где вас можно найти. Благодаря этому приложения Nostr могут всегда находить сообщения тех, на кого вы подписались, а также те, кто подписан на вас. Например, какое либо СМИ может запустить свой релей, создать профиль и указать только тот свой релей. И если вы подписались на это СМИ – ваша программа будет забирать их сообщения только с релея того СМИ.
Итак, вот у вас есть приложение и вы можете читать ленту тех, на кого подписались, или читать глобальную ленту. Глобальная лента – это все сообщения (где дубликаты исключены) со всех релеев, к которым вы подключены. Но тут появляется другая проблема. Если вы на кого либо подписаны – вы легко читаете “свою” ленту и там нет ничего лишнего, только сообщения от ваших подписок. Но если вы попробуете уже сейчас почитать глобальную ленту, вы увидите постоянно-мелькающие без конца разные релкамные сообщения от кого попало. Вы даже не успеете что либо прочитать! Это всё потому, что большинство релеев бесплатные. А поскольку создание аккаунта ничего не стоит и занимает миллисекунды, то спамеры быстро адаптировались и уже сейчас под каждое сообщение создают “новый” ключ и кидают одно сообщение (чтобы их трудно было заблокировать индивидуально каждому пользвоателю) и так далее. Казалось бы всё – можно закрывать лавочку и забыть про Nostr. Но тут приходит фишка, о которой Twitter может только мечтать. Часть релеев стали платными. Но оплата в сети Nostr – не оплата картами и т.п.. И даже тут Nostr обогнала Twitter. Оплата в Nostr построена на сети Lightning Network и в ней действуют доли биткойна – сатоши (“sats” или “satoshi”). Причём оплата даже сейчас – чисто символическая, однократная. Это где-то от 1000 сатоши до 5-15 тыс. сатоши. Доллар сейчас стоит 4200 satoshi, примерно, поэтому лёгкий подсчёт – цена от 20 центов до $4. Но казалось бы как такая малая цена может остановить спамеров? А очень просто – релеи закрепляют однократно-оплаченный взнос индивидально за указанным пользователем через его публичный ключ. А у спамеров выйгрышная стратегия – на каждое сообщение создавать новый аккаунт, а значит, им бы пришлось платить по доллару за сообщение (если создавать один акк и от него создавать много сообщений – тут тебя легко могут забанить сами пользователи на уровне отдельного аккаунта).
Итак, получается, что чтобы читать глобальную ленту без спама, вам достаточно читать глобальный “фид” (“ленту”) только с платных релеев. Причём платит на них только тот, кто хочет иметь возможность посылать через них свои сообщения. Для читателей – они, как правило, бесплатны! На практике это работает просто – если вы открываете веб-страничку с таким же адресом, как адрес релея, указываете там свой npub1… ключ, то после вам показывается QR-код и ссылка для оплаты, после вы сканируете Lightning кошельном QR-код или кликаете по ссылке (если кошелёк на том же девайсе) и платите около доллара одним кликом. Вся процедура занимает меньше минуты. После этого релей запоминает, что такой то аккаунт (ваш) уже оплатил и всё – вы можете не только читать с них, но и отправлять через них свои сообщения.
Итак, ещё раз. Чтобы избавиться от спама в глобальной ленте сообщений, вам нужно для всех бесплатных релеев отключить получение с них глобального фида. Добавить в свой список несколько платных релеев и включить возможность забирать с них глобальный фид. Если вы только читатель – вам вообще нигде платить ничего не надо, если будете писать – можете платить, а можете и нет (тогда отправка будет идти только на бесплатные).
На практике это так: добавить адрес релея в приложении Nostr (скопировали и просто вставили строчку в нужном месте), включаем забор глобального фида с него – в Amethyst это иконка “Глобус” напротив каждого адреса релея – сделайте её зелёной посредством клика. Для бесплатных релеев – мы их не удаляем, а только отключаем иконку “Глобус” – сделайте её серой. Список платных релеев вы найдёте здесь, а бесплатных здесь, например. Обычно все приложения Nostr приходят с предустановленным списком бесплатных. Почему надо оставлять бесплатные? Хоть ваше приложение не будет получать с них сообщения от всех пользователей (глобальный фид), оно будет нуждаться в “событиях” сети, которые относятся как к вам (например, если кто-то ответил на ваше сообщение, или его процитировал, или чтобы вы могли прочитать свежие сообщения от тех, на кого вы подписаны), так и к любым профилям, которые как либо связаны с читаемой вашей лентой (платные релеи тоже транслируют такие “события”, но их там заведомо меньше). Дело в том, что тот, кто пишет собщение в сеть Nostr – его приложение нуждается в том, чтобы разослать это сообщение как можно на большее количество релеев. Разослать сообщение на бесплатные релеи могут все, даже кто не платил. А вот послать на платный релей могут только те аккаунты, которые однократно заплатили и указали свой аккаунт. Ведь не зря мы включили глобальный фид только с платных – мы будем читать глобальную ленту только от тех, кто когда либо внёс плату на один из платных релеев. И именно благодаря этому вы почти не столкнётесь со спамом. Не правда ли, как здорово всё придумано?
Итак, со спамом разобрались. Как создать аккаунт – знаем. Что такое релеи – знаем. Знаем, что такое глобальный фид или лента – знаем. И как читать глобальный чат без спама – тоже знаем. Что ещё может пригодится? И вот тут мы подходим к ещё одной революционной фишке, которой бы позавидовал Twitter. Эта штука называется zap, или “запы”.
Zap – это термин “молния” на английском. Сеть Nostr очень быстро развивается энтузиастами, а придумана она была одним из любителей биткойна и сети Lightning Network – человеком с ником fiatjaf, в 2020 году. Благодаря приданному ускорению в Декабре 2022 года от такой знаменитой личности, как Джек Дорси – который является создателем сети Twitter, а также большим биткойн-максималистом, сеть Nostr мало того, что резко активно стартанула, она ещё и максимально повернулась к сети Lightning. На уровне протокола там встроили оплату сатошами через “сеть молния”. Благодаря этому, каждый пользователь может в своём профайле указать Lightning Address (выглядит как email), через который он может в любой момент принять любую сумму от любого, у кого есть Lightning кошелёк. Но это ещё половина дела!
Был разработан стандарт NIP-57, который позволяет принимать микроплатежи Lightning на конкретные сообщения любой суммы и вести учёт отдельно по записям. Всё это также транслируется в сеть и может быть обработано как угодно! Но по сути – это замена “лайков”, когда вы просто ставите сердечко, ни к чему не обызывающее (такие лайки также есть в Nostr), на “материальный” лайк – “зап”. На практике это выглядит так. Если вам понравилось чьё либо сообщение и у того пользователя в профайле указан Lightning Address (с поддержкой фичи zap), а у вас есть сатоши в Lightning кошельке – вы можете кликнуть по значку молнии в посту. У того значка уже может стоять число – сколько собрал сатоши то сообщение от других пользвателей. После у вас тут же открывается ваш любимый Lightning кошелёк, и у вас там есть либо фиксированная сумма, либо любая, которую вы хотите послать (в Amethyst вы можете указать несколько вариантов сумм, которые вы будете посылать в виде zap-ов). Вы отправляете платёж за доли секунды, а после напротив молнии статистика обновляется с учётом ваших отправленных сатоши. И все эти данные видят все участники сети.
Например, уже появились проекты, показывающие статистику сети Nostr за последний час – сколько сатоши собрало то или иное сообщение. Это практически замена Твиттер-статистике “популярных тем”. Также, статистика по отправленным сатошам суммируется в самом аккаунте автора сообщения.
Для Zap-ов существует огромное непаханное поле деятельности. Например, сеть Nostr открыта, к ней уже разработано много программных модулей. Уже появляеются инструменты для обработки zap-ов. Появились аккаунты, которые на основе этого механизма сделали реализацию лоттереи (они говорят – “пошлите нам зап, после вы участвуете в лоттерее” и они могут программно определить всех участников и после отправить выйгрыш победителю). Или вот идея для художников или фотографов – транслировать постепенно свои работы, собирать информацию по запам и показывать “Топ” работ на своём сайте на основе собранных сатоши. Чем не повод устроить выставку с QR-кодами у каждой работы, где ссылка ведёт на конркретное сообщение в сети Nostr? Помоему отличный способ устроить голосовалку и получить новых подписчиков! Это лишь очень грубые идеи, которые можно довести до ума и сделать очень интересными и денежными проектами!
Сейчас Nostr захлестнула волна запов – многие пользователи окончательно перешли с лайков на запы. Ведь запы – это не просто эфимерная поддержка, а именно материальная поддержка. Причём поддержка из микроплатежей, которая суммируется и превращается в реальную финансовую. Например, что стоит вам отправить 21 sats, когда доллар стоит 4200 sats? Думаю, для вас это не стоит ничего, а для получателя – это может быть ощутимая сумма! Вы можете таким способом не только отблагодарить автора сообщения, но и продемонстрировать другим свою поддержку (кто послал zap – виден в разделе запов профиля того пользователя, кому послали). Также он виден в сторонних сайтах, которые обсчитывают статистику “запов”. Причём, что немаловажно – все эти платежи от одного пользователя другому идут не через одну компанию, а напрямую – от кошелька отправителя к кошельку получателя каждого конкретного пользователя!
И чтобы завершить статью, укажу ещё раз список полезных ресурсов
- Android приложение – Amethyst
- iPhone приложение – Damus
- Веб-версии – Astral и Snort. Но будьте аккуратны – оригинальные веб версии работают локально в броузере с ключами, то есть не обрабатывают и не передают их на сервер авторов. Но если вы не будете бдительны – можете попасть на сайт подделку с другим адресом, где введя секретный ключ – скомпрометируете его и злоумышленники получат полный доступ к вашему Nostr аккаунту. Но все эти разработки дают власть самим людям – технически подкованные люди могут скачать исходники этих разработок и запустить их на своём локальном компьютере.
- Статистика сети Nostr по Zap-ам
- Список всех релеев сети, бесплатных и платных
- Lightning кошельки для Zap:
- Для получения – важной чертой их всех является то, что они позволяют получить Lightning Address: LNBits Demo, Wallet Of Satoshi, Bitcoin Beach Wallet, ln.tips – если у вас есть Telegram, Alby, BTCPay Server свой или free hosting (например мой). Некоторые из них не имеют полноценной поддержки zap-ов (Bitcoin Beach Wallet и BTCPay), но это только выражается в том, что если вы получаете zap-ы от кого либо, статистика по ним не попадёт в ваш профиль и в ваши сообщения (но вы можете отправлять zap-ы другим). Другими словами, zap поддержка важна на стороне получателя, и только для учёта статистики.
- Для отправки: все те же, что указаны выше для получения + любые другие без Lightning Address, например SBW, Phoenix, Zeus, Blixt, Breez и многие другие