Вы здесь

Что вы должны знать о будущем технологий Биткоин

Биткоин недавно побил очередной рекорд стоимости, превысив отметку в 18000 долларов за BTC, а затем откатился до $12000 за несколько часов. В связи с этим, важно ориентироваться в происходящем, и понимать как технически работает Bitcoin.

Что вы должны знать о будущем технологий Биткоин

Любой, кто рассматривает инвестиции в биткоин, должен изучить две вещи:

  1. Историю развития биткоина, и в целом технологии блокчейн;
  2. И, что сейчас важнее - вероятное будущее биткоина.

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

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

Проблема пропускной способности транзакций

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

Одним из основных преимуществ Bitcoin являлись мгновенные и анонимные одноранговые транзакции. В итоге на сегодня биткоин стал преобладающей криптовалютой на мировом рынке с 1200 % + увеличением стоимости за последний год (здесь и далее на момент написания материала).

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

График количества транзакций в биткоин-сети

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

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

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

Давайте рассчитаем пропускную способность транзакций в блокчейне биткоина:

  • средний размер транзакции составляет приблизительно 250 байт;
  • размер блока ограничен 1 МБ (1000000 байт);
  • таким образом, блок содержит около 4000 транзакций (1 МБ, деленный по 250 байт);
  • блок может быть записан в блокчейн только раз в 10 минут (600 секунд);
  • 4000 транзакций (максимум) записываются каждые 600 секунд со скоростью 6,66 транзакций в секунду.

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

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

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

По мере роста количества пользователей Bitcoin, растет также и средняя комиссия за транзакцию. За секунду обрабатывается в лучшем случае 7 транзакций, и каждый пользователь хочет подтвердить сначала свою транзакцию. На данный момент средняя комиссия за транзакцию доходит до 30$. Такая комиссия крайне неудобна - если вы хотите отправить другу пару долларов, на проведение транзакции уйдет в 10 раз больше.

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

Как можно решить проблему пропускной способности биткоина?

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

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

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

Как заявил первопроходец блокчейна Ник Сабо:

«Небольшой размер блока в цепи - это технический параметр безопасности для предотвращения сбоев в сети».

Форк SegWit

В августе 2017 года был реализован софтфорк Segregated Witness (в переводе с англ. «отделенный свидетель»).

Это фундаментальное изменение сети, которое в отличие от хардфорка полностью совместимо с существующим протоколом биткоина.

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

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

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

Кроме того, SegWit изменяет определение блока: вместо измерения блока в байтах, теперь измеряют его «вес»; блок может иметь максимальный вес 4000. Транзакции с подписями имеют вес 4, а транзакции SegWit имеют вес 0,25, что позволяет блоку содержать гораздо больше таких транзакций, и иметь чуть более высокий размер (но не более 2 мегабайт). Узлы должны обновиться до SegWit, чтобы соответствовать этому определению, и кошельки должны принимать софт-форк для отправки уменьшенных транзакций. Из-за множества подобных требований, форк вводится в действие слишком медленно, и на него пока приходится лишь 12% текущего трафика. Учитывая вышеуказанные преимущества SegWit, всем читателям рекомендуется использовать кошельки, работающие с этим софтфорком, чтобы ускорить процесс его внедрения.

Многоуровневые решения

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

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

Lightning Network - это многоуровневая сеть, которая в настоящее время находится в разработке. Ожидается, что она облегчит проблемы масштабирования Bitcoin. Сеть состоит из двух дополнительных слоев и позволяет пользователям открывать прямые каналы между собой, чтобы мгновенно отправлять неограниченное количество платежей друг другу.

Второй уровень

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


Третий уровень

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

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

Вот пример того, как работает канал микроплатежей сети Lightning Network:

  1. Алиса хочет отправить один биткоин Бобу по каналу микроплатежа. Она отправляет этот биткоин с помощью транзакции с обязательствами в основном блокчейне. Затем этот один биткоин блокируется в многоуровневом адресе, который обе стороны могут подписать, если они хотят закрыть канал. Этот адрес защищен контрактом с блокировкой, в котором говорится: «У Алисы 1 биткоин, а у Боба 0 биткоинов, блокировка снимется через 1 час». Это означает, что 1 биткоин Алисы будет заблокирован в течение 1 часа, и если ничего не изменится, он будет возвращен Алисе и еще раз записан в блокчейн.
  2. Затем Алиса решает дать Бобу 0.1 BTC. Эта транзакция регистрируется с помощью нового контракта с блокировкой, в котором говорится: «У Алисы 0,9 BTC, а у Боба - 0,1 BTC, срок действия - 50 минут». Срок действия этого контракта 50 минут, то есть он будет записан в блокчейн до первоначального контракта, в котором говорится, что у Алисы есть 1 BTC. Поэтому Боб мгновенно узнает, что у него есть 0.1 BTC, потому что этот новый контракт будет опубликован в блокчейне перед первоначальным контрактом, по сути, делая старый контракт недействительным.
  3. Как только пройдет 60 минут, канал микроплатежа закрывается, и окончательный баланс между Алисой и Бобом записывается в блокчейн. Если Алиса и Боб захотят продолжать совершать транзакции, они могут продлить время действия своего канала на столько, на сколько захотят. Если кто-то из них захочет закрыть канал раньше, один из них должен подписаться в многоуровневом адресе, в котором хранится биткоин.

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

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

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

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

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

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

Подписи Schnorr

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

  • у меня пустой кошелек, и я получаю 1 биткоин в транзакции №1, а затем еще один биткоин в отдельной транзакции №2;
  • теперь я хочу отправить 2 биткоина в транзакцию 3. Для этой транзакции будет два входа: транзакция № 1 и транзакция № 2, суммирование до 2 биткоинов.

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

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

Все подписи отправителя сохраняются как одна подпись под алгоритмом Schnorr.

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

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

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

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

MimbleWimble

MimbleWimble - это радикальное, но невероятно мощное предлагаемое изменение архитектуры Bitcoin, анонимно изложенное в этом документе в июле 2016 года.

Цель этого названного в честь заклинания из Гарри Поттера обновления - полностью удалить транзакции из блоков. В MimbleWimble транзакции состоят только из входных сумм, выходных сумм и подписи. Подпись транзакции может быть расшифрована только получателем, и поэтому подтверждение транзакции поручается получателю.

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

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

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

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

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

Рутсток (Rootstock)

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

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

Rootstock призван воплотить в жизнь универсальную функциональность смарт-контракта, одновременно используя сравнительную, доминирующую, пользовательскую базу и ценность Bitcoin, выступая в качестве двустороннего сайдчейна. Он также разрабатывается для упрощения процедуры подтверждения блоков в существующей сети добычи биткоинов, и позволяет больше не стимулировать майнеров. Rootstock также нацелен на решение проблемы масштабируемости транзакций, с помощью реализации собственной версии многоуровневого решения под названием Lumino. При этом он может выполнять до 20 000 транзакций в секунду.

Заключение

Rootstock планируется к запуску в конце 2017 года. В целом, платформа разрабатывается чтобы легко и эффективно работать с биткоином, и если все намеченное будет реализовано, то это, несомненно, намного улучшит сеть Bitcoin.

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

Категория: 
Криптовалюты
4
Ваша оценка: Нет Средняя: 3.7 (3 оценок)
32783 / 1
Аватар пользователя Иван Петров
Публикацию добавил: Иван Петров
Дата публикации: пт, 12/15/2017 - 16:49

Что еще почитать:

Комментарии:

Никита

Пока одни делают говнофорки и паразитируют на имени биткоин, другие двигают технологии

пт, 12/15/2017 - 20:23

Но каждая технология может быть украдена в любой момент - ведь код криптосети всегда открыт

сб, 12/16/2017 - 07:06

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

сб, 12/16/2017 - 16:38

john

Не ленивы, просто это невероятно сложно, и дорого.

вс, 12/17/2017 - 00:48

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

вс, 09/23/2018 - 22:22

Марк

Пусть сейчас транзакций в сети биткоина и не так много, как в момент пиковой стоимости криптовалюты, но благодаря протоколам segwit, lightning network и им подобным, в мемпуле биткоина транзакции не скапливаются.

пт, 11/02/2018 - 16:02