Blockchain размер – Блокчейн: Размер блоков

Блокчейн: Размер блоков

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

Блок можно представить, как пакет транзакций, каждая из которых должна быть подтверждена, прежде чем она будет принята сетью. Каждый блок имеет ограничение по размеру. Размером блока называют предельное значение величины заполненного транзакциями блока. Например, размер блока в сети Биткоин сейчас ограничен 1 Мб. Блок транзакций может быть не полностью “заполнен”, но если в сеть отправляется блок, размер которого превышает заданное предельное значение, сеть его отвергает. Данное ограничение предусмотрено для того, чтобы предотвратить возможность сетевых атак типа «отказ в обслуживании». Если бы такой параметр, как размер блока, не задавался, то злоумышленник, теоретически, мог бы отправить в сеть настолько большое число транзакций, чтобы парализовать работу сети.

Приближение размера блоков к граничному значению приводит к возникновению следующих проблем:

  • Замедление работы сети
  • Увеличение комиссий за транзакции
Замедление работы сети

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

Увеличение комиссий за транзакции

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

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

Среди возможных вариантов решения проблемы размера блоков можно назвать следующие:

  • Увеличение размера блока
  • Технология раздельного заверения (SegWit)
  • Динамический размер блока
Увеличение размера блока

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

Технология раздельного заверения

SegWit — это метод мягкого ветвления (soft fork), который  можно применять для повышения производительности блокчейна за счет удаления из транзакций информации о подписи. Примером может служить сеть Биткоин, в которой за счет применения технологии SegWit предполагается увеличить размера блока с 1 Мбайта до 4 Мбайт. Такие криптовалюты, как Bitcoin и Litecoin, уже успешно активировали SegWit в своих протоколах.

Динамический размер блока

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

Хотя приведенный список не является исчерпывающим, он охватывает основные решения, применяемые в настоящее время разными криптовалютами.

Заключение

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

Будьте в курсе всех важных событий United Traders — подписывайтесь на наш телеграм-канал

utmagazine.ru

Почему размер блокчейна Ethereum в 1 ТБ не беспокоит Бутерина?

Стремительный рост блокчейна Ethereum начал вызывать опасения членов криптосообщества еще в прошлом году. Так, в июне 2017 года пользователи сети заметили, что за 12 месяцев размер блокчейна, второй по капитализации криптовалюты на рынке, вырос на 700%. А в марте этого года майнеры сети стали испытывать трудности при синхронизации полных архивных нод с блокчейном. По мнению некоторых участников рынка, причиной тому может служить рост количества данных в сети, размер которых уже превышает 1 ТБ.

Впервые о том, что архив данных в блокчейне Ethereum может весить порядка 1 ТБ стало известно в июне 2017 года. Тогда крипто-энтузиаст и предприниматель Туур Демеестер заметил, что за год, с июня 2016 по июнь 2017, размер блокчейна Ethereum увеличился на 700%:

According to one source, the Ethereum blockchain has bloated by +700% in the past 12 months: now about 180 GB. https://t.co/wKVqyqy6G7 pic.twitter.com/XfH5He4gRL

— Tuur Demeester (@TuurDemeester) 12 июня 2017 г.
Согласно одному источнику, блокчейн Ethereum раздулся на 700% за последние 12 месяцев: сейчас где-то 180 ГБ.

При таком стремительном росте некоторые участники криптосообщества предположили, что сеть сможет достичь отметки в 1 ТБ еще до конца 2017 года. Согласно анализу автора Hackernoon, известного под псевдонимом StopAndDecrypt, это произошло позже — в мае 2018, и нынешний размер данных в блокчейне Ethereum уже превышает 1 ТБ. Что, в свою очередь, может привести не только к проблемам для майнеров и их нод, но и потенциально стать причиной централизации всей сети.

Постоянный рост блокчейна Ethereum ставит под угрозу работу полных архивных нод, которые отвечают за хранение и синхронизацию всего архива транзакций в сети. Так, в начале марта сразу несколько майнеров сообщили о том, что их ноды, работающие с клиентом Geth версии 1.8.1 и 1.8.2, не могут закончить синхронизацию с блокчейном Ethereum. В частности, майнеры отмечали, что при синхронизации их ноды отставали на 65 блоков от текущего состояния сети, несмотря на то, что обновление не прекращалось. Предположительно, причиной тому стали размер данных и пропускная способность сети, не позволяющая своевременно загрузить необходимое количество информации.

При этом автор Hackroon уверен, что ключевой проблемой для сети Ethereum является не общий объем данных в 1 ТБ, а неограниченный размер блока, который со временем будет только расти, потенциально угрожая децентрализации всей сети:

«Фактором, сдерживающим рост блокчейна Bitcoin, служит ограниченный размер блоков, поскольку таким способом темпы роста требований сети к майнерам никогда не будут превышать внешних ограничений, таких как вычислительные мощности нод и эффективность работы сети. В случае блокчейна Ethereum, размер блока увеличивается в геометрической прогрессии, в связи с чем сдерживающим фактором служат только эти внешние нерегулируемые ограничения. В результате требования блокчейна будут превышать технические возможности и пропускную способность среднестатистического пользователя, и вся сеть станет более централизованной».

Более того, нерегулируемый рост размера блоков в сети Ethereum приведет к тому, что полные ноды не смогут справляться с высокой нагрузкой блокчейна. По мнению StopAndDecrypt, в какой-то момент полные ноды просто не смогут синхронизироваться с блокчейном, в связи с чем их количество сильно сократится. Таким образом, среди ключевых проблем сети автор отметил:

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

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

 В свою очередь, эти ограничения будут способствовать росту комиссий, а также будут препятствовать работе существующих Dapps (децентрализованных приложений), таких как CryptoKitties, Shrimp Farm и Pepe Farm, которые уже сейчас существенно нагружают сеть. При этом будущие Dapps не будут работать вовсе.

 Если Dapps перестанут работать, предназначение сети Ethereum станет спорным.

Статья StopAndDecrypt получила высокий уровень цитирования как в соцсетях, так и на других медийных площадках, посвященных крипторынку, а пользователи Hackeroon оставили порядка 10,000 лайков.

Через несколько дней после публикации Густав Симонссон, сооснователь orchid.com и бывший разработчик Ethereum, дал подробный ответ, где разобрал ключевые моменты статьи. Так, по мнению Симонссона, автор был прав в следующих высказываниях:

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

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

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

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

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

Однако в остальном Симонссон не смог согласиться с StopAndDecrypt, отмечая, что автор не до конца понимает, как работает блокчейн Ethereum.

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

Симонссон подчеркнул, что блоки в сети имеют ограничение, но, в отличие от сети Bitcoin (где оно равно 1 МБ), в Ethereum для этого есть лимит газа (Gas Limit) — максимальное количество газа, которое пользователь готов заплатить за подтверждение транзакции. При этом в рамках протокола консенсуса сети майнеры сами решают, каким будет лимит газа за блок. Симонссон также объяснил, что если автор доверяет майнерам сети Bitcoin в том, что они заинтересованы в повышении ценности биткоина, то логично, что и майнеры сети Ethereum не станут голосовать за решения, которые будут мешать их работе (слишком высокий лимит газа).

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

По словам Симонссона, высокая активность Dapps не несет ущерба сети, но влияет на повышение размера комиссий. Рост комиссий за транзакции обусловлен готовностью пользователей платить ту или иную сумму за их подтверждение. Разработчик подчеркнул, что именно по этой причине Bitcoin до сих является крупнейшей по капитализации сетью, несмотря на низкую проходную способность в 3−7 транзакций в секунду и высокие комиссии, которые в конце прошлого года доходили до отметки в $55.

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

Симонссон объяснил, что любой компьютер с процессором не старше 6 лет, 8 ГБ оперативной памяти и современным SSD-накопителем может выполнять функции полной ноды в сети Ethereum. Как отметил разработчик, он сам имеет несколько таких нод, подключенных через небольшой сервер к сети. Более того, на сегодняшний день пока неизвестно точное число полных нод, необходимых для поддержания работоспособности крупной децентрализованной сети.

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

Как и Симонссон, Бутерин объяснил, что ограничением размера блока служит лимит газа, который последние полгода оставался на уровне 8 миллионов. При этом в данный период высокоскоростная синхронизация каталога данных на клиенте Geth ежемесячно увеличивается на 10 ГБ. Другими словами, сеть последние полгода успешно справляется с повышенной загруженностью.

Более того, говоря о высоком объеме каталога данных сети, Бутерин отметил, что в зависимости от клиента у майнера есть несколько вариантов по работе с данными. Если работать с клиентом Parity в режиме State-Only, то полной ноде майнера (не архивной) понадобится порядка 10 ГБ свободного места. В свою очередь, для работы с клиентом Geth майнеру необходимо более 74 ГБ памяти для синхронизации с блокчейном Ethereum.

decenter.org

Что такое раздувание блокчейна (blockchain bloat)

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

Раздувание блокчейна – реальная проблема

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

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

Однако, раздувание блокчейна порождает одну очень серьёзную проблему. По мере того, как блокчейн раздувается, размер блока тоже должен расти. Если этого не произойдёт, то число транзакций на блок уменьшится. Для Bitcoin это уже стало значимой проблемой. Вот почему и выдвигаются предложения о масштабировании, которые могли бы помочь решить проблему. Очевидно, что Ethereum пойдёт по тому же пути, но его может спасти шардинг (англ. sharding).

Пока не будет найдено решение, раздувание блокчейна будет оставаться ключевой проблемой. Размеры блока ограничены, а значит, сборы, взимаемые майнерами за ускорение транзакций, будут расти. Это и произошло с биткоином, сборы которого в последнее время взлетели до немыслимых высот. Но и Ethereum не отстаёт – цена газа постоянно растёт. Очевидно, необходимо найти решение – чем раньше, тем лучше.

Самое лучшее решение проблемы раздувания блокчейна – увеличение размера блока. Альтернативный вариант – убрать часть информации о транзакциях из основного блокчейна и перенести её в боковые цепи. В случае с Segregated Witness хеши транзакций будут удалены из основного блокчейна, что поможет снизить размеры блокчейна. Ещё один вариант – применение децентрализованного хранения блокчейна, например технологии Storj. Как вы видите, существует несколько возможностей решить проблему раздувания блокчейна, но для этого надо проделать ещё много работы.

Источник: https://themerkle.com/what-is-blockchain-bloat/

ttrcoin.com

Blockchain / Habr

Данный текст будет являться новой главой для учебного пособия по защите информации кафедры радиотехники и систем управления МФТИ (ГУ). Полностью учебник доступен на github. На хабре я же планирую выкладывать новые «большие» куски, во-первых, чтобы собрать полезные комментарии и замечания, во-вторых, дать сообществу больше обзорного материала по полезным и интересным темам.

Когда у вас есть знания о том, что такое криптографически стойкая хеш-функция, понять, что такое blockchain («цепочка блоков») очень просто. Blockchain – это последовательный набор блоков (или же, в более общем случае, ориентированный граф), каждый следующий блок в котором включает в качестве хешируемой информации значение хеш-функции от предыдущего блока.

Технология blockchain используется для организации журналов транзакций, при этом под транзакцией может пониматься что угодно: финансовая транзакция (перевод между счетами), аудит событий аутентификации и авторизации, записи о выполненных ТО и ТУ автомобилей. При этом событие считается случившимся, если запись о нём включена в журнал.

В таких системах есть три группы действующих лиц:

  • источники событий (транзакций)
  • источники блоков (фиксаторы транзакций)
  • получатели (читатели) блоков и зафиксированных транзакций.

В зависимости от реализации эти группы могут пересекаться. В системах типа BitCoin, например, все участники распределённой системы могут выполнять все три функции. Хотя за создание блоков (фиксацию транзакций) обычно отвечают выделенные вычислительные мощности, а управляющими их участников называют майнерами (см. раздел про децентрализованный blockchain далее).

Основное требование к таким журналам таково:

  • Невозможность модификации журнала: после добавления транзакции в журнал должно быть невозможно её оттуда удалить или изменить.

Для того чтобы понять, как можно выполнить требование на запрет модификации, стоит разобраться со следующими вопросами:
  • Каким образом гарантируется, что внутри блока нельзя поменять информацию?
  • Каким образом система гарантирует, что уже существующую цепочку блоков нельзя перегенерировать, тем самым исправив в них информацию?

Ответ на первый вопрос прост: нужно снабдить каждый блок хеш-суммой от его содержимого. И эту хеш-сумму включить в качестве дополнительной полезной информации (тоже хешируемой) в следующий блок. Тогда для того, чтобы поменять что-то в блоке без разрушения доверия клиентов к нему, нужно будет это сделать таким образом, чтобы хеш-сумма от блока не поменялась. А это как раз практически невозможно, если у нас используется криптографически стойкая хеш-функция. Либо поменять в том числе и хеш-сумму блока. Но тогда придётся менять и значение этой хеш-суммы в следующем блоке. А это потребует изменений, в свою очередь, в хеш-сумме всего второго блока, а потом и в третьем, и так далее. Получается, что для того, чтобы поменять информацию в одном из блоков, нужно будет перегенерировать всю цепочку блоков, начиная с модифицируемого. Можно ли это сделать?

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

  • централизованный с доверенным центром
  • централизованный с недоверенным центром
  • децентрализованный вариант с использованием доказательства работы

Централизованный blockchain с доверенным центром


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

Использование технологии blockchain в этом случае является избыточным. Если у нас есть доверенный центр, можно просто обращаться к нему с целью подписать каждую транзакцию, добавив к ней время и порядковый номер. Номер обеспечивает порядок и невозможность добавления (удаления) транзакций из цепочки, электронная подпись доверенного центра – невозможность модификации конкретных транзакций.

Централизованный blockchain с недоверенным центром


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

Для этого можно использовать, например, следующие два метода.

  • Первый метод с использованием дополнительного доверенного хранилища. После создания очередного блока центр должен отправить в доверенное и независимое от данного центра хранилище хеш-код от нового блока. Доверенное хранилище не должно принимать никаких изменений к хеш-кодам уже созданных блоков. В качестве такого хранилища можно использовать и децентрализованную базу данных системы, если таковая присутствует. Размер хранимой информации может быть небольшим по сравнению с общим объёмом журнала.
  • Второй возможный метод состоит в дополнении каждого блока меткой времени, сгенерированной доверенным центром временных меток. Такая метка должна содержать время генерации метки и электронную подпись центра, вычисленную на основании хеш-кода блока и времени метки. В случае, если «недоверенный» центр захочет перегенерировать часть цепочки блоков, будет наблюдаться разрыв в метках времени.
    • Стоит отметить, что этот метод не гарантирует, что «недоверенный» центр не будет генерировать сразу две цепочки блоков, дополняя их корректными метками времени, а потом не подменит одну другой.

Децентрализованный blockchain


Наибольший интерес для нас (и – наименьший для компаний, продающих blockchain-решения) представляет децентрализованная система blockchain без выделенных центров генерации блоков. Каждый участник может взять набор транзакций, ожидающих включения в журнал, и сформировать новый блок. Более того, в системах типа BitCoin такой участник (будем его назвать «майнером», от англ. to mine — копать) ещё и получит премию в виде определённой суммы и/или комиссионных от принятых в блок транзакций.

Но нельзя просто так взять и сформировать блок в децентрализованных системах. Надёжность таких систем основывается именно на том, что новый блок нельзя сформировать быстрее (в среднем) чем за определённое время. Например, за 10 минут (BitCoin). Это обеспечивается механизмом, который получил название доказательство работы.

Механизм основывается на следующей идее. Пусть есть криптографически стойкая хэш-функция и задан некоторый параметр (от англ. target – цель). , где — размер выхода хэш-функции в битах. Корректным новым блоком blockchain-сеть будет признавать только такой, значение хэш-суммы которого меньше текущего заданного параметра . В этом случае алгоритм работы майнера выглядит следующий образом:


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

Зная суммарную вычислительную мощность blockchain-сети, участники могут договориться о таком механизме изменения параметра , чтобы время генерации нового корректного блока было примерно заданное время. Например, в сети Bitcoin параметр пересчитывается каждые 2016 блоков таким образом, чтобы среднее время генерации блока было 10 минут. Это позволяет адаптировать сеть к изменению количества участников, их вычислительных мощностей и к появлению новых механизмов вычисления хэш-функций.

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

  • Hashrate — количество хешей, которые считают за единицы времени конкретный майнер или сеть в целом. Например, в ноябре 2017 года общий hashrate для сети Bitcoin составлял примерно хэшей в секунду.
  • Difficulty — сложность поиска корректного блока, выражаемая как , где — некоторая константа сложности, а t — текущая цель (англ. target). В отличие от параметра t, который падает с ростом вычислительной мощности сети, d изменяется вместе с hashrate, что делает его более простым для восприятия и анализа человеком.

В случае примерно одновременной генерации следующего блока двумя и более майнерами (когда информация о новом блоке публикуется вторым майнером до того, как ему придёт информация о новом блоке от первого) в направленном графе блоков происходит разветвление. Далее каждый из майнеров выбирает один из новых блоков (например – какой первый увидели) и пытается сгенерировать новый блок на основе выбранного, продолжая «ответвление» в графе. В конце-концов одна из двух таких цепочек становится длиннее (та, которую выбрало большее число майнеров), и именно она признаётся основной.

В случае нормального поведения системы на включение конкретных транзакций в блоки это влияет мало, так как каждый из добросовестных майнеров следует одному и тому же алгоритму включения транзакций в блок (например, в сети BitCoin – алгоритму максимизации комиссии за блок). Однако можно предположить, что какой-нибудь злоумышленник захочет «модерировать» распределённый blockchain, включая или не включая в блоки транзакции по своему выбору. Предположим, что доля вычислительных ресурсов злоумышленника (направленных на генерацию нового блока) равна ( 0% < < 50%). В этом случае каждый следующий сгенерированный блок с вероятностью будет сгенерирована мощностями злоумышленника. Это позволит ему включать в блоки те транзакции, которые другие майнеры включать не захотели.

Но позволит ли это злоумышленнику не включать что-то в цепочку транзакций? Нет. Потому что после его блока с вероятностью будет следовать блок «обычного» майнера, который с радостью (пропорциональной комиссии-награде) включит все транзакции в свой блок.

Однако ситуация меняется, если мощности злоумышленника составляют более 50% от мощности сети. В этом случае, если после блока злоумышленника был с вероятностью сгенерирован «обычный» блок, злоумышленник его может просто проигнорировать и продолжать генерировать новые блоки, как будто он единственный майнер в сети. Тогда если среднее время генерации одного блока всеми мощностями , то за время злоумышленник сможет сгенерировать , а легальные пользователи блоков, . Даже если с некоторой вероятностью легальные пользователи сгенерируют 2 блока быстрее, чем злоумышленник один, последний всё равно «догонит и перегонит» «легальную» цепочку примерно за время . Так как в blockchain есть договоренность, что за текущее состояние сети принимается наиболее длинная цепочка, именно цепочка злоумышленника всегда будет восприниматься правильной. Получается, что злоумышленник сможет по своему желанию включать или не включать транзакции в цепочки.

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

Кроме концепции «доказательство работы» используются и другие. Например, в подходе «доказательство доли владения» (англ. proof of stake), используемой в сетях Etherium и EmerCoin, вероятность генерации блока пропорциональна количеству средств на счетах потенциальных создателей нового блока. Это намного более энергоэффективно по сравнению с PoW, и, кроме того, связывает ответственность за надёжность и корректность генерации новых блоков с размером капитала (чем больше у нас средств, тем меньше мы хотим подвергать опасности систему). С другой стороны, это даёт дополнительную мотивацию концентрировать больше капитала в одних руках, что может привести к централизации системы.

Механизм внесения изменений в протокол


Любая система должна развиваться. Но у децентрализованных систем нельзя просто «включить один рубильник» и заставить участников системы работать по новому – иначе систему нельзя назвать полностью децентрализованной. Механизмы и способы внесения изменений могут выглядеть на первый взгляд нетривиально. Например:
  • апологеты системы предлагают изменения в правилах работы
  • авторы ПО вносят изменения в программный код, позволяя сделать две вещи:
    • указать участникам системы, что они поддерживают новое изменение
    • поддержать новое изменение
  • участники системы скачивают новую версию и выставляют в новых блоках транзакций (или самих транзакциях) сигнальные флаги, показывающие их намерение поддержать изменение
  • если к определённой дате определённое число блоков содержат сигнальный флаг (обратите внимание на привязку числа голосов к числу сгенерированных блоков), то изменение считается принятым, и большая (по числу новых блоков) часть участников системы в определённую дату включают эти изменения
  • те участники, которые не приняли изменения, или приняли изменения вопреки отсутствию согласия на них большей части участников, в худшем случае начнут генерировать свою цепочку блоков, только её признавая корректной. Основную цепочку блоков они будут считать неверно сгенерированной. По факту это приведёт к дублированию (разветвлению, форку) системы, когда в какую-то дату вместо одного журнала транзакций появляется два, ведущимися разными людьми. Это журналы совпадают до определённой даты, после чего в них начинаются расхождение.

Подводя итоги, Сатоши Накамото (псевдоним), автор технологий blockchain и bitcoin, сумел предложить работающий децентрализованный механизм, в котором и само поведение системы, и изменения к этой системе проходят через явный или неявный механизм поиска консенсуса участников. Для получения контроля над системой в целом злоумышленнику придётся получить контроль как минимум над 50% всех мощностей системы (в случае PoW), а без этого можно лишь попытаться ограничить возможность использования системы конкретными участниками.

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

Хотелось бы узнать у сообщества, про какие ещё технологии стоит рассказывать студентам. С одной стороны, им обязательно надо рассказать про базовые вещи — классическую криптографию и криптографию на открытых ключах. Но хочется дать понятие и про современные вещи, которые, возможно, не станут лишним грузом знаний и через пять-десять лет. С текущим содержание учебной программы можно ознакомиться здесь.

История изменений


  • 2017-11-17: Добавлено указание лицензии CC-BY
  • 2017-11-18: Уточнёна и расширена информация про механизм proof-of-work и связанные определения

habr.com

Часть 1. Где хранить данные децентрализованным приложениям на блокчейне? / Habr

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

А что же это такое блокчейн?

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

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

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

Но ладно, допустим, одного нечестного майнера легко вычислить и проигнорировать. Но что, если их много, и они сговорились? Представьте, что все люди вокруг вас считают красный свет зеленым. 🙂 И смотрят на вас, как на ненормального, если вы считаете иначе. Социальные эксперименты показывают, что большинство людей в такой ситуации начинают сомневаться и присоединяются к мнению большинства. А ведь в блокчейне как раз и работает правило большинства!

Подобная проблема выяснения истины в условиях, когда твои собеседники могут бессовестно врать, была названа Лесли Лампортом «Проблемой византийских генералов», а решена двумя годами ранее в 1980 году им же совместно с другими авторами. Было показано, что при n шпионах, которые могут врать и искажать информацию, консенсус между участниками может быть достигнут при общем количестве участников 3n+1. А если гарантировать, что шпионы не могут искажать переданную через них сообщения, то достаточно и 2n+1. В блокчейне за счет электронной подписи зловредные узлы не могут искажать информацию, поэтому если в блокчейне менее половины зловредных узлов, то сеть устойчива.

Устойчивость сети к зловредным узлам называется устойчивостью к византийской проблеме (Byzantine Fault Tolerance, BFT). BFT очень важна для публичных сетевых систем, в которые могут свободно добавляться произвольные узлы. Именно такими системами является большинство проектов на блокчейне.

Применение блокчейна не ограничивается созданием криптовалют. Внутрь блока можно записывать что угодно. В биткоине туда записывается список новых транзакций, и применяется это для обмена криптовалютой между её владельцами. В NameCoin в блоках хранятся произвольные пары ключ-значение, что можно применить для создания децентрализованных DNS. В других реализациях блокчейна используются ещё какие-нибудь фишки. А вот Ethereum пошел значительно дальше. Он позволяет хранить в блокчейне не только транзакции, но и полноценные Тьюринг-полные программы, называемые смарт-контрактами, которые позволяют очень тонко настроить блокчейн на прикладную задачу. Например, NameCoin реализуется на Ethereum 5 строками кода.

Ethereum задумывался как универсальная платформа для создания децентрализованных проектов на основе блокчейна. Зачем реализовывать весь блокчейн заново, разворачивать собственную инфраструктуру, если можно парой-тройкой смарт контрактов реализовать то, что тебе нужно, на Ethereum, как, например, аналог NameCoin? Поэтому последнее время Ethereum переживает бурный рост. С марта 2017 ETH (криптовалюта Ethereum) всего за два месяца выросла в цене в 5 раз, и рост продолжается. На Ethereum работают уже сотни приложений, например, социальная сеть AKASHA, биржа фрилансеров Ethlance, игра в слова, да много их!

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

Казалось бы, что ещё нужно? Приложения получаются действительно децентрализованными, неподверженными цензуре и запрещению. В общем, блокчейн — это сплошные достоинства! Но если бы всё было так хорошо… При создании действительно мощных приложений сразу обнаруживаются и недостатки.

Неизменяемость. Неизменяемость — это, конечно, хорошо. Именно неизменяемость даёт блокчейну публичность и BFT. Однако есть и обратная сторона медали. Все данные, которые приложения пишут в блокчейн, остаются там навсегда. Поиграли в слова — блокчейн это запомнил. Разместили информацию в социальной сети — она навсегда сохранена в блокчейне, даже если вы потом удалили свой профиль. Взрывной рост числа приложений на блокчейне приводит к сильному раздуванию цепи блоков в размере. Уже сейчас размер полного блокчейна Ethereum перевалил за 130Гб, хотя он работает меньше 2 лет. У биткоина меньше при его солидном возрасте более 7 лет.

Конечно, в некоторые реализации Ethereum включают технологию State Tree Pruning, которая позволяет хранить только последнее состояние блокчейна, с ограниченной историей примерно на сутки, что на текущий момент позволяет сократить хранимую информацию в 20 раз. Например, go-ethereum full node требует для хранения блокчейна 130 Гб, а Parity с поддержкой данной технологии — всего 6 Гб. Однако, учитывая, что рост числа приложений только начинается, а каждому узлу Ethereum приходится хранить все данные всех приложений, это выглядит хоть и необходимой, но всего лишь отсрочкой проблемы. С ростом размера блокчейна он перестанет помещаться на массово выпускаемые жесткие диски, его обслуживание станет по карману лишь большим организациям, что ведет к опасной централизации — сосредоточению контроля над более чем 50% сети у одной организации. Это может нарушить BFT.

Медленность транзакций. За свою устройчивость блокчейны расплачиваются скоростью транзакций. У биткоина 7 транзакций в секунду, у Ethereum — 15. И это на всю сеть, потому что каждый узел полностью реплицирует другие узлы. Добавление нового узла повышает устойчивость системы, но никоим образом не увеличивает скорость её работы или максимальный объём хранения данных. То есть, изменение данных (а каждое изменение данных в блокчейне — это транзакция) является бутылочным горлышком. Популярные приложения сразу же натолкнутся на это ограничение.

Примитивное хранение данных. При том, что состояние блокчейна уже является базой данных «ключ-значение», она довольно примитивна. Поиск возможен только по первичному ключу, объем хранимых данных очень ограничен. Для серьёзных приложений этого явно недостаточно.

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

Но ведь существующие приложения, например, AKASHA как-то выкручиваются… В следующей части мы рассмотрим существующие подходы к решению этой проблемы.

→ Вторая часть статьи
→ Третья часть статьи

habr.com

Что такое размер блока — Статьи

Как вам известно, биткоин – криптовалюта, основанная на блокчейне. Все транзакции, которые происходят в сети, записываются в блокчейн – общественный реестр, который любой может просмотреть, но никто не может изменить. Этот реестр состоит из блоков, которые криптографически связаны друг с другом (отсюда и название “blockchain” – цепь блоков).

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

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

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

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

В самом начале биткоин отличался от сегодняшнего по ряду характеристик. В том числе у него не было ограничения размера блока. Однако, это было изменено для предотвращения DOS (отказ в обслуживании)-атак, которые можно было совершать, создавая большое число огромных блоков, содержащих заполнитель (например пылевые транзакции, несущие относительно большой объём информации при низкой экономической значимости). Это не позволило бы обычным пользователям использовать биткоин, поскольку единственным кошельком на тот момент был Bitcoin QT, ныне известный как Bitcoin Core, для использования которого пользователям приходится скачивать весь блокчейн. Если бы кто-то наполнял блокчейн такими большими блоками, то пользователи медленных компьютеров никогда бы не смогли угнаться за ростом блокчейна, а значит, их транзакции никогда не были бы обработаны.

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

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

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

Поддержка и отказ от изменений в протоколе биткоина могут быть выражены при помощи команды или путём скачивания и использования определённых кошельков: Bitcoin Core (за маленькие блоки) или Bitcoin Unlimited (за большие блоки).

За

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

Больший размер блока позволит майнерам получать больше сборов, а пользователям при этом не придётся платить больше.

Хотя м

ttrcoin.com

Ethereum blockchain быстрыми темпами приближается к размеру в 500Gb

Подробности
Опубликовано: 01.02.2018 13:07


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

 

Если год назад все ругали Биткоин за его блокчейн в размере 100Gb, то сейчас настала очередь Эфира. И есть собственно за что, на конец января размер blockchain Ethereum достиг 342Gb, опередив по этому параметру все известные криптовалюты. Для примера, блокчейн биткоина на данный момент займет место на Вашем диске чуть более 160Gb. 

Размер блокчейна эфира растет по экспоненте прибавляя за последние 10 дней по 40-50 Gb. Этому способствует не только популярность самой криптовлюты, но и различных сервисов построенных на смарт-контрактах Эфира. Наиболее известная из них это CryptoKitties, которая на пике своей популярности съедала до 30% всех ресурсов сети ETH.

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

Использовать традиционные HDD для этих целей не рекомендуют сами создатели Ethereum из-за длительного времени отклика таких устройств.

Размер  папки Chaindata приложения Geth на 28 января 2018 года:

 

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

 

Обсудить на форуме

 

cryptoage.com

Обновлено: 13.04.2019 — 19:00

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *