Обмен электронных валют по самому выгодному курсу!
 


Kurbetsoft
Доступно в Google PlayКак уберечь сеть Биткойн-узлов от централизации

Как сохранить узлы Биткойн-сети децентрализованными

Джеймсон Лопп (Jameson Lopp) – разработчик программного обеспечения компании BitGo, создатель statoshi.info и основатель bitcoinsig.com. Он создает веб-сервисы и увлечен решением проблем масштабирования.

В этом качестве Лопп исследует причины уменьшения количества Биткойн-узлов в сети и обсуждает необходимые меры по преодолению этой тенденции.

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

Есть множество аспектов, способствующих децентрализации Биткойна, наиболее важным из которых является сеть, состоящая из узлов. Узлы составляют инфраструктуру Биткойна, именно они хранят копии блокчейна и распространяют по сети данные о блоках и транзакциях.

И все же, несмотря на их значимость, в течение многих лет количество узлов сокращается, что потенциально ведёт к увеличению централизации сети.

Количество узлов в сети Биткойн уменьшилось на 6%

Количество узлов в сети Биткойн уменьшилось на 6% с 6030 узлов, работавших по состоянию на конец 3 квартала.

В течение нескольких лет я писал о снижении количества узлов и отслеживал работу узлов с помощью созданного мной в 2014 году сервиса Statoshi.info. Поскольку производительность узлов и сеть Биткойн в целом стала актуальной темой недавних дебатов по вопросу масштабируемости, я надеюсь пролить свет на некоторые моменты, не получившие достаточного внимания.

На заре развития сети Биткойна, единственным способом принять в ней участие было запустить свой полный узел. За прошедшие годы экосистема выросла, в итоге сегодня существует множество вариантов кошельков, из которых пользователи могут выбрать на любой вкус. Большинство кошельков при этом являются тонкими клиентами, запрашивающими данные с полных узлов; либо эти кошельки хостятся в облаках сторонних организаций и потому не требуют, чтобы пользователь содержал собственный полный узел.

В результате, большинство новых пользователей предпочитают не обременять себя содержанием полного узла, а некоторые из существовавших операторов узлов решили остановить работу. Давайте разберемся сколько же узлов на самом деле должно быть в сети Биткойн.

В зависимости от вашей точки зрения, здесь может быть несколько вариантов:

  • Один. Поскольку Биткойн является сетью без необходимости в доверии, то единственный узел, который имеет какое-то значение, это ваш узел.
  • Сотни или какое-то количество, достаточное для того, чтобы отключение значительной части сети стало практически не реализуемым для кого-либо, ввиду географического или юрисдикционного распределения узлов.
  • Тысячи или достаточное количество, чтобы удовлетворять высокий спрос SPV-клиентов. SPV-клиентами не обязательно могут быть только кошельки, но также и пиринговые (P2P) приложения, такие как Lighthouse.

С другой стороны, здесь невозможно пересолить – не может быть слишком много узлов и нельзя чрезмерно децентрализовать сеть. При этом, как относиться к тому факту, что менее 1% пользователей Биткойна содержат полный узел?

Когда несколько лет назад я спросил разработчика Bitcoin Core Питера Вуйле (Pieter Wuille) о важности количества узлов, он ответил следующее:

“Задача полных узлов заключается в гарантировании честности сети. И это не столько вопрос их количества, но больше о том, насколько тяжело содержать узел”.

Питер – один из самых плодотворных разработчиков Биткойна в плане разработки кода и функций, добавляемых в протокол; он знает, о чем говорит. Питер также является автором концепции Отделённого Свидетеля, которая, надеюсь, откроет путь к реализации различных решений масштабируемости Биткойна.

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

Споры о размере блока

Одним из аргументов, часто поднимаемых в ходе дискуссии о размере блока, является стоимость содержания узла. Существует теория, утверждающая, что повышение затрат (например, требования к дополнительным вычислительным ресурсам для проверки и передачи более крупных блоков) приведет к уменьшению количества узлов, и наоборот.

В превосходной статье под названием “Измеряя децентрализацию“, разработчик Пол Шторц (Paul Sztorc) ввел понятие CONOP (стоимость “узла” как опции). Он утверждает, что снижение затрат должно привести к увеличению числа людей, совершающих выгодные для них действия. Этот аргумент имеет смысл, если предположить, что стоимость содержания узла – единственная переменная в этом уравнении.

Далее в этой статье мы обсудим другие факторы, потенциально влияющие на CONOP.

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

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

ARM-устройства, такие как Raspberry Pi или ODROID+ могут выступить в качестве эталона минимальных конфигураций оборудования полного узла. Такое устройство может поддерживать работу с блоками 1Мб, хотя из-за маломощного процессора ему и потребуется две недели для первоначальной синхронизации блокчейна (до блока 390,000).

Можно купить готовый узел Bitseed за $170 или Bitcoin Mini за $140. Если вы технически подкованы, то за $100 сможете собрать собственный узел на базе Raspberry Pi node или даже более мощный узел за 200 долларов, который будет неплохо работать в течение следующих нескольких лет.

готовые полные Биткойн-узлы Bitseed и Raspberry PI

Еще один упускаемый из виду аспект при обсуждении приемлемой стоимости содержания узла заключается в том, что нам необходимо определить целевую аудиторию пользователей-операторов полных узлов.

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

Существует, кажется, общий настрой в обществе, согласно которому для долгосрочного успеха Биткойна необходимо найти способы его продвижения в массы.

Однако, как показывает диаграмма из презентации BitNodes, узлы в большой степени сконцентрированы в Северной Америке и Западной Европе.

Полные узлы Биткойна в большой степени сконцентрированы в Северной Америке и Западной Европе

Кого бы мы хотели видеть в качестве операторов полного узла? Наивный ответ был бы таким: “всех”, но ясно, что это практически нереально, поскольку Интернет еще не стал повсеместным.

Подозреваю, что надежный недорогой широкополосный доступ в Интернет является одной из основных причин сложившегося на сегодняшний день географического распределения узлов.

В прошлом ведущий Биткойн-разработчик Гэвин Андресен однажды сказал:

“Большинству обычных людей не следует управлять полными узлами. Ведь нам нужны такие полные узлы, которые имеют высокий коэффициент готовности, обслуживают более восьми соединений и обладают высокой пропускной способностью каналов доступа в Интернет ”.

Данные, собранные сайтом Statoshi.info, показывают, что узлы с большим количеством соединений должны иметь канал приема со средней скоростью 200 Кбит/с и канал передачи со средней скоростью 1,5 Мбит/с, хотя случаются и пиковые нагрузки до 2 Мбит/с на прием и до 40 Мбит/с на передачу.

Согласно отчету компании Akamai под названием Состояние Сети Интернет, средняя скорость передачи данных составляет 5 Мбит/с, но это справедливо лишь для четверти стран мира.

Оценки показывают, что по состоянию на 2014 год только 60% мирового населения пользуются Интернетом.

Минимальные требования к узлу сети

Хорошо продуманные минимальные требования должны установить целевые значения для характеристик производительности, необходимых для работы узла, требования к вычислительным ресурсам, обязательные для достижения этих целевых характеристик, а также, затраты на оборудование, которое отвечает этим целевым показателям.

Я бы рекомендовал применить логику, аналогичную разработанной Джонасом Ником, Грегом Сандерсом и Марком Фриденбахом для стоимости проверки блока. Их подход хорошо продуман, хотя минимальная спецификация не должна быть слишком упрощенной, так как имеются и другие аспекты, которые тоже надо учитывать.

Например, минимальная спецификация могла бы выглядеть примерно так:

  • Целевая стоимость оборудования: $200
  • Целевое время проверки блока (по худшему сценарию): 10 секунд
  • Минимальные требования к пропускной способности сети I/O: 2 Мбит/с
  • Минимальная скорость чтения/записи диска I/O: 2 MB/с
  • Минимальная производительность процессора: 5000 MIPS
  • Минимальная оперативная память (RAM): 1 GB

Жан-Поль Когельман (Jean-Paul Kogelman) показал отличный пример того, как принятая минимальная спецификация может помочь при выработке решений в процессе обсуждения масштабируемости путем изучения недавних изменений стоимости проверки подписи транзакции.

В версиях ядра Биткойн до 0.12 для проверки подписи используется протокол OpenSSL. В версии 0.12 подписи проверяются с помощью secp256k1, который примерно в пять раз быстрее, чем OpenSSL. В результате, проверка транзакции (а, следовательно, и блока) должна осуществляться почти в пять раз быстрее.

Поскольку это обстоятельство повлечет сокращение максимального (по худшему сценарию) времени на проверку блока почти на 80%, минимальная спецификация предоставляет нам простой двоичный выбор мер:

  1. Соответственно ослабить минимальные требования к вычислительным ресурсам;
  1. Соответственно усилить требования к другим параметрам, таким как количество подписей на каждую транзакцию и количество транзакций в блоке, что позволит нам оставаться в рамках (не ухудшать) минимальных целевых показателей.

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

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

Затраты и выгоды

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

С другой стороны, если мы сохраним требования к вычислительным ресурсам узлов настолько мягкими, что им сможет соответствовать достаточно свежая модель Raspberry Pi с типовым домашним подключением к Интернет, то непонятно насколько это поможет, если возросший в результате конкуренции за место в блоке спрос на включение транзакций в блок приведет к увеличению комиссионных платежей, которые в итоге могут отпугнуть большее количество пользователей Биткойна.

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

Сети второго уровня (такие как, сеть Lightning и сеть микроплатежей 21 Inc) определенно могут сыграть роль в снижении бремени, но не стОит упускать из виду, что даже пользователи сетей второго уровня в конечном итоге должны будут выстраивать отношения с блокчейном Биткойна.

Существует много видов затрат, связанных с содержанием узла.

  1. Необходимость начального обучения (стоимость времени)
  2. Затраты на установку, настройку и первоначальную синхронизацию (время, трафик, процессор)
  3. Текущие операционные расходы (трафик, процессор, RAM, HDD)
  4. Расходы на техническое обслуживание (время на устранения неисправностей и модернизацию).

Начальное обучение для понимания ценности Биткойна может занять недели и месяцы. Для понимания работы узла может потребоваться несколько часов – я уверен, что большинство людей никогда не доберется даже до этапа изучения переадресации портов на домашнем роутере.

Начальная синхронизация может занять от нескольких часов до нескольких недель в зависимости от характеристик компьютера. На обслуживание я бы отвел один час в месяц в худшем варианте.

До сих пор мы рассматривали затраты на содержание узла с различных точек зрения. Разумно предположить, что более высокие затраты приведут к меньшему количеству узлов, а снижение затрат приведет к увеличению узлов. Но, что если цена – не единственный фактор?

Генеральный Директор BitPay Стивен Пэа (Stephen Pair) лаконично пояснил:

“В сети Биткойн существует столько узлов, сколько необходимо для проведения независимой и не полагающейся на доверие к третьим лицам или сервисам проверки транзакций”.

Я думаю, что Пэа и Шторц оба правы, и, следовательно, количества узлов является функцией спроса на самостоятельно проводимую оператором узла проверку транзакций с одной стороны и затрат на содержание узла, с другой. Я бы сказал, что количество узлов зависит также и от ценностей, хранимых и обмениваемых пользователями Биткойна.

Хотя некоторые утверждают, что содержание полного узла сегодня – в чистом виде альтруизм, для этого бизнеса есть стимулы:

  • Инвестиция: если вы серьезно вложились в биткойн, вас может заинтересовать поддержание функционирования сети для защиты своей инвестиции.
  • Производительность: запросить локальную копию блокчейна можно на порядки быстрее в отличие от запросов в адрес сервисов блокчейн-данных через Интернет.
  • Отсутствие необходимости получать разрешения и стойкость к цензуре: Принимая и отправляя транзакции посредством собственного узла, никто не сможет остановить или помешать вам.
  • Конфиденциальность: если вы запрашиваете другие узлы или сервисы о блокчейн-данных, они могут использовать ваши запросы для попытки раскрыть вашу анонимность.
  • Отсутствие необходимости полагаться на доверие третьим лицам или сервисам: Владение копией журнала транзакций, который вы сами же проверили, означает, что Вам не нужно доверять третьей стороне, чтобы быть уверенным в истинности журнала транзакций.

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

Мы видим, что BTCC в последнее время развернула 100 узлов, и мы знаем, что многие другие Биткойн-компании держат свои узлы. Я сам курирую работу нескольких mainnet и testnet узлов от имени компании BitGo, а также лично управляю работой нескольких узлов, потому что вложил серьезные ресурсы в биткойн и заинтересован в поддержании работы сети на должном уровне.

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

Чтобы изучить мнения пользователей Биткойн по поводу их решения содержать или нет полный узел, я провел опрос и собрал более 500 ответов. Это конечно же не строго научное проведение опроса, но, надеюсь, это лучше, чем ничего.

Аналитика в общих чертах представлена здесь, а здесь исходные данные .

Приведу некоторые основные результаты этого опроса:

  • 24% опрошенных ранее содержали полный узел, но прекратили это занятие
  • 42% тех, кто никогда не содержал узел, просто не видят для этого стимулов
  • 44% или более операторов узлов используют узлы для своей прямой выгоды
  • 57% пользователей готовы выделить более 100 Кбит/с пропускной способности для канала передачи узла
  • 58% пользователей не готовы платить больше $10 в месяц за содержание узла
  • 81% операторов содержат узел в домашних условиях.

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

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

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

Выводы

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

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

Да, стоимость будет выше и вполне может подняться выше пороговой суммы в $10 в месяц, которую средний пользователь готов (на данный момент) платить; но если пользование сетью Биткойн станет расти, и больше субъектов станут переводить крупные суммы, пользователи получат больший стимул нести пусть даже более высокие расходы на содержание узла и проведение проверок блоков, но при этом полагаться на себя без необходимости в доверии к другим.

С другой стороны, мы должны также иметь в виду, что от участия в децентрализованной системе будет мало пользы, если стоимость проверки транзакций низкая, а стоимость самой транзакции высока из-за конкуренции за пространство в блоке.

Если мы подходим к дискуссии о размере блока с точки зрения использования вычислительных ресурсов, мне кажется, что в любом случае кто-то выпадет из процесса. Не увеличение размера блока приведет к отвращению некоторых пользователей проводить транзакции, в то время как увеличение размера блока приведет к тому, что некоторые пользователи откажутся содержать собственные полные узлы.

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

В порядке убывания приоритета, я рекомендую Биткойн-разработчикам следующие меры:

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

Сконцентрироваться на увеличении объема транзакций сети Биткойн, тем самым повышая эффективность ее использования и число обслуживаемых ею пользователей (и вариантов использования). В результате должно появиться больше субъектов (лиц или организаций), осуществляющих хранение и переводы ценностей, которые, следовательно, будут мотивированы содержать свои собственные узлы.

Сосредоточиться на облегчении содержания узла с точки зрения необходимых для этого знаний. Эти изменения будут происходить естественно, по мере того, как Биткойн будет приобретать известность и репутацию.

Облегчить содержание узла с точки зрения необходимых вычислительных ресурсов. Неплохим первым шагом стало бы предоставление возможности работы узла в SPV-режиме (тонкий клиент) во время продолжительной первоначальной синхронизации блокчейна в фоновом режиме. Начальная загрузка узла c обязательств UTXO стала бы гигантским скачком вперед.

Исследовать возможности прямой экономической мотивации содержания узла, например, такой как предоставление данных блокчейна на платной основе.

Если мы сможем удерживать рост стоимости содержания узла на уровне ниже роста выгоды от его содержания, мы сможем сохранить сетевую инфраструктуру децентрализованной даже при увеличении бремени на операторов узлов.

Демография операторов узлов, вероятно, продолжит меняться, но я призываю  Биткойн-пользователей не противиться изменениям в экосистеме покуда её фундаментальное свойство – децентрализация – остаётся в сохранности.

Автор: Джеймсон Лопп (Jameson Lopp)

Источник: CoinDesk




[vkontakte] [facebook] [twitter] [odnoklassniki] [mail.ru] [livejournal]

Каталог сайтов