Перевод серии статей Джакомо Зукко подготовлен биткоинером Tony ₿. Оригинал серии статей опубликован журналом Bitcoin Magazine
В завершение серии “Становление Биткоина”, мы будем опираться на использование цифровых подписей и парадигмы CoinJoin для изучения концепций уникальной хронологии, комиссий за майнинг и оффчейн транзакций (транзакций вне сети).
Доказательство уникальности: Timechain #
Наконец, мы подошли к завершению изучения Плана ₿ и вновь возвращаемся к вопросу “Когда?”, с которого и начинали.
Это — важный вопрос. Ведь он оправдывает введение, так называемой, “Технологии блокчейна”, откровенно оскорбительного выражения, которое, однако, изначально послужило решением проблемы уникальной хронологии. Заметь, что сам Сатоши назвал данную структуру “timechain” (временнáя цепочка) — термином, который мы будем использовать далее… извини, Питер!).
Давай вернемся к нашему краткому повествованию и попробуем понять, какую проблему решает данная технология. Ты разработал цифровую денежную систему, в которой и выдача, и владение активами децентрализованы посредством хитрого комбинирования головоломок и подписей.
Но как предотвратить двойное расходование одного и того же UTXO? Если Каролина, будучи недобросовестным пользователем, передает сатоши на адрес, контролируемый Дэниелом, а затем подписывает другую транзакцию, которая повторно передает те же самые сатоши на адрес, контролируемый ею же, какую транзакцию примет сеть? С точки зрения цепочки подписей и сценариев, обе транзакции являлись бы “действительными” и, вместе с тем, указывали бы на валидный первоначальный выпуск, соответствующий сложности PoW.
Как остановить “майнеров” от предоставления ложной информации в отношении временнóй отметки? Как не дать им обмануть алгоритм корректировки сложности, что позволило бы им повышать скорость выдачи? Если майнеру Минни удается решить сотни головоломок PoW с низкой сложностью, но решение включает в себя поддельные временные метки, которые показывают, что решения находятся всего в 10 минутах друг от друга, разве “по плечу” обычному пользователю (возможно, недавно присоединившемуся к системе) обнаружить и доказать столь нечестное поведение?
В предыдущем эксперименте с e-gold твой надежный сервер временны́х меток тривиально решал обе проблемы. Но кто же установит уникальную хронологию событий при отсутствии центрального сервера?
Если бы все участники сети могли “проголосовать” каким-либо образом, они могли бы прийти к консенсусу в этом вопросе “демократическим путем”. Но процессы голосования, хотя и осуществимы в системах с фиксированным числом известных действующих лиц (часто называемых “федерациями”), не могут быть функциональными в случае с динамическими системами, участники которых анонимны. Невозможно просто использовать “количество нод” в качестве прокси для права голоса, поскольку каждый пользователь может притвориться “миллионами” разных узлов, прибегнув к, так называемой, “сибил-атаке”. Таким образом, тебе понадобится другой “устойчивый к сибил-атаке” способ подтолкнуть все ноды к поиску (и сохранению) консенсуса по единой, последовательной, неизменной истории цепи.
К сожалению, детерминистическое и окончательное решение на основе одной только математики теоретически невозможно. С практической точки зрения, ты достаточно умен (или умна), чтобы, найти статистическое и асимптотическое решение на основе экономических знаний. Идея такова: каждый раз, когда майнеры пытаются решить головоломки PoW, они должны включать в свои сообщения компактные снимки текущего состояния транзакций!
Помимо собственных сообщений об очередной эмиссии, майнеры должны провести через хеш-функцию более сложные “блоки” информации. Каждый из этих блоков будет включать в себя не только необходимые для решения головоломки:
- сообщение об эмиссии,
- временнýю метку;
- случайное число (нонс),
Но и:
- результат, полученный при решении предыдущего блока (найденный другими майнерами около 10 минут назад)
- список транзакций, недавно совершенных другими пользователями.
Недействительными считаются: 1) блок, содержащий транзакции, включенные в предыдущие блоки; 2) блок с временнóй меткой, несовместимой с предыдущими метками.
Используя этот трюк, все действующие лица получат стимул прийти к единой версии одной и той же хронологии. Представь, что Минни осуществляет транзакцию, противоречащую ранее подтвержденной транзакции, или изменяет временнýю метку, чтобы обмануть корректировку сложности. Но в этом случае другие ноды отклонят подобный блок, что приведет Минни к потере права эмиссии новых монет при существенных затратах времени и электроэнергии впустую.
Майнеры тратят деньги на решение головоломок. Так что неудивительно, что они хотят получать вознаграждения за свою работу по нахождению валидных блоков, по крайней мере, тогда, когда они действуют в соответствии с присущими системе финансовыми стимулами.
Комиссия за майнинг #
Это решение, хотя и блестящее, все еще не стимулирует майнеров включать транзакции других участников в Биткоин-блоки. Они могли бы просто сэкономить вычислительные мощности, необходимые для проверки сценариев и подписей (которые, хотя и не так велики, как используемые для коллизии хеш-функций, но все же актуальны), и включать только свои собственные валидные выпуски в пустые блоки. Кроме того, уменьшение количества сатоши, допускаемых к выпуску (даже с учетом увеличения покупательной способности каждого сатоши), значительно снизит стимул нахождения блоков в силу парадигмы контролируемых поставок. В итоге, в конце последней эры, когда инфляция сойдет на нет, майнеры и вовсе не будут заинтересованы в нахождении новых блоков.
Ты решаешь эту проблему, вводя “комиссию за майнинг”, а именно — незначительную “дополнительную плату” сверх осуществляемой оплаты транзакций пользователей с целью стимулировать майнеров к включению определенных транзакций в блок Биткоиин-цепи.
Оплата работает следующим образом: наряду с вознаграждением в виде выпуска новых “отчеканенных” сатоши (в соответствии с текущей эрой), система позволяет майнерам включать разницу в сатоши между созданными и потребленными UTXO всех валидных транзакций, в блоке. Тарифы никогда не зависят от пересылаемой суммы, а только от размера (веса) транзакции (сложность сценария, количество подписей и т. д.) и желаемого приоритета при добавлении в блок.
Проблемы с масштабностью (и секретностью) #
Минимальная плата за майнинг, необходимая для включения транзакции в блок, колеблется в зависимости от спроса и предложения на “свободное место в блоке”. На стороне предложения количество транзакций, которые могут быть добавлены к временнóй цепочке, ограничено максимальным размером блока (менее 4 мегабайт на каждый блок) и максимальной скоростью нахождения блока (примерно 10 минут). Что касается спроса, то у каждого пользователя есть свои ограничения и предпочтения (одни предпочитают ждать дольше, чтобы платить меньше, другие могут позволить себе заплатить больше, чтобы не ждать, некоторые используют кошельки с динамической оценкой комиссии, а некоторые — нет). В целом, растущий спрос на пространство в блоке будет означать повышение комиссии за майнинг. Это, явно, ограничивает масштабность системы. Очевидно, что, поскольку сборы майнеров не зависят от суммы передаваемой стоимости, мы можем сказать, что это фактически снижает делимость актива.
Более того, использование временнóй цепочки подразумевает, что каждая нода должна постоянно следить за всеми изменениями в сети. Каждый пользователь системы на протяжении всего времени (и даже в далеком будущем) должен загружать и проверять каждую отдельную транзакцию в цепочке. Такую систему, явно, нельзя назвать масштабируемой. В данном случае это отразится и на секретности, поскольку все участники вынуждены хранить копии всех транзакций в сети. Это повышает вероятность деанонимизации пользователей и криминалистического анализа блокчейна.
Почему бы не улучшить ситуацию в сети путем создания льгот для, так называемого, “привилегированного” класса пользователей? К примеру, если увеличить размер и частоту создания блоков, предложение пространства в блоке увеличится, а его цена уменьшится. Но это вызовет рост стоимости обслуживания нод, предоставляющих возможность независимым образом проверять достоверность транзакций и блоков Рост предложения пространства не будет таким стремительным, как рост стоимости обслуживания нод, что приведет к централизации топологии всей системы. Несомненно, новый класс специализированных нод может служить, своего рода, гарантом для участников, не проверяющих транзакции и блоки самостоятельно. В конце концов, чеканка монет была введена, именно с целью делегировать дорогостоящую задачу проверки монет лишь ограниченному числу доверенных лиц. Но, так же как и чеканка, эта стратегия (известная как «SPV») подразумевает усиленную централизацию со всеми сопутствующими рисками политического вмешательства или цензуры со стороны Мэллори-подобных негодяев.
Новая парадигма: “Оффчейн” #
Существует разумный способ повысить фундаментальные лимиты масштабности глобальных систем консенсуса, не жертвуя его децентрализацией. Мы назовем его “Парадигмой Оффчейн”.
Идея проста:
- воздержись от фиксирования каждой транзакции в блоке до тех пор, пока в этом не появится строгой необходимости;
- сохраняй бóльшую часть трафика вне общедоступной временнóй цепочки;
- используй цепочку лишь для периодического урегулирования и разрешения конфликтов.
Подобная эволюция аналогична практике использования судебных процессов и контрактов в системе общего права: суды могут создавать публичные прецеденты, имеющие обязательную силу, достигая своего рода “глобального юридического консенсуса”. Но поскольку судебные услуги являются относительно медленными и дорогостоящими, большинство торговых сторон предпочитают подписывать частные двусторонние контракты, требующие судебной проверки либо урегулирования в случае возникновения конфликтной ситуации.
Продвинутые смарт-контракты могут понизить уровень необходимости в доверии к подобной “правовой защите”: в отличие от действующей правовой системы, децентрализованная временнáя цепочка помогла бы избежать предвзятости и коррупции, полагаясь, главным образом, на криптографию и код. В отличие от кредитных сертификатов, обсуждаемых в контексте виртуализации, оффчейн-транзакции не являются “виртуальными”; они — не что иное, как валидные транзакции с высокой вероятностью исполнения системой вне зависимости от честности вовлеченных сторон.
Вскоре становится ясно, что такая парадигма может значительно повысить уровень секретности твоей системы. Вместо регистрации всех транзакций существующими нодами эффективнее передавать большую часть этих транзакций в частном порядке только лишь заинтересованным сторонам. Это приведет к сложностям в проведении судебного анализа, а также сделает его более дорогостоящим, и вместе с тем, менее обстоятельным и менее надежным.
Основная реализация внедрения подобной стратегии — это вторичная сеть предварительно финансируемых двусторонних “платежных каналов”, которые могут атомарным способом маршрутизировать транзакции через множество переходов. Необходимость доверия при этом сохраняется на минимальном уровне. Пользователи остановились на очень поэтическом названии для этой технологии: “lightning network” (молния). Сокращение, которое часто включается в метку всего набора протоколов твоей системы, называемое “LNP/BP” по аналогии с историческим “TCP/IP”.
Но существуют и другие незначительные примеры подобной парадигмы; например, несколько методов, позволяющих сохранить фактический сценарий вне временной цепочки при условии отсутствия необходимости расчета на базовом уровне. Данные методы повышают тем самым конфиденциальность и позволяют сэкономить пространство блока. (Этим методам присваивают всевозможные необычные названия, такие как “Taproot”, “Graftroot”, “g*root”, “Scriptless Script” и т.п.).
С введением данных технологий твои пользователи наконец-то получают все необходимое для использования системы в реальной жизни. Это поможет им возобновить контроль над некоторыми фундаментальными функциями денег. Спасибо, “Сатоши”!
Изображение предоставлено @BitcoinMemeHub
Итак, ты проделал долгий путь изобретений от пещерного человека до наших дней. Теперь лишь время покажет, сработает ли твой план. Ну что, теперь — на Луну?!
Отдельная благодарность Nicki DiCicco и @BitcoinMemeHub за обложку и мемы для данной серии статей!