В один Из наших предыдущих материалов мы отметили, что основными преимуществами блокчейна являются открытость, защищенность и безопасность.
Однако любая технология всегда имеет определенные недостатки.
Биткойн, как самый крупный, популярный и надежный блокчейн, тоже не лишен их, но сообщество активно их решает. Поэтому в сегодняшнем посте мы затронем следующие вопросы:
- Каков самый большой недостаток блокчейна Биткойн?
- Какие решения предложило мировое сообщество?
- Какой из них станет частью сети Биткойн?
/ изображение Сусана Фернандес СС Сегодня банки, энергетические компании, участники рынка Интернета вещей и государственные организации активно присматриваются к блокчейну.
Например, Bank of America и Microsoft. начал совместная разработка финансовой блокчейн-платформы, а Chronicled запустила блокчейн-платформу для Интернета вещей, которая создает цифровые идентификаторы, безопасные и совместимые со многими другими системами.
Однако среда и условия, в которых работает Биткойн, существенно отличаются от тех, которые были на момент рождения криптовалюты.
Число пользователей выросло до нескольких десятков миллионов человек ( более 13 млн), что вызвало рост количества ежедневных транзакций ( заказ 400 тысяч).
Объем ресурсов, которые приходится тратить на запуск программного обеспечения и хранение реестра Биткойн со списком завершенных транзакций, довольно велик.
Вся цепочка транзакций блокчейна Биткойн отслеживается, начиная с самой первой транзакции.
выполненный 12 января 2009 г.
, создатель Биткойна Сатоши Накамото.
Сегодня размер блокчейна Биткойна составляет около 120 ГБ и продолжает расти.
Все эти особенности функционирования системы привели к проблеме масштабирования Биткойна и ограничили его теоретический размер.
Блокчейн — это последовательность блоков, каждый из которых представляет собой набор транзакций, защищенных криптографическими алгоритмами.
В то же время Сатоши Накамото (примерно через год после создания Биткойна) ограничил размер блока одним мегабайтом.
Это было сделано для того, чтобы предотвратить возможные DoS-атаки злоумышленников, когда они создают большие (теоретически неограниченные) блоки для паралича сети.
Однако данная мера безопасности негативно повлияла на пропускную способность сети в целом (в долгосрочной перспективе).
Сегодня Биткойн может ручка около 7 транзакций в секунду (TPS).
При этом фактическая нагрузка на сеть Биткойн составляет 3,5 ТПС.
Для сравнения, показатель TPS в системе Visa равен 2 000 (в периоды пиковой активности — 50 000).
Первые предложения по решению проблемы
Первые предложения по улучшению Биткойна были представлены в 2015 году ( БИП 100 И БИП 101 ) разработчиков ядра Джеффа Гарзика и Гэвина Андресена.Оба решения предлагали увеличить размер блока, но были хард-форками, то есть не имели обратной совместимости.
Это означало, что когда они были реализованы, старое программное обеспечение стало несовместимым с новой сетью.
В BIP 100 предлагалось регулировать размер блока по решению майнеров, а в BIP 101 предлагалось одновременно увеличивать размер блока до 8 мегабайт. В тот момент увеличивать Размер блока был самым простым решением с технической точки зрения, но ни одна из схем так и не была реализована.
Отказ от его реализации оказался связан скорее с политическими (внутри экосистемы Биткойна) проблемами, чем с техническими.
Наличие крупных блоков может привести к централизации Биткойна, поскольку для их хранения и обработки потребуется еще больше вычислительных мощностей, а выделять такие объемы ресурсов смогут только крупные компании.
Таким образом, возникло бы противоречие с основной идеей блокчейна Биткойна как криптовалюты, управляемой пользователем.
Отдельный свидетель
В конце 2015 года разработчик Питер Вуилле представил предложение под названием Segregated Witness, которое увеличивает пропускную способность сети.Этот подход изменил не размер блока, а способ хранения транзакций.
Одним из преимуществ решения стала возможность его реализации через софт-форк (то есть обеспечение обратной совместимости).
С момента выпуска официального документа Segregated Witness предложенные решения проблемы масштабируемости разделились на две группы: некоторые стремились увеличить размер блока, в то время как другие стремились оставить блок без изменений, оптимизируя при этом другие аспекты протокола.
Достичь консенсуса по этому вопросу не удалось.
До не давнего времени.
20 мая ключевые игроки биткойн-индустрии все же смогли найти общий язык.
Участники Гонконгской конференции по консенсусу за круглым столом по биткойнам (включая BitFury) согласованный поддержка нескольких обновлений протокола Биткойн.
Один из них — активация Segregated Witness при достижении уровня поддержки 80% (мощности майнера).
Второе связано с увеличением размера блока до 2 МБ.
Это решение даже повлияло на цену Биткойна.
Интерес к криптовалюте и новые возможности масштабирования блокчейна привели к тому, что цена Биткойна прошедший отметка в 2,5 тысячи долларов.
Можно сказать, что транзакции биткойнов состоят из двух компонентов.
Первый компонент освобождает биткойны, заблокированные в предыдущих транзакциях, используя так называемые входы.
Входы включают в себя сценарии (СкриптСигс); каждый такой скрипт содержит набор инструкций по открытию биткойнов (например, цифровую подпись).
Второй компонент транзакции содержит набор выходов (ScriptPubKeys), которые блокируют выпущенные биткойны (или немного меньше).
Каждый скрипт блокировки определяет условия, при которых соответствующие биткойны могут быть потрачены (например, при условии, что известен определенный закрытый ключ).
Оказывается, биткойны перемещаются от входов транзакций к выходам транзакций и от одной транзакции к другой.
Блокировка и разблокировка биткойнов выполненный отправителей транзакций и передается по сети в виде пакетов информации.
Пины, блокирующие биткойны, обычно содержат инструкции, гарантирующие, что пользователь знает правильный закрытый ключ, соответствующий указанному открытому ключу.
Технология Segregated Witness изменяет эту цепочку взаимодействий.
Вновь созданные пины начинают использовать другой тип сценария блокировки, который называется «любой может потратить», поскольку он не требует цифровых подписей и, по-видимому, может быть потрачен кем угодно.
Хитрость в том, что скрипт блокировки вида «Потратить может каждый» содержит определенную последовательность байтов, которая привязывает к скрипту «реальные» условия траты биткойнов.
Подобная техника использовал в P2SH (оплата за хэш сценария).
Как и в случае с SegWit, в P2SH биткойны по-прежнему блокируются скриптом, но к выходным данным транзакции добавляется не сам скрипт блокировки, а его хэш.
Чтобы потратить биткойны, заблокированные таким скриптом, нужно знать не только «настоящий» скрипт блокировки (каким может показаться скриптPubKey при первом его прочтении), но и скрипт разблокировки этого скрипта (например, цифровой подпись).
Разделение свидетелей, по сути, основные моменты scriptSig (подписи транзакций) в отдельную структуру данных — свидетеля (доказательство).
Таким образом, SegWit — это аддон, который полностью игнорируется старыми узлами, но распознается новыми.
И старые, и новые ноды считают транзакции с SegWit корректными: первые видят скрипты «кто-нибудь тратит» и считают транзакцию корректной (хотя и странной с семантической точки зрения), а вторые ссылаются на подпись в свидететеле.
За счет этого технология позволяет устранить плавность транзакций (tx-податливость), сэкономить дисковое пространство и оптимизировать скорость проверки подписи.
Однако есть небольшая сложность: если подписи не влияют на хэши транзакций, это больше не может служить доказательством того, что действительные подписи естественным образом существуют для транзакций, включенных в блок.
Чтобы обойти эту особенность, майнер записывает в определенное место блока хэш, зависящий от всех свидетелей транзакций, который рассчитывается аналогично хешу транзакции блока, то есть с использованием деревьев Меркла.
Еще одним преимуществом SegWit является тот факт, что он хранит байты версий.
Они предшествуют сценарию и указывают его тип.
Это позволяет указать требования, необходимые для выпуска биткойнов.
Фактически, это позволит блокировать биткойны различными способами.
Потенциал этой функции будет реализован Подписи Шнорра , которые более компактны и быстрее проверяются, чем нынешние ECDSA -подписи, а также более сложные типы транзакций с несколькими подписями и даже смарт-контракты, такие как Ethereum. На практике скрипты блокировки в SegWit выглядят так (данный пример взят из реальная транзакция , только не в Биткойне, а в другом очень похожем с технической точки зрения блокчейне — Litecoin; На нем уже активирован SegWit):
Сценарий состоит из байта версии сценария (0), за которым следуют 20 байтов, соответствующих обычному адресу в сети Биткойн (хэш открытого ключа)."scriptPubKey": { "asm": "0 07389b37ea077e9431a2e64530649f8a61befa54", "hex": "001407389b37ea077e9431a2e64530649f8a61befa54", "type": "witness_v0_keyhash" }
С точки зрения узла, который ничего не знает о SegWit, этот скрипт может быть использован кем угодно, например пустой скрипт разблокировки scriptSig. Фактически, scriptPubKey только помещает данные в стек и не выполняет никаких проверок данных, ранее помещенных в стек с помощью scriptSig. С точки зрения узла, знакомого с SegWit, этот сценарий сигнализирует о том, что поле-свидетель транзакции расходов должно содержать цифровую подпись транзакции вместе с открытым ключом, хэш которого указан в сценарии.
Поле scriptSig должно быть пустым.
Узел точно определяет, как проверять сценарий SegWit, на основе байта версии и длины следующего элемента scriptPubKey (20 в приведенном выше примере).
Пока что SegWit определил 2 типа сценариев: на основе открытого ключа (наш пример) и более сложные для произвольных проверок (например, мультиподписей).
Во втором случае в scriptPubKey записывается 32-байтовый хэш «настоящего» скрипта блокировки.
В момент траты этот скрипт вместе с подходящим скриптом разблокировки необходимо указать в поле свидетеля.
В этом случае хеш скрипта блокировки должен соответствовать значению, указанному в scriptPubKey.
Молниеносная сеть
В рамках этого материала мне бы хотелось упомянуть Технология масштабирования Lightning Network (LN), которая во многом стала возможной благодаря SegWit и в разработке которой BitFury принимает активное участие.Сеть Lightning основана на обычных транзакциях Биткойн, только эти транзакции не передаются в сеть Биткойн (по крайней мере, не сразу).
Вместо этого они хранятся локально на узлах сети LN. Главной особенностью Lightning Network являются двунаправленные «недоверительные» платежные каналы, которые позволяют обменивать биткойны напрямую, минуя блокчейн.
В блокчейн транслируются только транзакции, открывающие и закрывающие канал, даже если между ними были совершены миллионы платежей.
Это позволяет серьёзно «разгрузить» блокчейн и увеличить его пропускную способность, а также совершать микроскопические платежи (например, платить за цифровой контент или интернет-связь посекундно).
Более того, LN позволяет осуществлять платежи через один или несколько промежуточных узлов сети без риска того, что эти узлы смогут украсть средства.
Это обеспечивает масштабируемость LN до миллионов узлов.
Подробнее о принципах работы ЛН мы планируем рассказать в последующих материалах.
P.S. Наш вакансии в HH и англоговорящий блог на Medium .
П.
П.
С.
Дополнительные материалы по теме: Валерий Вавилов, BitFury Group: «Блокчейн — это индустрия с оборотом в триллион долларов» Другие варианты использования блокчейнов: смарт-контракты Что такое эксклюзивные блокчейны Теги: #bitfury #биткойн #блокчейн #сегрегированный свидетель #сеть Lightning #платежные системы #программирование #Анализ и проектирование систем #ИТ-стандарты
-
Широкие Полномочия Фсб
19 Oct, 24 -
Ультиматум
19 Oct, 24 -
Cool-Old-Term — Старый Добрый Терминал
19 Oct, 24