Перейти к содержимому






* * * * - 3 голосов

STUN протокол для криптовалюты

Написано Garrett, 11 August 2014 · 2479 Просмотров

bitcoin STUN EmerCoin
Впервые в истории криптовалют, использован протокол STUN для получения внешнего IP-адреса.

Зачем это нужно?

Дело в том, что Bitcoin и все его наследники используют один и тот же общедоступный веб-сервер для получения внешнего IP.
Существует два сервера, которые жестко прошиты в бумажнике любой криптовалюты:
- http://checkip.dyndns.org
- http://www.showmyip.com
Можете сами убедиться, заглянув в исходный код https://github.com/b...ter/src/net.cpp,
функцию GetMyExternalIP()

Что интересно: второй сервер http://www.showmyip.com в настоящее время не работает.
Таким образом, все кошельки Bitcoin и его форки сегодня зависят от единственного веб-сервера: checkip.dyndns.org.
Если этот сервер по какой-либо причине упадет, то это приведёт к весьма неприятным последствиям.
Крипты конечно не умрут, но резко снизится устойчивость сети.

Это произойдёт вследствие того, что узлы сети не смогут сообщать друг другу о вновь подключившихся узлах.
Клиенты же, после цикла включение-выключение будут оторваны от сети и подключиться смогут по минимуму, только к ранее известным узлам. Всё это приведёт к резкому падению связности сети, и как следствие - к критическому снижению устойчивости.

Также обратим внимание, что текущей WEB-механизм получения внешнего IP основан на нестандартизированном человеко-ориентированном текстовом протоколе, для криптокошельков и прочих роботов не предназначенном. Поэтому, если владельцы сайта вдруг изменят формат вывода (например, для более удобного чтения), то все кошельки не смогут разобрать и понять это обновление, и результаты будут такими же, как если бы сервер упал.

Кроме того, владельцы dyndns.org потенциально способны посредством анализа логов WEB-сервера собрать список IP-адресов на которых работают ваши кошельки и когда они были включены (по временным меткам).
Как вы понимаете, пользователи, как правило, включают кошелёк для того чтобы провести транзакции.
Аналитик может связать время запуска кошелька и IP-адрес из лога сервера с временем проведения операций платежа в блокчейне.
Это серьезно компрометирует анонимность пользователей.

Наше решение проблемы, применённое в EmerCoin:

Мы заменили текущий нестандартный, технически несовершенный протокол (на основе TCP / HTTP ) на специально разработанный для этой цели, хорошо зарекомендовавший себя протокол RFC3489 (STUN).
Краткое описание протокола: http://en.wikipedia.org/wiki/STUN.
Это легкий протокол на базе UDP, широко используется в SIP-системах (VOIP - телефония, IP-видео) уже свыше 10 лет. И так как он является стандартным, мы можем быть уверены, что наш кошелёк сможет распознать ответ от любого STUN-сервера. В настоящее время, вновь запущенный EMC-кошелек для получения IP-адреса использует 47 STUN-серверов, распределенных по всему миру, и последовательность запроса является случайной.

Таким образом, никто из владельцев серверов не сможет собрать сколь либо полный список подключений наших кошельков. Кроме того, мы провели некоторые шаги для рандомизации подписи, что делает трудным определение на стороне сервера, кто же отправил этот запрос - один из бесчисленных IP телефонов или EMC-кошелек.

Таким образом, мы достигли наших целей: убрана зависимость от централизованного сервера, обеспечена более высокая стабильность сети и реальная анонимность.

UPD: Интересно, что на bitcointalk`е тему восприняли в штыки - https://bitcointalk....1419#msg8341419
Мол дескать все это ерунда, есть UPNP протокол и он все решает. На что ему грамотно ответили, что UPNP - это лишь частный случай и работает он далеко не всегда при различных условиях.

Кстати, на пальцах - довод за STUN против UPNP:
Зададимся вопросом: Какова вероятность того, что заNATный кошелёк окажется за каким-то кривым NATом, где UPNP не работает? Возьмём оптимистичную оценку в 1/10000. То есть 1/10000 клиентов обломятся.
Теперь зададим тот же вопрос про STUN - какова вероятность, что ВСЕ 47 stun-серверов умрут, и клиент останется без IP? Предположим пессимистично, что коэффициент готовности STUN-сервера 50% (то есть в среднем, половину времени сервер в дауне). Соответственно, вероятность того, что все залягут, это 1/2^47, или примерно 1/140737488355328

  • 4



Блин, неужели в битке до сих пор этот каменный век?
 

Может, закоммитишь это в основную ветку бита? :)

    • 0

Блин, неужели в битке до сих пор этот каменный век?
 

Может, закоммитишь это в основную ветку бита? :)

 

Тут? или на биткоинтоклке?

    • 0

Вообще-то под именем checkip.dyndns.org прячется 4 ип-адреса, то бишь 4 сервера..

>nslookup  checkip.dyndns.org

 

Addresses:  91.198.22.70
          216.146.38.70
          216.146.39.70
          216.146.43.70

    • 0

Вообще-то под именем checkip.dyndns.org прячется 4 ип-адреса, то бишь 4 сервера..

>nslookup  checkip.dyndns.org

 

Addresses:  91.198.22.70
          216.146.38.70
          216.146.39.70
          216.146.43.70

Да, прячутся 4 сервера. Но:
1. Они все принадлежат одной организации. То есть - и логи организация все собрать может, и ежели решит этот сервис выключить - то выключит все четыре сразу. Так что в данном случае учетверение балансирует нагрузку и технические сбои, не уменьшая административных рисков.
2. Из этих четырёх - три расположены в одной подсети. Так что независимость от сетевых сбоев реально обеспечивается двумя сетевыми путями. Что как-то бледно смотрится  по сравнению с 47 stun-адресами, некоторые из которых, раз уж о том зашла речь, также имеют по 4 сервера на имя, например stun.telbo.com
3. STUN - стандартен. И этим всё сказано. Хозяева STUN-серверов гарантировано не будут менять формат вывода. А что завтра захотят сделать хозяева dyndns.org - мы не знаем.
 

    • 0

Тут? или на биткоинтоклке?

На гитхабе.

    • 0

На гитхабе.

 

Ну, у них своя голова. Мы закинули топик в bitcointalk в технический раздел, так он мигом улетел в раздел Альткоинов. Я так понял - им это не особо надо.

    • 0

Август 2017

В П В С Ч П С
  12345
6789101112
131415 16 171819
20212223242526
2728293031  

Поиск по блогу

Категории