Отключаем блокировку DHT в популярных торрент-клиентах
На многих так называемых «приватных» трекерах торренты раздаются с установленным флагом, не позволяющим использовать сеть DHT. Цель этого — не допускать раздачу материала клиентам, не зарегистрированным на данном трекере. Однако для пользователя это означает уменьшение количества сидеров, иногда — значительное.
Ниже мы рассмотрим, как отключить такое ограничение в популярных торрент-клиентах. Будет рассмотрен общий подход, а также практическое применение к актуальной версии uTorrent и qBitTorrent.
1. Вступление.
В сети в прошлом выкладывалось достаточно много информации касательно так называемых «патчей DHT», равно как выкладывались и сами патчи. Однако при анализе этих данных зачастую они оказываются противоречивыми и даже в ряде случаев полностью нерабочими. Связано это с постоянным обновлением клиентов, изменением структуры программ, а в ряде случаев — неправильным подходом авторов патчей.
Мы попытаемся не просто создать готовое решение, а проанализировать основные шаги так, чтобы читатель мог даже в случае изменение в будущем самостоятельно снимать ограничения DHT в новых версиях клиентов.
2. Подготовка.
2. Поиск и изменение кода.
В общем, реализация блокировки DHT во всех клиентах на уровне Ассемблера выглядит одинаково, это вызов функции проверки флага, и если эта функция возвращает нулевое значение — переход на область кода, которая позволяет использовать DHT:
по этой причине сам патч будет выражаться в простом изменении одного байта кода 74 => EB, превращающего условный переход jz в безусловный и таким образом игнорирующий проверку на «приватность».
Остаётся найти данную функцию.
На самом деле это совершенно не сложно, учитывая специфику данного кода и наличие ключевого слова «private». Откроем распакованный файл клиента uTorrent в IDA и выполним поиск по данному ключевому слову:
Видно, что с указанным ключом в uTorrent присутствует всего три участка кода. Вот как они выглядят:
Наша задача заключается в простом замене функции, как мы уже упоминали ранее: 
По сути, это замена характерной последовательности
68 00 FF 69 00 E8 19 F1 FA FF 85 C0 74 07
на
68 00 FF 69 00 E8 19 F1 FA FF 85 C0 EB 07
В случае qBitTorrent задача упрощается ещё больше, поскольку разработчик вложил pdb-файл в установщик, так что названия функций будут более очевидными, и поиск по ключевому слову упрощается:
Так выглядит сам код проверки:
Как видите, по сути он неотличим от uTorrent. Патч будет аналогичным:
Это замена характерной последовательности
E8 20 CB FA FF 84 C0 74 59
на
E8 20 CB FA FF 84 C0 EB 59
qBitTorrent также предлагается в виде 64-разрядного клиента. Действия в отношении него буду совершенно аналогичными, за исключением того, что нам потребуется 64-разрядная версия IDA. Результат поиска по ключевому слову ожидаемо аналогичен:
Вид соответствующей функции несколько отличен, однако суть осталась та же:
Ну и соответствующий патч, здесь это будет три байта:
Это замена характерной последовательности
E8 8F 0E F8 FF 4C 8D 3D 54 E5 46 01 83 CB FF 84 C0 0F 84 DB 00 00 00
на
E8 8F 0E F8 FF 4C 8D 3D 54 E5 46 01 83 CB FF 84 C0 E9 DC 00 00 00 00
3. Итоги
Нами было последовательно изучена процедура поиска и отключения функции ограничения использования DHT для приватных торрентов в популярных клиентах uTorrent и qBitTorrent.
Думаю, что предложенный механизм будет аналогичен и для любых других клиентов — во всяком случае я проверил его и на ComboPlayer.
Для автоматизации процесса мной были созданы два патчера для актуальных версий uTorrent и qBitTorrent. Для uTorrent патчер также распаковывает исходный инсталлятор. Файлы можно скачать здесь:
Патчер qBitTorrent версии x32
Патчер qBitTorrent версии x64
Патчер распакованного файла uTorrent
Silent всё-в-одном патчер uTorrent: распаковывает, патчит и обратно упаковывает инсталлятор, а также распаковывает, патчит и упаковывает обратно уже установленный uTorrent (при условии, что установочная папка — по умолчанию, то есть «%userprofile%\AppData\Roaming\uTorrent\»
Что такое dht в играх
Q. Можно ли открыть закрытые порты
A. Это зависит от Вашего типа подключения к интернет и Вашего провайдера. В частности если Вы находитесь за NAT провайдера то порты открыть не получится. Так же порты могут быть закрыты самим провайдером. В остальных случаях порты открыть можно.
Q. Как определить что я за NAT
A. Для внутренних адресов специально выделены три диапазона IP:
Если Ваш IP принадлежит одному из этих диапазонов, то Вы точно находитесь за NAT.
Q. Как узнать мой IP
A. В Windows 2000/XP выберите кнопку Пуск > Выполнить и наберите команду cmd
В появившемся Dos-окне выполните команду ipconfig
Код:
Windows IP Configuration
Ethernet adapter Local Area Connection:
Q. Я за натом (у меня серый IP). Что мне делать
A. Во первых нужно скачать андроид игры на планшет, а после определить где нахдится NAT у вас или у провайдера. Если NAT находится у провайдера Вы уже ничего не сделаете, входящие соединения будут недоступны. В такой ситуации можно купить белый IP у своего проадера, если он предоставляет такую возможность.
Если NAT находится у вас, то нужно настроить роутер и файрвол (он же брендмауер, он же сетевой экран).
Некоторые роутеры поддерживают функцию UPnP которая позволяет автоматически настроить port forwarding. Для этого нужно в настройках клиента найти и задействовать UPnP. Если это не поможет то нужно, настраивать роутер врчную.
Q. У меня белый IP что мне нужно сделать чтобы открыть порт(ы)
A. Вам нужно настроить файрволл. Инструкции см. п. 7
Q. А как мне проверить открыт ли порт(ы)
A. В интернете есть сервисы проверяющие порты Вашего IP. Вот некоторые: http://whatsmyip.org/ports/ http://www.radiotoolbox.com/online_t. ntheygetin.php
Q. У меня все настроено, но тест показывает что порты закрыты. Что делать
A. Вероятно провайдер/администратор Вашей сети закрыл порты.
Q. У меня раздача/закачка не идет или идет, но очень медленно.
A. Скорость далеко не всегда зависист от Вас, она завсит от всех пиров подключенных к разадаче и чаще всего от их количества (обычно чем их больше тем выше скорость). Приведу примеры наиболее часто встречающихся ситуаций.
Kademlia DHT: Основы
Здравствуйте!
В этой статье, как и, надеюсь, в последующих, я хочу рассказать об одной из современных структурированных пиринговых сетей. Данный материал включает в себя мою переработку документаций, описаний и статей, найденных по теме. В качестве введения представлена общая краткая теория p2p-сетей, DHT, а уж затем следует основная часть, которой посвящена заметка.
1. Общая теория p2p
Распределение данных, процессорного времени и других ресурсов между пользователями заставляют искать решения организации сетей разного уровня и взаимодействия.
На смену клиент-серверному взаимодействую приходят сети p2p (point-to-point), чтобы предоставить больший уровень масштабируемости, автономности, анонимности, отказоустойчивости.
Далее будет приведена общая классификация.
Минусы и плюсы зависят от степени «гибридности» — какие характеристики она наследует от централизованных, а какие от децентрализованных (о которых речь пойдет далее).
Децентрализованные — Данный тип сетей подразумевает полное отсутствие серверов. Таким образом, исключается узкое место из сети.
При проектировании топологии и протоколов структурированных сетей оптимальным считается выполнение соотношений:
— Размер таблицы маршрутизации на каждом узле: O(log(n))
— Сложность поиска: O(log(n))
2. DHT
DHT (Distributed Hash Table) — распределенная хэш-таблица. Данная структура зачастую используется для децентрализованных топологий. Однако, это не единственный выбор (как подсказывает литература, впрочем, здесь лучше заняться дальнейшим самостоятельным поиском).
Для каждого значения (данных) на каждом узле вычисляется по определенным правилам хэш (например, с помощью SHA-1), который становится ключом. Также, вычисляется идентификатор узла (той же длины, что и хэш, а зачастую, той же функцией). Таким образом, каждый узел сети обладает своим идентификатором. Ключи публикуются в сети. Узел несет ответственность за ключи таблицы, которые близки к нему по определенной метрике (т.е. расстоянию), здесь подразумевается «похожесть» ключа на идентификатор, если опустить язык математики. Благодаря этому, каждый узел занимает свою зону ответственности при хранении ключей и связанных с ней информации (координаты узла, на котором расположено значение). Это позволяет определенным образом организовать алгоритм поиска по точным значениям (сначала вычислить ключ значения для поиска, например, имени файла, а затем искать этот ключ, направляя запросы к узлу, ответственному за него через посредников, предоставляющих полный путь).
DHT в полной степени обеспечивает отказоустойчивость и масштабируемость. В сочетании с Peer Exchange, например, DHT позволяет перехватить функции Torrent-трекера.
3. Kademlia
Метрика
Создателями данной топологии являются Petar Maymounkov и David Mazières. В основе работы протокола и построения таблиц лежит определения расстояния между узлами через XOR-метрику:
d(x, y) = x XOR y. Важно отметить, что расстоянием является результат операции XOR, интерпретируемый, как число, а не количество различающихся бит (такой критерий тоже может порождать метрику в пространстве ключей/идентификаторов). Т.е. при длине ключа 4 бита: d(2,5) = 0010 XOR 0101 = 0111 = 7.
XOR метрика удовлетворяет всем аксиомам метрики:
Данное свойство отмечают в связи с возможностью формального доказательства тезисов о размерах таблиц маршрутизации и сложности поиска. (Справедливости ради, предоставляемого в виде наброска).
Таблица маршрутизации
На вычислении расстояний между узлами (посредством применения метрики к их идентификаторам) базируется алгоритм построения таблиц маршрутизации.
Каждый i-ый столбец таблицы ответственен за хранение информации об узлах на расстоянии от 2^(i+1) до 2^i. Таким образом, последний столбец для узла 0111 может содержать информацию о любых узлах 1xxx, предпоследний об узлах 00xx, еще на уровень ближе — об узлах 010x.
Конечно, в реальной сети, применяется обычно длина ключа в 128, либо в 160 бит. Зависит от реализации.
Далее, вводится ограничение на число хранимых узлов на каждом уровне, K. Поэтому столбцы таблицы, ограниченные таким K, называют K-buckets (к сожалению, русский эквивалент, звучит совсем неблагозвучно).
Если рассмотреть бинарное дерево поиска, в листах которого лежат идентификаторы узлов, становится понятно, что такая структура K-buckets не случайна: каждый узел (а на примере 110) получает знания хотя бы об одном участнике каждого поддерева (для 110 выделенных залитыми овалами). Таким образом, каждый K-bucket отражает связь узла с не более, чем K участниками поддерева на уровне i.
Протокол
STORE запрос, позволяющий разместить информацию на заданном узле. Перед выполнением STORE узел должен найти K ближайших к ключу значения, которое он собирается опубликовать, а лишь потом отправить каждому STORE с ключом и своими координатами. Хранение сразу на K узлах позволяет повысить доступность информации.
FIND_VALUE запрос, который, зачастую, повторяется для образования итерации, позволяющий найти значение по ключу. Реализует поиск значения в сети. Возвращает либо K ближайших узлов, либо само значение, в зависимости от достижения узла, хранящего искомые данные. Итерации прекращают как раз либо при возвращении значения (успех), либо при возврате уже опрошенных K узлов (значения нет в сети).
FIND_NODE запрос, используемый для поиска ближайших K к заданному идентификатору (поведение сходно с FIND_VALUE, только никогда не возвращает значение, всегда узлы!). Используется, например, при присоединении узла к сети по следующей схеме:
— Контакт с bootstrap узлом
— Посылка запроса FIND_NODE со своим идентификатором к bs узлу, дальнейшая итеративная рассылка
— Обновление K-buckets (при этом обновляются как K-buckets нового узла, так и всех, мимо которых проходил запрос (здесь на руку симметричность метрики XOR))
Как видно, протокол в своей спецификации практически не покрывает вопросы безопасности, что нашло отражение в исследованиях и работах по атаке Kademlia-based сетей.
Из особенностей стоит подчеркнуть наличие репликации, времени жизни значения (необходимость повторного размещения через определенный промежуток времени), параллелизм при посылке запросов FIND_*, дабы достигнуть нужных узлов за более короткое время (обозначается α, в реализациях обычно равно 3). При каждом прохождении запросов происходит попытка обновить K-bucket, что позволяет держать таблицы маршрутизации максимально оптимальными.
4. Реализации
Прежде всего, самой известной сетью, базирующейся на Kademlia является Kad Network, доступная в aMule/eMule. Для bootstrap используются существующие узлы в eDonkey.
Khashmir — Kademlia-реализация на Python, использующаяся в BitTorrent
Из ныне развивающихся и активных библиотек я бы еще отметил
maidsafe-dht — C++ реализация инфраструктуры с поддержкой UDT и NAT Traversal.
Mojito — Java библиотека от LimeWire.
5. Что дальше?
Хотел бы получить комментарии о том, во что следует углубиться подробнее, т.к. статья носит чрезвычайно поверхностный характер. Дабы пробудить интерес, а не выложить все карты разом на стол. Сам планирую в следующей заметке о Kademlia рассказать о проблемах безопасности, атаках и их предотвращении.
Как работают торренты и насколько это законно
Содержание
Содержание
Многие пользователи Интернета привыкли скачивать фильмы и сериалы, хотя сейчас куча разнообразных сервисов, приложений и сайтов, где за небольшую плату можно посмотреть все, что душе угодно. Некоторые лейблы даже новинки сразу выкатывают на своих сервисах, и в кино идти не нужно. Но так называемые торренты не теряют популярности. Что это такое, как работает и насколько это законно — разберемся в этом материале.
Что такое торрент
Торрент, он же BitTórrent (в буквальном переводе — поток бит) — это пиринговый (P2P) сетевой протокол, созданный, чтобы совместно обмениваться файлами через Интернет. А пиринговая сеть — это одноранговая сеть, где узлы «общаются» без центрального элемента. Сетевой протокол является набором правил и последовательности действий. Все это вместе позволяет устройствам соединяться и обмениваться данными.
Торрент-файлы передаются частями между устройствами (для удобства будем иметь в виду ПК). Каждый клиент скачивает кусочки файлов и одновременно раздает их другим участникам сети. При этом достигается избыточность данных, которая позволяет снизить зависимость от каждого узла сети. Проще говоря, одни и те же куски файлов хранятся на многих компьютерах, и если часть компьютеров, хранящих файлы, пропадет из сети, то сеть продолжит работу.
Торренты распространяются через файлы с метаданными, имеющими расширение «.torrent». Каждый такой файл содержит обязательную информацию: URL трекера, имя и размер файла и контрольные хеш-суммы SHA1-сегментов раздаваемых файлов. Также в файле может быть необязательная информация: хеш-суммы файлов целиком и альтернативные источники, работающие не по протоколу BitTorrent.
Принцип работы протокола BitTorrent
Приложение-клиент подключается к трекеру, указанному в файле. Передает ему свой адрес и хеш-сумму файлов, которые он хочет скачать. В ответ трекер передает клиенту адреса других ПК, которые раздают нужные файлы. Далее терекер периодически передает клиенту новые адреса раздающих ПК, если такие появляются в сети.
Клиенты связываются друг с другом напрямую, без участия сервера-трекера. Чем больше устройств будет хранить нужный вам файл, тем быстрее будет происходить скачивание, так как разные куски файла можно будет одновременно скачивать из кучи источников.
При соединении клиенты сообщают друг другу об имеющихся у них сегментах. ПК, желающий скачать сегмент, — он называется личер — посылает запрос и, если второй ПК, — сидер — готов отдавать, личер получает этот сегмент. После этого клиент проверяет контрольную сумму сегмента. Если она совпала с той, что записана в торрент-файле, то сегмент успешно скачивается, а клиент оповещает всех присоединенных о том, что у него есть этот сегмент. Если же контрольные суммы различаются, то сегмент начинает скачиваться заново. Некоторые клиенты банят тех пиров, которые слишком часто отдают некорректные сегменты.
Порядок обмена сегментами выстроен, чтобы между клиентами распространялись в первую очередь самые редкие сегменты, так повышается доступность файла в сети. Сегменты могут весить от 16 до 4096 килобайт.
Режим End game
Компьютер переходит в этот режим, когда скачивание почти закончилось. В еnd game клиент запрашивает оставшиеся сегменты у всех подключенных. Благодаря этому не происходит замедление или полное «зависание» процесса скачивания файла, который почти уже загрузился, из-за каких-то медленных клиентов.
Сидирование
Когда клиент получил полный файл, он начинает отдавать данные другим участникам сети, то есть, становится сидом. Далее сид периодически подает трекеру сигналы об изменениях в состоянии закачек, обновляя списки IP-адресов.
Общие особенности протокола
На фрагменты разбивается вся раздача целиком, поэтому у «личера», который решил скачать только несколько файлов из закачки, будет храниться небольшой запас информации, для поддержания целостности фрагментов. В качестве объекта раздачи могут выступать несколько файлов, например, содержимое каталога.
Клиенты работают по протоколу TCP (Transmission Control Protocol — протокол управления передачей, один из основных протоколов передачи данных интернета). Клиенты и трекеры могут использовать любой порт, вместо стандартного 6969, чтобы избежать блокировки по порту некоторыми провайдерами.
Трекер
Трекер — это специальный сервер, позволяющий клиентам найти друг друга. Трекер хранит у себя только IP-адреса и хэш-суммы раздач и ничего не знает об имени и содержимом передаваемых файлов. Начиная с версии 4.2.0 официального клиента, выпущенного в 2015 году, появилась бестрекерная работа, которая базируется на DHT Kademlia. В этой реализации трекер доступен децентрализовано на клиентах в форме распределенной хеш-таблицы.
DHT — аббревиатура Distributed hash table, то есть распределенная хэш-таблица. Является протоколом, позволяющим битторрент-клиентам находить друг друга без использования трекера. Клиенты с поддержкой DHT образуют общую DHT-сеть и помогают друг другу найти участников одних и тех же раздач. Это позволяет участникам быстрее находить друг друга, снизить нагрузку на трекер, поддерживает участников вместе в периоды недоступности трекера.
На многих трекерах торренты раздаются с установленным флагом private, не позволяющим использовать сеть DHT. Цель этого — не допускать раздачу материала клиентам, не зарегистрированным на данном трекере. Однако для пользователя это означает уменьшение количества сидеров, иногда — значительное. Для популярных клиентов uTorrent и qBitTorrent умельцы создали бесплатные патчи, позволяющие отключить функции ограничения использования DHT для приватных торрентов.
Magnet-ссылка
magnet: — это открытый стандарт URI (Uniform Resource Identifier — единообразный идентификатор ресурса) схемы. Магнитная ссылка позволяет найти файлы без файла torrent. Эта ссылка содержит в себе только хэш-код раздачи. Также magnet-ссылки могут распространяться в виде файлов с расширением *.magnet.
Одним из преимуществ magnet-ссылок является их открытость и независимость от платформы: они могут быть использованы для загрузки файла при помощи разнообразных приложений на большинстве операционных систем. Благодаря тому, что magnet-ссылка представляет собой короткую строку текста, она может быть легко скопирована через буфер обмена, отправлена по электронной почте, через мессенджеры и SMS.
Недостатки и ограничения
Если в сети нет сидера, у которого есть все фрагменты раздачи нужного файла, то все части невозможно скачать, пока не появится клиент с полным набором. Раздача, в которой долгое время нет полного содержимого, называется «мертвой». Также в торрент-сети отсутствует анонимность, возможно узнать IP-адреса тех, кто скачивает, и тех, кто раздает. Но нельзя узнать какие еще раздачи или скачивания производятся с данного адреса.
Также некоторые из торрент-трекеров имеют открытый доступ, то есть каждый желающий может загрузить любую информацию, и эти раздачи не проверяются. Поэтому некоторые торренты могут содержать вредоносное ПО.
В 2008 году началась разработка нового поколения протокола — BitTorrent v2. В нем алгоритм хеширования SHA-1 заменен на более совершенный SHA-256. Он несовместим со старым, поэтому современные клиенты могут работать с обоими протоколами.
Законно ли пользоваться торрентами
Многие трекеры заблокированы в России за раздачу пиратского контента. Но в трекерах также содержится много авторских файлов и свободных раздач, которые полностью легальны. Если скачивать контент, не защищенный авторским правом — никаких последствий не будет.
За нарушение авторского права в российском законодательстве существует административная ответственность — уголовная и гражданская. Чтобы привлечь к административной ответственности по п.7.12 КоАП, надо доказать, что с помощью скаченного контента человек получит доход. А для привлечения к уголовной ответственности стоимость нарушения авторских прав должна превышать 100 тысяч рублей.
В России и во многих других странах в борьбе с нелегальным распространением контента в основном используется ограничение доступа. При этом пользователю фактически не грозит ответственность за незаконное скачивание. Но в некоторых государствах даже простое скачивание незаконного контента влечет за собой реальную административную или даже уголовную ответственность.
Протокол BitTorrent сам по себе не является незаконным или небезопасным. Это просто средство для обмена файлами любого типа, и существует множество легальных торрент-сервисов.
Но совместное использование и загрузка материалов, защищенных авторским правом, с помощью BitTorrent или иными способами, является незаконным процессом во многих странах. Простыми словами: торрент сам по себе легален, но загрузка несанкционированных материалов, защищенных авторским правом — это противозаконный процесс.
Лучшие торрент-клиенты
BitTorrent — это оригинальный и официальный торрент-клиент от разработчиков протокола. В бесплатной версии показывает рекламу.
BitComet — еще одно классическое приложение, появившееся чуть ли не одновременно с разработкой протокола. Но отзывы о нем протитвречивые.
BitLord — еще один собственный торрент-клиент, который доступен для платформ Windows и MacOS. Первоначально выпущенный в 2003 году, BitLord появился из вышеупомянутого BitComet и включает в себя ряд функций, которых нет на других платформах. Например, встроенный проигрыватель VLC для просмотра видео в приложении, поддержку субтитров с использованием API и встроенный торрент-поисковик.
Halite — это сверхлегкий, суперуниверсальный торрент-клиент. Поставляется со всеми программами и функциями, которые можно ожидать от современного торрент-клиента, в том числе с системой управляемых торрент-очередей, поддержкой магнитного URI, супер-заполнением и возможностью создавать торрент-файлы в приложении.
uTorrent — очень популярный клиент, который, со временем стало труднее рекомендовать из-за переизбытка рекламы. Изначально программа была легким и простым в использовании торрент-клиентом. В 2010 году uTorrent начала включать панель инструментов Conduit Engine в свою утилиту загрузки, а также делать домашнюю страницу и поисковую систему Conduit по умолчанию без согласия. В 2011 году uTorrent начал включать панель инструментов Bing, а затем объявил о платной версии приложения под названием uTorrent Plus.
qBittorrent — бесплатный клиент с открытым исходным кодом, без рекламных объявлений, регулярно обновляется.
Deluge — еще один бесплатный клиент с открытым кодом. От qBittorrent отличается меньшим размером — 34 килобайта.
Transmission — клиент для MacOS и linux, версия для Windows имеет меньший функционал.
Vuze — торрент-клиент. Имеет бесплатную и платную версии.
Сеть торрент и криптовалюты
BitTorrent, Inc. — частная американская компания со штаб-квартирой в Сан-Франциско, была основана 22 сентября 2004 года Брэмом Коэном (Bram Cohen) и Ашвином Невином (Ashwin Navin). На пике популярности аудитория сервисов BitTorrent достигала 150 миллионов активных пользователей в месяц.
В июне 2018 года компанию купил миллиардер, создатель криптовалюты TRON, Джастин Сан (Justin Sun). Протокол позволяет передавать любые типы файлов. Это помогло скомбинировать cеть BitTorrent и блокчейн TRON, так и был создан проект Atlas и криптовалюта BTT.
Проект Atlas не предполагает майнинг. Разработчики не видят смысла поощрять майнеров за огромные траты электроэнергии и дорогостоящее оборудование — принцип действия алгоритма proof-of-work (например, у биткоина).
Алгоритм консенсуса BTT — delegated proof-of-stake (DPoS). Он основан на голосовании между владельцами токенов в реальном времени. Выбираются супер представители, которые следят за стабильностью системы, и за это получают вознаграждение. Если сообщество не устраивают представители, их можно переизбрать. Такой же алгоритм у криптовалюты Tron (TRX) — основного блокчейна для проекта Atlas.
BTT можно получить через обмен на другие валюты, либо через эирдроп. Для владельцев криптовалюты Tron (TRX) производится эирдроп, запланированный на шесть лет. Чтобы получить монеты BTT бесплатно, достаточно хранить любое количество токенов TRX. Но чем больше их будет, тем больше BTT получите на эирдроп:
Эирдроп для держателей TRX производится 11 числа каждого месяца. Следить за курсом BTT можно здесь.











