Что нужно знать о будущем технологии Биткойна
Биткойн (BTC) пробил исторический максимум $19 900, после чего скорректировался. Невероятно важно не потеряться в суматохе и не забыть о техническом прогрессе Биткойна.
Любой, кто задумывается о покупке биткойнов, должен изучить как минимум две вещи:
- историю технологии, стоящей за Биткойном;
- и, что более важно, что ждёт Биткойн в будущем.
Как говорит эксперт по Биткойну Андреас Антонопулос: «Инвестируйте в образование, а не в спекуляции».
Поскольку Биткойн и лежащий в его основе блокчейн – такие невероятно новые технологические концепции, попытки изучить и понять их базовые технические детали иногда могут вселять страх. Настоящая статья написана в попытке подчеркнуть стоящую перед Биткойном проблему масштабируемости и ожидаемые или предлагаемые решения этой проблемы. В статье обсуждаются некоторые весьма интересные решения!
Я писал это по мере того, как сам изучал Биткойн, чтобы собрать побольше информации о будущем Биткойна из бесчисленных существующих источников. В процессе написания я не забывал о тех, кто не обладает познаниями в программировании. Тем не менее предполагается, что у читателя имеется самое базовое понимание Биткойна как валюты и того, что такое блокчейн. Мы уже выкладывали замечательные статьи о том, что такое биткойн, и как понять технологию блокчейна, которые помогут как новичкам, так и тем, кому нужно освежить память.
Начнем со стоящей перед Биткойном проблемы масштабируемости.
Проблема пропускной способности транзакций
Представляя Биткойн миру, создатель Сатоши Накамото описал его в Whitepaper как «чисто пиринговую версию электронных денег, которая позволит пересылать онлайн-платежи от одной стороны другой без посредничества финансового института».
Одним из фундаментальных преимуществ Биткойна были мгновенные и безопасные пиринговые платёжные транзакции. Сегодня Биткойн всё больше выступает ведущей криптовалютой на глобальном рынке, чья стоимость только за последний год выросла более чем на 1600%.
Из-за такого беспрецедентного роста число транзакций в блокчейне Биткойна также увеличились, и ежедневно проводится до 400 000 транзакций. Такой быстрый рост транзакций может перерасти в серьёзную проблему масштабируемости блокчейна, так как сейчас более 170 000 транзакций находятся в очереди как неподтверждённые.
Подтверждённых транзакций в день
Чтобы понять, почему транзакции выстраиваются в очередь, нужно сначала объяснить сами транзакции Биткойна.
Каждый раз, когда один пользователь Биткойна отправляет транзакцию со своего кошелька другому, транзакция добавляется в пул памяти (mempool), который, по сути, представляет собой совокупность всех неподтверждённых транзакций в сети Биткойна. Данный пул поддерживается меньшими индивидуальными пулами на машинах, хранящих копии реестра блокчейна, называемых узлами (нодами).
Из пула памяти майнеры выбирают транзакции, которые хотят подтвердить. Когда майнеры признают транзакцию действительной (т. е. подтверждают, что у отправителя есть достаточно биткойнов для отправки получателю), они добавляют её в новый блок, который впоследствии публикуется в блокчейне. Затем другие узлы перепроверяют транзакции этого нового блока, чтобы удостовериться в его подлинности, прежде чем добавить блок к своему реестру.
Подсчитаем пропускную способность транзакций:
- Средний размер транзакции – примерно 250 байт;
- Размер блока ограничен – 1 МБ (примерно 1000000 байт);
- Таким образом, в блоке помещается примерно 4000 транзакций (1 МБ разделить на 250 байт);
- Блок может публиковаться в блокчейне в среднем только раз в 10 минут (600 секунд);
- Каждые 600 секунд публикуется (максимум) 4000 транзакций, со скоростью 6,66 транзакций в секунду.
Если в пуле памяти больше 170 000 неподтверждённых транзакций, то как майнер выбирает, какие транзакции подтверждать? Комиссии! Отправитель транзакции имеет возможность добавить к транзакции произвольную комиссию для майнера, что мотивирует майнера выбрать и подтвердить транзакцию быстрее. Майнеры выбирают транзакции с наивысшей комиссией, чтобы максимизировать прибыль. Теоретически можно отправить транзакцию без комиссии. Но если в пуле есть транзакции с более высокой комиссией, чем у вашей, то почему вашу транзакцию должны вообще хоть когда-нибудь выбрать?
По мере роста пользовательской базы Биткойна растёт и средняя комиссия за транзакцию. Каждую секунду обрабатывается максимум лишь 7 транзакций, и каждый хочет, чтобы его транзакции были подтверждены первыми. На данный момент средняя комиссия составляет примерно $17. Данная комиссия явно не идеальна – если вы хотите отправить другу биткойнов на пару долларов, то вам, возможно, придётся потратить на комиссию больше, чем собственно на транзакцию! Здесь и кроется проблема, и если ничего не изменится, комиссии будут расти из-за пробок с транзакциями.
Решение проблемы пропускной способности
Для решения данной проблемы с пробками, возникающими с транзакциями, вызвавшей в сообществе Биткойна множество разногласий, предлагается просто увеличить изначальный лимит размера блока 1 МБ, что позволит включать в блок больше транзакций.
При каждом увеличении размера блока в цепочке требуется хард-форк, то есть должна быть создана совершенно новая копия блокчейна, для чего нужен консенсус сообщества Биткойна. Так как Биткойн используют миллионы людей, достичь консенсуса сложно, поэтому нужно стараться этого избежать. Кроме того, хотя можно увеличить размер блока настолько, чтобы устранить текущую очередь транзакций, по мере дальнейшего роста пользовательской базы Биткойна рано или поздно снова возникнет очередь неподтверждённых транзакций, так что потребуется опять увеличить размер блока, а следовательно, реализовать ещё один хард-форк.
Так почему бы просто не сделать размер блока таким, чтобы уж точно никогда не возникло пробки, сколько бы пользователей ни появилось? Во-первых, математика размера блока, хотя бы приближённого к тому, чтобы справиться с массовым освоением, непрактична и ограничит майнинг до невероятно мощных машин, которые смогут держать только большие корпорации, что введёт элемент централизации.
- При 1 млрд транзакций в день:
- Блоки на 1,6 ГБ (1655 МБ);
- 87 терабайт/год (87028089 МБ);
- Возможно, достаточно для одного мегаполиса?
- Централизация (майнинг!).
При размере блока, достаточном для населения всего лишь одного города, хостинг узлов и майнинг будут доступны лишь тем, у кого есть самые мощные машины, т. е. крупным бизнесам. : Lightning Network.
Кроме того, вспомните, что после того, как блок добыт, все другие узлы должны его подтвердить, прежде чем он будет принят. Если размер блока будет невероятно большим и кто-то опубликует недостоверный блок, узлам придётся потратить огромное количество времени на проверку блока, прежде чем отбросить его как недостоверный и перейти к следующему. По сути, можно организовать DoS-атаку, многократно публикуя в сети безумно огромные недостоверные блоки, надолго приостанавливая обработку достоверных блоков. Как говорил в интервью пионер блокчейна Ник Сабо, небольшой размер блока служит техническим параметром безопасности, предотвращающим перегрузку сети.
Больше о полном влиянии увеличения размера блока, если Биткойн покорит мир, можно прочесть в статье, которую я написал здесь.
Если нельзя увеличить размер блока, то что можно сделать? К счастью, в разработке находится несколько решений, с помощью которых, как ожидается, можно будет решить эту проблему.
Segregated Witness (SegWit)
Segregated Witness («отделённый свидетель», SegWit), по сути, уже был реализован в сети Биткойна в августе 2017 г. Это фундаментальное сетевое изменение, модифицирующее формат транзакций, фактически сокращая их размер и позволяя включить в блок больше транзакций, что увеличивает пропускную способность. SegWit считается софт-форком, т. е. он полностью обратно совместим с текущим протоколом Биткойна, хотя узлы и кошельки должны обновиться, чтобы воспользоваться всеми свойствами SegWit.
Каждая транзакция содержит подпись отправителя, или, другими словами, удостоверяющие данные, обычно составляющие большую часть транзакции. Эти данные на самом деле не являются необходимыми для подтверждения транзакции, поэтому SegWit перемещает их в конец транзакции, отделяя их. Если транзакция отправляется узлу старой версии (не обновлённому до SegWit), то узел отрезает удостоверяющие данные от конца транзакции, прежде чем вставить её в блок, сокращая общий размер транзакции и экономя пространство). Дополнительным преимуществом здесь является то, что узлы больше не могут модифицировать удостоверяющие данные, меняя отправителя, что они могли делать раньше. Это позволяет реализовать многоуровневые решения, о которых мы вскоре поговорим. Пользователи также экономят на комиссиях, так как они обычно рассчитываются за количество байтов в транзакции, а SegWit сокращает общий размер транзакции.
Кроме того, SegWit меняет определение блока: блок определяется не байтами, а «весом»: максимальный вес блока может быть 4000. Транзакции старой версии имеют вес 4, тогда как вес транзакций с SegWit составляет 0,25, благодаря чему блок может содержать намного больше транзакций с SegWit и иметь несколько больший размер (максимум около 2 МБ). Чтобы следовать этому определению и отправлять транзакции с SegWit, узлы и кошельки должны обновиться до SegWit. Как следствие, освоение SegWit происходит медленно и составляет лишь 12% от текущего трафика.
Процент транзакций
Ввиду упомянутых преимуществ SegWit, настоятельно рекомендую всем читателям пользоваться кошельками, которые уже внедрили SegWit, чтобы ускорить его освоение. Хороший их список можно найти здесь (мой личный фаворит – кошелёк Samourai для Android). Если хотите узнать больше о тонкостях SegWit, то Джимми Сонг написал об этом замечательную статью «Размер блока SegWit».
Многоуровневые решения
На данный момент блокчейн Биткойна не очень приспособлен для микроплатежей. Если вы захотите купить чашку кофе за $2, то вам, вероятно, придётся потратить больше $2 в эквиваленте BTC на комиссию, и транзакция не будет подтверждена мгновенно – вам придётся подождать, пока транзакция не будет опубликована в подтверждённом блоке в цепочке, на что в лучшем случае уйдёт 10 минут.
Решения второго и третьего уровня – это сети, построенные поверх блокчейна Биткойна, позволяющие пользователям отправлять несколько транзакций на небольшие суммы в биткойнах почти мгновенно и без комиссий.
Lightning Network – такая надстроенная сеть, находящаяся сейчас в разработке, которая должна сгладить проблемы Биткойна с масштабируемостью. Данная сеть состоит из двух дополнительных уровней и позволяет пользователям открывать двусторонние каналы для мгновенной пересылки друг другу практически неограниченного числа платежей. Lightning Network.
Второй уровень
Пользователь подключается к сети второго уровня, проводя в блокчейне транзакцию, объявляющую, что пользователь резервирует определённую сумму биткойнов для использования в надстроенной сети. После этого пользователь подсоединяется к группе подключённых друг к другу узлов, которые называются фабриками каналов. Эти узлы, по сути, поддерживают коридор участников, потенциально желающих совершать транзакции друг с другом. Затем фабрики каналов позволяют создавать неограниченное количество микроплатёжных каналов между отдельными участниками на третьем уровне (поэтому их и называют фабриками).
Третий уровень
Микроплатёжные каналы обеспечивают прямые платежи между двумя пользователями на третьем уровне. Так как на этом уровне блокчейна больше нет, его нельзя использовать для подтверждения транзакций и создания гарантий того, что одна сторона заплатила другой. Вместо этого применяется технология смарт-контрактов, в частности, адреса с мультиподписью, т. е. адреса, которые для перемещения средств могут подписываться несколькими пользователями, и хешированные контракты с блокировкой по времени, криптографически защищённые автоматизированные контракты, блокирующие средства на некоторое время, чтобы гарантировать, что стороны не обманут друг друга. Данные технологии устраняют необходимость доверия между пользователями, подключёнными к микроплатёжным каналам.
Вот пример работы микроплатёжного канала Lightning Network:
- Алиса желает выделить 1 биткойн на микроплатёжный канал с Бобом. Она объявляет использование этого 1 биткойна в резервирующей транзакции в блокчейне Биткойна. Этот 1 биткойн затем блокируется на адресе с мультиподписью, который обе стороны могут подписать, если захотят закрыть канал. Этот адрес защищён хешированным контрактом с блокировкой по времени, в котором говорится: «У Алисы есть 1 BTC, у Боба есть 0 BTC, опубликовать через час». Это значит, что имеющийся у Алисы 1 биткойн блокируется на час, после чего он вернётся Алисе и снова будет опубликован в блокчейне Биткойна.
- После этого Алиса решает дать Бобу 0,1 BTC. Данная транзакция записывается в новом хешированном контракте с блокировкой по времени, в котором говорится: «У Алисы есть 0,9 BTC, у Боба есть 0,1 BTC, срок истечения 50 минут». Срок истечения этого контракта 50 минут, что значит, что он будет опубликован в блокчейне до изначального контракта, где говорится, что у Алисы есть 1 BTC. Следовательно, Боб сразу узнаёт, что у него есть 0,1 BTC, потому что этот новый контракт будет опубликован в блокчейне раньше изначального контракта, фактически делая старый контракт недействительным.
- По истечении часа микроплатёжный канал закрывается, и окончательный баланс между Алисой и Бобом публикуется в блокчейне. Если Алиса и Боб желают и дальше совершать транзакции, они могут продлить срок истечения канала настолько, насколько захотят. Если кто-нибудь из них захочет закрыть канал до изначального срока, он должен подписать оригинальный адрес с мультиподписью, на котором хранятся биткойны.
Сеть позволяет транзакциям достигать пункта назначения, используя в качестве посредников других пользователей, подключённых к каналу. Это возможно даже в том случае, если в текущем микроплатёжном канале нет прямой связи с нужным пользователем. Например, если у Алисы открыт канал с Бобом, а у Боба есть канал с Марком, и Алиса хочет отправить биткойны Марку, сеть может направить платёж Марку через Боба без необходимости для какой-либо из сторон кому-то доверять.
Реализация транзакций Lightning Network и особенности отсутствия в них необходимости в доверии могут быть невероятно сложными, и лучше всего они объяснены разработчиками Lightning в ходе этой конференции или в следующей серии от ecurrencyhodler: Lightning Network (Часть 1).
В идеале пользователи очень редко будут создавать транзакции, резервирующие средства для второго уровня, потому что они будут продолжительное время оставаться в надстроенной сети для проведения большинства своих повседневных транзакций. Когда пользователь захочет выйти из этой многоуровневой сети, в блокчейне совершается расчётная транзакция, объявляющая окончательный биткойновый баланс пользователя после всей активности на втором уровне. Так выверяется общий биткойновый баланс после сопоставления с изначальной резервирующей транзакцией. В итоге, в блокчейне совершается всего две транзакции, позволяющие пользователю бесплатно совершать неограниченное число транзакций на втором уровне.
Как уже упоминалось, SegWit прокладывает путь к Lightning Network, устраняя способность узлов модифицировать удостоверяющие данные, которые как раз и используются для идентификации входа пользователя на второй уровень. Если резервирующая транзакция пользователя не может быть обнаружена, потому что ссылающиеся на пользователя удостоверяющие данные были изменены, возникают дополнительные трудности при попытке выверить расчётную транзакцию пользователя.
Второй уровень Lightning Network, включающий фабрики каналов, был совсем недавно представлен в этом этом whitepaper. Он всё ещё находится в активной разработке, так что многие его концепции объясняются абстрактно. Тем не менее сеть планируют запустить в 2018 г., и это на данный момент будет самое значительное улучшение масштабируемости транзакций.
Подписи Шнорра
Когда пользователь отправляет биткойн-транзакцию, вход транзакции (отправляемая сумма) рассчитывается путём простого извлечения из блокчейна общей нерастраченной суммы полученных ранее биткойнов. Например:
- Начиная с пустого кошелька, я получаю 1 биткойн в транзакции №1 и затем ещё 1 биткойн в отдельной транзакции №2.
- Теперь я хочу отправить 2 биткойна в одной транзакции. В этой транзакции будет два входа: транзакция №1 и транзакция №2, в сумме 2 биткойна.
При текущем алгоритме генерирования подписей (алгоритм цифровых подписей на основе эллиптических кривых (ECDSA)) для каждого входа требуется собственная подпись. Это увеличивает общий размер транзакции, а следовательно, и комиссию.
Подписи Шнорра – это альтернативный и более эффективный способ хранения данных подписей в транзакциях. Все входы объединяются и хранятся в единственной подписи благодаря алгоритму Шнорра, что существенно экономит пространство в транзакции и дополнительно помогает увеличить пропускную способность транзакций, позволяя блокам хранить в среднем больше транзакций.
Подписи Шнорра могут также способствовать прогрессу Биткойна в плане конфиденциальности, если использовать их в транзакциях CoinJoin. CoinJoin – это метод введения анонимности в транзакции Биткойна. Он заключается в объединении входов транзакций при отправке платежа получателю в один пул с транзакциями других людей. Когда платежи объединяются в пул, становится сложно отследить, какой вход отправлен каким пользователем, что фактически делает их анонимными. Однако в транзакциях CoinJoin более высокие комиссии из-за большего числа входов в каждой транзакции и, как следствие, большего числа подписей. Применение подписей Шнорра позволит сжать все подписи транзакции в одну, что существенно снизит комиссии и будет способствовать использованию CoinJoin.
Кроме того, подписи Шнорра открывают путь к сложным транзакциям с мультиподписью, требующим подписей нескольких сторон. Сколько бы ни было сторон, чьи подписи требуются для транзакции, достаточно одной подписи Шнорра.
Подписи Шнорра стали возможны только сейчас, благодаря реализации SegWit. Так как данные подписей не могут быть модифицированы третьими сторонами, теперь их можно использовать для эффективного создания подписи Шнорра.
MimbleWimble
MimbleWimble – радикальное, но невероятно эффективное предложенное изменение архитектуры Биткойна, анонимно представленное в июле 2016 г. в этом whitepaper.
Цель этого изменения, названного в честь заклятия косноязычия в серии книг о Гарри Поттере, – совсем убрать транзакции из блоков. При использовании MimbleWimble транзакции состоят лишь из суммы входа, суммы выхода и подписи. Подпись транзакции может расшифровать лишь получатель, поэтому именно получатель подтверждает транзакцию.
Следовательно, блоки состоят только из сумм входа всех транзакций, сумм выхода всех транзакций и их соответствующих подписей. Впоследствии блоки могут органично сливаться с предыдущими блоками, так как они представляют собой всего лишь пары сумм входа и выхода. После этого узлы могут криптографически удостовериться, что транзакции в блоках не создают лишних биткойнов (т. е. чистая разница между входами и выходами в блоках равна нулю), без необходимости расшифровывать транзакции.
Такое устранение хранения транзакций даёт всем пользователям полную анонимность, убирая возможность генерирования истории транзакций. Кроме того, так как блоки содержат лишь непотраченные выходы транзакций (т. е. биткойны, полученные адресом, но пока не перемещённые), размер блокчейна, согласно whitepaper, может сократиться более чем на 60%. Такое сокращение размера означает, что для подтверждения блокчейна MimbleWimble узлам нужно будет просматривать лишь непотраченные входы транзакций, а не все данные транзакций, что экспоненциально повысит производительность.
Математические детали MimbleWimble выходят за рамки настоящей статьи, но они подробно объяснены в whitepaper. Хотя MimbleWimble представляет некоторые явные преимущества и технические прорывы, его реализация требует устранения системы Script, на которую полагается значительная часть существующей архитектуры Биткойна. Как следствие, реализация MimbleWimble на блокчейне Биткойна технически нецелесообразна.
Однако есть предложения осуществления MimbleWimble как сайдчейна. Сайдчейн – это отдельный блокчейн, непосредственно связанный с блокчейном Биткойна через двустороннюю привязку. Эта привязка делает возможным обмен активами между двумя блокчейнами и «привязывает» стоимость актива сайдчейна к стоимости биткойна. При такой схеме пользователи смогут обменивать биткойны на токены MimbleWimble, проводить совершенно конфиденциальные и быстрые транзакции в блокчейне MimbleWimble и затем в любое удобное время обменивать токены MimbleWimble на биткойны.
Токены сайдчейна привязаны к блокчейну Биткойна, функционируя параллельно ему с фиксированным обменным курсом. : Blockchain.com.
Группа разработчиков уже разрабатывает MimbleWimble как отдельную криптовалюту под названием GRIN. Недавно она была реализована в тестовой сети и, возможно, будет запущена в ближайшем будущем.
Rootstock
Rootstock, смарт-контракты на блокчейне Биткойна, почему-то одно из наименее обсуждаемых усовершенствований технологии Биткойна, при этом явно одно из самых крутых. Rootstock описывают как «первую открытую платформу смарт-контрактов с двусторонней привязкой к Биткойну, которая также вознаграждает майнеров Биткойна через слитный майнинг, позволяя им активно участвовать в революции смарт-контрактов».
Как и MimbleWimble, Rootstock разрабатывается как сайдчейн блокчейна Биткойна. Его фундаментальное значение заключается в ориентире на смарт-контракты. Rootstock стремится стать полной по Тьюрингу (полностью программируемой) платформой смарт-контрактов, обратно совместимой с виртуальной машиной Ethereum. Это значит, что Rootstock сможет выполнять любые смарт-контракты, разработанные для платформы Ethereum, а также смарт-контракты, разработанные для собственной платформы.
Rootstock стремится реализовать этот гибкий функционал смарт-контрактов, используя при этом преимущества сравнительно доминирующей пользовательской базы и стоимости Биткойна, действуя как сайдчейн с двусторонней привязкой. Он также будет защищён существующей сетью майнеров Биткойна, вследствие чего ему не нужно мотивировать майнеров защищать его блокчейн. Rootstock также стремится решить проблему масштабируемости транзакций, реализовав собственную версию многоуровневого решения под названием Lumino. Это позволит совершать до 20 000 транзакций в секунду.
Запуск Rootstock запланирован на конец 2017 г. В целом платформа должна идеально функционировать параллельно с Биткойном, и, если её притязания сбудутся, она, безусловно, привнесёт в сеть Биткойна беспрецедентную практичность.
В завершение
Если вы дочитали до этого места, поздравляю! Надеюсь, вам удалось кое-что узнать о будущем Биткойна, и оно исполнило вас энтузиазма так же, как меня.
Биткойн не идеален и стоит перед вызовами, решение которых ложится на плечи целеустремлённого и развивающегося сообщества разработчиков, работающих не покладая рук. Инновации появляются каждый день, и я уверен, что не успеете вы это дочитать, как появится очередное интересное предложение для блокчейна Биткойна.
Настоящая статья ни в коем случае нельзя считать всеобъемлющей; если вам известно о чём-то, о чём я не упомянул, расскажите об этом в комментариях!
Источник
Подписывайтесь на CoinHunt в телеграмм